Cours Algorithmique 1ère Année
Cours Algorithmique 1ère Année
Cours Algorithmique 1ère Année
Interfaces Windows :
Supervision d’une
Pilotage d’appareils de machine de fabrication
mesures électriques de câbles électriques
3
Chapitre A : Introduction à la Programmation
1- L’ORDINATEUR
1.1- L’Ordinateur et ses Périphériques
1.2- Le Logiciel et le Matériel
2- L’INFORMATIQUE
2.1- L’Industrie Informatique
2.2- Les Métiers de l’Informatique
3- LA PROGRAMMATION
3.1- En quoi consiste la Programmation ?
3.2- Comment Programmer ?
4- PROGRAMME / ALGORITHME
4.1- Description d’un Programme
4.2- Comment inventer un Programme ?
Définition de l’Ordinateur
Registres
3) Bus Système
Unité de commande
Unité de Contrôle 2) Mémoire Centrale
UAL,ALU RAM (Random
Unité de calcul Access Memory)
ROM (Read
Only Memory)
6
Les périphériques d’un ordinateur
INTERFACES d’E/S
INTERFACES INTERFACES INTERFACES
d’Entrées d’Entrées-Sorties de sorties
E/S: stockage transmission S: affichage
E: saisie PERIPHERIQUES
Équipements informatiques ou industriels
7
Les 2 couches d’un système informatique
2. Logiciel (Software)
= haut niveau,
interface utilisateur,
programmes, vers
langage humain
1. Matériel (Hardware)
= bas niveau, constituants physiques de
l’ordinateur, vers langage binaire
8
ORDINATEUR ISOLE ORDINATEUR PILOTANT UN ORDINATEUR
EQUIPEMENT INDUSTRIEL EN RESEAU
INTERNET
RLE / RLI
Conception
Fabrication
Utilisation :
- dépannage - Type de communication - Structures réseaux
- utilisation d’applications
- Développement -Intranet / WEB
- développement du SE
d’applications - applications
- développement logiciel réseau
de communication
9
Définition de l’Informatique
11
L’évolution de l’Informatique
hardware software
16
Le Technicien et l’Informatique en Entreprise
Administrer un réseau
Réparer et tester le d’ordinateur
matériel (maintenance,
support technique, SAV)
Programme
Programmeur
Etapes de programmation :
1. Bien étudier le cahier des charges
2. Inventer une solution logique pour l’ordinateur
3. Traduire cette solution dans un langage de programmation
4. Tester, corriger et valider le programme 21
Programme = Recette de cuisine
5 œufs entier tabOeuf[5]
125g farine entier farine = 125
125g sucre entier sucre= 125
1cc levure entier levure= 1
Exemples d’instructions :
écrire une valeur dans la RAM,
effectuer un calcul,
lire des données tapées au clavier,
écrire des informations sur l’écran...
23
Les 3 formes de programme
ORDINATEUR
PAPIER RAM
ALGO Comptage
DISQUE DUR
void main() 1100 0000
...
DEBUT
{ ... 1000 0000
langage C
langage
... naturel ... binaire
FIN } 1000 0110
TD TP
24
L’Algorithme en langage naturel
ALGO Comptage
CONSTANTE MAX= 10 (entier)
VARIABLE choixMenu (carac), compteur (entier)
DEBUT
FAIRE
Afficher le menu
Saisir la valeur tapée au clavier et la ranger dans choixMenu
CHOISIR en fonction de choixMenu
choixMenu vaut ‘a’ : POUR compteur de 0 à MAX
Afficher la valeur de compteur
FPOUR
TANT QUE l’utilisateur n’a pas choisi de sortir
FIN 25
Le Programme source en langage C
void main(void)
{
const int MAX=10 ;
int compteur ; char choixmenu ;
do
{ clrscr() ;
printf("\n\n\t\ta- Compter\n\t\tb- Sortir du programme\n\t\tChoix : ") ;
scanf("%c",&choixmenu) ;
switch(choixmenu)
{ case ‘a’ : for (compteur=0 ;compteur<=MAX ;compteur++)
printf("\n\t%d",compteur) ;
getch();
}
} while (choixmenu !=‘b’) ;
} 26
Le Programme exécutable en binaire
RAM
1100 0000 0000 1111
1000 0000 0000 1010
27
Intérêt de l’Algorithme
Décomposer les
traitements complexes
Connaissance des
instructions et données
utilisables
L'algorithmique, vous la pratiquez tous les
jours et depuis longtemps…
Définition
Un algorithme est une description en langage naturel de la
suite des actions effectuées par un programme.
Exemple 1 : Traverser une route à deux sens de circulation
1. _ _ _ _ _ _ _
2. _ _ _ _ _ _
3. _ _ _ _ _ _
4. _ _ _ _ _ _ _
5. _ _ _ _ _ _ _
6. _ _ _ _ _ _ _
7. _ _ _ _ _ _ _
8. _ _ _
31
Représentation graphique d’un algorithme
oui
a=0
Δ b*b - 4ac
non oui
Δ≥0
b b b
e xi et m xi x1 et x2
2a 2a 2a 2a
e xi , m xi x1, x2
Fin
34
Les grandes étapes de Programmation
35
La structure de base d’un Algorithme
ALGO Nom
déclaration données
DEBUT
// commentaires
instruction 1
instruction 2
…
FIN
Règle de programmation :
Indentations,
Commentaires explicatifs utiles. 36
Chapitre B : Les Données dans un Programme
1- QUE SONT LES DONNEES SIMPLES ?
1.1- Les Données simples
1.2- Variables et Constantes
1.3- Les Types de Données
2- COMMENT UTILISER LES DONNEES SIMPLES ?
2.1- Déclaration de Variables
2.2- Déclaration de Constantes
2.3- Initialisation de Variables par Affectation
3- DES DONNEES COMPLEXES : LES TABLEAUX
3.1- Définition
3.2- Déclaration
3.3- Initialisation par Affectation
Définition d’une Donnée simple
38
Description d’une Donnée simple
Pour exister une donnée doit être associée à une zone
mémoire de la RAM (CONTENEUR)
&a a 10
c= a+b &a a 3
&b b 2
&c c 5
• Données de nom a, b et c
• Valeurs entières : a vaut 3, b vaut 2 et c vaut 5
• Adresses des données dans la RAM : &a, &b, &c
40
Différence entre Variables et Constantes
Exemple :
prixTTC = prixHT 1.18 prixTTC= prixHT (1+TVA)
42
Définition du Type
Il caractérise :
La taille de sa zone mémoire ………………..... 1 octet
L’ensemble des valeurs possibles …………… [0,255]
Les opérateurs applicables à cette donnée ….. + -
43
Illustration des caractéristiques du Type
L’ensemble des valeurs possibles est lié, notamment,
à la taille de la zone mémoire de la donnée :
45
Liste des Types simples
unsigned int entier non signé long [0,4 294 967 295] 4
int (long) entier signé long [-2 147 483 648, 2 147 483 647] 4
46
Exemples de données associées à un Type
NUL...ÿ
Caractère : &a a 0...255
(char)
1 octet (8 bits)
47
Instruction de Déclaration de Variable
50
Affectation pour initialiser une Variable
51
MECANISME TYPE : Mémoire tampon
a 5 b 2
ALGO IntervertirVariables
VAR ensc a= 5, b=2
DEBUT La variable a est
ab
ba
écrasée : son contenu a
FIN été perdu !
a 2 b 2 52
MECANISME TYPE : Mémoire tampon
ALGO IntervertirVariables
VAR ensc a= 5, b=2, temp
a 5 b 2
DEBUT
temp a
ab
b temp
FIN
temp 5
53
MECANISME TYPE : Mémoire tampon
ALGO IntervertirVariables
VAR ensc a= 5, b=2, temp
DEBUT
temp a a 2 b 5
ab
b temp
FIN
temp 5
54
Ce qu’est un tableau
tab[0]
&tab[0] 2
tab[1] RAM
&tab[1] 5
tab[2]
&tab[2] 4
Règle de programmation :
Indentations,
Commentaires explicatifs utiles. 59
Les grandes étapes de Programmation
60
Chapitre C : Les Entrées/Sorties d’un Programme
1- DEFINITION DES ENTREES/SORTIES
1.1- Que sont les Entrées/Sorties ?
1.2- Différentes E/S classiques
2- SAISIES CLAVIER
2.1- Instruction de Saisie
2.2- Saisies multiples
3- AFFICHAGES ECRAN
3.1- Instruction d’Affichage
3.2- Gestion d’écran
Définition des Entrées / Sorties
S : écriture
PROGRAMME
E : lecture
64
Communication Programme / Système
PARTIE OPERATIVE
S : commandes
SYSTEME
DE SYSTEME A PILOTER
ACTIONNEURS AUTOMATIQUEMENT
COMMANDE
E : mesures CAPTEURS
65
Communication standard Programme / Utilisateur
Le programme lit des données sur le clavier (Entrée)
ou écrit des informations sur l’écran (Sortie).
ALGO
E : SAISIE CLAVIER DEBUT
...
FIN
Clavier
ALGO
DEBUT
...
FIN S : AFFICHAGE ECRAN
Ecran
66
Instruction de Saisie Clavier
67
Exécution d’une Saisie Clavier
reponse
CPU
&reponse ‘b’
Clavier RAM
68
Précision : Détection de la touche RC en Entrée (1)
Le CPU exécute
le Saisir()
Clavier
69
Précision : Détection de la touche RC en Entrée (1)
RC
‘A’ RC RC
‘A’
Clavier
reponse
&reponse Clavier
DEBUT PROGRAMME E
Saisir(&reponse) DEBUT SAISIR()
…
… FIN SAISIR()
FIN PROGRAMME reponse
&reponse ‘A’
71
Description d’une saisie multiple
SAISIR (&variable1,&variable2,&variable3,…)
73
Exécution d’un Affichage Ecran
Resultat: 15
temperature CPU
& temperature
15
Ecran
74
Précisions : Passage d’un nom de variable à Afficher()
5
resu
Ecran
5
DEBUT PROGRAMME E
DEBUT AFFICHER()
Afficher(resu)
…
… FIN AFFICHER()
FIN PROGRAMME resu n’a pas pu être modifié par Afficher()
75
Déplacements du Curseur sur l’écran
Le curseur de l’écran se déplace de haut en bas, de gauche à
droite.
Le programmeur doit gérer l’écran :
• Commande pour aller en début de ligne suivante ("\n" en C)
• Commande pour indenter: tabulation horizontale ("\t" en C)
• Fonction pour effacer l’écran (fonction clrscr() en C)
• Fonction pour se positionner en un point de coordonnées
(x,y) (fonction gotoxy(x,y) en C)
(1,1) (80,1)
x
(1,25)
y 76
Les grandes étapes de Programmation
77
La structure de base d’un Algorithme
ALGO Nom
déclaration données
DEBUT
// commentaires
instruction 1
instruction 2
…
FIN
Règle de programmation :
Indentations,
Commentaires explicatifs utiles. 78
Chapitre D : Calculer dans un Programme
1- DESCRIPTION DES CALCULS
1.1- Instruction de Calcul
1.2- Différents types de Calculs
1.3- Evaluation d’un Calcul
81
Instruction de Calcul
2. Stockage du résultat :
affectation de la valeur obtenue resu
dans la variable (resu) à gauche
du signe d’affectation (= ou ) &resu 1
: 83
Rôle des différents types de Calcul
84
Exemples d’Expressions Arithmétiques, Binaires et Logiques
Expressions arithmétiques :
(a x b + 3) / c
a%b
Expressions binaires :
a+b
(c b) . ā
Expressions logiques :
a == b
a > b ET a ≥ c
a ET b OU NON(c)
85
Règles d’évaluation
2
1
Que fait le processeur avec : resu= 4 / 2 / 2 ?
8 4 86
Priorité des Opérateurs
Priorité Opérateur
1 ()
2 NON (non logique) — (complément à 1)
3 x (multiplication) / (division) % (modulo)
4 + (addition) - (soustraction)
5 < >
6 == (égalité) (différent)
7 .(et binaire)
8 (ou exclusif)
9 + (ou binaire)
10 ET (et logique)
11 OU (ou logique)
12 = (affectation)
87
Différence entre = (Affectation) et = = (Egalité)
Il ne faut pas confondre les opérateurs = et = = !!
Opérateur d’Affectation : = Opérateur d’Egalité : = =
• pour attribuer une • pour comparer les
valeur à une variable valeurs de 2 données
• ECRITURE • LECTURE
a= 0 a= = 0 FAUX a 2
RAM
a ==
&a 0
0 2
• écrit 0 dans la RAM • lit la valeur de a dans la
pour la variable a. RAM et la compare à 0.
88
Description des Calculs Arithmétiques
Calculs arithmétiques :
• Opérations : addition (+), soustraction (-), division (/),
multiplication (x), modulo (%).
Règle de programmation :
Pour éviter des erreurs de calcul : utiliser des
variables de même type dans un calcul
arithmétique !!
89
Divisions entières et réelles
et div= a/b
Exemple : div= 5/2= 2, reste= 5%2= 1 (5= 2x2+1)
/* Division avec
opérandes entiers et div
résultat réel */ &div 1.0 REEL
ALGO DiviserEntiers
VAR ensc a= 3 Conversion de type
ensc b= 2 1 ENTIER
rsp div
DEBUT / : division Division entière
/* division
entière car les a et b
sont entiers */ 3 2 ENTIERS
div a/b
FIN
91
Incompatibilités de Types (2)
93
Description des Calculs Binaires
ATTENTION :
Les calculs se font sur les représentations binaires !!
Il est nécessaire de passer en base 2 pour vérifier les calculs.
Mais, dans le programme, on écrit les entiers en base 10.
Symbole Rôle
a Complément à 1
a a a.b et
0 1 a+b ou
1 0 ab ou exclusif
Calculs logiques :
• Opérations logique booléenne : ET (et logique), OU (ou
logique), NON (inversion logique).
• Opérations logique de comparaison : < (strictement
inférieur), > (strictement supérieur), ≤ (inférieur ou égal),
≥ (supérieur ou égal), = = (égal), ≠ (différent).
• Opérandes : booléens, entiers, réels, caractères (FAUX vaut
0, VRAI les autres valeurs numériques).
• Résultat : seulement booléen (VRAI ou FAUX).
102
La structure de base d’un Algorithme
ALGO Nom
déclaration données
DEBUT
// commentaires
instruction 1
instruction 2
…
FIN
Règle de programmation :
Indentations,
Commentaires explicatifs utiles. 103
Chapitre E : Alternatives dans un Programme
1- INSTRUCTION ALTERNATIVE SIMPLE
1.1- Instruction SI-ALORS
1.2- Instruction SI-ALORS-SINON
2- INSTRUCTION ALTERNATIVE CHOIX
2.1- Instruction CHOIX-CAS/SORTIR
2.2- Instruction CHOIX-CAS
3- INSTRUCTION ALTERNATIVE COMPLEXE
3.1- Imbrications de SI-ALORS-SINON
3.2- Instruction SI-ALORS-SINON SI
Instruction Alternative SI-ALORS
105
Organigramme du SI-ALORS
FAUX
condition logique ?
VRAI
Bloc d’instructions
Suite du programme
106
Exécution de l’Instruction SI-ALORS
Simulation exécution 1:
INSTRUCTION PROCESSEUR
1- SI évaluation condition logique : VRAI
2- ALORS exécution bloc d’instructions
3- FSI suite du programme après la fin du SI
Simulation exécution 2:
INSTRUCTION PROCESSEUR
ALGO Achats
CONST rsp PRIXUNIT= 10, REDUC= 20
VAR rsp prixTotal ; ensc nbArt
DEBUT
Afficher("Nombre d’articles : ") // saisie nombre d’articles achetés
Saisir(&nbArt)
prixTotal= nbArt x PRIXUNIT // calcul du prix sans réduction
SI (nbArt ≥ 10) ALORS // modification du prix si une remise est accordée
prixTotal= prixTotal x (1-REDUC/100)
FSI
Afficher("Prix a payer : ",prixTotal) // affichage du prix à payer
FIN 108
MECANISME TYPE : Mise à jour sélective de variable
109
Instruction Alternative SI-ALORS-SINON
FAUX
condition logique ?
VRAI
Bloc d’instructions 1 Bloc d’instructions 2
Suite du programme
111
Exécution de l’Instruction SI-ALORS-SINON
Simulation exécution 1:
INSTRUCTION PROCESSEUR
Simulation exécution 2:
INSTRUCTION PROCESSEUR
ALGO Division
VAR rsp a, b, div
DEBUT
Afficher("Donnez 2 reels : ") ; Saisir(&a,&b) // saisie des réels
SI (b ≠ 0) ALORS // protection division par 0 condition VRAIE : b ≠ 0
div= a/b // division possible
Afficher("Resultat : ",div)
SINON // condition VRAIE : b = = 0
Afficher("Erreur: diviseur nul !!") // division impossible
FSINON
FIN
113
MECANISME TYPE : Protection des Calculs
114
Division de réels : Exécution par le CPU (1)
attente,
conversion, &a a b
2- Saisies 5 .2 &b
affectation 0 .0
3- SI Evaluation
(b0.): FAUX
4-SINON: Erreur
Afficher(“Erreur”)
5- FSINON : FIN
115
Division de réels : Exécution par le CPU (2)
Instruction Processeur Mémoire
2- Saisies attente,
conversion, &a a b
5.0 &b
affectation 2.0
Evaluation
3- SI
(b0.): VRAI
116
Exemple d’utilisation du SI-ALORS-SINON
Le programme calcule un prix achat avec remise éventuelle.
ALGO Achats
CONST rsp PRIXUNIT= 10, REDUC= 20
VAR rsp prixTotal ; ensc nbArt
DEBUT
Afficher("Nombre d’articles : ") ; Saisir(&nbArt) // saisie nb article
SI (nbArt ≥ 10) ALORS /*calcul du prix avec ou sans réduction
condition VRAIE : nbArt ≥ 10 */
prixTotal= nbArt x PRIXUNIT x (1-REDUC/100)
SINON // condition VRAIE : nbArt < 10
prixTotal= nbArt x PRIXUNIT
FSINON
Afficher("Prix a payer : ",prixTotal) // affichage du prix à payer
FIN 117
Instruction Alternative CHOIX-CAS/SORTIR
CHOIX (nomVariable)
Instruction : CAS valeur 1: bloc d’instructions 1
SORTIR
CAS valeur 2: bloc d’instructions 2
(partie instruction) SORTIR
...
DEFAUT: bloc d’instructions3
FCHOIX
118
Exécution d’une Instruction CHOIX-CAS/SORTIR
Bloc 1
Lecture Égale
nomVariable Bloc 2
valeur2
Bloc 3
120
Organigramme du CHOIX-CAS/SORTIR
VRAI
nomVariable== valeur 1?? Bloc 1
FAUX
nomVariable== valeur 2?? VRAI Bloc 2
...
FAUX DEFAUT
Bloc 3
Suite du programme
121
Exécution de l’Instruction CHOIX-CAS/SORTIR
Simulation exécution 1:
INSTRUCTION PROCESSEUR
1- CHOIX(nomVariable) lecture valeur de nomVariable
2- CAS valeur 1 nomVariable = = valeur 1 ? : VRAI
3- bloc 1 exécution bloc d’instructions 1
4- SORTIR suite du programme après la fin du CHOIX
Simulation exécution 2:
INSTRUCTION PROCESSEUR
1- CHOIX(nomVariable) lecture valeur de nomVariable
2- CAS valeur 1 nomVariable = = valeur 1 ? : FAUX
3- CAS valeur 2 nomVariable = = valeur 2 ? : FAUX
4- DEFAUT exécution bloc d’instructions 3
5- SORTIR suite du programme après la fin du CHOIX
122
MECANISME TYPE : Gestion d’un Menu
Le programme simule une calculatrice à 2 opérations.
ALGO Calculatrice
VAR rsp a, b, resu
carac choixMenu
DEBUT // saisie choix menu et des opérandes
Afficher("a) +, b) - ") ; Saisir(&choixMenu) ; Saisir(&a,&b)
CHOIX (choixMenu) // aiguillage vers les options du programme
CAS ‘a’: resu= a+b // option addition
SORTIR
CAS ‘b’: resu= a-b // option soustraction
FCHOIX
Afficher("Resultat de l’opération : ",resu)
FIN
123
MECANISME TYPE : Gestion d’un Menu
L’instruction CHOIX-CAS/SORTIR
permet d’aiguiller vers différentes
options de menu exclusives.
Chaque option peut être différenciée par
une valeur caractère (ou entière).
Un cas par défaut peut traiter un
mauvais choix de l’utilisateur.
Le dernier SORTIR n’est pas
obligatoire.
124
Gestion d’un Menu : Exécution par le CPU
Instruction Processeur Mémoire
choixMenu==‘a’
3- CHOIX,CAS ‘a’
: VRAI
-calcul: 1.+2.
resu
4- resu= a+b - affectation &resu
3.
5- SORTIR : va à FCHOIX
6- Afficher(resu) 3
125
Utilisation de CHOIX-CAS
CHOIX (nomVariable)
CAS valeur 1: bloc d’instructions 1
CAS valeur 2: bloc d’instructions 2
...
DEFAUT: bloc d’instructions3
FCHOIX
VRAI
nomVariable== valeur 1?? Bloc 1
FAUX
VRAI
nomVariable== valeur 2?? Bloc 2
...
FAUX DEFAUT
Bloc 3
Suite du programme
ALGO Calculatrice
VAR rsp a, b, resu
carac choixMenu
DEBUT // saisie choix menu et des opérandes
Afficher("a) +, b) - ") ; Saisir(&choixMenu) ; Saisir(&a,&b)
CHOIX (choixMenu) // aiguillage vers les options du programme
CAS ‘a’: resu= a+b // option addition
// PAS DE SORTIR !!
CAS ‘b’: resu= a-b // option soustraction
FCHOIX
Afficher("Resultat de l’opération : ",resu)
FIN
128
Exemple d’imbrication de SI-ALORS-SINON
SI (condition logique 1) ALORS
SI (condition logique 2) ALORS
SI (condition logique 3) ALORS
bloc d’instructions 1
SINON
bloc d’instructions 2
FSINON (3)
SINON
bloc d’instructions 3
FSINON (2)
SINON
bloc d’instructions 4
FSINON (1)
condition 1 condition 2 condition 3
Exécution de bloc 1 si : V V V
Exécution de bloc 2 si : V V F
Exécution de bloc 3 si : V F --
Exécution de bloc 4 si : F -- 129 --
MECANISME TYPE : Découpage d’intervalles
Le programme affiche les mentions à un examen.
note [0 Refus [10 Passable [12 AB [14 B [16 TB 20]
SI (note < 10) ALORS
Afficher("Refus") // note<10
SINON // note≥10
SI (note < 12) ALORS
Afficher("Passable") // note≥10 et note<12
SINON // note≥10 et note≥12 note≥12
SI (note < 14) ALORS // note≥12 et note<14
Afficher("AB")
SINON c note≥12 et note≥14 note≥14
SI (note < 16) ALORS // note≥14 et note<16
Afficher("B")
SINON // note≥14 et note≥16 note≥16
Afficher("TB")
FSINON
FSINON
FSINON
FSINON 130
MECANISME TYPE : Découpage d’intervalles
131
Instruction Alternative SI-ALORS-SINON SI
132
Exécution d’une Instruction SI-ALORS-SINON SI (1)
SI (condition 1) ALORS
bloc 1
SINON SI (condition 2) ALORS Un SINON SI exclu
bloc 2 tous les SI précédents
SINON SI (condition 3) ALORS (conditions logiques
bloc 3 inversées).
SINON
bloc 4
FSI
VRAI
condition logique 1? Bloc 1
FAUX
VRAI
condition logique 2 ? Bloc 2
FAUX
VRAI
condition logique 3 ? Bloc 3
...
FAUX SINON
Bloc 4
Suite du programme135
MECANISME TYPE : Découpage d’intervalles
Le programme affiche les mentions à un examen.
note [0 Refus [10 Passable [12 AB [14 B [16 TB 20]
136
MECANISME TYPE : Découpage d’intervalles
137
MECANISME TYPE : Enumération de cas discrets
Le programme reproduit les cas suivants :
SI (b≠0) ALORS
Afficher("1") // b≠0
b≠0 b= =0 SINON SI (c= =0) ALORS //b = =0 et c= =0
c= =0 c≠0 Afficher("2")
1 SINON // b= =0 et c≠0
2 3 Afficher("3")
FSINON
SI (b≠0) ALORS
Afficher("1") // b≠0
SINON // b= =0
SI (c= =0) ALORS
Afficher("2") // b= =0 et c= =0
SINON // b= =0 et c≠0
Afficher("3")
FSINON
FSINON 138
Les grandes étapes de Programmation
139
La structure de base d’un Algorithme
ALGO Nom
déclaration données
DEBUT
// commentaires
instruction 1
instruction 2
…
FIN
Règle de programmation :
Indentations,
Commentaires explicatifs utiles. 140
0X2=0
Afficher la table de multiplication par 2 : 1X2=2
2X2=4
ALGO TableMultiplication1 .
VAR ensc produit 10 X 2 = 20
DEBUT
produit= 0x2
Afficher(“0 X 2 = ”,produit)
produit= 1x2
Afficher(“1 X 2 = ”,produit)
… 11 fois ... !!
FIN
i = valInit
FAUX
i dépasse valFin ?
VRAI
i = i+ x
Bloc d’instructions
Suite du programme
145
Précisions sur le sens de comptage
Suivant le signe du pas, attention aux valeurs init et fin.
147
Exemple d’utilisation du POUR
Le programme affiche la table de multiplication par 2.
ALGO TableMultiplication2
VAR ensc produit, i
DEBUT
// parcours des valeurs à multiplier
POUR i de 0 à 10, pas de 1
// calcul et affichage des produits
produit= i x 2
Afficher(i," x 2 = ",produit)
FPOUR
FIN
148
Table de multiplication 2 : Exécution par le CPU
Instruction Processeur Mémoire
1- Déclaration variables Réservation &produit produit &i i
mémoire
2- POUR a- initialisation i
&i
i= 0 0
b- test poursuite boucle
0 10 : VRAI
3- DANS LE POUR : a- calcul: 0x2 &produit
produit
-produit= ix2 b- affectation 0 0X2=0
-Afficher(i,"x2=",produit) RC c- affichage -
i
4- FPOUR : POUR a- incrémentation &i
1
i= i + 1
b- test poursuite boucle 0X2=0
1 10 : VRAI . 2=2
1X
… … … .
4- FPOUR : POUR a- incrémentation i 10 X 2 = 20
&i
i= i + 1 11
b- test poursuite boucle
11 10 : FAUX
5- FPOUR suite après FPOUR
149
Instruction Itérative TANT QUE
152
Exécution de l’Instruction TANT QUE-FAIRE
INSTRUCTION PROCESSEUR
1- TANTQUE évaluation condition logique de poursuite : VRAI
153
Exemple d’utilisation du FAIRE-TANT QUE
Le programme affiche la table de multiplication par 2.
ALGO TableMultiplication3
VAR ensc produit, i
DEBUT
i= 0 // initialisation du parcours des valeurs à multiplier
FAIRE
// calcul et affichage des produits
produit= i x 2
Afficher(i," x 2 = ",produit)
i= i+1 // incrémentation des valeurs à multiplier
// condition de poursuite : (i < 11) et condition de fin : (i ≥ 11)
TANT QUE (i < 11)
FIN 154
Table de multiplication 3 : Exécution par le CPU
Instruction Processeur Mémoire
Réservation
1- Déclaration variables &produit produit &i i
mémoire
2- Initialisation : i= 0 affectation &i 0 i
3- FAIRE a- calcul: 0x2 produit
&produit
-produit= ix2 b- affectation 0
-Afficher(i,"x2=",produit) c- affichage &i
i 0X2=0
-i= i+1 d- calcul: 0+1 1 -
e- affectation
4- TANTQUE évaluation condition poursuite 1<11: VRAI
produit
5- FAIRE a- calcul: 1x2 &produit
2
-produit= ix2 b- affectation 0X2=0
1X2=2
-Afficher(i,"x2=",produit)RC c- affichage i -
-i= i+1 d- calcul: 1+1 &i
2
e- affectation 0X2=0
… … …
1X2=2
6- TANTQUE évaluation condition poursuite 11<11: FAUX .
10 X 2 = 20
7- suite après TANTQUE 155
POUR : Cas particulier du TANT QUE
Une boucle POUR peut toujours être transformée en
boucle TANT QUE.
La boucle TANT QUE est plus générale ; elle permet de faire
plus de choses.
POUR i de 1 à 5 pas de 1
i= 1
Afficher(i) TANTQUE (i ≤ 5)
FPOUR Afficher(i)
i= i+1
i= 1 FTANTQUE
FAIRE
Afficher(i)
i= i+1
TANTQUE (i ≤ 5)
156
Quand utiliser une boucle POUR ou TANT QUE ?
NON
Traitement à répéter
plusieurs fois ? Pas de boucle
OUI
Choix d’une boucle
NON
Le programmeur sait combien de
fois la boucle tourne ?
CONTENU de la boucle
CONTENU de la boucle
161
MECANISME TYPE : Mémoire Tampon (1)
Le programme calcule le PGCD de 2 entiers, avec :
PGCD(a,b)= PGCD(max(a,b)-min(a,b),min(a,b))= ...= PGCD(x,x)= x
x= a
y= b
xTemp = max(x,y) - min(x,y)
x? = max(x,y) - min(x,y)
y = min(x,y)
? = min(x,y)
x= xTemp
162
MECANISME TYPE : Mémoire Tampon (2)
Le programme calcule le PGCD de 2 entiers, avec :
PGCD(a,b)= PGCD(max(a,b)-min(a,b),min(a,b))= ...= PGCD(x,x)= x
ALGO PGCD
VAR ensc a, b, x, y, xtemp
DEBUT
Afficher("Donner a et b : "); Saisir(&a,&b) // saisie des 2 entiers
x= a ; y= b // initialisation de x et y pour le calcul du PGCD
FAIRE
xTemp= max(x,y) – min(x,y)
y= min(x,y)
x= xTemp
TANT QUE (x ≠ y) // reprise calcul tant que le PGCD n’a pas été trouvé
Afficher("PGCD : ",x) // affichage du PGCD
FIN
163
MECANISME TYPE : Calcul Cumulatif
Le programme saisit au clavier et additionne 4 entiers.
ALGO SommeCumulée
VAR esc a, somme, i
DEBUT
somme= 0 // initialisation de la somme, alors premier cumul: 0+ 1° entier
POUR i de 1 à 4 // parcours de saisie des 4 entiers
Afficher("Donner un entier : "); Saisir(&a) // saisie d’un entier
somme= somme + a // à chaque passage: cumul de a+valeur précédente
FPOUR
Afficher("somme : ",somme) // affichage de la somme des 4 entiers
FIN
165
MECANISME TYPE : Détection de valeur (analyse)
Saisir(&entier[0])
i=0
SI entier[0]==0 SI entier[0] ≠0
Mémoriser i=0
Saisir(&entier[1])
i=1
SI entier[1 ]≠0
SI entier[1]==0
Mémoriser i=1
Saisir(&entier[2])
i=2
SI entier[2 ]≠0
SI entier[2]==0
Mémoriser i=2 Saisir(&entier[3]) i=3
SI entier[3]==0 SI entier[3]≠0
Mémoriser i=3
arrêter saisies arrêter saisies i=4
166
Afficher résultat
MECANISME TYPE : Détection de valeur (boucle)
3.Initialisation : i commence à 0
167
MECANISME TYPE : Détection de valeur (algorithme)
ALGO DétectionZero
VAR ensc i, entier, zero
DEBUT
i= 0
FAIRE
Saisir(&entier) // détection de l’entier
SI (entier = = 0) ALORS
zero= i // détection saisie nulle
SINON
i= i + 1 // passage à la saisie suivante
FSINON
TANTQUE ( (entier ≠ 0) ET (i < 4) ) // sort si saisie nulle OU i vaut 4
SI ( i = = 4) ALORS // affichage du résultat de la recherche
Afficher("pas trouvé !") // 4 saisies ont été faites sans 0
SINON
Afficher("numéro :",zero) // le 0 trouvé en position zero
FSINON
FIN 168
MECANISME TYPE : Détection de valeur (remarques)
0 1 2 3
1 0 2 3
1 2 0 3
1 2 3 0
1 2 3 4
169
Chapitre G : Tableaux dans un Programme
1- CREATION DE TABLEAUX
1.1- Déclaration
1.2- Remplissage
2- UTILISATION DE TABLEAUX
2.1- Affichage
2.2- Calculs
Ce qu’est un tableau
tab[0]
&tab[0] 2
tab[1] RAM
&tab[1] 5
tab[2]
&tab[2] 4
Affichage :
POUR i de 0 à (NBELT - 1)
Afficher ("Elément d’indice ",i, ": ",tabEntier[i])
Sauter 1 ligne
FPOUR
0 1 2
2 5 3
177
Boucle d’Affichage
Affichage :
POUR i de 0 à (NBL - 1)
POUR j de 0 à (NBC - 1)
Afficher ("Elément d’indice ",i,j, ": ",tabEntier[i][j])
FPOUR
Sauter 1 ligne
FPOUR
0 1 2
tabEntier[0][2]
tabEntier[0][0] tabEntier[0][1]
2 5 3
0 1 2
tabEntier[1][2]
tabEntier[1][0] tabEntier[1][1]
7 15 1
2 5 3
7 15 1
178
MECANISME TYPE : Somme Cumulée
sommeCumul= 0
POUR i de 0 à (NBELT - 1)
sommeCumul= sommeCumul + tabEntier[i]
FPOUR
Afficher ("Somme cumulée : ",sommeCumul)
0 1 2
sommeCumul
10
0 0+1 1+5 6+4 179
MECANISME TYPE : Produit Cumulé
Calculs cumulatifs produits :
produitCumul= 1
POUR i de 0 à (NBELT - 1)
produitCumul= produitCumul x tabEntier[i]
FPOUR
Afficher ("Produit cumulé : ",produitCumul)
0 1 2
produitCumul
20
1 1x1 1x5 5x4
180
Les grandes étapes de Programmation
181
La structure de base d’un Algorithme
ALGO Nom
déclaration données
DEBUT
// commentaires
instruction 1
instruction 2
…
FIN
Règle de programmation :
Indentations,
Commentaires explicatifs utiles. 182
Chapitre H : Fonctions dans un Programme
1- MISE EN PLACE DE FONCTIONS
1.1- Utilité des Fonctions
1.2- Description des Fonctions
1.3- Exécution des Fonctions par le CPU
1.4- Comment décomposer le Programme en Fonctions ?
2- MISE EN PLACE DES ECHANGES DE DONNEES
2.1- Nécessité des échanges de Données
2.2- Paramètre en Entrée
2.3- Retour en Sortie
2.4- Paramètre en Entrée/Sortie
Des Fonctions pour structurer le Programme (1)
// Calcul de la moyenne
moy= 0.
POUR i de 0 à (NBELT-1)
moy= moy+tabReel[i]
FPOUR
Afficher(“Moyenne : ”,moy/NBELT)
FIN 184
Des Fonctions pour structurer le Programme (2)
CONST ensc NBELT= 5 ALGO SaisirTableau(rsp tab[NBELT])
/* Remplit un tableau tab[] avec NBELT réels saisis
ALGO Moyenne5Reels au clavier */
VAR rsp tabReel[NBELT], moy VAR ensc i
DEBUT DEBUT
SaisirTableau(tabReel) Afficher(“Donnez”,NBELT, “réels : ”)
AfficherTableau(tabReel) POUR i de 0 à (NBELT-1)
moy= CalculerMoyenne(tabReel) Saisir(&tab[i])
Afficher(“Moyenne : ”,moy) FPOUR
FIN FIN
189
Définition d’une Fonction
Fonction
module de traitement de
E l’information réalisant une tâche S
E/S
Fonction 3
191
Algorithme d’une Fonction
192
Une Fonction en Langage C
// Fonction principale
main()
// DEFINITION de la Fonction
--- NomFonction(-----)
{ données locales
instructions
} 193
Principe d’exécution
194
Illustration Graphique de l’exécution
ALGO sous problème P1
ALGO problème P DEBUT
instruction 1
DEBUT
instruction 2
sous problème P1
…
sous problème P2
FIN
…
FIN ALGO sous problème P21
DEBUT
instructions
ALGO sous problème P2 FIN
DEBUT ALGO sous problème P22
sous problème P21 DEBUT
sous problème P22 instructions
FIN FIN
195
Exemple d’exécution : Programme sans Fonction
ALGO Moyenne5Reels
CONST ensc NBELT= 5
VAR rsp tabReel[NBELT], moy
ensc i
DEBUT
// saisie de 5 réels au clavier
Afficher(“Donnez 5 réels : ”)
POUR i de 0 à (NBELT-1)
Saisir(&tabReel[i])
FPOUR
// Affichage du tableau
Afficher(“Les 5 réels saisis sont : ”)
POUR i de 0 à (NBELT-1)
Afficher(tabReel[i])
FPOUR
// Calcul de la moyenne
moy= 0.
POUR i de 0 à (NBELT-1)
moy= moy+tabReel[i]
FPOUR
Afficher(“Moyenne : ”,moy/NBELT)
FIN
196
Exemple d’exécution : Programme avec 1 Fonction
ALGO SaisirTableau(rsp tab[NBELT])
CONST ensc NBELT= 5 /* Remplit un tableau tab[] avec NBELT réels
saisis au clavier */
ALGO Moyenne5Reels VAR ensc i
VAR rsp tabReel[NBELT], moy DEBUT
DEBUT Afficher(NBELT, “réels : ”)
SaisirTableau(tabReel)
POUR i de 0 à (NBELT-1)
AfficherTableau(tabReel)
Saisir(&tab[i])
moy= CalculerMoyenne(tabReel)
FPOUR
Afficher(“Moyenne : ”,moy)
FIN
FIN
ALGO rsp CalculerMoyenne(rsp tab[NBELT])
/* Calcule la moyenne des NBELT contenus
dans le tableau tab[] */
ALGO AfficherTableau(rsp tab[NBELT]) VAR rsp somme, resu
/* Affiche sur l’écran un tableau tab[] contenant ensc i
NBELT réels */ DEBUT
VAR ensc i somme= 0.
DEBUT
POUR i de 0 à (NBELT-1)
Afficher(NBELT, “réels saisis sont : ”)
somme= somme +tab[i]
POUR i de 0 à (NBELT-1)
FPOUR
Afficher(tab[i])
resu= somme/NBELT
FPOUR
RETOUR(resu)
FIN 197
FIN
Exemple d’exécution : Fonction appelée plusieurs fois
ALGO calculatrice
VAR carac choixOp ; rsp a, b
DEBUT
FAIRE // boucle de reprise générale du menu
Afficher Menu Saisir(&choixOp)
CHOIX (choixOp) // traitement du choix
CAS ‘a’ : SaisirValidée(&a,&b) ALGO SaisirValidée(rsp *ptx, rsp *pty)
Afficher(“Addition : ”,a+b); SORTIR /* Cette fonction saisit 2 réels au clavier et
CAS ‘b’ : SaisirValidée(&a,&b) valide la saisie (valeurs plus petites ou égales à
Afficher(“Soutraction : ”,a-b) 50) */
SORTIR DEBUT
CAS ‘c’ : SaisirValidée(&a,&b) FAIRE // reprise de saisie si erreur
Afficher(“Produit”,axb) SORTIR Afficher(“Donnez les opérandes : ”)
CAS ‘d’ : SaisirValidée(&a,&b) Saisir(ptx,pty)
SI (b==0.) // protection division //message si une des saisies erronnée
ALORS Afficher(“Erreur ”) SI (*ptx>50. OU *pty>50.)
SINON Afficher(a/b) ALORS Afficher(“Erreur”)
FSI SORTIR FSI
CAS ‘e’ : Afficher(“Fin programme ”); TANT QUE (*ptx>50. OU *pty>50.)
SORTIR FIN
DEFAUT : Afficher(“Erreur choix ”)
FCHOIX
TANT QUE (choixOp != ’e’)
FIN
198
D’où viennent les Fonctions ?
199
Méthode d’Analyse par Approche Descendante: Principe
Problème P
201
Un Sous-Problème = un Algorithme
ALGO problème P
DEBUT
sous problème P1
sous problème P2
ALGO sous problème P1 FIN
DEBUT
instructions ALGO sous problème P2
FIN DEBUT
sous problème P21
sous problème P22
FIN
ALGO sous problème P21 ALGO sous problème P22
DEBUT DEBUT
instructions instructions
FIN FIN
202
Méthode d’Analyse par Approche Descendante: Bilan
203
Un Algorithme = une Fonction
Fonction principale
Fonction 1 Fonction 2
Fonction 21 Fonction 22
204
Exemple d’Analyse par Approche descendante
Le programme calcule la moyenne de 5 réels saisis au clavier.
ALGO Moyenne5Reels
CONST ensc NBELT= 5
VAR rsp tabReel[NBELT], moy
DEBUT
// Saisir 5 réels au clavier et les stocker dans le tableau tabReel[]
SaisirTableau(tabReel) // fonction à détailler dans un autre algorithme
// Afficher le contenu du tableau tabReel[] à l’écran
AfficherTableau(tabReel) // fonction à détailler dans un autre algo
// Calculer la moyenne des éléments du tableau tabReel[]
moy= CalculerMoyenne(tabReel) // à détailler dans un autre algo
Afficher(“Moyenne : ”,moy)
FIN
DEBUT fonction 1
instruction 1
instruction 2
E
E/S DEBUT fonction 2
APPEL fonction 2 instruction 4
instruction 5
instruction 3
instruction 6
…
FIN fonction 1 …
S RETOUR fonction 2
Fonction appelante
FIN fonction 2
E/S
Fonction appelée
208
Définition des Paramètres en Entrée d’une Fonction
209
Le CPU exécute le passage de Paramètre en Entrée à 1 Fonction
PARAMETRE en Entrée :
Fonction appelante • Communique de la fonction
APPEL fonction appelante vers la fonction
appelée.
E • La donnée de la fonction
appelante a une valeur qui
est transmise à la fonction
appelée.
Fonction • De retour dans la fonction
appelée appelante, cette valeur ne
peut pas avoir été changée
par la fonction appelée.211
Illustration graphique sur les Paramètres en Entrée
DEBUT FONCTION 1
instruction 1
instruction 2
APPEL: envoi d’un texte
NBB NB
Fonction appelante
DEBUT FONCTION 2
impression des informations
FIN FONCTION 2
Fonction appelée
212
Exemple de Paramètre en Entrée
Le programme calcule le factoriel d’un entier.
ALGO Factoriel
VAR ensc n
DEBUT
Afficher("Donnez n : ") // Saisie du nombre n au clavier
Saisir(&n)
CalculerFacto( n ) // Calcul et affichage du factoriel
FIN
ALGO Factoriel
VAR ensc n 1. Écrire l’algorithme de la fonction
DEBUT principale, y préciser l’appel de
// Saisie du nombre n
Afficher(“Donnez n : ”)
fonction : CalculerFacto().
Saisir(&n)
// Calcul et affichage du factoriel
2. Mettre en place le paramètre en E :
CalculerFacto( n )
FIN
a. Déclarer le paramètre
localement dans la parenthèse de
la fonction appelée : ensc x.
/* Calcule le factoriel du nombre x et affiche
le résultat */
ensc x )
b. Transmettre la valeur dans
ALGO Calculer Facto(
// Variables locales éventuelles
l’appel : valeur de n.
VAR ...
DEBUT 3. Écrire l’algorithme de la fonction
...
appelée avec ses propres variables
FIN
locales et ses instructions.
214
Mise en place des Paramètres en Entrée en Langage C
ALGO Factoriel
a. Déclaration et saisie de n : n
VAR ensc n reçoit 3 du clavier
b. Appel de la fonction avec
DEBUT
// Saisie du nombre n
Afficher(“Donnez n : ”)
Saisir(&n)
passage de la valeur 3 :
// Calcul et affichage du factoriel CalculerFacto(3)
CalculerFacto( n )
FIN 2. Exécution de la fonction appelée
a. Initialisation des paramètres
en Entrée : x= 3
/* Calcule le factoriel du nombre x et affiche le
résultat */
ALGO CalculerFacto( ensc x )
b. Calcul du factoriel
// Variables locales éventuelles c. Affichage du factoriel
VAR ...
DEBUT d. Retour à la fonction main()
...
FIN
3. Suite et fin de l’exécution du
main()
216
Définition des Retours en Sortie d’une Fonction
217
Le CPU exécute un Retour en Sortie d’une Fonction
Exécution par le CPU: ALGO Principal
VAR ensl facto
DEBUT
facto= NomFonction() //APPEL
FIN
RETOUR en Sortie :
Fonction appelante
APPEL fonction • Communique de la fonction
appelée vers la fonction
appelante.
S
• Le résultat de la fonction
appelée a une valeur qui est
transmise à la fonction
Fonction appelante.
appelée • De retour dans la fonction
appelante, un résultat est
récupéré.
219
Illustration graphique sur les Retours en Sortie
DEBUT FONCTION 1
instruction 1
instruction 2
APPEL: demande le numéro du jour
Affiche numéro de jour
instruction 3
FIN FONCTION 1
Fonction appelante
S DEBUT FONCTION 2
calcul le numéro de jour
RETOUR numéro de jour
FIN FONCTION 2
Fonction appelée
220
Exemple de Retour en Sortie
Le programme calcule le factoriel d’un entier.
ALGO Factoriel
VAR ensc n ; ensl facto
DEBUT
Afficher("Donnez n : "); Saisir(&n) // Saisie du nombre n
facto= CalculerFacto( n ) // Calcul du factoriel
Afficher(" Factoriel : ",facto) // affichage du factoriel
FIN
/* Calcule le factoriel du nombre x */
ALGO ensl Calculer Facto( ensc x )
// Variables locales éventuelles
VAR ... ensl factoriel
DEBUT
…. // instructions de la fonction utilisant la variable x
RETOUR(factoriel)
FIN 221
Mise en place des Retours en Sortie
Comment écrire une fonction avec un RETOUR en Sortie ?
1. Écrire l’algorithme de la fonction
principale, y préciser les fonctions
ALGO Factoriel
VAR ensc n ; ensl facto
appelées : CalculerFacto().
DEBUT
2.
Afficher("Donnez n : "); Saisir(&n)
facto= CalculerFacto( n ) Mettre en place le résultat en Sortie :
Afficher(" Factoriel : ",facto) a. Récupérer le résultat du calcul de
FIN
la fonction CalculerFacto() dans
l’appel : facto= .
/* Calcule le factoriel du nombre x */
ALGO ensl Calculer Facto( ensc x ) b. Déclarer la variable de retour
// Variables locales éventuelles localement dans la fonction appelée
VAR ... ensl factoriel et la renvoyer : ensl, ensl factoriel,
DEBUT
RETOUR(factoriel).
…. // instructions de la fonction
RETOUR(factoriel)
FIN 3. Écrire l’algorithme de la fonction
appelée avec ses propres variables
locales et ses instructions.
222
Mise en place des Retours en Sortie en Langage C
unsigned long CalculerFacto( unsigned short x );
main()
{ unsigned short n; unsigned long facto;
// Saisie du nombre n
printf(“Donnez n : ”); scanf(“%hu”,&n); RETOUR
// Calcul, puis affichage du factoriel en Sortie
facto= CalculerFacto(n)
printf(“Factoriel : %lu”,facto);
}
unsigned long CalculerFacto( unsigned short x )
{ unsigned long factoriel;
/* instructions de calcul du factoriel utilisant la
variable x */ ...
return(factoriel);
} 223
Exécution par le CPU : Factoriel avec Retour en Sortie
1. Exécution de la fonction main()
a. Déclaration et saisie de n : n reçoit 4
ALGO Factoriel
du clavier
VAR ensc n ; ensl facto b. Appel de la fonction avec passage de
DEBUT la valeur 4 : CalculerFacto(4)
Afficher("Donnez n : "); Saisir(&n)
facto= CalculerFacto( n ) 2. Exécution de la fonction appelée
Afficher(" Factoriel : ",facto)
FIN a. Initialisation du paramètre en E : x= 4
b. Calcul du factoriel avec stockage du
/* Calcule le factoriel du nombre x */ résultat dans la variable locale
ALGO ensl Calculer Facto( ensc x ) factoriel
// Variables locales éventuelles
ensl factoriel c. Retour à la fonction main() avec
VAR ...
DEBUT renvoi de la valeur de factoriel : 24
Un autre moyen de
FSINON
FIN
226
Le CPU exécute le passage de Paramètre en E/S à 1 Fonction
Fonction appelante
DEBUT FONCTION 2
Normalise les 10 valeurs
FIN FONCTION 2
Fonction appelée
229
Passage par Valeur ou par Adresse ? Principe des E/S
@1 n: 410
@3 x: 410
@2 factoriel: ---
24
@4 facto: 24
231
Passage par Adresse : Tableau
CONST ensc NBELT= 2 ALGO void InitTab(rsp tab[NBELT])
ALGO Main() VAR ensc i
VAR rsp tabReel[NBELT] DEBUT
DEBUT POUR i de 0 à (NBELT-1)
InitTab(tabReel) tab[i]= random(51)
AfficherTab(tabReel)
FPOUR
FIN
FIN
tabReel
@1 tabReel[0]: ---
26 @3 tab
tabReel[1]: ---
2
@2
232
Passage par Adresse : Variable de Type simple
ALGO Main()
VAR rsp a /* Calcule la valeur absolue de x */
DEBUT ALGO void Vabs( rsp *x )
Afficher(" Donnez a : ") DEBUT
Saisir(&a) SI (*x<0)
Afficher(a) ALORS *x= -(*x)
Vabs( &a ) FSI
Afficher(a) FIN
FIN
@3 x
&a= @1 *x=
a: -2.5
a: 2.5
233
Mise en place des Paramètres en E/S : Tableau
Comment écrire une fonction avec un PARAMETRE en E/S ?
235
Mise en place des Paramètres en E/S en Langage C
3
Puissance (a,b)
2 a
ab
5 b puis
ALGO Main()
VAR rdp p1, p2
DEBUT
p1= Puissance(3,2)
p2= Puissance(5,3)
Afficher(p1,p2) /* Calcule a puissance b */
FIN ALGO rdp Puissance(ensc a, ensc b)
VAR rdp puis
ensc i
DEBUT // a x a x a x a x ... (b fois)
puis= 1
POUR i de 1 à b
puis= puis x a
FPOUR
RETOUR(puis)
FIN
239
Exemple de Fonction avec échanges de Données (3)
Puissance (a,b,*puis)
x a
y b *puis= ab code
&p