SlideShare une entreprise Scribd logo
1
Algorithmique et programmation I
Maroua MEHRI
maroua.mehri@gmail.com
ENISo (GP1 & Méc1)
2017-2018
Objectifs
Définir et analyser les problèmes informatiques
Ecrire des algorithmes en langage C
Manipuler des types de données simples et composés
(e.g. tableaux, enregistrements et listes chainées)
S’habituer à utiliser des structures conditionnelles et itératives
2
Plan du cours (1)
Partie 1 : Algorithmique
Chapitre 1 : Introduction à l’algorithmique
Chapitre 2 : Les instructions simples
Chapitre 3 : Les structures conditionnelles
Chapitre 4 : Les structures itératives
Chapitre 5 : Les sous-programmes
3
Plan du cours (2)
Partie 2 : Programmation en C
Chapitre 1 : Introduction à la programmation en C
Chapitre 2: Présentation générale du C
Chapitre 3 : Le pré-processeur
Chapitre 4 : Les types et opérateurs de base
Chapitre 5 : Les entrées/sorties
Chapitre 6 : Les instructions
Chapitre 7 : Les expressions en C
Chapitre 8 : Les types composés
Chapitre 9 : Les fonctions
Chapitre 10 : Les pointeurs
4
2
Bibliographie
Denis Lapoire, « Introduction à l’algorithmique », 2007
Michel Lemaître, « Structures de données et algorithmes », ONERA,
centre de Toulouse, 2001
Cours Algorithmique de l’université virtuelle de Tunis.
Kernighan & Ritchie : Le Langage C, Masson
Ph Dax – Le langage C, Eyrolles
J.M. Drappier, A. Mauffrey – C par l'exemple, Eyrolles
Ph Drix – Langage C norme ANSI vers une approche orientée objet,
Masson
Claude Delannoy – Programmer en langage C , Eyrolles
Claude Delannoy – Exercice en Langage C , Eyrolles
5
Partie 1
Algorithmique
6
Plan de la Partie 1
7
Partie 1 : Algorithmique
Chapitre 1 : Introduction à l’algorithmique
Chapitre 2 : Les instructions simples
Chapitre 3 : Les structures conditionnelles
Chapitre 4 : Les structures itératives
Chapitre 5 : Les sous-programmes
Chapitre 1
8
Introduction à l’algorithmique
3
Algorithmique : une science très ancienne
9
Remonte à l’antiquité :
Euclide : calcul du pgcd de deux nombres
Archimède : calcul d’une approximation de π
Le mot algorithme vient du mathématicien Arabe du 9ème
siècle Al Khou Warismi
Reste la base dure de l’informatique
Intervient dans le software et le hardware
Algorithmique et algorithmes
10
Est la science des algorithmes
S’intéresse à l’art de construire des algorithmes
S’intéresse à caractériser :
Validité : aptitude à réaliser exactement la tâche
Robustesse : aptitude à se protéger de conditions anormales
d’utilisation
Réutilisabilité : aptitude à être réutilisé pour résoudre des tâches
équivalentes
Complexité : le nombre d’instructions élémentaires à exécuter pour
réaliser la tâche
Efficacité : aptitude à utiliser de manière optimale les ressources du
matériel
Etapes de résolution d’un problème
Pour résoudre un problème en informatique, il faut passer
par les 5 étapes suivantes :
1. Définition et analyse du problème
2. Ecriture de l’algorithme
3. Programmation
4. Compilation du programme
5. Exécution et test du programme
11
Etapes de résolution d’un problème
Définition et analyse du problème
Définir les données qu’on dispose
Définir les objectifs qu’on souhaite atteindre
Prévoir des réponses à tous les cas envisageables
12
Données : a, b et c
Sorties : x1 et x2
Cas : a=0 et b!=0, a=0 et b=0, a!=0, …
Exemple :
La résolution d’une équation de second degré
4
Etapes de résolution d’un problème
Ecriture de l’algorithme
13
Phase la plus difficile et la plus importante
Fournit la méthode et la démarche que l’ordinateur va
suivre pour résoudre le problème posé
Prend en entrée des données et fournit un résultat
permettant de donner la réponse à un problème
Définition :
Un algorithme est une séquence d’étapes de calcul à
exécuter permettant de résoudre un problème ou d’obtenir
des résultats en sortie à partir des données en entrée.
Etapes de résolution d’un problème
Programmation de l’algorithme
14
Mise en œuvre de l’algorithme
Exprimer l’algorithme dans un langage connu par l’ordinateur
Implémentation (codage)
Ecriture de ces opérations dans un langage de programmation
⇒ Programme
Un programme implémente un algorithme
Il faut :
Choisir un langage de programmation
Traduire l’algorithme sous forme d’un programme exprimé dans
le langage choisi
Etapes de résolution d’un problème
Compilation (1)
15
Traduire le programme écrit dans un langage de haut
niveau en un programme exécutable écrit dans un langage
binaire de bas niveau (code objet)
Détection des éventuelles erreurs
Tâche réalisée par le compilateur
Etapes de résolution d’un problème
Compilation (2)
16
.c
.h
.o
.c
.h
éditeur
Compilation
.o
Éditeur de liens
Programme.exe
.lib
Code source
Code objet
Exécutable
5
Etapes de résolution d’un problème
Exécution et test du programme
17
S’assurer que le programme donne un résultat correct dans
tous les cas et pour toutes les éventualités
Effectuer plusieurs jeux de tests correspondants aux
différents cas
Vérifier la validité des résultats
Structure générale d’un algorithme
Schéma général
18
Un algorithme comporte généralement deux parties :
Partie déclarative :
• Entête
• Déclaration des constantes
• Déclaration des variables
Partie corps de l’algorithme : une séquence d’actions faisant appel
à des opérations de base de l’ordinateur
Une action peut être :
Affectation
Entrée-sortie
De contrôle conditionnelle (simple ou à choix multiple)
De répétition
Structure générale d’un algorithme
Syntaxe
19
Algorithme « nom de l’algorithme »
Const
« Liste des constantes avec leur valeur »
Var
« Liste des variables suivies par leur type »
Début
« Séquence d’actions »
Fin
Partie déclarative
Partie corps
de l’algorithme
Structure générale d’un algorithme
Définition d’une variable (1)
20
Définition :
Une variable est un emplacement mémoire capable de
contenir des valeurs de type défini au préalable.
Une variable = une boîte
Nom : identificateur de la variable
Taille : dépend du type de la variable (e.g. 2 octets pour un entier,
1 octet pour un caractère, 4 octets pour un réel, …)
Contenu
Adresse : numéro du 1er octet occupé par cette variable en mémoire
6
Structure générale d’un algorithme
Définition d’une variable (2)
21
Syntaxe :
Var
Liste des variables suivies par des virgules : type 1
Liste des variables suivies par des virgules : type 2
.
.
Liste des variables suivies par des virgules : type i
Exemples :
Var
X,Y : entier
A : réel
⇒ Dans un algorithme, on peut avoir 0 à plusieurs variables
Structure générale d’un algorithme
Définition d’une constante
22
Définition :
La définition d’une constante est la même que celle d’une
variable à la différence que la valeur d’une constante reste
inchangée tout au long de l’algorithme.
Syntaxe :
Const
Nom_const 1 = val 1
Nom_const i = val i
Exemples :
Const
Min = 10
Max = 200
Structure générale d’un algorithme
Types de base (1)
23
A toute variable est attribué un type qui définit :
Ensemble des valeurs
Ensemble des opérations
Types simples :
Entier
Réel
Caractère
Booléen
Types composés : définis à partir des types de base
Tableaux
Chaînes de caractères, …
Structure générale d’un algorithme
Types de base (2)
24
Types simples :
Entier
• Ensemble des entiers relatifs (e.g. 8, -10, 3, …)
• Opérations : +, -, *, DIV (division entière) et MOD (reste de la division entière)
Réel
• Ensemble ℝ
• Opérations : +, -, *, /
• Deux formes de représentation
o Usuelle : « a.b » (e.g. -4.6, 13.9, …)
o Scientifique : « a Eb » (e.g. 345 = 3.45 E2 = 0.345 E3)
Caractère
• Lettre, chiffre ou caractère spécial (e.g. ‘a’, ‘b’, ‘3’, …)
• Opérations : =, !=, <, <=, >, >=
Booléen
• ‘VRAI’ et ‘FAUX’
• Opérations : NON, ET, OU
7
Chapitre 2
25
Les instructions simples
Instruction d’affectation
26
Permet de ranger une nouvelle valeur dans une variable
Syntaxe :
Identificateur_var ← <expression>
Une constante ne peut jamais figurer à gauche d’une
affectation
Après une affectation, l’ancien contenu est perdu pour être
substitué par le nouveau contenu
Une action d’affectation doit se faire entre deux types
compatibles
Variable
Constante
Expression arithmétique
Expression logique
Instruction d’affectation
Expressions arithmétiques
27
Syntaxe :
<exp_arith> op_arith <exp_arith>
+
-
/
*
Exemple :
(Y/2) + x*3
L’ordre de priorité des opérateurs arithmétiques est :
Signe négatif -
Parenthèses ()
Puissance ^
Multiplication * et division /
Addition + et soustraction -
Instruction d’affectation
Expressions logiques
28
Admettent ‘VRAI’ ou ‘FAUX’ comme résultat
Peuvent utiliser des opérateurs relationnels (=, !=, <, <=, >,
>=) ou des opérateurs logiques (NON, ET, OU)
L’ordre de priorité est : NON >
ET >=
OU <
<=
=
!=
Exemple :
(x<6) ET (Y=0) → ‘VRAI’ si x<6 et Y=20 et ‘FAUX’ sinon
8
Instruction de lecture ou d’entrée
29
Permet d’affecter, à une variable, une donnée introduite à
partir d’un périphérique d’entrée (e.g. clavier, fichier)
Syntaxe :
lire(nom_var1, nom_var2, …)
Exemples :
lire(A) : lit une valeur à partir du périphérique d’entrée et la
range dans la case mémoire associée à A
lire(X,Y) : lit deux valeurs la première pour X et la deuxième
pour Y
Instruction d’écriture ou de sortie
30
Permet d’afficher des résultats sur un périphérique de sortie
(e.g écran)
Ces résultats peuvent être :
Chaîne de caractères délimitée par ‘‘’’
Valeur d’une variable dont le nom est spécifié
Valeur d’une expression
Syntaxe :
écrire(liste d’expressions séparées par des virgules)
Exemple :
lire(somme)
lire(nombre)
écrire(‘‘La moyenne est : ’’, somme/nombre)
Exercices
31
Exercice 1 :
Ecrire un algorithme qui lit deux entiers X et Y et affiche leur valeur avant
et après permutation.
Exercice 2 :
Ecrire un algorithme qui lit trois entiers X, Y et Z et qui calcule et affiche
leur somme, leur produit et leur moyenne.
Chapitre 3
32
Les structures conditionnelles
9
Introduction
33
Choisir entre deux ou plusieurs traitements selon la
réalisation ou non d’une certaine condition
Deux structures de traitement conditionnel :
Simple : évaluer une condition (expression logique à valeur ‘VRAI’
ou ‘FAUX’) et effectuer le traitement relatif à la valeur de vérité
trouvée
A choix multiple : évaluer une expression qui n’est pas
nécessairement à valeur booléenne (plus de deux valeurs) et selon la
valeur trouvée, effectuer un traitement
Structure conditionnelle simple
Forme simple (1)
34
Syntaxe :
Si Condition Alors
Séquence d’action(s)
Fin si
Si
Condition ?
Séquence d’actions
Suite du programme
FAUX
VRAI
Structure conditionnelle simple
Forme simple (2)
35
Exercice :
Ecrire un algorithme qui permet de saisir un entier et d’afficher impossible
d’être diviseur si cet entier est égal à 0.
Structure conditionnelle simple
Forme composée (1)
36
Syntaxe :
Si Condition Alors
Séquence d’actions 1
Sinon
Séquence d’actions 2
Fin si
Si
Condition ?
Séquence d’actions 1
Suite du programme
VRAI
Séquence d’actions 2
FAUX
10
Structure conditionnelle simple
Forme composée (2)
37
Exercice :
Ecrire un algorithme qui permet de saisir un entier et d’afficher « Pair » si
cet entier est pair ou « Impair » si cet entier est impair.
Structure conditionnelle simple
Forme imbriquée (1)
38
Syntaxe :
Si Condition 1 Alors
Séquence d’actions 1
Sinon
Si Condition 2 Alors
Séquence d’actions 2
Sinon
Si Condition N-1 Alors
Séquence d’actions N-1
Sinon
Séquence d’actions N
Fin si
Structure conditionnelle simple
Forme imbriquée (2)
39
Exercice :
Ecrire un algorithme qui permet de saisir deux entiers A et B puis teste si
A>B ou A<B ou A=B.
Structure conditionnelle à choix multiple
(1)
40
Syntaxe :
Selon <sélecteur> Faire
<liste de valeurs 1> : <traitement 1>
<liste de valeurs 2> : <traitement 2>
.
.
<liste de valeurs N-1> : <traitement N-1>
Sinon
<traitement N>
Fin selon
Sélecteur :
identificateur
Traitement i :
séquence d’actions
Liste de valeurs i :
constante ou intervalle
de constantes de
même type que
sélecteur
La partie Sinon est
facultative et exécutée
si aucune des valeurs
n’est égale au
sélecteur
11
Structure conditionnelle à choix multiple
(2)
41
Exercice :
Ecrire un algorithme qui permet de lire un numéro de jour de la semaine
(compris entre 1 et 7) et d’afficher le nom du jour en toute lettre.
Chapitre 4
42
Les structures itératives
Structure « Pour … Faire … Fin pour » (1)
Schéma d’exécution
43
Pour
vc <= vf ?
Traitement
FAUX
VRAI
vc ← vi
vc ← vi +1
Suite du programme
Structure « Pour … Faire … Fin pour » (1)
Syntaxe
44
Syntaxe :
Pour vc de vi à vf Faire
Traitement
Fin pour
vc : compteur de type entier
vi : valeur initiale
vf : valeur finale
Traitement = action ou séquence d’action
à répéter (vf-vi+1) fois
Le nombre d’itérations est connu à
l’avance
Pas de la boucle : vc est incrémenté
automatiquement par 1 à chaque exécution
du corps de la boucle Pour
vc reçoit une valeur initiale vi pour la
première fois
Exécution de la boucle finit lorsque vc
atteint vf
Remarques :
‐ Une boucle peut être
exécutée une ou plusieurs
fois
‐ Si le pas est différent de 1,
il faut ajouter l’option
(pas = constante)
12
Structure « Pour … Faire … Fin pour » (3)
Exemples
45
Exemple 1 :
Pour i de 1 à 5 Faire
écrire(i*100)
Fin pour
Exemple 2 :
Pour i de 5 à 1 (pas = -1) Faire
écrire(i*100)
Fin pour
Structure « Pour … Faire … Fin pour » (4)
Exercices
46
Exercice 1 :
Ecrire un algorithme qui permet de calculer et d’afficher la somme des Nb
premiers entiers naturels (Nb est saisi à partir de clavier).
Exercice 2 :
Ecrire un algorithme qui lit un entier n qu’on suppose positif puis affiche
tous ses diviseurs.
Structure « Répéter … Jusqu’à » (1)
Schéma d’exécution et syntaxe
47
Répéter
Condition ?
Suite du programme
FAUX
VRAI
Traitement
Syntaxe :
Répéter
Traitement
Jusqu’à (condition)
Condition : condition d’arrêt et de sortie
de la boucle
Traitement = action ou ensemble
d’actions à exécuter tant que la condition
n’est pas vérifiée
Si la condition est vérifiée, l’exécution du
traitement s’arrête
Le nombre de répétition n’est pas connu
à l’avance
Le traitement est exécuté au moins une
fois quelque soit le résultat de la condition
La condition doit être initialisée avant le
début de la boucle et doit être modifiée à
l’intérieur de la boucle
Structure « Répéter … Jusqu’à » (2)
Exemple et exercices
48
Exemple :
i ← 1
Répéter
écrire(i*100)
i ← i + 1
Jusqu’à (i>5)
Exercice 1 :
Ecrire un algorithme qui permet de calculer la somme des Nb premiers
entiers en utilisant la boucle « Répéter … Jusqu’à ».
Exercice 2 :
Ecrire un algorithme qui permet de calculer la factorielle d’un entier n
donné (on suppose que n est un entier positif).
13
Structure « Tant que… Faire …
Fin tant que » (1)
Schéma d’exécution et syntaxe
49
Tant que
Suite du programme
FAUX
VRAI
Traitement
Syntaxe :
Tant que Condition Faire
Traitement
Fin tant que
Condition : condition de maintien de la
boucle
Traitement = action ou ensemble
d’actions à exécuter tant que la condition
est vérifiée
Le traitement est exécuté tant que la
condition est vérifiée, sinon on sort de la
boucle
Si la condition n’est pas vraie dès la
première exécution, la boucle ne sera
jamais exécutée (0 fois)
La condition doit être initialisée avant la
boucle et modifiée à l’intérieur de la
boucle
Condition ?
Structure « Tant que… Faire …
Fin tant que » (2)
Exemple et exercices
50
Exemple :
i ← 1
Tant que (i<=5) Faire
écrire(i*100)
i ← i + 1
Fin tant que
Exercice 1 :
Ecrire un algorithme qui permet de calculer la somme des Nb premiers
entiers en utilisant la boucle « Tant que … Faire … Fin tant que ».
Exercice 2 :
Ecrire un algorithme qui permet de calculer la factorielle d’un entier n
donné (on suppose que n est un entier positif).
Chapitre 5
51
Les sous-programmes
Introduction
52
Décomposition des problèmes en modules (sous-problèmes
de taille réduite)
Plusieurs séquences d’instructions sont appelés plusieurs fois
et depuis divers points du programme
→ isoler ces séquences dans un sous-programme
Approche modulaire : réduit le nombre d’instructions redondantes
moyennant l’ajout d’une séquence d’appel pour le module à
différents endroits du programme
→ réduit la taille du programme
Lisibilité : facilite la compréhension du programme
Réutilisation des sous-programmes
→ Programme plus lisible et plus facile à maintenir
( à modifier éventuellement par la suite)
14
Définition d’un sous-programme
53
Définition :
Un sous-programme est une portion de code analogue à un
programme, déclarée dans un programme ou un sous-
programme, et dont la partie instruction peut être exécutée
plusieurs fois au cours du traitement du programme grâce à des
appels.
Deux formes de sous-programmes :
Procédure : un sous-programme qui effectue un traitement
Fonction : un sous-programme qui renvoie une valeur d’un seul type
Procédures sans paramètres
54
Utilisées pour éviter à réécrire plusieurs fois une même suite
d’instructions plusieurs fois dans le programme
Syntaxe (déclaration) :
Procédure nom_procédure
Const
Var
Début
Suite d’instructions
Fin
Syntaxe (appel) :
Nom_procédure
Exemple :
Algorithme Principal
Var x, y : entier
Procédure affiche
Début
écrire(‘‘Donnée saisie !’’)
Fin
Début
lire(x)
affiche
écrire(x, y)
Fin
Déclaration
de la
procédure
Procédures avec paramètres
55
Exemple :
Algorithme Principal
Var x, y, a, b : entier
Procédure permute(var u, v : entier)
Var z : entier
Début
z ← u
u ← v
v ← z
Fin
Début
permute(x, y)
permute(a, b)
Fin
Paramètres formels
56
Une déclaration de procédure peut comporter après le nom
de la procédure une liste de paramètres formels
Syntaxe :
Procédure nom_procédure(Liste de paramètres formels)
Exemple :
Procédure somme(a, b : entier, var c : entier)
Début
c ← a + b
Fin
15
Paramètres effectifs (1)
57
Au cas où la déclaration d’une procédure comprend des
paramètres formels, chaque appel de cette procédure doit
comporter des paramètres effectifs compatibles
Les deux listes de paramètres formels et effectifs aient le
même nombre de paramètre
Les paramètres formels et effectifs correspondants soient
compatibles
Syntaxe :
nom_procédure(Liste de paramètres effectifs)
Paramètres effectifs (2)
58
Exemple :
Algorithme Principal
Var t :réel
x, y, z : entier
Début
Permute(x, y, z)
Permute(x, t)
Fin
Interdit car le nombre de
paramètres formels est différent
de celui de paramètres effectifs
Interdit car les paramètres
formels et effectifs ne sont pas
compatibles
Passage de paramètres par valeur
59
Exemple :
Algorithme Passage_valeur
Var x : entier
Procédure incrémenter(y : entier)
Début
écrire(y)
y ← y + 1
écrire(y)
Fin
Début
x ← 0
écrire(x)
incrémenter(x)
écrire(x)
Fin
Les paramètres effectifs
sont lus à l’appel de la
procédure puis leurs
valeurs sont affectées à
des variables
temporaires locales à la
procédure
Passage de paramètres par variable
60
Exemple :
Algorithme Passage_variable
Var x : entier
Procédure incrémenter(var y : entier)
Début
écrire(y)
y ← y + 1
écrire(y)
Fin
Début
x ← 0
écrire(x)
incrémenter(x)
écrire(x)
Fin
Les variables d’entrée de
la procédure (paramètres
effectifs) sont liés aux
paramètres formels
Toute action sur les
paramètres formels
s’exécutera sur les
variables effectifs
correspondants
A la sortie de la
procédure, les variables
peuvent avoir leurs
contenus changés
16
Passage de paramètres par valeur/variable
Résumé
61
Le passage de paramètres par valeur est utilisé pour
transmettre une valeur à la procédure
Le passage de paramètres par variable est utilisé pour que
la procédure puisse modifier la valeur d’une variable du
programme appelant
Fonctions (1)
62
La valeur retournée par la
fonction dépend en général des
paramètres formels (et des
variables globales)
Variables globales : déclarées à
l’extérieur des sous-programmes
Variables locales : déclarées à
l’intérieur des sous-programmes
Une même variable peut
apparaître localement dans deux
sous-programmes différents
Exemple :
Algorithme Principal
Var x, y : entier
Procédure proc(z : entier)
Var t: réel
Début
…
Fin
Début
…
Fin
Variables
globales
Variable
locale
Fonctions (2)
63
Le corps de la fonction doit contenir au moins une
instruction de retour de la valeur de la fonction
Expression doit être de même type que la fonction
Un appel d’une fonction se fait dans une expression
Syntaxe (déclaration) :
Fonction nom_fonction(Liste des paramètres formels) : type du résultat retourné
Var
Début
Corps de la fonction
Fin
Nom_fonction ← expression
Fonctions (3)
64
Exemple 1 :
Fonction max(x, y : entier) : entier
Début
Si (x>=y) Alors
max ← x
Sinon
max ← y
Fin si
Fin
17
Fonctions (4)
65
Exemple 2 :
Algorithme Max4réels
Var x1, x2, x3, x4, y1, y2, y3 : réel
Fonction max(x, y : réel) : réel
Début
Si (x>=y) Alors
max ← x
Sinon
max ← y
Fin si
Fin
Début
lire(x1, x2, x3, x4)
y1 ← max(x1, x2)
y2 ← max(x3, x4)
y3 ← max(y1, y2)
écrire(‘‘Max est : ’’, y3)
Fin

