Fin i - algorithmique pour les sciences techniques

publicité
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 …
Téléchargement