Cours Algorithmique Et Structures de Données: Informatique?

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

Université de Monastir

Faculté des Sciences de Monastir


Département Informatique
Informatique?
 Techniques du traitement automatique de l’information au
moyen des ordinateurs
Système informatique = ordinateur + périphériques
 Eléments d’un système informatique

Cours Algorithmique
Applications
(Word, Excel, Jeux, etc.)

et structures de
Langages
(Java, C/C++, Python, Pascal, etc.)
Système d’exploitation
données (DOS,Windows, Unix, etc.)
Matériel
(PC, Macintosh, station SUN, etc.)

2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 1 2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 2

Qu’est-ce qu’un programme


Langages informatiques d’ordinateur?

 Un langage informatique est un outil permettant de  Pour faire fonctionner un ordinateur il faut lui fournir un
donner des ordres (instructions) à la machine programme
Ordinateur = matériel + programme(s)
• A chaque instruction correspond une action du processeur
 Un programme est une suite d’instructions d’ordinateur
 Intérêt : écrire des programmes (suite consécutive
d’instructions) destinés à effectuer une tache donnée
 Une instruction est un ordre compris par l’ordinateur
• Exemple: un programme de gestion de comptes bancaires (Micro-processeur) et qui lui fait exécuté une action,
• Exemple : un programme de gestion de notes des étudiants
une modification de son environnement
 Contrainte: être compréhensible par la machine

2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 3 2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 4
Actions d’un ordinateur : Exemple (Addition)
Principaux Langages de
programmation:

 Attendre qu’un nombre soit tapé au clavier Blaise PASCAL, mathématicien Langage compilé et structuré, dérivé
et inventeur de la première d'ALGOL. c'est un langage de
 Sortir à l’écran le nombre entré Pascal machine à calculer 1971 développement standard pour les
micro-ordinateurs.
 Attendre qu’un nombre soit tapé au clavier C'est une version améliorée du Langage de programmation structuré et
langage de programmation B du compilé, très largement employé car
 Sortir à l’écran le nombre entré C Bell Laboratory, créé en 1972 ses programmes peuvent facilement se
transférer d'un type d'ordinateur à un
 Additionner les deux nombres entrés autre.

Maple Nasa 1980 de SUN couvrir tous les domaines d’application


 Sortir à l’écran le résultat de l’addition formel

Java Microsystems 1990 Ce langage connaît un succès qu'aucun


autre langage n'avait encore connu.
Ces lignes forment un programme d’ordinateur

2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 5 2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 6

Etapes de réalisation d’un programme Algorithmique


Enoncé du problème
 Le terme algorithme vient du nom du mathématicien arabe
Spécification
Al-Khawarizmi (820 après J.C.)
Cahier des charges  Un algorithme est une description complète et détaillée des actions à
Analyse effectuer et de leur séquencement pour arriver à un résultat donné
Algorithme
Traduction en langage • Intérêt: séparation analyse/codage (pas de préoccupation de syntaxe)
Programme source • Qualités: exact (fournit le résultat souhaité), efficace (temps d’exécution,
Compilation mémoire occupée), clair (compréhensible), général (traite le plus grand
nombre de cas possibles), …
Programme exécutable
Tests et modifications  L’algorithmique désigne aussi la discipline qui étudie les algorithmes
Version finale et résultats et leurs applications en Informatique
La réalisation de programmes passe par l’écriture d’algorithmes  Une bonne connaissance de l’algorithmique permet d’écrire des
 D’où l’intérêt de l’Algorithmique algorithmes exacts et efficaces

2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 7 2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 8
Représentation d’un algorithme Algorithmique
Historiquement, deux façons pour représenter un algorithme:  5 étapes pour arriver à un algorithme à partir d’un problème
• L’Organigramme: représentation graphique avec des symboles • 1. Comprendre le problème.
(carrés, losanges, etc.) • 2. Identifier les données d’entré et de sorties liées aux problèmes.
• offre une vue d’ensemble de l’algorithme • 3. Formuler le problème en actions élémentaires précises avec les
• représentation quasiment abandonnée aujourd’hui données nécessaires pour le calcul.
• 4. Développer l’algorithme général suivant les actions.
• Le pseudo-code: représentation textuelle avec une série de
conventions ressemblant à un langage de programmation (sans • 5. Détailler chaque action de l’algorithme (plus précis - sans
les problèmes de syntaxe) ambiguïté).
• plus pratique pour écrire un algorithme
 Ensuite, traduire l’algorithme avec un langage de programmation
