La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Programme de baccalauréat en informatique Algorithmique et programmation IFT-17582 Abder Alikacem Abder Alikacem Semaine 3 Bâtir un algorithme Département.

Présentations similaires


Présentation au sujet: "Programme de baccalauréat en informatique Algorithmique et programmation IFT-17582 Abder Alikacem Abder Alikacem Semaine 3 Bâtir un algorithme Département."— Transcription de la présentation:

1 Programme de baccalauréat en informatique Algorithmique et programmation IFT Abder Alikacem Abder Alikacem Semaine 3 Bâtir un algorithme Département dinformatique et de génie logiciel

2 Plan Retour sur les outils algorithmiques Conception des algorithmes La documentation dans les algorithmes Les types de données Lecture: chapitre 3 des notes de cours

3 Étapes de la construction dun programme Analyse et définition des besoins Spécification du programme Conception Programmation Tests et validation Maintenance Documentation du programme Algorithme Programme Ordinateur Description formelle Solution Problème Programmation impérative Définition Propriétés Le paradigme Variable Constante Notion détat

4 Répéter début DEMANDER n fin Tant Que (???) DEMANDER n {A: n est un entier compris entre 0 et 10} DEMANDER n {A: n vaut 1 ou 2} Répéter début DEMANDER n fin Tant Que (????) Retour sur les assertions (1) La validation de données

5 SI condition est vrai alors DÉBUT Instructions v FIN SINON DÉBUT Instruction f FIN Début Si n = 0 Alors Début fact 1 Fin Sinon Début Si n = 1 Alors Début fact 1 Fin Sinon Début fact 1 Répéter i [2, n] Début fact fact * i Fin Retour sur les structures dalternatives

6 Cas V de v1 : b1 v2 : b2. vn : bn Autrement c FinCas Début Cas n de 0 : Début fact 1 Fin 1 : Début fact 1 Fin Autrement : Début fact 1 Répéter i [2, n] Début fact fact * i Fin FinCas Fin Structures dalternatives

7 Répéter i [1, n] début Bloc fin i 1 Tant Que i <= n début Bloc i i + 1 fin i 1 Répéter n fois début Bloc i i + 1 fin i 1 Répéter début Bloc i i + 1 fin Tant Que i <= n Structures de répétitions

8 Algorithme : Calculer n! pour un entier n 0 début { Assertion : n est un entier 0 } i 0 fact 1 Tant que i < n début i i + 1 fact fact * i fin Il est impératif que dans tout schéma de répétition conditionnelle la valeur de la condition puisse changer, sinon nous serions dans une boucle sans fin (boucle infinie); On doit faire précéder la structure de contrôle de la boucle Tant Que par des instructions de démarrage (initialisation). Pour sassurer quun algorithme structuré se termine il est suffisant de vérifier que chaque boucle se termine. Une première condition nécessaire est quau moins une des variables de la condition c soit modifiée dans la portée de la boucle. Remarque

9 Technique de la sentinelle Début total 0 n 0 Demander note { A:.. } Tant Que note -1 Début total total + note n n + 1 Demander note {A:.. } Fin moyenne total / n Afficher moyenne Fin Dans le cas du mode conversationnel, la fin dune suite dinformations saisie à l aide dun processus itératif est indiquée au moyen de la technique de la sentinelle.

10 Idée de base Abstraire Décomposer Combiner Structuration des actions Séquentielle Conditionnelle Itérative Tout ce quon peut faire sur ordinateur peut être exprimé au moyen de laffectation, dalternatives et des répétitions. Conception dalgorithmes Problème Algorithme Instance d'un problème = Ensemble de données pour calculer une solution dun problème. Ensemble de résultats

11 Les commentaires dans les algorithmes Vous aurez à considérer 4 types de commentaires –Les commentaires généraux. –Identifier les grandes étapes de lalgorithme –Expliquer certaines séquences dopérations qui peuvent sembler plus ou moins claires à première vue - Les assertions. - Les commentaires de spécification formelle; - Les commentaires de spécification dun bloc;

12 Début Demander n { Assertion : n est un entier 0 } Si n = 1 ou n = 0 alors Début fact 1 Fin Sinon Début fact 1 Répéter i [1, n] : Début fact fact * i Fin { Assertion : n est un entier 0 inchangé et fact contient n!} Fin Si Alors Les assertions (2) Les post-conditions Les pré-conditions

