Upload
liliane-duchemin
View
110
Download
0
Embed Size (px)
Citation preview
Éléments de Programmation8PRO107
Comment peut-on maîtriser le fonctionnement de tous les
ordinateurs et apprendre tous les langages de programmation?
En ce qui concerne la programmation dans un langage de haut niveau: tous les ordinateurs sont similaires!!!
Tous les langages procéduraux (Fortran, Pascal, Ada, Cobol, Basic, etc.) sont similaires!
Observation 1
Observation 2
4 concepts fondamentaux pour maîtriser la programmation:
Structure de l'ordinateur: Concepts de base communs à tous les ordinateurs
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
PROCESSEUR
Mémoire
Périphériqued'entrée
Périphériquede sortie
Le processeur
Unité arithmétique et logique
(UAL)
Unité decontrôle
(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
UAL
Seulement 4 opérations: + addition - soustraction multiplication (ou *) division (ou /)
Quelles sont les opérations arithmétiques qui peuvent être réalisées par l'UAL du processeur?
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écisepour une calculatrice de ce type.
On peut donc calculer cos(x) en utilisantseulement 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érentesexpressions.
Une expression est une formule arithmétique pouvant être évaluée parle 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
Priorité maximale
( ) Les expressions entre parenthèses sont évaluées en premier.
Priorité moyenne
* / La multiplication et la division ont la même priorité et sont évaluées de gauche à droite.
Priorité minimale
+ - L’addition et la soustraction ont la même 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 à droite2 + 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
Le processeur tient sa puissance de la mémoire avec laquelle il communique constamment.
La mémoire peut être vu comme une boîte dont chaque case peut contenir une valeur numérique.
45
55.5
-35.33
.
.
.
.
.
.
45
55.5
-35.33
total
x2
y
.
.
.
.
.
.
Les variables
Afin d'identifier clairement où se trouve une valeur donnée, il est nécessaire de donner des noms aux cases.
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 lecontenu de la case mémoire associée peutvarier au cours de l'exécution d'un programme.
45
55.5
-35.33
total
x2
y
.
.
.
.
.
.
Les variables et les expressions
Le processeur est capable d'évaluer desexpressions contenant des variables en remplaçant celles-ci par leur valeur respective.
Exemple:
x2 + 2 * total
-35.33 + 2 * 45
-35.33 + 90
54.67
45
55.5
-35.33
total
x2
y
.
.
.
.
.
.
Les différents types de variables
On remarque que certaines cases contiennent des valeurs entières alors que d'autres contiennent des valeurs réelles.
Il est important d'indiquer au processeur quel 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.
total
x2
y
entier
réelréel
.
.
.
.
.
.
Les déclarations de variables
Les déclarations servent à donner unnom à une case mémoire et à indiquerle type de valeurs qu'elle peut contenir.
Une déclaration typique ressemble à:
Entiers: totalRéels: x2,y
Après une telle déclaration, le processeurconfigure 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.
L’instruction d’assignation
Pour mettre une valeur dans une variable, on utilise une instruction d’assignation. Cette instruction est aussi appelée « affectation ».
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
total
x2
y
entier
réelréel
.
.
.
.
.
.
Après la déclaration entiers: total réels: x2,yla mémoire ressemble à la figuresuivante:
Exemple d’assignation
total
x2
y
entier
réelréel
.
.
.
.
.
.
Après la déclaration entiers: total réels: x2,yla mémoire ressemble à la figuresuivante:
45
55.5
-35.33
total
x2
y
entier
réelréel
.
.
.
.
.
.
Si par la suite le processeur exécuteles instructions suivantes: total 45 x2 -35.33 y 55.5 La mémoire devient:
moyenne
note1
note2
réel
entier entier
.
.
.
.
.
.
Exemple: calcul de la moyenne
note3
note4
entier
entier
Après les déclarations suivantes,
Réels: moyenneEntiers: note1, note2, note3, note4
la mémoire ressemble à la figure ci-contre
95
moyenne
note1
note2
réel
entier entier
.
.
.
.
.
.
Calcul de la moyenne (suite)
Après les instructions d’assignationsuivantes
note1 75note2 100note3 88note4 95
La mémoire devient:
note3
note4
entier
entier
88
75
100
Remarque: la variable moyenne est toujours indéfinie puisqu’aucune valeur n’y a été assignée.
95
moyenne
note1
note2
réel
entier entier
.
.
.
.
.
.
Calcul de la moyenne (suite)
moyenne ( note1 + note2 + note3 + note4 ) / 4
note3
note4
entier
entier
88
75
100
Pour calculer la moyenne de ces 4 valeurs et mettre le résultat dans la variable moyennele processeur doit exécuter l’instruction suivante:
95
moyenne
note1
note2
réel
entier entier
.
.
.
.
.
.
Calcul de la moyenne (suite)
( note1 + note2 + note3 + note4 ) / 4
( 75 + 100 + 88 + 95 ) / 4
( 175 + 88 + 95 ) / 4
( 263 + 95 ) / 4
358 / 4
89.5
2) Le résultat est ensuite déposé dans la case mémoire associée à la variable moyenne.
moyenne 89.5
note3
note4
entier
entier
88
75
100
1) Le processeur évalue d'abord la partie droite de l’instruction:
89.5
95
moyenne
note1
note2
réel
entier entier
.
.
.
.
.
.
Calcul de la moyenne (suite)
moyenne note1 + note2 + note3 + note4 / 4
moyenne 75 + 100 + 88 + 95 / 4
moyenne 75 + 100 + 88 + 23.75
moyenne 175 + 88 + 23.75
moyenne 263 + 23.75
moyenne 286.75
Le mauvais résultat serait ensuite déposé dans la case mémoire associée à la variable moyenne.
note3
note4
entier
entier
88
75
100
Que se passerait-il si on omettait les parenthèses dans l'expression précédente?
286.75
Calcul de la moyenne (suite)
Liste des variables:Réels: moyenneEntiers: note1, note2, note3, note4
Instructions:note1 75note2 100note3 88note4 95moyenne (note1 + note2 + note3 + note4) / 4
La séquence d'instructions nécessaires au calcul de la moyenne est donc:
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 calculé la note moyenne, on veuille déterminersi 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 1FAUX est représenté par le nombre 0
Exemple
95
moyenne
note1
note2
entier entier
.
.
.
.
.
.
note3
note4
entier
entier
88
75
100
89.5 réelmoyenne 65
89.5 65
1 (c'est-à-dire vrai)
Exemple
95
moyenne
note1
note2
entier entier
.
.
.
.
.
.
note3
note4
entier
entier
88
75
100
46.3 réelmoyenne 65
46.3 65
0 (c'est-à-dire faux)
Problème
95
moyenne
note1
note2
entier entier
.
.
.
.
.
.
note3
note4
entier
entier
88
75
100
89.5 réel60 moyenne 75
60 89.5 75
vrai 75
1 75
1 (erreur!!!)
On veut déterminer si la moyenne est entre 60 et 75
SolutionCe 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)
faux ET vrai
faux
95
moyenne
note1
note2
entier entier
.
.
.
.
.
.
note3
note4
entier
entier
88
75
100
89.5 réel
Opérateur logique: ET
vrai ET vrai
vrai
vrai ET faux
faux
faux ET faux
faux
faux ET vrai
faux
Opérateur logique: OU
vrai OU vrai
vrai
vrai OU faux
vrai
faux OU faux
faux
faux OU vrai
vrai
Opérateur logique: NON
NON vrai
faux
NON faux
vrai
Exemple
Après la déclaration et l'instruction suivantes:
entier: ageage 7.
Comment le processeur évalue-t-il l'expression
NON( (age = 5) OU (age = 10) ) ?
Exemple
NON( (age = 5) OU (age = 10) )
NON( ( 7 = 5) OU ( 7 = 10 ) )
NON( FAUX OU FAUX )
NON FAUX
VRAI
Priorité des opérateurs1. ( ) Les expressions entre parenthèses
sont évaluées en premier.
2. * / La multiplication et la division ont la même priorité (gauche à droite)
3. + - L’addition et la soustraction ont la même priorité (gauche à droite)
4. = < > NON OU ET
Les opérateurs logiques et de comparaison ont la priorité la plus faible.
Priorité des opérateurs (suite)Remarque: Les opérateurs logiques causent le même typed’ambiguïté que les opérateurs arithmétiques.Pour cette raison, les opérateurs logiques et les opérateurs de comparaison n’ont pas tous la même priorité.
Exemple:(VRAI OU FAUX) ET FAUX = FAUX
VRAI OU (FAUX ET FAUX) = VRAI
En assignant à ET un niveau de priorité plus élevé que OU on obtient:
VRAI OU FAUX ET FAUX = VRAI
Priorité des opérateurs (suite)
Opérateurs Associativité
( ) de gauche à droiteNON de droite à gauche* / de gauche à droite+ - de gauche à droite < > de gauche à droite= de gauche à droiteET de gauche à droiteOU de gauche à droite
Priorité des opérateurs (suite)
Exemple:Considérez la situation ou les organisateurs d’une conférence proposent deux taux différents: $500 si l’inscription se fait avant une date limite et $600 dollarssinon.
Utilisons la variable entière AVANT qui vaut 1 si une certaine inscription a été faite avant la date limite et 0 sinon.
Le taux de l’inscription sera donc:
AVANT * 500 + NON AVANT * 600
La communication avec le monde extérieur
PROCESSEUR
Mémoire
Périphériqued'entrée
Périphériquede sortie
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 unecommunication entre le périphérique d’entrée et leprocesseur. Ce dernier lit autant de valeurs qu'il y ade variables.
Chaque valeur lue est assignée à une variable.
SortieLe 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 unecommunication entre le périphérique de sortie et le processeur. Ce dernier évalue chaque expression et affiche, dans l'ordre, les résultats en sortie.
Remarque : Les expressions peuvent être de simples valeurs, des variables ou des expressions plus complexes utilisant les opérateurs.
moyenne
note1
note2
entier entier
.
.
.
.
.
.
note3
note4
entier
entier
réel
75 8379 96
Exemple
LIRE note1, note2, note3, note4
83
75
96
moyenne
note1
note2
entier entier
.
.
.
.
.
.
note3
note4
entier
entier
79
réel
75 8379 96
moyenne (note1 + note2 + note3 + note4) / 4
83.25
83
75
96
moyenne
note1
note2
entier entier
.
.
.
.
.
.
note3
note4
entier
entier
79
réel
75 8379 96
AFFICHER moyenne 83.25
83.25
83
75
96
moyenne
note1
note2
entier entier
.
.
.
.
.
.
note3
note4
entier
entier
79
réel
75 83 79 96
Comparez
réels: moyenneentiers: note1, note2, note3, note4
note1 75note2 83note3 79note4 96moyenne (note1 + note2 + note3 + note4) / 4
réels: moyenneentiers: note1, note2, note3, note4
LIRE note1, note2, note3, note4moyenne (note1 + note2 + note3 + note4) / 4AFFICHER moyenne
Ne calcule la moyenne que de ces 4 valeurs particulières
Calcule la moyenne de n'importe quelles valeurs
Opérateurs arithmétiques: + addition - soustraction * multiplication / division
Opérateurs de comparaisons: < plus petit plus petit ou égal > plus grand plus grand ou égal = égal différent
Résumé:le processeur UAL UC
Opérateurs logiques:
OU vrai si au moins un opérande est vrai faux sinon ET vrai si tous les opérandes sont vrais faux sinon NON vrai si l'opérande est faux, faux sinon
Résumé:la mémoire
ProcesseurProcesseur
.
.
.
.
.
.
•Déclarations: Pour utiliser une case mémoire on doit lui donner un nom et indiquer quel type de valeur (entier ou réel) elle contiendra.
•Assignations: Pour mettre en mémoireune valeur, on utilise une instructiond'assignation: variable expression
•Expressions: Pour utiliser le contenu d’une case mémoire, on incorpore des variables dans les expressions. Mémoire
Résumé:les entrée-sorties
PROCESSEURPROCESSEURPériphériqued’entrée
Périphériqued’entrée
Périphériquede sortie
Périphériquede sortie
LIRE variable1, variable2 …
AFFICHER expression1, expression2 …
Prochain cours:
Introduction au langage C