يقدم موقعنا تمارين مصححة في لغات البرمجة مثل C / C ++ و PHP
. اكتشف أيضًا مدونتنا التي تحتوي على آخر أخبار التكنولوجيا من هنا

cours Algorithmique ofppt

abdelouafi

Administrator
أحدث المقالات
إذا كنت ترغب في مشاهدة الصور ، يرجى النقر عليها
Blog
SUIVEZ NOTRE CHAINE YOUTUBE: قم بالتسجيل في قناتنا عبر هذا الرابط https://www.youtube.com/channel/UCCITRMWPcElh-96wCS3EyUg
devoir 1 math tronc commun

مجموعة من دروس و فروض جميع المستويات

دروس الإعدادي - دروس الثانوي الثأهيلي - دروس التعليم الابتدائي - فروض مختلف المستويات الدراسية

فضلا و ليس أمرا شارك هذه الصفحة مع أصدقائك:
Traitement séquentielle :

Définition :

Un ensemble d’opérations ordonnées chronologiquement.

Exemple : plantation d’un arbre

Première opération : creuser un trou

Deuxième opération : placer l’arbre dans le trou

Troisième opération : reboucher le trou

Quatrième opération : arroser.

- Calcul salaire net ;
- Salaire brut

- Retenues
- Net=brut - retenues

Algorithmique :

C’est une description d’une solution d’un problème (expression informelle)

Structure :


Algorithme nom ;

Liste des déclarations (variables,…) ;

Début

Opérations ;

Fin.
Problème -------------> Algorithme ----------------> Programme

Programmation en Pascal :

Structure :

Program nomprogramme ;

Liste des déclarations (variables,…) ;

begin

Opérations ;

end.

a)Variable :


Zone mémoire susceptible de recevoir des valeurs lors de l’éxecution d’un programme. Elle est caractérisée par un identificateur et un type.

clip_image001.gif
type réel
15.5

X :identificateur zone mémoire



b)Type :

Ensemble de valeurs que peut prendre une variable.

Exemple :

Note : les valeurs possibles {0, 1, …20}

En Pascal on distingue des types prédéfinis (Integer, Real, Boolean, char, string… ) et des types définis (utilisateurs).

c)déclaration de variables :

var nom_variable : type ;

Exemple :

Var x : integer ; {x est une variable de type entier}

A1,b22 : Real ;

Remarque : le nom d’une variable ne doit pas commencé par un nombre.

d) Affectation :

C’est une opération qui permet de donner une valeur à une variable, on utilise le symbole :=

99


Exemple :

X :=99 ;
Y :=X ;
Z :=2 * X + Y ;
Exercice :

1. Permutation de deux nombres a et b ?

2. Permutation de 3 nombres a, b et c ?

Corrigé :

Pour permuter deux nombres il faut utiliser une troisième variable x pour enregistrer une copie de l’une des deux variables :

X :=A ; et A :=B ;

Donc B :=X ;

2) X :=B ;

B :=A ;

A :=C ;

C :=X ;

e) instruction d’entrée sortie (ou de lecture/ Ecriture) :

Instruction de lecture :

On utilise l’instruction READLN(variables)

Exemple : READLN(a,b,c) ; {cette instruction permet de saisir par clavierles valeurs de trois variables}.

Instruction d’écriture :

On utilise l’instruction WRITELN(expression) ou WRITE(expression).

Exemple : A :=2 ; et B :=3 ;

Write(A) ; {elle affiche la valeur de A :2}

Write(B) ; {elle affiche la valeur de B :3}

Write(A*B) ; {elle affiche la valeur du produit A*B :6}

Write(’Bonjours’) ; {elle affiche le message « Bonjours »}

4)Application :

Calcul du salaire net ?

Phase analyse :

- Données : ---àLecture

Salaire brut :SB

Retenues : R

- Résultats :à-àEcriture

Salaire net : SN

- Calcul :

SN := SB – R ;

Phase conception :

Algorithme salaire ;

Variables SB, R, SN : Entier ;

Début

Lire(SB , R) ;

SN :=SB – R ;

Ecrire(SB) ;

Fin.

Programme Pascal :

Program salaire ;

Var SB, R, SN : integer ;

