Cours1 Asd

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 48

Algorithmique et structures de

données I
Cours 1:

Notions de bases sur l’algorithme


Réalisé par: Dhouha Maatar

2021 / 2022
Semestre I
1
PLAN
 1. INTRODUCTION
 1.1 Qu’est ce qu’un algorithme?
 1.2 Caractéristiques d’un algorithme
 1.3 Etapes de résolution d’un problème
 1.4 Algorithme et programmation
 2. COMPOSITION D’UN ALGORITHME
 2.1 Structure d’un algorithme
 2.2 Objets d’un algorithme
 2.3 Expression et opérateurs
 2.4 Actions élémentaires
 3. APPLICATIONS

2
1.INTRODUCTION

3
Avez-vous déjà ouvert un livre de recettes de cuisine ?
ou déjà indiqué un chemin à un touriste?

Si oui, sans le savoir, vous avez déjà exécuté des


algorithmes.

4
1.1Qu’est ce qu’un algorithme?

« Un algorithme est une suite d’instructions qui décrit comment


résoudre un problème particulier ».

Si l’algorithme est juste, le résultat est le résultat voulu, et le touriste se


retrouve là où il voulait aller. Si l’algorithme est faux, le résultat est
aléatoire, et le touriste est perdu.

Pour fonctionner, un algorithme doit contenir uniquement des


instructions compréhensibles par celui qui devra l’exécuter.

5
1.1 Qu’est ce qu’un algorithme?
La maîtrise de l’algorithmique requiert des qualités, très complémentaires :

 il faut avoir une certaine intuition, car aucune recette ne permet de


savoir a priori quelles instructions permettront d’obtenir le résultat voulu
(l’expérience).
il faut être méthodique et rigoureux: chaque fois qu’on écrit une série
d’instructions qu’on croit juste, il faut systématiquement se mettre
mentalement à la place de la machine et vérifier si le résultat obtenu est
bien celui que l’on voulait.
 Il faut optimiser et éviter de saisir les mêmes informations plusieurs
fois d’où le recours la plupart du temps à l’utilisation de l’approche
modulaire qui consiste à décomposer le problème initial en sous-
problèmes plus simples à résoudre appelés modules.
6
1.2 Caractéristiques d’un algorithme
Clair : L’algorithme doit être non ambigu. Autrement dit, une étape
(instruction) ne doit pas être interprétée de plusieurs façons.
Déterministe : Un algorithme doit se comporter toujours de façon
prévisible. Autrement dit, pour les mêmes données en entrée, il produira
toujours le même résultat.
Fini: L’algorithme doit se terminer. Autrement dit, il ne doit pas
boucler indéfiniment (nombre fini d’étapes).
Efficace: L’algorithme doit effectuer le traitement demandé en
consommant le minimum de ressources (espace mémoire et temps de
calcul).

7
1.3 Etapes de résolution d’un problème
La résolution d un problème donné consiste à:
1. Comprendre l’énoncé du problème.
2. Decomposer le problème en sous-problèmes plus simples à
résoudre (fonction/procédure).
3. Associer à chaque sous-problème une spécification:
a. Données nécessaires.
b. Données résultantes.
c. Démarche à suivre pour arriver au résultat en partant des
données.
4. Élaborer l’algorithme

8
1.4 Algorithme et programmation

L’algorithme exprime les instructions 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 (les règles
fondamentales).

En algorithmique, on utilise généralement une série de


conventions appelée « pseudo-code » (sans se soucier de la
syntaxe du langage de programmation).

9
1.4 Algorithme et programmation
Un programme (code) : la réalisation (l’implémentation) d’un
algorithme au moyen d’un langage donné (sur une architecture
donnée). Il s’agit de la mise en œuvre du principe.
Informations Résultats mis
du problème en forme

machine

Obtention
Données de résultats
structurées
Traitement
10
1.4 Algorithme et programmation

Un algorithme, traduit en langage de programmation


compréhensible par l’ordinateur, donne un programme qui peut
ensuite être exécuté, pour effectuer le traitement souhaité.

Un algorithme ne dépend pas:


• du langage dans lequel il est implanté,
• ni de la machine qui exécute le programme.

11
2.COMPOSITION D’UN ALGORITHME

12
2.1 Structure d’un algorithme
Schéma général d’un algorithme :

13
2.1 Structure d’un algorithme

Exemple: Calculer le carré d’un nombre fourni par l’utilisateur

