Vous êtes sur la page 1sur 25

Définition

INFORMATIQUE DE BASE
 Informatique = Information + Automatique

1ère année ENCG


Année universitaire 2011-2012
traitement automatique de l’information
par des machines

Yassine El Ghoumari Yassine El Ghoumari

L’invention du calcul

Les systèmes numériques


 Utilisations de systèmes primitifs à base 5, 10, 60

 Utilisation des chiffres romains : I,


I V,
V X,
X L,
L C

Histoire de  calculer n’est pas trivial !

l’informatique  véritable savoir et maîtrise de ces systèmes pour réaliser


des opérations de base

 apparition du 0 au XIIe siècle en Europe et mise en place de


la numérotation décimale

Yassine El Ghoumari Yassine El Ghoumari

La mécanisation du calcul La mécanisation du calcul


 1614 L’écossais John Neper (Napier, 1550-1617) invente les
logarithmes
Les abaques : boulier
 simplifier les calculs trigonométriques en astronomie
 consiste à remplacer une multiplication par une addition +
lecture d’une valeur dans une table

Yassine El Ghoumari Yassine El Ghoumari

1
La mécanisation du calcul La mécanisation du calcul
Exemple : on veut calculer :
Deuxième méthode (Neper) : utiliser une table
25x24
Première méthode : poser le calcul 2 5 x 2 4 = 2 (5+4) = 2 9
32
x 16
 fastidieux
192 N 1 2 3 4 5 6 7 8 9
320
 erreurs
512 2N 2 4 8 16 32 64 128 256 512

8
Yassine El Ghoumari

La mécanisation du calcul La mécanisation du calcul

 1632 William Oughtred invente la règle à calcul basée sur Les premières machines à calculer
le principe des logarithmes

 utilisée pour les calculs scientifiques jusqu’en 1970  1623 Schikard


 1642 Pascaline (Bl.
(Bl Pascal)
 addition, soustraction

 1670 Leibniz (Gottfried Leibniz)


 pascaline + mult, div, racine carrée
 1830 Colmar (Charles Xavier
Thomas)
 Arithmomètre
9 10

La mécanisation du calcul La mécanisation du calcul

1822 Machine différentielle (Ch Babbage)


L’Aube de la révolution industrielle 2000 pièces de cuivre faites main, 2 tonnes
Calcul du mouvement des planètes
Concept de registre
 1728 Falcon construit un métier à tisser commandé par 1830 Machine Analytique (Ch Babbage)
planchette de bois
50.000 pièces
1805 Jacquard perfectionne le modèle et utilise des capable de prendre des décisions en fonction
cartes en carton perforées des résultats précédents (contrôle de séquence,
branchements et boucles)
réaliséeentre 1989 et 1991 bi-centenaire de la
naissance de Babbage

11 12

2
La mécanisation du calcul Les calculateurs électromécaniques
1843 Augusta Ada Comtesse de Lovelace
Description de la machine analytique  1890 Hermann Hollerith construit un calculateur
statistique électromécanique
Premiers programmes (Algorithmes)

Boucles et branchements  plus performant que les calculateurs mécaniques


 utilisation de cartes perforées
 utilisé pour le recensement américain de 1890
 fonde la Tabulating Machine Company => IBM (International
Business Machines)

Ada (1979)
Langage de programmation (J. Ichbiach)

13 14
Yassine El Ghoumari

Les calculateurs électromécaniques La première génération d’ordinateurs

ENIAC (Electronic Numerical Integrator And Calculator)


Avancées Technologiques  construit par l’armée américaine entre 1943 et 1945, Philadelphie
 5000 additions par secondes

 1904 Diode par John Fleming  500 000 dollars


500.000 d ll
 30 tonnes
 1907 Triode par L De Forest  30 m de long x 2,50 haut
 160 m2
 1.500 relais, 17.468 tubes à vide
 problèmes liés à la chaleur et à la consommation électrique
 premier bug

15 16

La seconde génération d’ordinateurs La troisième génération d’ordinateurs

1948 Invention du Transistor bipolaire à Jonction


 Walter H. Brattain, John Bardeen et William Shockley aux Bell Labs  1958 Invention du Circuit Intégré par
 Avantages du Transistor Jack Kilby de Texas Instruments
((miniaturisation))
1956 TRADIC
1961 FairChild Corp commercialise la
1957 FORTRAN par John Backus d’IBM première série de circuits intégrés
 1968 Premier ordinateur avec Circuits
intégrés

17 18

3
Le microprocesseur La quatrième génération

1968 Intel (Gordon Moore, Robert Noyce, Andy Grove)

1971 : le 4004 pour Busicom conçu par Ted Hoff

Galette (wafer)

19 20

La micro-informatique
 Développé pour l’INRA par André Truong et François Gernelle

L’ère de la Micro-
Informatique
 1973 Le
L Micral
Mi lN
8500 F
Depuis 1980

 Intel 8008
 1974 + Ecran + Clavier
 1975 + Disque dur

21 22

La micro-informatique La micro-informatique
Diversité des micro-ordinateurs / systèmes
Tout commença dans un garage… 1976

Steve Jobs et Steve Wozniak mettent


au point le premier Apple

MOS 6502 à 1 Mhz


8ko RAM
$666.66

Macintosh 1984
Motorola 68000, 8 Mhz
128 ko RAM
$2500

23 24

4
La micro-informatique La micro-informatique

MOS 6502, 8 ko RAM, 8600 F 1981 IBM PC 5150 Personal Computer


Intel8088 à 4.77 MHz
MOS 6502, 5 ko RAM, 2500 F
64 Ko de Ram,
40 Ko de Rom,
Rom
lecteur de disquettes 5"25
système d'exploitation PC-DOS 1.0
3000 $

Uniformisation
Lecteur disquette 4000 F

MOS 6510, 64 ko RAM, 4000 F


25 26

L’ère du Numérique

L’ère du Numérique  1981 Philips commercialise le Compact Disk

 1988 CD-R
Depuis 1990
 1996 DVD

 1992 norme MPEG

27 28

Actuellement

Les ordinateurs multi-cores : 2005

Le futur

Core 2 duo : i3, i5, i7: processeur avec carte graphique intégrée

29 30

5
Le futur L’ordinateur Biologique
Les ordinateurs de demain
 Résolution d’un problème mathématique avec un échantillon
d’ADN
 Biologique (ADN)
Capable de d’effectuer de simples opérations comme identifier
 Optique (Photon) des chiffres binaire

 Quantique (Spin électron)  1000 milliard de « machines à calculer » dans une goute d’eau

 Neuronal (couplé aux neurones)  Consommation en énergie infinitésimale


 à Nanopuce
 à Supraconducteur  Fiabilité de 99,9%

31 32

L’ordinateur Quantique

 Repose sur des propriétés quantiques de la matière

 L'élément de base de l'ordinateur quantique : le qubit

 Un ordinateur de 100 qubits permettrait de simuler le

Architecture des
fonctionnement de tout un cerveau humain

ordinateurs
Un de 300 qubits l'évolution de l'univers entier depuis le
Big Bang

 Les ordinateurs quantiques actuels n'ont pour le moment


que 7 qubits

33
Yassine El Ghoumari

Définition d’un ordinateur Schéma fonctionnel


Saisie Traitement Restitution

 Machine qui : Données


UC Résultats
Instructions
 saisit (périphériques d’entrée)
d entrée), Mémoire
Mé i
 stocke (mémoire),

 traite (programmes) Périphériques de sortie


