Cours D'algorithmique
Cours D'algorithmique
Cours D'algorithmique
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;
Analyse du
problème Traduction
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.
• 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
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;
Algorithme nom_algorithme;
(*déclarations*)
CONST
Nom_constante = valeur_de_const;
VAR
Nom_variable : Type_variable;
Début
(*Corps de l’algorithme*)
(*Actions*)
Fin
Syntaxe :
Si condition Alors
Instruction1
Sinon
Instruction2;
Finsi
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.
Exemple :
REPETER
ecrire ("entrer une valeur positive" )
lire(val)
JUSQU’À (val>0)
LES INSTRUCTIONS RÉPÉTITIVES
La boucle « TANTQUE »
Syntaxe :
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 :
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.
Syntaxe :
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:
Syntaxe :
Tableaux à n dimensions
Syntaxe :
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.
Syntaxe :