Contenu connexe

PPTX
UNIVERSTE LA FRANCOPHONIE DE NDJAMENA.pptx
PPTX
UNIVERSTE LA FRANCOPHONIE DE NDJAMENA.pptx
PPTX
UNIVERSTE LA FRANCOPHONIE DE NDJAMENA.pptx
PDF
Algorithmique de base.pdf
PPT
coursalgorithmique9-10.ppt
PDF
Cours_Algorithmique-_Excercices_Corrigés.pdf
PDF
Algorithmique et Programmation I - Lilia Ayadi.pdf
PPTX
Séance bb 1-8.pptx
UNIVERSTE LA FRANCOPHONIE DE NDJAMENA.pptx
UNIVERSTE LA FRANCOPHONIE DE NDJAMENA.pptx
UNIVERSTE LA FRANCOPHONIE DE NDJAMENA.pptx
Algorithmique de base.pdf
coursalgorithmique9-10.ppt
Cours_Algorithmique-_Excercices_Corrigés.pdf
Algorithmique et Programmation I - Lilia Ayadi.pdf
Séance bb 1-8.pptx

Similaire à Algorithmique_et_programmation_I_Plan_du.pdf (20)

PDF
Algorithmique Partie...............................
PDF
Algorithme et programmation.pdf
PPTX
Initiation à l'algorithmique
PDF
cours algorithme et structure de données 1er année
PPT
Introduction générale au notion d'algorithmique et programmationt
PPT
Algorithmique_Programmation_informatique
PDF
Ktab asd
PPSX
Généralités sur la notion d’Algorithme
PPTX
algorithmique
PPTX
Algorithmique
PPTX
Algorithmique
PDF
Ch2-Notions de base & actions élémentaires.pdf
PPTX
Algorithmique&Langage C-Partie1 BTS.pptx
PDF
algo thrichi.pdf
PPTX
Algoritme 1annécours pourleslanguages.pptx
PDF
Cours-ALGORITHMIQUE-03.pdf
PDF
INITIATION A LA PROGRAMMATION -NOTIONS DE BASE EN LANGAGE C++
PDF
algorithme tronc commun lycée
PDF
00-Intro aux algorithme et autres aspects
Algorithmique Partie...............................
Algorithme et programmation.pdf
Initiation à l'algorithmique
cours algorithme et structure de données 1er année
Introduction générale au notion d'algorithmique et programmationt
Algorithmique_Programmation_informatique
Ktab asd
Généralités sur la notion d’Algorithme
algorithmique
Algorithmique
Algorithmique
Ch2-Notions de base & actions élémentaires.pdf
Algorithmique&Langage C-Partie1 BTS.pptx
algo thrichi.pdf
Algoritme 1annécours pourleslanguages.pptx
Cours-ALGORITHMIQUE-03.pdf
INITIATION A LA PROGRAMMATION -NOTIONS DE BASE EN LANGAGE C++
algorithme tronc commun lycée
00-Intro aux algorithme et autres aspects
Publicité