Périphériques d’entrée
Mémoires auxiliaires
 restitue (périphériques de sortie) des
informations Ecran
Modem
Joystick Scanner Micro Souris Disquette

35 CD-ROM 36
Modem Caméra Disque dur
Clavier Imprimante
Haut parleur

6
Constituants Constituants
Logiciel (Software)
Composants matériels (Hardware) • immatériel (non tangible)
• Tout ce qui compose l’ordinateur et ses • ensemble de programmes exécutables par l’ordinateur
accessoires
• Chaque composant possède une fonction Différents types de logiciels
particulière
• calcul • système d’exploitation (MS-DOS, Windows, Unix)
• stockage des données • logiciels standards comme Word, Excel...
• affichage vidéo • progiciels : logiciels spécifiques (paye, comptabilité, ...)
• gestion du clavier...
 Le logiciel pilote le matériel
37 38

Codage binaire Codage binaire

 Le langage des ordinateurs  Un même nombre peut être représenté


dans plusieurs bases
 Toutes communications à l'intérieur
l intérieur de • 123 en base 10 ((décimal))
l'ordinateur sont faites avec des signaux • 1111011 en base 2 (binaire)
électriques • 173 en base 8 (octale)
• 0: éteint (absence de signal électrique) • 7B en base 16 (hexadécimale)
• 1: allumé (présence de signal électrique)

39 40

Codage binaire Exemple


 De la base 10 à la base 2
• Il faut diviser le nombre par 2 puis réitérer
l'opération en considérant que le nouveau
numérateur
é t estt l'ancien
l' i quotient
ti t jusqu'à
j 'à ce que ce
dernier soit nul. La suite inverse des restes
représente le nombre binaire

Ecrire 10 en base 2

41 42

7
Codage binaire Schéma fonctionnel
 Les opérations élémentaires en base 10
s’appliquent de la même façon en base 2
• Exemple:
p Addition,, soustraction,, multiplication,
p ,
division

43 44

L’unité Centrale L’unité Centrale


Partie de l’ordinateur qui contient les circuits de base
Fonctions • la mémoire principale
• Sélectionner et exécuter les instructions du programme • la mémoire vive (RAM)
en cours • la mémoire morte ((ROM))
• la mémoire cache
• le microprocesseur
• les circuits de calcul (UAL-L’unité arithmétique et
logique)
• l’unité de contrôle ou de commande UC
• l’horloge système
• l’unité d’entrée-sortie

45 46

L’horloge L’unité d’entrée-sortie


• Elle contrôle et synchronise le microprocesseur et les
composants associés • contrôle et gère le transfert d’informations entre l’UC et les
périphériques
• Sa vitesse (fréquence) est exprimée généralement en
mégahertz (MHz) cc’est
est-à-dire
à dire en million de cycles par • Exemples
seconde • carte graphique (écran)
• carte contrôleur (disque dur)
• L’efficacité du microprocesseur est directement • carte son (micro, haut-parleur)
proportionnelle à la fréquence de l’horloge : une fréquence
élevée est donc souhaitable

• Exemples: Intel i7, environ 3,4 GHz


47 48

8
Les Périphériques Les Périphériques d’entrée
Définition
• Définition
• Recueillent les informations qui sont ensuite transformées
•Tout ce qui gravite autour de l’UC c’est-à-dire l’écran, le (numérisées i.e. codées en binaires) pour être utilisables
clavier, la souris, les mémoires auxiliaires, l’imprimante, par la machine et transférées en mémoire principale
le scanner,
scanner le micro
micro, les haut-parleurs
haut-parleurs.... (mémoire de l’UC)
l UC)

3 Catégories de périphériques
• Exemples
• clavier
•d’entrée (clavier, souris, scanner, joystick) • souris : dispositif de pointage complémentaire du clavier et
•de sortie (écran, imprimante, haut-parleur) de l’écran
•les mémoires auxiliaires (disque dur, disquette, CD- • scanner : permet de numériser un document
ROM) • autres : écran tactile, lecteur de codes barres, crayon
optique, caméra, joystick...
49 50

Les Périphériques de sortie La Mémoire


Définition
• Définition
• Transmettent l’information binaire de l’UC vers  Dispositif capable d’enregistrer, de stocker et de restituer des
l’extérieur sous une forme compréhensible par informations
l’utilisateur  Trois types
 RAM ou mémoire vive
 ROM ou mémoire morte
• Exemples  Mémoire de masse ou secondaire
• écran  Unité de stockage: Un composant électronique capable de
• imprimante mémoriser des tensions:
• haut-parleurs
 BIT (Binary DigiT) : unité de stockage élémentaire
 Les informations sont codées en binaires composés de 0 et de 1

51 52

La Mémoire La Mémoire
Unités de mesure Unités de mesure

