Algorithmique Cours Et Exercices

download Algorithmique Cours Et Exercices

of 134

Transcript of Algorithmique Cours Et Exercices

www.MathsMak.com

Algorithmique

1

Introduction Introduction

Pour qu'un ordinateur fonctionne, il est ncessaire de lui dire quoi faire Toute action ralise par une machine a t programme par un tre humain. un ordinateur ne dcide rien, il fait "btement" ce qu'il lui a t programm.

2

Mais qu'est-ce quun programme? Mais qu'est-ce quun programme?

Un programme est donc une suite d'instructions excutes par la machine.

La machine a son propre langage appel langage machine.

3

Algorithme Algorithme

Est une suite de rgles applique dans un ordre dtermin. Est une suite dinstructions crite en langage dalgorithme qui rsout un problme et qui sont excutable par nimporte quelle machine.

Le rle de lalgorithme est fondamental, on effet sans lalgorithme il n y aura pas de programme.

4

Mthodologie Mthodologie

La rsolution dun problme sur ordinateur est caractris par 4 tapes : Comprendre la nature du problme pos Prciser les donnes fournies (entres) Prciser les rsultas que lon dsire obtenir (Sorties) Dterminer le processus de transformation des donnes en rsultats.

5

Comment on programme ? Comment on programme ?

nous allons utiliser un pseudo-langage, comportant toutes les structures de base d'un langage de programmation.

ensuite on traduit notre "pseudo" en langage volu en fonction des possibilits de ce langage.

Ce langage sera ensuite traduit en langage machine.

6

Un programme est donc une suite d'instructions excutes par Un programme est donc une suite d'instructions excutes par la machine. la machine.

Ces instructions peuvent : soit s'enchaner les unes aprs les autres, on parle alors de squence d'instructions; ou bien s'excuter dans certains cas et pas dans d'autres, on parle alors de structure alternative; ou se rpter plusieurs fois, on parle alors de structure rptitive.

7

La squence d'instructions La squence d'instructions Une instruction est une action que l'ordinateur est capable d'excuter. Une squence d'instruction serait : Se lever Prendre sa douche Prendre le petit djeuner S'habiller Vous voyez que l'ordre des instructions a de l'importance : "S'habiller" puis "prendre sa douche" conduit un rsultat pas gnial que nous appellerons un "bug".

Cependant certaines instructions peuvent se drouler dans un ordre indiffrent

8

structure alternative structure alternativeUne alternative s'exprime par si .. sinon

Si fin de semaine ou cong Se lever Prendre son petit djeuner Prendre sa douche Mettre sa tenue de sport Faire son jogging Sinon Se lever Prendre son petit djeuner Prendre sa douche Mettre sa tenue de travail Aller travailler Fin Si9

Optimisation OptimisationQue la condition soit ralise (condition vraie) ou qu'elle ne le soit pas (condition fausse) les premires actions sont les mmes et se passent dans le mme ordre ce qui permet la simplification suivante : afin de permettre une meilleure lisibilit; on parle d'indentation.

Se lever Prendre son petit djeuner Prendre sa douche Si fin de semaine ou cong Mettre sa tenue de sport Faire son jogging Sinon Mettre sa tenue de travail Aller travailler Fin Si

10

structure rptitive (itrative ) structure rptitive (itrative )La routine journalire dun employ est : Ouvrir guichet Appeler premier client Tant que client dans file d'attente et pas fin de journe Traiter client Appeler client suivant FinTantQue Les deux actions "Traiter client" et "Appeler client suivant" vont se rpter tant que la condition situe derrire l'instruction "Tant que" est vrifie.

11

Considrons maintenant le programme complet de la journe

Se lever Prendre son petit djeuner Prendre sa douche Si fin de semaine ou cong Mettre sa tenue de sport Faire son jogging Passer une journe de dtente Sinon Mettre sa tenue de travail Aller travailler Faire travail FinSi Rentrer la maison Dner Aller se coucher12

Considrons maintenant le programme complet de la journe (Suite) Fonction travail Ouvrir guichet Appeler premier client Tant que pas heure de djeuner Faire guichet FinTantQue Djeuner Tant que client et pas heure de sortie Faire guichet FinTantQue Fin Fonction Fonction Guichet Si client en file d'attente Traiter client Appeler client suivant Sinon Classer FinSi Fin Fonction13

Explication Explicationfonction Travail pour une meilleure lisibilit du programme.

On a cr une fonction guichet afin de ne pas rpter la mme squence d'instructions deux fois dans le programme. Notre programme a donc t scind en deux parties : le corps du programme de la ligne 1 la ligne 15 les fonctions ou sous-programmes internes partir de la ligne 17.

Comment cela se passe-t-il lorsque nous rencontrons un appel de fonction ?

14

Les variables Les variablesUne variable est une zone mmoire quelle peut varier le contenu au cours de lexcution du programme : son nom est appel Identificateur X Case Mmoire Y X 3 Y 4

Mmoire centrale variable est caractrise par : une adresse c'est dire un emplacement dans la mmoire de la machine, un type permettant d'indiquer la nature de l'information contenue, ventuellement une longueur .

15

Les types de variables Les types de variables

Les variables que l'on utilise dans les programmes ne sont pas toutes de mme nature

il y a des nombres, des caractres, ... On dit que les variables sont types. Il est ncessaire de donner un type aux variables, pour contrler leur utilisation (ex: on ne peut pas diviser un caractre par un entier )

16

Gnralement les langages de programmation offrent les types suivants entier : il s'agit des variables destines contenir un nombre entier positif ou ngatif. ENTIER variable, variable, ... ; rel : il s'agit des variables numriques qui ne sont pas des entiers, c'est dire qui comportent des dcimales REEL variable, variable, ... ; caractre : Les variables de type caractre contiennent des caractres alphabtiques ou numriques (de 0 9) CAR variable , variable , ...; boolen : Il est souvent ncessaire lorsque l'on crit un programme d'introduire des variables qui prennent les valeurs vrai ou faux ou les valeurs oui ou non. BOOLEEN variable, variable, ... ;17

Les oprateurs Les oprateurs

Arithmtique : +; /; -; *; mode Comparaison : =; =; Logique : ET; OU; NON; OR

18

L'affectation L'affectation Affecter une valeur une variableX:= 3 , On charge la variable X avec la valeur 3

X 3