Begin

Readln(SB,R) ;

SN :=SB – R ;

writeln(SB) ;

readln;

end.

Exercice: développez un programme qui calcul le périmètre et la surface d’un rectangle?

- Analyse

- Algorithme

- Programme

Corrigé :

Program perimetre ;

Var long, larg, P,S :integer ;

Begin

Readln(long, larg);

P:=2*(long+larg);

S:=long*larg;

Writeln(’Périmètre ’, P,’ Surface’,S);

Readln;

End.

Exercice:

Décomposition d’une somme d’argent (S) en nombre de billets de 100, 50, 10 en pièces de 5 et 1 DH ?

999=9*100 + 1*50 + 4*10+ 1*5+4*1

Program decomposition ;

Var S,N100,N50,P5,P1,R:integer;

Begin

Readln(S);

N100:=S div 100;

R1:=S mod 100;

N50:= R1 div 50;

R1:= R1 mod 50;

N10:=R1 div 10;

R1:=R1 mod 10;

P5:=R1 div 5;

P1:=R1:= mod 5;

Writeln(‘nombre billet de 100=’ , N100);

Writeln(‘nombre billet de 50=’ , N50);

Writeln(‘nombre de pièces de 1=’ ,P1);

Readln ;

End.



Traitement conditionnel

1) Définition :

C’est un ensemble d’opérations (op) régi par un ensemble de condition (c). une opération (op) est exécutée si la condition (c )est vérifiée.

Forme générale : SI condition ALORS opération

Exemple : résolution de l’équation aX + b=0

Si a<>0 alors x :=- b/a ;

2) Différents formes du conditionnel :

1. Forme1
Si conditio Alors


Instructions ;

Fin si ;

Exemple : aX + b=0

Phase analyse :

- Données : a,b

- Résultats : x, pas de solution

- Calcul :

Si a <>0 alors x=-b/a ;

Si a=0 alors ecrire(‘pas de solution’)

Algorithme equation ;

Variables a,b,x : réels ;

Début

Lire (a , b) ;

Si a<> 0 alors

X :=-b/a ;

Ecrire(x) ;

Finsi

Si a = 0 alors

Ecrire(‘pas de solution’) ;

Finsi ;

Fin.

Syntaxe
If condition Then


Begin

Instruction ;

End ;

Exemple : aX + b=0


Program equation ;

Var a,b,x : real ;

begin

readln (a , b) ;

if a<> 0 then

begin

X :=-b/a ;

writeln(x) ;

end ;

if a = 0 then

begin

writeln(‘pas de solution’) ;

end ;

readln ;

end.

exemple2 : aX² +bx +c =0

program equation;

Var a,b,x, x1,x2 : real ;

begin

readln (a , b, c) ;

d:= b*b – 4*a*c;

if d=0 then

begin

x1:=-b/(2*A);

writeln(x1);

end;

if d<0 then

begin

writeln(‘pas de solution’);

end;

if d> 0 then

begin

x1:= (-b-sqrt(d))/(2*a);

x2:= (-b+sqrt(d))/(2*a);

writeln(‘x1=’ ,x1);

writeln(‘x2=’ ,x2);

end;

readln;

end.

1. Forme2:

Si condition Alors

Instructions;

Sinon

Instructions;

Finsi;

Exemple: aX + b=0


Si a<> 0 alors

X :=-b/a ;

Ecrire(x)

sinon

Ecrire(‘pas de solution’) ;

Finsi ;

Syntaxe Pascal :

If condition Then

Begin

Instruction ;

End

Else

Begin

Instruction ;

End ;

Exemple:

Program equation ;

Var a,b,x : real ;

begin

readln (a , b) ;

if a<> 0 then

begin

X :=-b/a ;

writeln(x) ;

end

else

begin

writeln(‘pas de solution’) ;

end ;

readln ;

end.


exemple2 : aX² +bx +c =0

program equation;

Var a,b,x, x1,x2 : real ;

begin

readln (a , b, c) ;

d:= b*b – 4*a*c;

if d=0 then

begin

x1:=-b/(2*A);

writeln(x1);

end

else

begin

if d<0 then

begin

writeln(‘pas de solution’);