1octet = 8 bits 1octet = 8 bits

1Ko (Kilo octet) 1 000 octets 1Ko (Kilo octet) =1 024 octets (210 octets)

1Mo (Méga octet)  1 000 000 octets 1Mo (Méga octet) = 1 048 576 octets (220 octets)

1Go (Giga octet)  1 000 000 000 octets 1Go (Giga octet) = 1 073 741 824 octets (230 octets)

1To (Téra octet)  1 000 000 000 000 octets 1To (Téra octet) = 1 099 511 627 776 octets (240 octets)

53 54

9
La Mémoire La Mémoire
 Structure  Caractéristiques
 La mémoire est organisée en cellules (octets ou mots)  Capacité : nombre d’octets
 Chaque cellule est repérée par son adresse qui permet  Accès
à l’ordinateur de trouver les informations dont il a besoin  direct : grâce à l’adresse, accès
 2 Modes d’accès à la mémoire i
immédiat
édi t à l’information
l’i f ti ((on parlel dde
 En lecture : aucun effet sur le contenu support adressable)
 En écriture : modifie son contenu  séquentiel : pour accéder à une
information, il faut avoir lu toutes les
précédentes (ex : cassette audio)
 Temps d’accès : temps écoulé entre l’instant
où l’information est demandée et celui où elle
est disponible (en ms)

55 56

La Mémoire Différentes mémoires


• Le contenu de la mémoire est composé  La mémoire vive ou RAM (Random Access Memory)
• de données • mémoire à accès direct à taille limitée
• et d’instructions • son contenu est volatile, i.e. il est perdu à chaque fois que
• code de l’opération élémentaire l’ordinateur ne fonctionne pas : d’où le besoin d’utiliser de la
• donnée(s) ou adresse des données mémoire
é i auxiliaire
ili i rémanente
é t
• endroit où l’ordinateur stocke temporairement les données et
• Programme instructions (programmes) qu’il est en train d’utiliser et
• Ensemble d’instructions et de données d’exécuter
• Traduites en signaux électriques • contient tous les programmes en cours d’exécution
compréhensibles par le matériel • Capacité de 1 Go à 4 Go

57 58

La mémoire morte
(Read Only Memory) La mémoire cache
• La transmission entre la RAM et le microprocesseur est
• mémoire permanente et inaltérable plus lente que le potentiel de vitesse du microprocesseur

• contient des petits programmes écrits par le constructeur • Mémoire cache (niveau
(ni ea L1 ou
o L2)
pour la mise en route de l’ordinateur BIOS (Basic
Input/Output System)
• zone de mémoire ultra-rapide où sont conservées les
données et instructions qui reviennent le plus souvent
• identifie les différents composants de la machine et vérifie • mémoire interne de petite taille (dizaines de Ko)
leur bon fonctionnement
• Type non-volatile (Flash)

• Capacité : 3 Mo

59 60

10
Le microprocesseur Le microprocesseur
• Le cœur de l’ordinateur : il traite et fait circuler les
instructions et les données
• Composé des éléments suivants • Unité de contrôle (ou de commande)
• Unité Arithmétique et Logique (UAL)
•Ensemble de circuits qui exécutent les • Son rôle est dd’extraire
extraire une instruction
opérations arithmétiques et logiques de du programme en MC, de la faire
base exécuter par l’UAL ou un périphérique
• Différents Registres (CO, Etat, Instruction…) et de chercher l’instruction suivante

• Elle décode les instructions et trouve


les données pour l’UAL

61 62

Le microprocesseur Le microprocesseur
 Un processeur est composé de transistors permettant de
réaliser des fonctions sur des signaux numériques.

 Ces transistors, assemblés entre eux forment des


composants
t permettant
tt t de
d réaliser
é li d
des ffonctions
ti tè
très
simples.

 A partir de ces composants il est possible de créer des


circuits réalisant des opérations très complexes.

 L'algèbre de Boole (du nom du mathématicien anglais


Georges Boole 1815 - 1864) est un moyen d'arriver à
créer de tels circuits.
63

Le microprocesseur
Le microprocesseur Variables logiques
 L'algèbre de Boole est une algèbre se proposant de
traduire des signaux en expressions mathématiques.  Un ordinateur ne manipule que des
• Pour cela, on définit chaque signal élémentaire par données binaires, on appelle donc
des variables logiques et leur traitement par des
fonctions logiques.
logiques
variable logique
g q une donnée binaire,,
• Des méthodes (table de vérité) permettent de c'est-à-dire une donnée ayant deux états
définir les opérations que l'on désire réaliser, et à possibles: 0 ou 1.
transcrire le résultat en une expression algébrique.
• un circuit logique un circuit qui schématise
l'agencement des composants de base (au niveau
logique) sans se préoccuper de la réalisation au
moyen de transistors (niveau physique).

11
Le microprocesseur Le microprocesseur
Fonction logique Fonction logique
 Les fonctions logiques de bases sont appelées
 On appelle «fonction logique» une entité portes logiques. Il s'agit de fonctions ayant une