Affecter le contenu dune variable une autre variableX:= Y , On charge X avec le contenu de Y

Y X 3 3

19

L'affectation (suite) L'affectation (suite) Affecter une formule une variableX:= X + 2 * Y , On charge la variable X par la valeur du rsultat de la formule et on crase sa valeur initiale

X 3

Y 4

X=3+2*4

11

20

Lecture et Affichage des donnes Lecture et Affichage des donnes* Lecture A partir du clavier Syntaxe : Lire(Variable) Exemple Lire(A) : on saisie une valeur pour la stocker aprs dans la variable A

* Affichage sur cran Syntaxe : crire(Variable) Exemple crire (A) : Afficher la valeur de la variable A sur cran

21

La syntaxe du pseudo-langage La syntaxe du pseudo-langageUn programme comportera : o Une partie dclaration o Une partie encadre par dbut fin o sont dcrites les actionsprogramme : dclarations; DEBUT FIN Actions

Dans la partie dclarations, nous trouvons : dclaration de variables dclaration de fonction Dans la partie actions, nous trouvons : suite d'instructions alternative rptitive

22

Des Questions ?23

squence d'instructions

Exercice 1 Exercice 1

crire un algorithme qui permet de saisir des valeurs pour A et B , faire la somme et afficher le rsultat? Solution :

24

squence d'instructions

Exercice 2 Exercice 2

crire un algorithme qui permet de calculer et afficher la surface dun cercle? Solution :

25

squence d'instructions

Exercice 3 Exercice 3

crire un algorithme qui permet de calculer et afficher le salaire brut dun ouvrier connaissant le nombre dheure et le tarif dhoraire? Solution :

26

squence d'instructions

Exercice 4 Exercice 4

crire un algorithme qui fait la conversion dune somme dargent donne en DH ,en une somme dargent en Euro? Solution :

27

structure alternative structure alternativeSyntaxe 1 : Si condition AlorsActions 1

FinSi Syntaxe 2 :

ActionsN

. . .

Si condition Alors

Actions 1

Sinon

ActionsN Actions 1

. . .

ActionsN

. . .

FinSi On peut utiliser des structures alternatives imbriques On peut utiliser des structures alternatives imbriques

28

structure alternative

Exercice Exercice

On dsire comparer deux valeurs ,crire un algorithme qui affiche la plus grande des deux? Solution :

29

structure alternative

Exercice 1 Exercice 1

crire un algorithme qui affiche le salaire brut dun ouvrier sachant que les heures supplmentaires de 172 heures sont payes 50% de tarifs dhoraire en plus? Solution :

30

structure alternative

Exercice 2 Exercice 2

Afficher le rsultat de fin danne pour un tudiant connaissant sa moyenne gnrale? Solution :

31

structure alternative

Calculer le montant de la facture dun client ayant command une quantit dun produit avec un prix unitaire hors taxe Le taux de T.V.A est : 20% Les frais de transport sont 0.8 DH de Km , Le client est dispos du frais de transport si le montant est suprieur 4500 DH Solution :

Exercice 3 Exercice 3

32

structure alternative

Une bibliothque fait des rductions sur lachat des livres : 25% pour les tudiants. 15% pour les enseignants crire un algorithme qui calcule et affiche le prix payer selon le type du client? Solution :

Exercice 4 Exercice 4

33

Des exercices supplmentaires ? supplmentaires34

structure alternative

Exercice 1 Exercice 1

crire un algorithme qui calcule et affiche le maximum de trois nombre A,B et C ? Solution :

35

structure alternative

Exercice 2 Exercice 2

crire un algorithme qui permet de rsoudre lquation du premier degr : aX+b=0? Solution :

36

structure alternative

Exercice 3 Exercice 3

crire un algorithme qui permet de rsoudre une quation de second degr : aX+bX+c=0 ? Solution :

37

structure alternative

Exercice 4 Exercice 4

crire un algorithme qui lie trois nombre A,B et C , puis il dtermine si lun est gal la somme de 2 autres sinon il affiche un message pas de solution ? Solution :

38

structure alternative

Un patron dcide de calculer le montant de la participation au prix du repas de ses employs de la faon suivante : o o o Sil est clibataire : participation 20% du pris de repas Sil est marie : participation 25% du pris de repas. Sil a des enfants : participation 10% supplmentaire par enfant.

Exercice 5 Exercice 5

La participation est plafonne 50%. Si le salaire mensuel est infrieur 6000 DH, la participation est majore 10%. Solution :

39

structure alternative

Exercice 6 Exercice 6

crire un algorithme qui partir dun nombre compris entre 1 et 7 affiche le jour correspondant? Solution :

40

structure alternative

Exercice 7 Exercice 7

Le reprsentant dune socit de distribution des produits daffichage lectroniques sont rmunrs de faon suivante :un fixe mensuel de 4000 DH une commission a pourcentage variable sur chaque tranche du chiffre daffaire mensuel : une commission de 5% pour un chiffre daffaire compris entre 0 et 1000. une commission de 10% pour un chiffre daffaire compris entre 1000 et 3000. une commission de 14% pour un chiffre daffaire suprieur 3000.

crire un algorithme qui permet de calculer et afficher le montant total de la rmunration de chaque reprsentant.

41

structure alternative

Solution Ex 7 Solution Ex 7

42

structure alternative

Exercice 8 Exercice 8

Le service des prts dune bibliothque adapter le rglement suivant : tous les lecteurs de la catgories A peuvent empreinter des livres pour une dure maximale de 20 jours. un lecteur de la catgorie B peut conserver des livres pour une dure maximale de 30 jours. un lecteur de la catgorie C peut conserver des livres pour une dure maximale de 45 jours. Aucun lecteur ne pourra avoir en sa possession plus de 5 ouvrages. crire un algorithme qui affiche la dure dempreinte et est ce quil a le droit dempreinter ?

43

structure alternative

Solution Ex 8 Solution Ex 8

44

Les Boucles A quoi cela sert-il donc ?Prenons le cas dune saisie au clavier (une lecture), o par exemple, le programme pose une question laquelle lutilisateur doit rpondre par O (Oui) ou N (Non). Mais tt ou tard, lutilisateur, risque de taper autre chose que la rponse attendue. le programme peut planter soit par une erreur dexcution (parce que le type de rponse ne correspond pas au type de la variable attendu) soit par une erreur fonctionnelle . Alors, on met en place ce quon appelle un contrle de saisie, afin de vrifier que les donnes entres au clavier correspondent bien celles attendues par lalgorithme. on pourrait essayer avec un SI. Voyons voir ce que a donne :

