Vous êtes sur la page 1sur 11

Procdure et fonction

ARFAOUI AYMEN

Srie N4 (Procdure et Fonction)


Exercice1
Prvoir les rsultats des programmes suivants : Programme 1 Program parametre ; Uses wincr ; Var pe : integer ; Procedure Pval( pf : integer); Begin Write(pf); Pf:=pf+1; Write(pf); End ; Procedure Pvar( Var pf : integer); Begin Write(pf); Pf:=pf+1; Write(pf); End ; Begin Pe :=0 ; Write(pe) ; Pval(pe) ; write(pe) ; Pe :=0 ; Write(pe) ; Pvar(pe) ; write(pe) ; End. Programme 2 Program encore_parametre ; Uses wincr ; Var i : integer ; T: array [1..2] of integer; Procedure P(Var x, y : integer); Begin x:=x+1; y:=y+1; Write(x ,,y); End ; Begin i :=1 ; T[1] := 2; T[2]:=0 ; P(i , T[T[i]]) ; Write(I, T[1],T[2]) ; End. 1
Algorithmiques et programmation

Vers le Bac(3SI)

Procdure et fonction Programme 3 Program q ; Uses wincrt ; Var x,y,z : integer ; Procedure P( a : integer ; Var b : integer; c:integer); Var d:integer; Begin d:=b; if a<b then begin b:=a; a:=d; end; if b>c then begin c:=b; b:=d; end; END; Begin x :=8 ; y := 6; z:= 4 ; P(x,y,2) ; Write(x) ; P(z,y,y) ; Write(y) ; P(y,z,x) ; Write(z) ; End.

ARFAOUI AYMEN

Exercice 2
T tant un tableau d'entiers contenant au maximum 50 lments. Faire l'analyse d'un programme qui permet de : Saisir n. Remplir le tableau T par des valeurs strictement positives. D'afficher un message pour chaque case prcisant si l'lment en cours est un nombre premier ou non. Pour cela, vous devez prvoir l'utilisation et la cration d'un module nomm premier ( ), qui renvoi comme rsultat vrai ou faux. Rappel : 1. Un nombre entier naturel est premier lorsqu'il admet exactement deux diviseurs distincts : 1 et lui-mme. 2. Soit n un entier suprieur ou gal 2. Si n n'est divisible par aucun nombre p tel que : 2pracine (n), alors n est premier. 2
Algorithmiques et programmation

Vers le Bac(3SI)

Procdure et fonction

ARFAOUI AYMEN

Exercice3
Soit la grille danalyse suivante DEF FN traitement (T : tab ; n : entier) : entier SLDE Rsultat = traitement 2) Traitement x 1) x= [x T [1]] Pour i de 3 n (pas =2) Faire Si T[i] > x Alors x T[i] Fin Si Fin Pour 3) Fin traitement Travail faire : Excuter cette fonction pour le tableau T 12 8 17 5 2 26 17

Quel est le rle de cette fonction

Exercice4
On vous demande de crer un programme nomm Recherche1 qui saisi un tableau C de n caractres alphabtiques voyelles minuscules avec 1< n < 200. Afficher le nombre doccurrence du premier lment dans C. Exemple: Affichage : Nombre doccurrence de a est : 3. TAF : Tracer le diagramme de dcomposition modulaire de ce problme. Faire lAnalyse principale Crer un Type numr nomm : alpha_minus compos de lensemble des caractres alphabtiques minuscules. Crer un Type tableau nomm : Tab_char, de type alpha_minus. On suppose que vous disposez de deux procdures dj exisantes : Procdure saisie (var C : Tab_char, var n : entier) Procdure affichage (nbr_occ : entier) Faire lanalyse du module occurrence () : prcisez la nature et les paramtres de ce module. Utiliser le dans votre analyse.

Algorithmiques et programmation

Vers le Bac(3SI)

Procdure et fonction

ARFAOUI AYMEN