acceptant plusieurs valeurs logiques en ou deux entrées et une sortie:
entrée et dont la sortie ((il p
peut y en avoir • La fonction OU (en anglais OR) positionne sa sortie à 1
si l'une ou l'autre de ses entrées est à 1
plusieurs) peut avoir deux états possibles : 0
• La fonction ET (en anglais AND) positionne sa sortie à
ou 1. 1 si ses deux entrées sont à 1
• La fonction OU EXCLUSIF (en anglais XOR)
positionne sa sortie à 1 si l'une ou l'autre de ses
entrées est à 1 mais pas les deux simultanément
• La fonction NON (appelée aussi inverseur) positionne
sa sortie à 1 si son entrée est à 0, et vice-versa

Exécution d’un programme


L’unité d’entrée-sortie Horloge
2
Microprocesseur MC

Unité de Contrôle 3

• contrôle et gère le transfert d’informations entre l’UC et les 5

périphériques
4
• Exemples
• carte graphique (écran) 4
4

• carte contrôleur (disque dur) UAL

• carte son (micro, haut-parleur)


4

E/S

1
4
69 70

Exécution d’un programme Exemple simplifié


 Pour calculer 12+5, il faut une suite d'instructions
Chargement des instructions et des • Transférer:
données en MC • le nombre 12 saisi au clavier dans la mémoire
• le nombre 5 saisi au clavier dans la mémoire
À chaque top d’horloge
d horloge, l’unité
l unité de • le nombre 12 de la mémoire vers un registre du
contrôle ... microprocesseur
• le nombre 5 de la mémoire vers un registre du
récupère une instruction et les microprocesseur
données nécessaires et les analyse • demander à l'unité de calcul de faire l'addition
déclenche le traitement adapté en • Transférer:
envoyant un signal à l’UAL ou à l’unité • le contenu du résultat dans la mémoire
des entrées-sorties • le résultat (17) se trouvant en mémoire vers l'écran de la
71
console (pour l'affichage)

12
Bus Principaux bus
 le bus système (appelé aussi bus interne). Le bus
 On appelle bus, en informatique, est un système système permet au processeur de communiquer avec la
de communication entre les composants d'un mémoire centrale du système
ordinateur
 le bus dd'extension
extension (parfois appelé bus d'entrée/sortie)
d entrée/sortie)
permet aux divers composants de la carte-mère (USB,
 Les bus ont pour but de réduire le nombre de « série, parallèle, cartes branchées sur les connecteurs
voies » nécessaires à la communication des PCI, disques durs, lecteur/graveur de CD-ROM…) de
différents composants, en mutualisant les communiquer entre eux mais il permet surtout
communications sur une seule voie de données. l'ajout de nouveaux périphériques grâce aux
connecteurs d'extension (appelés slots) connectés
sur le bus d'entrées-sorties.

Slots Carte d’extension


 des prises qui sont présentes sur la carte  Permet d’ajouter des fonctionnalités
mère. Ces connecteurs sont prévus pour (souvent de communication) comme par
recevoir des cartes supplémentaires exemple
p les cartes g graphiques,
p q son,
 Ce qui différencie ces cartes c'est leur modem, usb, etc.
rapidité. Dans l'ordre, du plus lent au plus
rapide :  Dans le PC et Mac, il existe aujourd’hui
• Les cartes au format ISA deux grandes catégories de carte qui se
• Les cartes au format PCI différencient par le bus utilisé : PCI et AGP
• Les cartes au format AGP

Qu’est-ce qu’un programme


Carte mère d’ordinateur?

 Carte électronique  Le logiciel pilote le matériel


qui permet aux
différents  Pour faire marcher un ordinateur il faut lui fournir un
programme
composants de O di t
Ordinateur = matériel
té i l + programme(s)
( )
communiquer via
différents bus de  Un programme est une suite d’instructions d’ordinateur
communication
 Une instruction est un ordre compris par l’ordinateur et
 On enfiche ces qui lui fait exécuté une action
composants sur des
connecteurs
78

13
Les catégories d’ordres Langages informatiques
 les ordinateurs, quels qu’ils soient, ne sont  Un langage informatique est un outil permettant de
fondamentalement capables de comprendre que donner des ordres (instructions) à la machine
quatre catégories d'ordres (en programmation, on
n'emploiera pas le terme d'ordre, mais plutôt celui • A chaque instruction correspond une action du processeur
d'i t ti
d'instructions).
) Ces
C quatre
t f ill
familles d'i t ti
d'instructions
sont :  Intérêt : écrire des programmes (suite consécutive
• l’affectation de variables d’instructions) destinés à effectuer une tache donnée
• la lecture / écriture • Exemple: un programme de gestion de comptes bancaires
• les tests
• les boucles  Contrainte: être compréhensible par la machine

79 80

Langage machine L'assembleur


 Problème: le langage machine est difficile à comprendre par l'humain
 Langage binaire: l’information est exprimée et manipulée sous
forme d’une suite de bits  Idée: trouver un langage compréhensible par l'homme qui sera
ensuite converti en langage machine
 Un bit (binary digit) = 0 ou 1 (2 états électriques) • Assembleur (langage de bas niveau): exprimer les instructions
ç symbolique
élémentaires de façon y q
 Une combinaison de 8 bits= 1 Octet  28  256 possibilités qui permettent ADD A, 4
de coder tous les caractères alphabétiques, numériques, et symboles tels que ?,*,&, … traducteur
LOAD B langage machine
• Le code ASCII (American Standard Code for Information Interchange) donne les MOV A, OUT
correspondances entre les caractères alphanumériques et leurs
représentation binaire, Ex. A= 01000001, ?=00111111 …
• + : Un langage symbolique plus proche du langage machine
• - : Pas assez efficace pour développer des applications complexes
 Les opérations logiques et arithmétiques de base (addition,
multiplication, … ) sont effectuées en binaire
 Apparition des langages évolués

81 82

Langages haut niveau Compilateur/interpréteur


 Compilateur: traduire le programme entier une fois pour toutes
 Intérêts multiples pour le haut niveau:
• proche du langage humain «anglais» (compréhensible) exemple.c
Compilateur
exemple
exécution
• permet une plus grande portabilité (indépendant du matériel) fichier source fichier exécutable
• Manipulation de données et d’expressions complexes (réels,
• +pplus rapide
p à l’exécution
objets,
bj t a*b/c,
*b/ …)) • + sécurité du code source
 Nécessité d’un traducteur (compilateur/interpréteur), • - il faut recompiler à chaque modification

exécution plus ou moins lente selon le traducteur  Interpréteur: traduire au fur et à mesure les instructions du
programme à chaque exécution
Code source Compilateur ou Interprétation+exécution
Langage machine exemple.bas
en langage évolué fichier source
interpréteur
• + exécution instantanée appréciable pour les débutants
• - exécution lente par rapport à la compilation
83 84

14
Principaux Langages de
Langages de programmation: programmation:
Blaise PASCAL, Langage compilé et structuré,
 Deux types de langages: Pascal
