Vous êtes sur la page 1sur 67

Comment peut-on

maîtriser le fonctionnement de tous


les ordinateurs et apprendre tous
les langages de programmation?
– Selon le ROBERT :
– Informatique
– Théorie et traitement de l ’information par des
programmes mis en œuvre sur ordinateurs.
– Ordinateur
• Machine électronique de traitement de l ’information,
exécutant des programmes.
– Programme
• Suite d’actions à accomplir pour arriver à un résultat.
4 concepts fondamentaux pour
maîtriser la programmation:
Structure de l'ordinateur: Machine qui saisit (périphériques
d’entrée), stocke (mémoire), traite (programmes) et
restitue (périphériques de sortie) des informations

Conception d'algorithmes: Formulation d'un


problème en termes d'instructions simples pouvant être
résolues par ordinateur

Implantation: Exprimer l'algorithme dans un langage de


programmation

Exécution: Compiler, lier les parties, charger en mémoire


puis faire fonctionner sur l'ordinateur
Structure d'un ordinateur

Périphérique Périphérique
PROCESSEUR
d'entrée de sortie

Mémoire
Schéma fonctionnel
Saisie Traitement Restitution

Données UC Résultats
Instructions

Mémoire

Périphériques de sortie
Périphériques d’entrée Mémoires auxiliaires

Ecran Modem
Disquette
Scanner Micro Souris

CD-ROM Modem Caméra Disque dur


Imprimante
Clavier Haut parleur
Le processeur

Unité arithmétique Unité de


et logique contrôle
(UAL) (UC)

UAL: Sert à effectuer les opérations arithmétiques, les comparaisons


et les opérations logiques
UC: Contrôle les communications entre l'UAL, la mémoire, et
les périphériques
Quelles sont les opérations arithmétiques qui peuvent
être réalisées par l'UAL du processeur?

Seulement 4 opérations:
+ addition
UAL - soustraction
* multiplication
/ division
Qu’est-ce qu’un processeur
sait faire ?
1. Lire et écrire en mémoire (RAM, graphique,
E/S)
2. +, -, , /, logique binaire...
3. Passer à l’instruction suivante
4. Aller directement à une autre instruction

bien peu… mais très rapidement et sans erreur


UAL UC

Un processeur ressemble
à une calculatrice de poche.
Comment calculer cos(x)?

En ouvrant n'importe quel livre de


calcul on peut trouver l'équation
suivante:

cos(x) = 1 - (x*x / 2) + (x*x*x*x / 24)


- (x*x*x*x*x*x / 720)
+ (x*x*x*x*x*x*x*x / 40320)

C’est long mais cela fonctionne!


Comment calculer cos(x)?

cos(x) = 1 - (x*x / 2) + (x*x*x*x / 24)


- (x*x*x*x*x*x / 720)
+ (x*x*x*x*x*x*x*x / 40320)

En fait il ne s'agit que d’une


approximation mais suffisamment précise
pour une calculatrice de ce type.
On peut donc calculer cos(x) en utilisant
seulement les 4 opérations de base.
Comment calculer cos(x)?

cos(x) = 1 - (x*x / 2) + (x*x*x*x / 24)


- (x*x*x*x*x*x / 720)
+ (x*x*x*x*x*x*x*x / 40320)

En suivant ces directives il vous est


possible de calculer le cosinus de
n'importe quel nombre. C'est ce que l'on
appelle un algorithme.
Écrire un algorithme c'est comme
ajouter une nouvelle touche à la
calculatrice.
Les expressions
À partir des 4 opérations de base il est possible de construire différentes
expressions.

Une expression est une formule arithmétique pouvant être évaluée par
le processeur.

Exemples:
• 2+3+4 = 9
• 2 + (3 + 4) = 9
• 2 - (3 - 4) = 3
• (2 - 3) - 4 = -5
• (2 + 3) * 4 = 20
• 2 + (3 * 4) = 14
• 2+3*4 = ?
• 2 -3 - 4 =?

Question: Comment le processeur évalue-il les 2 dernières expressions?


Priorité des opérateurs
Les expressions entre
Priorité ( ) parenthèses sont
maximale évaluées en premier.
La multiplication et la
Priorité * / division ont la même
moyenne priorité et sont évaluées
de gauche à droite.
L’addition et la
Priorité + - soustraction ont la même
minimale priorité et sont évaluées
de gauche à droite.
Exemples de priorité des opérateurs

2 + 3 * 4 / 2 * (3 * 5) - 7 On évalue d'abord les parenthèses

2 + 3 * 4 / 2 * 15 - 7 * et / ont une priorité supérieure à + et -


