Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
1
Abder Alikacem Semaine 4 Synthèse
Programme de baccalauréat en informatique Algorithmique et programmation IFT-17582 Abder Alikacem Semaine 4 Synthèse Édition hiver 2008 Département d’informatique et de génie logiciel
2
Plan Lecture: Un type composé: notion de tableau
Méthodologie de construction d’algorithmes Rappel Exemple et synthèse Introduction au langage C Lecture: Chapitre 4 RepresentationDeDonnées.htm, semainier/Semaine3
3
Les types de données Justification du concept de type
Classer les objets selon : L'ensemble des valeurs que peut prendre l'objet L'ensemble des opérations permises sur ces valeurs Les types élémentaires Les types composites Tableaux Structures Fichiers Etc..
4
Notion de tableau 1 indices N Caractéristiques Taille fixe
Collection indicée d'éléments de même type Taille fixe Accès à un élément par son indice Algorithmes classiques Recherche d'un élément Tri de tableau selon une relation d'ordre (>, <) Fusion
5
Tableau à une dimension
1 N i -3 5 7 2 -4 10 Définition t: tableau d’entiers de taille N //vecteur Accès au i-ème élément x t [i] // i 1..N t [i] 10 // i 1..N Algorithme de base Répéter i [1,N] début traiter l’élément t[i] fin
6
Tableau à deux dimensions
t : tableau NxM de réels // une matrice Accès aux composants t[i][ j] // i 1..N; j 1..M x t[i][ j] // i 1..N; j 1..M Algorithme de base Répéter i [1,N] // première dimension début Répéter j [1,M] // seconde dimension Traiter l’élément t[i][ j] fin
7
Exemple. Algorithme avec un tableau
Algorithme: trier un tableau { Objectif: trier un tableau en ordre croissant Connu: Entrées: tab: le tableau et nbValeurs: son nombre d’éléments Sorties: le tableau trié en ordre croissant Résultats: - Hypothèse: nbValeurs > 0 }
8
Début {A: nbValeurs > 0} Répéter i[1,nbValeurs-1] plusPetit i Répéter candidat[i+1,nbValeurs] si(tab[candidat] < tab[plusPetit]) alors plusPetit candidat Fin …….. tampon tab[i] tab[i] tab[plusPetit] tab[plusPetit] tampon {A: tab est trié en ordre croissant}
9
Conception d’algorithmes
Instance d'un problème = Ensemble de données pour calculer une solution d’un problème. Idée de base Abstraire Décomposer Combiner Structuration des actions Séquentielle Conditionnelle Itérative Problème Algorithme Ensemble de résultats
10
Les étapes de résolution
1- reconnaissance du problème; 2- formulation du problème (spécifications, contraintes, etc.); 3- identification des données, leur type et domaine de valeurs; Répéter 4- identification des principales sous-tâches et leurs relations (flot de données); 5- spécifier chaque sous-tâche énoncée en 4; 6- concevoir chaque sous-tâche dans un bloc algorithmique Tant Que (un bloc n’est pas décrit uniquement par des instructions élémentaires) 7- Traduire l'algorithme dans un langage de programmation donné.
11
Syntaxe des outils algorithmiques
Entrées-Sorties: DEMANDER information AFFICHER information IMPRIMER information Affectation: Var <- Expression Structures de contrôle: SI cond ALORS Début Bloc Fin SI cond ALORS Début Bloc1 Fin SINON Début Bloc2 Fin RÉPÉTER n fois Début Bloc Fin RÉPÉTER i [1..n] Début Bloc Fin TANTQUE cond Début Bloc Fin RÉPÉTER Début Bloc Fin JUSQU’À cond CAS V de v1 : Bloc1 . vn : Blocn Autrement : Bloca FINCAS
12
Documentation 4 types de commentaires: Commentaires généraux
Assertions: Commentaires de spécification formelle d’un bloc(interface) Commentaires de spécification interne à un bloc
13
Les pré-conditions Les post-conditions
Les assertions ( 1 et 2) Les pré-conditions Début Demander n { Assertion : n est un entier 0 } Si n = 1 ou n = 0 alors fact 1 Fin Sinon Répéter i [1, n] : fact fact * i { Assertion : n est un entier 0 inchangé et fact contient n!} Si Les post-conditions Alors
14
Validation des hypothèses
Les assertions (3) DEMANDER nbEtudiants {Assertion: nbEtudiants 0} Bloc B2… {.. Besoin : n , le nombre entier dont il faut calculer le factoriel Entrée : n .. Hypothèses : n 0 } Début {début du bloc} {A: n 0 } ….. Validation des hypothèses
15
Les assertions (4) Bloc B3.. Les post-conditions
{ les 8 commentaires de spécification internes } début {début du bloc} … {A: post-condition de B3} fin {fin du bloc} Bloc B1… début{début du bloc} Calcul de la moyenne d'une série de notes (voir B3) {A: la variable moy contient la moyenne des notes} …. {A: post-condition de B1} Les post-conditions
16
Exemple d’une construction d’un algorithme
Écrire un algorithme qui calcule une approximation de ex, le nombre népérien. Les données en entrée ? Les données en sortie ?
17
Exemple L’algorithme ?
18
Exemple Le critère d’arrêt ?
19
Exemple Le critère d’arrêt ? Fixer un n.
20
Bloc B1 : Calculer et afficher ex
Objectif : Calculer ex Méthode : Approximation par le développement en série Besoins : x : L’exposant N : Le nombre d’itérations Connu : N (entier > 0) Entrée : Aucune Sortie : Aucune Résultat : Afficher l’approximation de ex Hypothèse : x est un réel.
21
Bloc B1 : Calculer et afficher ex
DÉBUT DEMANDER x {A : x est un nombre réel} Approximer ex {voir le bloc B2} {A : résultat contient l’approximation de ex} AFFICHER résultat {A : Le résultat est affiché à l’utilisateur} FIN
22
Bloc B2 : Calculer ex Objectif : Calculer ex Méthode : Approximation par le développement en série Besoins : x : l’exposant N : Le nombre d’itération Connu : N (entier > 0) Entrée : x Sortie : L’approximation de ex Résultat : Aucun Hypothèse : x est un réel.
23
début Bloc B2 : Calculer ex DÉBUT {A : x est un réel} résultat 1
Si x≠0 Alors début i 1 TANT QUE i < N Calculer la factoriel de i ( voir le bloc B3) {A : fact contient le factoriel de i} Calculer x exposant i (voir le bloc B4) {A : xi contient x exposant i } résultat résultat + (xi/fact) i i+1 FIN fin {A : résultat contient l’approximation de ex}
24
Bloc B3 : Calculer la factoriel de n
Objectif : Calculer la factoriel de n Méthode : 1 * 2 * 3 * … * (n-1) * n Besoins : n : un entier. Connu : Aucun Entrée : n Sortie : La factorielle de n Résultat : Aucun Hypothèse : n est un entier positif ou nul
25
Bloc B3 : Calculer la factoriel de n
DÉBUT {A : n est un entier positif ou nul} x 1 k 1 {Si n = 0 ou n=1, x vaut 1 et on n’entre pas dans la boucle} TANT QUE k < n x x * k k k + 1 FIN {A : x contient n! }
26
Bloc B4 : Calculer x exposant i
Objectif : Calculer x à la i Méthode : multiplier x par lui-même i fois Besoins : i : l’exposant x : un réel Connu : Aucun Entrée : i, x Sortie : x exposant i Résultat : Aucun Hypothèse : i est un entier positif ou nul
27
Bloc B4 : Calculer x exposant i
DÉBUT {A : i est un entier positif ou nul} y 1 RÉPÉTER i FOIS y y * x FIN {A : y contient xi }
28
Exemple Le critère d’arrêt ? Fixer un n.
29
Exemple Le critère d’arrêt ? Un degré de précision P.
30
PRISE II Bloc B2 : Calculer ex Objectif : Calculer ex
Méthode : Approximation par le développement en série Besoins : x : l’exposant P : La précision Connu : P(réel > 0) Entrée : x Sortie : L’approximation de ex Résultat : Aucun Hypothèse : x est un réel.
31
PRISE II Bloc B2 : Calculer ex DÉBUT {A : x est un réel}
résultat 1 {(x0/0!) = 1} SI x 0 ALORS DEBUT résultat2 1 résultat 1 + x {resultat + (x1/1!) =1+x} i 2 TANT QUE résultat – résultat2 > P Calculer la factoriel de i (voir bloc B3) {A : fact contient i!} Calculer x exposant i {B4} {A : xi contient x exposant i} résultat2 résultat résultat résultat + (xi / fact) i i+1 FIN {A : résultat contient l’approximation de ex avec une précision égale à P} PRISE II
32
Passage de paramètres Algorithme Bloc B3 Paramètre formel Bloc B2
DEBUT … … B3( i ) FIN n Algorithme Bloc B3 Paramètre effectif i n!
33
Exemple de synthèse Étant donnée une séquence de caractères entrée par l’utilisateur et se terminant par un point, concevoir un algorithme qui affiche ces caractères en majuscules (les caractères entrés par l’utilisateur doivent être forcément un caractère alphabétique et en minuscule).
34
Exemple de synthèse. Objectif
Entrés par l’utilisateur Fin_Sequence Séquence de caractères Algorithme Majuscule
35
Exemple de synthèse. Début d’analyse
Bloc Principal (B1): Transformer en majuscule { Objectif: Transformer une séquence de caractères en majuscule } { Méthode: Saisie d’un caractère et affichage de sa forme majuscule } { Besoins: Caractères entrés par l’utilisateur, Fin_Sequence } { Connu: Fin_Sequence = ‘.’ } { Entrée: Aucune } { Sortie: Aucune } { Résultats: Imprimer la version majuscule des caractères entrés } { Hypothèse: Les caractères doivent être alpha. et en minuscules } DEBUT … FIN
36
Exemple de synthèse. Analyse
Identifier les tâches (diviser le problème en sous-problèmes) Tâches principales: Transformer en majuscule (Bloc B1) 1: Tant que l’utilisateur entre un caractère différent de ‘.’, faire la phase 2: 2-1: Transformer le caractère entré en majuscule (Bloc B2). 2-2: Afficher ce caractère en majuscule. Les tâches 1 et 2-2 correspondent à des primitives (incluant une structure de contrôle). Seul la tâche 2-1 correspond à une tâche à préciser => Bloc B2
37
Exemple de synthèse. Analyse
Bloc Principal (B1) Bloc B2
38
Exemple de synthèse. Échange d’information
Bloc Principal (B1) caractère caractère en maj. Bloc B2
39
Exemple de synthèse. Conception
Bloc Principal (B1): Transformer en majuscule Commentaires de spécification DEBUT DEMANDER c { On demande un premier caractère } { A: c est alpha. et en minuscule } TANT QUE ( c Fin_Sequence ) Transformer le caractère en majuscule ( Bloc B2 ) { A: cMaj contient la version majuscule de c } AFFICHER cMaj DEMANDER c { On demande le caractère suivant } { A: c est alphanumérique et en minuscule } FIN { A: les caractères ont correctement été transformés et affichés }
40
Exemple de synthèse. Bloc B2
Entrée Caractère Bloc B2 Caractère en majuscule
41
Exemple de synthèse. Début d’analyse
Bloc B2: Minuscule en majuscule { Objectif: Transformer un car. en majuscule } { Méthode: Utilisation des propriétés de la table ASCII } { Besoins: caractère } { Connu: Aucune } { Entrée: caractère } { Sortie: caractère en majuscule } { Résultats: Aucun } { Hypothèse: Le caractère est alpha. et en minuscule } DEBUT … FIN
42
Exemple de synthèse. Conception
Bloc B2: Minuscule en en majuscule Commentaires de spécification (voir acétate précédente) DEBUT { A: caractère est alpha. et en minuscule } caractère <- caractère – ‘a’ + ‘A’ { A: le caractère est en majuscule } FIN
43
Exemple de synthèse. Traduction en langage C
À chaque structure de contrôle, on va en associer une structure de contrôle en C. À chaque primitive, on va associer une ou plusieurs primitives en C. De plus, on aura droit à beaucoup plus de primitives => moins de travail!
44
Un avant goût du langage C
Algorithmique C DEBUT … FIN { … } DEMANDER var getchar getch scanf … AFFICHER msg printf putchar … var <- exp var = exp; TANT QUE cond BLOC while cond BLOC
45
La traduction de l’algorithme en langage C
Bloc Principal (B1) DEBUT DEMANDER c TANT QUE ( c Fin_Sequence ) Transformer le caractère en majuscule ( Bloc B2) AFFICHER cMaj FIN int main() { printf ("Bienvenue!\n"); c = getchar(); while ( c != Fin_Sequence ) cMaj = toMaj( c ); printf("%c", cMaj ); } printf("\nTerminer!\n" ); return 0; char c, cMaj; Bloc B2 DEBUT car <- car – ‘a’ + ‘A’ FIN char toMaj( char c ) { car = c - 'a' + 'A'; return car; } char car;
46
Extension de l’algorithme précédent
Étant donnée une séquence de caractères quelconques entrée par l’utilisateur et se terminant par un point, concevoir un algorithme qui affiche tous les caractères minuscules faisant partie de la séquence en majuscule (les caractères entrés par l’utilisateur autres que les caractères minuscules doivent être affichés tel quel). À vous de jouer!
47
Techniques de conception d'algorithmes (1)
Algorithmes voraces (ou gloutons) Méthode simple pour des problèmes d'optimisation après avoir effectué une série de choix. Pour chaque point de décision, le choix qui est effectué est celui qui semble le meilleur à cet instant. Cette stratégie heuristique ne produit pas toujours une solution optimale, mais y parvient parfois. On veut obtenir la somme de 2.65 $ avec un nombre minimum de pièces de 1$, 25c, 10c et 5c On prend 2 pièces de 1$, 2 pièces de 25c, 1 pièce de 10c et 1 pièce de 5c Exemples d'applications: Chemin le plus court dans un graphe Méthodes de compression de données Programmation des jeux vidéo
48
Techniques de conception d'algorithmes (2)
Algorithmes diviser-pour-régner On divise le problème en plusieurs sous problèmes et on combine les solutions pour obtenir la solution au problème initial. Exemples d'applications: Méthodes de tri: tri par fusion et le Quicksort
49
Techniques de conception d'algorithmes (3)
Programmation dynamique Utilisé lorsqu'une solution type diviser pour régner est inefficace. Exemples d'applications: Calcul des nombres de Fibonacci Triangle de Pascal
50
Techniques de conception d'algorithmes (4)
Algorithmes probabilistes L'algorithme a accès à un générateur de nombres aléatoires. Exemples d'applications: Problèmes d'approximation
51
Techniques de conception d'algorithmes (5)
Autres… L’approche descendante. Le retour arrière (backtraking) Algorithmes génétiques
52
Algorithme, programme et ordinateur
Exercices Algorithme Problème Transcription Description formelle Programme Langage de programmation Compilation Exécution Ordinateur Solution Langage machine
53
Un algorithme naïf Premier algorithme non trivial connu (295 avant J.C.): Algorithme d'Euclide pour calculer le plus grand commun diviseur de deux nombres entiers. Algorithme PGCD(m,n) i min(n,m)+1 répéter i i-1 Tant que i ne divise pas m et n Afficher i
54
Exercice. Algorithme d'Euclide
Si n et m sont deux entiers > 0 avec par exemple n>=m, si r est le reste de la division de n par m, alors le PGCD de n et m vaut le PGCD de m et r. t m n 15 21 6 3 6 3 0 3 Le PGCD est le dernier reste non nul. Écrivez l’algorithme en pseudocode.
55
Algorithme. Miroir d’un nombre entier
56
Exercice. Les nombres parfaits
Écrire un algorithme qui affiche la suite de tous les nombres parfaits inférieurs ou égaux à un nombre, entier positif donné noté n. Un nombre est dit parfait s’il est égal à la somme de ses diviseurs stricts. Exemple : 28 est un nombre parfait car 28 = Voici la liste des nombres parfaits inférieurs à : 6, 28, 496, 8128.
57
Exercice. Rosalie dans le labyrinthe
Sortie Entrée Faire un pas devant elle. Tourner d'un quart de tour à gauche ou à droite. Détecter un mur placé devant elle. Détecter l'entrée du labyrinthe. Détecter la sortie du labyrinthe. Les primitives
58
Exercice. Le nombre d’or
Si l'on considère deux suites numériques (U) et (V) telles que: U1=U2=1 Un = Un-1 +Un-2, pour tout n, un entier > 2 Et V= Un/Un-1 On montre que, si n est suffisamment grand, V tend vers une limite appelée nombre d'or (1, ). Écrivez un algorithme qui calcule et affiche une approximation du nombre d'or tel que décrit précédemment. Vous devez réfléchir à la condition d’arrêt dans l’approximation du calcul de V.
59
Exercice. Propriété de nombres particuliers
Il a été démontré que tout cube est égal à la somme de nombres impairs consécutifs. Par exemple : 1 = 1 8 = = = Décrivez un algorithme qui lit un entier n strictement positif et donne une décomposition de n3.
60
Exercice. Trace d’un algorithme
Algorithme: un traitement de texte! début Demander CP {A: CP est un caractère} Afficher CP TANT QUE CP ‘!’ Demander CL {A: CL est un caractère} SI CL = CP ALORS Afficher le caractère de soulignement '_ ' fin Afficher CL CP CL Qu’affiche cet algorithme si les données lues sont: " Etes vous efficace? ... Bonne chance!! " (Les guillemets ne font pas partie des données)
61
Exercice…suite Proposez une décomposition fonctionnelle de l’algorithme précédent. Complétez chaque bloc par: les assertions aux endroits requis; les 8 commentaires de spécification internes.
62
Bloc B1: un traitement bien spécial
début Demander CP Afficher CP TANT QUE CP ‘!’ faire le traitement (voir détails Bloc B2) fin Bloc B2: le traitement début Demander CL SI CL = CP ALORS début Afficher le caractère de soulignement '_ ’ fin Afficher CL CP CL
63
J’ai besoin de quoi? Bloc B1: un traitement bien spécial début
Demander CP Afficher CP TANT QUE CP ‘!’ faire le traitement (voir détails Bloc B2) fin J’ai besoin de quoi? Bloc B2: le traitement début Demander CL SI CL = CP ALORS début Afficher le caractère de soulignement '_ ’ fin Afficher CL CP CL
64
Bloc B1: un traitement bien spécial
début Demander CP Afficher CP TANT QUE CP ‘!’ faire le traitement (voir détails Bloc B2) fin On quitte B1 Bloc B2: le traitement début Demander CL SI CL = CP ALORS début Afficher le caractère de soulignement '_ ’ fin Afficher CL CP CL
65
J ’ai besoin de quoi? Bloc B1: un traitement bien spécial début
Demander CP Afficher CP TANT QUE CP ‘!’ faire le traitement (voir détails Bloc B2) fin On a quitté... Bloc B2: le traitement début Demander CL SI CL = CP ALORS début Afficher le caractère de soulignement '_ ’ fin Afficher CL CP CL J ’ai besoin de quoi?
66
CP et CL! Bloc B1: un traitement bien spécial début Demander CP
Afficher CP TANT QUE CP ‘!’ faire le traitement (voir détails Bloc B2) fin On a quitté... Bloc B2: le traitement début Demander CL SI CL = CP ALORS début Afficher le caractère de soulignement '_ ’ fin Afficher CL CP CL CP et CL!
67
CP et CL! Bloc B1: un traitement bien spécial début Demander CP
Afficher CP TANT QUE CP ‘!’ faire le traitement (voir détails Bloc B2) fin Flux de données entre B1 et B2 Bloc B2: le traitement début Demander CL SI CL = CP ALORS début Afficher le caractère de soulignement '_ ’ fin Afficher CL CP CL CP et CL!
68
CP CP CP…CL Bloc B1: un traitement bien spécial début Demander CP
Afficher CP TANT QUE CP ‘!’ faire le traitement (voir détails Bloc B2) fin CP Une entrée Bloc B2: le traitement début Demander CL SI CL = CP ALORS début Afficher le caractère de soulignement '_ ’ fin Afficher CL CP CL CP CP…CL Une sortie
69
Le point d ’appel Bloc B1: un traitement bien spécial début
Demander CP Afficher CP TANT QUE CP ‘!’ faire le traitement (voir détails Bloc B2) fin Le point d ’appel Bloc B2: le traitement début Demander CL SI CL = CP ALORS début Afficher le caractère de soulignement '_ ’ fin Afficher CL CP CL On revient au point d’appel
70
Paramètres formels de B2
Bloc B1: un traitement bien spécial début Demander CP Afficher CP TANT QUE CP ‘!’ faire le traitement (voir détails Bloc B2) fin Paramètre formel deB1 mais effectif pour B2 Bloc B2: le traitement début Demander CL SI CL = X ALORS début Afficher '_ ’ fin Afficher CL X CL Paramètres formels de B2
71
Bloc B1: un traitement bien spécial
{Objectif: intercaler le caractère de soulignement entre chaque suite de 2 caractères identiques dans une phrase fournie par l'usager Méthode: lecture séquentielle d'une suite de caractères, test sur 2 caractères successives Besoin: la phrase à traiter Entrée: - Connu: - Sortie: - Résultat: ré-affichage de la phrase avec éventuellement le caractère '_' séparant deux caractères successifs identiques. Hypothèse: la phrase se termine par le caractère ‘!’ }
72
Bloc B2: le traitement {Objectif: ajout du caractère de soulignement entre 2 caractères successifs identiques Méthode: comparaison de 2 caractères successifs Besoin: CP : le caractère précédent, CL: le caractère suivant Entrée: CP Connu: - Sortie: le caractère suivant Résultat: affichage éventuel du caractère '_', CL Hypothèse: CP et CL sont deux caractères }
73
Exercice Question Est ce que c’est le même espace mémoire qui est associé à CP dans B1 et B2? En d’autres termes, est ce que c’est la même variable? Attention, ne confondez pas valeur assignée à une variable et variable (l’abstraction d’une cellule mémoire).
74
Algorithme d'Euclide (version moderne)
Si n et m sont deux entiers positifs avec par exemple n>=m, si r est le reste de n par m, alors le PGCD de n et m vaut le PGCD de m et r. Demander m, n {A:……………..} Tant que m>0 début t m m n % m n t fin Afficher n t m n 15 21 6 3 6 3 0 3 Le PGCD est le dernier reste non nul.
75
Version #1 Algorithme nombres parfaits début Demander n
{A : n est un entier > 1} Répéter i [2, n] somme 1 Répéter j [2, i[ Si(i%j=0) Alors somme somme+j fin Si (somme = i) Alors Afficher i
76
Version #2 Algorithme nombres parfaits début Demander n
{A : n est un entier > 1} Répéter i [2, n] somme 1 borne i j 2 Tant que j < borne Si(i%j=0) Alors somme somme+j borne i j somme somme+borne fin j j + 1 Si (somme = i) Alors Afficher i Version #2 28 =
77
Une solution pour Rosalie!
Algorithme: Sortir du labyrinthe en longeant le mur de gauche Début Avancer d'un pas Faire un quart de tour à gauche Tant que Rosalie n'est pas sorti Tant que mur en face Faire un quart de tour à droite Fin Fin.
78
Rosalie dans le labyrinthe
Algorithme: Sortir du labyrinthe en longeant le mur de gauche Début {A: Rosalie est en face de la porte d'entrée du labyrinthe } Avancer d'un pas Faire un quart de tour à gauche Tant que Rosalie n'est pas sortie Tant que mur en face Faire un quart de tour à droite Fin {A: Rosalie est sortie du labyrinthe} Fin. Est ce utile de placer plus d’assertions?
79
La solution avec des assertions
Algorithme: Sortir du labyrinthe en longeant le mur de gauche Début {A: Rosalie est en face de la porte d'entrée du labyrinthe } Avancer d'un pas {A: Rosalie a le dos face de la porte d’entrée barrée} Faire un quart de tour à gauche {A: le mur à longer est à gauche} Tant que Rosalie n'est pas sorti Tant que mur en face Faire un quart de tour à droite Fin {A: il n'y a pas de mur en face} {A: Rosalie est dans la bonne direction} {A: Rosalie est sortie du labyrinthe} Fin. Quel est l’avantage?
80
Rosalie dans le labyrinthe
Algorithme: Sortir du labyrinthe en longeant le mur de gauche Début {A: Rosalie est en face de la porte d'entrée du labyrinthe } {A: Rosalie a le dos face de la porte d’entrée barrée} {A: le mur à longer est à gauche} Tant que Rosalie n'est pas sortie Tant que mur en face Fin {A: il n'y a pas de mur en face} {A: Rosalie est dans la bonne direction} {A: Rosalie est sortie du labyrinthe} Fin.
81
Rosalie dans le labyrinthe
Le problème de Rosalie revu avec la décomposition fonctionnelle
82
Bloc B1: Sortir du labyrinthe en longeant le mur de gauche
{ objectif: faire sortir le Rosalie du labyrinthe méthode: en longeant le mur de gauche besoin: - connu: - entrée: sortie: - résultat: Rosalie est sortie du labyrinthe hypothèses : Rosalie est en face de la porte d'entrée} Début {A: Rosalie est en face de la porte d'entrée du labyrinthe } avancer d'un pas {A: Rosalie a le dos face de la porte d’entrée barrée} Repérer le mur de gauche (voir bloc B2) {A: le mur à longer est à gauche} Longer le mur de gauche jusqu'à la sortie (voir bloc B3) {A: Rosalie est sortie du labyrinthe} Fin.
83
Bloc B2: Repérer le mur de gauche
{ objectif: repérer le mur de gauche méthode: pivoter une fois vers la gauche besoin: connu: - entrée: sortie: - résultat: Rosalie a fait un quart de tour à gauche hypothèses : - } Début Faire un quart de tour à gauche {A: le mur à longer est à gauche} Fin
84
Bloc B3: Longer le mur de gauche jusqu'à la sortie
{ objectif: longer le mur de gauche jusqu'à la sortie méthode: avancer d'un pas et longer le mur de gauche besoin: connu: - entrée: sortie: - résultat: Rosalie est sortie du labyrinthe par la porte de sortie hypothèses : - } Début Tant que Rosalie n'est pas sortie avancer d'un pas en longeant le mur de gauche (voir bloc B4) {A: Rosalie avance d'un pas en longeant le mur de gauche} Fin {A: Rosalie est sorti du labyrinthe }
85
Bloc B4: Avancer d'un pas en longeant le mur de gauche
{ objectif: avancer d'un pas en longeant le mur de gauche méthode: se mettre dans la bonne direction et avancer d'un pas besoin: connu: - entrée: sortie: - résultat: Rosalie avance d'un pas en longeant le mur de gauche hypothèses : -} Début se mettre dans la bonne direction (voir bloc B5) {A: Rosalie est dans la bonne direction} avancer d'un pas {A: Rosalie avance d'un pas en longeant le mur de gauche} Fin
86
Bloc B5: Se mettre dans la bonne direction
{ objectif: se mettre dans la bonne direction méthode: faire des quarts de tour besoin: connu: - entrée: sortie: - résultat: Rosalie est dans la bonne direction hypothèses : -} Début faire un quart de tour à gauche Tant que mur en face faire un quart de tour à droite Fin {A: il n'y a pas de mur en face} {A: Rosalie est dans la bonne direction}
87
Solution. Propriété de nombres particuliers
On peut chercher à décomposer un cube à partir de 1 : S = ( (2p-1) + (2p+1)) en incrémentant p jusqu'à ce que S ≥ n3. En cas de dépassement (S > n3), il faut alors éliminer les nombres impairs les plus faibles à gauche : S = ((2q-1) + (2q+1) (2p-1) + (2p+1)) jusqu'à ce que S = n3 (en incrémentant successivement q et p on finit par atteindre n3 exactement).
88
Solution. Propriété de nombres particuliers
Algorithme: développement d’un cube en une série de nombres impairs consécutifs. Début Demander n {A: n est un nombre entier > 0} cube n*n*n s 0 p 1 q 1 Tant que (s cube) début si (s>cube) alors s s - (2*q-1) q q + 1 fin si ( s<cube) alors s s + (2*p -1) p p + 1 premier 2*q -1 {le premier terme de la série} dernier 2* (p-1) -1 {le dernier terme} Afficher cube " = " k premier Tant que (k < dernier) début Afficher k " + " k k+2 fin Afficher dernier {A: n3 est développé en une série de nombres impairs consécutifs}
89
Solution. Le nombre d’or
Algorithme: Calcul du nombre d’or Début Demander précision {A : précision est un nombre réel compris entre 0 et 1 exclusivement {précision est l’écart minimum qui sera toléré entre 2 calculs successifs pour arrêter les itérations. Par exemple : u11 u21 Répéter u3 u2+u1 v1 u2/u1 {v1 est une approximation du nombre d’or v2 u3/u2 {v2 est l’approximation suivante u1 u2 u2 u3 diff v2-v1 {on détermine l’écart entre 2 calculs successifs Si ( diff < 0) Alors {simulation de la valeur absolue début diff -diff fin Tant Que ( diff > précision) {on répète tant qu’on a pas atteint la précision souhaitée Afficher v2 {A : v2 contient une approximation du nombre d’or Fin
90
Algorithme. Miroir d’un nombre entier
Début Demander n {A: n est un entier ≥ 0} a0 Tant que (n 0) début a a*10 + n%10 n n÷10 fin Afficher a {A: a contient la valeur miroir de n} Fin
91
x * x ³ 0 ET ( x + 1 ) * ( x + 1 ) < 16 2 3 4 9 V V
L’unité arithmétique et logique Un exemple d’évaluation d’expression: x * x ³ 0 ET ( x + 1 ) * ( x + 1 ) < 16 2 9 4 V 3 V
92
x x 0 x 1 x 1 16 2 * ³ < + L’unité arithmétique et logique
Un exemple d’évaluation d’expression: x x x x 2 * < + ET
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.