13 Elle consiste à considérer un problème dans son ensemble, préciser les données nécessaires et les résultats attendus décomposer le problème en plusieurs sous-problèmes plus simples qui seront traités séparément et éventuellement décomposés eux-mêmes de manière encore plus fine ( raffinement) Lapproche descendante

14 Exemple p.32 dans les notes de cours Imaginons un robot domestique à qui nous devons fournir un algorithme lui permettant de préparer une tasse de café soluble. Une première version de l'algorithme pourrait être: (1) faire bouillir de l'eau (2) mettre le café dans la tasse (3) ajouter l'eau dans la tasse Lapproche descendante

15 (1) faire bouillir l'eau peut être affinée en (1.1) remplir la bouilloire d'eau (1.2) brancher la bouilloire sur le secteur (1.3) attendre l'ébullition (1.4) débrancher la bouilloire (2) mettre le café dans la tasse pourrait être affiné en (2.1) ouvrir le pot à café (2.2) prendre une cuillère à café (2.3) plonger la cuillère dans le pot (2.4) verser le contenu de la cuillère dans la tasse (2.5) fermer le pot à café Lapproche descendante

16 (3) ajouter de l'eau dans la tasse pourrait être raffinée en (3.1) verser de l'eau dans la tasse jusqu'à ce que celle-ci soit pleine Certaines étapes sont encore trop complexes pour notre robot, il faut les raffiner davantage. (1.1) remplir la bouilloire d'eau peut être raffiné comme suit: (1.1.1) mettre la bouilloire sous le robinet (1.1.2) ouvrir le robinet (1.1.3) attendre que la bouilloire soit pleine (1.1.4) fermer le robinet Lapproche descendante

17 Quand doit-on arrêter le raffinement? Chaque décomposition sera encapsulée dans un bloc d instructions (bloc algorithmique). La décomposition fonctionnelle permet de rapides construction de programmes (travail déquipe), la possibilité de leur réutilisation, une rapide et efficace maintenance. Blocs algorithmiques Utilisés afin de découper un algorithme en plusieurs sous-tâches. Cette façon de procéder sinscrit très bien dans lapproche descendante et la décomposition fonctionnelle. Chaque tâche à accomplir est alors détaillée au sein dun bloc algorithmique. Lapproche descendante

18 Un algorithme qui ajoute une journée à une date donnée. Exemple (2)

19 DEBUT DEMANDER j,m,a {A: a représente une année dans le calendrier grégorien, m un mois dans lannée et j un jour du mois} max 30 SI m=1 OU m=3 OU m=5 OU m=7 OU m=8 OU m=10 OU m=12 ALORS début max 31 fin SI m=2 ALORS début max 28 SI (a % 4 = 0) ET NON (a % 100 =0) ALORS début max 29 fin SI (a % 400=0) ALORS début max 29 fin j j+1 SI j>max ALORSdébut j 1 m m+1 SI m>12 ALORS début m 1 a a+1 fin AFFICHER j,m,a {A: j, m et a représentent la date du lendemain} FIN

20 On peut ré-écrire lalgorithme lendemain de la façon suivante: Bloc B1 – la date du lendemain DEBUT Déterminer une date (Bloc B2) Déterminer le dernier jour du mois m (Bloc B3) Déterminer la date du jour suivant (Bloc B4) AFFICHER « La journée suivante est: », j, m, a {A:….} FIN Les blocs algorithmiques

21 Bloc B2 – Déterminer une date DEBUT DEMANDER j, m, a {A: j est un entier compris entre 1 et 31} {A: m est un entier compris entre 1 et 12} {A: a est un entier représentant une année dans le calendrier} {A:…} FIN Les blocs algorithmiques

22 Bloc B3 – Déterminer le dernier jour du mois DEBUT max 30; SI m=1 OU m=3 OU m=5 OU m=7 OU m=8 OU m=10 OU m=12 ALORS DEBUT max 31; FIN SI m=2 ALORS début max 28; SI a est une année bissextile (voir B5) ALORSdébut max 29; fin {A:…} FIN Les blocs algorithmiques

23 Bloc B4 – Déterminer la date du jour suivant DÉBUT j j+1; SI j > max ALORS début j 1; m m+1; SI m>12 ALORS début m 1; a a+1; fin {A:…} FIN Les blocs algorithmiques

