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

Ceci est une ancienne révision du document !


Algo: exo constructions d'algorithmes de procédure

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 compte la longueur de cette chaîne (“.” non compris).

1) Définir la procédure (la moulinette)

chaine de caractères —→| calcul des caractères de la chaîne |—> nombre de lettres de la phrase

2) Définition des données

CONSTANTE
point = '.' // caractère d'arrêt
  
nbremax = 100 //  nombre max de caractères
  
TYPE 
chaîne tableau[taille] de caractères

VARIABLES
taille_phrase : entier // taille réelle de la chaîne de caractère entrée''
i : entier // indice de parcours de la phrase
nombre_lettre // Nombre d'occurrence de la lettre cherchée

3) Jeu d'essai

chainedecaractère nombredelettre
“.” 0
“a.” 1
“ab.” 2

(C'est la notice d'utilisation de la procédure pour le programme qui utilisera cette procédure.)

L'interface de procédure (procédure décrite en pseudo-langage)

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
//chainedecaractère : suite de plusieurs caractères éventuellement espace d'espace et terminée par un point
//nombredecaractère : nombre de caractère qui ont été" rentrés
chainedecaractère : nom du paramètre
chaine : c'est le type tableau créé pour le paramètre “chainedecaractère ”
nombredecaractère : c'est le nom de la variable de sortie qui aura pour valeur le résultat (elle est de type prédéfini “entier”.)

5) programme de test

CONSTANTES
  point = '.' // caractère d'arrêt
 
  nbremax = 100 //  nombre max de caractères
 
TYPES
  chaine = tableau [n] caractere
 
VARIABLES
  chainedecaractere : chaine
  nombredelettre : 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
	//chainedecaractère : suite de plusieurs caractères éventuellement espace d'espace et terminée par un point
	//nombredecaractère : nombre de caractère qui ont été" rentrés
 
  début 
 
	écrire ('entrez une phrase')
	lire (chainedecaractère)
 
	compterchainedecaractère (chainedecaractère, nombredelettre)
 
	écrire ('le nombre de caractère est', nombredelettre)
 
  fin

6) Algorithme de la procédure compterchainedecaractère

procédure compterchainedecaractère (ENTREE chainedecaractère : chaine ; 
                                    SORTIE nombredecaractère : entier)
 
     // entrée et sortie sont des mots réservés
 
//compterchainedecaractère : compte le nombre de caractère de la chaîne
//chainedecaractère : suite de plusieurs caractères éventuellement espace d'espace et terminée par un point
	//nombredecaractère : nombre de caractère qui ont été" rentrés
 
i : entier //indice
 
    début
 
     i := 1
 
       tantque chainedecaractere [i] <> point faire
 
            i := i + 1
 
        fintantque
		nombredecaractère := i-1
    fin
 
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.

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)

                     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  |

2) Définition des données

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\\ 

3) Jeu d'essai

phrase terminateur caractère1 caractère2 nombre
blablobli. '.' “l” “r” 0
bonjour. '.' “b” “.” 0
blablo. '.' “b” “l” 2
blablobli. '.' “b” “l” 3

4) Interface (définir la procédure)

vérifier si une phrase contient deux lettres

PROCEDURE

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\\ 

chainetableau : c'est le type créé

5) Programme de test

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

6) Procédure compter deux lettres

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

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)

i (indice ->)      
  1   2   3   4   5 | 6 |... | MAX
----------------------------------
| L | A | V | A | L | . |
        j (indice <-|.| )

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

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.

4)Interface (notice) de la procédure

5)Programme de test

6)Algorithme de la procédure Palindrome terminé par un point

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

Autre solution :

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
        
           TQ (i < j) ET (phrase[i] = phrase[j]) FAIRE
              i := i + 1
              j := j - 1
              écrire("C'est un palindrome")
           FINTQ
           
         SINON 
             resultat = FAUX
             écrire("Ce n'est pas un palindrome")
         FINSI      

    FinSI
    
 Fin
utilisateurs/hypathie/tutos/algo-exo-constructions-d-algorithmes-de-procedure.1417341716.txt.gz · Dernière modification: 30/11/2014 11:01 par Hypathie

Pied de page des forums

Propulsé par FluxBB