end

else

begin

x1:= (-b-sqrt(d))/(2*a);

x2:= (-b+sqrt(d))/(2*a);

writeln(‘x1=’ ,x1);

writeln(‘x2=’ ,x2);

end;

end;

readln;

end.

Exercice:

Calcul IGR sachant que si le revenue annuel est compris dans:

0..20000 : IGR=0

20001..30000 : IGR=10%

30001..40000 : IGR=20%

40001..50000 :IGR=30%

>50000 : IGR=40%

Exemple :

80000=20000 + 10000 + 10000 + 10000 + 30000

0% 10% 20% 30% 40%

PROGRAM employe ;

Var r, igr : real ;

Begin

Readln(r);

If r<=20000 then

Begin

Igr=0;

End

Else

If r<=30000 then

Igr:= (r – 20000) *0.1;

Else

If (r<=40000) then

Igr:= 1000 + (r – 30000)*0.2;

Else

If r<=50000 then

Igr:=3000 + (r – 40000)*0.3;

Else

Igr:= 6000 + (r – 50000)*0.4;

Writeln( ‘IGR=’ , igr);

Readln;

End.

1. La structure sélective: (ou à choix multiple)

Une structure sélective est une structure permettant le choix entre plusieurs cheminements possible.

Syntaxe Pascal:

Case variable of

Valeur1 : begin …end ;

Valeur2: begin ..end;





valeurN: begin ..end;

else begin

….

end;

end;


Exemple:

Développez un programme Pascal qui affiche le jour de la semaine sachant que les jours sont codes de 1 à 7 ?

Program jours ;

Uses crt ;

Var i :integer ;

Begin

Writeln(‘donnez le code du jours’);

Readln(i);

Case I of

1: writeln(‘Lundi’);

2: writeln(‘Mardi’);

….

6: writeln(‘samedi’);

7: writeln(‘Dimanche’);

Else writeln(‘Pas de jours’);

End ;

Readln ;

End.

Exemple 2 : reprenons l’exemple précédent calcul d’IGR

Program employe ;

Var r, igr :real ;

Begin

Readln(r);

Case r of

0..20000: igr:=0;

20001..30000: igr:= (r – 20000)*0.1;

30001..40000: igr:=1000 + (r – 30000)*0.2;

40001..50000: igr:=3000 + (r – 40000)*0.3;

Else igr:=6000 + (r – 50000)*0.4;

Writeln( ‘IGR=’, igr);

End;

Readln;

End.

Exercice:

Donnez un programme qui lit operand, opérateur, operande et affiche

Opérande opérateur opérande = résultat

On utilise le type caractère : CHAR

Exemple : var x : char ;

X :=’A’ ; x :=’*’ ; x :=’1’ ;

Phase analyse:

Données: op1, op2, op

Résultat :R

Program calcul ;

Var R, op1, op2 : real ;

Op:char;

Begin

Readln(op1,op,op2);

Case op of

‘+’: R:=op1 + op2;

‘-‘:R:=op1 - op2;

‘/’: R:=op1/op2;

‘*’: R:=op1 * op2;

Else writeln(‘Erreur’);

End;

Writeln(op1,op, op2, ‘=’,R);

Readln;

end.

2. Branchement:

· Etiquette: reference d’une instruction dans un programme.

Définition Pascal :

LABEL LISTE.

Exemple

Label 10, A, A1 ;

· Branchement :: rupture de séquence dans un programme non régi par une condition.

Exemple :

Program test ;

Label 10 ;

Var a, b, c : real ;

Begin

Readln(a,b);

10: c:=a+b;

Writeln(c);

Goto 10;

End.

Chapitre 2: les iterations (notion de boucle)

1. Définition :

Itération : ensemble d’instructions qui s’exécute plusieurs fois dans un programme.

Exemple :

· Calcul du fiche de paie du personnel d’une entreprise ;

· N ! , la somme des i lorsque i varie de 1 à N ;

· Toutes les secondes prélever la température.

2. Différents formes d’itérations :

1. La forme POUR :

La syntaxe générale est :


Pour compteur=Valeur_initial à valeur_finale pas faire

Opérations ;

Fin pour

Exemple :

