INFORMATIQUE :

Thème : Algorithme

* Un algorithme est plus souple et général qu'un programme. En effet, il est applicable à tous les programmes *
1) Définition :
Décomposition d'un problème en étapes élémentaires dans le but de sa résolution.

2) Sa conception :
- Réfléchir aux informations à manipuler et à la méthode de codage de celle-ci.
- Analyser le problème en le décomposant en sous-problème = Analyse descendante = Programmation modulaire.
- Ecrire un algorithme compréhensible en commentant celui-ci, en utilisant des noms significatifs et en ayant une présentation rigoureuse.
- Penser à l'utilisateur

3) De l'algorithme au programme
La machine comprend le langage machine (binaire 0/1)
Premier langage : l'Assembleur
Puis des langages évolués : impératifs (Pascal, Basic...) et fonctionnels (CAML...)
La machine traduit ces langages par des programmes (compilateurs et/ou interpréteurs) en langage machine.
La syntaxe doit-être correcte (->exécutable) ainsi que la sémantique (->un sens).
Pour mettre au point un programme, on fait des jeux d'essais. En cas de problèmes, on retourne à l'algorithme.

Exemple : Algorithme d'Euclide

Méthode de calcul :
pgcd de 24(A) et de 9(B)
15        9
6          3
3          3
- Obtenir A et B
- Mettre en oeuvre Euclide <-> Répéter jusqu'à ce que A=B<->Remplacer le plus grand de A et de B par la différence de ces deux nombres.



Thème : instructions simples
1) Lecture
Elle sert à stocker des informations venant de l'utilisateur dans la mémoire de l'ordinateur
- Lire (Nom_de_Variable)
Le programme s'interrompt et attend que l'utilisateur tape une valeur. Cette valeur est rangée en mémoire dans la variable désignée.
2) Affectation
- Nom_de_Variable <- Expression
L'expression est évaluée et sa valeur est rangée dans la variable indiquée à gauche de la flèche.
L'expression peut-être : - une valeur
- le résultat d'un calcul
- le contenu d'une autre variable.

Exemple :
A <- 3,14
B <- 5
C <- 8
B <- A+1
B <- B+1
C <- B

3) Ecriture
Ecrire (expression)
Expression pouvant être une valeur, un résultat, un message, le contenu d'une variable...
Exemple :
Ecrire (3) -> Valeur numérique
Ecrire (Prix) -> Contenu d'une variable
Ecrire (Prix+Taux)
Ecrire ("Prix") -> Chaîne de caractère, message
Ecrire ("Le prix est" Prix) -> Expression mixte

* Toute instruction de lecture sera précédé d'une instruction d'écriture d'un message d'information. *

Exemple : Algorithme prixtte
{Algorithme de calcul d'un prix avec taxe, taux de taxe : 20,6%}
Variable utilisée : Prix HT, Prix TTC : réel

Début
  {saisie données}
  Ecrire ('Donner votre prix hors taxe')
  Lire (Prix HT)
  {calcul}
  Prix TTC <- Prix HT * (1+20.6/100)
  {Résultat}
  Ecrire ('Le prix avec taxe est', Prix TTC)
Fin

Exemple :
Algo AireDisque En tête
{Algo de calcul de l'aire d'un disque}

Const Pi=3,14 Zone déclarative
Variable Rayon, Aire : réel

Début                                                                      Zone exécutive
{Saisie de données}
Ecrire ('Ce programme calcule l'aire d'un disque')
Ecrire ('Donnez le rayon du disque en cm')
Lire ('Rayon')
{calcul}
Aire <- Rayon * Rayon * Pi
{Résultat}
Ecrire ('L'aire d'un disque de rayon ',Rayon,'est ',Aire,'cm?.')
Fin



Thème : Objets de base
1) Constante et variable
constante -> nom <-> valeur
variable -> nom <-> zone mémoire, type

2) Type de données simples :
a/ Entier
 i) Valeurs possibles : Sous ensemble de Z
 ii) Opérateurs de calcul : + - * div mod
 iii) Opérateurs de comparaison : = < > <= >= <>
b/ Réel
 i) Valeurs possibles : Sous ensemble de R
 ii) Opérateurs de calcul : + - * / fonction
 iii) Opérateurs de comparaison : = < > <= >= <>
c/ Caractère
 i) Valeurs possibles : "a", "A"...
 ii) Opérateurs de calcul : vus ultérieurement
 iii) Opérateurs de comparaison : = < > <= >= <>