24 Bloc B5 Vérification si une année donnée est une année bissextile DEBUT bis FAUX SI (a % 4 = 0) ET NON (a % 100 = 0) ALORS début bis VRAI; fin SI (a % 400=0) ALORS début bis VRAI; fin {A:…} FIN Les blocs algorithmiques

25 Les commentaires de spécification dans les algorithmes Vous aurez à considérer 4 types de commentaires des commentaires explicatifs; des commentaires du type assertions; les commentaires de spécification formelle dun bloc; les commentaires de spécification internes à un bloc;

26 Les (4) commentaires de spécification formelle nous aideront à spécifier linterface de chaque bloc issu dune décomposition. Les (8) commentaires internes à un bloc nous aideront à construire les instructions du bloc tout en assurant sa rapide maintenance. Les commentaires de spécification

27 Les commentaires dinterface dun bloc Len-tête :du bloc d instruction implantant une tâche Pré-conditions :conditions devant être vraies au départ pour assurer le bon fonctionnement du bloc d instructions Post-conditions :conditions étant vraies (observables) après exécution (correcte, i.e. les pré-conditions sont respectées) des instructions du bloc. Sinon, indiquer la ou les actions à entreprendre dans l exécution du bloc. Valeur(s) retournée(s) : en output de l exécution des instructions du bloc si les pré- conditions sont respectées, sinon indiquer ce que fournira le bloc.

28 Les commentaires de spécification internes Les commentaires de spécification servent à spécifier un bloc dun algorithme: Ce quil fait La façon dont il procède pour atteindre son but Les données nécessaires Les résultats quil fournit Ces commentaires sont internes aux blocs. Ils aideront au développement rapide des blocs, ainsi quà leur validation de façon plus efficace.

29 Définitions Objectifs: ce commentaire sert à décrire le but visé par le bloc. Méthode: la façon dont on procède pour atteindre le but décrit au commentaire précédent Besoins: toutes les données dont le bloc aura besoin pour atteindre son but. Connus: les données que lon connaît davance, que lon naura pas besoin de demander au bloc appelant ni à lusager. Les (8) commentaires de spécification dun bloc

30 Entrées: les données qui parviennent du bloc appelant. Sorties: les données que le bloc renvoie au bloc appelant Résultats: toute conséquence du bloc qui nest pas visible par les autres blocs, exemple: les affichages. Hypothèses: Les conditions nécessaires au bon fonctionnement du bloc. Ces hypothèses concernent: les données en entrée du bloc; les données lues (saisies) dans le bloc. Les (8) commentaires de spécification dun bloc

31 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 } ….. Les assertions (3) Validation des hypothèses

32 Bloc B3.. { les 8 commentaires de spécification internes } début {début du bloc} … {A: post-condition de B3} fin {fin du bloc} Bloc B1… { les 8 commentaires de spécification internes } 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} fin {fin du bloc } Les assertions (4) Les post-conditions

33 Bloc B1: Calculer la somme de deux entiers positifs { Objectif: Calculer et afficher la somme de deux entiers positifs Méthode: usage de lopérateur daddition Besoin: a et b : les deux entiers Connu:- Entrée:- Sortie:- Résultat: la somme des deux entiers Hypothèses : a et b > 0 } Début Saisie des données ( Voir Bloc B 2 ) {A : a et b sont deux entiers positifs} Calcul de la somme de a et b ( Voir Bloc B3 ) {A : somme contient la somme des deux entiers} Affichage de la somme (Voir bloc B4 ) {A : La somme est affichée à lusager} {A : La somme de deux entiers positifs est calculée} fin. Exemple 3 (très simple)

34 Bloc B2: Saisie des données { Objectif : Saisie de données Méthode : Sollicitation de lusager Besoin: entier1 et entier2 : deux entiers Connu:- Entrée:- Sortie:entier1, entier2 Résultat: - Hypothèses : entier1 et entier2 sont deux entiers positifs } Début Demander entier1, entier2 {A : entier1 et entier2 sont deux entiers positifs} {A : La saisie de données est effectuée} Fin.

35 Bloc B3: Calculer la somme de deux nombres { Objectif: Calculer la somme de deux nombres Méthode: usage de lopérateur daddition Besoin: x et y : les deux nombres Connu:- Entrée:x, y Sortie:la somme de x et y Résultat: - hypothèses : x et y sont deux nombres} Début {A : x et y sont deux nombres} z x + y {A : z contient la somme de x et y} Fin.