Exercice5
On dsire coder une chane de caractres en utilisant la fonction f(x) = 2x 1, x tant le code ASCII dun caractre dans la chane. Les caractres susceptibles dtre cods sont les lettres de lalphabet (majuscule ou minuscule), les chiffres (de 0 9) et le point. Les autres caractres restent inchangs. Ecrire un programme Pascal qui permet de saisir une chane de caractres puis dafficher son code. N.B : En Pascal la fonction bibliothque ORD(c) renvoie le code ASCII du caractre c et la fonction CHR (i) renvoie le caractre dont le code ASCII est i.

Exercice 6

Exercice 7
Soit lalgorithme suivant : 0) Dbut Nombres 1) Lire (n) 2) Si FN Verif(n) Alors Ecrire (n, est valable) Fin si 3) Fin Nombres 4
Algorithmiques et programmation

Vers le Bac(3SI)

Procdure et fonction

ARFAOUI AYMEN

Lalgorithme ci-dessus permet de saisir un entier positif n form de quatre chiffres et de lafficher avec la mention est valable, sil vrifie la condition suivante : le chiffre des milliers, qui ne doit pas tre nul, est suivi par ses multiples. Exemple : n = 2888 8 est un multiple de 2 n = 3696 6 et 9 sont des multiples de 3 n = 1541 5,4 et 1 sont des multiples de 1 Questions : 1. Traduire lalgorithme Nombres en Pascal. 2. Transformer la squence 1) en une procdure Saisie en ajoutant les contrles ncessaires et en tenir compte dans le programme principal. 3. Ecrire la fonction Verif permettant de vrifier si le premier chiffre du nombre n est suivi effectivement par ses multiples ou non.

Exercice 8
Ecrire un programme Pascal qui permet de saisir n entiers mettre dans un tableau T (10<n<40) et deux entiers non nuls p et s. Puis dafficher les lments du tableau T. p et s doivent tre deux lments de T. On demande dafficher tous les blocs dlments de T placs entre p et s dans lordre. p et s peuvent figurer dans cet ordre plusieurs fois dans T. Exemple : Si p=5 et s=3 et si on 7 0 9 5 3 donne le tableau T Alors le rsultat de laffichage sera : 0 6 N.B : La solution doit comporter au moins deux modules. 1 5 6 3

Exercice 9
Soit un tableau T de n caractres (5nNmax) qui ne peuvent tre que A, B ou C et tels que deux lments successifs du tableau ne sont pas gaux. (Nmax est une constante de valeur 15). On se propose dinsrer un caractre donn Car dans la premire position possible dans le tableau T en respectant la rgle ci-dessus mentionne puis dafficher le tableau T dans son nouvel tat (aprs insertion). N.B : -Car ne peut tre que "A","B" ou"C" et ne peut tre insr ni la dernire position du tableau. -On suppose que linsertion dun nouveau lment est possible en effet n< Nmax 5
Algorithmiques et programmation

Vers le Bac(3SI)

Procdure et fonction

ARFAOUI AYMEN

Exemples : final : B A B C

T initial :

Par la suite en donne lalgorithme suivant : 0) Dbut Insertion 1) Ecrire ("donner un entier n avec 5n<Nmax") ; Lire (n) 2) Pour i de 1 N rpter Ecrire ("donner une lettre A ou B ou C ") Lire (T[i]) Fin Pour 3) Proc insert_car (Car, T, n) 4) Proc Affiche (n, T) 5) Fin Insertion Questions : 1. Traduire cet algorithme en Pascal. 2. Transformer la squence 1) en une procdure Saisie, ajouter les contrles ncessaires sur la saisie de n ainsi que des lments de T et en tenir compte dans le programme principal. 3. Ecrire la Procdure insert_car, permettant dinsrer un caractre car dans T tout en respectant les condition mentionnes ci-dessus. 4. Ecrire la Procdure Affiche permettant dafficher les lments de T aprs insertion de Car.

Exercice 10
On se propose dcrire un programme Pascal permettant : a) de saisir un tableau T de N chanes de caractres non vides composes chacune dun maximum de cinq caractres (N est une constante de valeur 10). b) de garder la premire occurrence pour les lments redondants (qui apparaissent plus quune fois) et de remplacer toutes les autres occurrences par des chanes vides. c) Dafficher les chanes non vides restantes du tableau T. Exemple : Ali Ali Salem Amal Eya Mohamed Amal Salem Salem Aziz T initial : Ali 6 Salem Amal Eya Mohamed
Algorithmiques et programmation

