Vous êtes sur la page 1sur 59

Algorithmique

Introduction:
ALGORITHME n. m. XIIIe siècle, augorisme. Altération, sous l’influence du grec
arithmos, « nombre », d’algorisme, qui, par l’espagnol, remonte à l’arabe Al-
Khuwarizmi, surnom d’un mathématicien. Méthode de calcul qui indique la démarche
à suivre pour résoudre une série de problèmes équivalents en appliquant dans un
ordre précis une suite finie de règles.
Définition 1 :
Un algorithme est une suite ordonnée d’instructions qui indique la démarche à
suivre pour résoudre une série de problèmes équivalents.

Exemple : Trouver son chemin


Extrait d’un dialogue entre un touriste.
– Pourriez-vous m’indiquer le chemin de la gare, s’il vous plait ?
– Oui bien sûr : vous allez tout droit jusqu’au prochain carrefour, vous prenez à
gauche au carrefour et ensuite la troisième à droite, et vous verrez la gare
juste en face de vous.
– Merci.

l’algorithme de recherche du chemin de la gare, l’étude de sa validité consiste à


s’assurer qu’on arrive effectivement à la gare en exécutant scrupuleusement les
instructions dans l’ordre annoncé.
LA REPRÉSENTATION DES ALGORITHMES
Pour décrire un algorithme comme une démarche de résolution d’un problème, on
utilise souvent un organigramme, sorte de représentation graphique qui permet de
mieux visualiser cette démarche. Un organigramme est construit à partir d’un
formalisme comprenant cinq symboles simples :
l’indicateur de début et de fin, la boîte de traitement, la boîte de décision, la boîte
d’interaction et le cercle de jonction.

Un algorithme peut également être représenté par un pseudo-langage constitué de mots


et de règles syntaxiques conduisant à une forme standardisée appelée pseudo-code
Exemple : Lire un tableau contenant un nombre N de valeurs et les imprimer à l’écran
L’algorithme de résolution peut se définir par un pseudo-code dont les étapes sont :

1. Lire une valeur du tableau.


2. Imprimer la valeur lue.
3. Si le tableau n’est pas vide, alors
lire la valeur suivante du tableau et retourner à l’étape 2.
Sinon, Arrêt.
Les caractéristiques d’un algorithme:
Les algorithmes sont caractériser par leur validité, leur robustesse, leur réutilisabilité, leur
complexité ou leur efficacité.

validité d’un algorithme : La validité d’un algorithme est son aptitude à réaliser exactement la
tâche pour laquelle il a été conçu.

robustesse d’un algorithme: La robustesse d’un algorithme est son aptitude à se protéger de
conditions anormales d’utilisation.

réutilisabilité d’un algorithme : La réutilisabilité d’un algorithme est son aptitude à être
réutilisé pour résoudre des tâches équivalentes à celle pour laquelle il a été conçu.

complexité d’un algorithme : La complexité d’un algorithme est le nombre d’instructions


élémentaires à exécuter pour réaliser la tâche pour laquelle il a été conçu.

efficacité d’un algorithme: L’efficacité d’un algorithme est son aptitude à utiliser de
manière optimale les ressources du matériel qui l’exécute.
Langage de description d‘un algorithmes:

Algorithme titre
% commentaire
Lexique : variables // entrée
: variables // sortie
: variables // auxiliaire

actions : noms des opérations


début
liste d'instructions
fin
Exemple: Calculer le carré de N avec l'addition seule.
 Analyse
N2 = N + N + ... + N N fois

Algorithme :

Algorithme Calcul-Carré-par-Add
%Calcul du carré d'un entier
Lexique :
N entier // Entrée
Carré entier // Sortie
Action : +
Début
Initialiser Carré à 0
Faire N fois :
Carré Carré + N
Fin
Les actions de base
1. Affectation
Affectation par une valeur:

L'affectation variable valeur est une instruction qui permet de changer la valeur
d'une variable.

