Informatique, Algorithmique, Programmation, etc. CPEL2

publicité
Informatique, Algorithmique,
Programmation, etc.
CPEL2
[email protected]
2014/2015
1
Informatique ?
●
Mot valise créé en 1962:
INFORMATION + AUTOMATIQUE
●
En français moderne: science du traitement
de l'information par un ordinateur
[email protected]
2014/2015
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
[email protected]
2014/2015
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
[email protected]
2014/2015
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
[email protected]
2014/2015
5
Un exemple amusant - Lightbot
[email protected]
2014/2015
6
Un autre exemple : Scratch
[email protected]
2014/2015
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
[email protected]
2014/2015
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 !
[email protected]
2014/2015
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)
[email protected]
2014/2015
10
Exemples de problèmes à résoudre...
●
Trouver le plus petit objet parmi un ensemble
d'objets
Difficile
Facile
[email protected]
2014/2015
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
[email protected]
2014/2015
12
Exemples de problèmes à résoudre
●
Mettre des objets dans le bon ordre (ou trier)
[email protected]
2014/2015
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é !
[email protected]
2014/2015
14
Version Scratch
[email protected]
2014/2015
15
Ca devient un peu compliqué…
mais il ne faut pas craquer
[email protected]
2014/2015
16
Programme mystère ?
[email protected]
2014/2015
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 !
[email protected]
2014/2015
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;
}
[email protected]
2014/2015
19
Environnement Linux
[email protected]
2014/2015
20
Traduction en C/C++ d'un
programme Scratch
[email protected]
2014/2015
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...
[email protected]
2014/2015
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;
}
[email protected]
2014/2015
23
Tri à bulles !
[email protected]
2014/2015
24
Téléchargement