d/ Booléen
 i) Valeurs possibles : Vrai, Faux
 ii) Opérateurs de calcul : et ou non
 iii) Opérateurs de comparaison : =

3) Représentation des entiers
Les entiers positifs sont représentés par leur décompositions en base 2
exemple : 0 -> 0 1 -> 1 2 -> 10 3 -> 11 4 -> 100 5 -> 101 6 -> 110
Pour les négatifs, on utilise la méthode de compléments à deux.
4) Représentations des réels
Un sous-ensemble rationnel
Méthode dite à virgules flottantes (flotting point)
5) Représentationdes caractères
Chaque caractère est noté par une suite de 0 et de 1 : code ASCII
6) Les booléens
Type booléen (ou logique), ils sont associés à une condition ou à une expressin logique
exemple : x > 3
Conditions simples (utilise des comparaisons) ou composées (relie des conditions simples par les opérateurs logiques).

Tables de vérité :

Opérateur ET
________________
| A      | B      |A et B|
----------------------
| Faux | Faux | Faux  |
----------------------
| Faux | Vrai  | Faux  |
----------------------
| Vrai  | Faux | Faux  |
----------------------
| Vrai  | Vrai  | Vrai   |
----------------------

Opérateur ou
________________
| A      |B       |A ou B|
----------------------
| Faux | Faux | Faux   |
----------------------
| Faux | Vrai  | Vrai    |
----------------------
| Vrai  | Faux | Vrai    |
----------------------
| Vrai  | Vrai  | Vrai    |
----------------------

Opérateur non
___________
|  A    |Non A|
---------------
| Faux|Vrai    |
---------------
| Vrai | Faux  |
---------------

On peut déclarer des variables de type logique
NB: On ne peut pas utiliser une instruction de lecture avec une variable de type logique.

Exemple :
test <- Vrai
trouvé <- Faux
test <- trouvé
condition <- (x=3) et (x>0) avec x un entier
Un bit suffit à la machine pour représenter le type booléen.



Thème : Structure de choix
1) Structure alternative
Structure : instruction complexe
SI condition
  ALORS
    action 1
   SINON
    action 2
FIN SI

Une condition est une expression logique ou une variable logique évaluée à Vrai ou Faux

2) Structure conditionnelle ou alternative incomplète
SI condition
  ALORS
    action
FIN SI

Exemple : algorithme qui demande un entier (relatif) à l'utilisateur et affiche sa valeur absolue.

Algo ValeurAbs
{affiche la valeur abs d'un entier fourni par l'utilisateur}

Variable x:entier
Début
{saisie}
Ecrire ('Donner un entier pour affichage de sa valeur absolue'}
Lire (x)
{affichage}
SI x>0
  ALORS
    Ecrire ("Valeur absolue = ",x)
   SINON
    Ecrire ("Valeur absolue = ",-x)
FINSI
FIN

Autre exemple: Algorithme qui demande 2 entiers (relatifs) à l'utilisateur et les affiche dans l'ordre croissant.
Algo Ordre Croissant
{Affichage dans l'ordre croissant de 2 entiers fournis par l'utilisateur}
Variable x,y : entier

Début
{saisie}
Ecrire ("Affichage ordonné de 2 entiers, donner le premier")
Lire (x)
Ecrire ("Donner le second entier")
Lire (y)
  SI X=Y
   ALORS
     Ecrire ("Egalite ",x)
    SINON {x<>y}
     SI x < y ALORS
        Ecrire (x,"<",y)
       SINON {x>y}
        Ecrire (x,">",y)
     FIN SI
  FIN SI
Fin

3) Alternatives imbriquées
Exemple d'imbrication :
SI condition a
  ALORS
   {Action 1.a}
   SI condition b
    ALORS
     {action 1.b}
    SINON
     {action 2.b}
   FIN SI
  SINON
   {action 2.a}
FIN SI

On peut avoir plusieurs niveaux aussi bien dans le alors que dans le sinon.



Thème : Structures répétitives
Structure : instruction