On les évalue de gauche à droite
2 + 12 / 2 * 15 - 7

2 + 6 * 15 - 7

2 + 90 - 7 + et - ont la même priorité et sont


évalués de gauche à droite
92 - 7

85
La mémoire

45 Le processeur tient sa puissance


-35.33 de la mémoire avec laquelle il
55.5 communique constamment.

. . La mémoire peut être vu comme


. . une boîte dont chaque case peut
. .
contenir une valeur numérique.
Les variables

Afin d'identifier clairement où se trouve une


total 45 valeur donnée, il est nécessaire de donner
x2 -35.33 des noms aux cases.
y 55.5
Par exemple, la case total contient la valeur
45, la case x2 contient la valeur -35.33 et la
. . case y contient la valeur 55.5.
. .
. .
Ces noms sont appelés variables car le
contenu de la case mémoire associée peut
varier au cours de l'exécution d'un
programme.
Les variables et les expressions
Le processeur est capable d'évaluer des
expressions contenant des variables en
remplaçant celles-ci par leur valeur
total 45 respective.
x2 -35.33
y 55.5
Exemple:

. . x2 + 2 * total
. .
. .
-35.33 + 2 * 45

-35.33 + 90

54.67
Les différents types de variables

On remarque que certaines cases contiennent


des valeurs entières alors que d'autres
total 45 contiennent des valeurs réelles.
x2 -35.33
Il est important d'indiquer au processeur quel
y 55.5 type de valeurs contient chaque case utilisée.

. . Cela est nécessaire puisque le processeur


. . traite différemment les entiers et les réels.
. .

Par exemple la valeur réelle de 1/2 est 0.5


alors que sa valeur entière est 0.
Les unités de base en informatique

• Un kilo-octet
1 ko = 210 octets = 1 024 octets

• Un méga-octet
1 Mo = 210 x 210 = 1 024 x 1 024 = 1 048 576 octets

• Un giga-octet
1 Go = (210)3 = plus d’un milliard d’octets.

• Un téra-octet 1 To : 1 000 Go = 1 000 milliards


d’octets.
Les unités de base en informatique
Exemple pour de la DDR 2 800 MHz

Taille : barrettes de 512 Mo, 1 ou 2 Go


Temps d’accès : quelques nano secondes
Fréquence : 800 MHz (800 millions de
cycle/s)
Transfert : 6,4 Go/s
Les déclarations de variables

Les déclarations servent à donner un


nom à une case mémoire et à indiquer
le type de valeurs qu'elle peut contenir. total entier
x2 réel
Une déclaration typique ressemble à: réel
y
Entiers: total
Réels: x2,y . .
. .
. .
Après une telle déclaration, le processeur
configure la mémoire comme dans
l’illustration ci-contre.
Remarques concernant les déclarations

Lorsque l’on déclare une variable, on ne lui donne pas de valeur.


On ne fait qu’indiquer au processeur le nom et le type des variables.

Le choix des noms de variables est arbitraire mais devrait toujours


refléter ce que représente les valeurs qu’elles contiennent.

Le contenu d’une case mémoire peut être modifié au cours de


l’exécution d’un programme mais pas le type de valeur qu’elle
contient.

Les déclaration sont faites à l’intérieur d’un programme donné.


Lorsque le programme se termine le nom, le type et la valeur
contenue dans les cases mémoire disparaissent.
Types
Typesprédéfinis
prédéfinis
Un type décrit un ensemble de valeurs et un ensemble
d'operateurs sur ces valeurs.

Type
Typeentier
entier::integer
integer
abs(x) valeur absolue de |x|.
pred(x) x- 1.
succ(x) x + 1.
odd(x) true si x est impair, false sinon.
sqr(x) le carre de x.
+ x identité.
- x signe oppose.
x + y addition.
x - y soustraction.
x * y multiplication.
x / y division, fournissant un résultat de type réel.
x div y la division entière de x par y.
x mod y reste de la division entière, avec y non nul.
Type
Typeréel
réel::real
real

Type
Typecaractères
caractères::char
char
Le jeux des caractères comportant les lettres, les digits, l'espace, les ponctuations, etc, est
code sur un octet non signe.

Type
Typebooléen
booléen::boolean
boolean
Utilise pour les expressions logiques. Deux valeurs : false (faux) et true (vrai).
Operateurs booléens : not (négation), and (et), or (ou).
Nouveaux
Nouveauxtypes
types