La valeur de la variable à gauche de est remplacée par la valeur à droite de .


Exemple : Carré 0 « se lit » le récipient (variable) Carré reçoit la valeur 0.

Avertissement
L'ancienne valeur de la variable est détruite, écrasée, effacée par la nouvelle valeur !.
Affectation par une expression:

 L'affectation variable expression est effectuée par :


1. évaluation de l'expression
2. placement du résultat dans le récipient désigné par la variable à gauche.

 Attention

 A droite de , dans l'expression, les variables sont abusivement utilisées pour


désigner les valeurs qu'elles contiennent.
 Exemple : Carré Carré + N a pour effet de mettre le résultat de la somme de la
valeur de Carré avec la valeur de N dans le récipient Carré.
2. La lecture
La Lecture :

Cette fonction permet de lire une valeur à partir d’un périphérique d’entrée
(généralement le clavier) , et stocker cette valeur dans une variable.

Syntaxe : lire(variable)

NB : Avec l’opération de lecture il faut respecter la compatibilité des types.


3. L’écriture
L’écriture
Cette fonction affiche les résultats sur un périphérique de sortie (généralement
l’écran).

Syntaxe : Ecrire (objet)

Une constante est affichée telle qu’elle est


 Une variable est remplacée par sa valeur
 Une expression est évaluée et le résultat est affiché
La structure d’un algorithme:

Nb: Chaque variable manipulée dans le corps de l’algorithme doit être déclarée
La trace d’exécution:
La trace d’exécution est l’état des variables après exécution de chaque instruction.
Problème

Algorithmique

Algorithme

programmation

Code source
Programmation:
Introduction:

Un algorithme exprime la structure logique d’un programme informatique et de ce fait est


indépendant du langage de programmation utilisé.

Un programme est une suite d’instructions, encodées en respectant de manière très stricte
un ensemble de conventions fixées à l’avance par un langage informatique.

La machine décode alors ces instructions en associant à chaque « mot » du langage


informatique une action précise.

Le programme que nous écrivons dans le langage informatique à l’aide d’un éditeur est
appelé programme source (ou code source).

bit : Un bit est un chiffre binaire (0 ou 1). C’est l’unité élémentaire d’information.
Octet: Un octet est une unit´e d’information composée de 8 bits.
Langage de programmation :
Un langage de programmation est un langage informatique, permettant à un humain
d’écrire un code source qui sera analysé par un ordinateur.

Les niveaux de programmation:


Langages bas niveau :
Un langage de programmation est dit de bas niveau lorsque le codage de celui-ci se
rapproche du langage machine (dit "binaire"), Le langage machine et le langage
assembleur sont considérés comme des langages de bas niveau.
Langages évolués (haut niveau):
Un langage évolué est un langage très proche du langage humain. Le programme écrit
en langage évolué sera traduit en langage machine (binaire) par un programme
particulier appelé compilateur.

Logiciels:
un logiciel est un ensemble de séquences d’instruction (programmes) interprétables par
une machine
Compilation

C++, pascal, ADA, Fortran

code source
Compilateur:
Un compilateur est un programme
informatique qui traduit un langage, le compilateur
langage source, en un autre, appelé le
langage cible.
Code objet

Exécuteur

Résultat
Les Bases de langage pascal
Introduction:

Le PASCAL, créé par WIRTH au début des années 70, possède des instructions assez
claires (si vous comprenez l'anglais), et favorise une approche Méthodique et
disciplinée (on dit "structurée").

Le PASCAL est un langage compilé, c'est à dire qu'il faut :

 Entrer un texte dans l'ordinateur (à l'aide d'un programme appelé EDITEUR),

Le traduire en langage machine (c'est à dire en codes binaires compréhensibles par
l'ordinateur) : c'est la compilation et éventuellement l'édition de liens (LINK),

l'exécuter.
LA SYNTAXE DU LANGAGE PASCAL:
syntaxe d’un langage l’ensemble des règles qui régissent la composition des phrases de ce
langage

Structure d’un programme pascal:


PROGRAM Nom_programme ;

Définition des constantes


CONST ....

Définition des types


Déclaration
TYPE ....

Définition des variables


VAR....

Définition des procédures et des fonctions

BEGIN
Corps du programme
END.
EDITEUR
Exécution
L’alphabet
L’alphabet du langage PASCAL comprend les éléments suivants :
les vingt-six lettres majuscules (A à Z);
les vingt-six lettres minuscules (a à z);
les dix chiffres décimaux allant de 0 à 9;

le symbole d’affectation (:=);


la flèche verticale (^) ou symbole de pointeur;
les séparateurs tels que les parenthèses ( ), les crochets [ ] et les accolades { };
le caractère « blanc » (ou espace);
les signes de ponctuation tels que la virgule (,), le point (.), le point-virgule (;),
Les deux-points (:) et l’apostrophe (').
Entrées et sorties à l'écran
Ecriture :

On algorithmique : Ecrire ( phrase);

Write :
La procédure Write permet d'afficher du texte et de laisser le curseur à la fin du texte
affiché. Le texte doit être entre apostrophes. Si le texte à afficher contient une
apostrophe, il faut alors la doubler.

Les différents noms de variables doivent êtres séparés par des virgules.

Syntaxe :
Write ('Texte à afficher', variable1, variable2, 'texte2');
Write ('L''apostrophe se double.');
Writeln:
La procédure WriteLn est semblable à la précédente à la différence près que le
curseur est maintenant renvoyé au début de la ligne suivante.

Syntaxe :
WriteLn ('Texte avec renvoi à la ligne');

Toute instruction doit être suivie d'un point virgule, à l'exception de la dernière
instruction avant la fermeture d'un bloc d'instructions par end.
LECTURE :

On algorithmique : Lecture ( phrase);

Read :
La procédure Read permet à l'utilisateur de rentrer une valeur qui sera utilisée par
le programme. Cette instruction ne provoque pas de retour chariot, c'est-à-dire que
le curseur ne passe pas à la ligne.

Syntaxe :
Read (variable);
Readln:
La procédure ReadLn permet à l'utilisateur d'entrer une valeur qui sera utilisée par le
programme. Cette instruction provoque le retour chariot, c'est-à-dire que le curseur
passe au début de la ligne suivante.

Lorsqu'aucune variable n'est affectée à la commande, il suffit de presser sur Entrée.

Syntaxe :
ReadLn (variable1, variable2, ..., variableN);
ReadLn;
Ecran :
Exemple :
Program Exemple1; Entrez votre nom : Batat
Var nom : String; Votre nom est : Batat
BEGIN
Write('Entrez votre nom : ');
ReadLn(nom);
WriteLn('Votre nom est :', nom);
ReadLn;
END.
ReadKey :
Pour les entrées au clavier, il existe également la fonction ReadKey, qui donne
une valeur à une variable de type Char (caractère ASCII).

Syntaxe :
x := ReadKey;
Les opérateurs:
On distingue trois types d’opérateurs : les opérateurs arithmétiques, les opérateurs
relationnels et les opérateurs logiques.

Opérateur arithmétique, nous entendons les symboles :


– d’addition (+),
– de soustraction (–),
– de multiplication (*),
– de division réelle (/),
– de division entière (DIV),
– de reste d’une division entière (MOD).

Exemple

5 DIV 2 = 2
5.0 / 2.0 = 2.5
5 MOD 2 = 1
Les Opérateurs relationnels ou de comparaison sont au nombre de sept et correspondent
aux symboles suivants :

– inférieur (<),
– inférieur ou égal (<=),
– supérieur (>),
– supérieur ou égal (>=),
– égal (=),
– différent (<>),
– membre de (IN). ( intervalle )
Exemple :
Considérons quatre nombres entiers A, B, C et D ayant pour valeur :
A := 40 B := 50 C := 50 D := 10

Les expressions suivantes sont toutes vraies : Les expressions suivantes sont toutes fausses :
A<B A>B
A>D A=C
B <= C B <= D
(A + D) = B (A + D) < B
opérateurs logiques, ils sont définis dans le calcul propositionnel et sont au nombre de trois.
Ce sont :
•la négation (NOT), (non)
•la conjonction (AND), (et)
•la disjonction (OR). (ou)
•XOR (ou exclusif).
A B A or B
A not A 0 0 0
0 1 0 1 1
1 0 1 0 1
1 1 1

A B A and B A B A xor B
0 0 0 0 0 0
0 1 0 0 1 1
1 0 0 1 0 1
1 1 1 1 1 0
Priorité des opérateurs

• Niveau 1 : NOT.
• Niveau 2 : *, /, mod, div, AND.
• Niveau 3 : +, -, OR, XOR.
• Niveau 4 : =, <, >, <=, >=, <>.
Commentaires
Les commentaires sont des éléments du texte d’un programme qui sont ignorés par le
compilateur. Ils servent à apporter des renseignements sur le programme.

En Pascal , il y a trois fa ̧cons d’ écrire des commentaires


Identificateurs :
Les identificateurs sont des noms permettant de faire référence à des variables, des
constantes, des Procédures, des fonctions. Les programmes possèdent aussi un
identificateur.
Constantes:
Les constantes sont déclarées dans la partie de déclarations d’un programme.
Const On utilise le symbole = dans les déclarations de constantes
Variable:
Une variable est le nom d'un «récipient» destiné à contenir une
valeur, Le récipient sera une «zone» mémoire.

Le type d'une variable sert à préciser la nature des valeurs


acceptables par le récipient. Un type est un nom pour un ensemble
de valeurs.
Exemple :
Carré est une variable de type entier. La valeur de (dans) Carré est un entier.
La valeur de Carré ne peut être un caractère ou un réel.
Les noms des variables doivent en outre obéir à quelques
règles simples :
Un nom de variable est une séquence de lettres (a. . .z , A. . .Z) et de chiffres (0. . .9), qui
doit toujours commencer par une lettre (< = 255 caractère).

 Seules les lettres ordinaires sont autorisées. Les lettres accentuées, les cédilles, les
espaces, les caractères spéciaux tels que $, #, @, etc. sont interdits, à l’exception du
caractère (sauf _ exemple: g_1).

La « casse » est significative : les caractères majuscules et minuscules ne sont pas
distingués en pascal.

Ces mots réservés ne peuvent donc pas être utilisés comme noms de variable.

Une variable dont la valeur associée ne varie pas au cours du programme (on parle alors
de constante) pourra être écrite entièrement en majuscule, par exemple (PI = 3.14).
LES TYPES DE VARIABLES:
ENTIERS: déclaration : VAR variable1,variable2,...,variableN : INTEGER;

Opérations sur entiers : + − * div (division) mod (reste de la division). Elles sont toutes à
résultat entier, et nécessitent deux arguments entiers.
REELS:
déclaration : VAR liste de variables : REAL;
var v1,v2,v3: Real;

opérations : + − * /
Quand une opération comprend un argument réel et un entier, le résultat est réel. /
donne toujours un résultat réel, même si les deux arguments sont entiers.

* et / sont de priorité supérieure à + et −, mais entre * et / (de gauche à droite).

Exemples d'expressions numériques: (soit A=3, B=4, C=2):


A+B/C = A+(B/C) = 5
(A+B)/C = 3.5
A/B*C = (A/B)*C (1.5) dans certains cas, A/(B*C) (0.375) dans d'autres
A/BC = valeur de A sur valeur de la variable de nom BC et non A sur B*C
B*A−5*C = (B*A)−(5*C) = 2
BOOLEENS: déclaration : VAR liste de variables : BOOLEAN;

Ces variables peuvent prendre soit la valeur TRUE (vrai), soit la valeur FALSE (faux).

opérations booléennes : AND, OR, NOT, et (non standard) XOR (ou exclusif). Ces
opérations nécessitent des arguments booléens.
opérations à valeur booléenne : > (supérieur), < (inf), >= (sup ou égal), <=, = (égal), <>
(différent). Ces opérations comparent tous éléments de type simple (les 2 arguments
doivent être de même type, sauf entiers et réels qui peuvent être comparés entre eux),
et renvoient un booléen. Les caractères sont comparés suivant l'ordre du code ASCII

AND (et), OR (ou), NOT (non), sont de priorité supérieure aux précédents et ne peuvent
opérer que sur des booléens : A>B et C doit être écrit : (A>B) and (A>C). Les parenthèses sont
obligatoires pour ne pas faire en premier B and A.
CARACTERES:
déclaration :

VAR liste de variables : CHAR;

− les chiffres '0' à '9' par ordre croissant


− les majuscules 'A' à 'Z' par ordre alphabétique
− les minuscules 'a' à 'z‘

Dans le code ASCII, chaque caractère possible a un numéro de code.

déclaration :
VAR liste de variables : STRING;
Chaînes de caractères
Le type String définit des variables "chaînes de caractères". On peut cependant définir
des chaînes dont la longueur maximale sera moindre (de 1 à 255).

Syntaxe :
Var
Chaine : String;
Telephone : String[10]; { Chaîne d'une longueur maximale de 10 caractères }

Note :
Le type String est en fait un tableau de caractères à une dimension dont l'élément
d'indice zéro contient une variable de type Char dont la valeur numérique correspond à
la longueur de la chaîne.
instruction:
Une instruction simple peut être
– une affectation,
– un appel de procédure, (une procédure est un ensemble d'instructions regroupées sous un
nom, par exemple READLN)
– une structure de contrôle : conditionnelle ou itérative.

Une séquence d’instructions est une suite finie d’instructions s éparées par des points-virgule (;)

Un bloc d’instructions est une séquence d’instructions encadrées par les deux mots réservés
Begin et end.
Affectation
L’ affectation est une instruction qui permet de modifier la valeur d’une variable. En
Pascal , c’est le symbole := qui est utilisé pour écrire une affectation. A gauche de ce
symbole figure l’identificateur d’une variable, et à droite une expression.

Exemple:
Y := 2015;
Lettre := 'a';
Continuer := true;
Nombre := Y + 103;
a:=6; b:=6;c:=6;
Delta := Sqr(b) - 4 * (a * c);
Nom:=‘etudiant’;
Animal := 'l''abeille';
Phrase := 'Bonjour‘ + Nom;
Nom[3]:=‘Z’;
Nom[4]:=‘ ’;
Note :
Lorsqu'une valeur est affectée à une variable chaîne de caractères, on procède
comme pour un nombre mais cette valeur doit être entre apostrophes. Si cette valeur
contient une apostrophe, celle-ci doit être doublée dans votre code.
Exemple :
Animal := 'l''abeille';

Chaine[Index] := Lettre;
Exemple :
Program Exemple14;
Var
Nom : String;
BEGIN
Nom := 'Etiévant';
Nom[2] := 'Z';
Nom[0] := Chr(4);
WriteLn(Nom);
Nom[0] := Chr(28);
Write(Nom,'-tagada');
END.
Fonctions mathématiques Pascal de base

Syntaxe Fonction
Sin(a) sinus
Cos(a) cosinus
ArcTan(a) arctangente
Abs(a) valeur absolue
Sqr(a) carré
Sqrt(a) racine carrée
Exp(a) exponentielle
Ln(a) logarithme népérien

Vous aimerez peut-être aussi