36 Bloc B4: Affichage dun nombre entier { Objectif: afficher un nombre entier Méthode: sollicitation du périphérique de sortie Besoin: w : le nombre Connu:- Entrée:w Sortie:- Résultat: affichage de w Hypothèses : w est un nombre entier} Début {A : w est un nombre entier} Afficher w {A : un nombre entier est affiché} Fin.

37 Exemple 4 Écrire un algorithme qui calcule une approximation de e x, le nombre népérien. Les données en entrée ? Les données en sortie ?

38 Lalgorithme ? Exemple 4

39 Le critère darrêt ? Exemple 4

40 Le critère darrêt ? Fixer un n. Exemple 4

41 Bloc B1 : Bloc B1 : Calculer et afficher e x Objectif : Objectif :Calculer e x Méthode : Méthode :Approximation par le développement en série Besoins : Besoins : x : Lexposant N : Le nombre ditérations Connu : Connu : N (entier > 0) Entrée : Entrée : Aucune Sortie : Sortie : Aucune Résultat : Résultat : Afficher lapproximation de e x Hypothèse : Hypothèse : x est un réel.

42 Bloc B1 : Bloc B1 : Calculer et afficher e x DÉBUT DEMANDER x {A : x est un nombre réel} Approximer e x {voir le bloc B2} {A : résultat contient lapproximation de e x } AFFICHER résultat {A : Le résultat est affiché à lutilisateur} FIN

43 Bloc B2 : Bloc B2 : Calculer e x Objectif : Objectif :Calculer e x Méthode : Méthode :Approximation par le développement en série Besoins : Besoins : x : lexposant N : Le nombre ditération Connu : Connu : N (entier > 0) Entrée : Entrée : x Sortie : Sortie : Lapproximation de e x Résultat : Résultat : Aucun Hypothèse : Hypothèse : x est un réel.

44 Bloc B2 : Bloc B2 : Calculer e x DÉBUT {A : x est un réel} résultat 1 Si x 0 Alors début i 1 TANT QUE i < N DÉBUT 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 lapproximation de e x } FIN

45 Bloc B3 : Bloc B3 : Calculer la factoriel de n Objectif : Objectif :Calculer la factoriel de n Méthode : Méthode :1 * 2 * 3 * … * (n-1) * n Besoins : Besoins : n : un entier. Connu : Connu : Aucun Entrée : Entrée : n Sortie : Sortie : La factorielle de n Résultat : Résultat : Aucun Hypothèse : Hypothèse : n est un entier positif ou nul

46 Bloc B3 : Bloc B3 : Calculer la factoriel de n DÉBUT {A : n est un entier positif ou nul} x 1 k 1 {Si n = 0, x vaut 1 et on nentre pas dans la boucle} TANT QUE k < n DÉBUT x x * k k k + 1 FIN {A : x contient n! } FIN

47 Bloc B4 : Bloc B4 : Calculer x exposant i Objectif : Objectif :Calculer x à la i Méthode : Méthode :multiplier x par lui-même i fois Besoins : Besoins : i : lexposant x : un réel Connu : Connu : Aucun Entrée : Entrée : i, x Sortie : Sortie : x exposant i Résultat : Résultat : Aucun Hypothèse : Hypothèse : i est un entier positif ou nul

48 Bloc B4 : Bloc B4 : Calculer x exposant i DÉBUT {A : i est un entier positif ou nul} y 1 RÉPÉTER i FOIS DÉBUT y y * x FIN {A : y contient x i } FIN

49 Exemple 4 Le critère darrêt ? Fixer un n.

50 Le critère darrêt ? Un degré de précision P. Exemple 4

51 Bloc B2 : Bloc B2 : Calculer e x Objectif : Objectif :Calculer e x Méthode : Méthode :Approximation par le développement en série Besoins : Besoins : x : lexposant P : La précision Connu : Connu : P(réel > 0) Entrée : Entrée : x Sortie : Sortie : Lapproximation de e x Résultat : Résultat : Aucun Hypothèse : Hypothèse : x est un réel. PRISE II

52 Bloc B2 : Bloc B2 : Calculer e x DÉBUT {A : x est un réel} résultat 1 {(x 0 /0!) = 1} SI x 0 ALORS DEBUT résultat2 1 résultat 1 + x {resultat + (x 1 /1!) =1+x} i 2 TANT QUE résultat – résultat2 > P DÉBUT 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 lapproximation de e x avec une précision égale à P} FIN PRISE II