Ceux sont des types créent sur la base des types prédéfinies.
Type
Typeintervalle
intervalle
C'est un sous-ensemble de valeurs consécutives d'un type hôte.
Syntaxe N..M
ou N et M sont des constantes du même type, et sont les bornes inferieures et
superieures de l'intervalle, N et M inclus.
Exemple
VAR
pourcentage : 0 .. 100; { le type hôte est integer }
digit : '0' .. '9'; { le type hôte est char }
réponse : false .. true; { le type hôte est boolean }

Ainsi les types integer, char et boolean sont des types ordinaux.
Tableau:
Tableau:array
array

Sert à définir un élément de type tableau (array).

Syntaxe array [index-type] of element-type

Description
Plusieurs indices sont séparés par des virgules.
Le type de l'élément peut être tout type, mais celui de l'indice doit être un type
ordinal .
type
IntList=array[1..100] of Integer; Vecteur
CharData=array['A'..'Z'] of Integer; Vecteur
Matrice=array[0..9, 0..9] of real; Matrice
Type
Type enregistrement(structure):
enregistrement(structure): record
record
Il s'agit simplement de regrouper des variables V1, V2, . . . de différents types T1,
T2, . . . dans une variable ( tiroirs)>.
Syntaxe
Record
V1 : T1;
V2 : T2;
{ ... }
End;

Soit r une variable de ce type ; on accède aux différents champs de r par r.V1,r.V2, . . .
TYPE
étudient = Record
nom : string(10);
prénom :string(10);
date=record Exemple:
j:1..31; Groupe[5].date.j:=25;
m:1..12;
an:1900..2080; Groupe[5].not[4]:=15;
end;
code:char;
notes:arra[1..9] of real;
moy:real;
End;
VAR groupe:array[1..68]of étudient;
1 2 3 4
a 12 integer
A1[1..4] 25 2 9 7 integer
b -1.2 real B1[1..3] -2.5 0.2 19.2 real
c ‘f’ char
C1[1..4] ‘d’ ‘2’ ‘1’ ‘f’ char

H[1..4,1..5] 1 2 3 4 5
1 1 5 4 5 8
2 0 4 8 7 6
3 10 2 10 1 2
4 20 30 4 5 7

A[2,3]=8
M = Record
a2 : integer;
b2 :array[1..3]of real;
b4 :real;
c2:array[1..4]of char;
h1:array[1..3,1..5]of integr;
End;

a2 12 integer
B2[1..3] -2.5 0.2 19.2 real

b4 -1.2 real
C2[1..4] ‘d’ ‘2’ ‘1’ ‘f’
1 5 4 5 8
H1[1..3,1..5] 0 4 8 7 6 integer
1 2 1 1 2
L’instruction d’assignation

Pour mettre une valeur dans une variable, on utilise une


instruction d’assignation.

Une assignation a la forme suivante:

variable = expression

L'expression est d’abord évaluée puis le résultat est mis


dans la case mémoire correspondant à la variable
Exemple d’assignation
Après la déclaration
entiers: total
réels: x2,y
la mémoire ressemble à la figure
suivante:

total entier
x2 réel
y réel

. .
. .
. .
Exemple d’assignation
Si par la suite le processeur exécute
Après la déclaration
les instructions suivantes:
entiers: total
total = 45
réels: x2,y
x2 = -35.33
la mémoire ressemble à la figure
y = 55.5
suivante:
La mémoire devient:

total entier total 45 entier


x2 réel x2 -35.33 réel
y réel y 55.5 réel

. . . .
. . . .
. . . .
Exemple: calcul de la moyenne

Après les déclarations suivantes,


moyenne réel
Réels: moyenne note1 entier
Entiers: note1, note2, note3, note4 note2 entier
note3 entier
la mémoire ressemble à la figure note4 entier
ci-contre . .
. .
. .
Calcul de la moyenne (suite)

Après les instructions d’assignation moyenne réel


suivantes
note1 75 entier
note1 = 75 note2 100 entier
note2 = 100 note3 88 entier
note3 = 88
note4 = 95 note4 95 entier
. .
. .
La mémoire devient: . .

Remarque: la variable moyenne est toujours indéfinie puisqu’aucune valeur n’y


a été assignée.
Calcul de la moyenne (suite)
Pour calculer la moyenne de ces 4 valeurs et mettre le résultat dans la variable moyenne
le processeur doit exécuter l’instruction suivante:

moyenne = ( note1 + note2 + note3 + note4 ) / 4

moyenne réel
note1 75 entier
note2 100 entier
note3 88 entier
note4 95 entier
. .
. .
. .
Calcul de la moyenne (suite)
1) Le processeur évalue d'abord la partie de gauche:
( note1 + note2 + note3 + note4 ) / 4

( 75 + 100 + 88 + 95 ) / 4