S=∑i , 0≤i≤N

I: est le compteur de boucle avec le pas de variation est 1

S :=0 ;

Pour i := 0 à N faire

S := S+i ;

Fin pour

Syntaxe Pascal :

For variable := V_I to V_F do

Begin

Instructions;

End;

Exemple:
upload_2016-9-21_22-34-23.png


Exercice: table de multiplication d’un nombre 1≤k≤s

Program multiplication;

Var i, P, k :integer ;

Begin

Readln(k);

For i:=1 to 9 do

Begin

P:=k*I;

Writeln(k,’*’,I,’=’,p);

End;

End.

Table de multiplication de 1 à 9:

Program multiplication;

Var i, P, k :integer ;

Begin

For i:=1 to 9 do

begin

For i:=1 to 9 do

Begin

P:=k*I;

Writeln(k,’*’,I,’=’,p);

End;

End;

End.

1. La forme TANT QUE

La syntaxe pascal :

While condition do

Begin

Instructions ;

End ;

Exemples :
upload_2016-9-21_22-35-33.png


Remarque :

Il faut toujours initialiser la condition.

1. La forme REPETER JUSQU’à

La syntaxe est :

Repeat

Instructions ;

Until condition ;

Exemples : on va reprendre l’exemple précédent on utilisant « repeat »
upload_2016-9-21_22-36-11.png


Exercices

1. Développez un programme qui teste si un nombre est premier?

2. Développez un programme qui donne la liste des N nombres premiers,

3. Développez un programme qui teste si un nombre est un nombre d’Amstrong ?

4. Développez un programme qui calcul la moyenne des notes d’un élève (x notes) ?

5. Moyenne de la classe (N élèves) ?

6. Développez un programme qui détermine le PGCD de deux nombres A et B ?

· Nombre premier :

Je donne ici seulement la partie traitement :

Readln(N) ;

I :=2 ;

While ( (N mod I)<>0) and (I ≤N div 2) do

I:=i+1;

If ( N mod I <>0) then writeln(N, ‘ est premier’)

· Le PGCD de deux nombres:

On sait que PGCD(a,b)=PGCD(b,r) avec r est le reste de la division de a par b.

While (a≥b) do

Begin

R :=a mod b ;

A :=b ;

B :=R ;

End ;

Writeln(‘PGCD=’,b)

· Nombre d’amstrong:

N=407 est un nombre d’amstrong car 407= 4*4*4+0*0*0+7*7*7

Readln(N) ;

K :=N ; s :=0 ;

While (k div 10<>0) do

Begin

J:=k mod 10;

K:=k div 10;

S:=s+j*j*j;

End;

S:=s+j*j*j;

If (s=N) then writeln(N, ‘ est Amstrong’);

Chapitre 4: les tableaux

I – Définition et exemples

Tableau: zone mémoire permettant de représenter une liste de donnée.

Un tableau est caractérisé par un identificateur un type et le nombre de ses éléments.

Exemple : liste de10 nombres entiers.

1. calcul de la moyenne .

M :=0

For i :=1 to 10 do

Begin

Readln(n);

M:=m+n;

End;

M:=m/10.

2. cacul de la variance.

upload_2016-9-21_22-37-0.png


Chaque élément du tableau est repéré par le nom du tableau +son rang dans le tableau

T[1]=12 , T[2]=15 …T[10]

V=0 ;

For =1 to 10 do begin

begin

Readln(T);

M :=m+t

End;

M:=m/10;

La variance :

V=0;

For i:=1 to 10 do

Begin

V:=v+sqr(t-m)

End;

V:=v/n;

II)tableau à une dimension

Syntaxe :

Type nomtype=array[1..nb] of type ;

Exemples :

a) tableau de 10 entiers

Type tab=array [1..10] of integer ;

Var a b :array [1…10]of integer ;

Var a b :tab;

b) tableau de n’entiers

Const n=100;

Type tab =array[1…..n]of integer ;

N:doit être constant

Lecture d’un tableau T de n entiers :

upload_2016-9-21_22-37-34.png


Exercices

1)Programme qui lit un tableau de n entiers ,recherche son minimum min et le rang r du minimum, ?

