Cours Algo
Cours Algo
Cours Algo
1. Introduction :
L’algorithmique est un terme d’origine arabe, comme algèbre. Un algorithme prend des
données en entrée, exprime un traitement particulier et fournit des données en sortie. Dans la
vie sans le savoir, vous avez déjà exécuté des algorithmes.
Pour fonctionner, un algorithme doit donc contenir uniquement des actions compréhensibles
par celui qui devra l’exécuter.
La maîtrise de l’algorithmique requiert deux qualités, très complémentaires :
1
La création d'un programme informatique commence par 4 phases :
La spécification (ou analyse) ;
La conception préliminaire (ou conception générale) ;
La conception détaillée ;
Le codage.
Parce que l’algorithmique exprime les actions résolvant un problème donné indépendamment
des particularités de tel ou tel langage. Apprendre l’algorithmique, c’est apprendre à manier
la structure logique d’un programme informatique.
Symbole Désignation
Entrée / Sortie
Test ou branchement
sorties
debut
Entrées:
L: Longueur; l: largeur
Saisir (L,l)
Fin
Algorithme Surface ;
Variables L, l, S : reels ; / déclarations
Debut / préparation traitement
Lire (L, l) ; / entrées données
S L*l; / calcul
Ecrire (S); / sortie résultat
Fin.
Le slash « / » indique un commentaire n’est pris en considération par la machine.
Remarque : Un identificateur ne peut être un mot clé, ne peut commencer par un chiffre
et ne peut comporter de caractères spéciaux excepté l’under_score _ : touche du 8).
Les constantes : les constantes sont des données dont la valeur ne peut pas être modifiée
durant l’exécution de l’algorithme (programme).On peut avoir des constantes entières, des
constantes réelles, ou bien des constantes caractères.
Une constante possède deux attributs :
Un identificateur
Une valeur
Exemple :
Constantes
MAX = 100 ; /constante entière
DOUBLEMAX =MAX ×2 ; /constante expression
PI= 3.14 ; /constante réelle
Lettre=’a’ ; /constante caractère
PlusLettres=’algerie’ ; /constante chaine de caractères
Les variables : les variables sont des données dont la valeur peut être modifiée durant
l'exécution de l’algorithme (programme).
Une variable possède plusieurs attributs :
Un identificateur
Un type
Une valeur
Une durée de vie
type entier : le contenu de la variable est une valeur entière positif ou négatif;
type réel : la variable contient une valeur réelle c'est-à-dire à virgule ;
type caractère : permet de stocker un seul caractère.
type chaines de caractères : permet de stocker plusieurs caractères.
type booléen : le contenu de la variable est une valeur logique (vrai ou faux)
Exemple :
Variables a : entier ;
Long, Larg, Surface : reel ;
Nom1, Nom_2 : chaine de caractères ;
Car : caractère ;
VL : booleen ;
Les opérateurs ont pour but de permettre la manipulation et le traitement des données.
Différentes données peuvent être groupées à l'aide des opérateurs pour former des
expressions.
En algorithmique, il existe différentes catégories d’opérateurs.
-
- Les opérateurs logiques :
Ils permettent de réaliser des expressions logiques ou booléennes, permettant ainsi de former
des expressions complexes à partir d'expressions simples.
Négation
NON ; ET logique
ET; OU logique
OU
Notons que A et B représentent des expressions et que le résultat de telles opérations est 0
pour faux et 1 pour vrai
C’est dans le Corps de l’algorithme que la plupart des opérations sont placées. Ces opérations
peuvent être divisées en quatre catégories.
1) L’opération d’affectation
2) Les entrées / Sorties (lecture / écriture, Input / output)
3) Les tests (conditions)
4) Les boucles (répétitions, itérations).
1) L’opération d’affectation
Syntaxe : identificateur <Expression> ;
: Symbole d’affectation
<Expression> peut être :
. une valeur ex : X 5;
. une variable ex : X Y;
. une expression ex : Z 2*X+(y -
z) ; L’affectation se fait toujours en deux temps :
1) Evaluation de l’expression située à droite du symbole
2) Affectation du résultat à l’identificateur de variable.
La virgule sépare les chaînes de caractères à Afficher. Tout le texte contenu entre des
guillemets est Affiché tel quel à l'écran, alors que lorsqu'une variable apparaît dans l’action
Afficher c'est sa valeur qui est affichée.
Exemple :
Exercices :
1) Ecrire l’algorithme qui calcule la surface et le périmètre d’un cercle Traduire cet
algorithme en organigramme.
Si l’expression logique (la condition) prend la valeur vraie, le bloc d’actions est exécuté; si
elle prend la valeur fausse, l’algorithme continue après finsi.
Exemple :
Si (a=b) alors
Afficher (" les 2 valeurs sont égales ") ;
Finsi ;
exemple
Si (a=b) alors oui a=b
") ;
Afficher (" les 2 valeurs sont égales ") ; les 2 valeurs sont égales les 2 valeurs
sont #
Sinon Afficher (" les 2 valeurs sont différentes non
Finsi ;
RQ : si un bloc d’actions est composé de plus d’une action, il sera délimité par : debut …
fin.
Problème: afficher "Reçu avec mention" si une note est supérieure ou égale à 12, "Passable"
si elle est supérieure à 10 et inférieure à 12, et "Insuffisant" dans tous les autres cas.
si note ≥12alors
afficher( "Reçu avec mention" ) ;
sinon si note ≥10alors
afficher( "Passable" ) ;
sinon afficher("Insuffisant" ) ;
finsi ;
finsi ;
Syntaxe :
selon <identificateur> / l’identificateur est soit une variable ou une
expression etiquette1 : bloc d’actions
etiquette2 : bloc d’actions
…
Etiquette n : bloc d’actions
[autres: bloc d’actions]
FinSelon ;
S’il y a plus de deux choix possibles, l’instruction selon permet une facilité d’écriture.
Exemple
selon abréviation
"M" : afficher (" Monsieur ") ;
"Mme" : afficher (" Madame ") ;
"Mlle" : afficher (" Mademoiselle ") ;
autres: afficher (" ERREUR ") ;
FinSelon ;
Comparer:
si (abréviation = "M") alors
afficher( "Monsieur" ) ;
sinon si abréviation = "Mme") alors
afficher("Madame") ;
sinon si (abréviation = "Mlle" ) alors
afficher( "Mademoiselle" ) ;
sinon afficher( "ERREUR " ) ;
finsi ;
finsi ;
finsi ;
Une boucle permet de répéter un bloc d’actions plusieurs fois. Le passage dans une boucle est
appelé itération. Il y a principalement trois types de boucles :
Les boucles pour répéter un bloc d’actions un certain nombre de fois, il s’agit de la boucle
Pour.
Les boucles pour répéter un bloc d’actions jusqu’`a une condition d’arrêt, il s’agit des boucles
Tant que.
Les boucles pour répéter un bloc d’ i actions jusqu’`a une condition d’arrêt avec exécution
d’au moins une itération, il s’agit des boucles Répéter ….jusqu’a
1. La boucle «pour»
Les boucles « pour » permettent de répéter un bloc d’actions un nombre donné de fois. Elles
se caractérisent par le fait que l’on connait `à l’ avance le nombre d’itérations que l’on va
devoir effectuer.
Syntaxe :
Pour (variable) allant de (Val Ini à (Val Fin) [pas de] (valeur) faire
<bloc actions>
FinPour ;
Exercice
Faire la somme paire et impaire des 10 premiers
nombres naturels
Les boucles tant que permettent d’effectuer des itérations tant qu’une certaine condition est
vérifiée. On ne connait pas le nombre d’itérations à effectuer, mais à chaque itération, on
vérifie si la condition est vraie ou fausse. Dés que cette condition est fausse, on sort de la
boucle.
Exemple :
n 1;
Tant que ( n mod 21 ≠ 0 ) faire
n n+15 ;
FintantQue
3. La boucle « Répéter »
La boucle répéter ……jusqu’a s'utilise lorsque l'on doit exécuter au moins une fois le bloc
d’actions de la boucle.
Syntaxe :
Répéter
<bloc actions>
Jusqu'à <condition satisfaite>
Les Tableaux
Définition: Les tableaux constituent un moyen pratique qui permet de regrouper plusieurs
variables de même type sous un nom collectif. On peut avoir un tableau de différents types
(entier, réel, caractère,….)
Exemple :
Variables note : tableau [12] : réels ; / une variable tableau « note » de 12 réels.
note
cases
Accès aux éléments d'un tableau
A la déclaration d’un tableau s’ajoute la déclaration d’une variable qui jouera le rôle d’index,
d’adresse ou d’indice de l’élément du tableau. Les éléments du tableau sont accessibles par
l’intermédiaire de cet indice qui est le numéro de la case.
note
5.2 1 0 - 4 1 1 8 10 - 3 1
5 2 9 4 5 0 6 3 0
indices 1 2 3 4 5 6 7 8 9 10 11 12
déclaration
Variables <identificateur> : tableau[dimension1, dimension2] : type ;
Deux indices sont nécessaires pour accéder aux éléments d’un tableau à deux dimensions
1 9 5 1
Tableau à 3 lignes et 4 colonnes M[1,3]=5 ; M[2,2]=7…..
2
1 7 - 1
0 50 4
Les Enregistrements
Un enregistrement est un ensemble de plusieurs objets de types différents regroupés sous un
nom collectif.
Syntaxe :
Type Enregistrement = nom_type
nom_champ1: type_champ1 ;
…
nom_champN: type_champN ;
FinEnreg ;
Exemple:
Type Enregistrement=personne
nom : chaîne ;
prénom : chaîne ;
age : entier ;
FinEnreg ;
Alors que les éléments d'un tableau sont accessibles par l’intermédiaire de leur indice, les
champs d'un enregistrement sont accessibles à travers leur nom, grâce à l'opérateur '.'
Syntaxe :
nom_enregistrement.nom_champ ;
Exemple :
Programme de saisie des données concernant les personnes pers1 et pers2, puis affichage de la
différence d'âge entre ces deux personnes
Algorithme Exemple ;
Type Enregistrement= personne
nom : chaîne ;
prénom : chaîne ;
âge : entier ;
FinEnreg ;
Variables pers1, pers2 : personne ;
Début
Afficher("Entrez le nom puis l'age de la personne 1") ;
Saisir (pers1.nom, pers1.age ) ; / il est impossible d'écrire Saisir pers1
Afficher("Entrez le nom puis l'âge de la personne 2") ;
Saisir (pers2.nom, pers2.age) ;
Afficher("La différence d'âge entre ", pers1.nom, " et ", pers2.nom, " est de ") ;
Si (pers1.age > pers2.age) Alors
Afficher(pers1.age – pers2.age, " ans ") ;
Sinon Afficher(pers2.age – pers1.age, " ans ") ;
FinSi ;
Fin.
Déclaration d’un tableau d’enregistrements
Exemple :
Type Enregistrement= personne
nom : chaîne ;
prénom : chaîne ;
âge : entier ;
FinEnreg ;
Variables pers : tableau[5] : personne ;
i : entier ; / indice du tableau
Un tableau de 5 personnes. Chaque personne possède un nom ; un prénom et un age.
Pers[1].nom
Pers[1].prenom accès aux données de la premiere personne
Pers[1].age
Exercice
Que produit l’algorithme suivant ?
Algorithme Anonyme ;
Fin.
Cet algorithme remplit un tableau avec six valeurs : 1, 4, 9, 16, 25, 36.
Il les écrit ensuite à l’écran. Simplification :
Algorithme Anonyme ;
Variables Nb : Tableau [6] : Entier ;
i : Entier ;
Début
Pour i allant de 1 à 6 faire
Nb[i]← i * i;
Afficher(Nb[i]) ;
FinPour ;
Fin.
Lorsque l'on programme, il est fréquent d'avoir à utiliser plusieurs fois une portion de code
dans un programme, ou, même, d'utiliser la même portion de code dans plusieurs
programmes. Cela dit, nous ne voulons pas avoir à réécrire ce code à chaque fois ; il y aurait
une perte de temps, et d'espace mémoire !
C'est pour cela que les notions de "fonction", ou de "procédure", ont été créées. Qu'est-
ce qu'une fonction ?
Pour faire bref, on peut dire que c'est une portion de code, qui peut travailler sur des données
que l'on lui fourni, qui peut renvoyer un résultat, et qui est souvent destinée à être utilisée
plusieurs fois, par son créateur ou par quelqu'un d'autre, sans avoir à être réécrite à chaque
fois.
Lorsqu'aucun résultat n'est retourné on parle de procédure. Utiliser des fonctions permet
d'obtenir un code plus clair, et moins redondant.
Procédure: Une procédure ou une fonction est déclarée et définie dans la partie déclarative
de l’algorithme selon la syntaxe suivante:
Fonction :
fonction <nom_fonction (paramètres : type)>
:type ; Variable <partie de déclaration> ;
Début
<bloc
d'actions> Fin ;
Une fois déclarée et définie une procédure ou une fonction, on peut l'appeler en tout point de
l’algorithme.
La portée d'une variable est l'ensemble des sous-programmes où cette variable est connue (les
instructions de ces sous-programmes (algorithmes) peuvent utiliser cette variable)
Une variable définie au niveau du programme principal est appelée variable globale Sa
portée est totale : tout sous-programme du programme principal peut utiliser cette variable
Une variable définie au sein d'un sous programme est appelée variable locale La portée d'une
variable locale est uniquement le sous-programme qui la déclare ,Lorsque le nom d'une
variable locale est identique à une variable globale, la variable globale est localement
masquée
Appel de la fonction
Il vous faut écrire le nom de la fonction, suivi de, entre parenthèses, les différents paramètres,
s'il y en a. Naturellement, on fait suivre d'un point-virgule si on est en fin d'instruction.
Exemple : calcul(x,23) ; sin(1.57) ; res=carre(n) ;…..
Passage de paramètres
Il y a deux méthodes pour passer des variables en paramètre dans une fonction : le passage
par valeur et le passage par variable.
La valeur de l'expression passée en paramètre est copiée dans une variable locale. C'est cette
variable qui est utilisée pour faire les calculs dans la fonction appelée.
Si l'expression passée en paramètre est une variable, son contenu est copié dans la variable
locale. Aucune modification de la variable locale dans la fonction appelée ne modifie la
variable passée en paramètre, parce que ces modifications ne s'appliquent qu'à une copie de
cette dernière.
Exemple
Algorithme passval ;
Variable i : entier;
i 2;
test(i); / Le contenu de i est copié dans j.
/ i n'est pas modifié. Il vaut toujours 2.
test(2); / La valeur 2 est copiée dans j.
Fin.
Passage par variable
La deuxième technique consiste à passer non plus la valeur des variables comme paramètre,
mais à passer les variables elles-mêmes. Il n'y a donc plus de copie, plus de variable locale.
Toute modification du paramètre dans la fonction appelée entraîne la modification de la
variable passée en paramètre.
Exemple :
Algorithme
passvar ;
Variable i : entier;
debut
I 3; /Initialise i à 3}
test(i); /Appelle la fonction. La variable i est passée en
/paramètres, pas sa valeur. Elle est modifiée par
/la fonction test.
/Ici, i vaut 2
Fin.
Puisque la fonction attend une variable en paramètre, on ne peut plus appeler test avec une
valeur (test(3) est maintenant interdit, car 3 n'est pas une variable : on ne peut pas le
modifier).