Cours n°1- Algorithmes et premiers pas en C

publicité
Cours n◦ 1- Algorithmes et premiers pas en C
[email protected]
Polytech’ UPMC
19 Septembre 2016
http://australe.upmc.fr (onglet EPU-C5-IGE Info Gen)
(Polytech’ UPMC)
Cours n◦ 1
19 Septembre 2016
1 / 28
Plan du cours n◦ 1
1
Les algorithmes
2
La machine de Turing
(Polytech’ UPMC)
Cours n◦ 1
19 Septembre 2016
2 / 28
1
2
Les algorithmes
Introduction
Construction d’un
algorithme
Structures de base d’un
algorithme
Tester un algorithme
Exemples
La machine de Turing
(Polytech’ UPMC)
“I believe I’ve isolated the algorithm for
making friends.”
Sheldon Cooper,
in The Big Band Theory, Season 2, Episode 13
Cours n◦ 1
19 Septembre 2016
3 / 28
Pourquoi faire appel à des algorithmes ?
Pour automatiser des tâches
Exemples :
Métier à tisser
Méthode de calcul à la main d’une division
Recette de cuisine
...
(Polytech’ UPMC)
Cours n◦ 1
19 Septembre 2016
4 / 28
Qu’est-ce qu’un algorithme ?
Définition
Un algorithme est un ensemble ordonné d’instructions simples permettant
de résoudre un problème.
(Polytech’ UPMC)
Cours n◦ 1
19 Septembre 2016
5 / 28
Remarques
Un algorithme nécessite :
Des objets sur lesquels travailler,
Un langage non ambigu,
Des spécifications (description de l’algorithme).
Il n’existe généralement pas un unique algorithme pour traiter un problème.
(Polytech’ UPMC)
Cours n◦ 1
19 Septembre 2016
6 / 28
Historique
3ème siècle avant JC Livre VII des Eléments d’Euclide
Détermination du plus grand diviseur commun
entre deux nombres : PGCD(12,8)=4
8ème siècle après JC Al-Khawarizmi : Méthodes de résolution
d’équations. Son nom est à l’origine du mot "algorithme".
(Polytech’ UPMC)
Cours n◦ 1
19 Septembre 2016
7 / 28
1
2
Les algorithmes
Introduction
Construction d’un
algorithme
Structures de base d’un
algorithme
Tester un algorithme
Exemples
La machine de Turing
(Polytech’ UPMC)
Cours n◦ 1
19 Septembre 2016
8 / 28
Construction d’un algorithme
Pour chaque problème, il vous est demandé de définir clairement :
Les éventuelles données d’entrée du problème en précisant leurs types
et leur rôle,
les éventuelles données de sortie du problème en précisant leurs types,
les différentes instructions permettant d’obtenir les données de sorties
à partir des données d’entrée.
(Polytech’ UPMC)
Cours n◦ 1
19 Septembre 2016
9 / 28
Exemple
Algorithme qui détermine le prix d’entrée dans un musée (les mineurs
payent moitié prix)
(Polytech’ UPMC)
Cours n◦ 1
19 Septembre 2016
10 / 28
Exemple
Algorithme qui détermine le prix d’entrée dans un musée (les mineurs
payent moitié prix)
Données
Données d’entrée : age (entier)
{age du client}
Données de sortie : tarif (décimal)
{prix de l’entrée}
(Polytech’ UPMC)
Cours n◦ 1
19 Septembre 2016
10 / 28
Exemple
Algorithme qui détermine le prix d’entrée dans un musée (les mineurs
payent moitié prix)
Données
Instructions
Données d’entrée : age (entier)
{age du client}
Données de sortie : tarif (décimal)
{prix de l’entrée}
(Polytech’ UPMC)
Cours n◦ 1
Si age < 18 Alors
tarif ← 4
Sinon
tarif ← 8
Fin Si
Renvoyer tarif
19 Septembre 2016
10 / 28
1
2
Les algorithmes
Introduction
Construction d’un
algorithme
Structures de base d’un
algorithme
Tester un algorithme
Exemples
La machine de Turing
(Polytech’ UPMC)
Cours n◦ 1
19 Septembre 2016
11 / 28
Instructions élémentaires
Opérations arithmétiques de base (+, −, ×, /, mod, ...)
Affectation de valeurs (ex : x ← 2)
Afficher, lire
Structures conditionnelles
Structures répétitives
(Polytech’ UPMC)
Cours n◦ 1
19 Septembre 2016
12 / 28
Structures conditionnelles 1/2
fausse
condition
Action F
Si condition Alors
Action V
Sinon
Action F
Fin Si
vraie
Action V
Un exemple
Si age < 18 Alors
tarif ← 4
Sinon
tarif ← 8
Fin Si
(Polytech’ UPMC)
Cours n◦ 1
19 Septembre 2016
13 / 28
Structures conditionnelles 2/2
condition
Si condition Alors
Action V
Fin Si
vraie
Un exemple
fausse
Si age < 18 Alors
Afficher "Réduction de
50%"
Fin Si
Action V
(Polytech’ UPMC)
Cours n◦ 1
19 Septembre 2016
14 / 28
Structures à choix multiple
Selon le cas
Cas 1 : Action 1
Cas 2 : Action 2
...
Cas n : Action n
Défaut : Action par défaut
Fin Selon
Selon le cas
Cas 1
Action 1
Cas 2
Action 2
Un exemple
Cas n
Action n
défaut
Action
par défaut
(Polytech’ UPMC)
Selon valeur de age
0..6 : tarif ← 0
7..18 : tarif ← 4
Défaut : tarif ← 8
Fin Selon
Cours n◦ 1
19 Septembre 2016
15 / 28
Structures répétitives 1/2
Tant que condition Faire
Actions
Fin Tant que
Répéter tant que
condition
fausse
vraie
Un exemple
Actions
(Polytech’ UPMC)
Les actions peuvent ne pas
être exécutées si la condition
est fausse au départ.
Tant que tickets>0 Faire
vendre un ticket
Fin Tant que
Cours n◦ 1
19 Septembre 2016
16 / 28
Structures répétitives 2/2
Répéter
Actions
Tant que condition
Actions
vraie
Les actions sont exécutées au
moins une fois.
Répéter tant que
condition
Un exemple
Répéter
vendre un ticket
Tant que ticket>0
fausse
(Polytech’ UPMC)
Cours n◦ 1
19 Septembre 2016
17 / 28
Structures itératives
Pour i = 1 à n Faire
Actions
Fin Pour
Répéter n fois
Actions
(Polytech’ UPMC)
compteur>n
On connaît le nombre d’itérations à
l’avance.
Un exemple
Pour i = 1 à nbre_guide Faire
Si place pour guide i>0 Alors
Afficher "Il reste des places
pour le guide i"
Fin Si
Fin Pour
Cours n◦ 1
19 Septembre 2016
18 / 28
1
2
Les algorithmes
Introduction
Construction d’un
algorithme
Structures de base d’un
algorithme
Tester un algorithme
Exemples
La machine de Turing
(Polytech’ UPMC)
Cours n◦ 1
19 Septembre 2016
19 / 28
Jeu d’essais
Faire fonctionner l’algorithme avec des valeurs.
Traiter tous les cas possibles.
En particulier les cas pouvant nécessaiter à traitement spécifique.
(Polytech’ UPMC)
Cours n◦ 1
19 Septembre 2016
20 / 28
Un exemple :
Calcul de la valeur absolue d’un nombre
Données
Données d’entrée : X (entier)
{nombre dont on veut calculer la valeur absolue}
Données de sortie : Val_abs (entier)
{valeur absolue de X}
Instructions
Si X ≥ 0 Alors
Val_abs ← X
Sinon
Val_abs ← -X
Fin Si
Renvoyer Val_abs
(Polytech’ UPMC)
Cours n◦ 1
19 Septembre 2016
21 / 28
Un exemple :
Calcul de la valeur absolue d’un nombre
Données
Données d’entrée : X (entier)
{nombre dont on veut calculer la valeur absolue}
Données de sortie : Val_abs (entier)
{valeur absolue de X}
Instructions
Si X ≥ 0 Alors
Val_abs ← X
Sinon
Val_abs ← -X
Fin Si
Renvoyer Val_abs
(Polytech’ UPMC)
Jeu d’essais
X ← un entier négatif
X ← un entier positif
X←0
Cours n◦ 1
19 Septembre 2016
21 / 28
1
2
Les algorithmes
Introduction
Construction d’un
algorithme
Structures de base d’un
algorithme
Tester un algorithme
Exemples
La machine de Turing
(Polytech’ UPMC)
Cours n◦ 1
19 Septembre 2016
22 / 28
Exemple 1
Un colis est conforme si ses trois dimensions (L × l × h avec h ≤ l ≤ L)
vérifient les conditions suivantes :
Un rectangle de 10cm × 7cm doit pouvoir s’inscrire dans une face du
colis,
L + l + h ≤ 100 cm,
L ≤ 60cm.
Exercice
Ecrire l’algorithme permettant de savoir si un colis est conforme ou non.
(Polytech’ UPMC)
Cours n◦ 1
19 Septembre 2016
23 / 28
Exemple 2
Que fait cet algo ?
Données d’entrée :
X, tableau à 2 dimension de n×n réels,
v, vecteur de n réels
Données de sortie : s, vecteur de n réels
Pour i variant de 1 à n Faire
s(i) ← 0
Pour j variant de 1 à n Faire
s(i) ← s(i) + X(i,j).v(j)
Fin Pour
Fin Pour
Renvoyer s
(Polytech’ UPMC)
Cours n◦ 1
19 Septembre 2016
24 / 28
1
Les algorithmes
2
La machine de Turing
“A computer would deserve to be called
intelligent if it could deceive a human into
believing that it was human.”
Alan Turing (1912-1954)
(Polytech’ UPMC)
Cours n◦ 1
19 Septembre 2016
25 / 28
Un peu d’histoire...
1900 : Problèmes d’Hilbert (2ème problème : Est-ce que
l’arithmétique est cohérente ?)
1931 : Gödel démontre que l’arithmétique est incomplète. Cela est
lié au problème de la décision.
1936 : Introduction de la machine de Turing par Alan Turing à l’âge
de 24 ans pour montrer que certais problèmes ne peuvent pas
être résolus par un algorithme (c’est à dire par la machine de
Turing).
1942 : Participation au décodage d’Enigma.
1946 : Création de l’ENIAC (Electronic Numerical Integrator and
Computer).
1954 : Mort de Turing.
(Polytech’ UPMC)
Cours n◦ 1
19 Septembre 2016
26 / 28
Définition de la machine de Turing
1
Un ruban infini
contenant des symboles.
...
0
1
1
0
0
0
0
0
...
e1
Ancien état
(Polytech’ UPMC)
Symbole lu
Symbole écrit
Cours n◦ 1
Mouvement
Nouvel état
19 Septembre 2016
27 / 28
Définition de la machine de Turing
1
Un ruban infini
contenant des symboles.
2
Un tête de
lecture/écriture.
...
0
1
1
0
0
0
0
0
...
e1
Ancien état
(Polytech’ UPMC)
Symbole lu
Symbole écrit
Cours n◦ 1
Mouvement
Nouvel état
19 Septembre 2016
27 / 28
Définition de la machine de Turing
1
Un ruban infini
contenant des symboles.
2
Un tête de
lecture/écriture.
3
Un registre d’état.
...
0
1
1
0
0
0
0
0
...
e1
Ancien état
(Polytech’ UPMC)
Symbole lu
Symbole écrit
Cours n◦ 1
Mouvement
Nouvel état
19 Septembre 2016
27 / 28
Définition de la machine de Turing
1
Un ruban infini
contenant des symboles.
2
Un tête de
lecture/écriture.
3
Un registre d’état.
4
Une table d’actions.
Ancien état
(Polytech’ UPMC)
Symbole lu
...
0
1
1
0
0
0
0
0
...
e1
Symbole écrit
Cours n◦ 1
Mouvement
Nouvel état
19 Septembre 2016
27 / 28
Définition de la machine de Turing
1
Un ruban infini
contenant des symboles.
2
Un tête de
lecture/écriture.
3
Un registre d’état.
4
Une table d’actions.
5
Un état et une position
de départ sur le ruban.
Ancien état
(Polytech’ UPMC)
Symbole lu
...
0
1
1
0
0
0
0
0
...
e1
Symbole écrit
Cours n◦ 1
Mouvement
Nouvel état
19 Septembre 2016
27 / 28
Fonctionnement d’une machine de Turing
1
La tête de lecture lit un
symbole s.
...
0
0
0
0
0
0
0
0
...
e1
Ancien état
e1
e2
e3
e4
e5
e1
e2
e3
e4
e5
(Polytech’ UPMC)
Symbole lu
0
0
0
0
0
1
1
1
1
1
Symbole écrit
1
1
1
1
1
0
1
0
0
0
Cours n◦ 1
Mouvement
D
D
D
D
G
G
G
G
G
D
Nouvel état
e2
e3
e4
e5
e4
ARRET
e1
e2
e3
e4
19 Septembre 2016
28 / 28
Fonctionnement d’une machine de Turing
1
La tête de lecture lit un
symbole s.
2
En fonction de s et de son
état, la tête écrit un symbole
s0
...
0
0
0
0
1
0
0
0
...
e1
Ancien état
e1
e2
e3
e4
e5
e1
e2
e3
e4
e5
(Polytech’ UPMC)
Symbole lu
0
0
0
0
0
1
1
1
1
1
Symbole écrit
1
1
1
1
1
0
1
0
0
0
Cours n◦ 1
Mouvement
D
D
D
D
G
G
G
G
G
D
Nouvel état
e2
e3
e4
e5
e4
ARRET
e1
e2
e3
e4
19 Septembre 2016
28 / 28
Fonctionnement d’une machine de Turing
1
La tête de lecture lit un
symbole s.
2
En fonction de s et de son
état, la tête écrit un symbole
s0
3
...
0
0
0
0
1
(Polytech’ UPMC)
Symbole lu
0
0
0
0
0
1
1
1
1
1
0
0
...
e1
En fonction de son état la
tête se déplace d’un cran.
Ancien état
e1
e2
e3
e4
e5
e1
e2
e3
e4
e5
0
Symbole écrit
1
1
1
1
1
0
1
0
0
0
Cours n◦ 1
Mouvement
D
D
D
D
G
G
G
G
G
D
Nouvel état
e2
e3
e4
e5
e4
ARRET
e1
e2
e3
e4
19 Septembre 2016
28 / 28
Fonctionnement d’une machine de Turing
1
La tête de lecture lit un
symbole s.
2
En fonction de s et de son
état, la tête écrit un symbole
s0
3
En fonction de son état la
tête se déplace d’un cran.
4
La machine change d’état.
Ancien état
e1
e2
e3
e4
e5
e1
e2
e3
e4
e5
(Polytech’ UPMC)
Symbole lu
0
0
0
0
0
1
1
1
1
1
...
0
0
0
0
1
0
0
0
...
e2
Symbole écrit
1
1
1
1
1
0
1
0
0
0
Cours n◦ 1
Mouvement
D
D
D
D
G
G
G
G
G
D
Nouvel état
e2
e3
e4
e5
e4
ARRET
e1
e2
e3
e4
19 Septembre 2016
28 / 28
Téléchargement