Informatique, Algorithmique, Programmation, etc. CPEL2 1
Informatique? Mot valise créé en 1962: INFORMATION + AUTOMATIQUE En français moderne: science du traitement de l'information par un ordinateur 2
Ordinateur? Un ordinateur est une super machine à calculer Mot issu du vocabulaire religieux («qui met de l'ordre dans le monde...») Comparé à un humain, cette machine: A une mémoire constituée de cases (ou variables) Fait très vite ce qu'on lui dit Peut traiter beaucoup d'informations grâce à des algorithmes ou des programmes 3
Algorithme? Abou Jafar Muhammad Ibn Musa al-khuwarizmi (9ème siècle) «algorismus» (16ème siècle) En français moderne: programme que doit exécuter l'ordinateur 4
Ecrire un algorithme ou un programme... Suite d'instructions à exécuter Mais parfois il y a un bug : À cause d'une panne de l'ordinateur Plutôt en général à cause d'un fonctionnement non prévu par le programmeur 5
Un exemple amusant - Lightbot 6
Un autre exemple : Scratch 7
Des milliers de langages de programmation... Facilité de prise en main Vitesse d'exécution Langages «graphiques» (Scratch,Logo) Langages interprétés (Python, Visual Basic, PHP, langages TI/CASIO) Langages compilés (C/C++, Java, Ada, Fortran) Langage assembleur En théorie, tout algorithme peut être traduit d'un langage à un autre 8
Apprendre à programmer... 1. Trouver un problème à résoudre! 2. Imaginer une solution en tenant compte des capacités de l'ordinateur 3. Traduire sous forme de programme dans l'ordinateur 4. Tester et faire tester son programme 5. Si ça ne marche pas repartir à l'étape 2! 9
Que peut faire l'ordinateur? Déplacer un objet dans une variable Consulter la valeur d'une variable Calculer, comparer Etc. (voir les blocs Scratch) 10
Exemples de problèmes à résoudre... Trouver le plus petit objet parmi un ensemble d'objets Difficile Facile 11
Algorithme pour trouver le plus petit parmi un ensemble d'objets On définit une variable posmin = 1 On regarde chaque objet qui reste: Si cet objet est plus petit que celui en position posmin, alors on met sa position dans posmin On passe à l'objet suivant A la fin la variable posmin contient la position de l'objet le plus petit... Essayons avec des étudiants, puis avec Scratch On peut aussi faire une simulation d'exécution 12
Exemples de problèmes à résoudre Mettre des objets dans le bon ordre (ou trier) 13
Algorithme pour trier 1. On définit une variable pos = 1 2. On cherche le plus petit objet à partir de la position pos 3. On l'échange avec la case située en position pos 4. Si il y a encore des objets à traiter, alors on repart à l'étape 2 après avoir ajouté 1 à pos 5. A la fin, l'ensemble est trié! 14
Version Scratch 15
Ca devient un peu compliqué mais il ne faut pas craquer 16
Programme mystère? 17
Le C/C++ Langage très courant (90 % des jeux!) Des nouveautés importantes par rapport à Scratch : Les nombres sont typés (int pour les nombres entiers, float pour les nombres à virgule, char pour les caractères,...) Quelques lignes un peu mystérieuses à ajouter au début... On programme avec un éditeur de texte et un terminal Se référer à l'aide mémoire! 18
Un premier exemple en C/C++ #include <stdlib.h> #include <iostream> using namespace std; int main() { int valeur1, valeur2; int reponse; srand(time(null)); valeur1 = rand()%10; valeur2 = rand()%10; cout<<"quel est le résultat de "<<valeur1<< " fois "<<valeur2<<"?"<<endl; cin>>reponse; while (reponse!= (valeur1*valeur2)) { cout<<"non! Quel est le résultat de "<<valeur1<< " fois "<<valeur2<<"?"<<endl; cin>>reponse; } cout<<"bravo!"<<endl; } 19
Environnement Linux 20
Traduction en C/C++ d'un programme Scratch 21
Les points à retenir : Attention aux bornes d'une liste (ou vecteur) qui vont de 0 à n-1 Les accolades, virgules, parenthèses,... ne sont pas toujours obligatoires : les utiliser quand même Le but est d'écrire un programme lisible En TP ne pas hésiter à repartir d'un ancien programme pour le modifier Mise en application avec le tri par insertion... 22
Corriger un programme-mystère à l'aide du compilateur #include <stdlib.h> using namespace std; int main() int liste[6] int i; for (i = 0; i < 6; i++) { liste[i] = rand()%100; cout>>liste[i]>>endl; } i == 0; while (i <= 6) { if ((i%2) = 1) j = list[i]; list[i] = j+; cout<<"element " i " devient "<<liste[i]; } i=i+2; } 23
Tri à bulles! 24