République Algérienne Démocratique et Populaire
Université des Sciences et de la Technologie Houari Boumediene
Faculté d’Electronique et d’Informatique
Département Informatique
Cours Algorithmique de 1ere Année MI
Présenté par : Medjadba([Link]@[Link])
Définition sur – wikipédia -
L’informatique est un domaine d’activité scientifique, technique
et industriel concernant le traitement automatique de
l’information numérique par l’exécution de programmes
informatiques par des machines.
Traitements
Informations Machines
Numériques
Programmes
Mais comment faire tout ça ?
2
Depuis des millénaires, l’homme a créé et utilisé des outils l'aidant à
réaliser des taches pénibles
3
Pour créer un outils qui nous aide à réaliser une tache, il faut bien
comprendre ce qu’on doit faire. Au final, cet outil va nous remplacer
dans la réalisation de la tache.
Qu'est ce qui se passe dans le traitement de l’information ?
En tant qu’être humain, pour traiter l’information :
Avoir Traiter Donner
l’information l’information Les résultats
4
Donc l’outil qui va nous remplacer doit faire la même chose !
Mais d’une manière Automatique
Avoir Traiter Donner
l’information l’information Les résultats
Unité Centrale de
Unité d’Entrée Traitement Unité de Sortie
5
Donc l’outil qui va nous remplacer doit faire la même chose !
Mais d’une manière Automatique
Avoir Traiter Donner
l’information l’information Les résultats
Unité Unité Centrale de Unité de
d’Entrée Traitement Sortie
(UE) (UCT) (US)
Système Informatique
6
Oui, mais comment faire passer l’information ?
Bonne question, on sait que chaque être vivant à son propre langage de
communication: les être humains, les abeilles, les fourmis,…
OK, mais notre fameuse machine n’est pas un être vivant !!!!
C’est vrai, mais on peut toujours lui donner une vie. Une personne
sourde, on trouve toujours un moyen pour lui transmettre l’information
non ? On utilise un langage de signe !
Alors là aussi, on va utiliser un langage de signe ! Bon plus exactement
un signal ! Un signal électrique, oui pourquoi pas
On utilise des zéros (0) et des uns (1), qu’on appelle BIT (BInary digiT).
Et qu’est ce qu’on peut faire avec des 0 et des 1 ?!!!
SOS… 7
On veut
communiquer
en utilisant des
0 et des 1
seulement
C’est Bon, les MATHEMATIQUES sont là.
On peut facilement passer du système DECIMAL au système BINAIRE
et inversement du système BINAIRE au système DECIMAL
8
Mais comment la machine arrive à faire des opérations ?
La machine, c’est comme un enfant, on lui apprend des choses de base,
ensuite lorsqu’on lui demande de répéter il répète.
La machine est dotée d’un ensemble de circuits de base qui réalisent
des opérations simples.
Pour faire un traitement donné, c’est à nous de s’adapter: on doit
trouver des solutions en utilisant le même langage que la machine!
Mais quel langage parle la MACHINE ?!
Je ne
comprends
rien
9
Langage Machine
Le langage machine, ou code machine, est la suite de bits
qui est interprétée par le processeur (unité de traitement)
d'un ordinateur exécutant un programme informatique.
C'est le langage natif d'un processeur, c'est-à-dire le seul
qu'il puisse traiter. Il est composé d'instructions et de
données à traiter codées en binaire. (wikipédia)
Un mot mémoire est le nombre de bits que le processeur
traite a la fois. 10
TOUS les mots du langage machine ont la même taille, ce qui facilite
l’interprétation.
Exemple: Soit le message binaire suivant
Si on vous dit que la taille du mot est de 11 bits
Quel est le nombre de mots dans ce message ? 3
Maintenant, on vous dit que chaque mot est
composé de 3 parties de gauche à droite:
3 bits : désignent une opération
001 veut dire +
010 veut dire -
011 veut dire x
4 bits : désignent le premier nombre
4 bits : désignent le deuxième nombre
Le sens du mot est : exécuter l’opération sur les
deux nombres.
Donner l’interprétation de ce message ? 11
TOUS les mots du langage ont la même taille, ce qui facilite
l’interprétation.
Exemple: Soit le message binaire suivant
Si on vous dit que la taille du mot est de 11 bits
Quel est le nombre de mots dans ce message ?
Maintenant, on vous dit que chaque mot est 001 0101 0011
composé de 3 parties de gauche à droite: + 5 3
3 bits : désignent une opération 010 0111 0010
001 veut dire + - 7 2
010 veut dire - 011 0100 0101
011 veut dire x x 4 5
4 bits : désignent le premier nombre Le message correspond à :
4 bits : désignent le deuxième nombre
5+3
Le sens du mot est : exécuter l’opération sur les 7–2
deux nombres. 4x5
Donner l’interprétation de ce message ? 12
Exemple : demander à cette machine de faire la somme de 7+5 ?!.
Somme c’est le + donc : 001
7 en binaire sur 4 bits est : 0111 Le mot est : 001 0111 0101
5 en binaire sur 4 bits est : 0101
Voilà, c’est simple, vous parler Machine !
C’est pas aussi simple!?...
C’est vrai, ce n’est pas aussi simple !? Mais la machine ne comprend
que ça !
Ya pas un autre moyen ?
13
Mais, comment parler à une machine? Je dois utiliser des 0 et des 1?
traducteur !
Non, la solution est d’utiliser : un
Au lieu d’apprendre le langage Machine, on préfère des langages plus
simples (langages de programmation : Pascal, C, Python, Java,…), puis
on passe par une phase de traduction pour arriver au langage
Machine.
La phase de traduction est généralement assuré par un programme
qu’on appelle Compilateur.
Un Compilateur informatique est un programme qui traduit le
code source (compréhensible par les humains) en code binaire
(compréhensible par les machines). Le but étant de générer un
programme exécutable par un ordinateur.
Mais quel langage de programmation doit-on apprendre ?
14
On peut choisir n’importe quel langage.
Mais le plus important est de savoir présenter une solution
Informatique à un problème donné, de sorte à ce que la machine
puisse l’exécuter.
Ce savoir faire est le but du module
ALGORITHMIQUE
Objectif du cours
Apprendre les concepts de base de l'algorithmique et de la
programmation.
Etre capable de mettre en œuvre ces concepts pour analyser des
problèmes simples et écrire les programmes correspondants.
Apprendre le langage de programmation C
15
16
Etapes de résolution d’un problème
Analyse du problème : qu’est ce qu’on veut faire ?
Définir les données : leurs caractéristiques, leurs types.
Définir les résultats : leurs caractéristiques, leurs types.
Définir les relations entre résultats-données : comment passer des
données aux résultats ?
Exemple : Préparer un litre de jus d’orange naturel concentré à 60%.
Analyse
La préparation d’un jus d’orange naturel concentré à 60% consiste à
extraire 60 cl de jus du fruit orange, puis lui rajouter 40 cl d’eau.
Pour le sucrer, on peut rajouter du miel ou des dattes.
17
Les données
5 à 8 oranges suivant la qualité (plus ou moins juteuse), 40 cl d’eau,
du miel ou quelques dattes, suivant le gout qu’on veut.
En plus des outils : couteau, presse (ou mixeur), récipient, bouteille,
passoire, entonnoir.
Le résultat
1 litre de jus (liquide) concentré à 60%.
Relations entre résultats-données
Pour passer des données au résultat, on exécute les actions suivantes :
1- Laver les oranges si elle ne sont pas propres.
2- Couper en deux pour une presse ou peler puis couper en morceaux
pour un mixeur puis enlever les pépins.
3- Si on utilise les dattes, dénoyauter puis couper en morceaux.
4- Presser les oranges ou mixer les oranges et les dattes avec l’eau
(suivant l’outil).
18
5- Si on utilise une presse, diluer le miel dans l’eau.
6- Mettre le tous dans le récipient.
7- Verser dans la bouteille à travers l’entonnoir. Utiliser la passoire
si on veut un jus clair.
C’est ce qu’on appelle
Un Algorithme
Définition
Un algorithme est une suite finie d'actions élémentaires exécutées
dans un ordre précis sur un ensemble de données permettant de
résoudre un problème.
Pour un problème informatique
L’analyse consiste à :
19
Définir tous les objets utilisés représentant les données en entrée et
les résultats en sortie.
Définir toutes les actions élémentaires qui seront exécutées dans
l’ordre pour aboutir aux résultats.
C’est quoi un objet ?
Un objet est l'entité manipulée par une action. On distingue deux
classes d'objets: les constantes et les variables.
Exemple
L’action S = A + 2 manipule trois objets. 2 objets variables (S et A) et
un objet constant (2).
Quelle est la différence entre variable et constante ?
Un objet de classe variable, peut changer de valeur dans l’algorithme
et peut être modifié. (c’est comme les oranges).
Par contre, un objet de classe constante, garde la même valeur
pendant toute l’exécution de l’algorithme. (c’est comme le couteau)
20
Caractéristiques d’un Objet
Un objet est caractérisé par :
1- Nom : appelé identificateur, il permet d’identifier l’objet.
2- Type : l'ensemble des valeurs que peut prendre un objet (réel,
entier, caractère…), c’est le domaine de définition.
3- Valeur : un élément du type pris à un instant donné.
Exemple
Nom : Age
Type : entier
Valeur : 18
Règle de construction des identificateurs
Un identificateur doit respecter certaines règles de construction:
- Il est formé des caractères de l’alphabet (A à Z ou a à z) des chiffres
(0 à 9) et du caractère souligné ( _ : tiret du 8).
- Peut être au moins un caractère.
- Le premier caractère doit être une lettre.
21
Exemple
Identificateurs corrects : TTC, Gr3, sect, Nom_Et, Note_1_2_3, X, y
Identificateurs incorrects : 9TH, Gr 3, S?, Nom-Et
Remarque
- De préférence choisir des noms significatifs.
- Certains mots ne sont pas permis (voir mots clés).
- Eviter les noms longs.
22
Représentation d’un Algorithme
Historiquement, il y a deux façons pour représenter un algorithme
1- Organigramme
C’est une représentation graphique en utilisant des symboles
Début ou Fin
Entrées / Sorties
Traitements
Tests
Enchainement des Actions
Offre une vue d’ensemble de l’algorithme. Mais elle est quasiment
abandonnée aujourd’hui 23
Exemple
Résoudre une équation : A x + B = 0
C’est une équation du premier degré. Sa solution est –B/A à
condition que A ≠ 0. Si A est nul, l’équation n’a pas solution dans R.
Début
A,B
Non Oui
X = -B/A A=0 Afficher ‘Pas de solution’
Afficher X
Fin
24
2- Algorithme
C’est une représentation textuelle normalisée.
La structure générale d’un algorithme ressemble à une recette de
cuisine, il est formé de trois parties.
Titre Partie Entête
Ingrédients Partie Déclaration
Préparation Partie Action
Au lieu d’utiliser des symboles, on utilise des mots spéciaux appelés :
Mots Réservés ou Mots Clés
25
Partie Entête
Elle permet de définir le nom de l’algorithme. Pour cela on utilise un
mot clé : Algorithme, et on l’utilise suivant une syntaxe qu’il faut
respecter.
Algorithme <nomAlgo> ;
<nomAlgo> : c’est un identificateur représentant le nom de
l’algorithme. On peut donner n’importe quel nom, mais il est
préférable qu’il soit représentatif.
Exemple
Algorithme Facture;
Algorithme equation;
Algorithme calcul_somme;
26
Partie Déclaration
Dans cette partie on déclare tous les objets manipulés dans
l’algorithme (constantes et variables) en spécifiant deux
caractéristiques :
Le nom et le type pour les variables.
Le nom et la valeur pour les constantes.
La syntaxe de déclaration pour les deux types d’objets est :
Const <IdObj> = <ValeurObj> ;
Var <IdObj> : <TypeObj> ;
<IdObj> : est l’identificateur de l’objet.
<ValeurObj> : est la valeur de l’objet
<TypeObj> : est le type de l’objet.
Exemple : Const Pi= 3,141592 ; Var Age : entier ;
Remarque : Les objets de même type peuvent être regroupés :
Exemple: Var Note1,Note2,Moyenne : reel ;
27
Quel est l’effet de la déclaration dans le système ?
Les déclarations permettent au compilateur (pendant l’exécution) de
réserver un espace mémoire à chaque objet dont la taille varie
suivant le type de l’identificateur déclaré.
Nous avons vu que la machine possède une mémoire. Cette mémoire
peut recevoir des ordre de mémorisation.
Alors chaque déclaration correspond à un ordre qui dit à la mémoire :
« Préparer moi un espace appelé <IdObj> »
Mémoire Centrale
Pi
Exemple
3,141592
Const Pi = 3,141592;
Age Moyenne
Var Age : entier;
Moyenne : reel;
Sect : caractère; Sect
Mais c’est quoi entier, reel,
caractère ? 28
Bonne remarque.
Et bien ces mots sont des mots clés, ils correspondent à ce qu’on
appelle des types de base.
Au fait, le type défini la taille de l’espace nécessaire à la sauvegarde
d’un objet.
Et justement, pour ne pas gaspiller l’espace mémoire on propose
différents types avec différentes tailles pour répondre aux besoins de
l’utilisateur.
C’est comme des moyens de transport.
Pour transporter 3 personnes, une voiture suffit.
Pour transporter 50 personnes, il faut un bus.
Mais mobiliser un bus pour 3 personnes, c’est… ?!
Types de base (Simples)
On définit 4 types de base : Entier, Reel, Caractère et Booléen.
29
Le type Entier
Le type entier représente un sous-ensemble fini de nombres entiers
relatifs ( Z).
En générale, l’espace réservé pour un entier est 4 Octets = 32 bits.
Mais on utilise aussi des entiers sur 8 Octets = 64 bits (entier long).
Entier Valeur minimale Valeur maximale
2 Octets = 16 bits -32768 +32767
4 Octets = 32 bits -2 147 483 648 +2 147 483 647
8 Octets = 64 bits - 263 +(263 – 1)
Remarque : en algorithmique, on utilise le type entier sans préciser
s’il est court ou long.
Opérations sur les entiers
Opérations arithmétiques : + , - , * , div , mod , ( / : résultat réel)
mod : reste de la division (ex: 5 mod 2 = 1 ), div : (ex: 5 div 2 = 2)
Opérations de relations : < , , > , , = , ( <= , >= , <> )
30
Le type Reel
Le type reel représente approximativement un sous-ensemble fini
de nombres réels ( R).
Les réels sont représenté au format scientifique (± M 10E).
Comme le nombre de bits est limité, la représentation sera
approximative.
En générale, l’espace réservé pour un réel est 4 Octets = 32 bits.
Mais on utilise aussi des réels sur 8 Octets = 64 bits (réel double).
Réel Nombres négatifs Nombres positifs
4 Octets = 32 bits -3,4 × 1038 à -1,17 × 10−38 +1,17 × 10−38 à +3,4 × 1038
8 Octets = 64 bits -1.79 × 10308 à -2,2 × 10−308 +2,2 × 10−308 à +1.79 × 10308
31
Remarque : en algorithmique, on utilise le type reel sans préciser s’il
est simple ou double.
Opérations sur les réels
Opérations arithmétiques : + , - , * , /
Opérations de relations : < , , > , , = , ( <= , >= , <> )
Le type Caractere
Le type caractere représente tous les symboles manipulés (alphabet,
chiffres, signe de ponctuation, …).
Il prend un espace de 1 Octet = 8 bits en mémoire.
L’ensemble de ces caractères est regroupé dans une table, appelée :
Table ASCII (American Standard Code for Information Interchange)
Opérations sur les caractères
Les seules opérations permises sur les caractères sont les
Opérations de relations : < , , > , , = , ( <= , >= , <> )
32
33
Le type Booleen
Le type booleen représente des objets booleens (logiques) ne
pouvant prendre que deux valeurs: Vrai ou Faux.
Il prend un espace de 1 Octet = 8 bits en mémoire.
Opérations sur les booleens
Les seules opérations permises sur les booléens sont les
Opérations logiques : ET, OU, NON (négation).
Opérations de relations : = , (<> )
Rappels
A B NON A A ET B A OU B
F F V F F
F V V F V
V F F F V
V V F V V
34
Partie Action
Cette partie contient les différentes actions élémentaires décrivant la
solution. Debut
Sa syntaxe est : <Action1> ;
<Action2> ;
---
<ActionN> ;
Fin.
Nous allons commencer à apprendre ces action qui nous permettent
de communiquer avec notre fameuse machine ?!
Actions de Lecture/Ecriture (Entrée/Sortie)
Actions de Lecture (Entrée)
Cette action permet d’introduire les données d’une unité d’entrée
(Clavier) vers la mémoire centrale.
Elle initialise un objet dont l’espace mémoire est déjà réservé.
35
Sa syntaxe est :
Lire(<IdObj>) ;
<IdObj> : est l’identificateur (nom) de l’objet manipulé.
Mémoire Centrale
Exemple
Age
Soient deux objets:
Age : entier; Moyenne : reel;
Lire(Age) ; Moyenne
L’exécution de cette action permet de
saisir une valeur entière au clavier
Si on tape la valeur 18 elle sera stockée dans l’espace nommé Age
Lire(Moyenne) ;
Si on tape la valeur 15.5 elle sera stockée dans l’espace nommé
Moyenne
36
Remarque
On peut lire plusieurs objets avec une seule action en séparant les
noms d’objets par des virgules.
Lire(Age); Lire(Moyenne); est équivalent à : Lire(Age,Moyenne);
Au moment de la saisie, on sépare les valeurs des objets par des
espaces : 1815.5
Actions d’Ecriture (Sortie)
Cette action permet d’afficher les données depuis la mémoire
centrale vers une unité de sortie (Ecran).
Elle affiche la valeur mémorisée d’un objet au moment de l’exécution
(à un instant t).
Comme elle peut afficher une constante.
Sa syntaxe est :
Ecrire(<Expression>) ;
<Expression> : peut prendre différentes formes.
37
A Suivre …
38