53 Réutilisation Conception dun bloc algorithmique Bx Primitives

54 Bx Conception dun autre bloc algorithmique (B n ) Primitives Réutilisation

55 Passage de paramètres Algorithme Bloc B3 n! n i Bloc B2 DEBUT … … B3( i ) … FIN Paramètre effectif Paramètre formel

56 Les types de données Les types prédéfinis Les types composites Notion de tableau Algorithmique des tableaux Lecture: RepresentationDeDonnées.htm, semainier/Semaine3

57 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.. Opérations Sur le composé Sur les composants du composé

58 Classification types prédéfinis définis explicitement Types prédéfinis Booléen, Caractère, Entier, Réel, Chaîne

59 Notion de tableau 1 N indices Opérations de base Accès à un élément par son indice Algorithmes classiques Recherche d'un élément Tri de tableau selon une relation d'ordre (>, <) Fusion Caractéristiques Collection indicée d'éléments de même type Taille fixe Accès aux composants Accès direct

60 Tableau à une dimension Définition t: tableau dentiers 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 1Ni

61 Tableau à deux dimensions t : tableau NxM de réels// une matrice Accès aux composants t[i][ j] 5.67 // 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 début Traiter lélément t[i][ j] fin

62 Exemple. Algorithme avec un tableau Bloc B3: 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 }

63 Début {A:nbValeurs > 0} Répéter i[1,nbValeurs-1] Début plusPetit i Répéter candidat[i+1,nbValeurs] Début si(tab[candidat] < tab[plusPetit]) alors Début plusPetit candidat Fin …….. tampon tab[i] tab[i] tab[plusPetit] tab[plusPetit] tampon Fin {A:tab est trié en ordre croissant} Fin

64 Retour au laboratoire #1 La syntaxe décrit les formes correctes que peuvent prendre les éléments (expressions) d'un programme. La sémantique correspond à la signification des formes syntaxiques (c'est à dire aux constructions) d'un langage. Syntaxe et sémantique

65 Retour au laboratoire #1 Syntaxe = lordre des éléments pour former une séquence correcte Compilateur Détecte les erreurs de syntaxe Indique approximativement le lieu Est incapable de les corriger Un programme doit être syntaxiquement correct

66 Retour au laboratoire #1 Sémantique = Quel est le sens de ce quon écrit? Erreurs sémantiques Pas vues par le compilateur Découvertes lors de lexécution du programme Il « plante » Il ne fait pas ce qui est demandé Il ne sarrête plus …

67 Laboratoire #2 Les erreurs de type sémantique dans un programme sont dues généralement à une mauvaise construction de lalgorithme correspondant (résolution du problème erronée). Un manière de contrer ce problème est de tester tout algorithme conçu (trace à la main : simulation à la main de lexécution dun algorithme) en choisissant adéquatement le jeu de données pour cette fin (il faut toujours penser aux cas limites ou dexception). Attention : rien ne prouve quun algorithme est correct sil passe correctement tous les tests que lon peut imaginer! Il existe dautres méthodes plus formelles pour démontrer lexactitude dun algorithme donné. On en reparlera sûrement.

68 Voici ce que vous êtes supposés de connaître: L'architecture de Von Neuman: les périphériques dentrée, de sortie: assurent la "conversation" avec un ordinateur via le clavier, l'écran, lecteur quelconque etc… Lunité de commande et de contrôle: le chef d'orchestre capable d'interpréter les instructions d'un programme et lancer des "ordres" aux autres composantes afin qu'elles soient exécutées. Lunité arithmétique et logique: la calculatrice. La mémoire principale (rôle important dans la programmation impérative):la partie déclarative de variables, réservation de la mémoire pour y entreposer les données utiles à lexécution de la mémoire. Cette mémoire est comme un espace de rangement avec des « tiroirs » de différentes tailles : dans la réservation, on doit indiquer le type du tiroir. Laboratoire #2

69 Laboratoire #3 Construction dalgorithmes simples Il nest pas nécessaire quils décomposent leur solution en plusieurs blocs. Si certains zélés sessayent, il faudrait que leur décomposition soit naturelle : la décomposition modulaire doit venir de la manière quils ont résolu le problème en suivant une démarche descendante, les grandes lignes de la solution, chaque grande ligne doit être raffinée dans un bloc à part, le raffinement doit se terminer lorsque chaque instruction est décrite à laide dune instructions de base.

