Structures de données et algorithmes Ordinateurs Architecture des

Transcription

Structures de données et algorithmes Ordinateurs Architecture des
Structures de données et algorithmes
Ordinateurs
Gilles Falquet, printemps-été 2002
Machines composées de (depuis 1940 env.) :
http://cui.unige.ch/isi/cours/std/
Processeur
Cours:
traitements sur les données stockées dans la mémoire.
Architecture des ordinateurs – Types élémentaires – Types collections – Arbres et
graphes –
Mémoire
composée de cellules > composée de bits = unité binaire de mémoire
Algorithmes – Itération – Analyse numérique – Récursion – Complexité –
Conception des algorithmes – Programmation dynamique
– stocker le programme à exécuter
Séminaire + travaux pratiques:
– stocker les données à traiter
Exercices théoriques
Systèmes de communication (entrées/sorties):
Programmation Java: apprentissage de Java, utilisation des types de données.
transmission d’informations entre l’ordinateur et son environnement
Evaluation :
écrans, claviers, souris, réseau de télécommunication, appareils (moteurs,
capteurs, etc.).
2/3 Examen écrit (3h) basé sur cours, séminaire, TPs
1/3 Travaux pratiques
G. Falquet, CUI, Université de Genève
1 de 27
G. Falquet, CUI, Université de Genève
2 de 27
Architecture des ordinateurs
Exécution d’un programme
Mémoire
adr.
11111101
disque magnétique
11001101
...
données
bus
Processeur
valeur
Unité arithmétique
et logique
301
charger R1 1001
302
add R1 1004
reg
valeur
303
stocker R1 1002
R1
0
304
si r1>0 saut 302
R2
0
1001
4
1002
–1
PC
301
1003
17
1004
–2
processeur
01000101
11111101
disque ma gnétique
11001101
données
programme
b us
processeur
01000101
pr ogramme
écran
écran
G. Falquet, CUI, Université de Genève
3 de 27
G. Falquet, CUI, Université de Genève
4 de 27
Exécution d’un programme
Mémoire
adr.
Exécution d’un programme
Mémoire
Processeur
valeur
...
adr.
Unité arithmétique
...
et logique
301
charger R1 1001
302
add R1 1004
303
stocker R1 1002
304
si r1>0 saut 302
1001
4
1002
–1
1003
1004
Processeur
valeur
et logique
301
charger R1 1001
valeur
302
add R1 1004
reg
valeur
04
303
stocker R1 1002
R1
4
0
304
si r1>0 saut 302
R2
0
1001
4
1002
–1
PC
302
17
1003
17
–2
1004
–2
reg
R1
R2
PC
301
G. Falquet, CUI, Université de Genève
5 de 27
G. Falquet, CUI, Université de Genève
6 de 27
Exécution d’un programme
Mémoire
adr.
Exécution d’un programme
Mémoire
Processeur
valeur
...
adr.
Unité arithmétique
et logique
301
charger R1 1001
302
add R1 1004
reg
303
stocker R1 1002
R1
304
si r1>0 saut 302
1001
4
1002
–1
1003
1004
G. Falquet, CUI, Université de Genève
Unité arithmétique
+
Processeur
valeur
...
Unité arithmétique
et logique
301
charger R1 1001
valeur
302
add R1 1004
reg
valeur
4 2
303
stocker R1 1002
R1
2
0
304
si r1>0 saut 302
R2
0
1001
4
1002
–1
PC
303
17
1003
17
–2
1004
–2
R2
PC
302
7 de 27
G. Falquet, CUI, Université de Genève
8 de 27
Exécution d’un programme
Mémoire
adr.
Exécution d’un programme
Mémoire
Processeur
valeur
...
adr.
Unité arithmétique
charger R1 1001
302
add R1 1004
303
stocker R1 1002
304
si r1>0 saut 302
1001
4
1002
–1 2
1003
1004
et logique
>0?
301
charger R1 1001
valeur
302
add R1 1004
reg
valeur
2
303
stocker R1 1002
R1
2
0
304
si r1>0 saut 302
R2
0
1001
4
1002
–1
PC
304
17
1003
17
–2
1004
–2
reg
R1
R2
PC
303
G. Falquet, CUI, Université de Genève
9 de 27
G. Falquet, CUI, Université de Genève
Exécution d’un programme
Mémoire
adr.
Unité arithmétique
...
et logique
301
Processeur
valeur
Information et données
Traitement de l’information par une machine => stockage en mémoire => codage
Processeur
valeur
...
10 de 27
Unité arithmétique
Information codée = données.
et logique
Schéma de codage : structure de données
• complet: représenter en mémoire toutes les informations à traiter;
• efficace en espace : faible occupation de la mémoire;
• efficace en temps : peu d’instructions pour traiter les données.
301
charger R1 1001
302
add R1 1004
reg
valeur
303
stocker R1 1002
R1
2
304
si r1>0 saut 302
R2
0
1001
4
1002
–1
1003
17
1004
–2
Etude des structures de données
indissociable de
G. Falquet, CUI, Université de Genève
Etude des algorithmes qui traitent ces données.
PC
302
"Structures de données + Algorithmes = Programmes" [Wirth]
11 de 27
G. Falquet, CUI, Université de Genève
12 de 27
Algoorithme
Langage algorithmique de haut niveau
Méthode pour résoudre un problème
Pour éviter d’écrire des programmes au niveau "machine"
• en un nombre fini d’étapes
On se donne un langage algorithmique plus abstrait.
• de manière correcte
Modèle de mémoire = ensemble d’objets
objet = ensemble de cellules
On cherche des algorithmes généraux
• algo pour calculer 45 + 12 ==> pas intéressant
• algo pour additionner deux nombres entiers quelconques ==> intéressant
contient une valeur d’un certain type (entier, réel, chaînes de caractères, booléen,
etc.)
Variables
Nomment un objet de la mémoire.
Thèse de Church
(remplacent l’adresse numérique)
Tout algorithme peut être exécuté par un programme sur un ordinateur
Possèdent un type
Y:
== il n’y a pas de méthode “raisonnable” qu’on ne puisse programmer
Remarque
"Hello"
95
Etat de la mémoire : ensemble de paires (variable = valeur)
Il y a des problèmes indécidables == pour lesquels il n’existe pas d’algorithme
G. Falquet, CUI, Université de Genève
X:
{ X = "Hello", Y = 95 }
13 de 27
G. Falquet, CUI, Université de Genève
Vrai langage et pseudo langage
14 de 27
Instructions: affectation
Les langages "professionnels" sont complexes
• syntaxe restrictive pour éviter les erreurs de programmation
• doivent être modulaires, structurés, etc. (génie logiciel)
• adaptés à un environnement (périphériques, réseau, etc.)
• contraintes d’efficacité
Stocke une valeur, résultat d’un calcul, dans une variable.
/!\ Le contenu précédent est perdu.
variable ← constante
X ← 34
variable ← variable
Y← X
Pseudo langage
• syntaxe plus informelle, pas de définition stricte
• centré sur l’algorithme, pas sur les aspects génie logiciel
variable ← expression opérateur expression
Z ←3 * X
•
• critère : facile à traduire dans un vrai langage
G. Falquet, CUI, Université de Genève
15 de 27
G. Falquet, CUI, Université de Genève
16 de 27
Exemples
mémoire avant
instruction
X← 2
X = 897
Evaluation d’expression
Expressions composées de constantes, variables, opérateurs, fonctions
mémoire après
Evaluation dans l’ordre habituel: ( ), fonctions, ^, *, /, mod, +, –, ∪, ∩, <, >, =, ∈, ⊆,
X=2
X = 2 , Y = 3333
Y← X+8
X = 2 , Y = 10
X = 3 , Y = 11
X← X *Y
X = 33 , Y = 11
Z = "xsjsjdsw"
Z ← "allo"
Z = "allo"
Z = "allo" , Y = 11
X← Z+Y
indéfini : chaîne de caractères + entier
Les variables sont remplacées par leur valeur.
Signification des opérations dépend du type d’arguments
2.3 + 5.66
6+2
6/4
"bon"+"jour"
addition des réels
addition des entiers
= 1 ou 1.5 ?
concaténation des chaînes
L’un des objets de ce cours :
définir et étudier la signification des opérations sur différents type de données
(entiers, réels, listes, ensembles, séquences, arbres, graphes, etc.)
G. Falquet, CUI, Université de Genève
17 de 27
G. Falquet, CUI, Université de Genève
Séquences d’instructions
{
Ordre d’exécution
instruction1; instruction2; …}
Attention:
L’ordre des instructions dans une séquence est important !
Sémantique:
Exécuter instruction1, puis instruction2, et ainsi de suite.
Exemple:
{ X ← 2; Z ← X + 1; U ← X – Z; …}
mémoire avant
instruction
mémoire après
X = 0, Y = 1, Z = 111
X ← 2; Z ← X + 1;
U←X–Z
X = 2, Z = 3, U = –1
G. Falquet, CUI, Université de Genève
18 de 27
19 de 27
[[ … ]]
{ X ← 2; Z ← 2*X ;
[[ X = 3 , Z = 4 ]]
X ← X+1 }
[[ … ]]
{ X ← 2; X ← X+1;
[[ X = 3 , Z = 6 ]]
Z ← 2*X }
G. Falquet, CUI, Université de Genève
20 de 27
Exécution conditionnelle:
Algorithme MAX
si ( expression) instruction1 sinon instruction2
Calcul de Z = MAX(X, Y)
si (X > Y)
Z←X
sinon
Z ←Y
ou bien
si ( expression ) instruction1
[[ … ]]
A ← 2;
B ← 1;
si (A > B) W ← A – B sinon W ← 0
[[ A = 2, B = 1, W = 1 ]]
Vér ifier : l’algorithme fonctionne pour X = Y
[[ … ]]
si (X > 0) Y ← X sinon Y ← –X
[[ Y = valeur absolue de X ]]
G. Falquet, CUI, Université de Genève
21 de 27
G. Falquet, CUI, Université de Genève
22 de 27
Algorithme SIGNE
Itération
Calcul de Z = signe de X
Syntaxe:
tant que ( expression ) instruction
si (X > 0)
Z←1
sinon
si (X = 0) Z ← 0 sinon Z ← –1
Sémantique:
Exécuter instruction tant que l’évaluation de expression donne vrai.
Exemple
Conditions imbriquées.
[[ … ]]
Trouver une forme équivalente non imbriquée.
R ← 10;
S ← 0;
tant que (R > 0) { S ← S + R; R ←R – 1 }
[[ S = 10+9+8+…+2+1 = 55 ]]
G. Falquet, CUI, Université de Genève
23 de 27
G. Falquet, CUI, Université de Genève
24 de 27
Itération - sur un ensemble de valeurs
Exemple. Calcul de r = p q
Lorsque on veut effectuer un nombre déterminé à l’avance d’itérations on pourra
utiliser la syntaxe abrégée
pour (variable de expression1 à expression2 )
r ← 1;
n ← 0;
instruction
qui correspond à :
tant que (n ≠ q) {
variable ← expression1
tant que (variable ≤ expression2) {
instruction ;
variable ← variable + 1
r ← r * p;
n ← n + 1;
}
}
[[ r = pq ]]
Toutes ces instructions peuvent être combinées entre elles pour former des
instructions plus complexes.
.
G. Falquet, CUI, Université de Genève
25 de 27
L’algorithme est correct
r ← 1;
n ← 0;
[[ r = p n ]]
tant que (n ≠ q) {
[[ r = p n ]]
r ← r * p;
[[ r = p n+1 ]]
n ← n + 1;
[[ r = p n ]]
}
[[ r = p n et n = q ]] =>
[[ r = p q ]]
G. Falquet, CUI, Université de Genève
27 de 27
G. Falquet, CUI, Université de Genève
26 de 27