Aziz final :

T
Vers le Bac(3SI)

Procdure et fonction

ARFAOUI AYMEN

Par la suite on propose lalgorithme suivant : 0) Dbut Non_Redondance 1) Pour i de 1 N rpter Lire (T[i]) Fin Pour 2) Proc Remplace (N, T) 3) Proc Affiche (N, T) 4) Fin Non_Redondance Questions : 1. Traduire en Pascal lalgorithme Non_Redondance ci-dessus. 2. Transformer la squence 1) en une procdure Saisie et y ajouter les contrles ncessaires pour la saisie des lments du tableau T. 3. Ecrire la procdure Remplace permettant de raliser le traitement b) ci-dessus mentionn. 4. Ecrire la procdure Affiche permettant dafficher les lments non redondants du tableau T.

Exercice 11
On se propose dcrire un programme Pascal permettant de saisir les lments dun tableau T de N entiers de trois chiffres chacun (N est une constante) puis de chercher et dafficher les nombres symtriques de ce tableau T. Exemple : Pour 424 715 133 121 454 616 566 N=7 et T Le programme affichera: les nombres symtriques de T sont : 424, 121, 454 et 616. On se propose lalgorithme suivant : 0) Dbut Symtrique 1) Proc Saisie (T) 2) Ecrire (" Les nombres symtriques de T sont : ") 3) Pour i de 1 N rpter Si FN Verif (T[i]) alors Ecrire (T[i]) : 4) Fin Si Fin Pour 4) Fin Symtrique Questions : 1. Traduire cet algorithme en Pascal. 2. Ecrire la procdure Saisie permettant de remplir un tableau V par p entiers trois chiffres. 3. Transformer la squence 3) en une procdure Affiche et tenir compte dans le programme principal. 4. Ecrire la fonction Verif permettant de vrifier si un entier m de trois chiffres est symtrique ou non. 7
Algorithmiques et programmation

Vers le Bac(3SI)

Procdure et fonction

ARFAOUI AYMEN

Exercice 12
On se propose dcrire un programme Pascal permettant de remplir deux tableau T1 et T2 de N entiers deux chiffres chacun (2<N<15) puis de former un tableau T tel que un lment T[i] est le rsultat de la fusion des deux lments T1 [i] et T2 [i], selon le principe suivant :

- Insrer le chiffre des dizaines du plus petit nombre parmi T1 [i] et T2 [i], entrer les deux chiffres du plus grand nombre parmi T1 [i] et T2 [i]. - Mettre le chiffre des units du plus petit nombre parmi T1 [i] et T2 [i], droite du nombre obtenu. Exemple : - Pour T1 [i]=52 et T2 [i]=36, T[i] sera gal 5326 -Pour T1 [i]=13 et T2 [i]=47, T[i] sera gal 4173 On propose lalgorithme suivant : 0) Dbut Trait_Tab 1) Rpter Ecrire (" donner un entier N ") ; Lire (N) Jusqu N dans [2..15] 2) Proc Saisie (N, T1) 3) Proc Saisie (N, T2) 4) Proc Fusion (N, T1, T2, T) ; 5) Pour i de 1 N rpter Ecrire (T[i]) Fin Pour 6) Fin Trait_Tab Questions : 1. Traduire cet algorithme en Pascal. 2. Ecrire la procdure Saisie permettant de remplir, dune faon alatoire et automatique, un tableau T par p entiers deux chiffres. 3.Ecrire la procdure Fusion permettant de remplir un tableau F, partir de deux tableaux V1 et V2 de p lments chacun, selon le principe ci-dessus .

Exercice 13
L'algorithme suivant permet d'insrer un lment clans un tableau trie. 0- DEBUT Insertion 1- Rpter Ecrire ("N = ") Lire (n) Jusqu'a (1 < n) et (n < Nmax) 2- T[1] 1 8
Algorithmiques et programmation

Vers le Bac(3SI)