Algorithme NombreAucarre

Var (données du problème; variables et types)


Nombre, carre: entier

Début (Traitement: instructions et résolution pas à pas)


écrire(" donnez un nombre " )
lire(Nombre)
carre ← Nombre × Nombre

(Edition des résultats: affichage à l’écran)


écrire("le carré est " , carre )
Fin

14
2.2 Objets d’un algorithme

Un algorithme manipule des objets qui représentent des données ou


des résultats.
Un objet peut être soit une constante (valeur non modifiable) ou une
variable (valeur modifiable), de type simple ou de type structuré.

Un objet est décrit par 3 attributs:


• Identificateur: Suite de caractères alphanumériques (sans espace)
qui commence obligatoirement par une lettre.
• Nature: Constante ou variable
• Type: Définit l’ensemble des valeurs possibles et les opérateurs
applicables.

15
2.2 Objets d’un algorithme
Constantes
•Une constante est un objet dont la valeur reste la même tout le
long d’un algorithme.
•Une constante est définie par un identificateur et une valeur.
•Elle est déclarée comme suit:
Identificateur_constante = valeur
Exemple
const PI= 3.14
MAX= 100
•Par convention, les constantes sont notées en lettres majuscules.
•La déclaration des constantes permet de réserver de l’espace
mémoire pour stocker des données dont la valeur est fixée pour
tout l’algorithme
•La seule opération possible sur une constante est la consultation. 16
2.2 Objets d’un algorithme
Variables
•Une variable est un objet dont la valeur peut changer suite à une
action tout le long d’un algorithme.
•Une variable est définie par un identificateur, une valeur et un type.
• Elle est déclarée comme suit:
Identificateur_variable: type_variable
Exemples
Var x: entier
moyenne: réel
•La déclaration des variables permet de réserver de l’espace
mémoire pour stocker provisoirement des données.

17
2.2 Objets d’un algorithme
Variables
•Par convention, les variables sont notées en lettres minuscules
sachant que “_” ou une lettre majuscule sépare chaque deux mots
consécutifs composant l’identificateur d’une variable.
Exemples
Var moyenne_etudiant: réel
moyenneEtudiant: réel

•La valeur d’une variable peut être consultée ou modifiée.


•La taille de l’espace mémoire réservé pour les données dépend du
type de ces données.

18
2.2 Objets d’un algorithme
Type de variables
•Un type est défini par:
-un nom.
-l’ensemble des valeurs possibles que peut prendre
un objet de ce type.
-les opérations qui manipulent les objets du type.
•Il existe des types simples et des types dérivés.
Exemples de types simples: entier, réel, booléen,
caractère, chaîne de caractères.
Exemples de types dérivés: énuméré, intervalle,
tableau.
Remarque: On ne peut pas faire un traitement sur un
objet si on ne connait pas son type.
19
2.2 Objets d’un algorithme
Types simples
Le type entier
• Il désigne les valeurs des nombres entiers relatifs Z.
•Ensemble de valeurs: …, -2, -1, 0, 1, 2, …
•Opérateurs
– Opérateurs arithmétiques: +, -, *, ** ou ^ pour la puissance
– Opérateurs de comparaison: <, >, =, <>, ≤ , ≥
– Div: Retourne le quotient pour la division entière. Exemple: 13 Div 5 = 2
– Mod: Retourne le reste de la division entière. Exemple: 13 Mod 5 = 3
• Fonctions prédéfinies:
– Abs (X): Retourne la valeur absolue de X.
– Carrée (X): Retourne le carré de X.
– Exp (X): Retourne l’exponentielle de X.
– Ln (X): Retourne le logarithme népérien de X.
– Racine (X): Retourne la racine carrée de X, si X > 0, sinon erreur.
– Les fonctions géométriques: Sin (X), Cos (X), Arctg (X).
20
2.2 Objets d’un algorithme
Types simples
Le type réel
•Il désigne les valeurs des nombres réels R.
•Ensemble de valeurs: …, -2.25, -1.5, 0, 1.75, 2.7, …
•Opérateurs
– Opérateurs arithmétiques: +, -, *, /, ** ou ^ pour la puissance
– Opérateurs de comparaison: <, >, =, <>, ≤ , ≥
•Fonctions prédéfinies:
– Tronc (X): Supprime la partie décimale d’une variable réelle.
– Arrondi (X): Retourne un entier qui est la valeur du réel X arrondi à la plus
proche valeur entière.
– Abs (X): Retourne la valeur absolue de X.
– Carrée (X): Retourne le carré de X.
– Exp (X): Retourne l’exponentielle de X.
– Ln (X): Retourne le logarithme népérien de X.
– Racine (X): Retourne la racine carrée de X, si X > 0, sinon erreur.
– Les fonctions géométriques: Sin (X), Cos (X), Arctg (X).
– Alea( ) permet de générer un nombre choisi au hasard (entre 0 et 1). 21
2.2 Objets d’un algorithme
Types simples
Le type caractère
•Dans une variable de type caractère, on stocke des :
 Lettres (minuscules et majuscules)
 caractères spéciaux (‘*’, ‘£’, ‘%’, ...),
 Espaces: ‘ ‘
 Chiffres: ‘0’... ‘9’
