Algo 24-25
Algo 24-25
(+ 237) 651 36 96 96
B.P : 749 Yaoundé, Cameroun
Email : info@[Link]
[Link]
IDENTIFICATION
Intitulé : Introduction à l’algorithmique Cycle : ingénieur
Responsable : Branche : Tronc commun
Emmanuel MOUPOJOU [Link]@[Link] : 1
Autre intervenant : Semestre : 2
Cheikh KACFAH Crédits : 5
[Link]@[Link]
Objectifs du cours
Un algorithme est une suite finie d’instructions permettant de résoudre un problème donné.
L’ingénieur est appelé tout au long de sa vie à résoudre des problèmes, autrement dit à proposer
des algorithmes. Dans le cadre de ce cours, on va s’intéresser à des problèmes « simples » pour
lesquelles il faut proposer des algorithmes dans une représentation donnée. Cette représentation
est-elle que, plus tard, les algorithmes seront représentables dans un langage compréhensible par
les ordinateurs. L’objectif de ce cours est de vous donner les bases pour écrire vos premiers
algorithmes et donc des bases pour résoudre des problèmes simples et par conséquent des
fondations pour vos premiers programmes informatiques.
Prérequis nécessaires
Bases mathématiques (Logique, théorie des ensembles, etc.), Rigueur
COMPÉTENCES VISÉES
ORGANISATION DU COURS
Progression du cours
Section 3 : Variables 2h
Section 4 : Lecture et écriture TD lecture et écriture 4h
-
Section 5 : Structures conditionnelles TD Structures conditionnelles 6h
ÉVALUATION
• Le cours magistral se présente sous la forme de slides, avec une mise en forme importante,
plusieurs illustrations bien choisies pour expliciter les concepts présentés
• Les supports de cours sont remis après le cours aux étudiants
• Plusieurs séances d’exercices sont prévus et la participation très active de tous les étudiants
est fortement recommandée
MATÉRIELS DIDACTIQUES
Rien de particulier
LECTURE RECOMMANDÉE
• Cours magistrau
• 2 à 4h par semain
• TD/T
• 2 à 4h par semaine
P
ÉVALUATIONS
• 2 Contrôles continus - 30
• Travaux pratiques: 20
PROGRAMME
• Introduction à l’algorithmiqu
• Procédures et Fonction
• Les Boucle
• Les Tableau
• Tableaux Multidimensionnel
• Enregistrements
s
INTRODUCTION À
L’ALGORITHMIQUE
Emmanuel Moupojou
[Link]@[Link]
ALGORITHMIQUE, KESAKO ?
• Algorithmique:
• « Suite d’instructions, qui une fois exécutée correctement, conduit à un résultat donné
• Conséquences
• La manière étant systématique, un algorithme ne doit demander aucune initiative à celui ou celle qui
l’exécut
• Un algorithme doit donc contenir uniquement des instructions compréhensibles par celui qui devra
l’exécute
✅ Bonne nouvelle: un ordinateur
n’est capable d'aucune initiative
• Aucune ambiguïté n’est permise
2
e
QUELQUES EXEMPLES
D’ALGORITHMES
• Le calcul de la moyenne de n nombre
3
s
• Une certaine intuition: aucun memento ne vous dira comment obtenir le résultat
voulu. Là intervient une forme « d’intelligence » requise pour l’algorithmique…
Cependant, sachez que les ré exes, cela s’acquiert; l’intuition n’est nalement que de
l’expérience tellement répétée que le raisonnement, au départ laborieux, nit par
devenir « spontané
• Méthode et rigueur: chaque série d’instructions (qu’on croit justes), doit être
systématiquement testée en se mettant à la place de la machine qui va les exécuter, de
sorte à véri er si le résultat obtenu est bien celui souhaité. Ceci doit parfois être fait
« bêtement »
5
fi
»
fl
:
fi
fi
ALGORITHMIQUE ET
PROGRAMMATION
• Programmation: processus de conception et de construction d'un ensemble
d’instructions exécutables par un ordinateur pour accomplir un résultat spéci que. Ce
processus se fait à l’aide d’un langage de programmation
• Le langage de programmation est le biais par lequel votre algorithme sera exécutabl
fi
CONVENTION D’ÉCRITURE DES
ALGORITHMES
• Historiquement, on a eu des organigrammes
RÉFÉRENCES
Ce cours est inspiré des cours suivant
LA NOTION DE PROBLÈME E
ALGORITHMIQUE
Emmanuel Moupojou
[Link]@[Link]
C’EST QUOI LE PROBLÈME
AVEC « LE PROBLÈME »? 🤔
• Un algorithme décrit sans ambiguïté une méthode de résolution de problèm
• Il convient d'être capable de décrire le problème à résoudre i.e. le « quoi » avec le moins d'ambiguïté possible
Mispa a dix beignets. Elle en donne trois à Mispa a n beignets. Elle en donne p à Toko.
Toko. Combien reste-t-il de beignets à Combien reste-t-il de beignets à Mispa
Mispa
ALGORITHME ET PROBLÈMES
GÉNÉRAUX
• Les problèmes de gauche sont à solution unique, il suf t
de trouver la bonne répons
fi
ALGORITHME ET CLASSES DE
PROBLÈMES
• On dit des problèmes « paramétriques » qu’ils sont plus généraux que les problèmes
de gauche, et que les problèmes de gauche sont plus spéci ques que ceux
paramétriques
• On dit également que les problèmes spéci ques sont des instances des problèmes
paramétriques. Parfois on quali e ces derniers de classes de problèmes (pour bien
faire ressortir le fait que le problème admet plusieurs instances)
• Encadrer le logarithme d'un nombre réel positif x par deux nombres distants de δ
• Pour chaque niveau et pour chaque UE, trouver l’étudiant qui a la meilleure/
pire note
4
.
fi
?
fi
fi
.
SPÉCIFICATIONS D’UN
PROBLÈME
Tout problème peut se décrire par un ensemble d'éléments de ces quatre types
5
.
fi
fi
.
SPÉCIFICATIONS D’UN
PROBLÈME - NOTATION
Par ailleurs
• On peut décrire toute instance du problème par un ensemble de valeurs pour les
paramètres d'entrée ;
• Toutjeu de valeur données aux paramètres d'entrée et véri ant les pré-conditions doit
correspondre à une instance du problème
On utilisera la notation suivante
• Entrée x: <type_de_x>
• Pré-condition: <expression de la pré-condition>
• Sortie y: <type_de_y>
• Post-condition: <expression de la post-condition>
6
:
fi
SPÉCIFICATIONS D’UN
PROBLÈME - EXEMPLE I
Encadrer le logarithme d’un réel positif x par deux entiers consécutifs
• Entrée x: réel
• Pré-condition: x>0
• Sortie borneInferieure: entier
• Sortie borneSuperieure: entier
• Post-condition: borneInferieure <= ln(x) < borneSuperieure
• Post-condition: borneSuperieure - borneInferieure = 1
7
SPÉCIFICATIONS D’UN
PROBLÈME - EXEMPLE II
Mispa a n beignets. Elle en donne p à Toko. Combien reste-t-il de
beignets à Mispa
• Entrée n: entier
• Entrée p: entier
• Pré-condition: 0 <= p <= n
• Sortie r: entier
• Post-condition: r >= 0
• Post-condition: p + r = n
8
?
SPÉCIFICATIONS D’UN
PROBLÈME - EXEMPLE III
Trouver un étudiant du niveau i qui a la meilleure note dans l’UE u
• Entrée i: entier
• Entrée u: uniteDEnseignement
• Pré-condition: u est une UE du niveau i
⚠ uniteDEnseignement et etudiant
• Sortie e: etudiant sont des types de données inconnus
de l’ordinateur…
• Post-condition: e est un étudiant du niveau i
• Post-condition: Pour tout étudiant e’ (≠ e) du niveau i, la
note de e’ dans l’UE u est inférieure ou égale à celle de e
9
IMPORTANCE ET LIMITES DE
LA SPÉCIFICATION
• La spéci cation est destinée à la personne qui écrira l’algorithme et
non à celui qui l’exécute (ordinateur)
• La spéci cation
• Les post-conditions sont cruciales: elles permettent de véri er si l'algorithme fournit des
solutions correctes ou no
fi
:
fi
SPÉCIFICATIONS D’UN
PROBLÈME - EXERCICES
Proposer des spéci cations pour les problèmes suivants
• Trouver la norme d’un vecteur de coordonnées (a,b)
• Trouver le minimum de trois nombres a, b et c
• Trouver l’écart entre 2 températures t1 et t2
• Dire si oui ou non un habitant est concerné par les
perturbations liées aux travaux de la société
d’énergie
11
fi
DOSSIER ALGORITHMIQUE
C’est un document qui résume la démarche utilisée pour
proposer un algorithme. Il comporte 4 éléments
• Énoncé du problème: dire de façon concise en quoi consiste
le problèm
• Principe de résolution: dire comment sera résolu le
problèm
• Environnement: constituer d’éléments à manipuler pour
résoudre le problème pos
• Algorithme proprement dit
12
e
RÉFÉRENCES
LES VARIABLES EN
ALGORITHMIQUE
Emmanuel Moupojou
[Link]@[Link]
À QUOI ÇA SERT?
• Dans un programme, on stocke très souvent des valeurs.
Ces dernières peuvent provenir: des lectures des saisies
des utilisateurs, des données stockées sur disque, ou
encore des résultats intermédiaires / dé nitifs des calcul
fi
DÉCLARATION DE VARIABLES
• L’utilisation d’une variable est conditionnée par sa déclaration
• Déclarer une variable c’est comme créer un rangement et lui coller une étiquette. La déclaration est
préalable à toutes les autres instructions de l’algorithme
• Commence par une lettre et ne comporte que des lettres, chiffres ou des underscores
• Avec le nom de la variable, il faut préciser son type, penser à ce que cela implique, manipulations
comprises
3
fl
n
• Booléen: stocke uniquement les valeurs logiques VRAI (TRUE) ou FAUX (FALSE
Ces types élémentaires sont très souvent augmentés de types complexes tels que les
tableaux, les listes, les chiers
Par la suite on pourra créer nos propres types en fonction des problèmes à résoudre
4
u
fi
:
L’AFFECTATION
Deux utilisations sont possibles pour une variabl
• Lui affecter (i.e. lui attribuer) une valeur. Ceci se rapproche de mettre un contenu/
objet dans notre emplacement étiquet
Notation
• nomVariable = valeur
6
:
L’AFFECTATION (SUITE)
ALGORITHME Test_Affectation
VAR n : entier;
📝 Structure d’un algorithm
DEBUT 📝 Exécution d’un algorithme
FIN
7
)
L’AFFECTATION (SUITE)
ALGORITHME Test_Affectation
VAR n : entier;
DEBUT
6. message = message / 2 // Ceci ne va pas conserver dans message la moitié du message précédent…
FIN
8
)
L’AFFECTATION (FIN)
ALGORITHME Test_Affectation2
VAR b : booléen;
DEBUT
1. mispa = "Dipanda" ;
2. shanks = "Shanks";
3. message = shanks + " est un personnage connu."; // message contient "Shanks est un personnage connu."
FIN
9
!
⚠ ALERTE CONFUSION
• Une variable (x par exemple) contient à un moment donné une et une seule
valeur précis
fi
n
RÉFÉRENCES
LECTURE ET ÉCRITURE
Emmanuel Moupojou
[Link]@[Link]
CONTEXTE
• Au chapitre sur la notion de problème en algorithmique, nous avons présenté la
notion de spéci cations d’un problème. Cela nous a permis d’introduire les
paramètres (d’entrée et de sortie) du problèm
• Dans un second temps, les algorithmes effectuent des traitements dont les
résultats sont stockés dans des variable
2
fi
s
LECTURE? ÉCRITURE?
• Le problème posé précédemment est donc celui de la
communication entre le monde extérieur (à l’algorithme) et
l’algorithm
• Qui: l’algorithme (ou le programme) | Quoi: des données fournies par l'utilisateu
• ⚠ Ce n’est donc pas l’utilisateur qui lit. Le référentiel ici c’est le programme. L’utilisateur
écrit et le programme lit. On parle donc de lecture, sous entendu du programme
• ⚠ Ce n’est donc pas l’utilisateur qui écrit. Le référentiel ici reste le programme. Le
programme écrit et l’utilisateur lit. On parle donc d’écriture, sous entendu du
programme
4
?
NOTATION ET ILLUSTRATION
ALGORITHME Lecture_Ecriture
DEBUT
3. Lire(r) ;
4. rSquared = r x r ;
7. Fin
5
RÉFÉRENCES
STRUCTURES
CONDITIONNELLES
Emmanuel Moupojou
[Link]@[Link]
CONTEXTE
• Jusqu’ici, tous les algorithmes que nous avons écrits présentent une structure séquentielle simple
dans laquelle on exécute systématiquement toutes les instructions, les unes après les autre
1. ALGORITHME Racine_Carree
2
CONTEXTE (SUITE)
• Par exemple, dans le cas du problème du calcul de la racine carrée, les
instructions aux lignes 5 et 6 ne sont valables que pour des réels positif
SYNTAXE
• On distingue deux formes possibles pour une expression conditionnelle (a.k.a
test ou encore alternative)
• Condition désigne une valeur booléenne (atomique) ou une expression complexe combinant
plusieurs booléens à l’aide d’opérateurs logiques (ET, OU, NON). Par dé nition, sa valeur est soit
VRAI, soit FAUX
• Les blocs d’instructions peuvent contenir des expressions conditionnelles. Autrement dit, les
structures conditionnelles peuvent être imbriquées.
4
t
fi
EXEMPLE I
1. ALGORITHME Racine_Carree2
3. DEBUT
5. Lire(x) ;
6. SI x >= 0 Alors
7. squareRoot = x ^ 0.5 ;
9. SINON
10. Écrire("La racine carrée est dé nie uniquement pour les réels positifs") ;
11. FINSI
12. FIN
5
fi
EXEMPLE 2
1. ALGORITHME parite
2. VAR n: entier ;
3. DEBUT
5. Lire(n) ;
6. SI (n % 2) == 0 Alors
8. SINON
10. FINSI
11. FIN
6
CONDITION
• La condition peut être
• Atomiqu
7
e
CONDITION / COMPARAISON
• Le schéma d’une comparaison est : valeur1 opérateur valeur2. L’opérateur peut êtr
• égal à… ==
⚠ val1 op1 val2 op2 val3
• différent de… != (parfois <> n’est pas valable…
8
e
• Dans ces cas vous n’avez pas d’autres choix que de combiner plusieurs expressions. Ces combinaisons
se font à l’aide d’opérateurs logiques (parfois on y ajoute XOR)
• ET (AND). Pour que condition1 ET condition2 soit VRAI, il faut que condition1 = condition2
= VRAI. Si l’une des deux conditions vaut FAUX alors condition1 ET condition2 vaut FAUX
• OU (OR). Pour que condition1 OU condition2 vaille VRAI, il faut qu’au moins l’une des
conditions vaille VRAI. Si les deux conditions valent FAUX alors condition1 OU condition2 vaut
FAUX
• NON (NOT). Contrairement aux opérateurs précédents, cet opérateur ne nécessite qu’un
opérande. Pour que NON condition vaille VRAI, il faut que condition vaille FAUX. Ainsi le NON
« inverse la condition ».
9
.
10
⚠ PRÉCISIONS INUTILES
11
…
BOUCLES (STRUCTURES
ITÉRATIVES)
Emmanuel Moupojou
[Link]@[Link]
CONTEXTE
• Jusqu’ici nous avons écrit des algorithmes dans lesquels chaque instruction est
exécutée au plus une fois
1. soit pas du tout si elle est exclue par « l’échec » du test d’une structure
conditionnell
2. soit exactement une fois si elle est en dehors de toute condition ou si elle
est incluse par « la réussite » du test d’une structure conditionnell
• Or, il peut arriver que nous ayons besoin d’exécuter un bloc d’instructions un certain
nombre de fois ou aussi longtemps qu’une condition demeure vraie. C’est dans ce
cas que les structures itératives (ou boucles) prennent toute leur importance
2
e
BOUCLES : DEFINITION
• Une boucle est une séquence d'instructions qui bien que spéci ée une seule
fois, pourra être exécutée plusieurs fois de suite. Le code "à l'intérieur" de la
boucle, c'est-à-dire le corps de la boucle, sera exécuté un certain nombre de
fois, ou une fois pour chaque élément d'une collection, ou aussi longtemps
qu’une certaine condition demeure vraie, ou indé niment
• Note: Une boucle in nie est une suite d’instructions qui s’exécute
continuellement (une fois entrer dans la boucle, on n’en ressort pas
fi
)
TYPES DE BOUCLES
• Les deux principales boucles en algorithmique sont:
4
)
fi
fi
fi
e
Instructions_avant_boucle
TANTQUE condition FAIRE
Instructions_de_boucle
FINTANTQUE
Instructions_après_boucle
6
BOUCLE TANT QUE: EXEMPLE
1. ALGORITHME NombreC
2. VAR n, nombre : entier ;
3. DEBUT
4. Lire(n) ;
5. nombre = 1 ;
6. TANTQUE n >= 10 FAIRE
7. nombre = nombre + 1 ;
8. n = n / 10 ;
9. FINTANTQUE
10. Écrire(nombre);
Que fait cet algorithme? 🤔
11. FIN
7
BOUCLE POUR
• Pour (for): permet de répéter une instruction un nombre donné
de fois
Instructions_de_boucle
FinPour
Instructions_après_boucle
9
fi
fi
fi
BOUCLE POUR: EXEMPLE
1. ALGORITHME SommeDeXXX
2. VAR n, i, s : entier ;
3. DEBUT
4. s = 0;
5. Lire(n) ;
7. s=s+i*i;
8. FINPOUR
10
POUR VS TANT QUE
• Tant Que est employée dans les situations où l’on doit procéder à un traitement
systématique sur les éléments d’un ensemble dont on ne connaît pas d’avance la
quantité, comme par exemple
• la gestion des tours d’un jeu (tant que la partie n’est pas nie, on recommence
• Pour est utilisée dans les situations où l’on doit procéder à un traitement
systématique sur les éléments d’un ensemble dont on connaît d’avance la quantité
• On peut toujours traduire une boucle Pour en boucle Tant Que. L’inverse est faux
11
e
fi
.
BOUCLES IMBRIQUÉES ET +
⚠ PRÉCISIONS INUTILES
13
fi
…
RÉFÉRENCES
TABLEAUX
Emmanuel Moupojou
[Link]@[Link]
CONTEXTE: WHY ARRAYS?
• Rendu à ce stade, toutes les variables que nous manipulons sont (de types)
atomiques: entier, réel, chaîne de caractères, boolée
• Ainsi, si nous savons par exemple que nous allons manipuler 60 notes de
mathématiques et 60 notes de physique, il nous faut déclarer et manipuler 60
variables pour les notes de maths et 60 autres pour celles de physique. Cela est
fastidieux !!
• Pour manipuler ces ensembles de variables de même type, on peut faire appel à
des « collections » qui nous permettront de signi er des éléments tels que:
L’ensemble des notes de mathématiques, la 12ème note de mathématiques ou
encore le nombre de notes de physiques, etc. Tout cela sans avoir à déclarer
(explicitement) des dizaines voire des milliers de variables…
2
!
fi
n
DÉFINITION
• Un tableau est un ensemble de valeurs de même type; chaque valeur
étant repérée par un indice
• Pour la personne qui écrit l’algorithme, le tableau est donc comme une
seule (macro-) variabl
3
e
NOTATION
• Déclaratio
• monTableau[i]
INDICE DE TABLEAU
• L’indice d’un tableau à n élément
5
s
EXEMPLE 1
1. VAR i : entier ; moy : réel;
3. DEBUT
5. Lire(notes[i]);
6. FINPOUR
8. moy = 0.0 ;
11. FINPOUR
14. FIN
6
EXEMPLE 1I
1. VAR compteur, i : entier ;
4. DEBUT
6. Lire (seuil);
7. compteur = 0 ;
8. //Initialisation de notes
12. FINSI
13. FINPOUR
14. Écrire (“Il y a “ + compteur + “ élève(s) qui ont une note supérieure ou égale à “+ seuil);
15. FIN
7
⚠ PRÉCISIONS INUTILES
• Toujours s’assurer que
8
u
RÉFÉRENCES
TABLEAUX
MULTIDIMENSIONNELS
Emmanuel Moupojou
[Link]@[Link]
CONTEXTE
Imaginez que vous deviez écrire un programme dans lequel l’ordinateur joue au Songo (a.k.a Awalé)
contre un humain… Vous êtes obligé de savoir à tout moment le nombre de « billes » que contient
chaque trou
Vous pouvez numéroter les trous de 1 à n et donc modéliser le « tableau » de jeu par un tableau de
taille n. Et donc chaque fois que les joueurs font des actions vous devez faire les calculs (i.e. être cohérent
avec votre numérotation - logique) qu’il faut pour savoir dans quel trou ils ont pris ou ajouter des billes
4
2 3
1
1 3
Vous êtes libre de numéroter
comme vous le voulez. De la
façon rouge, ou grise ou …
2 4
2
.
CONTEXTE (SUITE)
Si pour le Songo faire correspondre la numérotation aux possibilités de déplacements des billes est
plutôt aisé, pour le cas du damier (a.k.a jeu de dames) cela est déjà plus dif cile. La gure ci-dessous
nous montre les possibilités de déplacements d’un pion blanc en position (i,j). Elles sont au nombre de
4 et toutes de la forme (i±1, j±1). Il faut donc déjà être capable de retrouver ces 4 positions à partir
de la position du pion en question (ici le pion est en position numéro 17). Imaginer ce qui cela dévient
lorsque le pion est un chef et où les possibilités sont de la forme (i±k, j±k)
Maintenant imaginez ce travail pour le jeu d'échec dont les déplacements sont plus complexes/divers…
1 2 3 4 5
Le pion blanc en position (i, j) peut se
6 déplacer suivant les positions (i-1, j-1), (i-1,
11 13
j+1), (i+1, j-1) et (i+1, j+1).
⚠ Les nombres oranges sont une proposition
i de numérotation
21 23
fi
…
fi
DÉFINITION
• Les tableaux multidimensionnels ont été introduits pour éviter de faire
des numérotations qui peuvent vite devenir dif cile à gérer
• monTableau[i1][i2]…[in]
5
n
EXEMPLE 1: MOYENNE I
1. Var nCols, nLignes, i, j : entier ; Var moyenne: réel;
2. Var temperatures : tableau de [50] [100] réel ;
3. Début
4. nLignes = dimension(temperatures, 1) ;
5. nCols = dimension(temperatures, 2) ;
6. moyenne = 0.0;
7. Pour i allant de 0 à nLignes - 1 par pas de 1 faire
8. Pour j allant de 0 à nCols - 1 par pas de 1 faire
9. Écrire(“Entrer la température de la zone (“ + i + “, “ + j + “)“ );
10. Lire(temperatures[i][j]);
11. moyenne = moyenne + temperatures[i][j] ;
12. FinPour // j
13. FinPour // i
14. moyenne = moyenne / (nCols x nLignes) ;
15. Écrire (“La moyenne de vos températures est de: “ + moyenne) ;
16. Fin
6
EXEMPLE 1: MOYENNE II
• dimension(T, d) est une fonction prédé nie qui retourne la taille du tableau T
suivant la dimension d
9
u
RÉFÉRENCES
PROCÉDURES ET FONCTIONS
Emmanuel Moupojou
[Link]@[Link]
CONTEXTE
• Il arrive parfois que l’on ai
• Un bloc d’instructions que l’on a besoin d’exécuter assez souvent et/ou à plusieurs
endroits dans notre programme. Par exemple: le contrôle de saisi, les instructions de
connexion/déconnexion
• Besoin de découper son programme en blocs qui réalisent des tâches bien précise
2
t
…À PARTIR D’EXEMPLES I…
1. …
3. redoublement = ““ ;
6. Lire(redoublement);
Que remarquez-vous? 🤔
7. FinTantQue
9. moyenneLimite = ““ ;
12. Lire(moyenneLimite);
13. FinTantQue
14. …
3
…À PARTIR D’EXEMPLES II…
• Il y a répétitio
• On pourrait donc
• Faire appel à ce bloc d’instructions chaque fois qu’on veut véri er la validité
de la réponse et obtenir après l’exécution de ce bloc d’instructions une
réponse valide (soit Oui, soit Non dans notre exemple)
4
n
fi
n
fi
s
fi
…À PARTIR D’EXEMPLES III…
1. Fonction ReponseParOuiOuNon() : chaîne de caractère
2. Var reponse : chaîne de caractère ;
3. DébutFonction
4. reponse = ““ ;
7. Lire(reponse);
8. FinTantQue
9. Retourner reponse ;
10. FinFonction
2. redoublement = ReponseParOuiOuNon() ;
3. Écrire( “Avez-vous obtenu une note égale à 10.00 au baccalauréat?“);
4. moyenneLimite = ReponseParOuiOuNon() ;
5
PARAMÈTRES
• Avez-vous remarquez les parenthèses - vides - devant le nom de la fonction
• Elles servent à distinguer une fonction d’autres éléments (variables, mots clés, etc.)
• Elles permettent aussi de signaler que la fonction (de l’exemple) n’a pas de
« paramètres » (aussi appelés arguments)
• Elles sont similaires aux variables des fonctions mathématiques. Exemples log(x), pgcd(a,
b), min(a1, a2, a3, a4), etc
• Un paramètre est déclaré à l’aide de son nom et de son type (même contrainte qu’une
variable algorithmique)
6
.
PARAMÈTRES: EXEMPLES I
1. Fonction ReponseParOuiOuNon(question : chaîne de caractère) : chaîne de caractère
2. Var reponse : chaîne de caractère ;
3. DébutFonction
4. Écrire(question);
5. reponse = ““ ;
8. Lire(reponse);
9. FinTantQue
11. FinFonction
7
PARAMÈTRES: EXEMPLES II
⚠ Bien observer le passage de paramètres!!! 👀
3. moyenneLimite = ReponseParOuiOuNon(suivant) ;
8
PARAMÈTRES: EXEMPLES III
⚠ Bien observer le passage de paramètres!!! 👀
2. Var i, f : entier;
3. DebutFonction
4. SI (n == 0) ALORS
5. Retourner 1;
6. FINSI
1. ALGORITHME appel_factoriel
7. f = 1;
2. VAR a : entier;
8. POUR i allant de 1 à n par pas de 1 FAIRE
3. DEBUT
9. f = f * i;
4. a = factoriel(4) ;
10. FINPOUR
5. Écrire("result is " + a);
11. Retourner f;
6. Écrire("result is " + factoriel(4));
12. FinFonction
7. FIN
9
RÉSUMÉ: SYNTAXE DES FONCTIONS…
• Commence par le mot clé Fonction
• Comporte toujours une ou des instructions de retours de valeurs; et au nal la fonction ne retourne
qu’une et une seule valeu
10
r
fi
…ET DES PROCÉDURES
• Commence par le mot clé Procédure
PASSAGE DE PARAMÈTRES
• Dans les exemples actuels:
2. DébutFonction
3. Si a <= b Alors
📝 Par défaut, le passage se fait par valeur
4. Retourner a ;
5. Sinon
3. DébutProcédure
8. FinFonction
4. Si b < a Alors
5. temp = a ;
6. a=b;
7. b = temp ;
8. FinSi
9. #Sinon, a et b sont dans le bon ordre
10. FinProcédure
14
PASSAGE DE PARAMÈTRES : EXEMPLES II
1. ALGORITHM exemple_paramètres
2. VAR x, d, min: réel;
3. DEBUT
4. c = 11.0;
5. d = 4.0;
6. min = Min(c, d);
7. Écrire(“le minimum de “ + c + “ et “ + d + “ est “ + min);
8. Ordre(c, d);
9. Écrire(“Dans l’ordre croissant on a “ + c + “ puis “ + d);
10. Écrire(“le maximum de “ + c + “ et “ + d + “ est “ + d);
11. FIN
15
PASSAGE DE PARAMÈTRES : EXEMPLES III
1. Fonction fonction_carree(x : réel par valeur) : réel
2. DébutFonction
3. Retourner x * x ;
4. FinFonction
x = 3;
p = fonction_carree(x);
1. Procédure procedure_carree(x : réel par valeur, x_2 : réel par adresse, x_3 : réel par adresse):
2. DébutProcédure
3. x_2 = x * x ;
4. x_3 = x_2 * x ;
5. FinProcédure
x = 3;
p2 = 0; p3 = 0;
procedure_carree(x, p2, p3); //Après cet appel, p2 contient x2 soit 9 et p3 contient x3 soit 27
16
⚠ PRÉCISIONS TRÈS IMPORTANTES
• Lors de l’appel à une procédure ou une fonction, faire attention
à la signature de celle-ci
RÉFÉRENCES
ENREGISTREMENTS
Emmanuel Moupojou
[Link]@[Link]
CONTEXTE: WHY RECORDS?
• Rendu à ce stade, toutes les variables que nous manipulons sont (de types) atomiques
(entier, réel, chaîne de caractères, booléen) ou des tableaux de données de types
atomique
• Cependant, tous ces types sont prédé nis. Ils existent et nous ne faisons que les
utiliser tels quel
fi
r
DÉFINITION
• Un enregistrement est un type de données dé ni par l’utilisateur et qui permet de
grouper un nombre ni d’éléments, de types éventuellement différents (alphabétique,
numérique, logique, etc.) sous un nom commun
• Tableau: permet de représenter une collection d’éléments d’un seul et même type ≠
Enregistrement: permet de combiner en un nouveau type des éléments pouvant être
de types différents les uns des autres
• Avant de déclarer une variable de type enregistrement, il faut avoir au préalable dé nit
convenablement ce type
3
fi
.
fi
.
fi
DÉCLARATION
Exemple
Type nomDuType : Enregistrement
Algoritme gestionUniversite
nomChamp_1 : typeChamp_1, //Pas de ;
nomChamp_2 : typeChamp_2,
Type Étudiant : Enregistrement
… nom : chaîne de caractère,
nomChamp_N : typeChamp_N prenom : chaîne de caractère,
Fin Enregistrement ; redoublant : booléen,
moyenneBac : réel
Fin Enregistrement ;
Var i, n : entier ;
4
fi
REMARQUES
• Les champs d’un enregistrement peuvent être de n’importe quel
type et donc en plus des types usuels, ils peuvent être des
tableaux* ou … de type enregistrement
5
fi
fi
ACCÈS AUX CHAMPS
• On accède à un champ d’un enregistrement grâce à son nom et via l’opérateur “ .
.
var_enregistrement champ_N
• On peut effectuer sur ou avec un champ, toutes les opérations autorisées par le
type de ce champ. ⚠ N’oubliez pas que le champ peut être de type
enregistrement ⚠🤨
6
n
2. Var z: Complexe ;
3. Début
7. Lire (z.partie_imaginaire);
9. [Link] = racine_carrée([Link]) ;
11. Fin
7
ACCÈS AUX CHAMPS: EXEMPLE II
1. Type Étudiant : Enregistrement
nom : chaîne de caractère,
redoublant : chaîne de caractère,
moyenne : réel
Fin Enregistrement ;
3. Début
5. Lire ([Link]);
7. Lire ([Link]);
9. Lire ([Link]);
12. FinSi
13. Fin
8
fi
⚠ PRÉCISIONS INUTILES
Faites attention à ce que vous manipuler… Faites ce qui est permis par la nature de ce que
vous manipule
1. Étant donné une variable, par exemple thing, determiner son type
2. Est-ce que thing est une variable atomique (réel, entier, booléen, chaine de caractère)?
Si c’est le cas alors vous savez vous en servir. #FI
3. Est-ce que thing est un tableau? Si c’est le cas, alors utilisez un indice pour accéder à
l’élément de thing que vous voulez manipuler (exemple thing[i]) et suivez le même
questionnement pour cette nouvelle variable. 📝 Commencez à l’étape1 ci-dessus
4. Est-ce que thing est une variable d’un type enregistrement? Dans ce cas, accéder au
champ de thing que vous voulez manipuler (par exemple [Link] eld) et suivez
le même questionnement pour cette nouvelle variable. 📝 Commencez à l’étape1 ci-
dessus
9
z
fi
.
EXEMPLE
1. Type Enseignant : Enregistrement
nom : chaine de caractère
Fin Enregistrement ;