SlideShare une entreprise Scribd logo
1  sur  55
Initiation à
l’algorithmique
M. Abdoulaye DIENG Janvier 2017
Objectif général
Acquérir les bases méthodologiques de la résolution
d'un problème conduisant à la réalisation d'un
programme informatique
2
Objectifs opérationnels
• Connaître les étapes de résolution d’un problème
• Stocker et traiter des données simples
• Permettre à un programme de communiquer avec
l’extérieur
• Contrôler le flux d’exécution des instructions
• Traiter des données composites
• Définir et utiliser des procédures et des fonctions
3
Sommaire
1. Algorithme
2. Étapes de résolution d’un
problème
3. Identificateur
4. Variable
5. Types simples
6. Notion de constante
7. Opérateurs
8. Affectation
9. Entrées/sorties
10. Structures de contrôle
11. Tableaux
12. Sous-programmes
13. Enregistrements
4
Algorithme
présentation
• Algorithme :
– du nom du mathématicien persan Al-Khwârizmî
– façon de décrire dans ses moindres détails comment
procéder pour faire quelque chose
– suite finie d’opérations ou d’instructions que l’on
applique à un nombre fini de données pour résoudre
un problème.
• Ex : résolution d’un problème arithmétique, indication
d’un trajet, recette de cuisine, …
• En informatique, l’algorithme est écrit dans un langage
proche du langage humain appelé pseudo langage.
• L’algorithme n'est pas fait pour être exécuté directement
par une machine, mais il a l'avantage d'être traduit
facilement dans tous les langages de programmation.
problème
algorithme
réflexion
programme
traduction
Al-Khwârizmî
Mathématicien persan
(780 – 850)
5
Algorithme
exemple : "préparation du thé à la sénégalaise"
• Ingrédients : paquet de thé, pot de sucre, bouteille d’eau.
• Résultat : servir des verres de thé.
• Matériel : théière, verres à thé, plateau, fourneau avec du
charbon ardent
• Actions à réaliser
1. Mettre de l’eau dans la théière
2. Mettre du thé dans la théière
3. Poser la théière sur le fourneau
4. Tant que (pas d’ébullition)
laisser la théière sur le fourneau
5. Poser la théière sur le plateau
6. Mettre du sucre dans la théière
7. Appeler Moussa, le « mousseur » de thé
8. Si (le thé est très refroidi) alors
réchauffer le thé
9. Remplir les verres de thé
10. Servir les verres de thé
Sous-algo de Moussa
Moussa reçoit la théière et les verres à thé
posés sur le plateau
pour produire de la mousse dans les verres
7.1. Remplir un verre de thé au 3/4
7.2. Faire
Transvaser ce thé d’un verre à un autre
Tant que (Il y a un verre sans mousse)
6
Algorithme
structure(1/2)
• Un algorithme est composé d’une entête et d’un corps
• Dans l'entête :
– nom (obligatoire) de l'algo annoncé par « Programme »
– définition de types annoncée par « Type » ;
– déclaration de constantes annoncée par « Constante » ;
– déclaration de variables annoncée par « Variable » ;
– définitions de sous programmes.
• Le corps est composé :
– du mot-clé « Début » ;
– d'une suite d'instructions indentées ;
– du mot-clé « Fin ».
• Commentaires entre (* et *) : aide-mémoire aux personnes visualisant
le programme 7
Algorithme
structure (2/2)
Programme nomDuProgramme
Type
(* Définition de types *)
Constante
(* Déclaration de constantes *)
Variable
(* Déclaration de variables *)
Déclaration de sous-programmes
Début
(* instructions du programme *)
Fin
Entête du programme
Corps du programme
8
Résolution d’un problème
cinq étapes
• Étape 1 : compréhension de l’énoncé du problème.
• Étape 2 : décomposition du problème en sous-problèmes. (Étape
nécessaire que si le problème initial n’est pas simple)
• Étape 3 : spécification du problème ou de chaque sous-problème
• Étape 4 : algorithme logique du problème ou de chaque sous-
problème
• Étape 5 : algorithme de programmation du problème.
9
Résolution d’un problème
compréhension de l'énoncé
• Formulation ou reformulation du texte qui décrit le problème à
résoudre.
• Permet la compréhension du problème par soi-même : aucune
ambiguïté, complétude, cohérence ?
• Exemple ;-)
Après 3 heures d’attente, une dame appelle sa bonne qui est allait
au marché.
La dame : « Mais Fatou…, c’est quoi même ? »
La bonne : « Excuse-moi Madame, j’ai tout acheté sauf le total. Je
suis comme ça même, à la station d’essence Total. » 10
Résolution d’un problème
décomposition
• Cette étape est basée sur la
stratégie « diviser pour régner ».
• Commencer par décomposer le
problème initial en sous-problèmes,
puis chaque sous-problème en de
nouveaux sous-problèmes et ainsi
de suite jusqu’aux problèmes que
l’on peut résoudre à partir
d’opérations primitives.
• Question à se poser : quelles sont
les grandes étapes à réaliser ?
• NB : si le problème est simple,
l’étape de la décomposition n’est
pas nécessaire
Exemple sur l’algo du thé
1) Préparer la solution (eau + thé)
2) Bouillir la solution
3) Sucrer la solution
4) Produire de la mousse de thé
5) Servir le thé
11
Résolution d’un problème
spécification - principe
Pour chaque problème simple, déterminer :
1) données d’entrée : venant de l’extérieur et étant nécessaires au
problème ;
Exemple du sous-problème « préparer la solution (eau + thé) » :
eau et thé
2) données de sortie ou résultat attendu du problème par l’extérieur ;
Exemple du sous-problème « préparer la solution (eau + thé) » :
Théière remplie d’eau et de thé
3) traitement à faire :
formules, équations, fonctions, constantes et autres outils
nécessaires à l’obtention des données de sortie ou du résultat
attendu à partir des données d’entrée.
Exemple du sous-problème « préparer la solution (eau + thé) » :
matériel et actions indispensables à l’obtention de la théière remplie
d’eau et de thé 12
Résolution d’un problème
spécification - exemple
Enoncé du problème :
Algorithme qui affiche la somme de deux entiers donnés par l’utilisateur
• Données en entrée
– deux entiers (terme1 et terme2)
• Résultat attendu
– Afficher la somme des deux entiers (somme)
• Traitement
1) lire() pour mémoriser terme1 et terme2
2) La formule : somme = terme1 + terme2
3) ecrire() pour afficher somme
13
Résolution d’un problème
algorithme logique - principe
• Constitué uniquement des instructions (en pseudo-langage)
indispensables au traitement : pas d’entête ni instruction superflue
• Prévoir éventuellement un lexique des identificateurs de données
utilisées.
NB : avec des identificateurs explicites, le lexique est inutile
14
Résolution d’un problème
algorithme logique - exemple
• Rappel du traitement de l’exemple précédent
1) lire() pour mémoriser terme1 et terme2
2) La formule : somme = terme1 + terme2
3) ecrire() pour afficher somme
• Algorithme logique de l’exemple précédent
lire(terme1, terme2)
somme ← terme1 + terme2
ecrire(somme)
15
Résolution d’un problème
algorithme de programmation - principe
• Algorithme complet avec entête et instructions de présentation
• Algorithme qu’on pourra traduire en langage de programmation
16
Résolution d’un problème
algorithme de programmation - exemple
• Rappel de l’algorithme logique de l’exemple précédent
lire(terme1, terme2)
somme ← terme1 + terme2
ecrire(somme)
• Algorithme de programmation de l’exemple précédent
Programme calculerSomme
Variable
terme1, terme2, somme : Entier
Début
ecrire("Entrez deux valeurs entières SVP ")
lire(terme1, terme2)
somme ← terme1 + terme2
ecrire(terme1," + ",terme2, " = ",somme)
Fin
17
Notion d’identificateur
 Nom donné aux diverses composantes (types, constantes, variables
et sous-programmes) d'un programme.
 Formé de lettres alphabétiques et de chiffres ainsi que du
caractère _ (espace souligné ou underscore).
 Le 1er caractère ne doit pas être un chiffre.
 L’identificateur doit être suffisamment explicite.
 Les variables et les sous-programmes commencent toujours par une
minuscule.
 Les types commencent toujours par une majuscule.
 Les constantes ne sont composées que de majuscules.
 Lorsque l’identifiant contient plusieurs mots, on articule ces mots avec
des majuscules ou avec le caractère _.
 Exemples : note1, fin_de_fichier, finDeFichier, TVA, PI
 Contre-exemples : 4eme, x#y, note-1, note 1.
18
Notion de variable
• Variable : emplacement dans la mémoire RAM pour le
stockage d’une donnée
• Exples sur l’algo du thé : paquet de thé, pot de sucre,
bouteille d’eau, verres à thé, théière
• Caractéristiques d’une variable :
o valeur ou contenu « provisoire » ;
o type décrivant un ensemble de valeurs et un ensemble d'opérateurs
sur ces valeurs ;
o identificateur ou nom permettant l’accès (R or W) à la variable.
• NB : toute variable utilisée dans le corps du programme doit d’abord être
déclarée dans l’entête.
• Déclaration d’une ou de plusieurs variables :
Variable identificateur1[,identificateur2, …] : Type
v
a
l
e
u
r
identificateur
19
Type de données
 Un type de données désigne la nature du contenu d’une variable
 Exples sur l’algo du thé : paquet de thé, pot de sucre, bouteille d’eau
 Un type de données définie l’ensemble des :
 valeurs que peut prendre une variable ;
 actions que l’on peut effectuer sur une variable.
 Une fois qu’un type de données est associé à une variable,
 le contenu de cette variable doit être du même type ;
 cette variable ne peut plus changer de type.
 Il y a deux grandes catégories de type :
 types simples ;
 types composites. 20