Variable Rep en Caractre Dbut Ecrire "Voulez vous un caf ? (O/N)" Lire Rep Si Rep "O" et Rep "N" Alors Ecrire "Saisie erronne. Recommencez" Lire Rep FinSi Fin

45

Le principe est simple : le programme arrive sur la ligne du TantQue. Il examine alors la valeur du boolen (qui, je le rappelle, peut tre une variable boolenne ou, plus frquemment, une condition). Si cette valeur est VRAI, le programme excute les instructions qui suivent, jusqu ce quil rencontre la ligne FinTantQue. Il retourne ensuite sur la ligne du TantQue, procde au mme examen, et ainsi de suite. Le mange enchant ne sarrte que lorsque le boolen prend la valeur FAUX. Illustration avec notre problme de contrle de saisie. Une premire approximation de la solution consiste crire :

Variable Rep en Caractre Dbut Ecrire "Voulez vous un caf ? (O/N)" Lire Rep TantQue Rep "O" et Rep "N" Lire Rep FinTantQue Fin46

Variable Rep en Caractre Dbut Ecrire "Voulez vous un caf ? (O/N)" Lire Rep TantQue Rep "O" et Rep "N" Ecrire "Vous devez rpondre par O ou N. Recommencez" Lire Rep FinTantQue Ecrire "Saisie accepte" Fin

47

Structure rptitive(itrative) Structure rptitive(itrative)Structure rptitive permet de rpter une ou plusieurs actions un certain nombre de fois. On identifie en rgle gnrale 3 types de rptitive :

Tant que Faire Jusqu' Pour

48

structure rptitive 1 structure rptitive 1Tant que Les rptitives o la condition darrt est place au dbut.

TantQue

condition

actions

FINTQCe qui signifie : tant que la condition est vraie, on excute les actions.

49

structure rptitive 2 structure rptitive 2Faire Jusqu' Les rptitives o la condition darrt est place la fin.

Faire

Actions

Jusqua conditionCe qui signifie qu'on excute les actions jusqu' ce que la condition soit vraie.

50

structure rptitive 3 structure rptitive 3Pour Les rptitives o le nombre ditration est fixe une fois pour toute. Trs souvent, nous utilisons une structure rptitive avec un compteur et nous arrtons lorsque le compteur a atteint sa valeur finale.

POUR variable ALLANT DE entier A entier [PAS entier]Actions

FinPourLorsque le PAS est omis, il est suppos gal +1. Lorsque le PAS est omis, il est suppos gal +1.

51

structure rptitive

Exercice 1 Exercice 1

crire un algorithme qui saisie N entier et affiche leur somme et leur moyenne ? Solution :

52

structure rptitive

Exercice 1 (solution) Exercice 1 (solution)Donnes : N, Val saisis par clavier Rsultats : Moy, Somme Traitements : Somme:=Somme + Val

A)- Analyse

B)- Algorithme

Moy :=Somme/N

N,i en entier Moy, Somme,val en relcrire(entrez un entier: ) Lire(N) Somme:=0 i:=0 Pour i allant de 1 N faire crire( entrer une valeur: ) Lire(val) Somme:=Somme+val FinPour Moy:=Somme/N crire( La somme: Somme) crire( La moyenne: Moy)

Dbut

Fin

53

structure rptitive

Exercice 2 Exercice 2

crire un algorithme pour calculer et afficher la somme et la moyenne de 100 premiers nombres entiers ? Solution :

54

structure rptitive

Exercice 2 (solution) Exercice 2 (solution)A)- Analyse

Donnes : Rsultats : Moy, Somme Traitements : Somme:=Somme + i

B)- Algorithme

Moy :=Somme/100

entier i Rel Moy, Somme DbutSomme:=0 i:=0

Pour i allant de 1 100 faire Somme := Somme + i FinPour Moy:=Somme/N crire( La somme: Somme) crire( La moyenne: Moy)

Fin

55

structure rptitive

Exercice A Exercice Acrire un programme qui affiche les nombres de 1 10.

Exercice B Exercice BProgramme qui demande l'utilisateur de taper un caractre. Celui-ci a trois essais. Si le caractre tap est un '0' on affiche "gagn", et on arrte. Si au bout de 3 essais, l'utilisateur n'a pas toujours tap de "1", on sort en affichant "perdu".

56

structure rptitive

Exercice 3 Exercice 3

crire un algorithme qui permet de calculer S1,S2,S3,S4,S5,S6 tel que:

S1 = 1 + + 1/3 + +..1/N S2 = 1 + + + 1/6 +..1/N S3 = 1 + 1/3 + 1/5 +..1/N S4 = 1 - + - 1/6..1/N S5 = 1 + x+x..xN S6 = 1 + x+x/2.. xN /N

57

structure rptitive

Exercice 3 (solution) Exercice 3 (solution)

58

structure rptitive

Exercice 3 (solution) Exercice 3 (solution)

59

structure rptitive

Exercice 3 (solution) Exercice 3 (solution)

60

structure rptitive

Exercice 3 (solution) Exercice 3 (solution)

61

structure rptitive

Exercice 3 (solution) Exercice 3 (solution)

62

structure rptitive

Exercice 6 Exercice 6

crire un programme qui saisit des entiers et en affiche la somme et la moyenne (on arrte la saisie avec la valeur 0) Solution :

63

structure rptitive

Exercice 7 Exercice 7

crire un algorithme qui demande lutilisateur un nombre compris entre 1 et 3 jusqu ce que la rponse convienne. Solution :

64

solution

65

structure rptitive Exercice 8 Exercice 8 crire un algorithme qui demande un nombre compris entre 10 et 20, jusqu ce que la rponse convienne. En cas de rponse suprieure 20, on fera apparatre un message : Plus petit ! , et inversement, Plus grand ! si le nombre est infrieur 10. Solution :

66

solution

67

structure rptitive

Exercice 9 Exercice 9

crire un algorithme qui demande un nombre de dpart, et qui ensuite affiche les dix nombres suivants. Par exemple, si l'utilisateur entre le nombre 17, le programme affichera les nombres de 18 27. Solution :

68

solution

69

structure rptitive