2)Permuter l’élément de range r avec le premier élément du tableau.



Program permutation;

Uses crt ;

Const n=5 ;

Type ta=array [1…n] of integer;

Var i,min ,r:integer ;

T:ta;

Begin clrscr;

for I=1 to n do

Begin

Write(‘t[‘,I,’]=’);

Readln(T);

End ;

Min:=t[1]; r:=1;

For i:=2 to n do

Begin

If t<=min then

Begin

Min:=t;

R:=I;

End;

End;

Writeln(‘le minimum=’, min, ‘ et le rang=’ , r);

Readln ;

End.



Program permutation;

Uses crt ;

Const n=5 ;

Type ta=array [1…n] of integer;

Var i,min ,r, x, j:integer ;

T:ta;

Begin clrscr;

for I=1 to n do

Begin

Write(‘t[‘,I,’]=’);

Readln(T);

End ;

for I=1 to n-1 do

Begin

Min:=t[j];

R:=j;

For i:=j+1 to n do

Begin

If t<=min then

Begin

Min:=t;

R:=i;

End;

End;

X:=t[j]; t[j]:=t[r]; t[r]:=x;

End ;

For i :=1 to n do

Writeln(t :5);

Readln;

End.

Exemple: le tri par échange

Prendre le premier élément du tableau et le comparer successivement avec les 2, 3 … jusqu’au dernier. A chaque fois qu’on trouve un élément plus petit on échange.

Refaire le même procédé pour le 2, 3 …, (n-1).

Program tri-par-echange ;

Uses crt ;

Const n=5 ;

Type ta=array [1…n] of integer;

Var i,k ,j, x, j:integer ;

T:ta;

Begin clrscr;

for I=1 to n do

Begin

Write(‘t[‘,I,’]=’);

Readln(T);

End ;

For i=1 to n-1 do

begin

for j=i+1 to n do

begin

if t[j]<=t then

begin

x:=t;

t:=t[j];

t[j]:=t;

end;

end;

end;

For i :=1 to n do

Writeln(t :5);

Readln;

End.

Exercice:

T étant un tableau de n entiers trié par ordre croissant, développez un programme permettant de rechercher un entier x dans T. ?

Première solution :

- lecture du tableu

- lecture de x

i :=1 ;

while (x<>t) and (i<=n) do

i:=i+1;

if i>N then writeln(x, ‘ n’’existe pas’)

else writeln(‘oui il existe’);

deuxième solution : la recherche DICHOTOMIQUE

i :=1 ; j :=n ;

m :=(i+j) div 2 ;

while (x<>t) and (i<=j) do

begin

if x<t[m] then j:=m-1;

if x>t[m] then i:=m+1;

m:= (i+j) div 2;

end;

if x=t[m] then writeln(x, ‘ existe’);

III) Tableau à deux dimensions:

Déclaration en L.Pascal :

Type nomtableau= array[type1, type2] of type élément ;

Avec : type1 est l’indice ligne et type2 indice colonne.

Exemple :

Type matrice=array[1..5,1..5] of integer ;

Var a:matrice;

Type mat=array[‘a’..’c’,1..5] of integer ;

Var a:mat;

upload_2016-9-21_22-39-16.png


A[‘b’,2]:=3;

Lecture et écriture d’un tableau t de n ligne et m colonne:

upload_2016-9-21_22-39-43.png


Exemple1: Somme de deux matrices a et b d’ordre n ?

Program sommematrice ;

Const n=3 ; {matrice trois ligne et trois colonne}

Type mat=array[1..n,1..n] of integer ;

Var a,b,c:mat; I,j :integer;

Begin

{lecture de la matrice A}

For i :=1 to n do

For j :=1 to n do

Readln(a[i,j]);

{lecture de la matrice b}

For i :=1 to n do

For j :=1 to n do

Readln(b[i,j]);

{le traitement:formule de la somme}

For i :=1 to n do

For j :=1 to n do

C[i,j]:=a[i,j] + b[ i,j];

For i :=1 to n do

begin

For j :=1 to n do

Write(c[ i,j]:5);

Writeln;

End;

Readln;

End.

Exemple2: produit de deux matrices a et b d’ordre n ?

