Royaume du Maroc
Ministère de l'Enseignement Supérieur, de la Recherche Scientifique
et de l’Innovation
Université Sultan Moulay Slimane
L’Ecole Supérieure de Technologie – Fkih Ben Salah
(EST-FBS)
Algorithmiques
Pr. REGRAGUI Younes
Email:
[email protected]Année universitaire : 2023/2024
Plan
Introduction générale sur l’informatique
Introduction sur l’Algorithmiques
Eléments de base
Structures conditionnelles
Structures itératives
Tableaux
2
Introduction à l’informatique
Computer Science
INFORMATIQUE ? en anglais
INFORMATION AUTOMATIQUE
Art d’entraîner automatiquement des actions
Science de l’information (Ce que fait qqn)
Traitement automatique de l’information Cette aspect
En utilisant une Machine automatique d’automatisation
se fait à l’aide d’un
ORDINATEUR
3
L’ordinateur
Machine qui permet de traiter de l’information :
d’acquérir et de conserver de l’information (acquisition,
stockage en utilisant des mémoires)
d’effectuer des traitements (calcul),
de restituer les informations stockées (restitution) (c.-à-d.
la récupération de cette information via un processus qui
permet à une information d'être extraite de la mémoire.)
Permet de lier «information» avec un codage spécifique
«données» (0 ou 1)
Différents types d’informations : valeurs numériques, textes,
images, sons, …: tout cela avec des 0 ou 1
4
L’ordinateur
Schéma de principe du traitement de l’information
Données à l’état brut
ENTREE
Données corrigées
TRAITEMENT Résultats
Exemple: Par ordinateur
SORTIE
Par exemple: l’identité
l'information
portée par le
génétique d’une personne
génome 5
La relation de concurrence
entre l’ordinateur et l’homme
Raison du remplacement (Pourquoi remplacer l’homme par
l’ordinateur ?):
Vitesse (pour l’exécution des opérations « bas niveau »)
Fiabilité (répétitivité) (c.-à-d. l’ordinateur peut exécuter
plusieurs choses plusieurs fois )
Mémoire (c.-à-d. une grande mémoire avec un bon gestion)
Coût (c.-à-d. beaucoup de travail/effort avec un coût réduit)
2 types d’ « informaticiens »
les utilisateurs des outils informatiques (programmes): il les
utilisent pour servir leur besoin (comme dans les banques
ou des entreprises de gestion et de commerce par exemple)
Suite dans l’autre diapo … 6
La relation de concurrence
entre l’ordinateur et l’homme
lesconcepteurs de ces outils : c’est votre but de ce cours,
ceux qui suivent un ensembles d’étapes pour créer ces
Outils parmi ces étapes on trouve l’algorithmique)
7
Domaines de l’informatique
Cela inclut deux types de domaines:
Domaine du matériel (hardware)
partie physique de l’ordinateur
composants constituant un ordinateur (par ex:
microprocesseur …)
support de stockage de l’information (par ex: disque dur
…)
Domaine du logiciel (software)
Instructions (*) expliquant à l’ordinateur comment traiter
un problème
Cela nécessite de décrire des algorithmes et représentations
informatiques de ces instructions
(*) Une instruction est une forme d’information communiquée qui est à la fois une commande et une explication à
l’ordinateur pour décrire l’action, le comportement, la méthode ou la tache qu’il devra exécuter. 8
Matériel
Principe de base est déterminé par: John Von Newmann
1946 =véritable naissance de l’informatique (c’est
un mathématicien et physicien américano-hongrois Il a
apporté d'importantes contributions en mécanique
quantique, en analyse fonctionnelle, en logique
mathématique, en informatique théorique, en sciences
économiques et dans beaucoup d'autres domaines des
mathématiques et de la physique.)
Aussi il y a les contributions des ancêtres ces étapes
importantes:
Boulier chinois : une ode au calcul
Numération binaire par Francis BACON en 1600
Machine à calculer de Pascal, 1642 : dépassée par
l’apparition de l’électronique et des semi-conducteurs
9
Matériel
Aussi il y a les contributions des ancêtres ces étapes
importantes (Suite):
Mémoire mécanique de Charles Babbage, 1833. Conçoit
une mémoire séparée des organes d’entrée et de sortie
Algèbre de Boole 1850 (bases de l’automatisme),
logique symbolique créé par le Mathématicien et
logicien anglais George Boole
Machine de Hollerith, 1890. Il utilisa le premier la carte
perforée, comme support universel d’information , mis
en œuvre dans les premières générations d’ordinateurs.
10
Les ancêtres des ordinateurs
(Exemple de la Pascaline)
La Pascaline, initialement dénommée
machine d’arithmétique puis roue pascaline1,
est une calculatrice mécanique inventée par
Blaise Pascal et considérée comme la
première machine à calculer.
Machine de Pascal
(1645)
11
Générations d’ordinateurs
Génération 1 (~1945 - 1960)
machines électroniques composées de circuits à lampes à
vide (et non transistors à semi-conducteurs)
place importante (équivalent d’une salle)
performances de l’ordre de 1000 opérations/s
programmation en langage binaire
faible portabilité des programmes
programme et données fournis sous forme
de cartes perforées, résultats sur une imprimante Cartes perforées
(pas de stockage)
12
Générations d’ordinateurs
Génération 2 (1960 - 1965)
découverte des transistors qui remplaceront les circuits à
lampes à vide
Apparition des 1ère mémoires (à tores magnétiques)
évite l'échauffement, gain de place, fiabilité
performances d’environ 100 000 opérations/s
programmation en langage binaire mais
aussi à l’aide des premiers langages
évolués (Fortran, Cobol, ...)
Exemple: mémoires à tores magnétiques 13
Générations d’ordinateurs
Génération 3 (1965 - 1975)
invention du circuit intégré permettant de placer des
dizaines de transistors sur une puce de silicium
performances de 109 à 1012 opérations/s
généralisation de la programmation en langage évolué
Les Systèmes d'Exploitation (OS) Permettent de gérer
plusieurs programmes différents sous le contrôle d'un
programme central
Exemple: circuit intégré
14
Générations d’ordinateurs
Génération 4 (1975 - ?)
exploitation du circuit intégré à grande échelle: plusieurs
dizaines de milliers (millions) de circuits peuvent être
intégrés sur une même puce
reproduction sur une seule puce d’une véritable micro
machine : le micro processeur. (En 1971 l'Intel 4004 fut le
premier microprocesseur)
diminution de la place occupé par un ordinateur
développement de l’ordinateur personnel.
La programmation s'oriente vers la programmation
OBJETS (orientés autour des données
et non plus des actions)
Exemple: Intel 4004 15
Générations d’ordinateurs
représentation simplifié d’un ordinateur
Carte vidéo
Ecran Mémoire Disque
Centrale Dur
Clavier
Unité de Disquette
Souris traitement
Haut- CDROM
parleurs Unité Centrale
Carte son Unités d’échange
Bus
Support de transfert
Périphériques de communication d'information entre les différents
Périphériques de mémorisation ensembles d'un ordinateur) .
16
Générations d’ordinateurs
(Composants internes d’un ordinateur )
17
Les périphériques
(Périphérique: une pièce de matériel qui peut effectuer une fonction
particulière)
18
Périphériques (Types de périphériques)
2 types de périphériques
périphériques de communication,
périphériques de mémorisation.
Périphériques de communication
Périphériques d’entrées
clavier
souris
Périphériques de sorties
écran
imprimantes
19
Les périphériques (Autres exemples de
périphériques de communication)
Les périphériques de communication
20
Les périphériques (Les périphériques
de mémorisation)
Périphériques de mémorisation
permettent de sauvegarder et de restituer des informations
(c.-à-d. Il y a la possibilité de récupérer ces information
suite à la demande)
quantité d’informations pouvant être mémorisée se mesure
en Octet (8 éléments binaires)
périphériques usuels de mémorisation:
disque dur
Disquette
CDROM, DVD
Clé USB
21
Schéma d’une configuration informatique
22
Le processeur (CPU)
Séquenceur d ’instructions
Interface du bus d’instructions
Décodeur d ’instructions
Unité de traitement
Unité arithmétique et logique
Registres:
Mémorise différents
états binaires (environ 10)
résultant des opérations
Unité de détection d’erreurs élémentaires:
Overflow
Retenue
Unité de contrôle Parité
23
L’unité centrale sur lequel on
trouve les connecteurs et le CPU
Connecteurs de souris et clavier Supports de barrettes
de mémoires
Connecteurs de contrôleur
de disquettes et disque dur
Emplacements de
cartes d ’extensions
Batterie
Puce du BIOS CPU
24
Algorithmiques ?
25
Introduction
Le but de ce cours
Rendre la machine capable à effectuer un travail à notre place
Problème: Comment expliquer à la «machine» qu’elle doit
prendre ce rôle
C.-à-d. ... comment le lui dire ou le lui apprendre afin qu’il
fasse le travail aussi bien que nous ?
Objectifs à atteindre:
Résoudre des problèmes «comme» une machine
Savoir expliciter son raisonnement
Savoir formaliser son raisonnement
Concevoir et écrire des algorithmes (séquence d’instructions
qui décrit comment résoudre un problème particulier)
26
Introduction
Algorithme
Un algorithme, est traduit dans un langage compréhensible
par l’ordinateur (ou langage de programmation, pour notre cas
se sera le langage C), donne un programme, qui peut ensuite
être exécuté, pour effectuer le traitement souhaité.
27
Introduction
Structure d’un algorithme (Un algorithme doit être lisible et compréhensible
par plusieurs personnes)
28
Introduction
Les étapes d’un algorithme (3 étapes)
Préparation du traitement
Données nécessaires à la résolution du problème (c.-à-d. des
données à entrer au début de l’algorithme)
Traitement
Résolution pas à pas, après décomposition en sous-problèmes
si nécessaire
Edition des résultats
impression à l’écran, dans un fichier, etc.
29
Introduction
Exemple 1 d’un
algorithme:
C’est quoi donc
le problème résolu
en suivant cet algorithme ?
30
Introduction
Exemple 2 d’un
algorithme:
Un algorithme est un peu comme une recette de cuisine. Cet exemple
illustre les opérations à suivre pour la réalisation d’une omelette:
1: Casser les œufs dans un bol.
2: Mélanger les œufs jusqu’à obtenir un mélange homogène.
3: Cuire le mélange d’œufs dans une poêle à température moyenne.
4: Lorsque cuite, glisser l’omelette dans une assiette. 31
Introduction
Exemple d’un algorithme (calcule de l’inverse d’un nombre):
Algorithme CalculeDeInverse
Variables Nombre, Inverse: réel {déclarations: réservation d'espace-
mémoire}
Début
{préparation du traitement}
Ecrire("Entrez une valeur de type réel:")
Lire(Nombre)
{traitement : calcul de l’inverse}
Inverse ←1 / Nombre
{présentation du résultat}
Ecrire("L’inverse de ", Nombre, "c'est ", Inverse)
Fin 32
Introduction
Les problèmes fondamentaux rencontré quand écrire un
algorithme, à savoir:
Complexité
En combien de temps un algorithme va -t-il atteindre le résultat
escompté?
De quel espace a-t-il besoin?
Calculabilité
Existe-t-il des tâches pour lesquelles il n'existe aucun algorithme ?
Etant donnée une tâche, peut-on dire s'il existe un algorithme qui la
résolve ?
Correction
Peut-on être sûr qu'un algorithme répond au problème pour lequel il a été
conçu?
33
Eléments de base
Variable
Elle peuvent stocker des chiffres, des nombres, des caractères
des chaîne de caractères..., dont la valeur peut être modifiée
au cours de l’exécution de l’algorithme
Une variable est une entité qui contient une information, elle
possède : un nom ou identifiant, une valeur et un type qui
caractérise l’ensemble des valeurs que peut prendre la variable
L’ensemble des variables est stocké dans la mémoire de
l’ordinateur
34
Eléments de base
Variable
Déclaration:
Variable : <liste d’identificateurs1> : typeVaraible1
<liste d’identificateurs2> : typeVariable2
Exemple:
Variable A, B : entier
d : réel
35
Eléments de base
Entier
C’est le type qui représente des nombres entiers relatifs (int,
integer)
Il peut être codé en entier simple sur deux octets ou long sur
quatre octets
Réel
C’est le type qui représente des nombres réels (float)
Il peut être codé en réel simple sur 4 octets ou double sur 8
octets
Il peut être représenté en forme simple (par exemple 2.5, -
2.0…) ou exponentielle (par exemple 2.1 e4, -6,98 E-2…)
36
Introduction
Caractère
Il est représenté en code ASCII
Il permet d’avoir une relation d’ordre
Exemple: ‘A’ < ‘a’ car en ASCII 65<97 et ‘A’<‘Z’ car en ASCII
65<90
Chaîne de caractère
Elle représente un tableau de caractères.
Pour gérer les chaines de caractères, donc, plusieurs fonctions
prédéfinies : Longueur(S) donne la longueur de S.
Booléen
Il présente les deux valeurs Vrai et Faux (1 et 0)
37
Eléments de base
Constante
Elle peuvent stocker des chiffres, des nombres, des caractères des
chaîne de caractères..., dont la valeur ne peut être modifiée au
cours de l’exécution de l’algorithme.
Déclaration:
Constante : <NomVariable> = <ValeurVariable> :
TypeVariable
Exemple:
Constante: A = 1 : entier
Constante: PI=3.14 : réel
38
Eléments de base
Opérateurs
Un opérateur est un symbole d’opération qui permet d’agir
sur des variables ou de faire des “calculs”
Une opérande est une entité (variable, constante ou
expression) utilisée par un opérateur
Une expression est une combinaison d’opérateur(s) et
d’opérande(s), elle est évaluée durant l’exécution de
l’algorithme, et possède une valeur (son interprétation) et un
type
39
Eléments de base
Types d’opérateurs
Un opérateur est associé à un type et ne peut être utilisé qu’avec des
types arithmétiques (c.-à-d. on ne peut pas additionner un entier et un
caractère).
40
Eléments de base
Priorité des Opérateurs
En arithmétique les opérateurs * et / sont prioritaires sur + et -
Pour les booléens, la priorité des opérateurs suit l’ordre
suivant: Exemple:
non, et, ouExclusif et ou
Opérateur d’affectation
Il permet d’affecter une valeur de l’opérande droit à une variable
(opérande gauche), il est représenté par : ←
<Identificateur> ← <expression> || <constante> ||
<identificateur> 41
Eléments de base
Opérateur d’affectation
Exemple:
Val ← 3
val ← val ×2
nom ← "Yassine"
val1 ← 6
val2 ← val1
42
Eléments de base
Entrée\Sortie
Un algorithme peut avoir des interactions avec l’utilisateur et
communiquer avec lui dans les deux sens, les sorties sont
des envois de messages a l'utilisateur, les entrées sont des
informations fournies par l'utilisateur.
Il peut aussi demander à l’utilisateur de saisir une information
afin de la stocker dans une variable et peut afficher un résultat
(du texte ou le contenu d’une variable)
43
Eléments de base
Instruction d'écriture (Sortie)
Elle permet la restitution/(redirection) de résultats sur/vers le
périphérique de sortie (en général l'écran)
Syntaxe : écrire(liste d'expressions)
Cette instruction réalise simplement l'affichage des valeurs des
expressions décrites sous forme d’une seule sortie ou d’une
liste de données en sortie.
Ces instructions peuvent être simplement des variables ayant
des valeurs ou même des nombres ou des commentaires écrits
sous forme de chaînes de caractères.
Exemple : écrire(x, y+2, "bonjour")
44
Eléments de base
Instruction lecture (Entrée)
L'instruction de prise de données sur le périphérique d'entrée (en
général le clavier)
Syntaxe : lire(liste de variables)
L'exécution de cette instruction consiste à affecter une valeur
à la variable en prenant cette valeur sur le périphérique d'entrée
Exemple :
Lire(x, y, A)
45
Eléments de base
Exemple d’un algorithme: Cet algorithme demande à
l'utilisateur de saisir une valeur numérique, ensuite il affiche la
valeur saisie et incrémente sa valeur de 1.
Algorithme : Affichage_incrément
variables : a, b : entier
DEBUT
écrire("Saisissez une valeur numérique")
lire(a)
b←a+1
écrire("Vous avez saisi la valeur ", a, ". ")
écrire(a, "+ 1 = ", b)
FIN 46
Exercices …
La série d’exercices de TDs
n° 1
47