1) Boucle POUR
1-1) Rôle
Répéter plusieurs fois la même action dans le cas où l'on connaît le nombre de fois que l'on doit répéter
l'action. 1-2) Ecriture algorithmique
Deux formes :
a/ boucle croissante
Pour un indice croissant d'une valeur initiale (VI) à une valeur finale (VF), faire une action.
Exemple: Pour ind cr 1 à 5 faire
Ecrire (ind)
Fin Pour
b/ boucle décroisssante
Pour un indice décroissant d'une valeur initiale (VI) à une valeur finale (VF), faire une action.
Exemple: Pour ind décr 5 à 1 faire
Ecrire (ind)
Fin Pour
1-3) Exemples
a/
Calcul de la somme des premiers entiers naturels jusqu'à n fournis par l'utilisateur.
Méthode : accumulation successive de chaque entier dans une variable somme.
Au départ, on mettra somme à 0 puis on ajoutera 1 puis 2 puis 3...puis n
quand somme vaut 0
somme <- somme + 1
quand somme vaut 1
somme <- somme + 2

Algo de calcul de la somme des premiers entiers
{demande un nombre n puis calcule et affiche la somme 1+2+3+..+n}

Variables N,I,somme : entiers
Début
Ecrire ("Donner la valeur de l'entier n pour lequel vous voulez calculer : 1+2+...+n")
Lire (N)
{Le principe de l'algo va constituer à accumuler au fur et à mesure dans somme les nombres 1,2,3,...,n}
somme <- 0 {initialisation de l'accumulateur}
Pour I cr de 1 à N faire
somme <- somme + I {accumulation de I à chaque itération}
Fin Pour
Ecrire (" La somme des ",N,"premiers entiers = ",somme)
Fin

Jeu d'essai

b/
Afficher à l'écran tous les diviseurs d'une entier naturel n fourni par l'utilisateur ainsi que le nombre total de ces diviseurs.

Algo diviseur
{Algo de tous les diviseurs d'un nombre entier N fourni par l'utilisateur ainsi que le nombre total de ces diviseurs}
Variables N,A,compteur : entiers

DEBUT
{saisie}
Ecrire ("Donner un entier positif pour l'affichage de ses diviseurs")
Lire (N)
{initialisation du compteur}
compteur <- 0
POUR A cr 1 à N faire
SI A divise N
ALORS
Ecrire (A," est un diviseur de ",N)
compteur <- compteur + 1
FIN SI
FIN POUR
Ecrire (" il y a ",compteur," diviseur de ",N)
FIN

Jeu d'essai :



Thèmes : Types structurés de données
1) Tableaux à une dimension
1-1) Définition :
(**?**)
1-2) Utilisation :
Les instructions (lire, écrire, affectation) peuvent s'utiliser sur chacune des cases du tableau.
Exemple :
Lire (T[1])
Ecrire (T[4])
T[4]<-T[5]+5
Lire (T[j]) si j est un entier
T[2i+1] = 5
L'indice d'une case d'un tableau est une expression entière.
Par contre, on ne peut pas utiliser Lire ou écrire sur T masi on peut utiliser l'application entre deux tableaux de même type : T1 <- T2

1-3) Déclaration
a/ Déclaration en un temps
T:tableau [1...10] de réels
ou
cst Nmin=1
Nmax=10
Variable T: tableau [Nmin...Nmax] de réels
b/ Déclarations en deux temps
Premier temps : type, exemple : type tab = tableau [1...10] de réels
Deuxième temps : var , exemple : var T : tab
ou
cst Nmin = 1
Nmax = 10
type tab = tableau [Nmin...Nmax] de réels
Variable T : tab
1-4) Algo de saisie
Algo saisie de tableau
{remplir un tableau fourni par l'utilisateur}
Cst Nmin = 0
Nmax = 99
Type table = tableau [Nmin...Nmax] d'entiers
Variables i, n : entiers {i indice et n dernier indice utile}

DEBUT
{saisie de n}
Ecrire("Saisie d'un tableau jusqu'à la case n")
Ecrire("Donner n <= ",Nmax)
Lire (n)
{remplissage du tableau}
POUR i cr 0 à n faire
Ecrire ("case n ",i)
Lire (T[i])
FIN POUR
FIN

1-5) Débordement
Tentative d'accéder à une case hors de l'intervalle Nmin-Nmax

2) Tableaux à deux dimensions (cf matrices)
Déclaration:
Variable M: tableau [0...99,1...50]de réels
ou
cst Lmin=0
Lmax=99
Cmin=1
Cmax=100
type matrice=tableau [Lmin...Lmax,Cmin...Cmax] de réels
Variable M :matrice

3) Chaîne de caractères
Type prédéfini :
Chaîne (Par défaut, 255 caractères) ou chaîne [taille]