Plus de RihabBENLAMINE (20)

PPT
bq7ix-ARCHITECTUREeeeeee_DES_ORDINATEURS.ppt
PPT
20XX-XX.cours.01.adommlmmkkkkkmmmmmmk.ppt
PDF
Cours_de_Big_Data_LF2_IG_EbhkjbhkhfhSB.pdf
PDF
Technologie_Web_et_XMLIMPORTANTTTTTT.pdf
PDF
coursJavaOopmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm.pdf
PPTX
Cours_TGC_11111111111111111111111111111111.pptx
PPTX
CM_Webbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.pptx
PPT
0242-formation-j2eereeeeeeeeeeeeeeeeeeeee.ppt
PPT
rferfergergergergergergergergergergergerger
PDF
545068251-Chapitre-3-Mongo-Mapreduce.pdf
PPTX
634092592-Untitledddddddddddddddddd.pptx
PPTX
751551154-LA-rrrrrRE-ALITE-VIRTUELLE.pptx
PPT
powerpointralitaugmente-111221163422-phpapp02.ppt
PDF
cours5,njkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk.pdf
PDF
Cours7-Couche-Liaisonfzeffffffffffffffffffff.pdf
PPTX
216762808790_chap1fondementdesreseaux2023.pptx
PDF
Mobil-Intentsfdgdfgdfgdfgdfgdfgdfgdgdfgdf.pdf
PDF
cours-intentdgdgsdgsdgsdgsdgsdgsdgsdgs.pdf
PPTX
481436448-Virtualisation-Cloud-computing-2020-1-pptx.pptx
PDF
coursPgvhgvgvgchgcghcghcgcgchchgchghg2.pdf
bq7ix-ARCHITECTUREeeeeee_DES_ORDINATEURS.ppt
20XX-XX.cours.01.adommlmmkkkkkmmmmmmk.ppt
Cours_de_Big_Data_LF2_IG_EbhkjbhkhfhSB.pdf
Technologie_Web_et_XMLIMPORTANTTTTTT.pdf
coursJavaOopmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm.pdf
Cours_TGC_11111111111111111111111111111111.pptx
CM_Webbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.pptx
0242-formation-j2eereeeeeeeeeeeeeeeeeeeee.ppt
rferfergergergergergergergergergergergerger
545068251-Chapitre-3-Mongo-Mapreduce.pdf
634092592-Untitledddddddddddddddddd.pptx
751551154-LA-rrrrrRE-ALITE-VIRTUELLE.pptx
powerpointralitaugmente-111221163422-phpapp02.ppt
cours5,njkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk.pdf
Cours7-Couche-Liaisonfzeffffffffffffffffffff.pdf
216762808790_chap1fondementdesreseaux2023.pptx
Mobil-Intentsfdgdfgdfgdfgdfgdfgdfgdgdfgdf.pdf
cours-intentdgdgsdgsdgsdgsdgsdgsdgsdgs.pdf
481436448-Virtualisation-Cloud-computing-2020-1-pptx.pptx
coursPgvhgvgvgchgcghcghcgcgchchgchghg2.pdf
Publicité

