Vous êtes sur la page 1sur 35

COURS

D’ALGORITHMIQUE
H. EL FAZAZI
2019/2020
TABLE DES MATIÈRES
• Introduction
• Les outils de base de l’algorithmique
• Les instructions de base en algorithmique
• Les instructions conditionnelles et alternatives
• Les instructions répétitives
• Les variables dimensionnées (Les Tableaux)
• Les sous-programmes: Procédures et Fonctions
INTRODUCTION
Pour résoudre un problème donné par l’informatique, l’utilisateur de l’ordinateur
doit mettre au point un programme et le faire exécuter par la machine.
Pour écrire un programme il faut :
 Bien connaître le problème;

 Savoir le découper logiquement en un ensemble d’opérations élémentaire;

 Connaître un langage compréhensible par la machine.

Analyse du
problème Traduction

Problème Algorithme Programme


Recherche des De l’algorithme
Outils de résolution Dans un
Et décomposition Langage
en étapes Compréhensible
élémentaire Par la machine
INTRODUCTION
• DEFINITION
Un algorithme se compose d’un ensemble fini d’étapes, chaque
étape étant formée d’un ensemble fini d’opérations dont chacune
est définie d’une façon rigoureuse.

Objets Constants (OC)

Objets Objets de
d’Entrée (OE) ALGORITHME Sortie (OS)

Objets Intermédiaires
(OI)

Environnement de l’algorithme
INTRODUCTION
Un bon Algorithme :
 Correct : il répond au problème posé
 Précis : il fournit exactement les résultats attendus
 Rapide : il utilise un temps d’exécution minimal
indépendamment de la vitesse de la machine
 Efficace : il utilise le moins d’espace mémoire possible
 Clair et lisible : il ne présente pas de difficulté de
compréhension pour un autre programmeur
 Résistant : il est capable de détecter les cas de mauvaises
utilisations.
LES OUTILS DE BASE DE L’ALGORITHMIQUE
1. Notion d’Objet :
Objet est une entité qui contient une information, elle possède :
• un nom : on parle d’identifiant, un nom symbolique que nous attribuant à
l’objet
 Commencer obligatoirement par une lettre;
 La suite des caractères peut être soit des lettres (a..z, A..Z), soit des chiffres
(0..9), soit du caratcère soulignement « _ »;
 Il ne doit pas contenir ni espace ni caractère spéciaux.
NB : le nom est choisi en rapport avec le rôle de l’objet.

• une valeur : est le contenu d’un objet (constant / variable).

• un type : qui caractérise l’ensemble des valeurs que peut prendre la variable.
Les types sont classés en trois grandes familles :
 Les Booléens
 Les numériques
 Les texes
LES OUTILS DE BASE DE L’ALGORITHMIQUE
 Type Booléen :
Il correspond à un ensemble de deux valeur (vrai, faux); et on peut
appliquer les opérateurs (ET, OU, NON).
• La table de vérité de ces opérateurs sont les suivantes:
L’opérateur ET : L’opérateur OU :
a b a ET b a b a OU b
0 0 0 0 0 0
0 1 0 0 1 1
1 0 0 1 0 1
1 1 1 1 1 1

L’opérateur NON :

a NON a
0 1
1 0
LES OUTILS DE BASE DE L’ALGORITHMIQUE
 Type Numérique :
Correspond à des intevalles de l’ensemble des entiers (Z) et l’ensemble des
réels (IR). Les opérateurs les plus fréquents sur ces valeurs sont les opérations
arithmétiques (+ , - , / , * , ^ , DIV, MOD, ENT)

 Type Texte :