( 175 + 88 + 95 ) / 4
moyenne 89.5 réel
( 263 + 95 ) / 4 note1 75 entier
note2 100 entier
358 / 4
note3 88 entier
89.5 note4 95 entier
. .
2) Le résultat est ensuite déposé dans la case . .
. .
mémoire associée à la variable moyenne.

moyenne = 89.5
Calcul de la moyenne (suite)
Que se passerait-il si on omettait les parenthèses dans l'expression précédente?

moyenne  note1 + note2 + note3 + note4 / 4

moyenne  75 + 100 + 88 + 95 / 4

moyenne  75 + 100 + 88 + 23.75 moyenne 286.75 réel


note1 75 entier
moyenne  175 + 88 + 23.75
note2 100 entier
moyenne  263 + 23.75 note3 88 entier
note4 95 entier
moyenne  286.75 . .
. .
. .
Le mauvais résultat serait ensuite déposé dans la
case mémoire associée à la variable moyenne.
Calcul de la moyenne (suite)
La séquence d'instructions nécessaires au calcul de la moyenne est donc:

Liste des variables:


Réels: moyenne
Entiers: note1, note2, note3, note4

Instructions:
note1 = 75
note2 = 100
note3 = 88
note4 = 95
moyenne = note1 + note2 + note3 + note4 /4

Remarque: Les instructions sont toujours exécutées de façon séquentielle


par le processeur.
Les opérateurs de comparaison
Supposons qu'après avoir calcule la note moyenne, on veuille déterminer
si l'étudiant passe ou échoue.

Le processeur doit évaluer la relation: moyenne  65

Il existe 6 opérateurs permettant au processeurs d’effectuer de telles


comparaisons.

< plus petit que


 plus petit ou égal à
> plus grand que
 plus grand ou égal à
 égal à
 diffèrent de
Évaluation d’une expression logique

Une expression logique est une expression ne pouvant


s'évaluer qu’à une des deux valeurs: vrai ou faux.

Comme le processeur ne peut traiter que des valeurs


numériques, il est nécessaire de représenter les valeurs logiques
vrai et faux par des nombres.

VRAI est représenté par le nombre 1


FAUX est représenté par le nombre 0
Exemple

moyenne  65 moyenne 89.5 réel