Dernier (16)

PPTX
UMAPON Cours de traitement des minerais 2.pptx
PDF
CHAPITRE 3 Typologie des réseaux [Enregistrement automatique] 4.pdf
PDF
TP de La Masse Volumique apparente et absolue
PDF
FAQ_FORAGE_EAU_SUNRISE_ENGINEERING_GROUP_SARL2025.pdf
PPTX
COURS DE PROSPECTION MINIERE UTMSIRI - Copie.pptx
PPTX
Logique séquentielle : les fondamentaux
PDF
Visite de chantier – Projet de Polyclinique à Laghouat
PPTX
mon_expose_de_geophysique_disposotif_de_wener.pptx
PDF
Arouna Toure - Senior Ingénieur Logiciel Et Chef De Produit
PPTX
A Recurrent Neural Network (RNN)s a type of artificial neural network
PPTX
Lirrigation-et-le-drainage-en-agriculture-Principes-et-Pratiques.pptx
PPTX
CH1-RMELLOULI-Données des problèmes d'ordonnancement de la production.pptx
PDF
TP L’analyse granulométrique par tamisage
PPTX
FormationFormation e pFormationour HC .pptx
PDF
Expansion du Réseau de Gazoducs de Gaz Naturel au Brésil _ Analyse Technique ...
PPTX
Introduction aux Systèmes temps réel.pptx
UMAPON Cours de traitement des minerais 2.pptx
CHAPITRE 3 Typologie des réseaux [Enregistrement automatique] 4.pdf
TP de La Masse Volumique apparente et absolue
FAQ_FORAGE_EAU_SUNRISE_ENGINEERING_GROUP_SARL2025.pdf
COURS DE PROSPECTION MINIERE UTMSIRI - Copie.pptx
Logique séquentielle : les fondamentaux
Visite de chantier – Projet de Polyclinique à Laghouat
mon_expose_de_geophysique_disposotif_de_wener.pptx
Arouna Toure - Senior Ingénieur Logiciel Et Chef De Produit
A Recurrent Neural Network (RNN)s a type of artificial neural network
Lirrigation-et-le-drainage-en-agriculture-Principes-et-Pratiques.pptx
CH1-RMELLOULI-Données des problèmes d'ordonnancement de la production.pptx
TP L’analyse granulométrique par tamisage
FormationFormation e pFormationour HC .pptx
Expansion du Réseau de Gazoducs de Gaz Naturel au Brésil _ Analyse Technique ...
Introduction aux Systèmes temps réel.pptx

