Ruby, Bash, Typescript, Markdown, Html, Css,
Avant Créalise, je …
En toute franchise, ce que vous inspire le mot
PROGRAMMATION
de la théorie
quelques exercices théoriques
un peu de pratique
un jeu de carte
plus de pratique
évaluation
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.
<li>
<a href='crealise.io'>École Créalise</a>
</li>
...
Rq: langage composée de balises
li a {
background-color: beige;
margin: 1.2em;
}
Rq: contient une partie sélecteur + une partie description de style
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
le symbole
;
signale le début d’un commentaire !
Il existe
<condition>
ALORS … SINON …<condition>
RÉPÉTER … fonction tri_stupide (liste)
tant que la liste n'est pas triée
mélanger aléatoirement les éléments de la liste
chercher un mot dans une page
chercher un mot dans un livre
chercher un mot dans le dictionnaire
CODE SOURCE
OPEN SOURCE
# il faut 10 binomes (1 individu ou un groupe de 2)
binomes = [
'Nadia+Julien',
'Aaron+Natasha',
'Bertrand+Alice',
'Sandra+Olivier',
'Jeanne+Tim',
'Shanad+Saïd',
'Kevin+Kenza',
'Armand+Mally',
'Nelly+Rémy',
'JMarie+Barbara',
]
index = 1
binomes.shuffle.each do |binome|
puts "CARTE n°#{index} pour le binome #{binome}"
index += 1
end
Pas d’accès au code source = logiciel privateur = boite noire
Mise à disposition sous licence libre ou open-source
Le logiciel libre est un pot commun auquel chacun peut ajouter quelque chose mais duquel personne ne peut rien retirer.
– Eben Moglen
Métaphore : traduction d’un roman en anglais vers le français
Le traducteur ou l’interprète ?
1 | 0 |
---|---|
VRAI | FAUX |
OUI | NON |
+ | - |
O K | ANNULER |
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 ...
Quel est le plus grand nombre représentable avec un octet ?
Choisissez une réponse :
VRAI + VRAI + FAUX = ?
FAUX * FAUX * VRAI = ?
!( VRAI + FAUX ) * VRAI = ?
VRAI * ( FAUX + (FAUX * FAUX) + !VRAI ) = ?
!(FAUX + ( VRAI * !VRAI )) = ?
Avoir une note >=10 dans au moins 4 modules différent
dessiner ces initiales
faire un bloc avec son initiale
créer un bloc Triangle
avec une entrée distanceCoté
qui dessine un triangle
Tourner de x degrés
Répéter x fois
s’inspirer de Triangle et Carré pour créer Polygone avec 2 entrées :
www.ruby-lang.org/fr/documentation
devdocs.io/ruby (in english)
medium.com/the-renaissance-developer/ruby-101-the-basics-f10961f990ac
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
print 'Entrez votre nom : '
name = gets
puts "Bonjour #{name}"
Astuce : CTRL + Return => exécution instantanée !
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
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}"
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
Enigma
Test de Turing
La pomme de Blanche-Neige
Médaille de Turing
Les 4 règles du logiciel libre
Service dans les nuages, licence Affero GPL v3
Creative Commons / Art Libre
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
NodeJs / NPM
version semantique
VueJs
Tim Berners Lee / HTTP
Nom de domaine
Serveur Web (Apache, Nginx)
Service Web (API REST)
Guerre des navigateurs (IE6 / Mozilla)
Javascript / Ecmascript
Arbre DOM
Routine / Procédure / Fonction
Programmation fonctionnelle
Récursivité
Diagramme UML
Classe, attribut, méthode
Héritage, polymorphisme
OpenOffice / LibreOffice
Mysql / MariaDB
Visual Studio Code / VsCodium
Chrome / Chromium
Ceci est le premier algorithme pour calculer les nombres de Bernoulli, 1843. Vous voulez-voir qui a programmé ça ? image