mathématicien et inventeur de
la première machine à
dérivé d'ALGOL. c'est un
langage de développement
• Langages procéduraux : sont à base de procédures. Une calculer 1971 standard pour les micro-
ordinateurs.
procédure est une portion de programme écrit en langage de haut
niveau qui accomplit une tâche spécifique nécessaire au C'est une version améliorée Langage de programmation
du langage de programmation structuré et compilé, très
programme
programme. C B du Bell Laboratory, créé en largement employé car ses
• Langages orientés objets : sont des langages non procéduraux 1972 programmes peuvent
facilement se transférer d'un
dans lesquels les éléments du programme sont considérés comme type d'ordinateur à un autre.
des objets qui peuvent s'échanger des messages.
Maple Nasa 1980 de SUN couvrir tous les domaines
D’application formel

 Choix d’un langage? Java Microsystems 1990 Ce langage connaît un


succès qu'aucun autre
langage n'avait encore connu.

85 86

Pourquoi apprendre l’algorithmique


Etapes de réalisation d’un programme pour apprendre à programmer ?
Enoncé du problème  Un algorithme est une description complète et détaillée des actions à
Spécification effectuer et de leur séquencement pour arriver à un résultat donné
Cahier des charges
Analyse • Intérêt: séparation analyse/codage (pas de préoccupation de syntaxe)
Algorithme l’algorithmique exprime les instructions résolvant un problème donné
Traduction en langage i dé
indépendamment
d td
des particularités
ti l ité d de ttell ou ttell llangage.
Programme source
• Qualités: exact (fournit le résultat souhaité), efficace (temps d’exécution,
mémoire occupée), clair (compréhensible), général (traite le plus grand
Compilation
nombre de cas possibles), …
Programme exécutable
Tests et modifications  Pour prendre une image, si un programme était une dissertation,
Version finale et résultats
l’algorithmique serait le plan, une fois mis de côté la rédaction et
l’orthographe. Mieux faire d’abord le plan et rédiger ensuite que
La réalisation de programmes passe par l’écriture d’algorithmes l’inverse…
 D’où l’intérêt de l’Algorithmique
87 88

Représentation d’un algorithme Exemple de pseudo code


Historiquement, deux façons pour représenter un algorithme:
 problème du tri