• représentation largement utilisée
Pour obtenir un programme

2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 9 2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 10

Programmation : Notion Exécuter un programme


 Traduction d’un algorithme vers un langage de programmation
• En respectant la grammaire du langage (syntaxe) Données

• En utilisant des mots réservés pour le langage


• En maîtrisant des opérateurs et de types de données définis dans le
Ordinateur
langage
 Exécution du programme
 Exemple de BASIC  Transformation des données en résultats
Un codage nécessaire


Mots réservés : Sub, End, Dim, Static, As, Const, If, Then, Else, ... Programme

• Opérateurs : <, >, =, /, * ...


• Types de donnée : byte, boolean, integer, single, string, …
 Exemple de Langage C
• Mots réservés : printf, scanf, while, if, Else, ... Résultats

• Opérateurs : <, >, =, /, * ...


• Types de donnée : int, float, char, …

2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 11 2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 12
Structure d’un algorithme
Algorithmique et structure
de données ALGORITHME nom_de_l’algorithme
CONSTANTE {Définition des constantes}
C1= valeur1
TYPE {Définition de types}
Type1 = definition_du_type

Chapitre 1 - Notions et
VAR {Déclaration de variables}
V1:Type1
instructions de base DEBUT
……..
…….. {Suite d’instructions}
……..
……..
FIN
13 2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 14

Les catégories d’ordres


Notion de variable
 les ordinateurs (les Micro-processeurs) sont  Dans les langages de programmation une variable sert à
capables de comprendre que quatre familles stocker la valeur d’une donnée
d’instructions (ordres).
 Une variable désigne en fait un emplacement mémoire dont
 Ces quatre familles d'instructions sont : le contenu peut changer au cours d’un programme (d’où le
• Les variables et leurs affectation nom variable)

• la lecture / écriture  Règle : Les variables doivent être déclarées avant d’être
• les tests utilisées, elles doivent être caractérisées par :
• les boucles • un nom (identificateur)
• un type (entier, réel, caractère, chaîne de caractères, …)

2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 15 2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 16
Choix des identificateurs (1) Choix des identificateurs (2)
Le choix des noms de variables est soumis à quelques Conseil: pour la lisibilité du code, choisir des noms
règles qui varient selon le langage, en général: significatifs qui décrivent les données manipulées

 Un nom doit commencer par une lettre alphabétique exemples: TotalVentes2020, Prix_TTC, Prix_HT, moyenne, somme
exemple valide: A1 exemple invalide: 1A

 doit être constitué uniquement de lettres, de chiffres et du


Remarque: en pseudo-code algorithmique, on va respecter
soulignement _ (Eviter les caractères de ponctuation et les espaces)
valides: LBC2021, LFIA invalides: LBC 2021, LFI-A les règles citées, même si on est libre dans la
syntaxe
 doit être différent des mots réservés du langage (par exemple
en C: int, float, else, switch, case, for, main, return, …)

 La longueur du nom doit être inférieure à la taille maximale


spécifiée par le langage utilisé
2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 17 2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 18

Types des variables Déclaration des variables


Le type d’une variable détermine l’ensemble des valeurs qu’elle  Rappel: toute variable utilisée dans un programme doit avoir
peut prendre, les types offerts par la plus part des langages sont: fait l’objet d’une déclaration préalable
 Type numérique (entier ou réel)  En pseudo-code, on va adopter la forme suivante pour la
• Byte (codé sur 1octet): de 0 à 255 déclaration de variables
• Entier court (codé sur 2 octets) : -32 768 à 32 767
• Entier long (codé sur 4 ou 8 octets)
Variables liste d'identificateurs : type
• Réel simple précision (codé sur 4 octets)  Exemple:
• Réel double précision (codé sur 8 octets) Variables i, j,k : entier
 Type logique ou booléen: deux valeurs VRAI ou FAUX x, y : réel
 Type caractère: lettres majuscules, minuscules, chiffres, symboles,… OK: booléen
exemples: ’A’, ’a’, ’1’, ’?’, … ch1, ch2 : chaîne de caractères
 Type chaîne de caractère: toute suite de caractères,
 Remarque: pour le type numérique on va se limiter aux entiers