Correspond à l’ensemble des chaines de caractères constitués de caractères
de différents type :
 Des lettres de l’alphabet (a..z; A..Z)
 Des chiffres (0..9)
 Un espace
 Des codes d’opérations (*, -, +,...)
 Des caractères de ponctuation (./ ,/ !/ ?/...)
 Des caractères spéciaux (&, #, $, @,...)
Il existe 256 caractères, chacun est liè à un code numérique qui nous aide à établir
des relations d’ordre (ex : « A » < « a » )
Parmis les opérations appliquées sur les chaines de caractères, on peut citer « la
concatenation » notée en algorithme par le symbole : « // »
LES OUTILS DE BASE DE L’ALGORITHMIQUE

 Les opérations de relations sur les objets :

Opération Symbole
Strictement inférieur à <
Strictement supérieur à >
Inférieur ou égal à <=
Supérieur ou égal à >=
Egal à =
Différent de <>

Appliquer entre deux objet de même type dont le résultat est une valeur
booléen.
LES OUTILS DE BASE DE L’ALGORITHMIQUE
2. Structure simplifiée d’un algorithme :
2.1. Structure générale
• L’algorithme est constitué par deux partie
 Partie déclaration : dans cette partie, on décrit
l’environnement de l’algorithme (décalaration de tous les
objets), les objets constants sont décrits par leurs noms et leurs
valeurs et pécédés d’un mot résérvé « CONST ». Et les objets
variables sont précédés par « VAR ».
Exemple :
CONST
a = 2;
Anne_cours = 2018;
VAR
Nom, Prenom : chaines de caractères;
Age : entier;

 Partie exécutable : elle contient toute les opérations et les


instructions pour la modification des objets, cette partie est
délimitée par les mots DEBUT et FIN.
LES OUTILS DE BASE DE L’ALGORITHMIQUE
2.2. Présentation d’un algorithme
Un algorithme peut se présenter de la manière suivante :

Algorithme nom_algorithme;
(*déclarations*)
CONST
Nom_constante = valeur_de_const;
VAR
Nom_variable : Type_variable;
Début
(*Corps de l’algorithme*)
(*Actions*)
Fin

NB : éviter les mots réservés (const, var, si, sinon,...)


INSTRUCTIONS ELEMENTAIRES EN ALGORITHMIQUE
• Les instructions élémentaires se sont les instructions qui figurent le plus souvent dans tous
les algorithmes.
 L’affectation : est d’assigner une valeur à un objet
Identificateur_objet Valeur

La valeur peut être :


 Une variable de même type que Identificateur_objet
 Une constante de même type que Identificateur_objet
 Une expression dont l’évaluation produit un résultat final de même type que
Identificateur_objet

Une affectation n’est exécutable si et seulement si :


 Identificateur_objet est une variable déclarée
 La partie droite de l’affectation représente une quantité bien définie, c’est-à-dire une
structure possédant une valeur ou ayant une évaluation qui fournit une valeur résultat
 Les types de deux parties de l’affectation sont les mêmes.

NB : l’affectation détruit complètement et définitivement le contenue précédent


la déclaration d’une variable n’affecte aucune valeur à la variable
INSTRUCTIONS ELEMENTAIRES EN ALGORITHMIQUE
 Les instructions d’Entrée/ Sortie
Un algorithme doit en général acquérir des données (Entrées) sur un
périphérique (clavier,..) et fournir des résultats (Sorties) sur une autre
périphérique (écran, imprimante,..).
 Lire(V) : qui permet d’affecter à la variable (V), la valeur lue sur
le périphérique;
 Ecrire (VS) : qui permet de transférer la valeur (VS) vers le
périphérique de sortie.

La valeur (VS) peut être soit :


 une variable déclarée
 une constante
 une expression

NB: on peut avoir avec la même instruction « Ecrire » l’affichage d’un ou


plusieurs messages et d’une ou plusieurs variables.
INSTRUCTIONS CONDITIONNELLES
 L’instruction Si…… Alors…. Finsi

Syntaxe : Si condition Alors


Instruction (ou suite d’instructions);
Finsi

L’instruction sera exécutée si et seulement si la condition est vérifiée (Valeur


Booléen « VRAI »)

Exemple : Valeur absolue d’un nombre réel.


Algorithme valeur_absolue;
VAR
X : réel;
DEBUT
Lire(X);
Si X < 0 alors
X  -X
Finsi
Ecrire ("la valeur absolue est :", X)
FIN
INSTRUCTIONS CONDITIONNELLES
 L’instruction Si…… Alors…. Sinon…..Finsi

Syntaxe :
Si condition Alors
Instruction1
Sinon
Instruction2;
Finsi

L’instruction «Instruction1» est exécutée si la condition est vérifiée, sinon c’est


« Instruction2» qui sera exécutée.

 Imbrication de Si
Un Si peut être exprimé à la suite d’un Alors d’un autre Si et/ou à la suite de
son Sinon
 La variable de l’ alternative : la primitive « CAS »

CAS variable
Syntaxe : valeur_1 : instuction_1;
valeur_2 : instruction_2;
….
Valeur_N : instruction_N;
Sinon
Instruction_par_default;
Fincas
Exemple :
Algorithme salut;
VAR
heure : entier;
DEBUT
Lire(heure);
Cas heure
6,7,8,9,10,11,12 : Ecrire ("Bonjour");
13..18 : Ecrire (" Bon Après-midi")
Sinon
Ecrire("Bonsoir")
Fincas
FIN
EXERCICES
 Ecrire un algorithme qui demande un nombre à l’utilisateur, et l’informe
ensuite si ce nombre est positif ou négatif (on laisse de côté le cas où le
nombre vaut zéro);
 Ecrire un algorithme qui demande un nombre à l’utilisateur, et l’informe
ensuite si ce nombre est positif ou négatif (on inclut cette fois le traitement du
cas où le nombre vaut zéro).
 Écrire un algorithme qui lit deux entiers puis affiche le minimum des deux;
 Écrire un algorithme qui lit trois entiers N1, N2 et N3 puis affiche un message
indiquant si les nombres N1, N2 et N3 sont croissants dans cet ordre ou non;
 Ecrire un algorithme qui demande deux nombres à l’utilisateur et l’informe
ensuite si leur produit est négatif ou positif (on laisse de côté le cas où le
produit est nul). Attention toutefois : on ne doit pas calculer le produit des
deux nombres.
 Ecrire un algorithme qui demande trois noms à l’utilisateur et l’informe
ensuite s’ils sont rangés ou non dans l’ordre alphabétique.
 Ecrire un algorithme qui demande un numéro de mois à l’utilisateur (1..12) et
qui → indique en retour son nom et le nombre de jours dans ce mois.
LES INSTRUCTIONS RÉPÉTITIVES
 La boucle « REPETER »
Syntaxe :
REPETER
actions à exécuter…
JUSQU'A condition

Fonctionnement :
• on exécute le corps,
• on évalue la condition , puis
 si la condition est vraie : on quitte le REPETER;
 si la condition est fausse on recommence.

NB : Il y a toujours au moins une exécution du corps. La structure REPETER


permet de répéter un traitement 1 ou plusieurs fois.

Exemple :
REPETER
ecrire ("entrer une valeur positive" )
lire(val)
JUSQU’À (val>0)
LES INSTRUCTIONS RÉPÉTITIVES
 La boucle « TANTQUE »
Syntaxe :

TANTQUE condition FAIRE


actions à exécuter…
FINTANTQUE

Fonctionnement :
• Le corps est exécuté si et seulement si la condition est vraie.

NB: Pour choisir entre REPETER et TANTQUE il faut se poser la question : faut-il
éventuellement ne jamais faire le traitement ? Si oui : il faut utiliser TANTQUE , sinon
utiliser la structure REPETER qui exécute au moins une fois l'action.

Exemple :
val  -1;
TANTQUE (val<=0)
ecrire ("entrer une valeur positive" )
lire(val)
FINTANTQUE
LES INSTRUCTIONS RÉPÉTITIVES
 La boucle « POUR »

Syntaxe :

Pour variable  Valinitiale A ValFinale [PAS valPas] Faire


actions à exécuter
Fpour

Fonctionnement :
• répéter une suite d’instructions un certain nombre de fois
• « Pour » utilisée quand le nombre d’itération est connu.
Remarques :
• Il est possible que l'action ne soit jamais exécutée.
• Il est possible aussi d'avoir un intervalle inversé à condition d'avoir un pas négatif.

NB : Il est absolument interdit de modifier variable, valInitiale , valfinale , valPas dans le


corps de boucle.
EXERCICES
• Écrire un programme qui saisie N entiers et affiche leur somme et leur moyenne.
• Ecrire un algorithme qui demande à l’utilisateur un nombre compris entre 1 et 3
jusqu’à ce que la réponse convienne
• Ecrire un algorithme qui demande un nombre de départ, et qui ensuite affiche les
dix nombres suivants. Par exemple, si l'utilisateur entre le nombre 17, le
programme affichera les nombres de 18 à 27;
• Ecrire un algorithme qui demande un nombre de départ, et qui ensuite écrit la
table de multiplication de ce nombre;
• Ecrire un algorithme qui demande un nombre de départ, et qui calcule la somme
des entiers jusqu’à ce nombre. Par exemple, si l’on entre 5, le programme doit
calculer 1+2+3+4+5 = 15;
• Ecrire un algorithme qui demande un nombre de départ, et qui calcule sa
factorielle;
• Ecrire un algorithme qui demande successivement 20 nombres à l’utilisateur, et
qui lui dise ensuite quel était le plus grand parmi ces 20 nombres;
• Ecrire un algorithme qui permet à l’utilisateur de saisir une suite de caractère se
terminant par ‘*’, et qui affiche à la fin le nombre d’apparition de la lettre ‘A’;
LES VARIABLES DIMENSIONNÉES (LES TABLEAUX)
 Les tableaux à une dimension :

Syntaxe :

TABLEAU NomTableau [Nombre_élément] en Type_élément

Remarques :

• On peut créer des tableaux contenant des variables de tous types (entier, chaine de
caractères, booéen…);
• Le nombre d’éléments maximal d’un tableau est différent du nombre d’éléments
significatifs dans un tableau;
• les "cases" sont numérotées à partir de zéro;
EXERCICES
• Ecrire un algorithme qui déclare et remplisse un tableau contenant les six
voyelles de l’alphabet latin;
• Ecrire un algorithme qui retourne l'indice du premier élément nul d'un
tableau;
• Ecrire un algorithme qui déclare et remplisse un tableau de 6 valeurs
numériques en les mettant toutes à zéro;
• Ecrire un algorithme qui compte le nombre d'éléments nuls d'un tableau;
• Ecrire un algorithme qui calcul le minimum et maximum des ´éléments
d’un tableau;
• Ecrivez un algorithme constituant un tableau, à partir de deux tableaux
de même longueur préalablement saisis. Le nouveau tableau sera la
somme des éléments des deux tableaux de départ;
• Augmente de 1 tous les éléments d’un tableau, le nouveau tableau sera
affiché à l’écran. Exemple : tab[4]={1,23,6,9,-1} devient
tab[4]={2,24,7,10,0}.
LES VARIABLES DIMENSIONNÉES (LES TABLEAUX)
 Les tableaux multidimensionnels:

 Tableaux à deux dimensions

Syntaxe :

TABLEAU NomTableau [Nbre_lignes, Nbre_colonnes] en Type_élément

 Tableaux à n dimensions

TABLEAU NomTableau [Nbre_lignes, Nbre_colonnes,…] en Type_élément


LES VARIABLES DIMENSIONNÉES (LES TABLEAUX)
 Les tableaux dynamiques:

Syntaxe :

TABLEAU NomTableau () en Type_élément

REDIM NomTableau(NbreCase)

Exemple :
…..
Var nbre en Entier
Tableau Notes() en Entier
Début
Ecrire ("Combien y a-t-il de notes à saisir ?");
Lire (nbre);
Redim Notes(nbre);
…..
EXERCICES
• Ecrire un algorithme remplissant un tableau de 4 sur 10, avec des zéros;
• Ecrivez un algorithme qui permet de remplir un tableau T à deux dimensions du
type entier de dimensions L et C (maximales: 10 lignes et 10 colonnes).
Remplir le tableau par des valeurs entrées au clavier et afficher le tableau ainsi
que la somme de tous ses éléments;
• Ecrivez un algorithme qui permet d'afficher le minimum d'un tableau M*N;
• Soit un tableau T à deux dimensions (12, 8) préalablement rempli de valeurs
numériques. Ecrire un algorithme qui recherche la plus grande valeur au sein de
ce tableau;
• Permet de remplir un tableau 10*7 avec le produit des indices.
LES SOUS-PROGRAMMES: PROCÉDURES
ET FONCTIONS
1. Définition :
Un sous-programme est un bloc faisant partie d’un algorithme. Il est
déclaré dans la partie entête (avant le début de l’algorithme) puis appelé dans le
corps de l’algorithme. Étant donné qu’il s’agit d’un bloc à part entière, il possède
éventuellement un en-tête, une série de traitements, et une gestion des résultats tout
comme l’algorithme qui le contient.

2. Types de sous-programme :
Un sous-programme peut se présenter sous forme de fonction ou de procédure.
Une fonction est un sous-programme qui, à partir de donnée(s), calcul et rend à
l’algorithme Un et Un seul résultat alors qu’en général, une procédure affiche le(s)
résultat(s) demandé(s).
LES SOUS-PROGRAMMES: PROCÉDURES
ET FONCTIONS
2. 1. Procédure :
Une procédure est un bloc d’instructions nommé et déclaré dans l’entête de
l’algorithme et appelé dans son corps à chaque fois que le programmeur en a besoin.
L’appel d’une procédure peut être effectué en spécifiant, au moment souhaité, son
nom et ses paramètres.

Exemple :
PROCEDURE Somme (A, B: ENTIER) ;
DEBUT
Ecrire ("La somme est : ", a + b);
FIN
LES SOUS-PROGRAMMES: PROCÉDURES
ET FONCTIONS
2. 2. Fonction
Une fonction est un bloc d’instructions qui retourne obligatoirement une et une
seule valeur résultat à l’algorithme appelant. Une fonction n’affiche jamais la
réponse à l’écran car elle la renvoie simplement à l’algorithme appelant.

Fonction NomFonction (NomParamètre: TypeParamètre;…): TypeFonction;


VAR
NomVar : TypeVar;
…..
Début
…..
instructions;
retourner (résultat)
Fin
LES SOUS-PROGRAMMES: PROCÉDURES
ET FONCTIONS
2. 2. Fonction
Un appel de fonction est une expression d’affectation de manière à ce que le résultat
soit récupéré dans une variable globale :
Nom_variable-globale  Nom_Fonction (paramètres) ;
Exemple:
FONCTION perimetre_rectangle (largeur, longueur : ENTIER) : ENTIER;
DEBUT
RETOURNER (2*(largeur+longueur))
FIN
LES SOUS-PROGRAMMES: PROCÉDURES
ET FONCTIONS
3. Mode de passages de paramètres :
Un sous-programme avec paramètres est très utile parce qu’il permet de répéter une
série d’opérations complexes pour des valeurs qu’on ne connaît pas à l’avance. Il
existe deux types de passage de paramètres : par valeur et par adresse (dite aussi par
référence).
 Passage paramètres par valeur :
C’est le mode de transmission par défaut. Dans ce mode, le contenu des
paramètres effectifs ne peut pas être modifié par les instructions de la fonction
ou de la procédure; car nous ne travaillons pas directement avec la variable,
mais sur une copie. À la fin de l’exécution du sous-algorithme la variable
conservera sa valeur initiale. Les paramètres dans ce cas sont utilisés comme
données.
Syntaxe :

Procédure nom_procédure(param1 : type1; param2, param3 : type2) ;


Fonction nomfonction (param1 : type1; param2 :type2) : Type_fonction ;
LES SOUS-PROGRAMMES: PROCÉDURES
ET FONCTIONS
 Passage paramètres par adresse:
Ici, il s’agit non plus d’utiliser simplement la valeur de la variable, mais
également son emplacement dans la mémoire (d’où l’expression « par adresse
»). En fait, le paramètre formel se substitue au paramètre effectif durant le temps
d’exécution du sous-programme et à la sortie il lui transmet sa nouvelle valeur.
Un tel passage de paramètre se fait par l’utilisation du mot-clé Var.

Syntaxe :

Procédure nom_procédure(Var param1 : type1; Var param2, param3 : type2) ;


Fonction nomfonction (Var param1 : type1; Var param2 :type2) : Type_fonction ;
LES SOUS-PROGRAMMES: PROCÉDURES
ET FONCTIONS
Exercices :
• Ecrire une fonction ou procédure qui permet de lire deux nombres, calculer la
somme et le produit et affiche si ces derniers sont positifs ou négatifs.
• Un algorithme qui calcule et affiche la valeur absolue d’une valeur en utilisant
une fonction

Vous aimerez peut-être aussi