Exemple :
ch : chaîne [30]
ch <-"informaticien"
Pour certaines manipulations, une chaîne peut-être considérée comme un tableau de caractères dont l'indice minimum est 1
Exemple: ch[2] vaut "n"



Thème : Procédures et fonctions
1) Sous-programmes
a/ Analyse descendante ou programmation modulaire
On écrit des modules ou sous-programmes
b/ Définition
Un sous-programme est un bloc d'instructions séparé du bloc principal d'instructions (programme principal).
C'est dans le programme principall que s'exécute l'action. On doit faire référence aux instructons du sous-programme (=appel du sous-programme).
c/ Exemple
DEBUT
Ecrire ("Donner la somme de ",X,"et ",Y)
Lire (somme)
résultat <- X+Y
SI somme = résultat
ALORS
Ecrire ("juste")
SINON
Ecrire ("Non, le résultat est : ",résultat)
FIN SI
FIN

On déclare de manière analogue les autres procédures.

{corps du programme principal}
DEBUT
Ecrire ("Programme de test de calcul")
{menu choix d'opérations}
Ecrire ("a addition")
Ecrire ("s soustraction")
Ecrire ("m multiplication")
Ecrire ("d division")
Ecrire ("Votre choix (a, s, m ou d) ?")
Lire (rep)
{saisie des deux nombres}
Ecrire ("Donner un nombre")
Lire (a)
Ecrire ("Un autre nombre")
Lire (b)
{traitrement}
SI rep = 'a'
ALORS
TestAddition (a,b)
FINSI
SI rep = 's'
ALORS
TestSoustraction (a,b)
FINSI
SI rep = 'm'
ALORS
TestMultiplication (a,b)
FINSI
SI rep = 'd'
ALORS
TestDivision (a,b)
FINSI
FIN

2) Procédure
a/ Rôle : résoudre un sous-problème quelconque mais clairement défini

ex: Calcul et affichage de deux matrices fournies par l'utilisateur.
On utilisera trois procédures :
- saisie : stocker dans un tableau à deux dimensions une matrice carrée donnée par l'utilisateur.
- somme : stocker dans un tableau àdeux dimensions la somme de deux matrices carrées.
- affichage : afficher une matrice carrée.

b/ Paramètres et variables locales
On appelle paramètres, les objets qui entrent en jeu dans les communications de valeur entre un sous-programme et le programme principal.
On parle de paramètres formels au moment de la déclaration du sous-programme et effectifs au moment de l'appel du sous-programme.
Un sous-programme a besoin de variables locales (internes). Leurs valeurs n'ont pas à être communiquées à l'extérieur. Elles seront déclarées localement.
C'est au moment de l'appel que s'effectue effectivement le travail.
Au moment de la déclaration, tout est formel.

-> Valeur initiale
i) données : doit-être définie
ii) données modifiées : doit-être définie
iii) résultat : quelconque
-> Valeur finale
i) données : identique à valeur initiale
ii) données modifiées : (re)définie
iii) résultat : définie
-> Paramètres effectifs lors de l'appel de la procédure
i) données : expression ou identificateur initialisée
ii) données modifiées : identificateur initialisé
iii) résultat : identificateur
-> Contrainte sur le paramètre
i) données : ne doit jamais être modifiée
ii) données modifiées : peut-être modifiée
iii) résultat : doit-être affecté à une valeur

Cst : Nmax
Type matrice = tableau [INmax,INmax] dans réels
{déclarations des sous-programmes}
.....................

Programme principal
Variable A,B,C : matrice
dim :entier

DEBUT
Ecrire ('Le sous-programme de calcul de la somme de 2 matrices carrées à dimension n')
Ecrire ('Quelle est la dimension souhaitée ?')
Lire (dim)
Ecrire ('Saisie de la première matrice')
{Appel de s.p (param effectifs : A,dim)}
saisie (A,dim)
Ecrire ('Saisie de la deuxième matrice')
{Appel de s.p (param effectifs : B,dim)}
saisie (B,dim)
Ecrire ('Saisie de la somme des deux matrices')
{Appel de s.p (param effectifs : A,B,dim,c)}
saisie (A,B,dim,c)
Ecrire ('Affichage de la somme de deux matrices données.')
{Appel du s.p (param effectifs : C,dim)}
Affichage (c,dim)
FIN


Variable locale : objet dont à besoin le programme mais objet non concerné par les communications avec l'extérieur.

c/ Déclaration d'une procédure
procédure : Nom procédure (param formels avec nature et type)
variable : déclaration des variables locales à la procédure.