•Un caractère est toujours noté entre apostrophes.
Par exemple: ‘A’ , ‘5’, ‘b’ …
•Les opérateurs définis sur les données de type caractère sont : =, ≠, <,
<=, >, >=.
La comparaison entre les caractères se fait selon leur code ASCII:
‘ ‘ < ‘0’ < ‘1’ < ‘A’ < ‘a’ < ‘{‘

22
2.2 Objets d’un algorithme
Types simples
Le type caractère: Table des codes ASCII

23
2.2 Objets d’un algorithme
Types simples
Le type caractère
•Fonctions prédéfinies:
– ORD (C): Retourne le code ASCII du caractère C.
– CHR (X): Retourne le caractère dont le code ASCII est X.
– SUCC (C): Retourne le successeur de C s’il existe, sinon une valeur spéciale
indiquant que le successeur n’existe pas.
– PRED (C): Retourne le prédécesseur de C s’il existe, sinon une valeur spéciale
indiquant que le successeur n’existe pas.
– MAJUS (C): Convertit C en majuscule, si possible.
– MINUS (C): Convertit C en minuscule, si possible.
Exemples
– ‘p’ > ‘e’ – ‘?’ < ‘A’
– SUCC (‘b’) = ‘c’ – PRED (‘M’) = ‘L’
– MAJUS (‘d’) = ‘D’ – MINUS (‘A’) = ’a’

24
2.2 Objets d’un algorithme
Types simples
Le type chaîne de caractères
•Une chaîne de caractères est un groupe de caractères (y compris un groupe de
un, ou de zéro caractère).
•Une chaine de caractère se termine par le caractère ‘\0’.
•Elle est toujours notée entre guillemets pour éviter de confondre une chaîne de
caractères avec le nom d’une variable.
Par exemple: " chaîne de caractères ", " Bonjour " .
•Une chaine de caractère est déclarée comme suit:
Nom_chaine: chaîne de caractères
Exemple:
Var
CH: chaîne de caractères

25
2.2 Objets d’un algorithme
Types simples
Le type chaîne de caractères:
•Fonctions prédéfinies de manipulation de chaînes:

26
2.2 Objets d’un algorithme
Types simples
Le type chaîne de caractères:
•Fonctions prédéfinies de manipulation de chaînes:

27
2.2 Objets d’un algorithme
Types simples
Le type booléen
•Il désigne exactement deux valeurs logiques qui sont des constantes prédéfinies.
•Une variable logique ne peut prendre que les valeurs VRAI (1) ou FAUX (0)
•Elle intervient dans l’évaluation d’une condition.
•Opérateurs relationnels:
– Pour comparer deux variables de type logique, on utilise les opérateurs:
= et <>
•Opérateurs logiques
– Négation: Non
– Conjonction: ET
– Disjonction: OU

28
2.2 Objets d’un algorithme
Types dérivés
Le type énuméré
•Il définit un ensemble de valeurs désignées par des identificateurs.
Exemples
– Jour: (lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche)
– Mois: (janvier, février, mars, avril, mai, juin, juillet, aout, septembre, octobre,
novembre, décembre)
– Etat_Civil: (Célibataire, Marié, Divorcé, Veuf)
• La déclaration d’un type énuméré est comme suit:
Type
nom_type = (constante1, ….,constante n)
Var
nom_variable: nom_type
Exemple de déclaration
Type
Jour= (lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche)
Var
J: Jour 29
2.2 Objets d’un algorithme
Types dérivés
Le type intervalle
•Un intervalle est un ensemble de valeurs défini par deux valeurs ayant un type
prédéfini (entier, réel, type énuméré).
• La déclaration d’un intervalle se fait dans la partie Type en indiquant les limites
inférieure et supérieure, séparées par deux points successifs, et se terminant par le
caractère point virgule ‘;’.
Exemples
Type
Indice: 1..9;
Seconde: 0..59;
Salon: chaise..fauteuil;

30
2.2 Objets d’un algorithme
Types dérivés
Le type tableau
•Un tableau est une structure linéaire qui permet de stocker des données de même
type.
•Chaque case du tableau est référencée par un indice indiquant la position de
l’élément contenu dans la case.
• La déclaration d’un tableau est comme suit:
nom_type = tableau [intervalle_indices] de type_elems
Exemple:
Les moyennes de 8 élèves sont stockées dans un tableau de taille 8.
– Déclaration dans la partie Type du type Tab
Type Tab = tableau [1..8] de réel
– Déclaration dans le champ des variables d’un tableau dont le nom est
Moy:
Var Moy: Tab
– Accès à un élément du tableau à la position i: Moy [i]
31
2.3 Expressions et opérateurs
Définition:
•Une expression est une combinaison de variables et/ou de
constantes reliées par des opérateurs (arithmétiques (+, -, *, ...),
logiques (NON, ET, OU, …), relationnels (<, >, =, <>…) ,
manipulation de chaînes (concat, long, … ).
•Elle exprime un calcul (expression arithmétique) ou une relation
(expression logique).
Exemples
– a*2
– a+ 3*b-c
– (x < y) OU (z > m)

•L'évaluation de l'expression fournit une valeur unique qui est le


résultat de l'opération.
32
2.3 Expressions et opérateurs
Opérateurs

Remarque: La signification d’un opérateur peut changer en fonction du type


des opérandes:
– l’opérateur + avec des entiers effectue l’addition: 3+6 vaut 9.
– avec des chaînes de caractères il effectue la concaténation:
"bonjour" + " tout le monde" vaut "bonjour tout le monde". 33
2.3 Expressions et opérateurs
Expression arithmétique
L’ordre selon lequel se déroule chaque opération de calcul est important.
On se sert des parenthèses et des relations de priorité entre les opérateurs
pour éviter l’ambiguité dans l’écriture.
Exemple: x*5.3 / (2+pi)
L’ordre de priorité des opérateurs arithmétiques est le suivant:

Priorité Opérateurs
1 ()
2 - Signe négatif (unaire)
3 ^
4 *, /, Div, Mod
5 +, -
34
2.3 Expressions et opérateurs
Expressions logiques
•Les expressions logiques sont des combinaisons entre des variables et des
constantes à l’aide d’opérateurs relationnels (=, <, ...) et/ou des combinaisons
entre les variables et des constantes logiques à l’aide d’opérateurs logiques
(NON, ET, OU).
•L’application des opérateurs logiques se fait selon la table de vérité suivante:

A B NON (A) A ET B A OU B
Vrai Vrai Faux Vrai Vrai
Vrai faux Faux Faux Vrai
Faux Vrai Vrai Faux Vrai
Faux faux vrai faux faux

35
2.3 Expressions et opérateurs
Expressions logiques
L’ordre de priorité des opérateurs relationnels et logiques est le suivant:
Priorité Opérateurs
Priorité Opérateurs
1 >
1 NON
2 >=
2 ET
3 <
4 <= 3 OU

5 =
6 ≠

Remarque:
 En absence de parenthèses, les operateurs relationnels sont plus
prioritaires que les opérateurs logiques.
 Les parenthèses sont toujours de priorité majeure.
36
2.4 Actions élémentaires

•Une action élémentaire est une opération simple, directement utilisable.


• En algorithmique, on distingue trois types d’actions élémentaires:
L’affectation
Les actions d’entrée/sortie: Elles assurent l’interface entre
l’environnement de l’algorithme et l’utilisateur.
Appel à un programme (algorithme existant).

Remarque: on abordera le dernier type d’actions élémentaires


lorsqu’on étudiera le chapitre des modules (fonctions et procédures).

37
2.4 Actions élémentaires
Affectation
L’action d’affectation consiste à attribuer une valeur donnée à une
variable, en utilisant le symbole ‘←’.
Syntaxe: Variable1 ← Variable2 | Expression | Constante
• Variable1 est appelée variable réceptrice et Variable2 est appelée
variable émettrice.
•Il faut que l’expression située à droite de la flèche (Variable émettrice)
soit du même type ou de type compatible que la variable à gauche de la
flèche (la variable réceptrice).
Un type est dit compatible s’il est inclus dans le type de Variable1.
– Exemple: REEL ← ENTIER
Exemples
• A ← B; (Affectation d’une variable)
• A ← 3.14; (Affectation d’une constante)
• A ← X * Y; (Affectation d’une expression)
38
2.4 Actions élémentaires
Affectation
Comparons maintenant les deux algorithmes suivants :
Exemple n°1
Début
Riri ← "Loulou"
Fifi ← "Riri"
Fin

Exemple n°2
Début
Riri ← "Loulou"
Fifi ← Riri
Fin
Que contient la variable Fifi dans chacun des deux exemples?
39
2.4 Actions élémentaires
Affectation
Règles à respecter
• Toute variable utilisée dans un algorithme doit être déclarée au
début de l’algorithme, une et une seule fois.
(Si X Y, alors X et Y doivent être déclaré).
• L’affectation ne vide (efface) pas la variable émettrice (à droite du
symbole ←) de sa valeur.
Par contre, le contenu de la variable réceptrice (à gauche du
symbole ←) est écrasé et remplacé par la valeur de la variable
émettrice.

40
2.4 Actions élémentaires
Affectation
Règles à respecter
• La variable émettrice doit obligatoirement contenir une valeur, qui
lui a été affectée auparavant (par initialisation ou saisie), autrement
la valeur est indéfinie, et le résultat de l’affectation ne sera pas
défini.
• L’affectation de valeur à une variable peut être effectuée autant de
fois au cours d’un algorithme. La valeur de la variable sera alors
modifiée après chaque opération d’affectation.

41
2.4 Actions élémentaires
Action d’entrée/Sortie :
Affichage : Ecrire
•L’action Écrire permet de communiquer à l’utilisateur un résultat (valeur,
contenu d’une variable, message) en l’affichant sur un périphérique de sortie
(écran ou imprimante).
•Instruction permettant de visualiser les informations placées en mémoire.
• Syntaxe:
Écrire(paramètre_1, paramètre_2, .. Paramètre_n)
Paramètre: variable | expression | constante
Constante: message sous forme de chaînes de caractères.
•Exemples:
- écrire(val, "est différent de 0")
- écrire (x)
- écrire (" Bonjour")
- écrire ("La moyenne est: ", MOY)
42
2.4 Actions élémentaires
Action d’entrée/Sortie :
Saisie des données: Lire
•L’action Lire permet d’acquérir des données, à partir d’un
périphérique d’entrée (clavier) saisies par l’utilisateur.
•Instruction permettant de placer en mémoire les informations
fournies par l’utilisateur.
•L’action de lecture consiste à donner une valeur à une variable.
•La donnée à saisir doit avoir le même type que celui de la variable
réceptrice (ou de type compatible).
• Syntaxe:
Lire(variable_1, variable_2, .. Variable_n)
• Exemple:
- Lire (A, B) <-> Lire(A); Lire(B);
- Lire (nom)
43
3.APPLICATIONS

44
Applications
Application-1: Quel nombre est stocké dans les variables A, B, C ?

A = 11, B = 30, C= 11.

45
Applications
Application-2: Écrire un algorithme qui permet de déclarer deux variables
entières A et B, de saisir deux valeurs pour A et B, puis permuter les valeurs se
trouvant dans les deux variables et enfin afficher le contenu final des deux
variables.
ALGORITHME Permutation
Var
A, B, Aux : entier
Début
écrire (‘’donner la valeur initiale de la variable A ’’)
lire (A)
écrire (‘’donner la valeur initiale de la variable B ’’)
lire (B)
Aux ← A
A←B
B ← Aux
écrire (‘’la valeur finale de la variable A est:’’, A)
écrire (‘’la valeur finale de la variable B est:’’, B)
FIN 46
Applications
Application-3:Écrire un algorithme qui consiste à calculer l’aire S d’un cercle
selon la formule S = Pi * R2.
• Rappel : Pi = 3.14159 et R le rayon du cercle

ALGORITHME Calcul_Aire
CONST
PI = 3.14159
VAR
Rayon, Surface : réel
DEBUT
Écrire(‘’Donner le rayon du cercle’’)
Lire(Rayon)
Surface ← PI * (Rayon * Rayon)
Écrire(’’l’aire du cercle est:’’, Surface)
FIN
47
FIN

48

Vous aimerez peut-être aussi