Aymeric LAMBOLEY
Formation
Professionnel
Société de programmation pour applications interactives et ludiques.
Technologies
Références
Le mot « algorithme » vient du nom du mathématicien Al-Khwârizmî (latinisé au Moyen Âge en Algoritmi), qui, au IXe siècle écrivit le premier ouvrage systématique donnant des solutions aux équations linéaires et quadratiques. « Algorithme » a donné « algorithmique ». On trouve aussi le synonyme « algorithmie », vieux mot utilisé par exemple par Wronski en 1811.
Les premiers algorithmes remontent au IIIe millénaire av. J.-C. Ils décrivent des méthodes de calcul et des résolutions d'équations à l'aide d'exemples.
Un algorithme représente une suite finie et non ambiguë d'instructions.
Les algorithmes sont partout : de la recette de cuisine au GPS.
Différents algorithmes permettent d'arriver au même résultat.
“Il n’y aura bientôt plus que deux types de personnes sur Terre, ceux qui donneront des ordres à l’ordinateur et ceux à qui l’ordinateur dira ce qu’ils doivent faire.” - Marc Andreessen
Retranscrire dans un langage compréhensible par une machine (ordinateur, smartphone, tv, voiture...) des algorithmes.
Il permet avec un crayon et une feuille de papier d'écrire des algorithmes.
Aucune syntaxe / convention officielle.
Une variable est un espace de stockage, temporaire, d'une donnée.
Elles n'existent que pendant la durée d'exécution de notre programme.
Elles sont utilisées afin de sauvegarder temporairement un résultat.
Quelles seront les valeurs des variables A et B après exécution des instructions suivantes ?
Variables A, B en Entier
Début
A ← 1
B ← A + 3
A ← 3
Fin
A = 3 B = 4
Quelles seront les valeurs des variables A, B et C après exécution des instructions suivantes ?
Variables A, B, C en Entier
Début
A ← 5
B ← 3
C ← A + B
A ← 2
C ← B – A
Fin
A = 2 B = 3 C = 1
Quelles seront les valeurs des variables A et B après exécution des instructions suivantes ?
Variables A, B en Entier
Début
A ← 5
B ← A + 4
A ← A + 1
B ← A – 4
Fin
A = 6 B = 2
Quelles seront les valeurs des variables A, B et C après exécution des instructions suivantes ?
Variables A, B, C en Entier
Début
A ← 3
B ← 10
C ← A + B
B ← A + B
A ← C
Fin
A = 13 B = 13 C = 13
Quelles seront les valeurs des variables A et B après exécution des instructions suivantes ?
Variables A, B en Entier
Début
A ← 5
B ← 2
A ← B
B ← A
Fin
A = 2 B = 2
Écrire un algorithme permettant d’échanger les valeurs de deux variables A et B, et ce quel que soit leur contenu préalable.
Début
...
C ← A
A ← B
B ← C
Fin
Création d'une variable temporaire C.
On dispose de trois variables A, B et C. Ecrivez un algorithme transférant à B la valeur de A, à C la valeur de B et à A la valeur de C (toujours quels que soient les contenus préalables de ces variables).
Début
...
D ← C
C ← B
B ← A
A ← D
Fin
Une seule variable temporaire suffit...
Type | Exemple |
---|---|
Entier | 5 |
Réel | -2.75 |
Chaîne de caractères | "hello world" |
Booléen | true |
Un type permet de préciser le contenu attendu dans une variable.
En général on effectue des opérations avec des variables de même type.
Quelle sera la valeur de la variable A après exécution des instructions suivantes ?
Variables A Entier, B Chaîne de caractère
Début
A ← 5
B ← "2"
A ← A + B
Fin
A = "52"
Écrire un programme qui lit le prix HT d’un article, le nombre d’articles et le taux de TVA, et qui fournit le prix total TTC correspondant. Faire en sorte que des libellés apparaissent clairement.
Variables nb, pht, ttva en Réel
Début
Ecrire "Entrez le prix hors taxes :"
Lire pht
Ecrire "Entrez le nombre d’articles :"
Lire nb
Ecrire "Entrez le taux de TVA :"
Lire ttva
Ecrire "Le prix toutes taxes est : " + (nb * pht * (1 + ttva))
Fin
Difficile d'imaginer des algorithmes complexes dont le déroulé serait identique en toute circonstance.
Un bon algorithme doit être capable de s'adapter à des variables durant son exécution.
La solution est d'ajouter des instructions conditionelles qui vont effectuer des tests à des moments clefs de notre programme.
Si... alors... sinon...
La machine choisit aléatoirement soit 0 soit 1. Faire un programme qui lit un chiffre en entrée et détermine si c'est le bon.
Variables nbrToFind, saisie en Réel
Début
nbrToFind ← Aléatoire(0, 1)
Lire saisie
Si saisie = nbrToFind
Ecrire "Correct"
Sinon
Ecrire "Incorrect"
FinSi
Fin
La machine tire un nombre entre 0 et 100. Écrire un algorithme qui vous permet de déterminer ce nombre.
Variables nbrToFind, saisie, min, max en Réel
nbrToFind ← 42
min ← 0
max ← 100
Lire saisie
Si saisie = nbrToFind
Ecrire "Le nombre a trouvé était bien : " + nbrToFind
Sinon
Si saisie < nbrToFind
min ← saisie
Sinon saisie > nbrToFind
max ← saisie
FinSi
Ecrire "L'intervalle est désormais compris entre : " + min + " et " + max
FinSi
Vous pensez à un chiffre entre 0 et 100 la machine doit le deviner. Répondez lui par "+", "-", ou "=".
Variables min, max, estimatedNbr en Réel, saisie en Chaîne de caractères
estimatedNbr ← 50
Ecrire "Le nombre est : " + estimatedNbr
Lire saisie
Si saisie = "="
Ecrire "J'ai gagné !"
Sinon si saisie = "+"
estimatedNbr ← estimatedNbr + 1
Sinon si saisie = "-"
estimatedNbr ← estimatedNbr - 1
FinSi
Les habitants de Zorglub paient l’impôt selon les règles suivantes :
Le programme demandera donc l’âge et le sexe du Zorglubien, et se prononcera donc ensuite sur le fait que l’habitant est imposable.
Variables sex en Chaîne de caractères, age en Entier,
Début
Ecrire "Entrez le sexe (M/F) : "
Lire sex
Ecrire "Entrez l’âge : "
Lire age
Si ((sex = "M" ET age > 20) OU (sex = "F" ET age >= 18 ET age <= 35))
Ecrire "Imposable"
Sinon
Ecrire "Non Imposable"
FinSi
Fin
Indispensable en algorithmie, elle permet de marquer une temporalité et une redondance Tant que... faire.
Elle est toujours soumise à une condition.
Calculer le factoriel de 5. Pour rappel 5! = 5 * 4 * 3 * 2 * 1.
Variables resultat, passage en Entiers
Début
passage ← 1
resultat ← 1
TantQue passage <= 5
resultat ← resultat * passage
passage ← passage + 1
FinTantQue
Fin
La plus utilisée en algorithmie, elle permet de créer une variable locale, son pas, et sa condition.
Pour ma variable i = 0, i < 4, avec un pas de i + 1 faire.
Calculer le factoriel de 6 avec une boucle pour.
Variables resultat en Entiers
Début
resultat ← 1
Pour i ← 1, i ⩽ 6, i ← i + 1
resultat ← resultat * i
FinPour
Fin
Calculer le factoriel de 3 avec une boucle for et un pas décroissant.
Variables resultat en Entiers
Début
resultat ← 1
Pour i ← 3, i ⩾ 1, i ← i - 1
resultat ← resultat * i
FinPour
Fin
Ada LOVELACE 1815 - 1852
Alan TURING 1912 - 1954
Il existe des centaines de langages de programmation, vous pouvez même créer le votre.
Ils sont souvent spécifiques par rapport à un secteur d'activité.
Lorsqu'on évoque les langages de programmation on parle de niveaux :
Il existe des familles de langages avec de nombreuses caractéristiques partagées.
L'importance n'est pas le langage en lui même mais les principes derrières qu'on retrouvera sur d'autres.
Ainsi un bon développeur doit être en capacité d'être opérationnel avec un autre langage en peu de temps.
Ils permettent de dialoguer avec l'ordinateur.
En fonction du niveau, ce sera avec ses composants directement (carte graphique, carte mère...) ou le système d'exploitation.
Certains langages sont directement interprétés, dans un contexte précis, par l'ordinateur, d'autres doivent être compilés c'est à dire transformer au format binaire.
Il permet de transformer du code, en un applicatif binaire compréhensible par l'ordinateur.
Il est en général directement fourni avec l'Environnement de développement (IDE).
Il existe de nombreux IDEs propres a un ou plusieurs langages, ceci en fonction de notre OS.
Citons Visual Studio (Code), et la suite JetBrains pour les plus connus.
A noter qu'il est toujours pratique d'avoir un petit éditeur de texte comme Notepad++ ou VS Code sous la main.
Processing est un logiciel gratuit et open-source pour réaliser des "croquis interactifs".
Il permet d'apprendre à coder dans un contexte artistique appliqué, c'est un canevas dans lequel on peint avec du code.
Il a également été conçu pour manipuler facilement des fichiers audios, vidéos...
Java est un des langages les plus populaires au monde. De nombreux appareils fonctionnent avec java : des serveurs internet, de nombreux logiciels, Minecraft, peut-être votre GPS...
Java est un langage compilé, haut-niveau, qui fonctionne dans un contexte d'exécution de machine virtuelle, ainsi il est "sandboxé".
Java est cross-plateform : disponible sur pratiquement tous les OS du monde.
print("Hello World !!");
String nom = "Aymeric";
boolean isMale = true;
int year = 2020;
float pi = 3.14;
// int year = 2020;
/*boolean isMale = true;
int year = 2020;*/
Les tableaux permettent de contenir dans une même variable plusieurs valeurs.
Outre des valeurs, un tableau peut également contenir des variables.
L'intérêt d'un tableau est de pouvoir effectuer des opérations sur de nombreux éléments via des boucles.
int[] tab = { 2, 7, 3 };
En java, les tableaux ont une taille fixe. Pour une taille dynamique nous utiliserons des ArrayList.
Parcours d'un tableau :
int[] tab = { 2, 7, 3 };
for (int i = 0; i < tab.length; i++)
{
println("La valeur dans mon tableau à l'indice " + i + " est de " + tab[i]);
}
Elles permettent de commencer à découper/organiser notre code dans des blocs précis.
Une fonction possède un nom, une signature et un type de retour.
int calculFactoriel(int factoriel) {
int resultat = 1;
for (int i = 1 ; i <= factoriel; i++)
{
resultat *= i;
}
return resultat;
}
Une variable appartient à un scope.
La variable i d'une boucle for n'existe pas en dehors.
Une variable définie dans une fonction n'existera pas en dehors de cette fonction.