Vous êtes sur la page 1sur 29

Ingénierie Informatique et Sciences des Données : 2ISD

Fondements de la sciences des données : Algorithmes &


Structures des données

Pr : KASSABI Khadija
kassabikhadija2isd@gmail.com

Algorithmes & Structures des données 2023 – 2024


Objectifs du cours

 Comprendre les principes fondamentaux de l’algorithmique et de la programmation.


 Maîtriser la conception et l'analyse d'algorithmes.
 Apprendre à résoudre des problèmes informatiques complexes à l'aide d'algorithmes
efficaces
 Comprendre les structures de données de base et leur utilisation.
 Acquérir des compétences en programmation pour mettre en œuvre des algorithmes
et des structures de données.
 Être capable d'optimiser des algorithmes pour améliorer les performances.
 Être capable de résoudre des problèmes en utilisant des algorithmes de recherche et
de tri.
 Préparer les étudiants à résoudre des problèmes du monde réel en utilisant des
algorithmes et des structures de données.

K.Kassabi 13/10/2023 2
Plan du cours

1 Les notions fondamentales de l’algorithmique

• Les types de base


• Les instructions simples
• Structures conditionnelles et itératives
• Procédures et fonctions Langage C (Outils
de Programmation)
2 Structures des données : Tableau , Tableau 2D , Structure

3 Les algorithms de Tri, de Recherche

4 Analyse et Optimisation des Performances : Complexité (O)

K.Kassabi 13/10/2023 3
Algorithmique
Leçon 1 : Introduction à la programmation

Objectifs:

 Connaître le vocabulaire de base en programmation.


 Comprendre la démarche de programmation.

K.Kassabi 13/10/2023 4
Notions de Programmation

 La programmation d'un ordinateur consiste en effet à « expliquer » en détail à une


machine ce qu'elle doit faire, en sachant d'emblée qu'elle ne peut pas véritablement
« comprendre » un langage humain, mais seulement effectuer un traitement
automatique sur des séquences de caractères.
 Un programme n'est rien d'autre qu'une suite d'instructions, codées en respectant
de manière stricte un ensemble de conventions fixées à l'avance que l'on appelle
un langage informatique.

K.Kassabi 13/10/2023 5
Langage Informatique (2)

Un programme informatique a trois principales fonctions :

 Lecture des données en entrée: Le programme recueille les informations nécessaires à partir
de sources telles que claviers, disques durs, ou réseaux.

 Traitement des données: À partir des données d'entrée, le programme utilise des opérations
pour effectuer des calculs et manipulations, produisant ainsi un résultat.

 Écriture des données en sortie: Une fois les calculs effectués, le programme affiche le résultat
à l'écran, le stocke dans un fichier ou le conserve en mémoire pour une utilisation ultérieure.

Traitement Sortie
Entrées (a, b) a+b s
(Algorithme)

K.Kassabi 13/10/2023 6
Algorithmique : Définition

 Le terme "algorithme" tire son origine du mathématicien Arab Muhammad ibn


Musa al-Khwarizmi, dont le nom latinisé, "Algoritmi," a donné naissance au mot
« algorithme »
 Un Algorithme est une séquence d'instructions bien définies pour résoudre des
problèmes .
 Les algorithmes sont partout dans le monde de l'informatique : de la recherche sur
Internet aux recommandations de films sur les plateformes de streaming.
 Les économistes utilisent des algorithmes pour analyser d'énormes volumes de
données, identifier des tendances et prendre des décisions éclairées.

K.Kassabi 13/10/2023 7
Algorithmique : Représentation

Historiquement deux façons pour représenter un algorithme:

 L’Organigramme: représentation graphique avec des symboles (carrés, losanges, etc.)


 Offre une vue d’ensemble de l’algorithme
 Cette représentation quasiment abandonnée aujourd’hui
 Le pseudo-code: représentation textuelle avec une série de conventions ressemblant à
un langage de programmation (sans les problèmes de syntaxe)
 plus pratique pour écrire un algorithme
 représentation largement utilisée

K.Kassabi 13/10/2023 8
Algorithmique : Syntaxe

Le Syntaxe d’un algorithme est comme suit :

K.Kassabi 13/10/2023 9
Algorithmique
Leçon 2 : Types des données

Objectifs:

 Connaître les types de bases .


 Connaître les opérations fondamentales .

K.Kassabi 13/10/2023 10
Variables et Opérations

 En algorithmique, une variable est un symbole utilisé pour stocker et représenter une valeur
ou une donnée .

 Elle peut être modifiée ou mise à jour pendant l'exécution de l'algorithme pour effectuer
diverses opérations.

 Chaque variable est caractérisée par:


 un nom (Identificateur).
 un type e (nombre entier, nombre réel, caractère, suite de caractères, ou type plus
complexe).

 Une déclaration de variable a toujours la forme : Variables nom : type

K.Kassabi 13/10/2023 11
Variables et Opérations : Identificateur

Le choix des noms des variables est soumis a quelques règles qui varient selon les langages mais
en général :
 Un nom doit commencer par une lettre alphabétique :