exemples: " Nom, Prénom", "code postale: 1000", …
et réels sans considérer les sous types
2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 19 2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 20
L’instruction d’affectation Quelques remarques
 l’affectation consiste à attribuer une valeur à une variable
(ça consiste en fait à remplir où à modifier le contenu d'une zone mémoire)
 Beaucoup de langages de programmation (C/C++, Java, …) utilisent
le signe égal = pour l’affectation ←. Attention aux confusions:
 En pseudo-code, l'affectation se note avec le signe ←
V ← e : attribue la valeur de e à la variable V • l'affectation n'est pas commutative : A=B est différente de B=A
• l'affectation est différente d'une équation mathématique :
- e peut être une valeur, une autre variable ou une expression
- V et e doivent être de même type ou de types compatibles • A=A+1 a un sens en langages de programmation
- l’affectation ne modifie que ce qui est à gauche de la flèche • A+1=2 n'est pas possible en langages de programmation et n'est
pas équivalente à A=1
 Ex valides: i ←1 j ←i k ←i+j
x ←10.3 OK ←FAUX ch1 ←"isimA"  Certains langages donnent des valeurs par défaut aux variables
ch2 ←ch1 x ←4 x ←j déclarées. Pour éviter tout problème il est préférable d'initialiser les
(voir la déclaration des variables dans le transparent précédent) variables déclarées
 non valides: i ←10.3 OK ←"LFI" j ←x

2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 21 2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 22

Exercices simples sur l'affectation (1) Exercices simples sur l'affectation (2)
Donnez les valeurs des variables A, B et C après exécution Donnez les valeurs des variables A et B après exécution des
des instructions suivantes ? instructions suivantes ?

Variables A, B, C: Entier Variables A, B : Entier


Début Début
A←3 A←1
B←7 B←2
A←B A←B
B←A
B ← A+5
Fin
C←A+B
C←B–A
Fin Les deux dernières instructions permettent-elles
d’échanger les valeurs de A et B ?

2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 23 2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 24
Exercices simples sur l'affectation (3) Expressions et opérateurs
 Une expression peut être une valeur, une variable ou une
Ecrire un algorithme permettant d’échanger les opération constituée de variables reliées par des opérateurs
valeurs de deux variables A et B exemples: 1, b, a*2, a+ 3*b-c, …

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


résultat de l'opération

 Les opérateurs dépendent du type de l'opération, ils peuvent être :


• des opérateurs arithmétiques: +, -, *, /, mod, div, ^ (puissance)
• des opérateurs logiques: NON, OU, ET
• des opérateurs relationnels: =,, <, >, <=, >=
• des opérateurs sur les chaînes: & (concaténation)

 Une expression est évaluée de gauche à droite mais en tenant


compte de priorités
2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 25 2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 26

Priorité des opérateurs Exercices


 Pour les opérateurs arithmétiques donnés ci-dessus, l'ordre de  Ecrire la formule suivante sous forme d’une expression arithmétique
priorité est le suivant (du plus prioritaire au moins prioritaire) :
3  x y   4 ac
2

• ^ : (élévation à la puissance)
• * , / (multiplication, division) 2x  z
• Mod, Div  Sachant que a=4, b=5,c=-1 et d=0 évaluer les expressions logiques
• + , - (addition, soustraction) suivantes:
exemple: 2+3*7 vaut 23 • (a<b) ET (c>=d)

 En cas de besoin (ou de doute), on utilise les parenthèses pour


• NON (a<b) OU (c<>b)
indiquer les opérations à effectuer en priorité • NON ((a<>b^2) OU (a*c<d) )
exemple: (2 + 3) * 7 vaut 35

2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 27 2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 28
Les instructions d'entrées-sorties: Les instructions d'entrées-sorties:
lecture et écriture (1) lecture et écriture (2)
 L'écriture permet d'afficher des résultats à l'écran
 Les instructions de lecture et d'écriture permettent à la machine
de communiquer avec l'utilisateur • En pseudo-code, on note:
ECRIRE(paramètre1 [[,paramètre2]…])
 La lecture permet d'entrer des données à partir du clavier Paramètre = variable | expression | constante
• En pseudo-code, on note: lire (var1,var2,…) Constante = nombre | message message
expression
la machine met la valeur entrée au clavier dans la zone mémoire
nommée var1, var2,…  Exemples ECRIRE(" La valeur de 3*2 est égale à ", 3*2)
message
• Remarque: Le programme s'arrête lorsqu'il rencontre une variable
instruction Lire et ne se poursuit qu'après la frappe d’une valeur ECRIRE(" La moyenne est = ", MOY)
au clavier et de la touche Entrée
 Conseil: Avant de lire une variable, il est fortement conseillé d’écrire des
messages à l’écran, afin de prévenir l’utilisateur de ce qu’il doit saisir

2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 29 2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 30

Exemple (lecture et écriture) Exemple (lecture et écriture)


Qu’obtient t-on à l’écran après l’exécution des instructions suivantes: Ecrire un algorithme qui demande un nombre entier à l'utilisateur, puis
qui calcule et affiche le double de ce nombre
X 4
Ville  "Tunis" Algorithme Calcul_double
Ecrire (x) variables A, B : entier
Ecrire ("x") Début
Ecrire (x*x) écrire("entrer la valeur de A ")
Ecrire ("ville") lire(A)
Ecrire ("ville = ", Ville) B ← 2*A
écrire("le double de ", A, "est :", B)
Fin
2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 31 2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 32
Exercice (lecture et écriture) Exercice (respect des règles)
 Chacun de ces quatre algorithmes contient une erreur. Laquelle?
Ecrire un algorithme qui vous demande de saisir votre nom puis Algorithme1 Algorithme2
votre prénom et qui affiche ensuite votre nom complet Variables Variables
Quantité : entier X, Y, Z : réel
Prix_unit : réel Début
Algorithme AffichageNomComplet Début Lire (X, Y, Z)
Lire (Quantité, Prix_unit) Z :=X-Y
variables Nom, Prenom, Nom_Complet : chaîne de caractères
Prix_total  Quantité * Prix_unit Écrire (Z)
Début Écrire (Prix_total) Fin
écrire("entrez votre nom") Fin
Algorithme3 Algorithme4
lire(Nom)
Variables Variables
écrire("entrez votre prénom") A1, A2: entier X : réel
lire(Prenom) A3 : réel Début
Début Lire (X)
Nom_Complet ← Nom & Prenom Lire (A1, A2) X  X-1
écrire("Votre nom complet est : ", Nom_Complet) A2  A1 * A3 X Pi * X
Écrire (A2) Écrire (X)
Fin
Fin Fin

2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 33 2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 34

Méthode de construction d’un Méthode de construction d’un


algorithme simple (1/4) algorithme simple (2/4)
Méthodologie a suivre :
Exemple :  Données du problème
• R:rayon du cercle

 Résultats cherchés
Écrire un algorithme qui consiste a calculer l’air S • S:surface du cercle

d’un cercle selon la formule S = Pi * R2  comment faire : Surface := Pi * (Rayon)2


Rappel : Pi = 3.14159 et R le rayon du cercle  Expressions et affectation : S  Pi * (R^2)
 Structures conditionnelles et les boucles : ------
 Opérations d’entrée-sortie : Écrire ("donner rayon")
Lire (R)
Écrire (S)
2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 35 2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 36
Méthode de construction d’un Méthode de construction d’un
algorithme simple (3/4) algorithme simple (4/4)
Algorithme Programme Pascal Programme C
Calcul_Aire Program Calcul_Aire; #include <stdio.h>
Constantes CONST #include <math.h>
Pi = 3,14159 Pi = 3.14159 void main ( )
Variables VAR {
R, S : réels Rayon, Surface : REAL; float Pi = 3.14159;
Début BEGIN float rayon, surface;
écrire (" donner rayon") WRITELN(‘donner rayon’); printf (" donner rayon ");
lire (R) READLN (Rayon); scanf ("°/°f ", &rayon);
S  Pi * (R^2) Surface := Pi * SQR (Rayon); surface = pi*pow (rayon,2);
écrire (" la surface du cercle est ", S) WRITELN (Surface); printf (" °/°f\n ", surface);
Fin END. }

2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 37 2024/2025 Algorithmique et structures de données FSM-LSI1. Enseignant : Soufien GDAIM 38

Vous aimerez peut-être aussi