DEBUT
instruction de la procédure
FIN

On peut regrouper les paramètres si ils sont de même nature et de même type. Les paramètres effectifs doivent être fourni à la procédure dans le même ordre que les paramètres formels et doivent être de même type.

3) Fonctions
a/ Rôle
La notion de procédure est plus générale que celle de fonction. La fonction a seulement pour but de déterminer une valeur.
b/ Paramètres et variables locales
Identique pour les fonctions et les procédures
c/ Déclaration d'une fonction
fonction : Nom fonction (param formels avec type):type résultat
variable : déclaration des variables locales

DEBUT
instruction de la fonction
Nom fonction retourne expression
FIN

Exemple :
Fonction min (x,y:entiers):entier
DEBUT
SI x<= y
ALORS
min retourne x
SINON
min retourne y
FIN SI
FIN

* Un appel de fonction se fait à l'intérieur d'une instruction (qui peut manipuler une valeur) car une fonction est en fait semblable à une valeur.



Thèmes : Structure répétitive, boucle tant que
1) Rôle :
Effectuer la répétition d'une action tant qu'une certaine condition est vérifiée
2) Ecriture algorithmique
TANT QUE condition FAIRE
action
FIN TANT QUE

avec condition : expression booléenne

3) Schémas de traitement
-> Traitement d'une suite de valeurs.
a/ Arrêt du traitement par une valeur particulière
Algo Somme-entiers
{Somme d'une suite d'entiers positifs saisis successivement au clavier, arrêt de la saisie avec -1}
Variable somme,valeur,compteur : entiers

DEBUT
Ecrire ("Somme d'entiers positifs")
Ecrire ("Donnez une première valeur (ou -1 pour arrêter)")
Lire (valeur)
somme <-0
compteur <-0
{boucle de traitement}
TANT QUE valeur <> -1 FAIRE
{traitement courant}
somme <- somme + valeur
compteur <- compteur + 1
{valeur suivante}
Ecrire ("Valeur suivante (ou -1 pour arrêter)")
Lire (valeur)
FIN TANT QUE
{résultat}
Ecrire ("La somme des ",compteur," valeurs saisies est : ", somme)
FIN

OBTENIR PREMIERE VALEUR
Tq valeur <> valeur particulière faire
TRAITEMENT
VALEUR SUIVANTE
FIN tq

b/
Algo somme-entier
variable : somme, valeur, compteur : entier
rep : caractère
DEBUT
Ecrire ("Somme d'entiers positifs")
Ecrire ("Avez-vous une valeur à saisir (O/N) ? ")
Lire (rep)
somme <- 0
compteur <- 0
{boucle de traitement}
TANT QUE rep ="O" FAIRE
{saisie de valeurs}
Ecrire ("Valeurs ?")
Lire (valeur)
{Traitement de la valeur}
somme <- somme + valeur
compteur <- compteur + 1
Ecrire ("Encore (O/N) ? ")
Lire (rep)
FIN TANT QUE
{résultat}
Ecrire("....")
FIN

INTIALISATION DE CONDITION
Tq condition faire
OBTENIR VALEUR
TRAITEMENT
MISE A JOUR DE CONDITION
Fin tq

* blindage : exigence d'une valeur correspondante aux contraintes posées.
Exemple : contrainte
Valeur comprise entre 0 et 20
....
....
....
Ecrire ("Donnez une valeur comprise entre 0 et 20")
Lire (valeur)
TANT QUE (valeur < 0) ou (valeur > 0) FAIRE
Ecrire ("Entre 0 et 20 !")
Lire (valeur)
FIN TANT QUE

* Menu
....
....
....
rep <- 1 {on force l'entrée dans la boucle}
TANT QUE rep <> 0 FAIRE
{affichage des options}
Ecrire ("1: charger")
Ecrire ("2: copier")
.....
Ecrire ("0: quitter")
{saisie du choix}
Ecrire ("Votre choix (0,1,2)")
Lire (rep)
{blindage}
TANT QUE (rep <> 0) et (rep <> 1).... FAIRE
Ecrire ("0,1,2")
Lire (rep)
FIN TANT QUE
{traitement}
SI rep = 1
ALORS
traitement
SINON
SI rep = 2
ALORS traitement2
SINON...
FIN SI
FIN SI
FIN TANT QUE
FIN



Thème : Structure de choix
CHOIX MULTIPLES :

Choix selon variables
valeur 1:
action 1
valeur 2:
action 2
...
AutresChoix
ActionAutreChoix
FinChoix

Thème : Structure répétitive : boucle REPETER
1) Rôle :
L'action est au moins exécuter une fois.
REPETER
action
JUSQU'A condition
Si la condition est vraie, on sort de la boucle.

