1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

cours Algorithmique ofppt

abdelouafiSep 21, 2016

    1. abdelouafi

      abdelouafi Administrator Staff Member

      Messages:
      267
      Likes Received:
      8
      Trophy Points:
      18
      Joined
      Sep 13, 2016
      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.

      [​IMG] 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’);

      [B]III) Tableau à deux dimensions:[/B]

      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;

      [ATTACH=full]338[/ATTACH]

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

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

      [ATTACH=full]339[/ATTACH]

      [B]Exemple1[/B]: 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.

      [B]Exemple2[/B]: 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;

      [B]Exemple3[/B]: 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;

      [B]TP: classement de skieurs[/B]

      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 : [B]procédures et fonctions[/B]

      1. [B]procédure[/B] :

      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 :

      [B]Procedure nom_proc(paramètres formels) ;[/B]

      [B]Déclarations ;[/B]

      [B]Begin[/B]

      [B] Instructions ;[/B]

      [B]End ;[/B]

      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.

      [B][I]Exemple[/I][/B] :

      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) [B]Procédure avec parameters d’entrée[/B]:

      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.

      [B]Passage des parameters:[/B]

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

      Deux modes de passages :

      [B]1- Passage par valeur :[/B]

      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 [B]VAR[/B] dans la définition.

      [B]Exemple[/B] :

      [B][I]Procedure somme(x, y, z) ;[/I][/B]

      [B][I]Begin[/I][/B]

      [B][I]Z := x + y ;[/I][/B]

      [B][I]Writeln(x, y, z) ;[/I][/B]

      [B][I]End ;[/I][/B]

      [B][I]A :=10 ; b :=90 ; c :=1 ;[/I][/B]

      [B][I]Somme(a,b,c) ; { a=10 b=90 c=100}[/I][/B]

      [B][I]Writeln(a,b,c); { a=10 b=90 c=1}[/I][/B]

      2- [B]Passage par adresse[/B] :

      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.

      [B][I]Procedure somme(x, y:integer; var z: integer) ;[/I][/B]

      [B][I]Begin[/I][/B]

      [B][I]Z := x + y ;[/I][/B]

      [B][I]Writeln(x, y, z) ;[/I][/B]

      [B][I]End ;[/I][/B]

      [B][I]A :=10 ; b :=90 ; c :=1 ;[/I][/B]

      [B][I]Somme(a,b,c) ; { a=10 b=90 c=100}[/I][/B]

      [B][I]Writeln(a,b,c); { a=10 b=90 c=100}[/I][/B]

      [B]Exercices[/B]:

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

      2) N !

      à

      [B][I]Program calcul;[/I][/B]

      [B][I]Procedure somme(n:integer; var s:integer) ;[/I][/B]

      [B][I]Var i:integer;[/I][/B]

      [B][I]Begin [/I][/B]

      [B][I] S:=0;[/I][/B]

      [B][I] For i:=1 to n do[/I][/B]

      [B][I] S:= s + I;[/I][/B]

      [B][I]End;[/I][/B]

      [B][I]Var m,w:integer;[/I][/B]

      [B][I]Begin[/I][/B]

      [B][I]Readln(m);[/I][/B]

      [B][I]Somme(m,w);[/I][/B]

      [B][I]Writeln(w);[/I][/B]

      [B][I]End.[/I][/B]



      [B][I]Program calcul;[/I][/B]

      [B][I]Procedure fact(n:integer; var f:integer) ;[/I][/B]

      [B][I]Var i:integer;[/I][/B]

      [B][I]Begin [/I][/B]

      [B][I] f:=1;[/I][/B]

      [B][I] For i:=1 to n do[/I][/B]

      [B][I] f:= f * I;[/I][/B]

      [B][I]End;[/I][/B]

      [B][I]Var m,w:integer;[/I][/B]

      [B][I]Begin[/I][/B]

      [B][I]Readln(m);[/I][/B]

      [B][I]fact(m,w);[/I][/B]

      [B][I]Writeln(w);[/I][/B]

      [B][I]End.[/I][/B]

      [B]Exercices:[/B]

      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 ?



      [B][I]Program lecture ;[/I][/B]

      [B][I]Uses crt ;[/I][/B]

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

      [B][I]Var i:integer;[/I][/B]

      [B][I]Procedure lecture(var t :tab);[/I][/B]

      [B][I]Begin[/I][/B]

      [B][I]Clrscr ;[/I][/B]

      [B][I]For i :=1 to n do[/I][/B]

      [B][I]Begin[/I][/B]

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

      [B][I]Readln(t[i]);[/I][/I][/B][I]

      [B][I]End;[/I][/B]

      [B][I]End;[/I][/B]

      [B][I]Procedure affiche(t:tab);[/I][/B]

      [B][I]Begin clrscr;[/I][/B]

      [B][I]For i:=1 to n do[/I][/B]

      [B][I]Write(t[i]:5);[/I][/I][/B][I]

      [B][I]Writeln;[/I][/B]

      [B][I]End;[/I][/B]

      [B][I]Var t:tab;[/I][/B]

      [B][I]Begin[/I][/B]

      [B][I]Lecture(t);[/I][/B]

      [B][I]Affiche(t) ;readln ;[/I][/B]

      [B][I]End.[/I][/B]

      [B]Variables globales et locales :[/B]

      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.

      [B]3) Fonction :[/B]

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

      [B]Syntaxe[/B] :

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

      [B]Appel d’une fonction : [/B]

      Variable := nomfonction (paramètres effective) ;

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

      [B]Exemple [/B]:

      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.


      [B]Chapitre 6 : les chaines de caractères[/B]


      1. [B]Définition[/B] :

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

      [B]Syntaxe[/B] :

      Type nomtype=string[longueur]

      [B]Exemple[/B] :

      Type ch=string[20] ;

      Ch := ‘’informatique’’

      Ch :=’ ‘ ; chaine vide

      2. [B]Fonction et procédure[/B] :

      2.1 [B][I]Length[/I][/B] : :donne la longueur d’une chaine.

      Ch :=’’informatique’’

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

      2.2 [B][I]Concaténation[/I][/B] :

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

      [B]Exemple[/B] 1: ch1 :=’’infor ‘’ ch2 :=’’matique’’

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

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

      [B]*[/B]

      **

      ***

      **** **** 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 [B][I]Extraction [/I][/B]:


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

      [B]Exemple[/B] : ch :=’informatique’ ;

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

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

      [B]Exercice [/B]:

      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 [B][I]Position dune sous chaine [/I][/B]:

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

      2.5 [B][I]suppression[/I][/B]

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

      [B]Exemple[/B] : ch :=’informatique’

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

      [B]Exercices :[/B]

      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 ?

      àprogramme déterminant la fréquence des lettres :

      Program frequence ;

      Var f :array[‘a’..’z’] of integer ;

      Texte:string[255];

      I: ‘a’..’z’;

      Begin

      For i:= ‘a’ to ‘z’ do

      F[i]:=0;

      Writeln(‘donnez votre texte:’);

      Readln(texte) ;

      For i:= ‘a’ to ‘z’ do

      If copy(texte, I, 1)=I then f[i]:=f[i]+1;

      For i:= ‘a’ to ‘z’ do

      Writeln(‘fréquence de ‘,I,’=’,f[i]);

      End;

      [B]Chapitre 7: les enregistrement (Record)[/B]

      Un enregistrement est un ensemble de propriétés (attributs) se rapportant à une même entité (Object). Ces propriétés sont appelés champs.

      Exemple :

      Client(n°client, nom, prénom, adresse, date de naissance)

      [B]Syntaxe Pascal :[/B]

      [B][I]Type nomtype=record[/I][/B]

      [B][I] Chp1 :type1 ;[/I][/B]

      [B][I] ….[/I][/B]

      [B][I] Chpn :typeN ;[/I][/B]

      [B][I]End ;[/I][/B]

      [B]Exemple[/B] :

      Type date=record

      J :1..31 ;

      M :1..12 ;

      An :0..99 ;

      End ;

      Var x :date ;

      Un champ est reference par le nom de la variable enregistrement suivi d’un point suivi du nom du champ: X.j X.M , X.an

      · [B]Lecture de x[/B] :
      [ATTACH=full]340[/ATTACH]

      [B]Exemple[/B]:

      Donnez la definition du type client sachant qu’un client est caractérisé par : nom, prénom, date de naissance.

      Type client=record

      Nom, prenom :string[20] ;

      Date_n :date ;

      End;

      [B]Exercice[/B]:

      Etant donnée une liste d’étudiant (n°inscription, note1, note2, moyenne).

      1) Procédure de lecture de la liste

      2) Procédure de calcul de la moyenne de tous les étudiants ?

      à

      Const n=5 ;

      Type etud=record

      Nins :integer ;

      Nom :string[20] ;

      N1,n2,m :real ;

      End ;

      Tab=array[1..n] of etud;

      Procedure lect(vat t:tab);

      Var i:integer;

      Begin

      For i:=1 to n do

      Begin

      With t[i] do

      Begin

      Readln(nins);

      Readln(nom);

      Readln(n1,n2);

      M:=(n1+n2)/2;

      End;

      End;

      End;

      Function moyenne(t:tab):real;

      Var i:integer; mg:real;

      Begin

      Mg:=0;

      For i:=1 to n do

      With t[i] do

      Mg:=mg+m;

      Mg:=mg/n;

      Moyenne:=mg;

      End;


      [B]Chapitre 8: les fichiers:[/B]

      1. [B]Généralités[/B]:

      FicheàEnregistrement

      Fichier=ensemble de fiches=ensemble d’enregistrement de même type

      [B]Exemple[/B] : fichier étudiant de TGI1

      [B]Support [/B]: disque, disquette…

      2. [B]Operations[/B]:

      · Ouverture :

      Tout fichier doit être ouvert avant sa manipulation.

      · Fermeture :

      Tout fichier doit être fermé après son utilisation.

      · Lecture : la lecture d’un fichier se fait enregistrement par enregistrement.

      · Ecriture : l’écriture d’un fichier se fait enregistrement par enregistrement.

      [B]3. Mise à jour :[/B]

      Création, destruction, ajout d’un enregistrement , suppression, modification et consultation.

      [B]4. Type de fichier[/B]

      · Fichier séquentiel : l’accès au i ème enregistrement nécessite l’accès au (i-1) enregistrement qui le précédent.

      · Fichier à accès direct :l’accès à un enregistrement se fait directement par le biais d’un de ses champs qui est la clé d’accès (identificateur).

      Fichier séquentiel indexé :

      l’accès à un enregistrement se fait en deux étapes :

      1. recherche séquentielle de la clé dans une table appelée table d’index.

      [ATTACH=full]341[/ATTACH]


      [B]1. Fichier en pascal :[/B]

      · [B]Déclaration d’un type fichier :[/B]

      [B][I]Type nomtype=file of type d’enregistrement ;[/I][/B]

      [B]Exemple[/B] :

      Type etud =record

      Nins :integer ;

      Nom, prenom :string[20] ;

      Niveau :integer ;

      End ;

      Type fetud=file of etud ;

      Var f, g:fetud;

      · [B]Assignation[/B]: associe un nom physique de fichier à un nom logique.

      [B]Assign (nom logique, nom physique)[/B]

      [B]Exemple :[/B]

      Assign(f, ’TGI1’)

      · [B]Création :[/B]

      Rewrite(nom logique)

      · [B]Fermeture :[/B]

      Close(nom logique)

      · [B]Ouverture d’un fichier déjà crée :[/B]

      Reset(nom logique)

      · [B]Ecriture :[/B]

      Write(nom logique, variable enregistrement)

      [B]Exemple[/B] :

      Var e :etud ;

      F :fetud ;

      Write(f,e) ;

      · [B]Lecture: [/B]

      Read(f,e);

      Autorisée lorsque f est ouvert avec [B]reset. [/B]

      [B]Exercice[/B] : écrire une procédure de création d’un fichier agenda (nom, adresse, tel).

      Program agenda ;

      Type pers=record

      Nom :string[20] ;

      Ad :string[20] ;

      Tel :integer ;

      End ;

      Fpers=file of pers ;

      Procedure creation( var f:fpers);

      Var e: pers; rep : char;

      Begin

      Assign (f,’agenda’);

      Rewrite(f);

      Repeat

      With e do

      Begin

      Readln(nom);

      Readln(ad);

      Readln(tel);

      End;

      Write(f,e);

      Write(‘autre enregistrement :O/n’);

      Readln(rep) ;

      Until rep=’n’ ;

      Close(f);

      End;

      Procedure affiche(var f:fpers);

      Var e: pers; rep : char;

      Begin

      Assign(f,’agenda’);

      Reset(f);

      For i:=1 to filesize(f) do

      Begin

      Read(f,e);

      With e do

      Begin

      Writeln(nom);

      Writeln(ad);

      Writeln(tel);

      End;

      End;

      Close(f);

      End;

      Var f:fpers;

      Begin

      Creation(f);

      Affiche(f);

      Readln;

      End.

      · [B]Taille d’un fichier:[/B]

      Filesize(nom logique) :donne le nombre d’enregistrement d’un fichier.

      · [B]Fin de fichier :[/B]

      Eof(nom logique) : détecte la fin de fichier.

      Dans la procédure affiche précédente on peut remplacer la boucle for par while comme suivant : [B] while not (eof(f)) do [/B]

      · [B]Mise à jour d’un fichier :[/B]

      [B][I]Ajout[/I][/B] :

      Ouverture du fichier par Reset.

      L’ajout n’est possible qu’à la fin du fichier, donc il va falloir de déplacer le pointeur de fichier à la fin par la fonction [B]seek(f,n)[/B] avec n est le numéro d’enregistrement.

      [B]Exemple[/B] :

      Type pers=record

      Nom, prenom :string[20] ;

      Ad :string[20] ;

      Tel :string[20] ;

      e-mail:string[20] ;

      end ;

      fpers=file of pers ;

      - Procedure de creation agenda

      - Procedure d’ajout

      Procedure cree(var f:fpers);

      Begin

      Assign(f,’agenda’);

      Rewrite(f);

      Close(f);

      End;

      Procedure ajout(var f:fpers);

      Var rep:char; e:pers;

      Begin

      Assign(f,’agenda’);

      Reset(f); seek(f,filesize(f));

      Repeat

      With e do

      Begin

      Readln(nom);

      Readln(prenom);

      Readln(ad);

      End;

      Write(f,e);

      Write(‘autre enregistrement o/n’);

      Readln(rep) ;

      Until rep in [‘n’,’N’] ;

      End;

      [B][I]Recherche[/I][/B]:

      - [B]séquentielle[/B]:

      à partir d’’un champ qui servira de la clé de recherché on parcour le fichier depuis son début jusqu’à ce qu’on trouve l’enregistrement recherché ou on arrive à la fin du fichier.

      Procedure recherche(var f :fpers) ;

      Var rep :char ; e :pers ; n :string[20] ;

      Begin

      Assign(f, ‘agenda’); reset(f);

      Repeat

      Write(‘donnez le nom à rechercher’); readln(n) ;

      Reset(f) ;

      Read-f,e) ;

      While (e.nom<>n) and (not(eof(f))) do

      Read(f,e);

      If e.nom=n then begin

      Writeln(‘nom=’,e.nom);

      Writeln(‘e-mail=’,e.e-mail) ;

      Writeln(‘adresse=’,e.ad)

      Else writeln(‘enregistrement inexistent ‘);

      Write(‘autre enregistrement o/n’);

      Readln(rep) ;

      Until rep in [‘n’,’N’] ;

      Close(f);

      End;

      - [B]Recherché direct [/B]:

      À partir du numéro d’enregistrement n.

      Si n<=filesize(f) ; alors l’enregistrement existe sinon n’existe pas.

      Procedure recherche (var f :fpers) ;

      Var rep :char ; e :pers ; n :integer ;

      Begin

      Assign(f,’agenda’); reset(f);

      Repeat

      Write(‘donner le numéro recherché’); readln(n);

      If n<=filesize(f) then

      Begin

      Seek(f,n) ; read(f,e) ;

      Writeln(‘nom=’,e.nom);

      Writeln(‘e-mail=’,e.e-mail) ;

      Writeln(‘adresse=’,e.ad)

      End

      Else writeln(‘l’’enregistrement n’’existe pas’);

      Write(‘autre enregistrement o/n’);

      Readln(rep) ;

      Until rep in [‘n’,’N’] ;

      Close(f);

      End;

      [B]Modification[/B]:

      Il se fait en trois étapes :

      - Recherche de l’enregistrement à modifier

      - Lecture des nouvels enregistrement

      - Récriture de l’enregistrement.

      Filepos(f) donne le n° de l’enregistrement courant.

      Procedure modifier(vat f :fpers) ;

      Var rep :char ; e :pers ; n :integer ;

      Begin

      Assign(f,’agenda’); reset(f);

      Repeat

      Write(‘n° recherché:’);readln(n);

      If n<=filesize(f) then

      Begin

      Seek(f,n) ; read(f,e) ;

      Writeln(‘nom=’)readln(e.nom);

      Writeln(‘e-mail=’);readln(e.e-mail) ;

      Writeln(‘adresse=’);readln(e.ad) ;

      Seek(f,filepos(f)-1);

      Write(f,e);

      End

      Else Write(‘autre enregistrement o/n’);

      Readln(rep) ;

      Until rep in [‘n’,’N’] ;

      Close(f);

      End;
      [/i][/i][/i][/i][/i][/i][/i][/i][/B][I][I][i][i][i][i][i][i]
      [/i][/i][/i][/i][/i][/i][/i][/i]
      [I][i][i][i][i][i][i]
      [/i][/i][/i][/i][/i][/i][/i]
      [i][i][i][i][i][i][/i][/i][/i][/i][/i][/i]
       

      Attached Files:

      Loading...

Share This Page

Share