Exercice 10 Exercice 10

crire un algorithme qui demande un nombre de dpart, et qui ensuite crit la table de multiplication de ce nombre, prsente comme suit (cas o l'utilisateur entre le nombre 7) : Table de 7 : 7x1=7 7 x 2 = 14 7 x 3 = 21 7 x 10 = 70 Solution :

70

solution

71

structure rptitive Exercice 11 Exercice 11 crire un algorithme qui demande un nombre de dpart, et qui calcule la somme des entiers jusqu ce nombre. Par exemple, si lon entre 5, le programme doit calculer : 1 + 2 + 3 + 4 + 5 = 15 NB : on souhaite afficher uniquement le rsultat Solution :

72

solution

73

structure rptitive Exercice 12 Exercice 12 crire un algorithme qui demande un nombre de dpart, et qui calcule sa factorielle. NB : la factorielle de 8, vaut 1x2x3x4x5x6x7x8 Solution :

74

solution

75

structure rptitive

Exercice 13 Exercice 13

crire un algorithme qui demande successivement 20 nombres lutilisateur, et qui lui dise ensuite quel tait le plus grand parmi ces 20 nombres : Entrez le nombre numro 1 : 12 Entrez le nombre numro 2 : 14 etc. Entrez le nombre numro 20 : 6 Le plus grand de ces nombres est : 14 Modifiez ensuite lalgorithme pour que le programme affiche de surcrot en quelle position avait t saisie ce nombre : Ctait le nombre numro 2 Solution :

76

solution

77

Exercice 14 structure rptitive Exercice 14 Rcrire lalgorithme prcdent, mais cette fois-ci on ne connat pas davance combien lutilisateur souhaite saisir de nombres. La saisie des nombres sarrte lorsque lutilisateur entre un zro.Solution :

78

solution

79

Des Questions ?80

Les tableaux Les tableaux1. Utilit des tableaux

Imaginons que dans un programme, nous ayons besoin simultanment de 12 valeurs (par exemple, des notes pour calculer une moyenne). videmment, la seule solution dont nous disposons lheure actuelle consiste dclarer douze variables, appeles par exemple Notea, Noteb, Notec, etc. Bien sr, on peut opter pour une notation un peu simplifie, par exemple N1, N2, N3, etc. Mais cela ne change pas fondamentalement notre problme, car arriv au calcul, et aprs une succession de douze instructions Lire distinctes, cela donnera obligatoirement une atrocit du genre :

Moy (N1+N2+N3+N4+N5+N6+N7+N8+N9+N10+N11+N12)/12

81

Les tableaux Les tableauxCest pourquoi la programmation nous permet de rassembler toutes ces variables en une seule, au sein de laquelle chaque valeur sera dsigne par un numro. Cela donnerait donc quelque chose du genre la note numro 1 , la note numro 2 , la note numro 8 . Cest largement plus pratiqueUn ensemble de valeurs portant le mme nom de variable et repres par un nombre, sappelle un tableau, ou encore une variable indice. Le nombre qui, au sein dun tableau, sert reprer chaque valeur sappelle lindice. Chaque fois que lon doit dsigner un lment du tableau, on fait figurer le nom du tableau, suivi de lindice de llment, entre parenthses. Ex: Nom_tableau[5]

82

Les tableaux Les tableaux2. Notation et utilisation algorithmique Tableau Note(12) en Numrique Variables Moy, Som en Numrique Dbut POUR i ALLANT DE 0 A 11 Ecrire "Entrez la note n", i Lire Note(i) FinPour Som := 0 POUR i ALLANT DE 0 A 11 Som := Som + Note(i) FinPour Moy := Som / 12crire(la somme est: crire(La moyenne est:

Fin

Som) Moy)

83

Les tableaux

Exercice 2 Exercice 2

crire un algorithme qui dclare et remplisse un tableau de 7 valeurs numriques en les mettant toutes zro. Solution :

84

Les tableaux

Exercice 3 Exercice 3

crire un algorithme qui dclare et remplisse un tableau contenant les six voyelles de lalphabet latin. Solution :

85

Les tableaux

Exercice 4 Exercice 4

crire un algorithme qui dclare un tableau de 9 notes, dont on fait ensuite saisir les valeurs par lutilisateur. Solution :

86

Les tableaux

Exercice 5 Exercice 5

On saisit des entiers et on les range dans un tableau (maximum 50) crire un programme qui affiche le maximum, le minimum et la valeur moyenne de ces nombres. Solution :

87

Les tableaux

Exercice 6 Exercice 6

crivez un algorithme permettant lutilisateur de saisir un nombre quelconque de valeurs, qui devront tre stockes dans un tableau. Lutilisateur doit donc commencer par entrer le nombre de valeurs quil compte saisir. Il effectuera ensuite cette saisie. Enfin, une fois la saisie termine, le programme affichera le nombre de valeurs ngatives et le nombre de valeurs positives. Solution :

88

Des exercices supplmentaires ? supplmentaires89

Les tableaux

Exercice 5.1 Exercice 5.1Que produit lalgorithme suivant ? Tableau Nb(6) en Entier Variable i en Entier Dbut Pour i 0 5 Nb(i) i * i i suivant Pour i 0 5 crire Nb(i) i suivant Fin Peut-on simplifier cet algorithme avec le mme rsultat ?90

Les tableaux

Exercice 5.2 Exercice 5.2

Que produit lalgorithme suivant ? Tableau N(7) en Entier Variables i, k en Entier Dbut N(0) 1 Pour k 1 6 N(k) N(k-1) + 2 k Suivant

Pour i 0 6 Ecrire N(i) i suivant Fin Peut-on simplifier cet algorithme avec le mme rsultat ?

91

Les tableaux

Exercice 5.3 Exercice 5.3Que produit lalgorithme suivant ? Tableau Suite(8) en Entier Variable i en Entier Dbut Suite(0) 1 Suite(1) 1 Pour i 2 7 Suite(i) Suite(i-1) + Suite(i-2) i suivant Pour i 0 7 crire Suite(i) i suivant Fin

92

Les tableaux

Exercice 5.4 Exercice 5.4crivez la fin de lalgorithme (exercice 5.3) afin que le calcul de la moyenne des notes soit effectu et affich lcran.

Exercice 5.5 Exercice 5.5crivez un algorithme permettant lutilisateur de saisir un nombre quelconque de valeurs, qui devront tre stockes dans un tableau. Lutilisateur doit donc commencer par entrer le nombre de valeurs quil compte saisir. Il effectuera ensuite cette saisie. Enfin, une fois la saisie termine, le programme affichera le nombre de valeurs ngatives et le nombre de valeurs positives.

Exercice 5.5 v2 Exercice 5.5 v2

crivez un algorithme permettant lutilisateur de saisir un nombre quelconque de valeurs, qui devront tre stockes dans un tableau. Lutilisateur doit donc commencer par entrer le nombre de valeurs quil compte saisir. Il effectuera ensuite cette saisie. Enfin, une fois la saisie termine, le programme affichera le nombre de valeurs ngatives et le nombre de valeurs positives. crivez la fin de lalgorithme 6.3 afin que le calcul de la moyenne des notes soit effectu et affich lcran. 93

Exercice 5.6 Exercice 5.6

Les tableaux

Exercice 5.7 Exercice 5.7crivez un algorithme calculant la somme des valeurs dun tableau (on suppose que le tableau a t pralablement saisi).

Exercice 5.8 Exercice 5.8

crivez un algorithme constituant un tableau, partir de deux tableaux de mme longueur pralablement saisis. Le nouveau tableau sera la somme des lments des deux tableaux de dpart. Tableau 1 : Tableau 2 : Tableau 3 :4 8 7 9 1 5 4 6

+5 9 4 2 6 8 7 41

=9 17 11 11 7 13 11 47

94

Exercice 5.8 Exercice 5.8Toujours partir de deux tableaux prcdemment saisis, crivez un algorithme qui calcule le schtroumpf des deux tableaux. Pour calculer le schtroumpf, il faut multiplier chaque lment du tableau 1 par chaque lment du tableau 2, et additionner le tout. Par exemple si l'on a : Tableau 1

4

8

7

12

Tableau 2 :3 6

Le Schtroumpf sera : 3 * 4 + 3 * 8 + 3 * 7 + 3 * 12 + 6 * 4 + 6 * 8 + 6 * 7 + 6 * 12 = 279

95

Exercice 5.9 Exercice 5.9

crivez un algorithme permettant, toujours sur le mme principe, lutilisateur de saisir un nombre dtermin de valeurs. Le programme, une fois la saisie termine, renvoie la plus grande valeur en prcisant quelle position elle occupe dans le tableau. On prendra soin deffectuer la saisie dans un premier temps, et la recherche de la plus grande valeur du tableau dans un second temps.

Exercice 5.10 Exercice 5.10

Toujours et encore sur le mme principe, crivez un algorithme permettant, lutilisateur de saisir les notes d'une classe. Le programme, une fois la saisie termine, renvoie le nombre de ces notes suprieures la moyenne de la classe.

96

Des Questions ?97

Les Fonctions Prdfinies Les Fonctions PrdfiniesTout langage de programmation propose ainsi un certain nombre de fonctions ; certaines sont indispensables, car elles permettent deffectuer des traitements qui seraient sans elles impossibles. Dautres servent soulager le programmeur, en lui pargnant de longs et pnibles - algorithmes. Tous les langages, je dis bien tous, proposent les fonctions suivantes, mme si le nom et la syntaxe peuvent varier dun langage lautre : - Len(chane) - Mid(chane,n1,n2) : renvoie le nombre de caractres dune chane : renvoie un extrait de la chane, commenant au caractre n1 et faisant n2 caractres de long. - Left(chane,n) : renvoie les n caractres les plus gauche dans chane. - Right(chane,n) : renvoie les n caractres les plus droite dans chane - Trouve(chane1,chane2) : renvoie un nombre correspondant la position de chane2 dans chane1. Si chane2 nest pas comprise dans chane1, la fonction renvoie zro. -Modulo : Cette fonction permet de rcuprer le reste de la division dun nombre par un deuxime nombre.

98

Exemples : Exemples :Len("Bonjour, a va ?") Len("") Mid("Zorro is back", 4, 7) Mid("Zorro is back", 12, 1) Left("Et pourtant", 8) Right("Et pourtant", 4) Trouve("Un pur bonheur", "pur") Trouve("Un pur bonheur", "techno") A Mod(10,3) B Mod(12,2) C Mod(44,8) vaut vaut vaut vaut vaut vaut vaut vaut 16 0 "ro is b" "c" "Et pourt" "t 4 0

A vaut 1 car 10 = 3*3 + 1 B vaut 0 car 12 = 6*2 C vaut 4 car 44 = 5*8 + 499

Les fichiers Les fichiers1. Utilit des fichiers Jusqu prsent, les informations utilises dans nos programmes ne pouvaient provenir que de deux sources : soit elles taient inclues dans lalgorithme lui-mme, par le programmeur, soit elles taient entres en cours de route par lutilisateur. Mais videmment, cela ne suffit pas combler les besoins rels des informaticiens.

Imaginons que lon veut crire un programme grant un carnet dadresses. Dune excution du programme lautre, lutilisateur doit pouvoir retrouver son carnet jour, avec les modifications quil y a apportes la dernire fois quil a excut le programme. Les donnes du carnet dadresse ne peuvent donc tre inclues dans lalgorithme, et encore moins tre entres au clavier chaque nouvelle excution !100

Les fichiers Les fichiers1. Utilit des fichiers Les fichiers sont l pour combler ce manque. Ils servent stocker des informations de manire permanente, entre deux excutions dun programme. Car si les variables, qui sont je le rappelle des adresses de mmoire vive, disparaissent chaque fin dexcution, les fichiers, eux sont stocks sur des priphriques mmoire de masse (disquette, disque dur, CD Rom).

101

Les fichiers Les fichiers2. Structure des enregistrements Reprenons le cas du carnet dadresses, avec dedans le nom, le prnom, le tlphone et l'email. Les donnes, sur le fichier texte, peuvent tre organises ainsi : Structure n1 "Fonfec";"Sophie";0142156487;"[email protected]" "Ztofrais";"Mlanie";0456912347;"[email protected]" "Herbien";"Jean-Philippe";0289765194;"[email protected]" "Hergbel";"Octave";0149875231;"[email protected]" ou ainsi : Structure n2 Fonfec Ztofrais Herbien Hergbel Sophie [email protected] Mlanie [email protected] Jean-Philippe [email protected] Octave [email protected] champs de largeur fixe dlimite

102

Les fichiers Les fichiers2. Structure des enregistrements La structure n1 est dite dlimite ; Elle utilise un caractre spcial, appel caractre de dlimitation, qui permet de reprer quand finit un champ et quand commence le suivant.

La structure n2, elle, est dite champs de largeur fixe. Il ny a pas de caractre de dlimitation, mais on sait que les x premiers caractres de chaque ligne stockent le nom, les y suivants le prnom, etc. Cela impose bien entendu de ne pas saisir un renseignement plus long que le champ prvu pour laccueillir.

103

Les fichiers Les fichiers2. Structure des enregistrements

Lavantage de la structure n1 : elle occupe le minimum de place possible. Linconvnient : la lenteur de la lecture.

Lavantage de la structure n2 : la rcupration des diffrents champs est trs rapide Linconvnient : gaspille de la place mmoire

104

Les fichiers Les fichiers3. Types daccs Laccs squentiel : on ne peut accder qu la donne suivant celle quon vient de lire. Dans le cas d'un fichier texte, cela signifie qu'on lit le fichier ligne par ligne. Laccs direct (ou alatoire) : on peut accder directement lenregistrement de son choix, en prcisant le numro de cet enregistrement. Mais cela veut souvent dire une gestion fastidieuse des dplacements dans le fichier. Laccs index : pour simplifier, il combine la rapidit de l'accs direct et la simplicit de l'accs squentiel (en restant toutefois plus compliqu). Il est particulirement adapt au traitement des gros fichiers, comme les bases de donnes importantes.

105

Les fichiers Les fichiers4. InstructionsSi on veut travailler sur un fichier, la premire chose faire est de louvrir. Cela se fait en attribuant au fichier un numro de canal. On ne peut ouvrir quun seul fichier par canal, Limportant est que lorsquon ouvre un fichier, on stipule ce quon va en faire : lire, crire.

Pour ouvrir un fichier texte, on crira par exemple : Ouvrir c:\Exemple.txt" sur 4 en Lecture

106

exemple exempleVariables Truc, Nom, Prnom, Tel, Mail en Caractres Dbut Ouvrir "Exemple.txt" sur 4 en Lecture LireFichier 4, Truc Nom Mid(Truc, 1, 20) Prnom Mid(Truc, 21, 15) Tel Mid(Truc, 36, 10) Mail Mid(Truc, 46, 20) Ecrire( Le nom est : ,Nom) Ecrire( Le nom est : , Prnom ) Ecrire( Le nom est : , Tel) Ecrire( Le nom est : , Mail) Fermer 4 Dbut Cet algorithme affiche la premire ligne dun carnet dadresses.

107

exemple exempleVariables Truc, Nom, Prnom, Tel, Mail en Caractres Dbut Ouvrir "Exemple.txt" sur 4 en Lecture Tantque Non EOF(5) LireFichier 4, Truc Nom Mid(Truc, 1, 20) Prnom Mid(Truc, 21, 15) Tel Mid(Truc, 36, 10) Mail Mid(Truc, 46, 20) Ecrire( Le nom est : ,Nom) Ecrire( Le nom est : , Prnom ) Ecrire( Le nom est : , Tel) Ecrire( Le nom est : , Mail) FinTantQue Fermer 4 Dbut Cet algorithme affiche toutes les lignes dun carnet dadresses.

108

exemple exempleVariables Nom * 20, Prnom * 17, Tel * 10, Mail * 20, Lig en Caractre Dbut crire ("Entrez le nom : ") Lire (Nom) crire ("Entrez le prnom : ") Lire (Prnom) crire ("Entrez le tlphone : ") Lire (Tel) crire ("Entrez le nom : ") Lire (Mail) Lig Nom & Prnom & Tel & Mail Ouvrir "Adresse.txt" sur 1 pour Ajout EcrireFichier 1, Lig Fermer 1 Fin Cet algorithme permet lutilisateur de saisir au clavier un nouvel individu qui sera ajout dans un carnet dadresses.109

exemple exempleTableaux Nom(), Prnom(), Tel(), Mail() en Caractre Dbut Ouvrir "Exemple.txt" sur 5 en Lecture i -1 Tantque Non EOF(5) LireFichier 5, Truc i i + 1 Redim Nom(i+1) Redim Prnom(i+1) Redim Tel(i+1) Redim Mail(i+1) Nom(i) Mid(Truc, 1, 20) Prnom(i) Mid(Truc, 21, 15) Tel(i) Mid(Truc, 36, 10) Mail(i) Mid(Truc, 46, 20) FinTantQue Fermer 5 Fin Cet algorithme charge toutes les lignes dun carnet dadresses dans 4 tableaux110

exercice exercice

crire un algorithme qui gre un carnet dadresses. Puis on le codifie sous java.

111

Des Questions ?112

Procdures et Fonctions Procdures et Fonctions1. De quoi s'agit-ilUne application, surtout si elle est longue, a toutes les chances de devoir procder aux mmes traitements. Par exemple, la saisie dune rponse par oui ou par non (et le contrle quelle implique), peuvent tre rpts dix fois des moments diffrents de la mme application La manire la plus vidente est de rpter le code correspondant autant de fois que ncessaire. si la structure d'un programme crit de cette manire peut paratre simple mais Elle contient des rptitions en cas de modification du code, il va falloir traquer toutes les apparitions de ce code pour faire la modification Il faut donc opter pour une autre stratgie, qui consiste sparer ce traitement du corps du programme et appeler ce traitement en cas de besoin. il suffit de faire une seule modification au bon endroit, pour que cette modification prenne effet dans la totalit de lapplication.

113

exemple exempleprenons un exemple de question laquelle lutilisateur doit rpondre par oui ou par non.

Mauvaise Structure : Ecrire "Etes-vous mari ?" Rep1 := "" TantQue Rep1 "Oui" et Rep1 "Non" Ecrire ("Tapez Oui ou Non ") Lire Rep1 FinTantQue Ecrire ("Avez-vous des enfants ?") Rep2 := "" TantQue Rep2 "Oui" et Rep2 "Non" Ecrire "Tapez Oui ou Non" Lire Rep2 FinTantQue114

La solution consiste isoler les instructions demandant une rponse par Oui ou Non, et appeler ces instructions chaque fois que ncessaire. Ainsi, on vite les rptitions inutiles, et on a dcoup notre problme en petits morceaux autonomes. Nous allons donc crer une fonction dont le rle sera de renvoyer la rponse (oui ou non) de l'utilisateur. Ce mot de "fonction", ne doit pas nous surprendre : nous avons tudi prcdemment des fonctions fournies avec le langage, et nous avons vu que le but d'une fonction tait de renvoyer une valeur. Eh bien, c'est exactement la mme chose ici, sauf que c'est nous qui allons crer notre propre fonction, que nous appellerons RepOuiNon :

exemple exemple

Rep1,Rep2 en caractre Fonction RepOuiNon() en caractre Truc "" TantQue Truc "Oui" et Truc "Non" Ecrire "Tapez Oui ou Non" Lire Truc FinTantQue Renvoyer Truc Fin Dbut Ecrire "Etes-vous mari ?" Rep1 RepOuiNon() Ecrire "Avez-vous des enfants ?" Rep2 RepOuiNon()

Fin

115

Procdures et Fonctions Procdures et Fonctions2. Passage d'arguments Reprenons lexemple qui prcde et analysons-le. Nous crivons un message l'cran, puis appelons la fonction RepOuiNon pour poser une question ; puis, un peu plus loin, on crit un autre message l'cran, et on appelle de nouveau la fonction pour poser la mme question, etc. Cest une dmarche acceptable, mais qui peut encore tre amliore : puisque avant chaque question, on doit crire un message, autant que cette criture du message figure directement dans la fonction appele. Cela implique deux choses :

==> Lorsquon appelle la fonction, on doit lui prciser quel message elle doit afficher avant de lire la rponse ==> la fonction doit tre prvenue quelle recevra un message, et tre capable de le rcuprer pour lafficher.

116

Procdures et Fonctions Procdures et FonctionsEn langage algorithmique, on dira que le message devient un argument de la fonction. Cela n'est pas une dcouverte pour vous : nous avons utilis les arguments propos des fonctions prdfinies

La fonction sera dornavant dclare comme suit :

Rep1,Rep2 en caractre Fonction RepOuiNon(Msg en Caractre ) en caractre Truc ""

Ecrire (Msg)

TantQue Truc "Oui" et Truc "Non" Ecrire "Tapez Oui ou Non" Lire Truc FinTantQue Renvoyer Truc Fin Dbut Rep1 RepOuiNon("Etes-vous Rep2 RepOuiNon("Avez-vous

Fin

mari ?" ) des enfants ?" )

117

Rep1, Rep2, Rep3, Rep4 en chane de caractredbut

Ecrire "Etes-vous mari(e) ?" Lire Rep1 Ecrire ("Avez-vous des enfants ?") Lire Rep2 Ecrire (" Etes-vous tudiant(e) ? ?") Lire Rep3 Ecrire (" Etes-vous un homme?") Lire Rep4 . . . .Fin118

Rep1, Rep2, Rep3, Rep4 en chane de caractre dbutRep1, Rep2, Rep3, Rep4 en chane de caractre

dbut

Ecrire "Etes-vous mari(e) ?" Lire Rep1 Ecrire ("Avez-vous des enfants ?") Lire Rep2 Ecrire (" Etes-vous tudiant(e) ?") Lire Rep3 Ecrire (" Etes-vous un homme ?") Lire Rep4 . . . .Fin

Ecrire "Etes-vous mari(e) ?" Rpter Ecrire ("Tapez Oui ou Non ") Lire Rep1 TantQue Rep1 "Oui" et Rep1 "Non" Ecrire ("Avez-vous des enfants ?") Rpter crire ("Tapez Oui ou Non ") Lire Rep2 TantQue Rep2 "Oui" et Rep2 "Non" Ecrire (" Etes-vous tudiant(e) ? ?") Rpter crire ("Tapez Oui ou Non ") Lire Rep3 TantQue Rep3 "Oui" et Rep3 "Non" Ecrire (" ts-vous un homme?") Rpter crire ("Tapez Oui ou Non ") Lire Rep4 TantQue Rep4 "Oui" et Rep4 "Non" Fin119

Rep1, Rep2, Rep3, Rep4 en chane de caractre dbut Ecrire "Etes-vous mari(e) ?" Rpter Ecrire ("Tapez Oui ou Non ") Lire Rep1 TantQue Rep1 "Oui" et Rep1 "Non" Ecrire ("Avez-vous des enfants ?") Rpter crire ("Tapez Oui ou Non ") Lire Rep2 TantQue Rep2 "Oui" et Rep2 "Non" Ecrire (" Etes-vous tudiant(e) ? ?") Rpter crire ("Tapez Oui ou Non ") Lire Rep3 TantQue Rep3 "Oui" et Rep3 "Non" Ecrire (" ts-vous un homme?") Rpter crire ("Tapez Oui ou Non ") Lire Rep4 TantQue Rep4 "Oui" et Rep4 "Non" Fin

Rep,Rep1, Rep2, Rep3, Rep4 en chane de caractre Fonction RepOuiNon() en caractre TantQue Rep "Oui" et Rep "Non" Ecrire "Tapez Oui ou Non" Lire Rep FinTantQue Renvoyer Rep Fin Dbut Ecrire "Etes-vous mari ?" Rep1 RepOuiNon() Ecrire "Avez-vous des enfants ?" Rep2 RepOuiNon() Ecrire (" Etes-vous tudiant(e) ?") Rep3 RepOuiNon() Ecrire (" Etes-vous un homme ?") Rep4 RepOuiNon()120

Fin

Rep,Rep1, Rep2, Rep3, Rep4 en chane de caractre Fonction RepOuiNon() en caractre TantQue Rep "Oui" et Rep "Non" Ecrire "Tapez Oui ou Non" Lire Rep FinTantQue Renvoyer Rep Fin Dbut Ecrire "Etes-vous mari ?" Rep1 RepOuiNon() Ecrire "Avez-vous des enfants ?" Rep2 RepOuiNon() Ecrire (" Etes-vous tudiant(e) ?") Rep3 RepOuiNon() Ecrire (" Etes-vous un homme ?") Rep4 RepOuiNon()Fin

Rep,Rep1, Rep2, Rep3, Rep4 en chane de caractreFonction RepOuiNon(Msg en Caractre ) en caractre

Ecrire(Msg)TantQue Rep "Oui" et Rep "Non" Ecrire "Tapez Oui ou Non" Lire Rep FinTantQue Renvoyer Rep Fin Dbut Rep1 RepOuiNon("Etes-vous mari ?" ) Rep2 RepOuiNon("Avez-vous des enfants ?" ) Rep3 RepOuiNon(" Etes-vous tudiant(e)? " ) Rep4 RepOuiNon(" Etes-vous un homme?"

)

Fin

121

Exercice 11.1 crivez une fonction qui renvoie la somme de trois nombres fournis en argument.

Exercice 11.2 crivez une fonction qui renvoie le nombre de voyelles contenues dans une chane de caractres passe en argument. Au passage, notez qu'une fonction a tout fait le droit d'appeler une autre fonction.

122

Fonction RepOuiNon(val1, val2, val3 en Caractre ) en caractre Tot = val1, val2, val3 Renvoyer Tot Fin Fonction NbVoyelles(Mot en Caractre) Variables i, nb en Numrique Pour i Allant de 1 Len(Mot) Si Trouve("aeiouy", Mid(Mot, i, 1)) 0 Alors nb nb + 1 FinSi FinPour Renvoyer nb FinFonction123

Des Questions ?124

Des exercices supplmentaires ? supplmentaires125

Exercice 1 Exercice 1Recopier une phrase dans une autre en tant toutes les occurrences dun caractre Soit une phrase termine par un point. Il s'agit de la restituer en supprimant les occurrences d'un caractre donn. Exemple : phrase :abbcccdeeeffg caractre : c rsultat : abbdeeeffg Donnez le jeu d'essai qui permet de tester cette procdure. Donnez l'algorithme de la procdure en pseudo code.

126

Exercice 2 Exercice 2Recopier une phrase dans une autre en tant tous les doublons de caractres successifs Soit une phrase termine par un point. Il s'agit de la restituer en supprimant tous les doublons de caractres successifs. Exemple : abbcccdeeeffg. donne abcdefg. Donnez le jeu d'essai qui permet de tester cette procdure. Pour tester le programme, c'est dire voir s'il rpond bien nos attentes, s'il n'a pas de "bug", avant de la faire "tourner" sur la machine nous imaginons un jeu d'essai avec tous les cas tester et le rsultat attendu pour chaque cas : c'est le jeu d'essai.

Donnez l'algorithme de la procdure.

127

Exercice 3 Exercice 3Dterminer si deux phrases sont quivalentes. Soit deux phrases termines par un mme terminateur. Elles sont dites quivalentes si elles ont les mmes lettres dans le mme ordre mais avec un nombre d'occurrences de ces lettres qui peut diffrer entre les deux phrases. On supposera qu'il existe une fonction longueur lg de chane qui renvoie un entier Exemple : abbcccdeeeffg aabcdeffffg sont quivalentes Donnez le jeu d'essai qui permet de tester cette procdure. Donnez l'algorithme de la procdure toujours en pseudo code.

128

Exercice 4 Exercice 4Chercher les lettres dun mot parpilles dans une phrase, dans le mme ordre. Soient un caractre terminateur et une phrase termine par ce caractre terminateur. Soient un mot donn Il s'agit de vrifier si les lettres du mot sont bien prsentes dans la phrase, ce dans le mme ordre que celui du mot. Exemple : terminateur : . phrase :le chat est gris et boit. mot : lattis longueur : 6 donne vrai Donnez l'algorithme de la procdure en pseudo code.

129

Exercice 5 Exercice 5Effectuer la saisie d'une chane de caractres qui contiendra un nom et un prnom. Les prnoms composs seront obligatoirement spars par des tirets. Afficher une chane de caractres sous forme prnom nom spars par un espace, en ayant fait disparatre les tirets saisis dans le prnom. Ecrire la procdure en pseudo-code (ventuellement ensuite avec un langage). Ne pas utiliser les instructions de type concatnation et recherche d'un caractre dans une chane.

130

Exercice 6 Exercice 6

Dterminer si une chane de caractres est un palindrome. Un palindrome est une phrase qui peut se lire dans les deux sens. Les espaces sont ignors. Exemple : esope reste ici et se repose. Le terminateur est ici un point. Donnez l'algorithme du programme.

131

Exercice 7 Exercice 7Crypter une phrase en codant les lettres en fonction du mot o elles se trouvent. Soit une phrase termine par un point. Les espaces sont des sparateurs de mot et sont transcrits sans modification. Il s'agit de la crypter en codant chaque mot suivant son rang dans la phrase. Au mot de rang 1, on crypte ses lettres avec les lettres qui suivent dans l'alphabet. Au mot de rang 2, on crypte ses lettres avec les lettres qui suivent de 2 caractres dans l'alphabet. etc ... Par convention, la lettre suivant le caractre Z est le caractre A. Les espaces sont des sparateurs de mot et sont transcrits sans modification. Exemple : Phrase : LE CHAT EST GRIS . Rang : 1 2 3 4 Rsultat : MF EJCV HVW KVMW.

132

Exercice 8 Exercice 8Compter le nombre de mots dune phrase ayant une terminaison donne. Soit une phrase termine par un point. Les espaces sont des sparateurs de mot. Il s'agit de donner le nombre de mots de la phrase ayant pour terminaison la chane intitule terminaison. Exemple : Caractre final : . Phrase : rien ne sert de courir il faut partir point il ne faut pas rire. Terminaison : rir Rsultat : 1 Note : les terminaisons de longueur nulle indiquent la procdure qu'il faut renvoyer le nombre de mots de la phrase. Ecrire la procdure en pseudo code

133

Exercice 9 Exercice 9

Le programme ralise l'addition de deux donnes exprimes en HH :MM:SS et affiche le rsultat sous la mme forme.

Exercice 10 Exercice 10crire le programme du jeu du pendu. Le principe est le suivant : Un premier joueur choisit un mot de moins de 10 lettres. Le programme affiche _ _ _ _ _ _ _ avec un _ par lettre. Le deuxime joueur propose des lettres jusqu' ce qu'il ait trouv le mot ou qu'il soit pendu (11 erreurs commises). A chaque proposition le programme raffiche le mot avec les lettres dcouvertes ainsi que les lettres dj annonces et le nombre d'erreurs. En deuxime partie: Rcrire le jeu du pendu en utilisant des fonctions et/ou procdures.

www.MathsMak.com

Ce cours est prpar par:

134