Exemple : A1 : Valide 2ISD : Invalide
 Contient uniquement des lettres, chiffre et soulignement « _ »
Exemples : IISD_2023, MP3s_9 …
 Doit être différents des noms réservés : int , float , max, for, return…
 La longueur du nom doit être inférieure à la taille maximale spécifiée par le langage
utilisé.
Conseil : pour la lisibilité du code choisir des noms significatifs qui décrivent les données
manipulées
exemples: TotalVentes2019, Prix_TTC, Prix_HT

K.Kassabi 13/10/2023 12
Variables et Opérations : Types

 Type entier:
 Le type entier (« int » en langage C abréviation de l’anglais integer) est une représentation des
nombres entiers. Comme toute variable informatique, un int ne peut prendre qu’un nombre fini
de valeur.

 Un entier est généralement codé sur 4 octets (32 bits).

 Les valeurs sont entre − et − 1 (ce qui fait bien valeurs possibles).

 Les opérations arithmétiques binaires +, −, , / sont définies sur les ‘entiers’ et donnent toujours
pour résultat un entier .

K.Kassabi 13/10/2023 13
Variables et Opérations : Types

 Type réel et double :


 Les types réels (float en C) et double (double en C) permettent de représenter des nombres réels
avec une certaine précision (suivant une représentation des nombres appelée virgule flottante ou
nombre flottant).

 Un nombre réel tel qu’il est ainsi représenté possède une mantisse (des chiffres) et un exposant
qui correspond à la multiplication par une certaine puissance de 10.
Par exemple : 3.546E − 3 est égal à 3.546 × , ce qui fait 0.003546.

 Le type double (codé sur 8 octets) est plus précis que le type réel (codé sur 4 octets). La valeur
maximale d’un double est d’environ alors que celle d’un float est de l’ordre de .
(en C les valeurs limites exactes sont données par les constantes DBL_MAX et FLT_MAX de
la bibliothèque float.h).

K.Kassabi 13/10/2023 14
Variables et Opérations : Types

 Type Caractère :
 Le type caractère (Char en C abréviation de l’anglais character) est un type caractère codé sur
1 octet. C’est la plus petite donnée qui puisse être stockée dans une variable.

 Les valeurs (de −126 à 125) peuvent représenter des caractères conventionnels.
Par exemple, les caractères alphabétiques majuscules A, B, ..., Z ont pour valeur 65, 66, ... , 90
et les minuscules correspondantes a, b, ... ,z ont pour valeurs 97, 98, ... , 122. On appelle ce
codage des caractères le code ASCII.

 Une variable de type char peut être considérée soit comme un nombre(code ASCII), soit comme
un caractère que l’on peut afficher.

K.Kassabi 13/10/2023 15
Variables et Opérations : Types

 Type boolean :
 un booléen est un type de variable à deux états (généralement notés vrai et faux), destiné à
représenter les valeurs de vérité de la logique et l'algèbre booléenne .

 Constante :
 Une constante est une valeur qui n’est pas susceptible de varier lors de l’exécution d’un
programme.
Par exemple, 9.81 est une constante de type réel, 1024 est une constante de type entier (qui peut
aussi être affectée à une variable de type réel).

 En Algorithmique on déclare les constantes par : CONSTANTE TYPE NOM  val


Ex : CONSTANTE REEL G  9.81 CONSTANTE ENTIER H  4816

K.Kassabi 13/10/2023 16
Variables et Opérations : Opérations

 Les opérateurs sont des symboles qui permettent d'exécuter des opérations dans un algorithme
ou programme informatique entre deux opérants (variables )

 Les opérateurs sont fondamentaux pour écrire des algorithmes et des programmes. C’est ce qui
compose les instruction d’un programme .

Variable 1 Variable 2

Opérateur

Opération
K.Kassabi 13/10/2023 17
Variables et Opérations : Opérations

Opérateurs Arithmétiques
Il existe plusieurs opérateurs arithmétiques :

 + (addition) : Utilisé pour additionner deux valeurs.


 - (soustraction) : Utilisé pour soustraire la deuxième valeur de la première.
 * (multiplication) : Utilisé pour multiplier deux valeurs.
 / (division) : Utilisé pour diviser la première valeur par la deuxième.
 % (modulo) : Renvoie le reste de la division de la première valeur par la
deuxième.

K.Kassabi 13/10/2023 18
Variables et Opérations : Opérations

Opérateurs Arithmétiques
Exemple :

Variables a,b : entiers


Debut
a 8
b3
addition  a+b //addition vaut 11
soustraction  a-b //soustraction vaut 5
multiplication  a*b //multiplication vaut 24
division  a / b //division vaut 2.66666...
FIN

K.Kassabi 13/10/2023 19
Variables et Opérations : Opérations