Algorithmique_et_programmation_I_Plan_du.pdf

  • 1. 1 Algorithmique et programmation I Maroua MEHRI maroua.mehri@gmail.com ENISo (GP1 & Méc1) 2017-2018 Objectifs Définir et analyser les problèmes informatiques Ecrire des algorithmes en langage C Manipuler des types de données simples et composés (e.g. tableaux, enregistrements et listes chainées) S’habituer à utiliser des structures conditionnelles et itératives 2 Plan du cours (1) Partie 1 : Algorithmique Chapitre 1 : Introduction à l’algorithmique Chapitre 2 : Les instructions simples Chapitre 3 : Les structures conditionnelles Chapitre 4 : Les structures itératives Chapitre 5 : Les sous-programmes 3 Plan du cours (2) Partie 2 : Programmation en C Chapitre 1 : Introduction à la programmation en C Chapitre 2: Présentation générale du C Chapitre 3 : Le pré-processeur Chapitre 4 : Les types et opérateurs de base Chapitre 5 : Les entrées/sorties Chapitre 6 : Les instructions Chapitre 7 : Les expressions en C Chapitre 8 : Les types composés Chapitre 9 : Les fonctions Chapitre 10 : Les pointeurs 4
  • 2. 2 Bibliographie Denis Lapoire, « Introduction à l’algorithmique », 2007 Michel Lemaître, « Structures de données et algorithmes », ONERA, centre de Toulouse, 2001 Cours Algorithmique de l’université virtuelle de Tunis. Kernighan & Ritchie : Le Langage C, Masson Ph Dax – Le langage C, Eyrolles J.M. Drappier, A. Mauffrey – C par l'exemple, Eyrolles Ph Drix – Langage C norme ANSI vers une approche orientée objet, Masson Claude Delannoy – Programmer en langage C , Eyrolles Claude Delannoy – Exercice en Langage C , Eyrolles 5 Partie 1 Algorithmique 6 Plan de la Partie 1 7 Partie 1 : Algorithmique Chapitre 1 : Introduction à l’algorithmique Chapitre 2 : Les instructions simples Chapitre 3 : Les structures conditionnelles Chapitre 4 : Les structures itératives Chapitre 5 : Les sous-programmes Chapitre 1 8 Introduction à l’algorithmique
  • 3. 3 Algorithmique : une science très ancienne 9 Remonte à l’antiquité : Euclide : calcul du pgcd de deux nombres Archimède : calcul d’une approximation de π Le mot algorithme vient du mathématicien Arabe du 9ème siècle Al Khou Warismi Reste la base dure de l’informatique Intervient dans le software et le hardware Algorithmique et algorithmes 10 Est la science des algorithmes S’intéresse à l’art de construire des algorithmes S’intéresse à caractériser : Validité : aptitude à réaliser exactement la tâche Robustesse : aptitude à se protéger de conditions anormales d’utilisation Réutilisabilité : aptitude à être réutilisé pour résoudre des tâches équivalentes Complexité : le nombre d’instructions élémentaires à exécuter pour réaliser la tâche Efficacité : aptitude à utiliser de manière optimale les ressources du matériel Etapes de résolution d’un problème Pour résoudre un problème en informatique, il faut passer par les 5 étapes suivantes : 1. Définition et analyse du problème 2. Ecriture de l’algorithme 3. Programmation 4. Compilation du programme 5. Exécution et test du programme 11 Etapes de résolution d’un problème Définition et analyse du problème Définir les données qu’on dispose Définir les objectifs qu’on souhaite atteindre Prévoir des réponses à tous les cas envisageables 12 Données : a, b et c Sorties : x1 et x2 Cas : a=0 et b!=0, a=0 et b=0, a!=0, … Exemple : La résolution d’une équation de second degré
  • 4. 4 Etapes de résolution d’un problème Ecriture de l’algorithme 13 Phase la plus difficile et la plus importante Fournit la méthode et la démarche que l’ordinateur va suivre pour résoudre le problème posé Prend en entrée des données et fournit un résultat permettant de donner la réponse à un problème Définition : Un algorithme est une séquence d’étapes de calcul à exécuter permettant de résoudre un problème ou d’obtenir des résultats en sortie à partir des données en entrée. Etapes de résolution d’un problème Programmation de l’algorithme 14 Mise en œuvre de l’algorithme Exprimer l’algorithme dans un langage connu par l’ordinateur Implémentation (codage) Ecriture de ces opérations dans un langage de programmation ⇒ Programme Un programme implémente un algorithme Il faut : Choisir un langage de programmation Traduire l’algorithme sous forme d’un programme exprimé dans le langage choisi Etapes de résolution d’un problème Compilation (1) 15 Traduire le programme écrit dans un langage de haut niveau en un programme exécutable écrit dans un langage binaire de bas niveau (code objet) Détection des éventuelles erreurs Tâche réalisée par le compilateur Etapes de résolution d’un problème Compilation (2) 16 .c .h .o .c .h éditeur Compilation .o Éditeur de liens Programme.exe .lib Code source Code objet Exécutable
  • 5. 5 Etapes de résolution d’un problème Exécution et test du programme 17 S’assurer que le programme donne un résultat correct dans tous les cas et pour toutes les éventualités Effectuer plusieurs jeux de tests correspondants aux différents cas Vérifier la validité des résultats Structure générale d’un algorithme Schéma général 18 Un algorithme comporte généralement deux parties : Partie déclarative : • Entête • Déclaration des constantes • Déclaration des variables Partie corps de l’algorithme : une séquence d’actions faisant appel à des opérations de base de l’ordinateur Une action peut être : Affectation Entrée-sortie De contrôle conditionnelle (simple ou à choix multiple) De répétition Structure générale d’un algorithme Syntaxe 19 Algorithme « nom de l’algorithme » Const « Liste des constantes avec leur valeur » Var « Liste des variables suivies par leur type » Début « Séquence d’actions » Fin Partie déclarative Partie corps de l’algorithme Structure générale d’un algorithme Définition d’une variable (1) 20 Définition : Une variable est un emplacement mémoire capable de contenir des valeurs de type défini au préalable. Une variable = une boîte Nom : identificateur de la variable Taille : dépend du type de la variable (e.g. 2 octets pour un entier, 1 octet pour un caractère, 4 octets pour un réel, …) Contenu Adresse : numéro du 1er octet occupé par cette variable en mémoire
  • 6. 6 Structure générale d’un algorithme Définition d’une variable (2) 21 Syntaxe : Var Liste des variables suivies par des virgules : type 1 Liste des variables suivies par des virgules : type 2 . . Liste des variables suivies par des virgules : type i Exemples : Var X,Y : entier A : réel ⇒ Dans un algorithme, on peut avoir 0 à plusieurs variables Structure générale d’un algorithme Définition d’une constante 22 Définition : La définition d’une constante est la même que celle d’une variable à la différence que la valeur d’une constante reste inchangée tout au long de l’algorithme. Syntaxe : Const Nom_const 1 = val 1 Nom_const i = val i Exemples : Const Min = 10 Max = 200 Structure générale d’un algorithme Types de base (1) 23 A toute variable est attribué un type qui définit : Ensemble des valeurs Ensemble des opérations Types simples : Entier Réel Caractère Booléen Types composés : définis à partir des types de base Tableaux Chaînes de caractères, … Structure générale d’un algorithme Types de base (2) 24 Types simples : Entier • Ensemble des entiers relatifs (e.g. 8, -10, 3, …) • Opérations : +, -, *, DIV (division entière) et MOD (reste de la division entière) Réel • Ensemble ℝ • Opérations : +, -, *, / • Deux formes de représentation o Usuelle : « a.b » (e.g. -4.6, 13.9, …) o Scientifique : « a Eb » (e.g. 345 = 3.45 E2 = 0.345 E3) Caractère • Lettre, chiffre ou caractère spécial (e.g. ‘a’, ‘b’, ‘3’, …) • Opérations : =, !=, <, <=, >, >= Booléen • ‘VRAI’ et ‘FAUX’ • Opérations : NON, ET, OU
  • 7. 7 Chapitre 2 25 Les instructions simples Instruction d’affectation 26 Permet de ranger une nouvelle valeur dans une variable Syntaxe : Identificateur_var ← <expression> Une constante ne peut jamais figurer à gauche d’une affectation Après une affectation, l’ancien contenu est perdu pour être substitué par le nouveau contenu Une action d’affectation doit se faire entre deux types compatibles Variable Constante Expression arithmétique Expression logique Instruction d’affectation Expressions arithmétiques 27 Syntaxe : <exp_arith> op_arith <exp_arith> + - / * Exemple : (Y/2) + x*3 L’ordre de priorité des opérateurs arithmétiques est : Signe négatif - Parenthèses () Puissance ^ Multiplication * et division / Addition + et soustraction - Instruction d’affectation Expressions logiques 28 Admettent ‘VRAI’ ou ‘FAUX’ comme résultat Peuvent utiliser des opérateurs relationnels (=, !=, <, <=, >, >=) ou des opérateurs logiques (NON, ET, OU) L’ordre de priorité est : NON > ET >= OU < <= = != Exemple : (x<6) ET (Y=0) → ‘VRAI’ si x<6 et Y=20 et ‘FAUX’ sinon
  • 8. 8 Instruction de lecture ou d’entrée 29 Permet d’affecter, à une variable, une donnée introduite à partir d’un périphérique d’entrée (e.g. clavier, fichier) Syntaxe : lire(nom_var1, nom_var2, …) Exemples : lire(A) : lit une valeur à partir du périphérique d’entrée et la range dans la case mémoire associée à A lire(X,Y) : lit deux valeurs la première pour X et la deuxième pour Y Instruction d’écriture ou de sortie 30 Permet d’afficher des résultats sur un périphérique de sortie (e.g écran) Ces résultats peuvent être : Chaîne de caractères délimitée par ‘‘’’ Valeur d’une variable dont le nom est spécifié Valeur d’une expression Syntaxe : écrire(liste d’expressions séparées par des virgules) Exemple : lire(somme) lire(nombre) écrire(‘‘La moyenne est : ’’, somme/nombre) Exercices 31 Exercice 1 : Ecrire un algorithme qui lit deux entiers X et Y et affiche leur valeur avant et après permutation. Exercice 2 : Ecrire un algorithme qui lit trois entiers X, Y et Z et qui calcule et affiche leur somme, leur produit et leur moyenne. Chapitre 3 32 Les structures conditionnelles
  • 9. 9 Introduction 33 Choisir entre deux ou plusieurs traitements selon la réalisation ou non d’une certaine condition Deux structures de traitement conditionnel : Simple : évaluer une condition (expression logique à valeur ‘VRAI’ ou ‘FAUX’) et effectuer le traitement relatif à la valeur de vérité trouvée A choix multiple : évaluer une expression qui n’est pas nécessairement à valeur booléenne (plus de deux valeurs) et selon la valeur trouvée, effectuer un traitement Structure conditionnelle simple Forme simple (1) 34 Syntaxe : Si Condition Alors Séquence d’action(s) Fin si Si Condition ? Séquence d’actions Suite du programme FAUX VRAI Structure conditionnelle simple Forme simple (2) 35 Exercice : Ecrire un algorithme qui permet de saisir un entier et d’afficher impossible d’être diviseur si cet entier est égal à 0. Structure conditionnelle simple Forme composée (1) 36 Syntaxe : Si Condition Alors Séquence d’actions 1 Sinon Séquence d’actions 2 Fin si Si Condition ? Séquence d’actions 1 Suite du programme VRAI Séquence d’actions 2 FAUX
  • 10. 10 Structure conditionnelle simple Forme composée (2) 37 Exercice : Ecrire un algorithme qui permet de saisir un entier et d’afficher « Pair » si cet entier est pair ou « Impair » si cet entier est impair. Structure conditionnelle simple Forme imbriquée (1) 38 Syntaxe : Si Condition 1 Alors Séquence d’actions 1 Sinon Si Condition 2 Alors Séquence d’actions 2 Sinon Si Condition N-1 Alors Séquence d’actions N-1 Sinon Séquence d’actions N Fin si Structure conditionnelle simple Forme imbriquée (2) 39 Exercice : Ecrire un algorithme qui permet de saisir deux entiers A et B puis teste si A>B ou A<B ou A=B. Structure conditionnelle à choix multiple (1) 40 Syntaxe : Selon <sélecteur> Faire <liste de valeurs 1> : <traitement 1> <liste de valeurs 2> : <traitement 2> . . <liste de valeurs N-1> : <traitement N-1> Sinon <traitement N> Fin selon Sélecteur : identificateur Traitement i : séquence d’actions Liste de valeurs i : constante ou intervalle de constantes de même type que sélecteur La partie Sinon est facultative et exécutée si aucune des valeurs n’est égale au sélecteur
  • 11. 11 Structure conditionnelle à choix multiple (2) 41 Exercice : Ecrire un algorithme qui permet de lire un numéro de jour de la semaine (compris entre 1 et 7) et d’afficher le nom du jour en toute lettre. Chapitre 4 42 Les structures itératives Structure « Pour … Faire … Fin pour » (1) Schéma d’exécution 43 Pour vc <= vf ? Traitement FAUX VRAI vc ← vi vc ← vi +1 Suite du programme Structure « Pour … Faire … Fin pour » (1) Syntaxe 44 Syntaxe : Pour vc de vi à vf Faire Traitement Fin pour vc : compteur de type entier vi : valeur initiale vf : valeur finale Traitement = action ou séquence d’action à répéter (vf-vi+1) fois Le nombre d’itérations est connu à l’avance Pas de la boucle : vc est incrémenté automatiquement par 1 à chaque exécution du corps de la boucle Pour vc reçoit une valeur initiale vi pour la première fois Exécution de la boucle finit lorsque vc atteint vf Remarques : ‐ Une boucle peut être exécutée une ou plusieurs fois ‐ Si le pas est différent de 1, il faut ajouter l’option (pas = constante)
  • 12. 12 Structure « Pour … Faire … Fin pour » (3) Exemples 45 Exemple 1 : Pour i de 1 à 5 Faire écrire(i*100) Fin pour Exemple 2 : Pour i de 5 à 1 (pas = -1) Faire écrire(i*100) Fin pour Structure « Pour … Faire … Fin pour » (4) Exercices 46 Exercice 1 : Ecrire un algorithme qui permet de calculer et d’afficher la somme des Nb premiers entiers naturels (Nb est saisi à partir de clavier). Exercice 2 : Ecrire un algorithme qui lit un entier n qu’on suppose positif puis affiche tous ses diviseurs. Structure « Répéter … Jusqu’à » (1) Schéma d’exécution et syntaxe 47 Répéter Condition ? Suite du programme FAUX VRAI Traitement Syntaxe : Répéter Traitement Jusqu’à (condition) Condition : condition d’arrêt et de sortie de la boucle Traitement = action ou ensemble d’actions à exécuter tant que la condition n’est pas vérifiée Si la condition est vérifiée, l’exécution du traitement s’arrête Le nombre de répétition n’est pas connu à l’avance Le traitement est exécuté au moins une fois quelque soit le résultat de la condition La condition doit être initialisée avant le début de la boucle et doit être modifiée à l’intérieur de la boucle Structure « Répéter … Jusqu’à » (2) Exemple et exercices 48 Exemple : i ← 1 Répéter écrire(i*100) i ← i + 1 Jusqu’à (i>5) Exercice 1 : Ecrire un algorithme qui permet de calculer la somme des Nb premiers entiers en utilisant la boucle « Répéter … Jusqu’à ». Exercice 2 : Ecrire un algorithme qui permet de calculer la factorielle d’un entier n donné (on suppose que n est un entier positif).
  • 13. 13 Structure « Tant que… Faire … Fin tant que » (1) Schéma d’exécution et syntaxe 49 Tant que Suite du programme FAUX VRAI Traitement Syntaxe : Tant que Condition Faire Traitement Fin tant que Condition : condition de maintien de la boucle Traitement = action ou ensemble d’actions à exécuter tant que la condition est vérifiée Le traitement est exécuté tant que la condition est vérifiée, sinon on sort de la boucle Si la condition n’est pas vraie dès la première exécution, la boucle ne sera jamais exécutée (0 fois) La condition doit être initialisée avant la boucle et modifiée à l’intérieur de la boucle Condition ? Structure « Tant que… Faire … Fin tant que » (2) Exemple et exercices 50 Exemple : i ← 1 Tant que (i<=5) Faire écrire(i*100) i ← i + 1 Fin tant que Exercice 1 : Ecrire un algorithme qui permet de calculer la somme des Nb premiers entiers en utilisant la boucle « Tant que … Faire … Fin tant que ». Exercice 2 : Ecrire un algorithme qui permet de calculer la factorielle d’un entier n donné (on suppose que n est un entier positif). Chapitre 5 51 Les sous-programmes Introduction 52 Décomposition des problèmes en modules (sous-problèmes de taille réduite) Plusieurs séquences d’instructions sont appelés plusieurs fois et depuis divers points du programme → isoler ces séquences dans un sous-programme Approche modulaire : réduit le nombre d’instructions redondantes moyennant l’ajout d’une séquence d’appel pour le module à différents endroits du programme → réduit la taille du programme Lisibilité : facilite la compréhension du programme Réutilisation des sous-programmes → Programme plus lisible et plus facile à maintenir ( à modifier éventuellement par la suite)
  • 14. 14 Définition d’un sous-programme 53 Définition : Un sous-programme est une portion de code analogue à un programme, déclarée dans un programme ou un sous- programme, et dont la partie instruction peut être exécutée plusieurs fois au cours du traitement du programme grâce à des appels. Deux formes de sous-programmes : Procédure : un sous-programme qui effectue un traitement Fonction : un sous-programme qui renvoie une valeur d’un seul type Procédures sans paramètres 54 Utilisées pour éviter à réécrire plusieurs fois une même suite d’instructions plusieurs fois dans le programme Syntaxe (déclaration) : Procédure nom_procédure Const Var Début Suite d’instructions Fin Syntaxe (appel) : Nom_procédure Exemple : Algorithme Principal Var x, y : entier Procédure affiche Début écrire(‘‘Donnée saisie !’’) Fin Début lire(x) affiche écrire(x, y) Fin Déclaration de la procédure Procédures avec paramètres 55 Exemple : Algorithme Principal Var x, y, a, b : entier Procédure permute(var u, v : entier) Var z : entier Début z ← u u ← v v ← z Fin Début permute(x, y) permute(a, b) Fin Paramètres formels 56 Une déclaration de procédure peut comporter après le nom de la procédure une liste de paramètres formels Syntaxe : Procédure nom_procédure(Liste de paramètres formels) Exemple : Procédure somme(a, b : entier, var c : entier) Début c ← a + b Fin
  • 15. 15 Paramètres effectifs (1) 57 Au cas où la déclaration d’une procédure comprend des paramètres formels, chaque appel de cette procédure doit comporter des paramètres effectifs compatibles Les deux listes de paramètres formels et effectifs aient le même nombre de paramètre Les paramètres formels et effectifs correspondants soient compatibles Syntaxe : nom_procédure(Liste de paramètres effectifs) Paramètres effectifs (2) 58 Exemple : Algorithme Principal Var t :réel x, y, z : entier Début Permute(x, y, z) Permute(x, t) Fin Interdit car le nombre de paramètres formels est différent de celui de paramètres effectifs Interdit car les paramètres formels et effectifs ne sont pas compatibles Passage de paramètres par valeur 59 Exemple : Algorithme Passage_valeur Var x : entier Procédure incrémenter(y : entier) Début écrire(y) y ← y + 1 écrire(y) Fin Début x ← 0 écrire(x) incrémenter(x) écrire(x) Fin Les paramètres effectifs sont lus à l’appel de la procédure puis leurs valeurs sont affectées à des variables temporaires locales à la procédure Passage de paramètres par variable 60 Exemple : Algorithme Passage_variable Var x : entier Procédure incrémenter(var y : entier) Début écrire(y) y ← y + 1 écrire(y) Fin Début x ← 0 écrire(x) incrémenter(x) écrire(x) Fin Les variables d’entrée de la procédure (paramètres effectifs) sont liés aux paramètres formels Toute action sur les paramètres formels s’exécutera sur les variables effectifs correspondants A la sortie de la procédure, les variables peuvent avoir leurs contenus changés
  • 16. 16 Passage de paramètres par valeur/variable Résumé 61 Le passage de paramètres par valeur est utilisé pour transmettre une valeur à la procédure Le passage de paramètres par variable est utilisé pour que la procédure puisse modifier la valeur d’une variable du programme appelant Fonctions (1) 62 La valeur retournée par la fonction dépend en général des paramètres formels (et des variables globales) Variables globales : déclarées à l’extérieur des sous-programmes Variables locales : déclarées à l’intérieur des sous-programmes Une même variable peut apparaître localement dans deux sous-programmes différents Exemple : Algorithme Principal Var x, y : entier Procédure proc(z : entier) Var t: réel Début … Fin Début … Fin Variables globales Variable locale Fonctions (2) 63 Le corps de la fonction doit contenir au moins une instruction de retour de la valeur de la fonction Expression doit être de même type que la fonction Un appel d’une fonction se fait dans une expression Syntaxe (déclaration) : Fonction nom_fonction(Liste des paramètres formels) : type du résultat retourné Var Début Corps de la fonction Fin Nom_fonction ← expression Fonctions (3) 64 Exemple 1 : Fonction max(x, y : entier) : entier Début Si (x>=y) Alors max ← x Sinon max ← y Fin si Fin
  • 17. 17 Fonctions (4) 65 Exemple 2 : Algorithme Max4réels Var x1, x2, x3, x4, y1, y2, y3 : réel Fonction max(x, y : réel) : réel Début Si (x>=y) Alors max ← x Sinon max ← y Fin si Fin Début lire(x1, x2, x3, x4) y1 ← max(x1, x2) y2 ← max(x3, x4) y3 ← max(y1, y2) écrire(‘‘Max est : ’’, y3) Fin