70 Algorithme Programme Ordinateur Description formelle Transcription Compilation Langage de programmation Langage machine Exécution Solution Problème Algorithme, programme et ordinateur Exercices

71 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

72 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. Écrivez lalgorithme en pseudocode. tmn Le PGCD est le dernier reste non nul.

73 Exercice. La division entière Écrire un algorithme, Division, qui effectue la division de deux entiers positifs (notés x et y) donnés en utilisant uniquement la soustraction et laddition. Lalgorithme doit afficher le résultat de la division ainsi que le reste.

74 Algorithme. Miroir dun nombre entier

75 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 sil 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.

76 Exercice. Rosalie dans le labyrinthe Entrée Sortie 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

77 Si l'on considère deux suites numériques (U) et (V) telles que: U 1 =U 2 =1 U n = U n-1 +U n-2, pour tout n, un entier > 2 Et V= U n /U n-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 darrêt dans lapproximation du calcul de V. Exercice. Le nombre dor

78 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 n 3. Exercice. Propriété de nombres particuliers

79 Algorithme: un traitement de texte! début Demander CP {A: CP est un caractère} Afficher CP TANT QUE CP ! début Demander CL {A: CL est un caractère} SI CL = CP ALORS début Afficher le caractère de soulignement '_ ' fin Afficher CL CP CL fin Exercice. Trace dun algorithme Quaffiche cet algorithme si les données lues sont: " Etes vous efficace?... Bonne chance!! " (Les guillemets ne font pas partie des données)

80 Proposez une décomposition fonctionnelle de lalgorithme précédent. Complétez chaque bloc par: les assertions aux endroits requis; les 8 commentaires de spécification internes. Exercice…suite

81 Bloc B1: un traitement bien spécial début Demander CP Afficher CP TANT QUE CP ! début 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 fin

82 Bloc B1: un traitement bien spécial début Demander CP Afficher CP TANT QUE CP ! début 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 fin Jai besoin de quoi?

83 Bloc B1: un traitement bien spécial début Demander CP Afficher CP TANT QUE CP ! début 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 fin On quitte B1

84 Bloc B1: un traitement bien spécial début Demander CP Afficher CP TANT QUE CP ! début 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 fin On a quitté... J ai besoin de quoi?

85 Bloc B1: un traitement bien spécial début Demander CP Afficher CP TANT QUE CP ! début 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 fin On a quitté... CP et CL!

86 Bloc B1: un traitement bien spécial début Demander CP Afficher CP TANT QUE CP ! début 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 fin Flux de données entre B1 et B2 CP et CL!

87 Bloc B1: un traitement bien spécial début Demander CP Afficher CP TANT QUE CP ! début 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 fin CP CP…CL Une entrée Une sortie

88 Bloc B1: un traitement bien spécial début Demander CP Afficher CP TANT QUE CP ! début 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 fin On revient au point dappel Le point d appel

89 Bloc B1: un traitement bien spécial début Demander CP Afficher CP TANT QUE CP ! début faire le traitement (voir détails Bloc B2) fin Bloc B2: le traitement début Demander CL SI CL = X ALORS début Afficher '_ fin Afficher CL X CL fin Paramètres formels de B2 Paramètre formel deB1 mais effectif pour B2

90 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 ! }

91 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 }

92 Question Est ce que cest le même espace mémoire qui est associé à CP dans B1 et B2? En dautres termes, est ce que cest la même variable? Attention, ne confondez pas valeur assignée à une variable et variable (labstraction dune cellule mémoire). Exercice

93 Algorithme d'Euclide (version moderne) Demander m, n {A:……………..} Tant que m>0 début t m m n % m n t fin Afficher n tmn 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. Le PGCD est le dernier reste non nul.

94 Demander nombreMax nombreCourant 1 Tant que ( nombreCourant <= nombreMax ) debut sommeDiviseur 0 diviseurCourant 1 Tant que ( diviseurCourant < nombreCourant ) debut Si ( nombreCourant % diviseurCourant = 0 ) Alors début sommeDiviseur sommeDiviseur + diviseurCourant fin diviseurCourant diviseurCourant + 1 fin Si ( sommeDiviseur = nombreCourant ) Alors début Afficher nombreCourant fin nombreCourant nombreCourant + 1 fin Solution #1