On a l'équivalence entre :
REPETER C <- Faux
action et TANT QUE non C FAIRE
JUSQU'A C action
FIN TANT QUE
et aussi entre :
TANT QUE C FAIRE SI C
action et ALORS
FIN TANT QUE REPETER
action
JUSQU'A non C
FIN SI

-> Utilisation : La boucle répéter n'est pas adaptée au traitement d'une suite de valeurs se terminant par une valeur particulière qui ne subit pas le traitement.
Le schéma suivant ne se vérifie pas :
Obtenir la premiere valeur
SI valeur <> valeur particulière
ALORS
REPETER
Traitement
Obtenir la valeur suivante
FIN SI

Par ailleurs, la version où le test de comparaison de valeur à valeur particulière est effectuée deux fois ne doit pas être utilisée.
REPETER
Obtenir valeur
SI valeur <> valeur particulière
ALORS
Traitement
FIN SI
JUSQU'A valeur = valeur particulière
Si le premier test (si) est oublié, la valeur particulière subit le traitement.

La boucle Répéter est justifiée pour le traitement d'une suite de valeurs, dans le cas où la condition du traitement ne porte pas sur la valeur à traiter et lorsque le traitement est effectué aumoins une fois. REPETER
obtenir la valeur courante
traitement
mise à jour de C
JUSQU'A C

ce qui équivaut à

Initialisation de Cbis à Vrai
TANT QUE Cbis faire
Obtenir la valeur courante
Traitement
Mise à jour de Cbis
FIN TANT QUE
avec Cbis = non C

*blindage
Tapez une valeur entre 0 et 20
Refusez si condition non remplies
REPETER
Ecrire ("Donner une valeure entre 0 et 20")
Lire (valeur)
JUSQU'A (valeur >= 0) et (valeur <= 20)

Cette écriture est plus économique que tant que car la demande est faite en dehors de la boucle
Lors d'une relance, le message initial = message de relance

*menu
....
{Traitement des choix successifs}
REPETER
{affichage du menu et saisie de la réponse}
Ecrire ("1: charger")
Ecrire ("2: copier")
.....
Ecrire ("0: quitter")
{saisie du choix}
Ecrire ("Votre choix (0,1,2)")
Lire (rep)
{blindage}
TANT QUE (rep < 0) et (rep > 2).... FAIRE
Ecrire ("Tapez 0,1,2")
Lire (rep)
FIN TANT QUE
{traitement, utilisation d'une structure de choix}
choix selon rep
1:traitement_charger
2:traitement_copier
...
Fin Choix
JUSQU'A rep = 0



Thème : TURBO PASCAL
1) Structure générale
Une entête : Program NomProgr
Une partie déclaration : Constantes, types, variables, procédures...
Le corps du programme : begin, suite d'instructions séparées par; et end

2) Structure d'une procédure
idem à l'exception de :
- déclaration dites locales
- la plupart du temps, on a que des variables
- Procedure NomProc (paramètres avec nature et type)

La liste des paramètres avec type suit les règles syntaxiques des déclarations de variables, on utilise le mot VAR pour un passage par adresse.

-> Passage de paramètres :
En Pascal, on dispose de deux modes de passages de paramètres, par adresse ou par valeur.
Aucun signe particulier ne marque un passage par valeur. L'indication VAR est utilisée lors d'un passage par adresse.

Sauf indications contraires, aux données (resp données modifiées resp résultat) de l'algorithme correspondent en Pascal au passage par valeur (resp adresse resp adresse).
Pour l'instant, nous appliquerons cette règle.

Exemple : program passagparam;
{illustration de la différence entre passage par valeur et passage par adresse}

procedure P (var X:integer,Y:integer)
begin
writeln('X=',X,'Y=',Y);
X:=X+1;
Y:=Y+1;
writeln('X=',X,'Y=',Y);
end; {fin procedure}

var A,B:integer;
begin {début du programme principal}
A:=0;
B:=0;
writeln('A=',A,'B=',B);
P(A,B);
writeln('A=',A,'B=',B);
end.

L'exécution de ce programme donne l'affichage suivant :
A=0 B=0
X=0 Y=0
X=1 Y=1
A=1 B=0

Hosted by www.Geocities.ws

1