Déroulement Aujourd`hui Ingrédients d`algorithmes Typage Typage

publicité
23/09/2008
Déroulement
Algorithmes et
structures de données
(avancées)
Cours 3
Patrick Reuter
• CM mardi de 8h à 9h (salle 33)
• TD
- Groupe 1 : mardi, 13h30 – 15h00 (salle 51D)
- Groupe 2 : mardi, 15h15 – 16h45 (salle 51D)
(en alternance: salle TD et salle machine)
http://www.labri.fr/~preuter/asd2008
(rendre la feuille à la prochaine séance)
Aujourd'hui
• Rappel
• Les tableaux
• cet après-midi: salle TD
Ingrédients d’algorithmes
•
•
•
•
•
Variables
Affectation
Condition/Comparaison
Appel de fonction
Structure de contrôle
– Bloc d'instruction
– Branchements conditionnels
– Branchements conditionnels (multiples)
– Boucles
Typage
• PHP:
– typage dynamique et faible
Æle type n'est
n est pas associé au nom de la
variable
Æle type est encodé dans la donnée elle-même
Typage dynamique et faible
• Types différents dans le même algorithme
a = 1;
a = 1 + 3;
afficher(a);
a = "Maintenant c'est un texte";
afficher(a);
--> pas possible en Delphi, p.ex.
Comparer: Delphi/Pascal
- typage statique et fort
1
23/09/2008
Typage dynamique et faible
• Types différents dans le même algorithme
a = 1;
a = 1 + 3;
afficher(a);
a = "Maintenant c'est un texte";
afficher(a);
$a = 1;
$a = 1 + 3;
echo $a;
$a = "Maintenant c'est un texte";
echo $a;
Appel de fonctions
• Exemples :
– afficher du texte à l'écran
– générer les nombres aléatoires
Ingrédients d’algorithmes
•
•
•
•
•
Variables
Affectation
Condition/Comparaison
Appel de fonction
Structure de contrôle
– Bloc d'instruction
– Branchements conditionnels
– Branchements conditionnels (multiples)
– Boucles
Ingrédients d’algorithmes
• Appel de fonctions, p.ex.
afficher("Bonjour tout le monde");
En PHP :
echo "Bonjour tout le monde";
Ingrédients d’algorithmes
• Appel de fonctions: nombre aléatoires,
p.ex.
nombre
b = rand(1,
d(1 49)
Ingrédients d’algorithmes
• Appel de fonctions: nombre aléatoires,
p.ex.
d = rand(1,
des
d(1 6)
En PHP :
En PHP :
$nombre = rand(1, 49)
$des = rand(1, 6)
2
23/09/2008
Faire tourner un algorithme
Ingrédients d’algorithmes
•
•
•
•
•
Variables
Affectation
Condition/Comparaison
Appel de fonction
Structure de contrôle
Ingrédients d’algorithmes
• Structure de contrôle
– Branchements conditionnels
– Bloc d'instruction
– Branchements conditionnels
– Branchements conditionnels (multiples)
– Boucles
Ingrédients d’algorithmes
• Structure de contrôle
– Branchements conditionnels
SI <condition>
condition ALORS
Ingrédients d’algorithmes
• Structure de contrôle
– Branchements conditionnels
SI <condition>
condition ALORS
<bloc d’instructions>
[SINON
<bloc d’instructions>
SINON
<bloc d’instructions>]
<bloc d’instructions>
Exemple:
SI (score>meilleur_score) ALORS
meilleur_score = score;
3
23/09/2008
Ingrédients d’algorithmes
• Structure de contrôle
Ingrédients d’algorithmes
• Structure de contrôle
– Branchements conditionnels
– Branchements conditionnels
SI <condition>
condition ALORS
SI <condition>
condition ALORS
<bloc d’instructions>
SINON
<bloc d’instructions>
SINON
<bloc d’instructions>
Exemple:
SI (score>meilleur_score) ALORS
meilleur_score = score;
afficher ("vous avez battu le score!");
Ingrédients d’algorithmes
• Bloc d'instruction
<bloc d’instructions>
Exemple:
NON !!
SI (score>meilleur_score) ALORS
meilleur_score = score;
afficher ("vous avez battu le score!");
Ingrédients d’algorithmes
• Bloc d'instruction
– permet de regrouper plusieus instructions dans le
même contexte de l'algorithme
Sont définie par:
En algorithmes :
DEBUT
FIN
En PHP:
{
}
Ingrédients d’algorithmes
• Bloc d'instruction
Ingrédients d’algorithmes
• Bloc d'instruction
SI <condition> ALORS
<bloc d’instructions>
SINON
<bloc d’instructions>
SI (score>meilleur_score) ALORS
DEBUT
meilleur_score = score;
afficher ("vous avez battu le score!");
FIN
SI (score>meilleur_score) ALORS
DEBUT
meilleur_score = score;
afficher ("vous avez battu le score!");
FIN
if ($score>$meilleur_score)
{
$meilleur_score = $score;
echo "vous avez battu le score!";
}
if ($score>$meilleur_score)
{
$meilleur_score = $score;
echo "vous avez battu le score!";
}
4
23/09/2008
Structogramme
• Diagramme Nassi-Shneidermann
("structogramme")
Exercice
• Affecter les variables a1 et a2 avec un
nombre entier aléatoire entre 1 et 100
• Affecter la variable max avec la plus
grande valeur de a1 et a2
(autrement dit: max contiendra la valeur de a1
si a1 est plus grand que a2, et a2 sinon
• Afficher la variable max
• Ebaucher le structogramme
Exercice
• Solution
a1 = rand(1,100)
a2 = rand(1
rand(1,100)
100)
SI (a1>a2) ALORS
max = a1
SINON
max = a2
afficher(max)
Exercice
• Solution
a1 = rand(1,100)
a2 = rand(1
rand(1,100)
100)
SI (a1>a2) ALORS
max = a1
SINON
max = a2
afficher(max)
$a1 = rand(1,100);
$a2 = rand(1,100);
if($a1>$a2)
($
$ )
$max = $a1;
else
$max = $a2;
echo $max;
5
23/09/2008
Structure de données
• une structure logique
– destinée à contenir des données
– afin de leur donner une organisation
permettant de simplifier leur traitement
traitement.
Les tableaux
Les tableaux
• Motivation
• Les tableaux
– Les tableaux numériques
– Les
L ttableaux
bl
associatifs
i tif
– Les tableaux multidimensionnels
Motivation
en arithmétique :
• Affectation :
a1 = 1
a2 = 5
a3 = 4
a4 = 8
…
an = 4
en algorithmique
a[1] = 1;
a[2] = 5;
a[3] = 4;
a[4] = 8;
…
a[n]
[ ] = 4;
4
en PHP:
$a[1] = 1;
$a[2] = 5;
$a[3] = 4;
$a[4] = 8;
…
$a[$n] = 4;
Exemple
• Vous avez vu comment faire le calcul :
5
Σi
i=1
• Maintenant calculer
5
Σ ai
i=1
6
23/09/2008
Exemple
• Solution
Exemple
• Solution
somme =0;
i=1;
somme =0;
i=1;
TANT QUE i <= 5 FAIRE
DEBUT
somme = somme +a[i];
i=i+1;
FIN
TANT QUE i <= 5 FAIRE
DEBUT
somme = somme +a[i];
i=i+1;
FIN
$somme =0;
$i=1;
while ($i <= 5)
{
$somme = $somme
+$a[$i];
$i=$i+1;
}
Exemple
Structogramme
Exercice
• Affecter les variables a1 et a2 avec un
nombre entier aléatoire entre 1 et 100
• Affecter la variable max avec la plus
grande valeur de a1 et a2
(autrement dit: max contiendra la valeur de a1
si a1 est plus grand que a2, et a2 sinon
Exercice
a1 = rand(1, 100)
a1 = rand(1, 100)
SI (a1>a2) ALORS
max = a1
SINON
max = a2
afficher(max)
• Afficher la variable max
• Ebaucher le structogramme
7
23/09/2008
Exercice
• Structogramme
• Solution
mois[1] = 31;
mois[2] = 30;
mois[3] = 31;
mois[4]
i [4] = 28;
28
mois[5] = 31;
mois[6] = 30;
mois[7] = 31;
mois[8] = 31;
mois[9] = 30;
mois[10] = 31;
mois[11] = 30;
mois[12] = 31;
Exercice
• Déclarer le nombre de jours dans chaque
mois
• Ecrire un algorithme qui compte le nombre
de mois à 30 jours
Exercice
• Solution
compteur = 0;
i = 1;
while (i<=12)
{
if (mois[i] == 30)
compteur = compteur + 1;
i = i + 1;
}
afficher("Nombre de mois à 30 jours : ");
afficher(compteur);
• Structogramme
8
Téléchargement