Types simples
numériques
• Naturel : entiers non signés (sous-ensemble de IN)
• Entier : positifs et négatifs (sous-ensemble de Z)
• Reel : sous-ensemble de IR
Exemples : 0.1, -1.2 (attention utilisation du . à la place de la ,)
• Exemples de déclaration de variables numériques
Variable
age : Naturel
temperature : Entier
taille, poids : Reel
21
Types simples
booléen, caractère et chaîne de caractères
• Booleen : les variables ne prennent que les valeurs VRAI ou FAUX
• Caractere : lettre, chiffre ou symbole (visible ou non) entouré par de
simples quotes (apostrophes)
Exples de littéraux de type Caractere : 'a', '3', 'n'
• ChaineDeCaracteres : suite de caractères entourée de doubles
quotes (guillemets).
Exple de littéral de type ChaineDeCaracteres : "Bonjour Ali",
• Exemples
Variable theRefroidi : Booleen
initiale : Caractere
nom : ChaineDeCaracteres
22
Constante
• Constante : donnée qui ne change jamais durant tout le programme
• Une constante a un identificateur, une valeur et un type induit par la
valeur
• Syntaxe de la déclaration d’une constante :
Constante IDENTIFICATEUR = valeur
• Lorsque l’identifiant d’une constante contient plusieurs mots, on les
articule avec le caractère _.
• Exemple
Constante
TVA = 0.18
23
Opérateurs
présentation
• Opérateur : outil permettant de traiter des données
• Exemples sur l’algo du thé :
mélanger eau, thé et sucre; réchauffer le mélange
• Le type d’une donnée indique les opérations qu’elle peut subir
• Principaux opérateurs
– Arithmétiques (opérandes et résultat de type numérique)
– Relationnels (opérandes de tout type et résultat de type booléen)
– Logiques (opérandes et résultat de type booléen)
24
Opérateurs
arithmétiques
• Six opérateurs arithmétiques : addition (+), soustraction (-),
multiplication (x), division (/), division entière (DIV), reste de la
division entière ou modulo (MOD).
• Leurs opérandes peuvent être des entiers ou des réels hormis ceux
des deux derniers qui agissent uniquement sur des entiers.
• + et – sont aussi des opérateurs unaires (appliquer sur un seul
opérande)
Exemples : +2, -1.2
• Lorsque des opérandes de types différents sont utilisés, il y a
conversion implicite dans le type le plus fort.
Naturel < Entier < Reel
25
Opérateurs
relationnels
• Six opérateurs relationnels
< inférieur à
≤ inférieur ou égal à
> supérieur à
≥ supérieur ou égal à
= égal à
≠ différent de
• Le résultat d’une comparaison est un booléen
26
Opérateurs
logiques
• Trois opérateurs logiques : ET, OU, NON
• Tables de vérité
• L’évaluation est faite de gauche à droite et le processus est interrompu
dès que le résultat final est déterminé.
• NON est un opérateur unaire
A V V F F
B V F F V
A ET B V F F F
A OU B V V F V
NON A F F V V
Vraie si tous les opérandes sont vrais
Vraie si au moins l’un des opérandes est vrai
27
Opérateurs
priorité et associativité
• Lorsque plusieurs opérateurs sont utilisés dans la même instruction,
certains sont prioritaires par rapport à d'autres.
Exemple : -2 + 4 x 3 = 10
• Les parenthèses permettent de modifier l’ordre de priorité par défaut
Exemple : -(2 + 4) x 3 = -18
• Si les opérateurs ont la même priorité, l'associativité détermine leur
ordre d'exécution.
Exemple : -2 + 1 - 8 / 2 x 3 = -13
28
Opérateurs
Associativité et priorités par ordre décroissant
Catégorie Opérateurs Associativité
Référence ( ) [ ] . -> GD
Unaire +, -, NON DG
Arithmétique *, /, DIV, MOD GD
Arithmétique +, - GD
Relationnel <, ≤, >, ≥ GD
Relationnel =, ≠ GD
Logique ET GD
Logique OU GD
+
p
r
i
o
r
i
t
a
i
r
e
-
29
Affectation
• Avec le symbole ←, l’affectation a pour principal
but d’attribuer une valeur à une variable
• Sa syntaxe est :
IdentificateurVariable ← Valeur (ou expression)
• Exples sur l’algo du thé : mettre de l’eau dans la théière ; remplir les
verres de thé ; transvaser du thé d’un verre à un autre
• La signification de l’utilisation d’un identificateur de variable diffère
suivant sa position :
– à gauche du symbole d’affectation, l’identifiant nous permet de
définir ou de modifier la valeur de la variable
– à droite du symbole d’affectation, l’identifiant nous permet de
récupérer la valeur de la variable
tp1
30
Entrées/sorties
• Un algorithme peut avoir des interactions avec l'utilisateur.
• L’outil ecrire() permet d’afficher des chaînes de caractères et des
valeurs d’expressions
• Expression = combinaison de littéraux, de variables, d'opérateurs, et
de fonctions qui est évaluée pour produire une nouvelle valeur.
• Une chaîne et une expression sont concaténées par une virgule
• Syntaxe : ecrire("chaîne de caractères", expression)
• L’outil lire() invite un utilisateur à saisir une (ou +sieurs) donnée(s)
pour une mémorisation dans une (ou +sieurs) variable(s).
• Syntaxe : lire(nomVar1 [,nomVar2, …])
• Exemple
ecrire("Entrez votre âge, puis votre taille SVP ?")
lire(age, taille)
ecrire("Vous avez ",age," ans et vous mesurez ",taille,"
mètres")
App2
31
Structures de contrôle
présentation
• Par défaut, les instructions d’un programme sont exécutées d’une
manière séquentielle.
Exemple : 1. Mettre de l’eau dans la théière
2. Mettre du thé dans la théière
3. Poser la théière sur le fourneau
• Parfois, il est nécessaire qu’un traitement (une ou +sieurs instructions)
– ne soit pas systématiquement exécuté ;
Exemple : réchauffer le thé
– ou soit exécuté plusieurs fois.
Exemple : transvaser du thé d’un verre à un autre
D’où l’intérêt des structures de contrôle.
• Deux grands types de structures de contrôle :
– structures conditionnelles ou tests ;
– structures répétitives (ou itératives) ou boucles.
32
Structures de contrôle
structure conditionnelle stricte
• Structure utilisée si on souhaite exécuter un traitement seulement si
une condition est vraie et ne rien prévoir si cette condition est fausse.
Exemple : réchauffer thé
• Sa syntaxe :
Si (condition) Alors
traitement
FinSi
• Que le traitement soit exécuté ou non, le programme continue
normalement son exécution après l’instruction FinSi.
Exemple
Si (thé est très refroidi) Alors
réchauffer thé
FinSi
33
Structures de contrôle
structure conditionnelle alternative
• Structure permettant d'exécuter deux traitements différents en fonction
de la valeur booléenne d’une condition.
• Sa syntaxe :
Si (condition) alors
traitement_1
Sinon
traitement_2
FinSi
• Après l’exécution du traitement 1 ou bien du traitement 2, le
programme continue normalement son exécution juste après
l’instruction Finsi.
Exemple
Si (Il y a un bon film)
Alors
aller au cinéma
Sinon
aller à la plage
FinSi
34
Structures de contrôle
structure conditionnelle alternative multiple
• La structure conditionnelle alternative multiple permet d'exécuter
plusieurs traitements différents en fonction de valeurs booléennes de
plusieurs conditions.
• Sa syntaxe :
Si (condition_1) Alors
traitement_1
Sinon si (condition_2) Alors
traitement_2
…
Sinon
traitement_n
FinSi
• Tout « Sinon » indique que toute condition précédente est fausseApp3
Exemple
Si (Il y a un bon film) Alors
aller au cinéma
Sinon si (Il fait beau) Alors
aller à la plage
Sinon
regarder la télé
FinSi
35
Structures de contrôle
structure conditionnelle de choix
• Syntaxe :
Selon (expression) Faire
valeur1 : traitement1
valeur2 : traitement2
…
[Sinon : traitement par défaut]
FinSelon
Exemple
Selon (jour) Faire
1 : ecrire("On est lundi")
2 : ecrire("On est mardi")
3 : ecrire("On est mercredi")
4 : ecrire("On est jeudi")
5 : ecrire("On est vendredi")
6 : ecrire("On est samedi")
7 : ecrire("On est dimanche")
Sinon : ecrire(" Chiffre non valide")
FinSelon
• La structure conditionnelle de choix permet de choisir le traitement à
effectuer en fonction de la valeur d'une expression.
• Dès que l’expression est égale à une valeur, le traitement associé est
exécuté puis le programme continue normalement son exécution juste
après l’instruction FinSelon sans envisager les cas suivants.
36
Structures de contrôle
structure itérative « Tant que … Faire »
• La boucle Tant que … Faire permet de répéter un traitement tant
qu'une expression conditionnelle est vraie.
• Sa syntaxe :
Tant que (condition) faire
traitement
finTantQue
• La condition est testée avant la première exécution du traitement
• Ce traitement peut d’ailleurs ne jamais s’exécuter
• Le traitement doit faire évoluer une (ou des) variable(s) menant la
condition à la valeur FAUX pour éviter une boucle infinie
• Lorsque la condition devient fausse le programme continue
normalement son exécution après l’instruction qui suit le FinTantQue.
Exemple
Tant que (pas d’ébullition)
faire
laisser la théière sur le
réchaud
finTantQue
37
Structures de contrôle
structure itérative « Faire … Tant que »
• La boucle Faire … Tant que permet de répéter un traitement tant
qu'une expression conditionnelle est vraie.
• Sa syntaxe
Faire
traitement
Tant que (condition)
• Le traitement s’exécute au moins une fois
• Le traitement doit faire évoluer une (ou des) variable(s) menant la
condition à la valeur FAUX pour éviter une boucle infinie
• Lorsque la condition devient fausse, le programme continue
normalement son exécution après l’instruction Tant que (condition).
App4
Exemple
Faire
laisser la théière sur le
réchaud
TantQue (pas d’ébullition)
38
Structures de contrôle
structure itérative « Pour »
• La boucle Pour permet de répéter un traitement un nombre connu de fois.
• Syntaxe
Pour var_compteur ← val_initiale à val_finale [pas de p] faire
traitement
FinPour
• La variable compteur est de type entier ; elle est initialisée à la valeur initiale et
elle augmente de p à chaque répétition du traitement.
• p : entier positif ou négatif et dont la valeur par défaut est 1.
• Exemples : Afficher « Bonjour » 15 fois
Pour i ← 1 à 15 faire
ecrire ("Bonjour")
FinPour
• Lorsque la variable compteur vaut la valeur finale, le traitement est exécuté
une dernière fois puis le programme sort de la boucle.
App5
39
Pour i ← 15 à 1 faire pas de -1
ecrire ("Bonjour")
FinPour
Tableaux
présentation
• Tableau : variable composite permettant de désigner sous un seul
identifiant un regroupement de données de même type afin de les traiter
plus facilement.
• Les données sont mémorisées dans des cases contigües et repérées
par des indices (entiers naturels)
• Déclaration d’un tableau à une dimension :
nomTab : tableau [DIM] de TypeDesDonnées
DIM = dimension du tableau = nombre de cases du tableau
• Notation de l’accès (écriture ou lecture) à une case : nomTab[indice]
• L’indice varie de 0 à DIM – 1.
• Exemple : voyelles : tableau [6] de caractères
La case voyelles[1] contient la valeur'e'
données 'a' 'e' 'i' 'o' 'u' 'y'
indices 0 1 2 3 4 5
App6
40
0 1 2
Tableaux
tableaux à deux dimensions
• Tableau à 2 dimensions = tableau à 1 dimension
contenant des tableaux à 1 dimension.
• Chaque case est repérée par deux indices (conteneur et contenu)
• Déclaration :
nomTab : tableau[DIM1][DIM2] de TypeDesDonnées
DIM1 = dimension du tableau conteneur
DIM2 = dimension commune des tableaux contenus
• Notation de l’accès à une case : nomTab[indice1][indice2]
avec 0 ≤ indice1 < DIM1 et 0 ≤ indice2 < DIM2
• Exemple : droite dans l’espace
droite : tableau[2][3] de Reel
0 1
-3 6 8
0 1 2
4 -1 9
0 1 2
41
0 1
Ordonnée du 1er point de la droite = 6 = droite[0][1]
Côte du 2ème point de la droite = 9 = droite[1][2]
Tableaux
tableaux à deux dimensions (suite et fin)
• Un tableau à deux dimensions est représenté en mémoire comme un
tableau à une seule dimension par concaténation des tableaux stockés.
• Les données sont rangées suivant l’ordre obtenu en faisant varier le
dernier indice (relatif aux tableaux contenus) en premier.
-3 6 8
0,0 0,1 0,2
4 -1 9
1,0 1,1 1,2
App7
42
Sous-programmes
présentation
• Les sous-programmes permettent :
– d’implémenter la décomposition d’un problème en sous-problèmes ;
– de faciliter la lisibilité, le débogage et la réutilisabilité/factorisation ;
• Comme le programme principal, tout sous-programme possède un nom,
un corps, des instructions et éventuellement des variables.
• Mais un sous-programme n’est exécuté que lorsqu’il est appelé par un
autre (sous-)programme.
• Deux types de sous-programme :
 procédure qui fait une certaine tâche ;
 fonction qui renvoie, en plus, une valeur résultat.
• L'appel d'une procédure constitue une instruction en lui-même.
• L'appel d'une fonction est remplacé à l'exécution par la valeur retournée
par celle-ci. Il doit forcément se trouver dans un calcul, une affectation,
un affichage, un test, etc. 43
Sous-programmes
portée des variables
• Portée d’une variable = étendue de son accessibilité
• Toute variable déclarée dans un sous-programme est dite locale et
n’est accessible que dans ce sous-programme.
• Toute variable déclarée en dehors de tout sous-programme est dite
globale et est accessible de partout dans le programme principal.
• Les constantes ont généralement une portée globale
• Un même identificateur de variable peut être utilisé pour désigner des
variables locales de différents sous-programmes sans aucune
ambiguïté.
• En revanche, une variable globale n'existe qu'en un seul exemplaire
pour tous les sous-programmes.
• Lorsqu’une variable locale a le même identificateur qu'une variable
globale, cette dernière est localement masquée; dans ce sous-
programme la variable globale devient inaccessible. 44
Sous-programmes
paramètres
• Rappelons qu’un sous-programme n’est exécuté que
lorsqu’il est appelé par un autre (sous-)programme.
• La communication entre sous-programme appelé et (sous-)programme
appelant se fait par l'intermédiaire de variables locales au sous-
programme appelé que l’on nomme « paramètres formels ».
• Lors de l’appel, tout paramètre formel est associé à une variable ou
constante de même type nommée « paramètre effectif » du
(sous-)programme appelant.
• Il existe trois types d'association ou de passage de paramètre :
– passage de paramètres en entrée ;
– passage de paramètres en sortie ;
– passage de paramètres en entrée/sortie. 45
Sous-programmes
passage de paramètres (schéma comparatif)
Paramètre en entrée
Paramètre en sortie
Paramètre en entrée et sortie
Clé USB
CD vierge
CDROM
Sous programme
46
Sous-programmes
passage de paramètres en entrée
• Les instructions du sous-programme appelé ne peuvent pas modifier le
paramètre effectif.
• En fait, c'est uniquement la valeur du paramètre effectif qui est copiée
dans le paramètre formel
• C'est le seul passage de paramètre qui admet l'utilisation d'une
constante comme paramètre effectif.
• Exemple :
Le sous-programme ecrire() qui permet d'afficher des informations
admet des paramètres en entrée.
47
Sous-programmes
passage de paramètres en sortie
• Les instructions du sous-programme appelé affectent obligatoirement
une valeur au paramètre formel (valeur qui est donc aussi affectée au
paramètre effectif associé)
• Eviter d’utiliser des constantes comme paramètre effectif pour ce type
de passage de paramètres.
• La valeur que pouvait posséder le paramètre effectif n'est pas utilisée
par le sous-programme appelé.
• Exemple :
Le sous-programme lire() qui permet de mettre dans des variables
des valeurs entrées par l'utilisateur admet des paramètres en sortie
48
Sous-programmes
passage de paramètres en entrée/sortie
• Passage de paramètre qui combine les deux précédents
• A utiliser lorsque le sous-programme appelé doit utiliser puis modifier la
valeur du paramètre effectif.
• Comme pour le passage de paramètre en sortie, on ne peut pas utiliser
une constante comme paramètre effectif
• Exemple :
Le sous-programme permuter() qui permet de permuter les valeurs
de deux variables admet des paramètres en entrée/sortie
49
Sous-programmes
fonctions - présentation
• Une fonction est un sous-programme admettant 1 ou +sieurs
paramètre(s) et retournant un seul résultat (en Maths y = f(a,b,…))
• Une fonction possède un type qui est celui de la valeur retournée
• Le passage de paramètres est uniquement en entrée
• Un paramètre effectif peut être une variable, une constante mais aussi le
résultat d’une fonction
• Syntaxe de la définition d’une fonction :
Fonction nomFonction(nomParam1 : TypeParam1[,…]) :
TypeRslt Variable
Déclaration des éventuelles variables locales
Début
instruction(s)
retourne rslt
FinFonction
• Syntaxe de la déclaration d’une fonction dans un programme appelant :
Fonction nomFonction(TypeParam1[,…]) : TypeRslt 50
Sous-programmes
fonctions - exemple
(* Définition de la fonction *)
Fonction additionner(p_terme1 : Reel, p_terme2 : Reel ) :
Reel
Variable somme : Reel
Début
somme ← p_terme1 + p_terme2
retourne somme
FinFonction
(* Appel de la fonction *)
Programme test_additionner
Variable terme1, terme2 : Reel
Fonction additionner(Reel, Reel) : Reel
Début
ecrire("Entrez deux valeurs entières SVP ")
lire(terme1, terme2)
ecrire(terme1," + ",terme2, " = ",
additionner(terme1,terme2))App8
51
Sous-programmes
procédures - présentation
• Une procédure est un sous-programme qui ne retourne aucun résultat
• Par contre elle peut admettre des paramètres avec des passages :
– en entrée, préfixés par E (ou →)
– en sortie, préfixés par S (ou ←)
– en entrée/sortie, préfixés par E/S (ou ↔)
• Syntaxe de la définition d’une procédure :
Procédure nomProcedure([ modePassage
nomParam1:typeParam1[,…] ]) Variable
Déclaration d’éventuelles variables locales
Début
instruction(s)
finProcédure
• Syntaxe de la déclaration d’une procédure dans un programme appelant
Procédure nomProcedure([ modePassage typeParam1[,…]
]) 52
Sous-programmes
procédures - exemple
(* Définition de la procédure *)
Procédure somEtDif(E a : Reel, E b : Reel, S som : Reel, S dif : Reel)
Début
som ← a + b
dif ← a - b
finProcédure
(* Appel de la procédure *)
Programme test_somEtDif
Variable terme1, terme2, somme, difference : Reel
Procédure somEtDif(E Reel, E Reel, S Reel, S Reel)
Début
ecrire("Entrez deux valeurs entières SVP ")
lire(terme1, terme2)
somEtDif(terme1, terme2, somme, difference)
ecrire(terme1," + ",terme2, " = ", somme)
ecrire(terme1," - ",terme2, " = ", difference)
Fin App9&10
53
Enregistrements
présentation
• Enregistrement = variable composite qui permet de désigner sous
un seul identifiant un regroupement de données connexes de types
différents ou non, afin de les manipuler plus facilement
• L’usage d’un enregistrement est précédé de la déclaration d’un
nouveau type, structuré par des champs de types différents ou non
• Syntaxe de la déclaration d’un type structuré :
TYPE NomType=structure
nomChamp1 : typeChamp1
…
nomChampN : typeChampN
finStructure
• Exemple : médicament modélisé par nom, prix et quantité en stock
TYPE T_medicament=structure
nom : ChaineDeCaracteres
prix : Naturel
quantiteEnStock : Naturel
finStructure 54
Enregistrements
déclaration et accès
• Syntaxe de la déclaration d’un enregistrement :
Variable nomEnregistrement : NomType
• Syntaxe de l’accès à un champ d’un enregistrement :
nomEnregistrement.nomChamp
• Un champ s’utilise comme une variable simple
• Exemple
Variable e_medicament1 : T_medicament
(* Accès en écriture *)
e_medicament1.nom ← "Doliprane"
e_medicament1.prix ← 1024
e_medicament1.quantiteEnStock ←
e_medicament1.quantiteEnStock - 1
App11
55

Contenu connexe

Tendances

Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java HéritageNadaBenLatifa
 
Chapitre2 (les systèmes de numération)
Chapitre2 (les systèmes de numération)Chapitre2 (les systèmes de numération)
Chapitre2 (les systèmes de numération)killua zoldyck
 
Travaux dirigés 1: algorithme & structures de données
Travaux dirigés 1: algorithme & structures de donnéesTravaux dirigés 1: algorithme & structures de données
Travaux dirigés 1: algorithme & structures de donnéesInes Ouaz
 
cours algorithme et structure de données 1er année
cours algorithme et structure de données 1er annéecours algorithme et structure de données 1er année
cours algorithme et structure de données 1er annéeMissaoui Abdelbaki
 
gestion de magasin vente matériels informatique
gestion de magasin vente matériels informatiquegestion de magasin vente matériels informatique
gestion de magasin vente matériels informatiqueOussama Yoshiki
 
Cours complet excel détaillé
Cours complet excel détailléCours complet excel détaillé
Cours complet excel détailléPaul Kamga
 
FormationPython2019.pptx
FormationPython2019.pptxFormationPython2019.pptx
FormationPython2019.pptxLamissGhoul1
 
Diagramme de Séquence
Diagramme de SéquenceDiagramme de Séquence
Diagramme de SéquenceabdoMarocco
 
Support de cours ACCESS
Support de cours ACCESSSupport de cours ACCESS
Support de cours ACCESSChingongou ­
 
Examen principal + Correction ASD
Examen principal + Correction ASDExamen principal + Correction ASD
Examen principal + Correction ASDInes Ouaz
 
Analyse et conception des systèmes d’information
Analyse et conception des systèmes d’informationAnalyse et conception des systèmes d’information
Analyse et conception des systèmes d’informationMireille Blay-Fornarino
 
Système d'exploitation TC.pptx
Système d'exploitation TC.pptxSystème d'exploitation TC.pptx
Système d'exploitation TC.pptxNidAgency
 
Cours complet Base de donne Bac
Cours complet Base de donne Bac Cours complet Base de donne Bac
Cours complet Base de donne Bac Amri Ossama
 
Chapitre 2 complexité
Chapitre 2 complexitéChapitre 2 complexité
Chapitre 2 complexitéSana Aroussi
 

Tendances (20)

Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java Héritage
 
Algorithmes de jeux
Algorithmes de jeuxAlgorithmes de jeux
Algorithmes de jeux
 
Chapitre2 (les systèmes de numération)
Chapitre2 (les systèmes de numération)Chapitre2 (les systèmes de numération)
Chapitre2 (les systèmes de numération)
 
Travaux dirigés 1: algorithme & structures de données
Travaux dirigés 1: algorithme & structures de donnéesTravaux dirigés 1: algorithme & structures de données
Travaux dirigés 1: algorithme & structures de données
 
cours algorithme et structure de données 1er année
cours algorithme et structure de données 1er annéecours algorithme et structure de données 1er année
cours algorithme et structure de données 1er année
 
Récursivité
RécursivitéRécursivité
Récursivité
 
gestion de magasin vente matériels informatique
gestion de magasin vente matériels informatiquegestion de magasin vente matériels informatique
gestion de magasin vente matériels informatique
 
Cours complet excel détaillé
Cours complet excel détailléCours complet excel détaillé
Cours complet excel détaillé
 
FormationPython2019.pptx
FormationPython2019.pptxFormationPython2019.pptx
FormationPython2019.pptx
 
Diagramme de Séquence
Diagramme de SéquenceDiagramme de Séquence
Diagramme de Séquence
 
TABLEUR Excel
TABLEUR ExcelTABLEUR Excel
TABLEUR Excel
 
Support de cours ACCESS
Support de cours ACCESSSupport de cours ACCESS
Support de cours ACCESS
 
Examen principal + Correction ASD
Examen principal + Correction ASDExamen principal + Correction ASD
Examen principal + Correction ASD
 
Analyse et conception des systèmes d’information
Analyse et conception des systèmes d’informationAnalyse et conception des systèmes d’information
Analyse et conception des systèmes d’information
 
Système d'exploitation TC.pptx
Système d'exploitation TC.pptxSystème d'exploitation TC.pptx
Système d'exploitation TC.pptx
 
Introduction à Python
Introduction à PythonIntroduction à Python
Introduction à Python
 
Fascicule tp programmation c
Fascicule tp programmation cFascicule tp programmation c
Fascicule tp programmation c
 
Cours complet Base de donne Bac
Cours complet Base de donne Bac Cours complet Base de donne Bac
Cours complet Base de donne Bac
 
Python
PythonPython
Python
 
Chapitre 2 complexité
Chapitre 2 complexitéChapitre 2 complexité
Chapitre 2 complexité
 

En vedette

Internet et ses services
Internet et ses servicesInternet et ses services
Internet et ses servicesAbdoulaye Dieng
 
Démarches entrepreneuriales : se lancer avec succès
Démarches entrepreneuriales : se lancer avec succèsDémarches entrepreneuriales : se lancer avec succès
Démarches entrepreneuriales : se lancer avec succèsDr Samir A. ROUABHI
 
L'entretien téléphonique
L'entretien téléphoniqueL'entretien téléphonique
L'entretien téléphoniquekeyros
 
Web-Formation - TPM
Web-Formation - TPMWeb-Formation - TPM
Web-Formation - TPMXL Groupe
 
Fiche pratique : techniques et comportements au téléphone
Fiche pratique : techniques et comportements au téléphoneFiche pratique : techniques et comportements au téléphone
Fiche pratique : techniques et comportements au téléphoneJeremy ABDILLA
 
Top 10 des applications mobiles pour tenir vos bonnes résolutions 2014
Top 10 des applications mobiles pour tenir vos bonnes résolutions 2014Top 10 des applications mobiles pour tenir vos bonnes résolutions 2014
Top 10 des applications mobiles pour tenir vos bonnes résolutions 2014Vanksen
 
Comment réussir sa soutenance pfe
Comment réussir sa soutenance pfeComment réussir sa soutenance pfe
Comment réussir sa soutenance pfeMohamed Sahbi
 
Les fondamentaux du Leadership
Les fondamentaux du LeadershipLes fondamentaux du Leadership
Les fondamentaux du Leadershipkkassifred
 
Comment faire une présentation percutante
Comment faire une présentation percutanteComment faire une présentation percutante
Comment faire une présentation percutanteThomas Goubin
 
Les 12 attitudes à avoir en présentation
Les 12 attitudes à avoir en présentation Les 12 attitudes à avoir en présentation
Les 12 attitudes à avoir en présentation chila emmanuel
 
Les 10 astuces pour réussir sa présentation sur Powerpoint et Keynote
Les 10 astuces pour réussir sa présentation sur Powerpoint et KeynoteLes 10 astuces pour réussir sa présentation sur Powerpoint et Keynote
Les 10 astuces pour réussir sa présentation sur Powerpoint et Keynotechila emmanuel
 
13 astuces pour rater sa vie (développement personnel)
13 astuces pour rater sa vie (développement personnel)13 astuces pour rater sa vie (développement personnel)
13 astuces pour rater sa vie (développement personnel)SmartsCube
 
Communication orale: Préparer un appel téléphonique
Communication orale: Préparer un appel téléphoniqueCommunication orale: Préparer un appel téléphonique
Communication orale: Préparer un appel téléphoniqueMajida Antonios, M.Ed.
 
Lanzamiento educacion vial
Lanzamiento educacion vialLanzamiento educacion vial
Lanzamiento educacion vialmunicdg
 
Financement des associations et baisse des subventions forum 2013 ol.bs
Financement des associations et baisse des subventions forum 2013 ol.bsFinancement des associations et baisse des subventions forum 2013 ol.bs
Financement des associations et baisse des subventions forum 2013 ol.bsMarie Bluzet Proniewski
 
Platafromas vituales daniela[1]
Platafromas vituales daniela[1]Platafromas vituales daniela[1]
Platafromas vituales daniela[1]Daniela Martinez
 
Commerce Électronique - Enjeux et tendances B2B
Commerce Électronique - Enjeux et tendances B2BCommerce Électronique - Enjeux et tendances B2B
Commerce Électronique - Enjeux et tendances B2BTechSolCom
 

En vedette (20)

Internet et ses services
Internet et ses servicesInternet et ses services
Internet et ses services
 
Démarches entrepreneuriales : se lancer avec succès
Démarches entrepreneuriales : se lancer avec succèsDémarches entrepreneuriales : se lancer avec succès
Démarches entrepreneuriales : se lancer avec succès
 
L'entretien téléphonique
L'entretien téléphoniqueL'entretien téléphonique
L'entretien téléphonique
 
Web-Formation - TPM
Web-Formation - TPMWeb-Formation - TPM
Web-Formation - TPM
 
L'Innovation de Rupture
L'Innovation de RuptureL'Innovation de Rupture
L'Innovation de Rupture
 
Fiche pratique : techniques et comportements au téléphone
Fiche pratique : techniques et comportements au téléphoneFiche pratique : techniques et comportements au téléphone
Fiche pratique : techniques et comportements au téléphone
 
Top 10 des applications mobiles pour tenir vos bonnes résolutions 2014
Top 10 des applications mobiles pour tenir vos bonnes résolutions 2014Top 10 des applications mobiles pour tenir vos bonnes résolutions 2014
Top 10 des applications mobiles pour tenir vos bonnes résolutions 2014
 
Comment réussir sa soutenance pfe
Comment réussir sa soutenance pfeComment réussir sa soutenance pfe
Comment réussir sa soutenance pfe
 
Les fondamentaux du Leadership
Les fondamentaux du LeadershipLes fondamentaux du Leadership
Les fondamentaux du Leadership
 
Comment faire une présentation percutante
Comment faire une présentation percutanteComment faire une présentation percutante
Comment faire une présentation percutante
 
Les 12 attitudes à avoir en présentation
Les 12 attitudes à avoir en présentation Les 12 attitudes à avoir en présentation
Les 12 attitudes à avoir en présentation
 
Les 10 astuces pour réussir sa présentation sur Powerpoint et Keynote
Les 10 astuces pour réussir sa présentation sur Powerpoint et KeynoteLes 10 astuces pour réussir sa présentation sur Powerpoint et Keynote
Les 10 astuces pour réussir sa présentation sur Powerpoint et Keynote
 
13 astuces pour rater sa vie (développement personnel)
13 astuces pour rater sa vie (développement personnel)13 astuces pour rater sa vie (développement personnel)
13 astuces pour rater sa vie (développement personnel)
 
Communication orale: Préparer un appel téléphonique
Communication orale: Préparer un appel téléphoniqueCommunication orale: Préparer un appel téléphonique
Communication orale: Préparer un appel téléphonique
 
Cours 1 -_bases_d_informatique
Cours 1 -_bases_d_informatiqueCours 1 -_bases_d_informatique
Cours 1 -_bases_d_informatique
 
Lanzamiento educacion vial
Lanzamiento educacion vialLanzamiento educacion vial
Lanzamiento educacion vial
 
Turismo alternativo
Turismo alternativoTurismo alternativo
Turismo alternativo
 
Financement des associations et baisse des subventions forum 2013 ol.bs
Financement des associations et baisse des subventions forum 2013 ol.bsFinancement des associations et baisse des subventions forum 2013 ol.bs
Financement des associations et baisse des subventions forum 2013 ol.bs
 
Platafromas vituales daniela[1]
Platafromas vituales daniela[1]Platafromas vituales daniela[1]
Platafromas vituales daniela[1]
 
Commerce Électronique - Enjeux et tendances B2B
Commerce Électronique - Enjeux et tendances B2BCommerce Électronique - Enjeux et tendances B2B
Commerce Électronique - Enjeux et tendances B2B
 

Similaire à Initiation à l'algorithmique

Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmiqueAbdoulaye Dieng
 
Algorithmique de base.pdf
Algorithmique de base.pdfAlgorithmique de base.pdf
Algorithmique de base.pdfWafaa Ibrihich
 
Chapitre 2-Concepts de base de l'algorithme-2024.pdf
Chapitre 2-Concepts de base de l'algorithme-2024.pdfChapitre 2-Concepts de base de l'algorithme-2024.pdf
Chapitre 2-Concepts de base de l'algorithme-2024.pdfAdjimbawNDIAYE
 
M102-Algorithmique.pdf
M102-Algorithmique.pdfM102-Algorithmique.pdf
M102-Algorithmique.pdfBadrNAIM1
 
INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3PGambette
 
initialisation sur algorithme chapitre 1
initialisation sur algorithme chapitre 1initialisation sur algorithme chapitre 1
initialisation sur algorithme chapitre 1CheikhTidiane8
 
Les fondamentaux du langage C
Les fondamentaux du langage CLes fondamentaux du langage C
Les fondamentaux du langage CAbdoulaye Dieng
 
resume-theorique-m102-0311-6182a97340fbc.pdf
resume-theorique-m102-0311-6182a97340fbc.pdfresume-theorique-m102-0311-6182a97340fbc.pdf
resume-theorique-m102-0311-6182a97340fbc.pdfFootballLovers9
 
Cours - TC - Histoire Algorithmique.pdf
Cours - TC - Histoire Algorithmique.pdfCours - TC - Histoire Algorithmique.pdf
Cours - TC - Histoire Algorithmique.pdfadeljaouadi
 
Cours-ALGORITHMIQUE-03.pdf
Cours-ALGORITHMIQUE-03.pdfCours-ALGORITHMIQUE-03.pdf
Cours-ALGORITHMIQUE-03.pdfadeljaouadi
 
M1202 Algorithmique & programmation Java - Cours 1 2013
M1202 Algorithmique & programmation Java - Cours 1 2013M1202 Algorithmique & programmation Java - Cours 1 2013
M1202 Algorithmique & programmation Java - Cours 1 2013PGambette
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite completChahrawoods Dmz
 
Cours algorithmique et complexite
Cours algorithmique et complexite Cours algorithmique et complexite
Cours algorithmique et complexite Saddem Chikh
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite completChahrawoods Dmz
 
Généralités sur la notion d’Algorithme
Généralités sur la notion d’AlgorithmeGénéralités sur la notion d’Algorithme
Généralités sur la notion d’AlgorithmeInforMatica34
 

Similaire à Initiation à l'algorithmique (20)

Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmique
 
Algorithmique de base.pdf
Algorithmique de base.pdfAlgorithmique de base.pdf
Algorithmique de base.pdf
 
langage C++
langage C++langage C++
langage C++
 
Chapitre 2-Concepts de base de l'algorithme-2024.pdf
Chapitre 2-Concepts de base de l'algorithme-2024.pdfChapitre 2-Concepts de base de l'algorithme-2024.pdf
Chapitre 2-Concepts de base de l'algorithme-2024.pdf
 
M102-Algorithmique.pdf
M102-Algorithmique.pdfM102-Algorithmique.pdf
M102-Algorithmique.pdf
 
TAD (1).pptx
TAD (1).pptxTAD (1).pptx
TAD (1).pptx
 
INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3
 
initialisation sur algorithme chapitre 1
initialisation sur algorithme chapitre 1initialisation sur algorithme chapitre 1
initialisation sur algorithme chapitre 1
 
Les fondamentaux du langage C
Les fondamentaux du langage CLes fondamentaux du langage C
Les fondamentaux du langage C
 
resume-theorique-m102-0311-6182a97340fbc.pdf
resume-theorique-m102-0311-6182a97340fbc.pdfresume-theorique-m102-0311-6182a97340fbc.pdf
resume-theorique-m102-0311-6182a97340fbc.pdf
 
algo-imsi-2.pdf
algo-imsi-2.pdfalgo-imsi-2.pdf
algo-imsi-2.pdf
 
chapitre 5.pptx
chapitre 5.pptxchapitre 5.pptx
chapitre 5.pptx
 
Cours - TC - Histoire Algorithmique.pdf
Cours - TC - Histoire Algorithmique.pdfCours - TC - Histoire Algorithmique.pdf
Cours - TC - Histoire Algorithmique.pdf
 
Cours-ALGORITHMIQUE-03.pdf
Cours-ALGORITHMIQUE-03.pdfCours-ALGORITHMIQUE-03.pdf
Cours-ALGORITHMIQUE-03.pdf
 
M1202 Algorithmique & programmation Java - Cours 1 2013
M1202 Algorithmique & programmation Java - Cours 1 2013M1202 Algorithmique & programmation Java - Cours 1 2013
M1202 Algorithmique & programmation Java - Cours 1 2013
 
Tp1 matlab
Tp1 matlab Tp1 matlab
Tp1 matlab
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
 
Cours algorithmique et complexite
Cours algorithmique et complexite Cours algorithmique et complexite
Cours algorithmique et complexite
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
 
Généralités sur la notion d’Algorithme
Généralités sur la notion d’AlgorithmeGénéralités sur la notion d’Algorithme
Généralités sur la notion d’Algorithme
 

Plus de Abdoulaye Dieng

Fondamentaux du Référencement naturel
Fondamentaux du Référencement naturelFondamentaux du Référencement naturel
Fondamentaux du Référencement naturelAbdoulaye Dieng
 
Panorama des Technologies mobiles
Panorama des Technologies mobilesPanorama des Technologies mobiles
Panorama des Technologies mobilesAbdoulaye Dieng
 
Prise en main de WordPress
Prise en main de WordPressPrise en main de WordPress
Prise en main de WordPressAbdoulaye Dieng
 
Fondamentaux d’une API REST
Fondamentaux d’une API RESTFondamentaux d’une API REST
Fondamentaux d’une API RESTAbdoulaye Dieng
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScriptAbdoulaye Dieng
 
Introduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonIntroduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonAbdoulaye Dieng
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JSAbdoulaye Dieng
 
Requêtes HTTP synchrones et asynchrones
Requêtes HTTPsynchrones et asynchronesRequêtes HTTPsynchrones et asynchrones
Requêtes HTTP synchrones et asynchronesAbdoulaye Dieng
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScriptAbdoulaye Dieng
 
Introduction à AngularJS
Introduction à AngularJSIntroduction à AngularJS
Introduction à AngularJSAbdoulaye Dieng
 
Initiation à Express js
Initiation à Express jsInitiation à Express js
Initiation à Express jsAbdoulaye Dieng
 

Plus de Abdoulaye Dieng (20)

Introduction à React
Introduction à ReactIntroduction à React
Introduction à React
 
Fondamentaux du Référencement naturel
Fondamentaux du Référencement naturelFondamentaux du Référencement naturel
Fondamentaux du Référencement naturel
 
Introduction à Symfony
Introduction à SymfonyIntroduction à Symfony
Introduction à Symfony
 
Panorama des Technologies mobiles
Panorama des Technologies mobilesPanorama des Technologies mobiles
Panorama des Technologies mobiles
 
Prise en main de WordPress
Prise en main de WordPressPrise en main de WordPress
Prise en main de WordPress
 
Initiation à Bootstrap
Initiation à BootstrapInitiation à Bootstrap
Initiation à Bootstrap
 
Introduction à Laravel
Introduction à LaravelIntroduction à Laravel
Introduction à Laravel
 
Fondamentaux d’une API REST
Fondamentaux d’une API RESTFondamentaux d’une API REST
Fondamentaux d’une API REST
 
Introduction à Angular
Introduction à AngularIntroduction à Angular
Introduction à Angular
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScript
 
Introduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonIntroduction à l’orienté objet en Python
Introduction à l’orienté objet en Python
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JS
 
Introduction à Symfony
Introduction à SymfonyIntroduction à Symfony
Introduction à Symfony
 
Initiation à Bootstrap
Initiation à BootstrapInitiation à Bootstrap
Initiation à Bootstrap
 
Requêtes HTTP synchrones et asynchrones
Requêtes HTTPsynchrones et asynchronesRequêtes HTTPsynchrones et asynchrones
Requêtes HTTP synchrones et asynchrones
 
Introduction à jQuery
Introduction à jQueryIntroduction à jQuery
Introduction à jQuery
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScript
 
Introduction à HTML 5
Introduction à HTML 5Introduction à HTML 5
Introduction à HTML 5
 
Introduction à AngularJS
Introduction à AngularJSIntroduction à AngularJS
Introduction à AngularJS
 
Initiation à Express js
Initiation à Express jsInitiation à Express js
Initiation à Express js
 

Initiation à l'algorithmique

  • 2. Objectif général Acquérir les bases méthodologiques de la résolution d'un problème conduisant à la réalisation d'un programme informatique 2
  • 3. Objectifs opérationnels • Connaître les étapes de résolution d’un problème • Stocker et traiter des données simples • Permettre à un programme de communiquer avec l’extérieur • Contrôler le flux d’exécution des instructions • Traiter des données composites • Définir et utiliser des procédures et des fonctions 3
  • 4. Sommaire 1. Algorithme 2. Étapes de résolution d’un problème 3. Identificateur 4. Variable 5. Types simples 6. Notion de constante 7. Opérateurs 8. Affectation 9. Entrées/sorties 10. Structures de contrôle 11. Tableaux 12. Sous-programmes 13. Enregistrements 4
  • 5. Algorithme présentation • Algorithme : – du nom du mathématicien persan Al-Khwârizmî – façon de décrire dans ses moindres détails comment procéder pour faire quelque chose – suite finie d’opérations ou d’instructions que l’on applique à un nombre fini de données pour résoudre un problème. • Ex : résolution d’un problème arithmétique, indication d’un trajet, recette de cuisine, … • En informatique, l’algorithme est écrit dans un langage proche du langage humain appelé pseudo langage. • L’algorithme n'est pas fait pour être exécuté directement par une machine, mais il a l'avantage d'être traduit facilement dans tous les langages de programmation. problème algorithme réflexion programme traduction Al-Khwârizmî Mathématicien persan (780 – 850) 5
  • 6. Algorithme exemple : "préparation du thé à la sénégalaise" • Ingrédients : paquet de thé, pot de sucre, bouteille d’eau. • Résultat : servir des verres de thé. • Matériel : théière, verres à thé, plateau, fourneau avec du charbon ardent • Actions à réaliser 1. Mettre de l’eau dans la théière 2. Mettre du thé dans la théière 3. Poser la théière sur le fourneau 4. Tant que (pas d’ébullition) laisser la théière sur le fourneau 5. Poser la théière sur le plateau 6. Mettre du sucre dans la théière 7. Appeler Moussa, le « mousseur » de thé 8. Si (le thé est très refroidi) alors réchauffer le thé 9. Remplir les verres de thé 10. Servir les verres de thé Sous-algo de Moussa Moussa reçoit la théière et les verres à thé posés sur le plateau pour produire de la mousse dans les verres 7.1. Remplir un verre de thé au 3/4 7.2. Faire Transvaser ce thé d’un verre à un autre Tant que (Il y a un verre sans mousse) 6
  • 7. Algorithme structure(1/2) • Un algorithme est composé d’une entête et d’un corps • Dans l'entête : – nom (obligatoire) de l'algo annoncé par « Programme » – définition de types annoncée par « Type » ; – déclaration de constantes annoncée par « Constante » ; – déclaration de variables annoncée par « Variable » ; – définitions de sous programmes. • Le corps est composé : – du mot-clé « Début » ; – d'une suite d'instructions indentées ; – du mot-clé « Fin ». • Commentaires entre (* et *) : aide-mémoire aux personnes visualisant le programme 7
  • 8. Algorithme structure (2/2) Programme nomDuProgramme Type (* Définition de types *) Constante (* Déclaration de constantes *) Variable (* Déclaration de variables *) Déclaration de sous-programmes Début (* instructions du programme *) Fin Entête du programme Corps du programme 8
  • 9. Résolution d’un problème cinq étapes • Étape 1 : compréhension de l’énoncé du problème. • Étape 2 : décomposition du problème en sous-problèmes. (Étape nécessaire que si le problème initial n’est pas simple) • Étape 3 : spécification du problème ou de chaque sous-problème • Étape 4 : algorithme logique du problème ou de chaque sous- problème • Étape 5 : algorithme de programmation du problème. 9
  • 10. Résolution d’un problème compréhension de l'énoncé • Formulation ou reformulation du texte qui décrit le problème à résoudre. • Permet la compréhension du problème par soi-même : aucune ambiguïté, complétude, cohérence ? • Exemple ;-) Après 3 heures d’attente, une dame appelle sa bonne qui est allait au marché. La dame : « Mais Fatou…, c’est quoi même ? » La bonne : « Excuse-moi Madame, j’ai tout acheté sauf le total. Je suis comme ça même, à la station d’essence Total. » 10
  • 11. Résolution d’un problème décomposition • Cette étape est basée sur la stratégie « diviser pour régner ». • Commencer par décomposer le problème initial en sous-problèmes, puis chaque sous-problème en de nouveaux sous-problèmes et ainsi de suite jusqu’aux problèmes que l’on peut résoudre à partir d’opérations primitives. • Question à se poser : quelles sont les grandes étapes à réaliser ? • NB : si le problème est simple, l’étape de la décomposition n’est pas nécessaire Exemple sur l’algo du thé 1) Préparer la solution (eau + thé) 2) Bouillir la solution 3) Sucrer la solution 4) Produire de la mousse de thé 5) Servir le thé 11
  • 12. Résolution d’un problème spécification - principe Pour chaque problème simple, déterminer : 1) données d’entrée : venant de l’extérieur et étant nécessaires au problème ; Exemple du sous-problème « préparer la solution (eau + thé) » : eau et thé 2) données de sortie ou résultat attendu du problème par l’extérieur ; Exemple du sous-problème « préparer la solution (eau + thé) » : Théière remplie d’eau et de thé 3) traitement à faire : formules, équations, fonctions, constantes et autres outils nécessaires à l’obtention des données de sortie ou du résultat attendu à partir des données d’entrée. Exemple du sous-problème « préparer la solution (eau + thé) » : matériel et actions indispensables à l’obtention de la théière remplie d’eau et de thé 12
  • 13. Résolution d’un problème spécification - exemple Enoncé du problème : Algorithme qui affiche la somme de deux entiers donnés par l’utilisateur • Données en entrée – deux entiers (terme1 et terme2) • Résultat attendu – Afficher la somme des deux entiers (somme) • Traitement 1) lire() pour mémoriser terme1 et terme2 2) La formule : somme = terme1 + terme2 3) ecrire() pour afficher somme 13
  • 14. Résolution d’un problème algorithme logique - principe • Constitué uniquement des instructions (en pseudo-langage) indispensables au traitement : pas d’entête ni instruction superflue • Prévoir éventuellement un lexique des identificateurs de données utilisées. NB : avec des identificateurs explicites, le lexique est inutile 14
  • 15. Résolution d’un problème algorithme logique - exemple • Rappel du traitement de l’exemple précédent 1) lire() pour mémoriser terme1 et terme2 2) La formule : somme = terme1 + terme2 3) ecrire() pour afficher somme • Algorithme logique de l’exemple précédent lire(terme1, terme2) somme ← terme1 + terme2 ecrire(somme) 15
  • 16. Résolution d’un problème algorithme de programmation - principe • Algorithme complet avec entête et instructions de présentation • Algorithme qu’on pourra traduire en langage de programmation 16
  • 17. Résolution d’un problème algorithme de programmation - exemple • Rappel de l’algorithme logique de l’exemple précédent lire(terme1, terme2) somme ← terme1 + terme2 ecrire(somme) • Algorithme de programmation de l’exemple précédent Programme calculerSomme Variable terme1, terme2, somme : Entier Début ecrire("Entrez deux valeurs entières SVP ") lire(terme1, terme2) somme ← terme1 + terme2 ecrire(terme1," + ",terme2, " = ",somme) Fin 17
  • 18. Notion d’identificateur  Nom donné aux diverses composantes (types, constantes, variables et sous-programmes) d'un programme.  Formé de lettres alphabétiques et de chiffres ainsi que du caractère _ (espace souligné ou underscore).  Le 1er caractère ne doit pas être un chiffre.  L’identificateur doit être suffisamment explicite.  Les variables et les sous-programmes commencent toujours par une minuscule.  Les types commencent toujours par une majuscule.  Les constantes ne sont composées que de majuscules.  Lorsque l’identifiant contient plusieurs mots, on articule ces mots avec des majuscules ou avec le caractère _.  Exemples : note1, fin_de_fichier, finDeFichier, TVA, PI  Contre-exemples : 4eme, x#y, note-1, note 1. 18
  • 19. Notion de variable • Variable : emplacement dans la mémoire RAM pour le stockage d’une donnée • Exples sur l’algo du thé : paquet de thé, pot de sucre, bouteille d’eau, verres à thé, théière • Caractéristiques d’une variable : o valeur ou contenu « provisoire » ; o type décrivant un ensemble de valeurs et un ensemble d'opérateurs sur ces valeurs ; o identificateur ou nom permettant l’accès (R or W) à la variable. • NB : toute variable utilisée dans le corps du programme doit d’abord être déclarée dans l’entête. • Déclaration d’une ou de plusieurs variables : Variable identificateur1[,identificateur2, …] : Type v a l e u r identificateur 19
  • 20. Type de données  Un type de données désigne la nature du contenu d’une variable  Exples sur l’algo du thé : paquet de thé, pot de sucre, bouteille d’eau  Un type de données définie l’ensemble des :  valeurs que peut prendre une variable ;  actions que l’on peut effectuer sur une variable.  Une fois qu’un type de données est associé à une variable,  le contenu de cette variable doit être du même type ;  cette variable ne peut plus changer de type.  Il y a deux grandes catégories de type :  types simples ;  types composites. 20
  • 21. Types simples numériques • Naturel : entiers non signés (sous-ensemble de IN) • Entier : positifs et négatifs (sous-ensemble de Z) • Reel : sous-ensemble de IR Exemples : 0.1, -1.2 (attention utilisation du . à la place de la ,) • Exemples de déclaration de variables numériques Variable age : Naturel temperature : Entier taille, poids : Reel 21
  • 22. Types simples booléen, caractère et chaîne de caractères • Booleen : les variables ne prennent que les valeurs VRAI ou FAUX • Caractere : lettre, chiffre ou symbole (visible ou non) entouré par de simples quotes (apostrophes) Exples de littéraux de type Caractere : 'a', '3', 'n' • ChaineDeCaracteres : suite de caractères entourée de doubles quotes (guillemets). Exple de littéral de type ChaineDeCaracteres : "Bonjour Ali", • Exemples Variable theRefroidi : Booleen initiale : Caractere nom : ChaineDeCaracteres 22
  • 23. Constante • Constante : donnée qui ne change jamais durant tout le programme • Une constante a un identificateur, une valeur et un type induit par la valeur • Syntaxe de la déclaration d’une constante : Constante IDENTIFICATEUR = valeur • Lorsque l’identifiant d’une constante contient plusieurs mots, on les articule avec le caractère _. • Exemple Constante TVA = 0.18 23
  • 24. Opérateurs présentation • Opérateur : outil permettant de traiter des données • Exemples sur l’algo du thé : mélanger eau, thé et sucre; réchauffer le mélange • Le type d’une donnée indique les opérations qu’elle peut subir • Principaux opérateurs – Arithmétiques (opérandes et résultat de type numérique) – Relationnels (opérandes de tout type et résultat de type booléen) – Logiques (opérandes et résultat de type booléen) 24
  • 25. Opérateurs arithmétiques • Six opérateurs arithmétiques : addition (+), soustraction (-), multiplication (x), division (/), division entière (DIV), reste de la division entière ou modulo (MOD). • Leurs opérandes peuvent être des entiers ou des réels hormis ceux des deux derniers qui agissent uniquement sur des entiers. • + et – sont aussi des opérateurs unaires (appliquer sur un seul opérande) Exemples : +2, -1.2 • Lorsque des opérandes de types différents sont utilisés, il y a conversion implicite dans le type le plus fort. Naturel < Entier < Reel 25
  • 26. Opérateurs relationnels • Six opérateurs relationnels < inférieur à ≤ inférieur ou égal à > supérieur à ≥ supérieur ou égal à = égal à ≠ différent de • Le résultat d’une comparaison est un booléen 26
  • 27. Opérateurs logiques • Trois opérateurs logiques : ET, OU, NON • Tables de vérité • L’évaluation est faite de gauche à droite et le processus est interrompu dès que le résultat final est déterminé. • NON est un opérateur unaire A V V F F B V F F V A ET B V F F F A OU B V V F V NON A F F V V Vraie si tous les opérandes sont vrais Vraie si au moins l’un des opérandes est vrai 27
  • 28. Opérateurs priorité et associativité • Lorsque plusieurs opérateurs sont utilisés dans la même instruction, certains sont prioritaires par rapport à d'autres. Exemple : -2 + 4 x 3 = 10 • Les parenthèses permettent de modifier l’ordre de priorité par défaut Exemple : -(2 + 4) x 3 = -18 • Si les opérateurs ont la même priorité, l'associativité détermine leur ordre d'exécution. Exemple : -2 + 1 - 8 / 2 x 3 = -13 28
  • 29. Opérateurs Associativité et priorités par ordre décroissant Catégorie Opérateurs Associativité Référence ( ) [ ] . -> GD Unaire +, -, NON DG Arithmétique *, /, DIV, MOD GD Arithmétique +, - GD Relationnel <, ≤, >, ≥ GD Relationnel =, ≠ GD Logique ET GD Logique OU GD + p r i o r i t a i r e - 29
  • 30. Affectation • Avec le symbole ←, l’affectation a pour principal but d’attribuer une valeur à une variable • Sa syntaxe est : IdentificateurVariable ← Valeur (ou expression) • Exples sur l’algo du thé : mettre de l’eau dans la théière ; remplir les verres de thé ; transvaser du thé d’un verre à un autre • La signification de l’utilisation d’un identificateur de variable diffère suivant sa position : – à gauche du symbole d’affectation, l’identifiant nous permet de définir ou de modifier la valeur de la variable – à droite du symbole d’affectation, l’identifiant nous permet de récupérer la valeur de la variable tp1 30
  • 31. Entrées/sorties • Un algorithme peut avoir des interactions avec l'utilisateur. • L’outil ecrire() permet d’afficher des chaînes de caractères et des valeurs d’expressions • Expression = combinaison de littéraux, de variables, d'opérateurs, et de fonctions qui est évaluée pour produire une nouvelle valeur. • Une chaîne et une expression sont concaténées par une virgule • Syntaxe : ecrire("chaîne de caractères", expression) • L’outil lire() invite un utilisateur à saisir une (ou +sieurs) donnée(s) pour une mémorisation dans une (ou +sieurs) variable(s). • Syntaxe : lire(nomVar1 [,nomVar2, …]) • Exemple ecrire("Entrez votre âge, puis votre taille SVP ?") lire(age, taille) ecrire("Vous avez ",age," ans et vous mesurez ",taille," mètres") App2 31
  • 32. Structures de contrôle présentation • Par défaut, les instructions d’un programme sont exécutées d’une manière séquentielle. Exemple : 1. Mettre de l’eau dans la théière 2. Mettre du thé dans la théière 3. Poser la théière sur le fourneau • Parfois, il est nécessaire qu’un traitement (une ou +sieurs instructions) – ne soit pas systématiquement exécuté ; Exemple : réchauffer le thé – ou soit exécuté plusieurs fois. Exemple : transvaser du thé d’un verre à un autre D’où l’intérêt des structures de contrôle. • Deux grands types de structures de contrôle : – structures conditionnelles ou tests ; – structures répétitives (ou itératives) ou boucles. 32
  • 33. Structures de contrôle structure conditionnelle stricte • Structure utilisée si on souhaite exécuter un traitement seulement si une condition est vraie et ne rien prévoir si cette condition est fausse. Exemple : réchauffer thé • Sa syntaxe : Si (condition) Alors traitement FinSi • Que le traitement soit exécuté ou non, le programme continue normalement son exécution après l’instruction FinSi. Exemple Si (thé est très refroidi) Alors réchauffer thé FinSi 33
  • 34. Structures de contrôle structure conditionnelle alternative • Structure permettant d'exécuter deux traitements différents en fonction de la valeur booléenne d’une condition. • Sa syntaxe : Si (condition) alors traitement_1 Sinon traitement_2 FinSi • Après l’exécution du traitement 1 ou bien du traitement 2, le programme continue normalement son exécution juste après l’instruction Finsi. Exemple Si (Il y a un bon film) Alors aller au cinéma Sinon aller à la plage FinSi 34
  • 35. Structures de contrôle structure conditionnelle alternative multiple • La structure conditionnelle alternative multiple permet d'exécuter plusieurs traitements différents en fonction de valeurs booléennes de plusieurs conditions. • Sa syntaxe : Si (condition_1) Alors traitement_1 Sinon si (condition_2) Alors traitement_2 … Sinon traitement_n FinSi • Tout « Sinon » indique que toute condition précédente est fausseApp3 Exemple Si (Il y a un bon film) Alors aller au cinéma Sinon si (Il fait beau) Alors aller à la plage Sinon regarder la télé FinSi 35
  • 36. Structures de contrôle structure conditionnelle de choix • Syntaxe : Selon (expression) Faire valeur1 : traitement1 valeur2 : traitement2 … [Sinon : traitement par défaut] FinSelon Exemple Selon (jour) Faire 1 : ecrire("On est lundi") 2 : ecrire("On est mardi") 3 : ecrire("On est mercredi") 4 : ecrire("On est jeudi") 5 : ecrire("On est vendredi") 6 : ecrire("On est samedi") 7 : ecrire("On est dimanche") Sinon : ecrire(" Chiffre non valide") FinSelon • La structure conditionnelle de choix permet de choisir le traitement à effectuer en fonction de la valeur d'une expression. • Dès que l’expression est égale à une valeur, le traitement associé est exécuté puis le programme continue normalement son exécution juste après l’instruction FinSelon sans envisager les cas suivants. 36
  • 37. Structures de contrôle structure itérative « Tant que … Faire » • La boucle Tant que … Faire permet de répéter un traitement tant qu'une expression conditionnelle est vraie. • Sa syntaxe : Tant que (condition) faire traitement finTantQue • La condition est testée avant la première exécution du traitement • Ce traitement peut d’ailleurs ne jamais s’exécuter • Le traitement doit faire évoluer une (ou des) variable(s) menant la condition à la valeur FAUX pour éviter une boucle infinie • Lorsque la condition devient fausse le programme continue normalement son exécution après l’instruction qui suit le FinTantQue. Exemple Tant que (pas d’ébullition) faire laisser la théière sur le réchaud finTantQue 37
  • 38. Structures de contrôle structure itérative « Faire … Tant que » • La boucle Faire … Tant que permet de répéter un traitement tant qu'une expression conditionnelle est vraie. • Sa syntaxe Faire traitement Tant que (condition) • Le traitement s’exécute au moins une fois • Le traitement doit faire évoluer une (ou des) variable(s) menant la condition à la valeur FAUX pour éviter une boucle infinie • Lorsque la condition devient fausse, le programme continue normalement son exécution après l’instruction Tant que (condition). App4 Exemple Faire laisser la théière sur le réchaud TantQue (pas d’ébullition) 38
  • 39. Structures de contrôle structure itérative « Pour » • La boucle Pour permet de répéter un traitement un nombre connu de fois. • Syntaxe Pour var_compteur ← val_initiale à val_finale [pas de p] faire traitement FinPour • La variable compteur est de type entier ; elle est initialisée à la valeur initiale et elle augmente de p à chaque répétition du traitement. • p : entier positif ou négatif et dont la valeur par défaut est 1. • Exemples : Afficher « Bonjour » 15 fois Pour i ← 1 à 15 faire ecrire ("Bonjour") FinPour • Lorsque la variable compteur vaut la valeur finale, le traitement est exécuté une dernière fois puis le programme sort de la boucle. App5 39 Pour i ← 15 à 1 faire pas de -1 ecrire ("Bonjour") FinPour
  • 40. Tableaux présentation • Tableau : variable composite permettant de désigner sous un seul identifiant un regroupement de données de même type afin de les traiter plus facilement. • Les données sont mémorisées dans des cases contigües et repérées par des indices (entiers naturels) • Déclaration d’un tableau à une dimension : nomTab : tableau [DIM] de TypeDesDonnées DIM = dimension du tableau = nombre de cases du tableau • Notation de l’accès (écriture ou lecture) à une case : nomTab[indice] • L’indice varie de 0 à DIM – 1. • Exemple : voyelles : tableau [6] de caractères La case voyelles[1] contient la valeur'e' données 'a' 'e' 'i' 'o' 'u' 'y' indices 0 1 2 3 4 5 App6 40 0 1 2
  • 41. Tableaux tableaux à deux dimensions • Tableau à 2 dimensions = tableau à 1 dimension contenant des tableaux à 1 dimension. • Chaque case est repérée par deux indices (conteneur et contenu) • Déclaration : nomTab : tableau[DIM1][DIM2] de TypeDesDonnées DIM1 = dimension du tableau conteneur DIM2 = dimension commune des tableaux contenus • Notation de l’accès à une case : nomTab[indice1][indice2] avec 0 ≤ indice1 < DIM1 et 0 ≤ indice2 < DIM2 • Exemple : droite dans l’espace droite : tableau[2][3] de Reel 0 1 -3 6 8 0 1 2 4 -1 9 0 1 2 41 0 1 Ordonnée du 1er point de la droite = 6 = droite[0][1] Côte du 2ème point de la droite = 9 = droite[1][2]
  • 42. Tableaux tableaux à deux dimensions (suite et fin) • Un tableau à deux dimensions est représenté en mémoire comme un tableau à une seule dimension par concaténation des tableaux stockés. • Les données sont rangées suivant l’ordre obtenu en faisant varier le dernier indice (relatif aux tableaux contenus) en premier. -3 6 8 0,0 0,1 0,2 4 -1 9 1,0 1,1 1,2 App7 42
  • 43. Sous-programmes présentation • Les sous-programmes permettent : – d’implémenter la décomposition d’un problème en sous-problèmes ; – de faciliter la lisibilité, le débogage et la réutilisabilité/factorisation ; • Comme le programme principal, tout sous-programme possède un nom, un corps, des instructions et éventuellement des variables. • Mais un sous-programme n’est exécuté que lorsqu’il est appelé par un autre (sous-)programme. • Deux types de sous-programme :  procédure qui fait une certaine tâche ;  fonction qui renvoie, en plus, une valeur résultat. • L'appel d'une procédure constitue une instruction en lui-même. • L'appel d'une fonction est remplacé à l'exécution par la valeur retournée par celle-ci. Il doit forcément se trouver dans un calcul, une affectation, un affichage, un test, etc. 43
  • 44. Sous-programmes portée des variables • Portée d’une variable = étendue de son accessibilité • Toute variable déclarée dans un sous-programme est dite locale et n’est accessible que dans ce sous-programme. • Toute variable déclarée en dehors de tout sous-programme est dite globale et est accessible de partout dans le programme principal. • Les constantes ont généralement une portée globale • Un même identificateur de variable peut être utilisé pour désigner des variables locales de différents sous-programmes sans aucune ambiguïté. • En revanche, une variable globale n'existe qu'en un seul exemplaire pour tous les sous-programmes. • Lorsqu’une variable locale a le même identificateur qu'une variable globale, cette dernière est localement masquée; dans ce sous- programme la variable globale devient inaccessible. 44
  • 45. Sous-programmes paramètres • Rappelons qu’un sous-programme n’est exécuté que lorsqu’il est appelé par un autre (sous-)programme. • La communication entre sous-programme appelé et (sous-)programme appelant se fait par l'intermédiaire de variables locales au sous- programme appelé que l’on nomme « paramètres formels ». • Lors de l’appel, tout paramètre formel est associé à une variable ou constante de même type nommée « paramètre effectif » du (sous-)programme appelant. • Il existe trois types d'association ou de passage de paramètre : – passage de paramètres en entrée ; – passage de paramètres en sortie ; – passage de paramètres en entrée/sortie. 45
  • 46. Sous-programmes passage de paramètres (schéma comparatif) Paramètre en entrée Paramètre en sortie Paramètre en entrée et sortie Clé USB CD vierge CDROM Sous programme 46
  • 47. Sous-programmes passage de paramètres en entrée • Les instructions du sous-programme appelé ne peuvent pas modifier le paramètre effectif. • En fait, c'est uniquement la valeur du paramètre effectif qui est copiée dans le paramètre formel • C'est le seul passage de paramètre qui admet l'utilisation d'une constante comme paramètre effectif. • Exemple : Le sous-programme ecrire() qui permet d'afficher des informations admet des paramètres en entrée. 47
  • 48. Sous-programmes passage de paramètres en sortie • Les instructions du sous-programme appelé affectent obligatoirement une valeur au paramètre formel (valeur qui est donc aussi affectée au paramètre effectif associé) • Eviter d’utiliser des constantes comme paramètre effectif pour ce type de passage de paramètres. • La valeur que pouvait posséder le paramètre effectif n'est pas utilisée par le sous-programme appelé. • Exemple : Le sous-programme lire() qui permet de mettre dans des variables des valeurs entrées par l'utilisateur admet des paramètres en sortie 48
  • 49. Sous-programmes passage de paramètres en entrée/sortie • Passage de paramètre qui combine les deux précédents • A utiliser lorsque le sous-programme appelé doit utiliser puis modifier la valeur du paramètre effectif. • Comme pour le passage de paramètre en sortie, on ne peut pas utiliser une constante comme paramètre effectif • Exemple : Le sous-programme permuter() qui permet de permuter les valeurs de deux variables admet des paramètres en entrée/sortie 49
  • 50. Sous-programmes fonctions - présentation • Une fonction est un sous-programme admettant 1 ou +sieurs paramètre(s) et retournant un seul résultat (en Maths y = f(a,b,…)) • Une fonction possède un type qui est celui de la valeur retournée • Le passage de paramètres est uniquement en entrée • Un paramètre effectif peut être une variable, une constante mais aussi le résultat d’une fonction • Syntaxe de la définition d’une fonction : Fonction nomFonction(nomParam1 : TypeParam1[,…]) : TypeRslt Variable Déclaration des éventuelles variables locales Début instruction(s) retourne rslt FinFonction • Syntaxe de la déclaration d’une fonction dans un programme appelant : Fonction nomFonction(TypeParam1[,…]) : TypeRslt 50
  • 51. Sous-programmes fonctions - exemple (* Définition de la fonction *) Fonction additionner(p_terme1 : Reel, p_terme2 : Reel ) : Reel Variable somme : Reel Début somme ← p_terme1 + p_terme2 retourne somme FinFonction (* Appel de la fonction *) Programme test_additionner Variable terme1, terme2 : Reel Fonction additionner(Reel, Reel) : Reel Début ecrire("Entrez deux valeurs entières SVP ") lire(terme1, terme2) ecrire(terme1," + ",terme2, " = ", additionner(terme1,terme2))App8 51
  • 52. Sous-programmes procédures - présentation • Une procédure est un sous-programme qui ne retourne aucun résultat • Par contre elle peut admettre des paramètres avec des passages : – en entrée, préfixés par E (ou →) – en sortie, préfixés par S (ou ←) – en entrée/sortie, préfixés par E/S (ou ↔) • Syntaxe de la définition d’une procédure : Procédure nomProcedure([ modePassage nomParam1:typeParam1[,…] ]) Variable Déclaration d’éventuelles variables locales Début instruction(s) finProcédure • Syntaxe de la déclaration d’une procédure dans un programme appelant Procédure nomProcedure([ modePassage typeParam1[,…] ]) 52
  • 53. Sous-programmes procédures - exemple (* Définition de la procédure *) Procédure somEtDif(E a : Reel, E b : Reel, S som : Reel, S dif : Reel) Début som ← a + b dif ← a - b finProcédure (* Appel de la procédure *) Programme test_somEtDif Variable terme1, terme2, somme, difference : Reel Procédure somEtDif(E Reel, E Reel, S Reel, S Reel) Début ecrire("Entrez deux valeurs entières SVP ") lire(terme1, terme2) somEtDif(terme1, terme2, somme, difference) ecrire(terme1," + ",terme2, " = ", somme) ecrire(terme1," - ",terme2, " = ", difference) Fin App9&10 53
  • 54. Enregistrements présentation • Enregistrement = variable composite qui permet de désigner sous un seul identifiant un regroupement de données connexes de types différents ou non, afin de les manipuler plus facilement • L’usage d’un enregistrement est précédé de la déclaration d’un nouveau type, structuré par des champs de types différents ou non • Syntaxe de la déclaration d’un type structuré : TYPE NomType=structure nomChamp1 : typeChamp1 … nomChampN : typeChampN finStructure • Exemple : médicament modélisé par nom, prix et quantité en stock TYPE T_medicament=structure nom : ChaineDeCaracteres prix : Naturel quantiteEnStock : Naturel finStructure 54
  • 55. Enregistrements déclaration et accès • Syntaxe de la déclaration d’un enregistrement : Variable nomEnregistrement : NomType • Syntaxe de l’accès à un champ d’un enregistrement : nomEnregistrement.nomChamp • Un champ s’utilise comme une variable simple • Exemple Variable e_medicament1 : T_medicament (* Accès en écriture *) e_medicament1.nom ← "Doliprane" e_medicament1.prix ← 1024 e_medicament1.quantiteEnStock ← e_medicament1.quantiteEnStock - 1 App11 55