Je donne, ici, seulement le traitement permettant de calculer le produit.

For i :=1 to n do

For j :=1 to n do

Begin

C[i,j]:=0;

For k:=1 to n do

C[i,j]:=c[i,j] + a[i,k]*b[k,j];

End;

Exemple3: calculer A à la puissance m( A*A*A*………A : m fois) ?

For i :=1 to n do

For j :=1 to n do

b[i,j]:=a[i,j] ;

For l :=1 to m-1 do

Begin

For i :=1 to n do

For j :=1 to n do

Begin

C[i,j]:=0;

For k:=1 to n do

C[i,j]:=c[i,j] + a[i,k]*b[k,j];

End;

For i :=1 to n do

For j :=1 to n do

b[i,j]:=c[i,j];

end;

TP: classement de skieurs

Ecrire un programme qui effectue le classement de skieurs au fur et à mesure de leur arrivée. Chaque skieur étant caractérisé par un n° et son temps de parcours (minutes, secondes, centièmes).

Chapitre 5 : procédures et fonctions

1. procédure :

une procédure est un ensemble d’instructions réalisant une fonction particulière d’un programme. C’est l‘unité de structuration des programmes en Pascal.

Un programme doit être conçu comme un ensemble de procédures.

Structure d’une procédure :

Procedure nom_proc(paramètres formels) ;

Déclarations ;

Begin

Instructions ;

End ;

Une procédure est définie dans la partie déclaration d’un programme.

Programme=déclarations+programme principal.

Le programme principal est une suite d’appels de procédures et fonctions.

Exemple :

1) procédure qui calcul la somme de deux nombres A et B (sans paramètres) :

program som;

var a, b, c :integer ;

procedure somme;

begin

c:= a + b;

end;

begin {programme principal}

readln(a, b);

somme;

writeln(c );

readln;

end.

2) Procédure avec parameters d’entrée:

Program som;

Var a, b, c :integer;

Procedure somme( var x, y :integer);

Begin

C:= x + y;

End;

Begin

Readln(a, b);

Somme(a, b);

Writeln( c);

End.

Passage des parameters:

Comment les paramètres formels sont remplacés par les paramètres effectifs?

Deux modes de passages :

1- Passage par valeur :

Les paramétres effectifs récupèrent leurs valeurs initiales après appels des procédures.

Les paramétres formels ne doivent pas être précédés par VAR dans la définition.

Exemple :

Procedure somme(x, y, z) ;

Begin

Z := x + y ;

Writeln(x, y, z) ;

End ;

A :=10 ; b :=90 ; c :=1 ;

Somme(a,b,c) ; { a=10 b=90 c=100}

Writeln(a,b,c); { a=10 b=90 c=1}

2- Passage par adresse :

Les paramétres effectifs gardentles valeurs qui leurs ont été affectés dans la procédure après appels.

Dans la définition les paramétres formels sont précédés par var.

Procedure somme(x, y:integer; var z: integer) ;

Begin

Z := x + y ;

Writeln(x, y, z) ;

End ;

A :=10 ; b :=90 ; c :=1 ;

Somme(a,b,c) ; { a=10 b=90 c=100}

Writeln(a,b,c); { a=10 b=90 c=100}

Exercices:

1) S=∑i , 0≤i≤N

2) N !

à

Program calcul;

Procedure somme(n:integer; var s:integer) ;

Var i:integer;

Begin

S:=0;

For i:=1 to n do

S:= s + I;

End;

Var m,w:integer;

Begin

Readln(m);

Somme(m,w);

Writeln(w);

End.



Program calcul;

Procedure fact(n:integer; var f:integer) ;

Var i:integer;

Begin

f:=1;

For i:=1 to n do

f:= f * I;

End;

Var m,w:integer;

Begin

Readln(m);

fact(m,w);

Writeln(w);

End.

Exercices:

1) Procédure de lecture d’un tableau de n entiers?

2) Procédure d’écriture d’un tableau de n entiers?

3) Procédure calculant la moyenne des nombres de ce tableau ?

4) Procédure de tri des élément du tableau ?

5) Programme principale ?



Program lecture ;

Uses crt ;

Type tab=array [1..n] of integer ;

Var i:integer;