Procdure et fonction Pour i de 2 a n rpter T[i] T[i-1 ] + 2 * i Fin pour 3- Ecrire ("Introduire l'entier a insrer ") Lire (v) 4- Proc Insertion (T,v) 5- FIN Insertion

ARFAOUI AYMEN

Questions : 1. Traduire 1'algorithme ci-dessus en Turbo Pascal. (Nmax, nombre d'lments du tableau T, e s t une constante gale a 15) 2. Dvelopper le module Insertion permettant d'insrer 1lment v dans le tableau T de telle sorte que le tableau reste trie. 3. Donner, sous forme de commentaire la fin programme, le rle de la squence 2. 4. Ecrire un module d'affichage du tableau obtenu et en tenir compte dans le programme.

Exercice 14

Exercice 15
L'algorithme suivant permet de remplir un tableau T puis d 'inverser chacune de ses deux parties. (1ire partie : du 1er au pme 2me, partie : du (p+1)me au nme lment), p est un entier a saisir. 0- Debut Inversion 1- Porc Saisie (n, p) 2- Pour i de 1 n rpter Lire(T[i]) FinPour 9
Algorithmiques et programmation

Vers le Bac(3SI)

Procdure et fonction 3- Proc Inverse (T, 1, p) 4- Proc Inverse (T, p+l, n) 5- Pour i de 1 a n rpter Ecrire (T[i] : 2) FinPour 6- Fin Inversion

ARFAOUI AYMEN

Questions: 1) Traduire l'algorithme ci-dessus en Turbo Pascal et I'enregistrer dans le dossier bac2004 situe a la racine C : en lui donnant comme nom le numro de votre carte d'identit suivi de la chane de caractres "VI ". 2) Dvelopper le module Saisie permettant de saisir deux entiers n et p vrifiant les conditions suivantes : (3<n<20) et (1<p< n-1) et en tenir compte dans le programme. 3) Dvelopper le module Inverse qui permet d'inverser une portion du tableau T du Jme au K me lment (j < k) et en tenir compte dans le programme. 4) Enregistrer la nouvelle version du programme dans le dossier bac2004 situe a la racine C: en lui donnant comme nom le numro de votre carte d'identit suivi de la chane de caractres "V2". Exemple : pour n = 9 et p = 5 p

4 -5 8 0 -2 -1 6 10 3 Etat initial du tableau T

T -2 0 8 -5 4 3 10 6 -1 Etat final du tableau T

Exercice 16
L'algorithme suivant permet de remplir un tableau T puis d'inverser chacune de ses deux parties. (1ire partie : du 1er au pme 2me, partie : du (p+1)me au nme lment), p est un entier a saisir. 0- Debut Inversion 2- Porc Saisie (n, p) 2- Pour i de 1 n rpter Lire(T[i]) FinPour 7- Proc Inverse (T, 1, p) 8- Proc Inverse (T, p+l, n) 9- Pour i de 1 a n rpter Ecrire (T[i] : 2) FinPour 10- Fin Inversion 10
Algorithmiques et programmation

Vers le Bac(3SI)

Procdure et fonction

ARFAOUI AYMEN

Questions: 1) Traduire l'algorithme ci-dessus en Turbo Pascal et I'enregistrer dans le dossier bac2004 situe a la racine C : en lui donnant comme nom le numro de votre carte d'identit suivi de la chane de caractres "VI ". 2) Dvelopper le module Saisie permettant de saisir deux entiers n et p vrifiant les conditions suivantes : (3<n<20) et (1<p< n-1) et en tenir compte dans le programme. 3) Dvelopper le module Inverse qui permet d'inverser une portion du tableau T du Jme au K me lment (j < k) et en tenir compte dans le programme. 4) Enregistrer la nouvelle version du programme dans le dossier bac2004 situe a la racine C: en lui donnant comme nom le numro de votre carte d'identit suivi de la chane de caractres "V2". Exemple : pour n = 9 et p = 5 p

4 -5 8 0 -2 -1 6 10 3 Etat initial du tableau T

T -2 0 8 -5 4 3 10 6 -1 Etat final du tableau T

Exercice 17

11

Algorithmiques et programmation

Vers le Bac(3SI)