Ruby, Bash, Typescript, Markdown, Html, Css
Rust, Haxe
Qu’avez-vous retenu du précédent cours de programmation ?
Le copyleft est l’autorisation donnée par l’auteur d’un travail soumis au droit d’auteur d’utiliser, d’étudier, de modifier et de diffuser son œuvre, dans la mesure où cette même autorisation reste préservée.
MOV AX, 10 ; stocke la valeur 10 dans le registre AX
MOV BX, 101 ; stocke la valeur 11 dans le registre BX
ADD AX, BX ; additionne le registre AX et BX
CODE SOURCE
LOGICIEL LIBRE Vs OPEN SOURCE
Le logiciel libre est un pot commun auquel chacun peut ajouter quelque chose mais duquel personne ne peut rien retirer.
– Eben Moglen
Rapidité
Accès en lecture
BASE 10 => BASE 2 8 cases
================= ===============
0 => 0 0 1 2 3 4 5 6 7
1 => 1
2 => 10
3 => 11
4 => 100
...
8 => 1000 8 bits = 1 octet
16 => 10000 1024 octets = 1 Ko (kilo-octet)
32 => 100000 1024 Ko = 1 Mo (méga-octet)
64 => 1000000 1024 Mo = 1 Go (giga-octet)
128 => 10000000 1024 Go = 1 To (téra-octet)
256 => 100000000 ...
Une méthode pour convertir du décimal en binaire
https://fr.wikihow.com/convertir-du-décimal-en-binaire
Convertir le nombre 264 (10) en binaire
Convertir le nombre 11001100(2) en décimal
Déterminer un nombre au hasard entre 1 et 100
Poser indéfinement la question : "Deviner le nombre mystère ? "
Si le mystère est plus grand que la réponse,
répondez : "plus grand"
Si le mystère est plus petit que la réponse,
répondez : "plus petit"
Si trouvé,
Terminer le jeu
puis préciser : Fécilitations, vous avez trouvé en \<n\> coups !
www.ruby-lang.org/fr/documentation
devdocs.io/ruby (in english)
print 'Entrez votre nom : '
name = gets
puts "Bonjour #{name}"
Astuce : CTRL + Return => exécution instantanée !
a = 1 # => 1
b = 'Jean' # => 'Jean'
a == 1 # => true
a == 2 # => false
a != 2 # => true
une variable commence par une minuscule plutôt que Ma_Constante
les valeurs sont typées => entier, booléen, chaîne de caractère, etc…
variable.action
=> exécute une action sur la variable de son typeobjet.méthode(p1, p2)
=> applique une méthode avec 2 argumentsnotion de bloc pour délimiter une suite d’instructions avec { ... }
ou do ... end
{|a,b| ... }
, ex: Array#eachvaleur = 5
if valeur >= 10
puts 'nombre positif'
elsif valeur < 0
puts 'nombre négatif'
else
puts 'chiffre'
end
unless
ou if
sur une seule ligne !puts 'chiffre' unless valeur < 0 || valeur >= 10 # && signifie ET
# OU l'inverse
puts 'chiffre' if valeur >= 0 && valeur < 10 # || signifie OU
puts
OU print
?
nom = 'toto' # ne pas oublier entre apostrophe ' ou guillement "
puts nom
print nom
print "\n"
Rq: ‘#’ permet d’exprimer un commentaire, ne sera pas exécuté !
# \n est un caractère spécial qui signifie retour à la ligne, cf code ASCII
gets
est une fonction qui retourne une chaîne de caractère. elle s’utilise comme suit :ma_variable = gets
exemple avec le code :
print 'Entrez votre nom : '
name = gets
print 'Vous avez saisi : '
puts name
petit problème
require 'date'
hui = Date.today
puts hui.day
puts hui.month
puts hui.year
chercher la différence entre Date#day
et Date#yday
String#chomp
exécutons :
'ok'.chomp
?
'ok\n'.chomp
?
1.chomp
?
1.chomp
retourne une erreur ?print 'Entrez votre nom : '
name = gets.chomp
print name
puts ', quel joli prénom !'
pseudo = 'toto'
=> toto
pseudo = "toto"
=> toto
nom = pseudo
=> toto
nom = toto
=> erreur: variable toto
non défini !
Noter la différence entre ’ et "
pseudo = 'toto'
puts "mon nom est : #{pseudo}" # avec interpolation
puts 'mon nom est : #{pseudo}' # sans interpolation
Date.strptime(gets, '%d/%m/%Y')
def ma_fonction(param1, param2)
[instruction 1]
[instruction 2]
...
[instruction n]
end
# Rq: la dernière instruction est retournée par la fonction
# Rq: toute instruction retourne une valeur ... ou nil (nul en anglais)
# -> attention puts retourne nil
ma_fonction(1,2)
budget = 1000
budget = budget + 100
budget += 50
budget /= 2
puts budget
nom = 'toto'.upcase # upcase est une fonction/méthode de la classe String
nom += ' est en majuscule'
nom += ", n'est ce pas ?\nNouvelle ligne." # noter l'interpolation pour \n
puts nom
OU
puts "#{'toto'.upcase}, n'est ce pas ?\nNouvelle ligne." # en une ligne
Définir la fonction palindrome?
qui retourne vrai si :
une chaine de caractère sans ses espaces est égale à son inverse.
palindrome?("engage le jeu que je le gagne") # => true
Remarque : En ruby, toutes les fonctions qui retournent un booléen se termine avec un ‘?’ pour améliorer la lisibilité
1 parmi 10
en binome ou en trinome
–
Problème du voyageur de commerce
Algorithme glouton
Heuristique
code spaghetti
code mort
K.I.S.S / D.R.Y / Y.A.G.N.I
Tim Berners Lee / HTTP
Nom de domaine
Serveur Web (Apache, Nginx)
Service Web (API REST)
Routine / Procédure / Fonction
Programmation fonctionnelle
Récursivité
Diagramme UML
Classe, attribut, méthode
Héritage, polymorphisme
Calcul Lambda
Lisp
OCaml
Haskell
OpenOffice / LibreOffice
Mysql / MariaDB
Visual Studio Code / VsCodium
Chrome / Chromium
EcmaScript
Arbre DOM
Ajax
JSon
Mozilla
Cargo
WebAssembly
Ligne de commande
CTRL+C
PowerShell
Dash
https://librecours.net/module/js/js00a/
require "open-uri"
licence = URI.parse("https://www.ruby-lang.org/en/about/license.txt").read
print licence
require "base64"
document = 'Voici une information secrète'
enc = Base64.encode64(document)
dec = Base64.decode64(enc)
puts "#{enc} <=Base64=> #{dec}"
Programmer factorielle(n) tel que :
factorielle(0) = 0
factorielle(1) = 1
factorielle(n) = n + factorielle(n - 1)
:-)
Quelle est la réponse maximale de la fonction factorielle décrite précédemment ?
Proposer une version impérative de la fonction créé précédemment autrement dit : supprimer toute définition de fonction.