95 Demander nombreMax nombreCourant 2 Tant que( nombreCourant <= nombreMax ) debut diviseurMax nombreCourant diviseurCourant 2 sommeDiviseur 1 Tant que( diviseurCourant < diviseurMax ) debut Si ( nombreCourant % diviseurCourant = 0 ) Alors début sommeDiviseur sommeDiviseur + diviseurCourant diviseurMax nombreCourant / diviseurCourant sommeDiviseur sommeDiviseur + diviseurMax fin diviseurCourant diviseurCourant + 1 fin Si ( sommeDiviseur = nombreCourant ) Alors début Afficher nombreCourant fin nombreCourant nombreCourant + 1 fin Solution #2 (?) 28 =

96 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 Début Faire un quart de tour à gauche Tant que mur en face Début Faire un quart de tour à droite Fin Avancer d'un pas Fin Fin. Une solution pour Rosalie!

97 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 Début Faire un quart de tour à gauche Tant que mur en face Début Faire un quart de tour à droite Fin Avancer d'un pas Fin {A: Rosalie est sortie du labyrinthe} Fin. Est ce utile de placer plus dassertions? Rosalie dans le labyrinthe

98 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 dentrée barrée} Faire un quart de tour à gauche {A: le mur à longer est à gauche} Tant que Rosalie n'est pas sorti Début Faire un quart de tour à gauche Tant que mur en face Début Faire un quart de tour à droite Fin {A: il n'y a pas de mur en face} {A: Rosalie est dans la bonne direction} Avancer d'un pas Fin {A: Rosalie est sortie du labyrinthe} Fin. La solution avec des assertions Quel est lavantage?

99 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 dentrée barrée} {A: le mur à longer est à gauche} Tant que Rosalie n'est pas sortie Début Tant que mur en face Début Fin {A: il n'y a pas de mur en face} {A: Rosalie est dans la bonne direction} Fin {A: Rosalie est sortie du labyrinthe} Fin. Rosalie dans le labyrinthe

100 Le problème de Rosalie revu avec la décomposition fonctionnelle Rosalie dans le labyrinthe

101 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 dentrée barrée} Repérer le mur de gauche (voir bloc B2)bloc B2 {A: le mur à longer est à gauche} Longer le mur de gauche jusqu'à la sortie (voir bloc B3)bloc B3 {A: Rosalie est sortie du labyrinthe} Fin.

102 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

103 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 Début avancer d'un pas en longeant le mur de gauche (voir bloc B4)bloc B4 {A: Rosalie avance d'un pas en longeant le mur de gauche} Fin {A: Rosalie est sorti du labyrinthe } Fin

104 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)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

105 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 Début faire un quart de tour à droite Fin {A: il n'y a pas de mur en face} {A: Rosalie est dans la bonne direction} Fin

106 On peut chercher à décomposer un cube à partir de 1 : S = ( (2p-1) + (2p+1)) en incrémentant p jusqu'à ce que S n 3. 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 = n 3 (en incrémentant successivement q et p on finit par atteindre n 3 exactement). Solution. Propriété de nombres particuliers

107 Algorithme: développement dun 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 k 1 Tant que (s cube) début si (s>cube) alors début s s - (2*k-1) k k + 1 fin si ( s

108 Solution. Le nombre dor Algorithme: Calcul du nombre dor 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 : u1 1 u2 1 Répéter u3 u2+u1 v1 u2/u1 {v1 est une approximation du nombre dor v2 u3/u2 {v2 est lapproximation 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 quon a pas atteint la précision souhaitée Afficher v2 {A : v2 contient une approximation du nombre dor Fin

109 Algorithme. Miroir dun nombre entier Début Demander n {A: n est un entier 0} a 0 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

110 Un exemple dévaluation dexpression: x * x 0 ET ( x + 1 ) * ( x + 1 ) < VV V Lunité arithmétique et logique

111 Un exemple dévaluation dexpression: x x 0 x 1 x * * < ET Lunité arithmétique et logique


Télécharger ppt "Programme de baccalauréat en informatique Algorithmique et programmation IFT-17582 Abder Alikacem Abder Alikacem Semaine 3 Bâtir un algorithme Département."

Présentations similaires


Annonces Google