Algorithmiques Abdelbasset KABOU [email protected]. Département des Sciences Techniques. Université Ammar Thelidji – Laghouat. Structures Répétitifs Sommaire • Rappel • Actions/Objets • La boucle «tant que» • Structures de Contrôle • La boucle «répéter» • Traitement Séquentiel • La boucle «pour» • Traitement Répétitif • Exemples … • Les boucles (Notation Algorithmique) Rappel : 1 Comprendre le problème. 2 Dégager les données en entrée. 3 Dégager les données en sortie 4 Formaliser la solution trouvée par un algorithme. 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. 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 Ecrire(N , ‘est non deviseur) Oui 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 Les boucles … Notation Algorithmique ?? Notation Algorithmique 1. La boucle « tant que » 2. La boucle « répéter » 3. La boucle « Pour » La boucle «tant que» Début lire (N) i←1 Tant que i <=N Faire … Non i <= N Oui Ecrire (i) i←i+1 Fin Un bloc Ajouter d’Instrictions début et 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 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: Répéter 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 … A>0 [0,10] A>=0 ? … Condition d’arrêt ?? ? 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 …