Procedure lecture(var t :tab);

Begin

Clrscr ;

For i :=1 to n do

Begin

Write(‘t[‘,I,’]=’);

Readln(t);

End;

End;

Procedure affiche(t:tab);

Begin clrscr;

For i:=1 to n do

Write(t:5);

Writeln;

End;

Var t:tab;

Begin

Lecture(t);

Affiche(t) ;readln ;

End.

Variables globales et locales :

1- Variable globale :

C’est une variable qui est définie au niveau du programme principal et peut être utilisée par toute procédure ou fonction du programme.

2- Variable local :

C’est une variable qui est définie au niveau d’une procédure ou fonction et ne peut être utilisée en dehors de celle-ci.

3) Fonction :

Une fonction est une procédure particulière. Elle a obligatoirement un ou plusieurs entrées et une sortie.

Syntaxe :

Fonction nomfonction(paramètres d’entrée) :type du résultat ;

Appel d’une fonction :

Variable := nomfonction (paramètres effective) ;

Remarque : le résultat de la fonction doit être toujours affecté au nom de la fonction.

Exemple :

1. Fonction qui calcul n !

Je contente ici d’écrire seulement la fonction et c’set à vous d’écrire le programme complet.

Fonction fact(n :integer) :integer ;

Var i, f :integer;

Begin

F:=1;

For i:=1 to n do

F:=f*I;

Fact:=f;

End;

Var x,y:integer;

Begin

Writeln(‘donner la valeur de n’);

Readln(n) ;

Y :=fact(x) ;

Writeln(‘le factoriel de ‘, n, ‘ est:’,y);

Readln ;

End.


Chapitre 6 : les chaines de caractères


1. Définition :

Une chaine de caractère est une suite de lettres, de chiffres et de symboles spéciaux.

Syntaxe :

Type nomtype=string[longueur]

Exemple :

Type ch=string[20] ;

Ch := ‘’informatique’’

Ch :=’ ‘ ; chaine vide

2. Fonction et procédure :

2.1 Length : :donne la longueur d’une chaine.

Ch :=’’informatique’’

Length(ch)=12 Length(‘’ ‘’)=0

2.2 Concaténation :

Le symbole ’+’ permet de concaténer deux ou plusieurs chaines.

Exemple 1: ch1 :=’’infor ‘’ ch2 :=’’matique’’

Ch :=ch1 + ch2 ; donc ch contient le mot informatique.

Exemple2 : programme qui édite le triangle formé du caractère étoile(*)

*

**

***

**** **** 1O fois

Program triangle ;

Var s :string[10] ;

I :integer;

Begin

S:=’ ‘;

For i:=1 to 10 do

Begin

S:= s + ‘*’;

Writeln(s);

End;

Readln; end.

2.3 Extraction :


Copy(chaine, position, nombre) : permet d’extraire un nombre de caractères d’une chaine à partir d’une position donnée.

Exemple : ch :=’informatique’ ;

Ch1 :=copy(ch,1,5) donne infor

Ch2 :=copy(ch, 6, 7) donne matique

Exercice :

Ecrire une fonction qui teste si un mot est un palindrome ?

Type chaine=string[20] ;

Fonction pal(ch : chaine) :boolean ;

Var i :integer ; ch1 :chaine ;

Begin

Ch1:=’ ‘;

For i:=length(ch) down to 1 do

Ch1:=ch1 + copy(ch, I, 1);

If ch1=ch then pal:=true

Else pal:=false;

End;

2.4 Position dune sous chaine :

Pos(souschaine, chaine) : donne la position d’une sous chaine dans une chaine.

2.5 suppression

Delete(chaine, position, nombre) :permet de supprimer un certain nombre de caractères d’une chaine à partir d’une position.

Exemple : ch :=’informatique’

Delete(ch, 5, 3) : supprime les caractères r,m et a du ch.

Exercices :

1. Ecrire une procédure qui supprime tous les espaces d’un texte,

2. Ecrire une procédure qui détermine les fréquences des lettres a, b, c ,d …z dans un texte ?

3. Ecrire une procédure qui réalise le codage d’un texte ?

4. Ecrire une procédure qui réalise le décodage d’un texte ?
<