• L’Organigramme: représentation graphique avec des symboles • Entrée: une séquence de n
(carrés, losanges, etc.) nombres (a1, : : : ,an)
• offre une vue d’ensemble
d ensemble de l’algorithme
l algorithme • Sortie: une permutation (a1’;
(a1 ;
• représentation quasiment abandonnée aujourd’hui : : : ;an’) de la séquence
d’entrée: a1’<a2’<….<an’
• Le pseudo-
pseudo-code: représentation textuelle avec une série de
conventions ressemblant à un langage de programmation (sans • Exemple : (31;41;59;26;41;58)
les problèmes de syntaxe)  (26;31;41;41;58;59)
• plus pratique pour écrire un algorithme
• représentation largement utilisée

89 90

15
Les catégories d’ordres
Algorithmique  Quatre familles d'instructions sont :

• Les variables et leurs affectation


• La lecture / écriture
• Les tests
• Les boucles
Notions et instructions de base

91 92

Notions Fondamentales (1/2) Notions Fondamentales (2/2)

 Karim possède 3 seaux : un seau en plastique d’une contenance de 10 litres,  Notion d’algorithme : si les huis phrases sont bien exécutée par Karim,
un seau en bois d’une contenance de 7 litres et un seau en fer d’une alors l’histoire est un algorithme
contenance de 9 litres.  Notion d’instruction : chacune de huis phrases est une instruction (un
ordre)
• 10h00 : karim vide ses 3 seaux  Notion de valeur : { 0, 3, 5, 6, 8, 10 }
• 10h05 : karim va rendre visite a Nabil,, celui-ci met 6 litres dans le seau en bois de  Notion de mémoire : elle est matérialisée par les seaux qui « mémorisent »
Karim les quantités de liquide
• 10h10 : karim transverse le contenu de son seau en bois dans le seau en fer
 Notion de variable : une variable est un emplacement mémoire, ici on a
• 10h15 : karim revient vers nabil remplir à ras bord son seau en plastique trois variables (le seau en plastique, le seau en bois et le seau en fer)
• 10h20 : karim déverse la moitié de son seau en plastique à l’égout
 Notion d’environnement : c’est l’ensemble des objet, informations,
• 10h25 : karim transvase le contenu de son seau en plastique dans celui en bois
personnes qui on une existence hors de l’histoire mais qui interviennent dans
• 10h30 : karim transvase 2 litres de son seau en bois dans celui en fer son déroulement.
• 10h35 : karim informe Asmae du nombre de litres contenu dans ses seaux en
 Notion des valeurs d’entrée et de sortie : c’est les valeurs que le
plastique, en bois, en fer.
processeur reçoit de l’environnement et celles qu’il donne à l’environnement
durant l’exucution. Valeurs en entrée :{6, 10} Valeurs en sortie = {0, 3, 8}
Quelles sont les quantités des trois seaux que Asmae a reçues?

93 94

Notion de variable Choix des identificateurs (1)


 Dans les langages de programmation une variable sert à stocker Le choix des noms de variables est soumis à quelques règles qui
la valeur d’une donnée varient selon le langage, mais en général:

 Une variable désigne en fait un emplacement mémoire dont  Un nom doit commencer par une lettre alphabétique
exemple valide: A1
A1 exemple invalide: 1A
le contenu peut changer au cours d’un
d un programme (d’où
(d où le nom
variable)  doit être constitué uniquement de lettres, de chiffres et du
soulignement _ (Eviter les caractères de ponctuation et les espaces)
valides: ENCG
ENCG2007
2007,, ENCG_2007
ENCG_2007 invalides: ENCG 2007
2007,, ENCG-
ENCG-
 Règle : Les variables doivent être déclarées avant d’être
2007,, ENCG;2007
2007 ENCG;2007
utilisées, elle doivent être caractérisées par :
doit être différent des mots réservés du langage (par exemple en
• un nom (Identificateur
Identificateur)

Java: int
Java int,, float,
float, else, switch, case, default, for, main, return, …)
else, switch,
• un type (entier, réel, caractère, chaîne de caractères, …)
 La longueur du nom doit être inférieure à la taille maximale spécifiée
par le langage utilisé
95 96

16
Choix des identificateurs (2) Types des variables
Conseil: pour la lisibilité du code choisir des noms significatifs Le type d’une variable détermine l’ensemble des valeurs qu’elle peut
qui décrivent les données manipulées prendre, les types offerts par la plus part des langages sont:
 Type numérique (entier ou réel)
exemples: TotalVentes2006, Prix_TTC, Prix_HT • Byte (codé sur 1octet): de 0 à 255
• Entier court (codé sur 2 octets) : -32 768 à 32 767
• Entier long (codé sur 4 ou 8 octets)
Remarque: en pseudo-code algorithmique, on va respecter • Réel simple précision (codé sur 4 octets)
les règles citées, même si on est libre dans la • Réel double précision (codé sur 8 octets)

syntaxe  Type logique ou booléen:


booléen: deux valeurs VRAI ou FAUX

 Type caractère: lettres majuscules, minuscules, chiffres, symboles, …


exemples: ’A’, ’a’, ’1
’1’, ’?’, …
 Type chaîne de caractère: toute suite de caractères,
exemples: " Nom, Prénom", "code postale: 1000
1000",
", …

97 98

Déclaration des variables L’instruction d’affectation


 l’affectation consiste à attribuer une valeur à une variable
 Rappel: toute variable utilisée dans un programme doit avoir
(ça consiste en fait à remplir où à modifier le contenu d'une zone mémoire)
fait l’objet d’une déclaration préalable
 En pseudo-code, on va adopter la forme suivante pour la  En pseudo-code, l'affectation se note avec le signe ←
déclaration de variables Var← e : attribue la valeur de e à la variable Var
Variables liste d
d'identificateurs
identificateurs : type - e peut être une valeur, une autre variable ou une expression
 Exemple: - Var et e doivent être de même type ou de types compatibles
Variables i, j,k : entier - l’affectation ne modifie que ce qui est à gauche de la flèche
x, y : réel  Ex valides: i ←1 j ←i k ←i+j
OK: booléen x ←10
←10..3 OK ←FAUX ch
ch11
ch1, ch2 : chaîne de caractères ←« ENCG"
ch2
ch 2 ←ch
←ch11 x ←4
←4 x ←j
 Remarque: pour le type numérique on va se limiter aux entiers
et réels sans considérer les sous types (voir la déclaration des variables dans le transparent précédent)

99  non valides: i ←10


←10..3 OK ←« ENCG" j ←x
100

Quelques remarques Exercices simples sur l'affectation (1)


 Beaucoup de langages de programmation (C/C++, Java, …) utilisent Donnez les valeurs des variables A, B et C après exécution
le signe égal = pour l’affectation ←. Attention aux confusions: des instructions suivantes ?
• l'affectation n'est pas commutative : A=B est différente de B=A
Variables A, B, C: Entier
• l'affectation est différente d'une équation mathématique :
Début
• A=A+1 a un sens en langages de programmation A←3
• A+1=2 n'est pas possible en langages de programmation et n'est B←7
pas équivalente à A=1 A←B
B ← A+5
 Certains langages donnent des valeurs par défaut aux variables C←A+B
déclarées. Pour éviter tout problème il est préférable d'initialiser les C←B–A
variables déclarées Fin

101 102

17
Exercices simples sur l'affectation (2) Exercices simples
Donnez les valeurs des variables A et B après exécution des Quelles seront les valeurs des variables A et B après
instructions suivantes ? exécution des instructions suivantes ?

Variables A, B : Entier
Début
A←1
Variables A,
A B en Entier
B←2 Début
A←1 A=1 B=?
A←B
A=1 B=4
B←A B← A+3 A=3 B=4
Fin A← 3
Fin

103 104

Exercices simples Exercices simples


Quelles seront les valeurs des variables A, B et C après Quelles seront les valeurs des variables A et B après
exécution des instructions suivantes ? exécution des instructions suivantes ?

Variables A, B, C en Entier Variables A, B en Entier


Début Début
A←5 A←5
B←3 A=5 B=? C=? B←A+4 A=5 B=?
C←A+B A=5 B=3 C=? A=5 B=9
A=5 B=3 C=8
A←A+ 1 A=6 B=9
A←2 B←A–4
A=2 B=3 C=8 A=6 B=2
C←B–A A=2 B=3 C=1 Fin
Fin

105 106

Exercices simples Exercices simples


Quelles seront les valeurs des variables A, B et C après Quelles seront les valeurs des variables A et B après
exécution des instructions suivantes ? exécution des instructions suivantes ?

Variables A, B, C en Entier Variables A, B en Entier


Début
A←3 Début
B ← 10 A=3 B=? C=? A ←5 A=5 B=?
A=3 B = 10 C=? A=5 B=2
C←A+B A=3 B = 10 C = 13
B ←2 A=2 B=2
B←A+B A=3 B = 13 C = 13 A ←B A=2 B=2
A←C A = 13 B = 13 C = 13 B← A
Fin Fin

107 108

18
Exercices simples Exercices simples
Ecrire un algorithme permettant d’échanger les Que produit l’algorithme suivant ?
valeurs de deux variables A et B Variables A, B, C en Caractères
Début
Début
… A ← "423"
423
C ← A B ← "12"
A ← B
B ← C
C←A&B "42312".
Fin Fin
On est obligé de passer par une variable dite temporaire (la
variable C).

109 110

Exercices simples Expressions et opérateurs


 Une expression peut être une valeur, une variable ou une
Que produit l’algorithme suivant ? opération constituée de variables reliées par des opérateurs
Variables A, B, C en Caractères exemples: 1, b, a*2
a*2, a+ 3*b
*b--c, …

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


A ← "423"
423 résultat de ll'opération
opération

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


C←A+B • des opérateurs arithmétiques: +, -, *, /, % (modulo), ^ (puissance)
Fin • 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
111 112

Les instructions d'entrées-sorties:


Priorité des opérateurs lecture et écriture (1)

 Pour les opérateurs arithmétiques donnés ci-dessus, l'ordre de  Les instructions de lecture et d'écriture permettent à la machine de
priorité est le suivant (du plus prioritaire au moins prioritaire) : communiquer avec l'utilisateur

 La lecture permet d'entrer des donnés à partir du clavier


• ^ : (élévation à la puissance)
• * , / (multiplication,
(multiplication division) • En pseudo
pseudo-code,
code on note: lire (var)
• % (modulo)
la machine met la valeur entrée au clavier
• + , - (addition, soustraction)
dans la zone mémoire nommée var
exemple: 2+3*7 vaut 23
• Remarque: Le programme s'arrête lorsqu'il rencontre une
 En cas de besoin (ou de doute), on utilise les parenthèses pour instruction Lire et ne se poursuit qu'après la frappe d’une valeur
indiquer les opérations à effectuer en priorité au clavier et de la touche Entrée
exemple: (2 + 3) * 7 vaut 35

113 114

19
Les instructions d'entrées-sorties:
lecture et écriture (2) Exemple (lecture et écriture)
Ecrire un algorithme qui demande un nombre entier à l'utilisateur, puis
 L'écriture permet d'afficher des résultats à l'écran (ou de les écrire qui calcule et affiche le double de ce nombre
dans un fichier)

• En pseudo-code, on note: écrire (var)


Algorithme Calcul_double
la machine affiche le contenu de la variables
i bl A,A B : entier
ti
zone mémoire var Début
écrire("entrer la valeur de A ")
• Conseil: Avant de lire une variable, il est fortement conseillé
d’écrire des messages à l’écran, afin de prévenir l’utilisateur de lire(A)
ce qu’il doit frapper B ← 2*A
écrire("le double de ", A, "est :", B)
Fin
115 116

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,
Nom Prenom,
Prenom Nom_Complet
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
117 118

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 :
 constantes : Pi = 3.14159

 Variables : Rayon, Surface


Écrire
É i un algorithme
l ith quii consiste
i t a calculer
l l l’l’air
i S
 Types : Rayon, Surface : réel
d’un cercle selon la formule S = Pi * R2
Rappel : Pi = 3.14159 et R le rayon du cercle  Expressions et affectation : Surface := Pi * (Rayon)2

 Opérations d’entrée-sortie : Lire (Rayon),


Écrire (Surface)

119 120

20
Méthode de construction d’un
algorithme simple (3/4) Exercice
Algorithme Ecrire un programme qui lit le prix HT d’un article, le nombre
d’articles et le taux de TVA, et qui fournit le prix total TTC
Calcul_Aire correspondant.
Constantes Variables nb, pht, ttva, pttc : reels
Pi = 3,14159
, Début
Variables Ecrire ("Entrez le prix hors taxes :")
Rayon, Surface : réels Lire (pht)
Début Ecrire ("Entrez le nombre d’articles :")
lire (Rayon) Lire (nb)
Surface := Pi * (Rayon)2 Ecrire ("Entrez le taux de TVA :" )
écrire (Surface) Lire (ttva)
Fin pttc ← nb * pht * (1 + ttva)
Ecrire ("Le prix toutes taxes est : ", pttc)
Fin
121 122

Les structures conditionnelles et les


boucles
Algorithmique  Les tests simples : permet de réaliser un choix parmi deux
possibilités (Ex :Booléenne : vrais ou faux)
 Les instructions conditionnelles : c’est un concept
de tests multiples, permet de comparer un objet à une série de
valeurs,, et exécuter si la condition est vérifier (Ex : recherche des
nombres premier dans une ensemble)

Les structures
Les itérations : consiste a exécuté un bloc d’instructions un
Conditionnelles et les

certain nombre de fois (Ex : calcul d’une suite numérique)
boucles
 Les boucles conditionnelles : consiste a exécuté un
bloc d’instructions un certain nombre de fois si la condition est
vérifier (Ex : On veut afficher le 100 premiers nombres :. Tant que i est plus
petit que 100, afficher la valeur de i).
123 124

Tests: instructions conditionnelles (1) Tests: instructions conditionnelles (2)


 Les instructions conditionnelles servent à n'exécuter une instruction  La partie Sinon n'est pas obligatoire, quand elle n'existe pas et que
ou une séquence d'instructions que si une condition est vérifiée la condition est fausse, aucun traitement n'est réalisé
 On utilisera la forme suivante: Si condition alors
instruction ou suite d'instructions1
• On utilisera dans ce cas la forme simplifiée suivante:

Sinon Si condition
diti alors
l
instruction ou suite d'instructions2 instruction ou suite d'instructions1
Finsi Finsi
• la condition ne peut être que vraie ou fausse
• si la condition est vraie, se sont les instructions1 qui seront exécutées

• si la condition est fausse, se sont les instructions2 qui seront exécutées


• la condition peut être une condition simple ou une condition composée de
plusieurs conditions
125 126

21
Exemple (Si…Alors…Sinon) Exemple (Si…Alors)
Algorithme AffichageValeurAbsolue (version1) Algorithme AffichageValeurAbsolue (version2)
Variable x : réel Variable x,y : réel
Début Début
Ecrire " Entrez un réel : " Ecrire " Entrez un réel : "
Lire (x) Lire (x)
Si x < 0 alors y← x
Ecrire ("la valeur absolue de ", x, "est:",-x) Si x < 0 alors
Sinon y ← -x
Ecrire ("la valeur absolue de ", x, "est:",x) Finsi
Finsi Ecrire ("la valeur absolue de ", x, "est:",y)
Fin Fin

127 128

Exercice (tests) Conditions composées


Ecrire un algorithme qui demande un nombre entier à l'utilisateur,  Une condition composée est une condition formée de plusieurs
puis qui teste et affiche s'il est divisible par 3 conditions simples reliées par des opérateurs logiques:
Algorithme Divsible_par3 ET, OU, OU exclusif (XOR) et NON
Variable n : entier  Exemples :
Déb t
Début • x compris entre 2 et 6 : (x > 2) ET (x < 6)
Ecrire " Entrez un entier : "
Lire (n) • n divisible par 3 ou par 2 : (n%3=0) OU (n%2=0)
Si (n%3=0) alors • deux valeurs et deux seulement sont identiques parmi a, b et c :
Ecrire (n," est divisible par 3")
(a=b) XOR (a=c) XOR (b=c)
Sinon
Ecrire (n," n'est pas divisible par 3")
 L'évaluation d'une condition composée se fait selon des règles
Finsi présentées généralement dans ce qu'on appelle tables de vérité
Fin
129 130

Tables de vérité Tests imbriqués


 Les tests peuvent avoir un degré quelconque d'imbrications
C1 C2 C1 ET C2 C1 C2 C1 OU C2
Si condition1 alors
VRAI VRAI VRAI VRAI VRAI VRAI
Si condition2 alors
VRAI FAUX FAUX VRAI FAUX VRAI
instructionsA
FAUX VRAI FAUX FAUX VRAI VRAI
Sinon
FAUX FAUX FAUX FAUX FAUX FAUX instructionsB
Finsi
C1 C2 C1 XOR C2 C1 NON C1 Sinon
VRAI VRAI FAUX VRAI FAUX Si condition3 alors
VRAI FAUX VRAI FAUX VRAI instructionsC
FAUX VRAI VRAI Finsi
FAUX FAUX FAUX Finsi

131 132

22
Tests imbriqués: exemple (version 1) Tests imbriqués: exemple (version 2)
Variable n : entier Variable n : entier
Début Début
Ecrire ("entrez un nombre : ") Ecrire ("entrez un nombre : ")
Lire (n) Lire (n)
Si n < 0 alors Si n < 0 alors Ecrire ("Ce nombre est négatif")
Ecrire (("Ce
Ce nombre est négatif
négatif")) Finsi
Si n = 0 alors Ecrire ("Ce nombre est nul")
Sinon
Finsi
Si n = 0 alors Si n > 0 alors Ecrire ("Ce nombre est positif")
Ecrire ("Ce nombre est nul")
Finsi
Sinon Fin
Ecrire ("Ce nombre est positif") Remarque : dans la version 2 on fait trois tests systématiquement alors que
Finsi dans la version 1, si le nombre est négatif on ne fait qu'un seul test
Finsi Conseil : utiliser les tests imbriqués pour limiter le nombre de tests et placer
d'abord les conditions les plus probables (minimiser la complexité)
Fin
133 134

Tests imbriqués: Exercice Tests imbriqués: exercice


 Ecrire un algorithme qui demande deux nombres à l’utilisateur Le prix de photocopies dans une reprographie varie selon le
et l’informe ensuite si leur produit est négatif ou positif (on nombre demandé: 0,5 DH la copie pour un nombre de copies
laisse de côté le cas où le produit est nul). Attention toutefois : inférieur à 10, 0,4DH pour un nombre compris entre 10 et 20 et
on ne doit pas calculer le produit des deux nombres. 0,3DH au-delà.
Début
Ecrire "Entrez le 1er nombre: " Ecrivez un algorithme qui demande à l’utilisateur le nombre de
Lire (m) photocopies effectuées, qui calcule et affiche le prix à payer
Ecrire "Entrez le 2eme nombre: "
Lire (n)
Si (m > 0 ET n > 0) OU (m < 0 ET n < 0)
Alors
Ecrire "Leur produit est positif"
Sinon
Ecrire "Leur produit est négatif"
Finsi 135 136
Fin

Tests imbriqués: corrigé de l'exercice


Variables copies : entier
prix : réel
PASCAL
Début
Ecrire ("Nombre de photocopies : ")
Lire (copies)
Si copies < 10 Alors
prix ← copies*0.5
Sinon Si copies < 20 Présentation générale et
prix ← copies*0.4
Sinon syntaxe des instructions de
prix ← copies*0.3
Finsi base
Finsi
Ecrire (“Le prix à payer est : ”, prix)
Fin

137 138

23
Pascal: Les types de variables Titre

 Entier:  Réels:
 VAR variable1, variable2, ..., variableN : INTEGER;  VAR variable1, variable2, ..., variableN : REAL;

 Opérations sur entiers :  Opérations sur réels :


 + (addition)  + (addition)
 - (soustraction)  - (soustraction)
 * (multiplication)  * (multiplication)
 / (division)  div (division)
 mod (reste de la division)

139 140

Titre Titre

 Booléens:  Caractères :
 VAR variable1, variable2, ..., variableN : BOOLEAN;  VAR variable1, variable2, ..., variableN : CHAR;

 Opérations sur Booléens :  Opérations sur Booléens :


 AND  AND
 OR  OR
 NOT  NOT
 XOR (ou exclusif))  XOR (ou exclusif))

 Ces opérations nécessitent des arguments booléens.


Opérations à valeur booléenne :
 > (supérieur) < (inférieur)
 >= (supérieur ou égal) <= (inférieur ou égal)
 = (égal) <> (différent)

141 142

Pascal: Les fonctions standard Pascal: affectation


 ABS : renvoie la valeur absolue
Le symbole d'affectation
affectation ← se note en Pascal avec :=
 SQR : renvoie le carré
exemple : i:= 1; j:= i+1;
 SQRT : racine carrée
 EX : exponentielle
 LN : log népérien
 SIN : sinus
 COS : cosinus
 ARCTAN : arc tangente
 SUCC : variable énumérée suivante
 PRED : précédent
 ROUND : arrondi à l'entier le plus proche
 TRUNC : partie entière (permet de mettre un réel dans un
entier : trunc(4.5) = 4)

143 144

24
Pascal: lecture / écriture Pascal: Les Test

readln(Var) Instruction IF - THEN - ELSE (si - alors - sinon)


writeln(‘message1’, var1, ’message2’,var2)
Structure :

IF condition THEN instruction1 (* CAS 1 *)

{ ou }

IF condition THEN instruction1 ELSE


instruction2 (* CAS 2 *)

145 146

Exemple Exemple 2
Ecrire un programme en pascal qui effectue une division
PROGRAM cercle (input,output); (* entête *) entre deux nombres
VAR

perimetre,, diametre,test
p , : REAL;; (*
( déclarations *))

CONST
pi = 3.141592;
begin
readln(diametre); (* instruction *)
perimetre := pi * diametre; (* instruction *)
writeln(diametre,perimetre); (* instruction *)
end.

147 148

25