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.
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:
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 :
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 »
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.
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 :
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.
1à
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.
2à
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;
A[‘b’,2]:=3;
Lecture et écriture d’un tableau t de n ligne et m colonne:
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.
2à
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 ?
1à
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)
ermet 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 ?
<
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.

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:
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 :
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 »
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.
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 :
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.
1à
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.
2à
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;
A[‘b’,2]:=3;
Lecture et écriture d’un tableau t de n ligne et m colonne:
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.
2à
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 ?
1à
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)
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 ?
<