Coursalgorithmique

3 667 vues

Publié le

1 commentaire
2 j’aime
Statistiques
Remarques
Aucun téléchargement
Vues
Nombre de vues
3 667
Sur SlideShare
0
Issues des intégrations
0
Intégrations
8
Actions
Partages
0
Téléchargements
282
Commentaires
1
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Coursalgorithmique

  1. 1. Chapitre 1Les éléments de base d’un algorithme1.1 Introduction1.1.1 Définition d’un algorithme Un algorithmeest une séquence d’opérations visant à la résolution d’un problème en un temps fini. On eut aussi adopter la définition suivante : un algorithmeest la description de la méthode de résolution d’un problème quelconque en utilisant des instruc-tions élémentaires. Ces instructions deviennent compréhensible pour l’ordinateur lors de la traduction de l’algorith-meen un programme.1.1.2 Algorithme et programmation Tout problème à programmer doit être résolu, d’abord sous forme d’algorithme, puis converti en programme dansun langage de programmation utilisé.Un programme est un enchainement d’instruction, écrit dans un langage de programmation, exécutées par un ordi-nateur, permettant de traiter un problème et de renvoyer des résultats. Il représente la traduction d’un algorithmeàl’aide d’un langage de programmation.1.2 Structure générale d’un algorithme Un algorithmeest constitué de trois parties principales :• l’en-tête : cette partie sert à donner un nom à l’algorithme. Elle est précédée par le mot Algorithme ; • la partie déclarative : dans cette partie, on déclare les différents objets que lalgorithmeutilise (constantes, va-riables, etc.) ; • le corps de l’algorithme : cette partie contient les instructions de l’algorithme. Elle est délimitée par les motsdébut et fin.1.3 Les variables et les constantes1.3.1 Déclaration des variables La partie déclarative consiste à énumérer toutes les variables dont on aura besoin au cours de l’algorithme. Chaque déclaration doit comporter le nom de la variable (identificateur) et son type. Syntaxe : Variable identificateur : type Exemples : Variable volume : réelVariables a,b,c,d :entiersVariable Nom_pr enom : chaîneVariable présent : logique 1
  2. 2. 2 CHAPITRE 1. LES ÉLÉMENTS DE BASE D’UN ALGORITHMEIdentificateur : Un identificateur est le nom donné à une variable, une fonction, etc. Ce nom doit obligatoirementcommencer par une lettre suivie d’une suite de lettres et de chiffres et il ne doit pas contenir d’espace.types de données : Le type d’une variable est l’ensemble des valeurs qu’elle peut prendre .Par exemple, une variable de type booléen (logique) peut prendre les valeurs Vrai ou Faux. Les différents types utilisé en algorithmique :• Type entier : sert à manipuler les nombres entiers positifs ou négatifs. Par exemple 2, -10, etc.• Type Réel : quant à lui sert à manipuler les nombres à virgules.• Type Caractère : permet de manipuler des caractères alphabétiques et numériques.Par exemple : ’a’, ’B’ ’ ?’, ’14’, etc.• Type chaîne : sert à manipuler des chaines de caractères.• Type Logique (Booléen) : utilise les expression logiques, Vrai ou faux. Faire tableau page 141.3.2 Les constantes Comme pour les variable, à une constante correspond un emplacement mémoire réservé auquel on accède par lenom qui lui a été attribué, mais dont la valeur stockée ne sera jamais modifiée au cours du programme. Syntaxe : Constante NOM_ DE LA CONSTANTE = valeurExemple : Constante PI=3.141.4 Les instructions de base Une instruction est une action élémentaire commandant à la machine un calcul, ou une communication avec unpériphérique d’entrée ou de sortie. Les instructions de base sont :1.4.1 L’instruction d’affectation L’affectation permet d’affecter une valeur à une variable. Elle est symbolisée en algorithmique par : " ←− "Syntaxe : Variable " ←− " ExpressionExpression peut être soit :• identificateur ;• constante ;• expression arithmétique ;• expression logique.Sémantique :Une affectation peut être définie en deux étapes :• évaluation de l’expression qui se trouve dans la partie droite de l’affectation ;• placement de cette valeur dans la variable.exemple : 0 Algorithme Calcul 1 Variables A,B,C,D : entier 2 Début 3 A ←− 10 4 B ←− 30 5 C ←− A+B 6 D ←− C*A 7 FinNote : les lignes sont numérotées pour faciliter l’explication.Nous pouvons expliquer ce qui ce passe par le tableau suivant :
  3. 3. 1.4. LES INSTRUCTIONS DE BASE 3 Variable Numéro de lignes 1 2 3 4 5 6 A 10 10 10 10 ? ? B 30 30 30 ? ? ? C 40 40 ? ? ? ? D 400 ? ? ? ? ?Remarque : • Les variables numériques ne sont pas forcément initialisées à zéro. Leur valeur peut être n’importe quoi. D’où laprésence du point d’interrogation avant qu’une première valeur ne soit affectée à la variable.• En faisant le tableau précédent on dit qu’on a fait la trace de l’algorithme. Exemple : 0 Algorithme Logique 1 Variables A,B,C : Booléen 2 Début 3 A ←− Vrai 4 B ←− Faux 5 C ←− A et B 6 Fin variable Numéro de ligne 1 2 3 4 5 A Vrai Vrai Vrai B Faux Faux C Faux1.4.2 L’instruction d’entrée L’instruction d’entrée ou de lecture donne la main à l’utilisateur pour saisir une donnée au clavier. La valeur saisiesera affectée à une variable.Syntaxe :Lire (identificateur)Exemples :Lire(A)Lire (A,B,C)L’instruction Lire(A) permet à l’utilisateur de saisir une valeur au clavier, cette valeur est affectée à la variable A. Remarque :Lorsque le programme rencontre cette instruction, l’exécution s’interrompt et attend que l’utilisateur rentre une va-leur. Cette valeur est rangée en mémoire dans la variable désignée.1.4.3 L’instruction de sortie Avant de lire une variable, il est conseillé d’écrire des libellés à l’écran, afin de prévenir l’utilisateur de ce qu’il doitfrapper au clavier (sinon, l’utilisateur passe son temps à se demander ce que l’ordinateur attend de lui). L’instruction de sortie (d’écriture) permet d’afficher des informations à l’écran.Syntaxe ;Écrire(expression)Expression peut être une valeur, un résultat, un message, le contenu d’une variable, etc.Exemple 1 :Écrire(A)
  4. 4. 4 CHAPITRE 1. LES ÉLÉMENTS DE BASE D’UN ALGORITHMECette instruction permet d’afficher à l’écran la valeur de la variable A.Exemple 2 :A ←− 2Écrire("la valeur de A est = ",A)La dernière instruction affiche à l’écran : la valeur de A est = 2Exercice : CalculPTTCÉcrire un algorithme qui permet de saisir le prix HT (PHT) d’un article et de calculer son prix total TTC (PTTC),TVA=20%Solution : 0 Algorithme Calcul_PTTC 1 Variables PHT, PTTC : réel 2 Constante TVA=0.2 3 Début 4 Écrire("Entrez le prix hors taxes :") 5 Lire(PHT) 6 PTTC←− PHT*1.2 7 Écrire(" Le prix TTC est ", PTTC) 8 Fin Numéro de ligne Explication 0 Déclare un algorithmedont le nom est calcul_PTTC 1 Déclare les différentes variables utilisées par l-algorithme 2 Déclare la constante TVA 3 Marque le début des traitements effectués par l’algorithme 4 Affiche à l’écran le message : Entrez le prix hors taxe : 5 Permet à l’utilisateur de saisir une valeur au clavier qui sera affectée à la vairable PHT 6 Calcule le prix et affecte le résultat à la variable PTTC 7 Affiche le résultat à l’écran 8 Marque la fin de l’algorithme1.5 Les commentaires Lorsqu’un algorithme devient long, il est conseillé d’ajouter des lignes de commentaires dans l’algorithme, c’est-à-dire des lignes qui servent à donner des indications des indications sur les instructions effectuées et d’expliquer lefonctionnement du programme sans que le compilateur ne les prenne en ligne.
  5. 5. Chapitre 2Les structures alternatives et répétitives2.1 Les structures alternatives2.1.1 Introduction Contrairement au traitement séquentiel, la structure alternative ou conditionnelle permet d’exécuter ou non d’ins-tructions selon la valeur d’une condition.2.1.2 La structure Si . . . Alors . . . Sinon . . . FinSi Syntaxe : Si condition Alors Instruction(s) 1 Sinon Instruction(s) 2 FinSiUne condition est une expression logique ou une variable logique évalué à Vrai ou Faux.La condition est évaluée. Si elle est vraie, la série d’instructions 1 est exécutée et l’ensemble d’instructions 2 est ignoré,la machine sautera directement à la première instruction située après le FinSi.De même, au cas où la condition était fausse (avait comme valeur Faux), la machine saute directement à la premièreligne située après le Sinon et exécute l’ensemble d’instructions 2.Exercice :Écrire un algorithme qui affiche si un nombre entier saisi au clavier est pair ou impair.Solution :On dit qu’un nombre entier n est pair si le reste de la division entière de n par 2 est égal à zéro. Sinon il est impair. Algorithme Parité //déclaration des variables Variables n, r : réel Début Écrire("Entrez la valeurrde n :") Lire(n) //r est le reste de la division entière de n par 2 r ←− n Mod 2 si r= 1 Alors Écrire(" n est impair") Sinon Écrire(n, " est pair") FinSi Fin 5
  6. 6. 6 CHAPITRE 2. LES STRUCTURES ALTERNATIVES ET RÉPÉTITIVES Remarque : Présentation de l’algorithme ou du programmeCertaines partie de l’algorithmeou du code sont en retrait par rapport à d’autres, ce qu’on appelle l’indentation. Celle-ci est très importante pour la lisibilité de lalgorithme. Elle montre rapidement le début et la fin de chaque instructionalternative ou répétitive ainsi le début et la fin de l’algorithme.De plus, pour faciliter la compréhension, toutes vos instructions doivent être commentées. Un développeur est sou-vent amené à modifier un code, par conséquent, des commentaires de qualité rendent cette tache plus facile et plusrapide. Note :Certains problèmes exige de formuler des conditions qui ne peuvent pas être exprimées sous la forme simple exposéeci-dessus.Par exemple la condition " x appartient à l’intervalle [0, 5] est composée de deux conditions simples à savoir 0 ≤ x etx ≤ 5, reliées par l’opérateur logique Et.Exemple :Écrire un algorithmequi teste si une note saisie au clavier est comprise entre 0 et 20. Algorithme TestNote //déclaration des variables Variable Note : réel Message : chaîne Début Écrire("Entrez la note :") Lire(Note) Si Note >= 0 et note <= 20 Alors Message ←− "La note " & Note & "est correcte" Sinon Message ←− "La note " & Note & "est incorrecte" FinSi Écrire (Message) Fin Exercice :Écrire un algorithmequi demande deux nombres a et b à l’utilisateur et l’informe ensuite si le produit est nul, négatifou positif. Algorithme Signe_Produit //déclaration des variables Variables a,b : réel Début Écrire("Entrez les deux nombres a et b :") Lire(a,b) Si a=0 ou b=0 Alors Écrire "Le produit est nul " SinonSi (a<0 Et b <0) Ou (a>0 Et b >0) Alors Écrire ( "Le produit est positif") Sinon Ecrire (" Le produit est négatif") FinSi FinRemarque :• Dans une condition composée utilisant à la fois des opérateurs Et et Ou, la présence de parenthèses à une influencesur le résultat.
  7. 7. 2.1. LES STRUCTURES ALTERNATIVES 72.1.3 La structure Si . . . Alors . . . FinSi Cette structure est utilisée si on veut exécuter une instruction seulement si une condition est vraie et ne rien fairesi la condition est fausse.Syntaxe : Si condition Alors Instruction(s) FinSi Exemple :Un magasin accorde à ses clients, une réduction de 5% pour les montants d’achats supérieurs à 150 euros .Écrire un algorithmepermettant de saisir le prix total HT (PTHT) et de calculer le montant TTC (PTTC) en prenantcompte de la remise et de la TVA à 20. Solution : Algorithme Calcul_ PTTC Constante TVA =0.2 //déclaration de la constante Variables PTHT, PTTC : réels //déclaration des variables Début Écrire("Entrez le prix hors taxe :") Lire(PTHT) Si PTHT > 150 Alors PTHT ←− PTHT * .95 FinSi PTTC ←− PTHT +(PTHT *TVA) Écrire("Le prix TTC est " , PTTC) Fin2.1.4 La structure Si . . . Alors . . . SinonSi . . . Sinon . . . Finsi Syntaxe : Si condition 1 alors Instruction 1 SinonSi Condition 2 alors Instruction 2 SinonSi Condition 3 Instruction 3 ... Sinon Instructions FinSi L’instruction qui sera exécutée est celle dont la condition est vraie. Si aucune condition n’est vérifiée, c’est l’ins-truction qui suit le Sinon qui sera exécutée. Exemple :Écrire un algorithmequi permet d’afficher le maximum parmi deux nombres saisis au clavier.Solution :
  8. 8. 8 CHAPITRE 2. LES STRUCTURES ALTERNATIVES ET RÉPÉTITIVES Algorithme MAx Variables A, B : réels //déclaration des variables Début Écrire("Entrez la valeur de A :") Lire(A) Écrire("Entrez la valeur de B :") Lire(B) Si A > B Alors Écrire("le maximum est " , A) SinonSi A=B alors Écrire("les deux nombres sont égaux " ) Sinon Écrire("le maximum est " , B) Finsi FinRemarque :Une structure conditionnelle peut contenir elle même une autre structure conditionnelle. Dans ce cas, les instructionsà exécuter après Alors et ou Sinon sont à leur tour, des instructions Si . . . Alors . . . Sinon.Exemple :Écrire un programme permettant de calculer des des allocations familiales sachant que le montant dépend du nombred’enfants à charge– Si le nombre d’enfants est inférieur ou égal à 3 alors les allocations sont de 150 euros par enfant.– Si le nombre est strictement supérieur à 3 et strictement inférieur à 6 alors les allocations sont de :• 150 euros par enfant pour les 3 premiers ;• 38 euros pour les suivants.– Si le nombre d’enfants est strictement supérieur à 6 alors les allocations sont :• 150 euros par enfant pour les 3 premiers ;• 38 euros pour les 3 suivants.• 0 euros par enfant pour les suivant. Solution : Algorithme Allocation_ familiale Variables NE, M : réels //déclaration des variables /* NE : Nombre d’enfants M : montant des allocations */ Début Écrire("Entrez le nombre d’enfants :") Lire(NE) Si NE<= 3 Alors M ←− NE * 150 Sinon Si NE <= 6 alors M ←− 450 + (NE - 3)* 38 Sinon M ←− 564 Finsi Finsi Écrire("Le montant des allocations est ", M) Fin2.1.5 Structure à choix multiples Cette structure conditionnelle permet de choisir le traitement à effectuer en fonction de la valeur ou dee l’inter-valle de valeurs d’une variable ou d’une expression.
  9. 9. 2.2. LES STRUCTURES RÉPÉTITIVES 9 Syntaxe : Selon sélecteur faire Valeur 1 : action(s) 1 Valeur 2 : action(s) 2 Valeur 3 : action(s) 3 ... Valeur n : action(s) n Sinon action(s) FinSi Lorsque l’ordinateur rencontre cette instruction, il vérifie la valeur de la variables de sélection (sélecteur) et il lacompare aux différentes valeurs.Les valeurs sont évaluées dans l’ordre, les unes après les autres , et dès qu’une de celles-ci est vérifiée l’action associéeest exécutée. On peut utiliser une instruction Sinon (facultative), dont l’action sera exécutée si aucune des valeurévaluées n’est remplie. Exemple :Écrire un programme permettant d’afficher le mois en toute lettre selon son numéro saisi au clavier. Solution : Algorithme Mois Variables N : entier //déclaration des variables Début Écrire("Donnez le numéro du mois :") Lire(N) Selon N faire 1 : Écrire ("Janvier ") 2 : Écrire ("Février ") 3 : Écrire (" Mars ") 4 : Écrire (" Avril ") 5 : Écrire (" Mai ") 6 : Écrire (" Juin ") 7 : Écrire (" Juillet ") 8 : Écrire (" Aout ") 9 : Écrire (" septembre") 10 : Écrire ("Octobre ") 11 : Écrire ("Novembre ") 12 : Écrire (" Décembre ") Sinon Écrire("Le numéro saisi est incorrecte : ") FinSelon Fin2.2 Les structures répétitives2.2.1 Introduction Prenons le cas où l’utilisateur doit répondre par O (oui) ou par N (non).Celui-ci risque de taper autre caractère, le programme peut soit "planter" par une erreur d’exécution soit se déroulernormalement jusqu’au bout, tout en produisant des résultats erronés.Pour palier à ce genre de problème, on peut mettre en place un contrôle de saisie pour vérifier si les données corres-pondent à celles attendues.On pourrait essayer avec un Si.
  10. 10. 10 CHAPITRE 2. LES STRUCTURES ALTERNATIVES ET RÉPÉTITIVES Algorithme Contrôle_ de_ saisie Variables Rep : Caractère //déclaration des variables Début Écrire("Voulez vous une pause après une heure de cours ? ( O N)" Lire(Rep) Si Rep = ’O’ ET Rep = ’ N ’ Alors Écrire ("Erreur de saisie. Recommencez ") Lire (Rep) FinSi FinCet algorithmerésout le problème si on se trompe une seule fois.En cas d’une deuxième erreur, il faudrait rajouter un Si, et ainsi de suite à chaque erreur de saisie.La solution adaptée à ce genre de situation serait d’utiliser ce qu’on appelle une structure répétitive.Une structure répétitive, encore appelé boucle, est utilisée quand une instruction ou une liste d’instructions, doit êtrerépétée plusieurs fois.La répétition est soumise à une condition.2.2.2 La boucle TantQue . . . Faire La boucle TantQue permet de répéter un traitement tant que la condition est vraie. Syntaxe : TantQue condition faire Instruction(s) FinTantQue L’exécution de la boucle dépend de la valeur de la condition. Si elle est vraie, le programme exécute les instruc-tions qui suivent, jusqu’à ce qu’il rencontre la linge FinTantQue. Il retourne ensuite sur la ligne du TantQue, procèdeau même examen, et ainsi de suite.La boucle ne s’arrête que lorsque la condition prend la valeur fausse, et dans ce cas le programme poursuit son exé-cution après FinTantQue.Exemple : Algorithme Contrôle_ de_ saisie Variables Rep : Caractère //déclaration des variables Début Écrire("Voulez vous une pause après une heure de cours ? ( O N)") Lire(Rep) Tantque Rep = ’O’ ET Rep = ’N’ faire Écrire ("Erreur de saisie ") Écrire ("Voulez vous une pause après une heure de cours ? ( O N)" ) Lire(Rep) FinTantQue Fin Remarque :• Étant donné que la condition est évaluée avant la mise en ?uvre des instructions, ce qui est une sécurité, il est pos-sible que celles-ci ne soient jamais exécutées.• Si une structure TantQue dans laquelle la condition ne devient jamais fausse, le programme tourne dans un boucleinfinie et n’en sort plus.Exemple de boucle infinie : Dans l’exemple suivant nous somme en présence d’une boucle infinie, l’ordinateur ne s’arrêtera jamais d’afficherle message c’est une boucle infinie, car la variable I qui est testée dans la condition n’est jamais incrémentée.
  11. 11. 2.2. LES STRUCTURES RÉPÉTITIVES 11 Exemple : Algorithme Boucle_ infinie I ←− 1 Tantque I <= 10 faire Écrire ("C’est une boucle infinie ") FinTantQue Exercice : i=N Écrire un algorithmequi calcule la somme S des N premiers entiers naturels : S = 1 + 2 + 3 + ... + N = i i=1 Solution : Algorithme Somme Variables S,I,N : entier //déclaration des variables Début Écrire("Entrez les valeur de N") Lire(N) S ←−0 I ←−I + 1 Tantque I<= N faire S ←−S + I I ←− I + 1 FinTantQue Écrire("La somme des ", N, "premiers entiers est :", S) Fin2.2.3 La boucle Pour . . . Faire La boucle bf Pour . . . Fiare permet de répéter une liste d’instruction un nombre déterminé de fois.2.ex] Syntaxe : TantQue condition faire Instruction(s) FinTantQueSyntaxe : Pour compteur ←− valeur_ initiale jusqu’à valeur_ finale Faire Instruction(s) FinpourLa variable compteur est de type entier. Elle est initialisée à la valeur initiale. Le compteur augmente sa valeur de unautomatiquement à chaque tour de boucle jusqu’à la valeur finale.Pour chaque valeur prise par la variable compteur, la liste des instructions est exécutée.Lorsque la variable compteur vaut la valeur finale, le traitement est exécuté une dernière fois puis le programme sortde la boucle. Exemple :Les instructions suivantes : Pour k ←− 0 jusqu’à 10 faire Écrire ("7* ",k,"=", 7*k) Écrire ("") Finpour
  12. 12. 12 CHAPITRE 2. LES STRUCTURES ALTERNATIVES ET RÉPÉTITIVESaffiche à l’écran la table de multiplication de 7 Exercice : i=10 Écrire un algorithmequi calcule la somme S des 10 premiers entiers naturels : S = 1 + 2 + 3 + ... + 10 = i i=1 Solution : Algorithme Somme Variables S,I : Entiers //déclaration des variables Début S ←−0 Pour I ←− 0 jusqu’à 10 Faire// Compteur S ←−S + I FinPour Écrire("La somme des ", 10, "premiers entiers est :", S) Fin Remarques :• Par défaut la variable compteur est incrémentée de 1 à chaque tour de boucle.• pour modifier la valeur d’incrémentation, il suffit de rajouter le mot Pas (en anglais step) et la valeur de ce pas à laboucle.Syntaxe :Syntaxe : Pour compteur ←− valeur_ initiale jusqu’à valeur_ finale Pas ValeurPas Faire Instruction(s) Finpour VI est la valeur initiale, et VF est la valeur finaleExercice :Écrire un algorithmequipermet de saisir un entier et qui calcule la somme S des entiers pairs compris entre zéro et cenombres : Solution : Algorithme Somme_ Paire Variables S, I, N : Entiers //déclaration des variables Début Écrire(" Entrez la valeur de N : ") Lire( N) Pour I ←− 0 jusqu’à N Pas 2 Faire// Compteur S ←−S + I FinPour Écrire("La somme des nombres pairs est ;", S) Fin2.2.4 La boucle Répéter . . . Jusqu’à Cette boucle sert une instruction jusqqu’à ce qu’une condition soit vraie.Solution :Cette boucle nr s’utilise en général que pour des menus, elle est dangereuse car il n’ y a pas de vérification de la condi-tion avant d’y entrer.
  13. 13. 2.2. LES STRUCTURES RÉPÉTITIVES 13 Syntaxe : Répéter Instruction(s) Jusqu’à conditionLa liste est exécutée, puis la condition est évaluée. Si elle est fausse, le corps de la boucle est exécuté à nouveau puis lacondition est réévaluée et si elle a la valeur vrai, le programme sort de la boucle et exécute l’instruction suit Jusqu’à.Exemple :En utilisant la boucle répéter . . . Jusqu’à, écrire un algorithmequi calcule la somme des N premiers nombres entiers.On suppose que N est strictement positif.Solution : Algorithme Somme Variables S, I, N : Entiers //déclaration des variables Début Écrire(" Entrez une valeur strictement positive : ") Lire( N) S ←− 0 I ←−1 Répéter S ←− S + I I ←−1 + I Jusqu’à I >= N Écrire("La somme des nombres ", N, "premiers entiers est ;", S) FinRemarque :• Les boucles ≪ Répéter ≫ et ≪ TantQue ≫ sont utilisée lorsqu’on ne sait pas au départ combien de fois il faudraexécuter ces boucles.• A la différence de la boucle ≪ Tantque ≫ , la boucle ≪ Répéter ≫ est exécuter au moins un fois.• La condition d’arrêt de la boucle ≪ Répéter ≫ est la négation de la condition de poursuite de la boucle ≪ Tantque≫.• On utilise la boucle la boucle ≪ Pour ≫ quand on connait le nombre d’itérations à l’avance.
  14. 14. 14 CHAPITRE 2. LES STRUCTURES ALTERNATIVES ET RÉPÉTITIVES
  15. 15. Chapitre 3Les Tableaux3.1 Introduction Imaginons que dans uns programmes, nous avons besoin d’un grand nombre de variables, il devient alors difficilede donner un nom à chacune d’elles.Exemple :Écrire un algorithme permettant de saisir cinq notes et de les afficher après avoir multiplié toutes les notes par trois.Solution : Algorithme Note Variables N1, N2, N3,N4,N5 : Réel //déclaration des variables Début Écrire(" Entrez la valeur de la première note ") Lire( N1) Écrire(" Entrez la valeur de la deuxième note ") Lire( N2) Écrire(" Entrez la valeur de la troisième note ") Lire( N3) Écrire(" Entrez la valeur de la quatrième note ") Lire( N4) Écrire(" Entrez la valeur de la cinquième note ") Lire( N5) Écrire(" La note 1 multipliée par 3 est :" ; N1 *3) Écrire(" La note 2 multipliée par 3 est :" ; N2 *3) Écrire(" La note 3 multipliée par 3 est :" ; N3 *3) Écrire(" La note 4 multipliée par 3 est :" ; N4 *3) Écrire(" La note 5 multipliée par 3 est :" ; N5 *3) FinLa même instruction se répète Cinq fois , imaginons que si l’on voudrait réaliser cet algorithme avec 50 notes, celadeviendrait fastudieux.Comme les variables ont des noms différents, on ne peut pas utiliser de boucle, ce qui allonge considérablement lecode et le rend très répétitif.2.ex] Pour résoudre ce problème, il existe un type de données qui permet de définir plusieurs variables de même type.3.2 Définition Un tableau est une suite d’éléments de même type. Il utilise plusieurs cases mémoire à l’aide d’un seul nom.Comme toutes les cases portent le même nom, elles se différencient par un numéro ou un indice.Nous pouvons représenter schématiquement un tableau nommé Note composée de cinq cases, dans la mémôirecomme suit : Note[1] Note[2] Note[3] Note[4] Note[5] 12 14 13 11 17 15
  16. 16. 16 CHAPITRE 3. LES TABLEAUX Nous disposons alors de cinq variables. Pour les nommer, on indique le nom du tableau suivi de son indice entrecrochets ou entre parenthèses : La première s’appelle Note[1], la deuxième Note[2], etc. Jusqu’à la dernière N[5].Note[4] représente le quatrième élément du tableau et vaut 11.3.3 Tableau à une dimension3.3.1 Déclaration La déclaration d’un tableau permet d’associer à un nom une zone mémoire composée d’un certain nombres decases de même type.Syntaxe : Variable identificateur : tableau [indice_ min ... indice_ max] de type ou bien Variable identificateur : tableau [taille ] de typeNotes :• Le premier élément d’un tableau porte l’indice zéro ou l’indice 1 selon les langages.• La valeur d’un indice doit être un nombre entier.• La valeur d’un indice doit être inférieur ou égale au nombre d’éléments du tableau. Par exemple, avec le tableautab[1 ... 20]. Ces expressions font référence à des éléments qui n’existent pas.Exemple :L’instruction suivante déclare un tableau de 30 éléments de type réel : Variables Note : tableaau[1 .. 20] de réelsNote : est le nom du tableau (identificateur).1 : est l’indice du premier terme du tableau.30 : est l’indice du dernier élément du tableau.Exercice :Déclaer deux tableaux només A et B composé chacun de 10 éléments de type chaine : Solution : Variables A, B : tableau[1.. 10] de chaîneRemarque :• Lorsqu’on déclare un tableau, on déclare aussi de façon implicite toutes les variables indicées qui le constituent.3.3.2 Utilisation Les éléments d’un tableau sont des variables indicées qui s’utilisent exactement comme n’importe quelle autrevariable classique. Elle peuvent faire l’objet d’une affectation, elles peuvent figurer dans une expression arithmétique,dans une comparaison, etc.L’utilisation de ces éléments se fait en suite, via le nom du tableau et son indice. Ce dernier peut être soit une valeur(exemple : Note[3]), soit une variable (exemple : Note[i]) ou une expression (exemple : Note[i+1]).Remarque :Il ne faut pas confondre l’indice d’un élément d’un tableau avec son contenu. Exemple :L’instruction suivante affecte à la variable X la valeur du premier élément du tableau Note :Syntaxe : X ←− Note[1]
  17. 17. 3.3. TABLEAU À UNE DIMENSION 17 Exemple :L’instruction suivante affiche le contenu du quatrième élément du tableau Note :Syntaxe : Écrire (Note[4])Exemple :L’instruction suivante affecte une valeur introduite par l’utilisateur à l’élément trois du tableau Note :Syntaxe : Lire (Note[3])Parcours d’un tableau Le fait que les éléments d’un tableau soient indicés permet de parcourir tous ces éléments ave un boucle, on uti-lisant une variable qui sert d’indice et s’incrémente à chaque tour de boucle.Exercice :Écrire un algorithmepermettant de saisir 30 notes et de les afficher après avoir multiplier ces notes par un coefficientfourni par l’utilisateur : Solution : Algorithme Tableau_ note Variables Note : Tableau[1 . . 30] de réels// //déclaration des variables Coef,i : entier Début Écrire("Entrez le coefficient") Lire(Coef) // Remplissage du tableau Pour i ←− jusqu’à 30 Faire Écrire("Entrez la valeur de la note ", i) Lire(Note[i]) FinPour //Affichage des notes*Coef Pour i ←− jusqu’à 30 Faire Écrire(Note[i]*Coef) FinPour FinExercice :Écrire un algorithmequi calcule la somme des élément d’un tableau :Solution :On suppose que le nombre d’élément du tableau ne dépasse pas 100.
  18. 18. 18 CHAPITRE 3. LES TABLEAUX Algorithme Somme_ Tableau Constante M=100 // //déclaration de la constante Variables T : Tableau[1 . . M] de réels // //déclaration des variables n,i : entier s : reel Début //Demande de la taille de du tableau Écrire("Entrez la taille du tableau") Lire(n) Si n >M alors N ←− M FinSi // Remplissage du tableau Pour i ←− jusqu’à n Faire Écrire("Entrez la valeur de l’élément ", i "du tableau) Lire(T[i]) FinPour //Calcul de la somme des éléments du tableau s ←− 0 Pour i ←− jusqu’à n Faire s ←−s + T [i ] FinPour Écrire("La somme des éléments de tableau est :" , s) Fin3.4 Tableau à deux dimensions Reprenons l’exemple précédent et supposons qu’un étudiant a plusieurs notes ( une note par matière).Pour quatre étudiants nous aurons le tableau de relevé de notes suivant : Étudiant 1 Étudiant 2 Étudiant 3 Étudiant 4 Informatique 12 13 9 10 Les tableau à deux dimensions se représentent Comptabilité 12.5 14 12 11 Mathématiques 15 12 10 13comme une matrice ayant un certain nombre de lignes (première dimension) et un certain nombre de colonnes(deuxième dimension).3.4.1 Déclaration Syntaxe :Syntaxe : Variable identificateur : tableau [1 . . nb_ lignes,1 . . nb_ colonnes] de type ou bien Variable identificateur : tableau [nb_ lignes,nb_ colonnes ] de typeExemple :L’instruction suivante déclare un tableau de note de type réel à deux dimension composé de 3 lignes et de 4 colonnes. : Variable Note : tableau [1 . . 3, 1 . . 4] de réels3.4.2 Utilisation Pour accéder à un élément de la matrice (tableau à deux dimensions), il suffit de préciser, entre crochets, les in-dices de la case contenant cet élément.Les éléments de la matrice peuvent être utilisés comme n’importe quelle variable.
  19. 19. 3.5. TABLEAU DYNAMIQUE 19Exemple :L’instruction suivante affecte à la variable X la valeur du premier élément du tableau Note. X ←− Note[1,1]3.4.3 Parcours complet d’un tableau à deux dimensions Pour parcourir une matrice nous avons besoin de deux boucles, l’une au sein de l’autre, c’est ce qu’on appelle desboucles imbriquées. La première par exemple est pour parcourir les lignes et la deuxième est conçue pour parcourirles éléments de la ligne précisée par la boucle principale (la première boucle).Exercice :Écrire un algorithmequi permet de saisir des notes d’une classe de 30 étudiants en 5 matières.Solution : Algorithme Note Constante N=30 //déclaration des constantes M= 5 Variables note : tableau[1 . .N, 1 . . M] de réels //déclaration des variables i,j : entier Début // Remplissage du tableau Pour i ←− 1 jusqu’à N Faire Pour j ←− 1 jusqu’à M Faire Écrire("Entrez la note de l’étudiant " , i, "dans la matière ", j) Lire(note[i,j]) FinPour FinPour Fin3.5 Tableau dynamique Les tableaux définis jusqu’à présent sont dit statiques, car il faut qu’au moment de l’écriture du programme leprogrammeur décide de la taille maximale que doit pourra atteindre le tableau. Si le programmeur donne un tailletrès grande alors qu’il n’a besoin que d’une petite taille, dans ce cas le programme consomme trop de mémoire. Danscertaines situations, on ne peut pas savoir à l’avance la taille du tableau.Les tableaux dynamiques sont des tableaux dont la taille n’est définie que lors de l’exécution. Pour Créer un tableaudynamique, il suffit de lui affecter une taille vide.Syntaxe :Variable identificateur : tableau [] de type FINIR CHAPITRE 3
  20. 20. 20 CHAPITRE 3. LES TABLEAUX
  21. 21. Chapitre 4Les fonctions prédéfinies4.1 Introduction Certains traitements sont complexes à effectuer par un aalgorithme. Par exemple, le calcul du cosinus d’un anglenécessite une formule complexe. Tous les langages de programmation ont un certain nombre de fonctions qui per-mettent de connaître immédiatement ce genre de résultat. certaines sont indispensables , car elles permettent d’effec-tuer des traitements qui, sans elles, seraient impossibles ; d’autre servent à soulager le programmeur, en lui épargnantde longs algorithmes.Tout langage de programmation dispose d’un ensemble de fonctions prédéfinies permettant de procéder à des conver-sions de type de données, de calcul mathématiques, de manipulation de chaînes de caractères etc.4.2 Les fonctions de chaînes de caractères Une chaîne est une séquence de caractères dont la longueur correspond au nombre de caractères qu’elle contient.Si une chaîne est vide , sa longueur est nulle. Dans tous les autres cas, elle est égale à un entier positif.4.2.1 Longueur d’une chaîne Syntaxe :Syntaxe : longueur(ch)Cette fonction retourne (renvoie) le nombre de caractères de la chaîne. Exemple :L’instruction suivante affecte une valeur introduite par l’utilisateur à l’élément trois du tableau Note :Syntaxe : longueur("bonjour")Cette fonction retourne 74.2.2 La fonction de concaténation de chaînes La concaténation est juxtaposition de deux chaînes (ou plus) afin de n’en former qu’une seule. Syntaxe : concat(ch 1, ch 2)Cette fonction retourne une chaine formée par la concaténation de ch 1 et de ch 2. 21
  22. 22. 22 CHAPITRE 4. LES FONCTIONS PRÉDÉFINIESLa chaîne obtenue est formée de ch 1 suivie de ch 2.Exemple : Concat("Bonjour","Monsieur") Concat("Bonjour","Monsieur") Concat("Bonjour," ", Monsieur")Le résultat de la première instruction est : Bonjour Monsieur.Le résultat de la deuxième instruction est : BonjourMonsieur.Le résultat de la troisième instruction est : Bonjour Monsieur.4.2.3 La copie de chaînes Syntaxe : copie(ch 1, position, n)Cette fonction (recopie une partie de la chaîne 1 à partir de la position précisée par l’expression entière position, enlimitant la recopie au nombre de caractères précisé par l’entier n.Exemple : Copie("Bonjour",4,4)Cette fonction retourne la chaine jour.4.2.4 La fonction de comparaison de chaînes Syntaxe : comp(ch 1, ch 2)Cette fonction compare deux chaînes de caractères en utilisant l’ordre des caractères défini par le code ASCII. Ellefournit une valeur entière définie comme étant : −− positive si si chaîne 1 < chaîne 2 ;−− nulle si chaîne 1 = chaîne 2, c’est-à-dire si les deux chaines ont le contiennent exactement la même suite de carac-tère ;−− négative si chaine 1 < chaîne 2.Exemple : Comp("Bonjour"," Monsieur")Cette fonction retourne une valeur négative.4.2.5 La fonction recherche dans une chaîne Il existe des fonctions de recherche dans une chaine de caractère de l’occurrence d’un caractère ou d’une autrechaîne de caractères. Syntaxe : recherche(ch 1, caractère)Cette fonction recherche, dans la chaîne, ch 1, la première position où apparait le caractère mentionné. recherche(ch 1, ch 2)Cette fonction recherche dans la chaîne ch 1, la première occurrence complète de la chaîne ch 2. Elle renvoie unnombre correspondant à la position de la chaîne ch 2 dans la chaîne ch 1. Si la chaîne ch 2 n’est pas comprise dans lachaîne ch 1, la fonction renvoie zéro.Exemple : recherche("Bonjour Monsieur", "jour")
  23. 23. 4.3. LES FONCTIONS MATHÉMATIQUES 23Cette fonction retourne 4.4.3 Les fonctions mathématiques Les fonctions mathématiques prédéfinies permettent la réalisation d’un traitement mathématique sur des don-nées numériques. Fonction Description Exemple Résultat Ent(nombre) Retourne la partie entière du nombre x ←−Ent( 2.3) x= 2 Abs(Nombre) Retourne la valeur absolue du nombre x ←− Abs(- 2) x= 2 Cos(Angle) Retourne une valeur spécifiant le cosinus x ←−cos(0) x=1 d’un angle Sin(angle) Retourne une valeur spécifiant le sinus x ←−sin(0) x=O d’un angle ... .. ... ... Sqrt(nombre) Retourne la racine carrée d’un nombre x ←−Sqrt(9) x=3 positif Alea() Retourne un nombre aléatoire compris x ←− Alea() 0≤x <1 dans [0, 1[La fonction Alea revoie un nombre aléatoire compris entre 0 et 1. Pour obtenir une valeur entière comprise entre minet max, on utilise la formule suivante : Ent ((max − mi n + 1) ∗ Alea() + mi n) Exemple :Générer un nombre aléatoire X compris entre 1 et 100. Syntaxe : X ←− Ent(100*Alea()+1)
  24. 24. 24 CHAPITRE 4. LES FONCTIONS PRÉDÉFINIES
  25. 25. Chapitre 5Procédures et Fonctions5.1 Introduction Lorsque l’on progresse dans la conception d’un algorithme, ce dernier peut prendre une taille et une complexitécroissante. De même des séquences d’instructions peuvent se répéter à plusieurs endroits.Un algorithmeécrit d’un seul tenant devient difficile à comprendre et à gérer dès qu’il dépasse deux pages. La solutionconsiste alors à le découperen plusieurs partie plus petites. Ces parties sont appelées des sous Algorithmes.Le sous-algorithmeest écrit séparément du corps de l’algorithmeprincipal et sera appelé par celui-ci quand ceci seranécessaire.Il existe deux sortes de de sous-algorithmes : les procédures et les fonctions.5.1.1 Les procédures Une procédure est une série d’instructions regroupées sous un nom, qui permet d’effectuer des actions par unsimple appel de la procédure dans un algorithmeou dans un sous-algorithme.Une procédure renvoie plusieurs valeurs ou aucune.5.1.2 Déclaration d’une procédure Syntaxe : Procédures nom_ proc(liste de paramètres) Variable identificateurs :type début Instruction(s) FinProcAprès le nom de la procédure, il faut donner la liste des paramètres (s’il y en a ) avec leur type respectif. Ces paramètressont appelés paramètres formels. Leur valeur n’est pas connue lors de la création de la procédure. Exemple :Écrire une procédure qui affiche à l’écran une ligne de 15 étoiles puis passe à la ligne suivante. Solution : Procédure Etoiles() Variables i : entier Début Pour i ←−1 jusqu’à 15 Faire Écrire("*") FinPour // n : retour à la ligne Écrire(" n ") FinProc 25
  26. 26. 26 CHAPITRE 5. PROCÉDURES ET FONCTIONS5.1.3 L’appel d’une procédure Pour déclencher l’exécution d’une procédure dans un programme, il suffit de l’appeler.L’appelle s’écirt en mettant le nom de la procédure, puis la liste des paramètres, séparés par des virgules.Á l’appelle d’une procédure le programme interrompt son déroulement normal, exécute les instructions de la procé-dure, puis retourne au programme appelant et exécute l’instruction suivante. Syntaxe : Nom_ proc(liste de paramètres)Les paramètres utilisés lors de l’appel d’une procédure sont appelés paramètres effectifs. Ces paramètres donnerontleurs valeurs aux paramètre formels. Exemple :En utilisant la procédure Etoiles déclarer dans l’exemple précédent, écrire un algorithmepermettant de dessiner uncarré d’étoiles de 15 lignes. Solution : Algorithme Carré_ étoiles Variables Note : j entier // déclaration de la procédure Etoiles() Procédure Etoiles() Variable i : entier Début Pour i ←− jusqu’à 15 Faire Écrire("*") FinPour Écrire(" n ") FinProc //Algorithme principal (Partie principale) Début Pour j ←−1 jusqu’à 15 Faire // Appel de la procédure Etoiles Etoiles() FinPour FinRemarques : 1 . Pour exécuter un algorithmequi contient des procédures et des fonctions, il faut commencer l’exécution à par- tir de la partie principale. 2 . Lors de la conception d’un algorithme deux aspects apparaissent : • la définition (déclaration) de la procédure ou fonction ; • l’appel de celles-ci au sein de l’algorithme principal.5.1.4 Passage de paramètres Les échanges d’informations entre une procédure et sous algorithme appelant se font par l’intermédiaire de para-mètres.Il existe deux principaux types types de passages de paramètres qui permettent des usages différents :Passage par valeur : Dans ce type de passage le paramètre formel reçoit uniquementune copie de la valeur du paramètre effectif. Lavaleur du paramètre effectif ne sera jamais modifiée. Exemple :Soit l’algorithme suivant :
  27. 27. 5.1. INTRODUCTION 27 Algorithme Passage_ par_ valeur Variables N : entier // Déclaration de la procédure P1 Procédure P1(A : entier) Début A ←− A*2 Ecrire (A) FinProc //Algorithme principal Début N ←− 5 P1(N) Ecrire (N) FinCet algorithme définit une procédure P1 pour laquelle on utilise le passage de paramètre par valeur.Lors de l’appel de la procédure, la valeur du paramètre effectif N est recopié dans le paramètre formel A. La procédureeffectue alors le traitement et affiche la valeur de la variable A, qui vaut 10.Après l’appel de la procédure, l’algorithme affiche la valeur de la variable N qui est 5.La procédure ne modifie pas le paramètre qui est passé par valeur.Passage par référence ou par adresse Dans ce type de passage, la procédure utilise l’adresse du paramètre effectif. Lorsqu’on utilise l’adresse du para-mètre, on accède directement à son contenu. La valeur de la variable effective sera modifiée.Les paramètres passés par adresse sont précédés du mot clé Var.Exemple :Reprenons l’exemple précédent : Algorithme Passage_ par_ référence Variables N : entier // Déclaration de la procédure P1 Procédure P1(Var A : entier) Début A ←− A*2 Ecrire (A) FinProc //Algorithme principal Début N ←− 5 P1(N) Ecrire (N) FinÁ l’exécution de la procédure, l’instruction Écrire (A) permet d’afficher à l’écran 10. Au retour dans l’algorithme prin-cipal, l’instruction Écrire(N) affiche également 10.Dans cet algorithme le paramètre passé correspond à la référence (adresse) de la variable N. Elle est modifiée parl’instruction : A ←− A*2Remarque : Lorsqu’il a plusieurs paramètres dans la définition d’une procédure, il faut absolument qu’il y ait le mêmenombre à l’appel et que l’ordre soit respecté.5.1.5 Les fonctions Les fonctions sont des sous algorithmes admettant des paramètres et retournant un seul résultat (une seule valeur)de type simple qui peut apparaitre dans une expression, dans une comparaison, à la droite d’une affectation, etc.5.1.6 Déclaration d’une fonction Syntaxe :
  28. 28. 28 CHAPITRE 5. PROCÉDURES ET FONCTIONS Fonction nom _ fonction(liste de paramètres) : type Variables identificateurs : type Début Instruction (s) Retourner expression FinFonctionLa syntaxe de déclaration d’une fonction est assez proche de celle d’une procédure à laquelle on ajoute un type quireprésente le type de la valeur retournée par la fonction et une instruction Retourner Expression. Cette dernièreinstruction renvoie au programme appelant le résultat de l’expression placée à la suite du mot clé retourner.Les paramètres sont facultatifs, mais s’il n’y a pas de paramètres, les parenthèses doivent rester présentes.Exemple :Définir une fonction qui renvoie le plus grand de deux nombres différents :Solution : //Déclaration de la fonction Max Fonction Max(X : réel, Y : réel) : réel Algorithme Passage_ par_ valeur Variables N : entier // Déclaration de la procédure P1 Début Si X > Y alors Retourner X Sinon Retourner Y FinSi FinFonctionL’appel d’une fonction Pour exécuter une fonction, il suffit de faire appel à elle en écrivant son nom suivie des paramètres effectifs. C’estla même syntaxe qu’une procédure.Á la différence d’une procédure, la fonction retourne une valeur. L’appel d’une fonction pourra donc être utilisé dansune instruction (affichage, affectation, . . .) qui utilise sa valeur. Syntaxe : Nom_ Fonc(liste de paramètres)Exemple :Écrireun algorithme appelant, utilisant la fonction Max de l’exemple précédentSolution :
  29. 29. 5.1. INTRODUCTION 29 Algorithme Appel_ fonction_ Max Variables A, B, M : réel // Déclaration de la fonction Max Fonction Max (X : réel, Y : réel) : réel Début Si X > Y alors Retourner X Sinon Retourner Y FinSi FinFonction //Algorithme principal Début Écrire ("Donner la valeur de A") Lire (A) Écrire ("Donner la valeur de B") Lire (B) // Appel de la fonction Max M ←− Max(A,B) Écrire (" Le plus grand de ces deux nombres est :" , M) Fin5.1.7 Portée des variables La portée d’une variable désigne le domaine de visibilité de cette variable. Une variable peut être déclarée dansdeux emplacements distincts.Une variable déclarée dans la partie déclaration de l’algorithmeprincipal est appelée variable globale. Elle est acces-sible de n’importe où dans l’algorithme, même depuis les procédures et les fonctions. Elle existe pendant toute ladurée de de vie du programme.Une variable déclarée à l’intérieur d’une procédure (ou une fonction) est dite locale. Elle n’est accessible qu’à la pro-cédure au sein de laquelle est est définie, les autres procédures n’y on pas accès. La durée de vie d’une telle variable(locale) est limité à la durée d’exécution de la procédure.Exemple : Algorithme Portée Variables X, Y : Entier X et Y sont deux variables globales, visibles dans tout le programme. Procédure P1() Vaviable A : entier A est une variable locale, visible uniquement à l’intérieur de la procédure. Début ... FinProc //Algoritme principal Début ... Fin Remarque : Les variables globales sont à éviter pour la maintenance des programmes.5.1.8 La récursivité Une fonction ou une procédure est dite récursive si elle s’appelle elle même.Exemple : Écrire une fonction récursive permettant de calculer la factorielle d’un entier positif.Solution :n !=n*(n-1)*(n-2)...*3*2 ; n !=n*(n-1) !
  30. 30. 30 CHAPITRE 5. PROCÉDURES ET FONCTIONS //Déclaration de la fonction Factorielle (Fact) Fonction Fact(n : entier) : entier Début Si n > 1 alors retourne (fact(n-1)*n) Sinon retourne 1 FinSi FinFonctionDans cet exemple, la fonction renvoie 1 si la valeur demandée est inférieure à 1, sinon elle fait appel à elle même avecun paramètre inférieur de 1 par rapport au précédent. Les valeurs de ces paramètres vont en décroissant et attein-dront à un moment la valeur 1. Dans ce cas, il n’y a pas d’appel récursif et donc ont sort de la fonction.Remarque : Toute procédure ou fonction récursive comporte une instruction (ou un bloc d’instruction) nommée"point terminal" permettant de sortir de la procédure ou de la fonction.Le point terminal dans la fonction récursive Fact est : retourne 1.5.1.9 Avantage des procédures et de fonctions • Le procédures ou fonctions permettent de ne pas répéter plusieurs fois une même séquence d’instruction ausein du programme (algorithme).• La mise au point du programme est plus rapide en utilisant des procédures et des fonctions. En effet, elles peuventêtre réalisées en dehors du contexte du programme et appelées après par le programme.• Une procédure peut être intégrée à un autre programme, ou elle pourra être rangée dans une bibliothèque d’outils.
  31. 31. Chapitre 6Exercices6.1 T D 1 : Instructions de base d’un algorithme Exercice 1 : Moyenne de deux nombresÉcrire un algorithmepermettant de calculer la moyenne de deux entiers. Exercice 2 :Une entreprise accorde à ses clients, une remise de 3% sur le montant d’achat. Écrire un algorithmepermettant desaisir le montant d’achat MA et de calculer le montant de la remise R ainsi que le montant à payer MP. Exercice 3 : Écrire un algorithme qui permute les valeurs de deux variables. Exercice 4 : Évaluation des expressions Donner les valeurs des variables a, b, c, d ,e, g, h, i, j et k. Expression Valeur de la variable a ←− 7/2 b ←−7 Div 2 c←− 7 Mod 2 d←−’t’< ’w’ e←− "Maman" > "Papa" f←− (6 = 2) g←− maman > "papa" h←− Non(5=2) i←− (4 < 6) et (9> 5) j←− (2 < 0) ou ((4<> 4) k ←− ’A’ < ’a ’ Exercice 5 : Équivalent d’une expressionDonner l’équivalent des expressions booléennes suivantes en utilisant uniquement les opérateurs logiques : Et, Ou,Non. Expression Équivalent x=2 x<2 x-2 > 7 0 < X <3 3*x > 18 a OUex b Non (x ≥ 0) Non (Note < 0 ou Note > 20) 31
  32. 32. 32 CHAPITRE 6. EXERCICESExercice 6 : Priorité des opérateursEn se basant sur les règles de priorité donnez les valeurs des variables suivantes. a ←− 4*2 + 5 b ←− 5+ 3*2- 6 c ←− a > b Et 7 ± 2 Ou a < b d ←− a > 7 Et 7 = 2 Ou a < b6.2 T D 2 : Les Structures alternatives et répétitives à Exercice 1 : ParitéÉcrire un algorithme qui détermine si un nombre entier n est pair ou impair.Exercice 2 : Maximum de deux nombres Écrire un algorithme qui permet d’afficher le maximum de deux nombres saisis au clavier. Exercice 3 : Écrire un algorithme qui teste si une note saisie au clavier est comprise entre 0 et 20.Exercice 4 : Nombre de racines d’une équation du second degréÉcrire un algorithme permettant de déterminer le nombre de racines de l’équation : ax 2 + bx + c = 0, a=0Exercice 5 : Équation du premier degréÉcrire un algorithme qui permet de résoudre l’équation : ax + b = 0Exercice 6 : Simulation d’une calculatrice (4 touches)Écrire un algorithme qui permet de saisir deux variables réelles a et b et un opérateur : +, -, *, / et d’afficher le résultat.Exercice 7 : MentionÉcrire un algorithme qui lit la moyenne générale MG d’un étudiant et affiche la mention.Exercice 8 : Maximum de dix nombresÉcrire un algorithme qui permet d’afficher le maximum parmi dix nombres saisis au clavier.Exercice 9 : Factorielle d’un nombre entierÉcrire un algorithme permettant de saisir un nombre entier naturel non nul n et de calculer sa factorielle.Exercice 10 : Moyenne des notesÉcrire un algorithme permettant de saisir N notes, de calculer leur somme et leur moyenne.Exercice 11 : Rectangle d’étoilesÉcrire un algorithme qui affiche à l’écran le rectangle d’étoiles qui contient 10 lignes de 19 étoiles Exercice 12 : Tri-angle d’étoilesÉcrire un algorithme qui affiche à l’écran le triangle : * * * * * * * * * * * * * * *
  33. 33. 6.3. T D 3 : OPÉRATIONS SUR LES TABLEAUX 33Exercice 13 : Pyramide d’étoilesÉcrire un algorithme qui affiche à l’écran la pyramide d’étoiles ci-dessous. Chaque ligne comporte 19 caractères (es-paces ou étoiles) * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * : * * * * * * * * * * * * * * * * * * * * * * * * *Exercice 14 : PGCDÉcrire un algorithme qui calcul le PGCD de deux nombres entier non nuls a et b (a>b).Exercice 15 : Suite numériqueSoit la suite numérique U n définie par : Si n = 0 U0 = 4 Si n > 0 U n = 5U n−1 + 9Écrire un algorithme qui calcule le terme U n et la somme S n = U 0 +U 1 + ... +U nExercice 16 : Suite de FibonacciÉcrire un algorithme qui détermine le terme U n de la suite de Fibonacci définie comme suit : U0 = 4 U1 = 1 U n = U n−1 +U n−2 , si n > 26.3 T D 3 : Opérations sur les tableaux Exercice 1 : Nombre de moyennes 10En utilisant les tableaux, écrire an algorithme qui permet la saisie d’une liste de n moyennes réelles et d’afficher lenombre de moyennes supérieures ou égales à 10. On supposera que n <100)Exercice 2 : Permutation des éléments d’un tableauÉcrire un algorithme qui permute les éléments d’un tableau de 8 éléments en plaçant le dernier en premier et ainsi desuite, voir exemple suivant. 12 34 5 43 55 56 23 1 Tableau initial 1 23 56 55 43 5 34 12 Tableau finalExercice 3 : Maximum des moyennes d’une classeÉcrire un algorithme qui permet la saisie des moyennes d’une classe de n étudiants et affiche le maximum.Exercice 4 : Trier un tableauÉcrire un algorithme qui permet la saisie de 4 moyennes et de les classer selon l’ordre croissant.
  34. 34. 34 CHAPITRE 6. EXERCICESExercice 5 : Tableau à deux dimensionsÉcrire un algorithme qui permet :• la saisie des notes d’une classe de 15 étudiants en 4 matières ;• calcule et affiche la moyenne de chaque étudiant ;• calcule et affiche la moyenne de la classe dans chaque matière ;• calcule et affiche la moyenne générale de la classe.Exercice 6 : Produit de deux matricesÉcrire un algorithme qui calcule la matrice C qui est le produit de deux matricesA nm et B nk6.4 T D 4 : Les structures Exercice 1 : Structure personneÉcrire un algorithme qui :• Définit une structure Personne qui contient trois champs : nom, prénom et âge.• déclare deux variables étudiant 1 et étudiant 2 de type personne.Calcule la différence d’âge entre les deux étudiants.Exercice 2 : Structure imbriquéeÉtudiant est une structure composée de trois champs : nom, prénom, date_ de_ naissance. Nom et prénom sont detype chaîne. Date_ de_ naissance est de type N_ DateN_ Date est une structure composée de trois champs : jour, mois et année. Jour et année sont de type entiers, mois detype chaîne.Écrire un algorithme qui permet de saisir et d’afficher l’année de naissance d’un étudiant.6.5 T D 5 : Les fonctions prédéfinies Exercice 1 : Nombre de mots dans une phraseÉcrire un algorithme qui permet de saisir une chaîne de caractères et d’afficher le nombre de mots la composant.Exercice 2 : Nombre de voyelles dans une phraseÉcrire un algorithme qui permet de saisir une chaîne de caractères et d’afficher le nombre de voyelles contenues danscelle ci en utilisant la fonction recherche.Exercice 3 : Remplacement d’un caractère par un autre.Soit une phrase qui contient des mots séparés par des slashes ≪ / ≫ , par exemple :"Dupitre/ Jean et ac / Étudiant En SIO / Tel 0606061243.Écrire un algorithme qui remplace les ≪ / ≫ en ;Exercice 4 : Affichage d’une chaîne en inverseÉcrire un algorithme qui permet de saisir une chaine de caractères et l’afficher en inverse.Exercice 5 : Concaténation des chaînes de caractèresÉcrire un algorithme qui demande à l’utilisateur d’entrer une chaine de caractère (une date) sous la forme JJMMAA etqui affiche cette datte sous la forme JJ/MM/AA.6.6 T D 6 : Les fonctions et procédures Exercice 1 : Fonction Moyenne
  35. 35. 6.6. T D 6 : LES FONCTIONS ET PROCÉDURES 35En se basant sur l’algorithme de l’exercice 1 du T D 1, écrire le sous-algorithme de la fonction Moyenne qui revoie lamoyenne de deux entiers.Écrire un algorithme qui contient la déclaration de la fonction moyenne et des instructions qui appellent cette fonc-tion.Exercice 2 : fonction f (x) = 3x 3 + 4x + 8Écrire un algorithme qui contient la déclaration de la fonction f (x) = 3x 3 + 4x + 8 et affiche le résultat pour x=1, X=2et x=2.7.Exercice 3 : Fonction PGCD récursiveÉcrire un algorithme qui calcule le PGCD de deux entiers naturels a et b non nuls (a>b) en utilisant une fonction ré-cursive.Exercice 4 : Fonction somme récursiveÉcrire un algorithme qui calcule : S n = 1 + 2 + 3 + ... + (n1 ) + n en utilisant une fonction récursive.Exercice 5 :Exercice 6 :Exercice 7 :Exercice 8 :Exercice 9 :Exercice 10 :Exercice 11 :

×