note1 75 entier
89.5  65 note2 100 entier
note3 88 entier
1 (c'est-à-dire vrai) note4 95 entier
. .
. .
. .
Exemple

moyenne  65 moyenne 46.3 réel


note1 75 entier
46.3  65 note2 100 entier
note3 88 entier
0 (c'est-à-dire faux) note4 95 entier
. .
. .
. .
Problème
On veut déterminer si la moyenne est entre 60 et 75

moyenne 89.5 réel


60  moyenne  75 note1 75 entier
note2 100 entier
60  89.5  75 note3 88 entier
note4 95 entier
vrai  75 . .
. .
. .
1  75

1 (erreur!!!)
Solution
Ce que l'on veut, c’est déterminer si
moyenne  75
ET
moyenne  60
Le ET est appelé un opérateur logique.

Si la première expression est vrai et que la seconde est vrai


alors l'expression
(moyenne  75) ET (moyenne  60)
est aussi vrai.
Exemple
(moyenne  75) ET (moyenne  60)

(89.5  75) ET (89.5  60)


moyenne 89.5 réel
faux ET vrai note1 75 entier
note2 100 entier
faux note3 88 entier
note4 95 entier
. .
. .
. .
Opérateur logique: ET

vrai ET vrai vrai ET faux


vrai faux

faux ET vrai faux ET faux


faux faux
Opérateur logique: OU

vrai OU vrai vrai OU faux


vrai vrai

faux OU vrai faux OU faux


vrai faux
Opérateur logique: NON

NON vrai
faux

NON faux
vrai
Exemple

Après la déclaration et l'instruction suivantes:

entier: age
age = 7.

Comment le processeur evalue-t-il l'expression

NON( (age = 5) OU (age = 10) ) ?


Priorité des opérateurs (suite)

Opérateurs Associativité

() de gauche à droite
NON de droite à gauche
* / de gauche à droite
+ - de gauche à droite
<  >  de gauche à droite
=  de gauche à droite
ET de gauche à droite
OU de gauche à droite
La communication avec le monde extérieur

Périphérique Périphérique
PROCESSEUR
d'entrée de sortie

Mémoire
Entrée
Le processeur peut lire des valeurs en provenance du
périphérique d’entrée (clavier, etc.) en exécutant une
instruction ayant la forme suivante.

lire variable1 variable2 …

L'exécution de cette instruction permet d’établir une


communication entre le périphérique d’entrée et le
processeur. Ce dernier lit autant de valeurs qu'il y a
de variables.

Chaque valeur lue est assignée à une variable.


Sortie
Le processeur peut afficher des valeurs sur le périphérique de
sortie (écran, etc.) en exécutant une instruction ayant la forme
suivante.

afficher expression1 expression2 …

L'exécution de cette instruction permet d'établir une


communication entre le périphérique de sortie et le processeur.
Ce dernier évalue chaque expression et affiche, dans l'ordre,
les résultat en sortie.

Remarque : Les expressions peuvent être de simple valeurs, des


variables ou des expressions plus complexe utilisant les
opérateurs.
Exemple

75 83
79 96

moyenne réel
note1 entier
note2 entier
note3 entier
note4 entier
. .
. .
. .
75 83
lire note1 note2 note3 note4
79 96

moyenne réel
note1 75 entier
note2 83 entier
note3 79 entier
note4 96 entier
. .
. .
. .
75 83 moyenne= (note1 + note2 +
79 96 note3 + note4) / 4

moyenne 83.25 réel


note1 75 entier
note2 83 entier
note3 79 entier
note4 96 entier
. .
. .
. .
75 83 79 96 afficher moyenne 83.25

moyenne 83.25 réel


note1 75 entier
note2 83 entier
note3 79 entier
note4 96 entier
. .
. .
. .
Comparez
réels: moyenne
entiers: note1, note2, note3, note4
Ne calcule la
note1 = 75 moyenne que
note2 = 83 de ces 4
note3 = 79 valeurs
note4 = 96
particulières
moyenne = note1 + note2 + note3 + note4 /4

réels: moyenne
entiers: note1, note2, note3, note4 Calcule la
moyenne de
lire note1 note2 note3 note4
n'importe
moyenne = note1 + note2 + note3 + note4 /4
afficher moyenne
quelle valeurs
le processeur PE UAL UC RAM PS

Opérateurs arithmétiques:
+ addition la mémoire
- soustraction
* multiplication •Déclarations: Pour utiliser une case mémoire on doit lui donner un nom
/ division et indiquer quel type de valeur (entierou réel) elle contiendra.
Opérateurs de comparaisons: •Assignations: Pour mettre en mémoire une valeur, on utilise une
< plus petit instruction d'assignation: variable = expression
 plus petit ou égal •Expressions: Pour utiliser le contenu d’une case mémoire, on incorpore
> plus grand
 plus grand ou égal des variables dans les expressions.
= égal
lire variable1 variable2 …
les entrée-sorties
afficher expression1 expression2 …
Opérateurs logiques:
OU vrai si au moins une opérande est vraie
faux sinon
ET vrai si toutes les opérandes sont vraies
Calcul
faux sinon
NON vrai si l'opérande est fausse, instructions
faux sinon conditions
boucles
fonctions
récursion
Phase 0 : Énoncé (spécifications).
On veut calculer la surface d’un rectangle.
 
Phase 1 : Étape de réflexion (conception abstraite).
A partir de l'énoncé on doit définir les flux entrants (les données du problème), les
flux sortants (les résultats du problème), et le moyen de passer des uns aux autres.
 

Résultat
La surface du rectangle SURF
Traitement
SURF = LONG * LARG
Données
Avec
La longueur du rectangle LONG
La largeur du rectangle LARG
Phase 2 : L'algorithme associé à son lexique (conception concrète).
Lexique
LONG (réel) La longueur du rectangle
LARG (réel) La largeur du rectangle
SURF (réel) La surface du rectangle
Début
Lire(LONG, LARG)
SURF  LONG * LARG
Ecrire(SURF)
Fin

Phase 3 : Programmation (codification)


On peut désormais choisir un langage de programmation cible, et traduire le
précédent algorithme pour en obtenir le programme correspondant …
 
Phase 4 : Jeux d’essai (tests)
Une application n'est définitivement valide qu'après avoir subi une phase de tests
par l'intermédiaire d'un choix judicieux de jeux d’essai (échantillon de données
correspondants à la réalité du problème à traiter).
Coût des algorithmes

Plusieurs algorithmes peuvent faire la même chose mais en effectuant


un nombre d’opérations différent.
Différencier leurs coûts :
 coût en temps d’exécution
 coût en place mémoire
Le nombre d’étapes et la place mémoire dépendent le plus souvent de
la taille des entrées de l’algorithme (la taille des tableaux par
exemple).
Algorithmique et programmation
1. Analyse du problème
2. Conception d’une solution : algorithmique
choix de la représentation des données
choix de la méthode utilisée
3. Développement : programmation
choix du langage de programmation
choix de la machine utilisée
4. Tests