Algorithmiques Abdelbasset KABOU Kabou.abdelbasset@gmail.com. Département des Sciences Techniques. Université Ammar Thelidji – Laghouat.
Structures Répétitifs
Sommaire Rappel Actions/Objets Structures de Contrôle Traitement Séquentiel Traitement Répétitif Les boucles (Notation Algorithmique) La boucle «tant que» La boucle «répéter» La boucle «pour» Exemples …
Rappel : 1 2 3 4 Comprendre le problème. Dégager les données en entrée. 2 Dégager les données en sortie 3 Formaliser la solution trouvée par un algorithme. 4
Rappel: Actions/Objets Une opération dans un algorithme est équivalente à une action sur un objet. Dans l’algorithme précédent : Objets (Structure de Données): nombres A, B, Nom ... Action (Structure de Contrôle): entrer, faire l’addition, mettre le résultat dans, Afficher …
Algorithme Structure de Contôle Structure de données
Structures de Contrôle Trois types de traitement (exécution) selon le problème posé: Séquentiel Alternatif Répétitif
Traitement Séquentiel Dans ce cas (cas par default), les instructions d’un algorithme tous, s’exécutent, les unes après les autres.
Nom, affichage: chaine; Age: entier; Algorithme Exemple; Nom, affichage: chaine; Age: entier; Début Ecrire (‘ merci d’entrer votre nom svp’); lire(Nom); Ecrire (‘ merci d’entrer votre age svp’); lire(Age); affichage ← ‘Bonjour :’, Nom, ‘ votre age est:’, age; Ecrire(Affichage); Ecrire(‘merci’, Nom): Fin.
Traitement Alternative Si nous voulons conditionner l’exécution d’un bloc d’actions par la vérification d’une condition nous utilisons l’alternative (ou structure de contrôle conditionnelle)
Exemple … Que fait cet organigramme ?
Début Lire(N) Q ← N mod 3 Non Q <> 0 Oui Ecrire(N , ‘est non deviseur) Ecrire(N , ‘est deviseur) Fin
Algorithme Alternative; N,Q: entier; Début Lire (N); Q ← N mod 3; Si (Q=0) alors écrire (N , ‘est deviseur’) sinon écrire (N , ‘est pas un deviseur’); Fin.
Limites … Ecrire un organigramme qui permet d’afficher les entiers de 1 à N.
Début lire (N) Boucle i ← 1 Non i <= N Oui Ecrire (i) i ← i + 1 Fin
Traitement Répétitif Une structure de contrôle Itératif permet de répéter plusieurs fois le même traitement. La répétition d’un bloc d’actions est définie par des actions spéciales que nous appelons des boucles.
Début Lecture Non condition Oui actions actions … Fin
Exemples …
Refaire l’organigramme précédant pour afficher la somme (S=1+2+ … + N) Que faut-il modifier pour calculer le produit et non pas la somme? . Modifier cet organigramme pour qu’il calcul le Factoriel d’un entier N, Traduit le en notation algorithmique (la boucle tant que)
Début lire (N) i ← 0 S ← 0 Non i < N Oui i ← i + 1 S ← S + i Ecrire (S) Fin
Début lire (N) i ← 1 P ← 1 Non i < N Oui i ← i + 1 P ← P * i Ecrire (P) Fin
N! = N * (N-1) * (N-2) * … * 1 = 1* 2* 3* …* (N-1) * N
Début lire (N) i ← 1 P ← 1 Non i < N Oui i ← i + 1 P ← P * i Ecrire (P) Fin
Début lire (N) i ← 0 P ← 1 i ← i + 1 P ← P * i Oui Non i >= N Ecrire (P) Fin
Notation Algorithmique ?? Les boucles … Notation Algorithmique ??
Notation Algorithmique La boucle « tant que » La boucle « répéter » La boucle « Pour »
La boucle «tant que»
Début lire (N) Tant que i <=N i ← 1 Faire … Non i <= N Oui Ecrire (i) i ← i + 1 Un bloc d’Instrictions Ajouter début et Fin Fin
Ce qui signifie : tant que la condition est vraie, on répète l’exécution du bloc d’actions, et dès que la condition devient fausse on sort de la boucle et on continue en séquence. Si la condition et initialement fausse, le bloc d’actions ne sera jamais exécuté.
Le formalisme de la boucle «Tant que» est comme suit: Tant que condition faire Action 1 Action 2 … fin tq;
Tant que Condition faire début Action 1 Action 2 … fin
Début lire (N); i ← 1; P ← 1; Tant que i<N faire début i←i+1; P←P*i; Fin; écrire(N, ‘!=’, P); Fin.
Début lire (N); lire (X); i ← 1; P ← 1; Tant que i<N faire début P←P*X; i←i+1; Fin; écrire(P); Fin.
Condition ou expression logique: A>0 [0,10] ===> A>0 ? A<10 ? A=10 A>=0 ?
2éme type de boucle
Répéter ces instructions Début lire (N) i ← 0 P ← 1 Répéter ces instructions i ← i + 1 P ← P * i Oui Non i >= N Jusqu’à ce que … Ecrire (P) Fin
La boucle «répéter»
Le formalisme de la boucle « Répéter » est comme suit: Action 1 Action 2 … Jusqu’à Condition d’arrêt;
début lire (N); i ← 0; P ← 1; Répéter i←i+1; P←P*i; Jusqu’à i > = N; écrire(N, ‘!=’, P); Fin. Condition d’arrêt
Condition pour Continuer Condition d’arrêt ?? … A>0 [0,10] A>=0 ? ?
La boucle «pour»
Début Compteur lire (N) i ← 1 P ← 1 Non i < N Oui i ← i + 1 P ← P * i Ecrire (P) Fin
Le formalisme de la boucle «pour» est le suivant: Pour Compt ← <Valeur_initiale> à <Valeur_finale> faire début Action 1 Action 2 … Fin;
Pour Compt ← Valeur_initiale à Valeur_finale faire Action 1 Action 2 … Fin pour;
Le bloc d’actions est exécuté un nombre connu de fois suivant le compteur. <valeur-initiale> indique la première valeur affectée à la variable compteur lors de l’exécution de la première itération. <valeur-finale> indique la dernière valeur qu’aura la variable compteur lors de la dernière itération.
début lire (N); lire (x); P ← 1; Pour i ← 1 à N P←P*x; écrire(P); Fin.
Exemples …
Ecrire l’organigramme qui permet d’afficher les diviseurs d’un entier A (A>0).
Modifier l’organigramme pour qu’il calcul le nombre de ces diviseurs.
Déduit l’organigramme permettant de vérifier si un nombre A est Premier ou pas ?
Que faut-il ajouter à l’organigramme pour afficher tous les nombres premiers inférieur à 200?
Déduit l’algorithme …