Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
utilisateurs:hypathie:tutos:algo-exo-constructions-d-algorithmes-de-procedure [06/12/2014 06:57] Hypathie [Algo: exo constructions d'algorithmes de procédure] |
utilisateurs:hypathie:tutos:algo-exo-constructions-d-algorithmes-de-procedure [06/12/2014 10:52] Hypathie [Exo 3 : procédure rechercher un palindrome] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ======Algo_méthodologie : élaboration d'une procédure ====== | + | ======algo-exo-constructions-d-algorithmes-de-procedure====== |
* Objet : Comment élaborer l'algorithme une procédure ? | * Objet : Comment élaborer l'algorithme une procédure ? | ||
Ligne 298: | Ligne 298: | ||
</code> | </code> | ||
- | ====4)Interface (notice) de la procédure ==== | + | ====4)Interface (notice) de la procédure ==== |
+ | <code> | ||
+ | procédure cherchePalinPoint(entrée texte : chaine, | ||
+ | entrée sortie ind1 : entier, ind2 : entier) | ||
+ | // Cette procédure permet de dire si une chaine de caractère terminée par un point est un palindrome. | ||
+ | // ind1 : c'est l'indice de parcours du texte par le début | ||
+ | // ind2 : c'est l'indice de parcours du texte par la fin | ||
+ | </code> | ||
====5)Programme de test ==== | ====5)Programme de test ==== | ||
+ | <code> | ||
+ | CONSTANTES | ||
+ | constante MAX =80 //nombre max de caractères de la chaîne (Pour pouvoir créer le type chaine, car un tableau est toujours de taille fixe. | ||
+ | constanteFIN ='.' // caractère terminaleur de la chaîne (Un tableau peut ne pas être tout rempli) | ||
- | ====6)Algorithme de la procédure Palindrome terminé par un point==== | + | TYPES |
+ | Type chaine =tableau[MAX] de caractères // type crée pour contenir une liste | ||
- | <code> | + | VARIABLES |
- | CONSTANTES | + | variable phrase : chaine // phrase où une symétrie est recherchée |
- | taille =80 //nombre max de caractères de la chaine | + | variable i : entier // |
- | carterm = '.' // caractère terminateur | + | variable j : entier // indice de parcours de la phrase depuis la fin. |
- | TYPES | + | PROCEDURES |
- | chaîne =tableau[taille] de caractère | + | procédure cherchePalinPoint(entrée texte : chaine, |
+ | entrée sortie ind1 : entier, ind2 : entier) | ||
+ | // Cette procédure permet de dire si une chaine de caractère terminée par un point est un palindrome. | ||
+ | // ind1 : c'est l'indice de parcours du texte par le début | ||
+ | // ind2 : c'est l'indice de parcours du texte par la fin | ||
- | VARIABLES | + | Début |
- | phrase :chaîne //phrase dont on va déterminer la symétrie | + | // Saisie de la phrase : |
- | i :entier //indice de parcours de la phrase par le début | + | ECRIRE ('Entrez votre phrase et n'oubliez pas de la terminer par un point.' |
- | j :entier //indice de parcours de la phrase par la fin | + | LIRE(phrase) |
+ | i := palindrome[1] | ||
+ | j := palindrome[MAX-1 | ||
+ | |||
+ | // Recherche d'un palindrome fini par un point : | ||
+ | cherchePalinPoint(entrée phrase:chaine , entrée/sortie i:entier, entrée/sortie j:entier) | ||
+ | SI i >= j ALORS | ||
+ | ECRIRE('La phrase', phrase 'est un palindrome.') | ||
+ | SINON | ||
+ | ECRIRE('La phrase', phrase 'n'est pas un palindrome.') | ||
+ | FINSI | ||
+ | Fin | ||
- | Début | ||
- | | ||
- | écrire('Donnez une phrase." | ||
- | lire(phrase) | ||
- | | ||
- | j := 1 | ||
- | | ||
- | TantQue phrase[j] <> carterm FAIRE | ||
- | | ||
- | j := j + 1 //arrêt car on est sur terminateur | ||
- | | ||
- | FinTantQue | ||
- | | ||
- | //Parcours par les deux bouts | ||
- | j := j - 1 | ||
- | i := 1 | ||
- | | ||
- | TantQue (i<j) ET (phrase[i] = phrase[j]) FAIRE | ||
- | | ||
- | j := i + 1 | ||
- | i := j - 1 | ||
- | FinTantQue | ||
- | | ||
- | //Affichage du résultat | ||
- | | ||
- | SI i >= j ALORS // Fin du parcours | ||
- | écrire("C'est un palindrome") | ||
- | SINON | ||
- | ecrire("Ce n'est pas un palindrome") | ||
- | FinSI | ||
- | | ||
- | Fin | ||
</code> | </code> | ||
- | Autre solution : | + | |
+ | ====6)Algorithme de la procédure Palindrome terminé par un point==== | ||
<code> | <code> | ||
- | CONSTANTES | + | procédure cherchePalinPoint(entrée texte : chaine, |
- | carterm ='.' | + | entrée sortie ind1 : entier, ind2 : entier) |
+ | // Cette procédure permet de dire si une chaine de caractère terminée par un point est un palindrome. | ||
+ | // ind1 : c'est l'indice de parcours du texte par le début | ||
+ | // ind2 : c'est l'indice de parcours du texte par la fin | ||
- | TYPES | + | CONSTANTE |
- | phrase =tableau[i,j] de caractères | + | MAX : 80 |
+ | |||
+ | TYPE chaine = tableau[MAX] de caractères | ||
VARIABLES | VARIABLES | ||
- | i : entier // indice de début du tableau | ||
- | j : entier //indice de fin | ||
- | resultat : booléen // VRAI si symétrie | ||
+ | i : entier | ||
+ | j : entier | ||
+ | |||
+ | TERM : '.' : caractère | ||
- | Début | ||
- | | ||
- | //initialisation | ||
- | i := phrase[1] | ||
- | j := phrase[carterm - 1] | ||
- | | ||
- | SI (carterm) ALORS | ||
- | lire(phrase[i,j]) | ||
- | | ||
- | SI (phrase[i] = phrase[j]) ALORS | ||
- | | ||
- | resultat = VRAI | ||
- | |||
- | i := i + 1 // Parcours dans les deux sens | ||
- | j := j - 1 | ||
- | | ||
- | TQ (i < j) ET (resultat = VRAI) FAIRE | ||
- | écrire("C'est un palindrome") | ||
- | FINTQ | ||
- | |||
- | SINON | ||
- | resultat = FAUX | ||
- | écrire("Ce n'est pas un palindrome") | ||
- | FINSI | ||
+ | début | ||
+ | i := chaine[1] | ||
+ | j := chaine[TERM - 1] | ||
+ | |||
+ | SI chaine[i] < chaine[j] | ||
+ | TQ (i < j et chaine[i] = chaine[j]) | ||
+ | i := i + 1 | ||
+ | j := j - 1 | ||
+ | FinTQ | ||
FINSI | FINSI | ||
- | | + | |
fin | fin | ||
</code> | </code> |