Opérateurs de comparaison
Il existe plusieurs opérateurs de comparaison :

 == (égalité) : Vérifie si deux valeurs sont égales.


 != (différent) : Vérifie si deux valeurs sont différentes.
 < (inférieur à) : Vérifie si la première valeur est inférieure à la deuxième.
 > (supérieur à) : Vérifie si la première valeur est supérieure à la deuxième.
 <= (inférieur ou égal à) : Vérifie si la première valeur est inférieure ou égale à
la deuxième.
 >= (supérieur ou égal à) : Vérifie si la première valeur est supérieure ou égale
à la deuxième.

K.Kassabi 13/10/2023 20
Variables et Opérations : Opérations

Opérateurs de comparaison
Exemple :

Variables x,y : entiers


Debut
x 5
y10
egalite  x == y //egalite vaut False
difference  x != y //difference vaut True
inferieur x<y // inferieur vaut True
superieur x>y //Superieur vaut False
FIN

K.Kassabi 13/10/2023 21
Variables et Opérations : Opérations

Opérateurs logiques
Il existe plusieurs opérateurs logiques:

 and (et) : Renvoie True si les deux expressions sont vraies.


 or (ou) : Renvoie True si au moins l'une des expressions est vraie.
 not (non) : Inverse la valeur de l'expression.

K.Kassabi 13/10/2023 22
Variables et Opérations : Opérations

Opérateurs Logiques
Exemple :

Variables p,q : booleans


Debut

p True
qFalse
et  p AND q //et vaut False
ou  p OR q //ou vaut True
non_p  NOT p // non_p vaut False

FIN

K.Kassabi 13/10/2023 23
Variables et Opérations : Opérations

Opérateurs d'affectation
Il existe deux opérateurs d’affectation:

 = (affectation) : Utilisé pour assigner une valeur à une variable.


 *=, +=, -=, =, /=, %= (affectation avec opération) : Utilisé pour effectuer une
opération et mettre à jour la variable en une seule étape.

Exemple :
Variable x : entire
Debut
x5
x+=3 // x vaut maintenant 8 (équivaut à x  x + 3)
FIN

K.Kassabi 13/10/2023 24
Exercice

Quelles seront les valeurs des variables a, b et c


après exécution des instructions suivantes :

a1;
b5; Correction
ca–b; a=2
a2; b=5
ca+b; c=7

K.Kassabi 13/10/2023 25
Les fonctions d'entrée - Sortie

La fonction de Sortie


Pour afficher un caractère on peut utiliser la fonction Ecrire() :
Exemple :

Variable x : entire
Debut
x5
x+=3 // x vaut maintenant 8 (équivaut à x  x + 3)
Ecrire (x) //affichage d’une variable
Ecrire(“ Fin Programme . ”) //affichage d’u message
FIN

K.Kassabi 13/10/2023 26
Les fonctions d'entrée - Entrée

La fonction d’Entrée


Pour saisir une variable au clavier on peut utiliser la fonction Lire() :
Exemple :

Variable x : entire
Debut
Ecrire (“Donner la Valeur de x :”)
Lire (x) //saisir la valeur de x au clavier
x+=3 // x vaut maintenant 8 (équivaut à x  x + 3)
Ecrire (x) //affichage d’une variable
Ecrire(“ Fin Programme . ”) //affichage d’u message
FIN

K.Kassabi 13/10/2023 27
Exercices (1)
o Ecrire un algorithme qui lit deux entiers au clavier et qui affiche ensuite leur somme et leur
produit.

o Ecrire un algorithme qui permet d’échanger les valeurs de deux variables entières.

o Écrire un algorithme qui à partir de trois notes d’un étudiant (n1,n2,n3) et de trois coefficients
(c1,c2,c3) calcule la moyenne.

o Écrire un algorithme qui permet d’effectuer une permutation circulaire des valeurs entières de
trois variables x, y, z (la valeur de y dans x, la valeur de z dans y et la valeur de x dans z).

o Ecrire un algorithme qui calcule la surface et le périmètre d’un rectangle

o Écrire un algorithme qui à partir d’une somme d’argent donnée, donne le nombre minimal de
billets de 50DH et 20DH et le nombre de pièces de 2DH, 1DH qui la compose.
K.Kassabi 13/10/2023 28
Exercices (2)
o Pour convertir des degrés Fahrenheit en degrés Celsius, on a la formule suivante :
C ~ 0.55556 × (F − 32)
où F est une température en degrés Fahrenheit et C la température correspondante en degrés
Celsius.
-) Écrire un algorithme C qui convertit une température entrée au clavier exprimée
en degrés Fahrenheit et affiche une valeur approchée de la même température en degrés Celsius. Les
températures seront exprimées par des nombres réels .

o Lors d’une opération de promotion, un magasin de composants hardware applique une réduction de
10% sur tous les composants. Écrire un algorithme qui lit le prix d’un composant au clavier et
affiche le prix calculé en tenant compte de la réduction.

o Écrire un algorithme qui lit un nombre r au clavier et calcule le périmètre et l’aire d’un disque de
rayon r.
Périmètre = 2x PI x r
aire = PI x r x r
K.Kassabi 13/10/2023 29

Vous aimerez peut-être aussi