logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

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 → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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 [29/11/2014 18:05]
Hypathie [Exo 1 : procédure compter le nombre de caractères dans une phrase]
utilisateurs:hypathie:tutos:algo-exo-constructions-d-algorithmes-de-procedure [30/11/2014 11:30]
Hypathie [Exo 3 : procédure rechercher un palindrome]
Ligne 6: Ligne 6:
   * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)   * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)
  
-===== Exo 1 : procédure "​compter le nombre de caractères dans une phrase" ===== +===== Exo 1 : procédure "​compter le nombre de caractères dans une chaîne" ===== 
-Soit une chaîne de caractères terminée par un caractère '​.'​.\\ Donnez l'​algorithme d'un programme qui comporte le nombre d'​occurrences d'une lettre donnée ( '​a'​ par exemple) dans cette chaîne. +//**Soit une chaîne de caractères terminée par un caractère '​.'​.\\ Donnez l'​algorithme d'un programme qui compte la longueur de cette chaîne ​("." non compris).**//​
  
 ====1) Définir la procédure (la moulinette)==== ====1) Définir la procédure (la moulinette)====
  
- ​chaine de caractère ------->​| ​ calcul des caractères de la chaîne |------> nombre de lettres de la phrase+ ​chaine de caractères ​---->​| ​ calcul des caractères de la chaîne |---> nombre de lettres de la phrase
  
 ====2) Définition des données==== ====2) Définition des données====
  
-<nowiki>+<code>
 CONSTANTE CONSTANTE
-  ​point = '​.'​ // caractère d'​arrêt+point = '​.'​ // caractère d'​arrêt
   ​   ​
-  ​nbremax = 100 //  nombre max de caractères+nbremax = 100 //  nombre max de caractères
   ​   ​
-TYPE+TYPE 
 chaîne tableau[taille] de caractères chaîne tableau[taille] de caractères
  
 VARIABLES VARIABLES
-  ​taille_phrase : entier // taille réelle de la chaîne de caractère entrée +taille_phrase : entier // taille réelle de la chaîne de caractère entrée''​ 
-  i : entier // indice de parcours de la phrase +i : entier // indice de parcours de la phrase 
-  ​nombre_lettres ​// Nombre d'​occurrence de la lettre cherchée +nombre_lettre ​// Nombre d'​occurrence de la lettre cherchée 
-</nowiki>+</code>
  
 ====3) Jeu d'​essai==== ====3) Jeu d'​essai====
Ligne 61: Ligne 60:
 ====5) programme de test==== ====5) programme de test====
  
-<​code>​ +<​code ​c
-CONSTANTE+CONSTANTES
   point = '​.'​ // caractère d'​arrêt   point = '​.'​ // caractère d'​arrêt
   ​   ​
   nbremax = 100 //  nombre max de caractères   nbremax = 100 //  nombre max de caractères
   ​   ​
-TYPE+TYPES
   chaine = tableau [n] caractere   chaine = tableau [n] caractere
  
-VARIABLE+VARIABLES
   chainedecaractere : chaine   chainedecaractere : chaine
   nombredelettre : entier   nombredelettre : entier
  
- procédure compterchainedecaractère (entrée chainedecaractère : chaine ; sortie ​ nombredecaractère : entier)+PROCEDURES  
 +procédure compterchainedecaractère (entrée chainedecaractère : chaine ;  
 +                                            ​sortie ​ nombredecaractère : entier)
  
  //​compterchainedecaractère : compte le nombre de caractère de la chaîne  //​compterchainedecaractère : compte le nombre de caractère de la chaîne
Ligne 82: Ligne 83:
   début ​   début ​
   
- écrire ( entrez une phrase)+ écrire ('entrez une phrase')
  lire (chainedecaractère)  lire (chainedecaractère)
   
  compterchainedecaractère (chainedecaractère,​ nombredelettre)  compterchainedecaractère (chainedecaractère,​ nombredelettre)
   
- écrire ("le nombre de caractère est", nombredelettre)+ écrire ('le nombre de caractère est', nombredelettre)
  
   fin   fin
Ligne 94: Ligne 95:
 ====6) Algorithme de la procédure compterchainedecaractère==== ====6) Algorithme de la procédure compterchainedecaractère====
  
-<​code>​ +<​code ​c
-procédure compterchainedecaractère (ENTREE chainedecaractère : chaine ; sortie  ​nombredecaractère : entier) +procédure compterchainedecaractère (ENTREE chainedecaractère : chaine ;  
- +                                    SORTIE ​nombredecaractère : entier) 
-(entrée et sortie sont des mots réservés)+                                     
 +     // entrée et sortie sont des mots réservés
    
 //​compterchainedecaractère : compte le nombre de caractère de la chaîne //​compterchainedecaractère : compte le nombre de caractère de la chaîne
Ligne 120: Ligne 122:
  
 <note tip> <note tip>
-Ne pas faire "​parler la procédure"​ : elle ne fait de plus que ce qu'​elle permet. ​+Ne pas faire "​parler la procédure"​ : elle ne doit rien faire de plus que ce qu'​elle permet ​fait dans tout programme qui l'​utilisera
 </​note>​ </​note>​
 ===== Exo 2 : procédure "​compter occurrences de deux caractères successifs"​ ===== ===== Exo 2 : procédure "​compter occurrences de deux caractères successifs"​ =====
 +//​**Rechercher si deux lettres choisies par l'​utilisateur sont dans une phrase entrée par l'​utilisateur.**//​
  
 +
 +====1) Schéma de la procédure (la moulinette)====
 +<​code>​
 +                     ​schéma procédure
 +                    |                |
 + ​phrase ----------->​|cherche si deux |------> si caractère1 ET caractère2 sont dans la phrase et successifs ​
 +                    |                |        alors terminateur ​        
 +                    |lettres succ    |        deuxlettres = VRAIE 
 +caractère 1 ------->​| ​ dans          |
 +caractère 2 ------> |  cette phrase ​ |
 +
 +</​code>​
 +
 +====2) Définition des données====
 +
 +<​code>​
 +CONSTANTES\\ ​
 +terminateur = '​.'​ // caractère d'​arrêt\\ ​
 + 
 +  ​
 +TYPES\\ ​
 +chainetableau tableau[MAX] caractère\\ ​
 +
 +VARIABLES\\ ​
 +phrase : caractère\\ ​
 +car1   : caractère\\ ​
 +car2   : caractère\\ ​
 +nbr    : entier\\ ​
 +</​code>​
 +
 +====3) Jeu d'​essai====
 +
 +^phrase ​    ​^terminateur ​          ​^caractère1 ​ ^caractère2 ​  ​^nombre ^
 +|blablobli. | <​nowiki>'​.'</​nowiki> ​ |  "​l" ​     | "​r" ​        ​| ​  ​0 ​  |
 +|bonjour. ​  | <​nowiki>'​.'</​nowiki> ​ |  "​b" ​     | "​." ​        ​| ​  ​0 ​  |
 +|blablo. ​   | <​nowiki>'​.'</​nowiki> ​ |  "​b" ​     | "​l" ​        ​| ​  ​2 ​  |
 +|blablobli. | <​nowiki>'​.'</​nowiki> ​ |  "​b" ​     | "​l" ​        ​| ​  ​3 ​  |
 +
 +  ​
 +====4) Interface (définir la procédure)====
 +
 +//vérifier si une phrase contient deux lettres// ​
 +
 +PROCEDURE
 +
 +<​code>​
 +procédure DeuxLettresID ( entrée phrase : chainetableau ;\\ 
 +                          sortie nbreoccurrence : entier )\\ 
 + 
 +    // CompterDeuxLettres  ​       : procédure qui recherche deux lettres successives et définies extérieurement dans une phrase terminée par un point\\ ​
 +    // phrase  ​           : phrase saisie par l'​utilisateur\\ ​
 +    //​nbreoccurrence  ​       : décompte du nombre d'​occurrence de mot contenant deux lettres successives\\ ​
 +</​code>​
 +''​chainetableau''​ : c'est le type créé\\ ​
 + 
 +====5) Programme de test====
 +<code c>
 +CONSTANTES
 +max = 100
 +
 +TYPES
 +chaine tableau[MAX] caractère
 +
 +VARIABLES
 +phrase ​        : chaine
 +lettre 1       : caractère
 +lettre 2       : caractère
 +nbreoccurrence : entier
 +
 +
 + début
 +
 + écrire ("​entrez une phrase terminée par un point"​)
 +
 + lire (phrase)
 +
 + écrire ("​entrez une première lettre"​)
 +
 + lire (lettre 1)
 +
 + écrire ("​entrez une deuxième lettre"​)
 +
 + lire (lettre 2)
 +
 +   DeuxLettresID ( entrée phrase : chainetableau , sortie nbreoccurrence : entier )
 +   ​
 +    ​écrire ("le nombre d'​occurrences des lettres choisies dans la phrase donnée est", nbreoccurrence"​)
 +
 + fin
 +</​code>​
 +
 +====6) Procédure compter deux lettres====
 +
 +<code c>
 +CompterDeuxLettres( lettre phrase chaine
 +                    entrée ​
 +                    car1   : caractère
 + car2 ​  : caractère
 + FIN ​   : caractère
 + sortie occurrence : entier
 +
 +VARIABLE
 +
 + i : entier
 + occurrence : 0
 +
 + ​début
 +
 + i := 1
 + occurrence := 0
 +
 + tantque (phrase [i] <> FIN)
 +
 + si (phrase[i] = car1)
 +
 + si (phrase [i + 1] = car2
 +
 + occurrence + 1
 +  
 + finsi
 +
 + finsi
 +
 +   i := i + 1
 +   ​
 + fintantque
 +
 + fin
 +
 +</​code>​
 ===== Exo 3 : procédure "​rechercher un palindrome"​ ===== ===== Exo 3 : procédure "​rechercher un palindrome"​ =====
 +//​**Procédure pour déterminer si une chaîne de caractère terminée par un point est un palindrome.**//​
  
 +====1) Moulinette (schéma de la procédure)====
 +
 +chaîne. ---> | recherche palindrome | ---> palindr : booléen (Vrai ou FAUX)
 +
 +<​code>​
 +i (indice ->​) ​     ​
 +  1   ​2 ​  ​3 ​  ​4 ​  5 | 6 |... | MAX
 +----------------------------------
 +| L | A | V | A | L | . |
 +        j (indice <-|.| )
 +</​code>​
 +        ​
 +====2) Jeu d'​essai====
 +
 +^         ​^ ​                           ^
 +| '​.' ​    | c'est un palindrome ​       |
 +| '​a.' ​   | c'est un palindrome ​       |
 +|'​aa.' ​   | c'est un palindrome ​       |
 +| '​aba.' ​ | c'est un palindrome ​       |
 +| '​acb' ​  | ce n'est pas un palindrome |
 +| '​aacba.'​| ce n'est pas un palindrome |
 +|'​aacab ​  | ce n'est pas un palindrome |
 +
 +====3) Définition des données du problème====
 +<​code>​
 +CONSTANTES ​
 +taille =80 //nombre max de caractères de la chaîne
 +carterm ='​.'​ // caractère terminaleur de la chaîne
 +
 +TYPE 
 +chaine =tableau[taille] de caractères // type crée pour contenir une liste 
 +
 +VARIABLES ​
 +phrase : chaine // phrase où une symétrie est recherchée
 +i      : entier // 
 +j      : entier // indice de parcours de la phrase depuis la fin.
 +</​code>​
 +
 +====4)Interface (notice) de la procédure ==== 
 +
 +====5)Programme de test ====
 +
 +====6)Algorithme de la procédure Palindrome terminé par un point====
 +
 +<​code>​
 +CONSTANTES
 +taille =80 //nombre max de caractères ​ de la chaine
 +carterm = '​.'​ // caractère terminateur
 +
 +TYPES
 +chaîne =tableau[taille] de caractère
 +
 +VARIABLES
 +phrase :chaîne //phrase dont on va déterminer la symétrie
 +i      :entier //indice de parcours de la phrase par le début
 +j      :entier //indice de parcours de la phrase par la 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>​
 +
 +Autre solution :
 +<​code>​
 +CONSTANTES
 +carterm ='​.'​
 +
 +TYPES
 +phrase =tableau[i,​j] de caractères
 +
 +VARIABLES
 +i : entier // indice de début du tableau
 +j : entier //indice de fin
 +resultat : booléen // VRAI si symétrie
 +
 +
 + ​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 ​     ​
 +
 +    FINSI
 +    ​
 + fin
 +</​code>​
utilisateurs/hypathie/tutos/algo-exo-constructions-d-algorithmes-de-procedure.txt · Dernière modification: 06/12/2014 17:08 par Hypathie

Pied de page des forums

Propulsé par FluxBB