Professional Documents
Culture Documents
Plan du cours
Introduction linformatique Architecture dun ordinateur Dcomposition fonctionnelle Concepts cls
ENSA Safi
Introduction
Introduction
Quest-ce quun ordinateur ? Quest-ce quun langage de programmation ? Que signifie faire de linformatique ? A quoi sert la programmation ? Quest-ce que la complexit algorithmique ?
ENSA Safi
ENSA Safi
Des 0 et des 1
Le hardware de lordinateur comprend essentiellement : diverses mmoires, un processeur, une horloge, des units dentre/sortie Lordinateur excute la cadence de son horloge des instructions (de niveau machine ) contenue en mmoire et utilisant des donnes contenue dans une autre partie de la mmoire. Les donnes et les instructions, sont codes, au plus bas niveaux en une suite de 0 et de 1. Ces 0 et ces 1 correspondent des tensions des circuits lectroniques. Le cadencement est essentiellement fonction du temps de stabilisation des circuits et de leur chauffement.
ENSA Safi 6
Codage binaire
Le langage des ordinateurs Toutes communications l'intrieur de l'ordinateur sont faites avec des signaux lectriques 0: teint (absence de signal lectrique) 1: allum (prsence de signal lectrique)
ENSA Safi
Un mme nombre peut tre reprsent dans plusieurs bases 123 en base 10 (dcimal) 1111011 en base 2 (binaire) 173 en base 8 (octale) 7B en base 16 (hexadcimale)
ENSA Safi
ENSA Safi
Codage et adressage
On peut exprimer autant avec une suite de 0 et de 1, qu laide dun alphabet complet (a,b,c,d,e ). Il suffit de saccorder sur la faon dont on code linformation. Certains codages peuvent tre plus efficaces que dautres (cf thorie de Shannon) Toute donne code se trouve une certaine adresse en mmoire. Cette adresse en mmoire est elle-mme code sous forme de 0 et de 1.
ENSA Safi
10
ENSA Safi
11
ENSA Safi
12
ENSA Safi
14
Mais encore
Tous les problmes nont pas de solutions algorithmiques La programmation permet dadapter le comportement de logiciels des catgories spcifiques de problmes. Elle savre souvent indispensable. Dans la description de Turing et Von Neumann, lordinateur est une machine universelle.
ENSA Safi
15
La machine de Turing
Unit de commande
Ruban= entre, sortie et mmoire
tats internes: Etat0, Etat1, Etat2, ...
Lecture/criture + + + +
Contenu de Ecrit sur le Dplacement Etat suivant la cellule ruban ruban vide D Etat0 + D Etat1
Le Programme
ENSA Safi
16
Complexit algorithmique
Donne une estimation du nombre doprations lmentaires ncessaires lexcution de lalgorithme, et ce en fonction de la taille des donnes. Lestimation ne tient pas compte de la vitesse dexcution. En gnral la complexit est value dans le pire des cas (worst case analysis)
ENSA Safi
17
Exemples
Recherche dun mot dans un dictionnaire : parcours linaire VS parcours dichotomique Tri dune liste dlments Problmes NP-complets
ENSA Safi
18
logarithmique
ENSA Safi
20
Vrai ou faux ?
Lutilisation dun ordinateur permet de raliser un travail plus efficacement et plus rapidement Lordinateur fait ce quon lui dit de faire Le concepteur dun programme connat toujours le rsultat du programme quil a conu
ENSA Safi
21
Illustrations
ENSA Safi
23
Data Memory
Input Interface
Output Interface
Ordres de grandeur
K =Kilo M= Mga G= Giga T=Tra 2^10 = 1 024 2^20 =1 048 576 2^30 =1 073 741 824 2^40 =1 099 511 627 776
ENSA Safi
25
La mmoire centrale
Les bits (binary digits) / octets (bytes) Les cellules mmoire (mots) typiquement 32 ou 64 bits Registre dadresse et registre de donnes Lecture et criture
ENSA Safi
26
Schma de principe
Connecteurs donnes
Memoire centrale
Connecteurs adresse
ENSA Safi 27
Les instructions Les adresses Unit de contrle / unit arithmtique et logique Les registres
ENSA Safi
28
Les instructions
Trois informations ncessaires la CPU en contact avec la mmoire RAM. 1. 2. 3. Quelle information traiter ? Quel traitement effectuer ? O ranger le rsultat ?
ENSA Safi
29
Les adresses
La suite des instructions excuter est elle-mme range en mmoire. LA CPU ne communique avec lextrieur que via la mmoire et naccde aux informations que par leur adresse.
ENSA Safi
30
Circuit additionneur
Additionneur 2 bits
OU ET
ET
ENSA Safi
32
Les registres
Cellules mmoires trs rapides et ddicaces dans la CPU Le compteur ordinal contient ladresse de la prochaine instruction excuter Le registre dinstruction contient linstruction en cours dexcution Laccumulateur Autres registres : gnraux, dindice, de base, dtat (PSW), registre de pile, registre spcialiss (dcalage, virgule flottante, )
ENSA Safi
33
ENSA Safi
36
CPU
ENSA Safi
37
Carte Graphique
ENSA Safi
38
Carte Son
ENSA Safi
39
Carte rseau
ENSA Safi
40
Les Bus
ENSA Safi
41
Connecteurs dentre/sortie
ENSA Safi
42
Hirarchie mmoire
Dans un ordinateur, le processeur accde aux instructions du programme excuter ainsi qu'aux donnes ncessaires son excution depuis la mmoire.
ENSA Safi 43
Programmation Procdurale
Bien distinguer !
Spcification d un algorithme : ce que fait lalgorithme cahier des charges du problme rsoudre Expression d un algorithme : comment il le fait texte dans un langage de type Pascal / C Implmentation d un algorithme : traduction du texte prcdent dans un langage de programmation rel
ENSA Safi 45
Programmation Procdurale
Notion didentificateur et de type Notion de fonction Instructions de contrle du flux dexcution Comment concevoir un programme ? Quelques exemples de code Le traitement des donnes avant tout
ENSA Safi
46
Notion de variable
Une variable est un lment de donne dsigne par un identificateur. Dans un langage typ , chaque variable a un type (int, float, boolean, String, ) chaque identificateur a une porte (portion du code dans laquelle lidentificateur est reconnu; en gnral, le bloc dinstructions dans lequel la variable est dclare). Une variable est un endroit de la mmoire laquelle on a donn un nom de sorte que lon puisse y faire facilement rfrence dans le programme. Une variable a une valeur, correspondant un certain type. La valeur dune variable peut changer au cours de lexcution du programme ( do son nom ;-) )
ENSA Safi 48
i:=4;
ENSA Safi
49
Notion de fonction
Une fonction est un morceau de code qui permet de rsoudre un sous-problme du problme trait La dcomposition du code en tches et sous- tches, le rend plus modulaire. Le programme est plus clair, plus lisible, plus aisment modifiable Les fonctions cachent les dtails dimplmentation : il suffit de savoir ce quelles font et non comment elles le font
ENSA Safi
50
Notion de fonction
ENSA Safi
51
ENSA Safi
52
ENSA Safi
53
Exemple : un pseudo-code
Programme Principal
// Ce programme permet de lire deux entiers lcran et dafficher ensuite leur somme
unEntier=lisAlEcranUnEntier(); unAutreEntier=lisAlEcranUnEntier();
// utilisation de la fonction lisAlEcranUnEntier()()
ecrisAlEcran(calculeSomme(unEntier,unAutreEntier));
// utilisation des fonctions calculeSomme(int,int) et ecrisAlEcran(int)
END
ENSA Safi 54
Instructions de Contrle
Branchement conditionnel : if then else ( si alors aussinon) switch case Boucle conditionnelle : while do ou do while ( fait tant que ) Boucle inconditionnelle For
ENSA Safi
55
Exemple de code
Function calculeSomme( i , j : integer ) : integer ;
// cette fonction donne la somme de deux entiers, si elle est positive, // et renvoie 0 aussinon.
ENSA Safi
56
Solution 1
Function calculeSomme ( i , j : integer ) : integer ; Begin somme := i+j ; End ;
ENSA Safi
57
Solution 2
Function somme ( i , j : integer ) : integer ; Begin somme := i+j ; If somme <0 then somme:=0 ; End ;
ENSA Safi
58
ENSA Safi
60
Premiers algorithmes
algorithmique ?
Encyclopedia Universalis : Spcification dun schma de calcul sous forme dune suite finie doprations lmentaires obissant un enchanement dtermin. DONNES RSULTATS, ACTIONS Composition d un nombre fini doprations dont chacune est : dfinie de faon rigoureuse et non ambigu effective sur les donnes adquates (excution en temps fini)
ENSA Safi 63
ENSA Safi
64
rflchir
ENSA Safi
65
bon en algorithmique ?
La matrise de lalgorithmique requiert deux qualits, trs complmentaires dailleurs : il faut avoir une certaine intuition, car aucune recette ne permet de savoir a priori quelles instructions permettront dobtenir le rsultat voulu. Cest l, si lon y tient, quintervient la forme dintelligence requise pour lalgorithmique. Alors, cest certain, il y a des gens qui possdent au dpart davantage cette intuition que les autres. Cependant, et jinsiste sur ce point, les rflexes, cela sacquiert. Et ce quon appelle lintuition nest finalement que de lexprience tellement rpte que le raisonnement, au dpart laborieux, finit par devenir spontan . il faut tre mthodique et rigoureux. En effet, chaque fois quon crit une srie dinstructions quon croit justes, il faut systmatiquement se mettre mentalement la place de la machine qui va les excuter, arm d'un papier et d'un crayon, afin de vrifier si le rsultat obtenu est bien celui que lon voulait. Cette opration ne requiert pas la moindre once dintelligence. Mais elle reste nanmoins indispensable, si lon ne veut pas crire laveuglette. Et petit petit, force de pratique, vous verrez que vous pourrez faire de plus en plus souvent lconomie de cette dernire tape : lexprience fera que vous verrez le rsultat produit par vos instructions, au fur et mesure que vous les crirez. Naturellement, cet apprentissage est long, et demande des heures de travail patient. Aussi, dans un premier temps, vitez de sauter les tapes : la vrification mthodique, pas pas, de chacun de vos algorithmes reprsente plus de la moiti du travail accomplir... et le gage de vos progrs.
ENSA Safi
66
Variables
La premire chose faire avant de pouvoir utiliser une variable est de crer la bote et de lui coller une etiquette (identificateur). Ceci se fait tout au dbut de lalgorithme, avant mme les instructions proprement dites. Cest ce quon appelle la dclaration des variables Il y a trois type: Type Numrique Type alphanumrique Type boolen En pseudo-code, une dclaration de variables aura ainsi cette tte : variables g : entier
identificateur
En informatique, une variable possde un moment donn une valeur et une seule valeur Dans un programme une variable a un identificateur unique un identificateur est un mot : - commenant obligatoirement par une lettre - ne comportant aucun espace
ENSA Safi 70
Type variable
Type Numrique Type caractre Type chane Type boolen
ENSA Safi
71
ENSA Safi
72
Instruction daffectation
Cette seule chose quon puisse faire avec une variable, cest laffecter, cest--dire lui attribuer une valeur En pseudo-code, l'instruction d'affectation se note avec le signe
ENSA Safi
73
Expressions et oprateurs
Oprateurs numriques : + : addition - : soustraction * : multiplication / : division Parenthses * et / + et 12 * 3 + 5 et (12 * 3) + 5 valent strictement la mme chose. En revanche, 12 * (3 + 5) vaut 12 * 8 soit 96 Oprateur alphanumrique : & concatner Oprateurs logiques (ou boolens) ET, du OU, du NON
ENSA Safi
74
Instruction daffectation
A la rigueur, elle peut ne pas avoir de valeur du tout (une fois quelle a t dclare, et tant quon ne la pas affecte. A signaler que dans certains langages, les variables non encore affectes sont considres comme valant automatiquement zro). Mais ce qui est important, cest que cette valeur justement, ne varie pas proprement parler. Du moins ne varie-t-elle que lorsquelle est lobjet dune instruction daffectation. La deuxime remarque concerne le signe de laffectation. En algorithmique, comme on la vu, cest le signe . Mais en pratique, la quasi totalit des langages emploient le signe gal. Et l, pour les dbutants, la confusion avec les maths est galement facile. En maths, A = B et B = A sont deux propositions strictement quivalentes. En informatique, absolument pas, puisque cela revient crire A B et B A, deux choses bien diffrentes. De mme, A = A + 1, qui en mathmatiques, constitue une quation sans solution, reprsente en programmation une action tout fait licite (et de surcrot extrmement courante). Donc, attention ! ! ! La meilleure des vaccinations contre cette confusion consiste bien employer le signe en pseudo-code, signe qui a le mrite de ne pas laisser place lambigut. Une fois acquis les bons rflexes avec ce signe, vous naurez plus aucune difficult passer au = des langages de programmation.
ENSA Safi 75
Exercice 1
Quelles seront les valeurs des variables A et B aprs excution des instructions suivantes ? variables A, B : Entiers Dbut A1 BA+3 A3 Fin
ENSA Safi
76
Solution
Aprs La valeur des variables est : A1 A=1 B=? BA+3 A=1 B=4 A3 A=3 B=4
ENSA Safi
77
Exercice 2
Quelles seront les valeurs des variables A, B et C aprs excution des instructions suivantes ? Variables A, B, C : Entier Dbut A5 B3 CA+B A2 CBA Fin
ENSA Safi
78
Solution
Aprs A5 B3 CA+B A2 CBA La valeur des variables est : A=5 B=? C=? A=5 B=3 C=? A=5 B=3 C=8 A=2 B=3 C=8 A=2 B=3 C=1
ENSA Safi
79
Exercice 3
Quelles seront les valeurs des variables A et B aprs excution des instructions suivantes ? Variables A, B : Entier Dbut A5 BA+4 AA+1 BA4 Fin
ENSA Safi
80
Solution
Aprs La valeur des variables est : A5 A=5 B=? BA+4 A=5 B=9 AA+1 A=6 B=9 BA4 A=6 B=2
ENSA Safi
81
Exercice 4
Quelles seront les valeurs des variables A, B et C aprs excution des instructions suivantes ? Variables A, B, C :Entier Dbut A3 B 10 CA+B BA+B AC Fin
ENSA Safi
82
Solution
Aprs A3 B 10 CA+B BA+B AC La valeur des variables est : A=3 B=? C=? A=3 B = 10 C=? A=3 B = 10 C = 13 A=3 B = 13 C = 13 A = 13 B = 13 C = 13
ENSA Safi
83
Exercice 5
Quelles seront les valeurs des variables A, B et C aprs excution des instructions suivantes ? variablesA, B, C :Entier Dbut A3 B 10 CA+B BA+B AC Fin
ENSA Safi
84
Solution
Aprs A5 B2 AB BA La valeur des variables est : A=5 B=? A=5 B=2 A=2 B=2 A=2 B=2
Les deux dernires instructions ne permettent donc pas dchanger les deux valeurs de B et A, puisque lune des deux valeurs (celle de A) est ici crase. Si lon inverse les deux dernires instructions, cela ne changera rien du tout, hormis le fait que cette fois cest la valeur de B qui sera crase.
ENSA Safi
85
Exercice 6
Plus difficile, mais cest un classique absolu, quil faut absolument matriser : crire un algorithme permettant dchanger les valeurs de deux variables A et B, et ce quel que soit leur contenu pralable.
ENSA Safi
86
Solution
Dbut CA AB BC Fin On est oblig de passer par une variable dite temporaire (la variable C).
ENSA Safi
87
Exercice 7
Une variante du prcdent : on dispose de trois variables A, B et C. crivez un algorithme transfrant B la valeur de A, C la valeur de B et A la valeur de C (toujours quels que soient les contenus pralables de ces variables).
ENSA Safi
88
Solution
Dbut DC CB BA AD Fin En fait, quel que soit le nombre de variables, une seule variable temporaire suffit
ENSA Safi
89
Exercice 8
Que produit lalgorithme suivant ? Variables A, B, C : Caractre Dbut A "423" B "12" CA+B Fin
ENSA Safi
90
Solution
Il ne peut produire quune erreur dexcution, puisquon ne peut pas additionner des caractres.
ENSA Safi
91
Exercice 9
Que produit lalgorithme suivant ? Variables A, B, C :Caractre Dbut A "423" B "12" CA&B Fin
ENSA Safi
92
Solution
En revanche, on peut les concatner. A la fin de lalgorithme, C vaudra donc "42312".
ENSA Safi
93
ENSA Safi
94
Exercice 1
Quel rsultat produit le programme suivant ? Variables v, double: entier Dbut V 231 Double V * 2 ecrire_ecran V ecrire_ecran le double est ,Double Fin
ENSA Safi
96
Solution
On verra apparatre lcran 231, puis 462 (qui vaut 231 * 2)
ENSA Safi
97
Exercice 2
Ecrire un programme qui demande un nombre lutilisateur, puis qui calcule et affiche le carr de ce nombre.
ENSA Safi
98
Solution
variables nb, carr : Entier Dbut ecrire_ecran "Entrez un nombre :" lire_clavier nb carr nb * nb ecrire_ecran "Son carr est : ", carr Fin En fait, on pourrait tout aussi bien conomiser la variable carr en remplaant les deux avant-dernires lignes par : ecrire_ecran "Son carr est : ", nb*nb C'est une question de style ; dans un cas, on privilgie la lisibilit de l'algorithme, dans l'autre, on privilgie l'conomie d'une variable.
ENSA Safi
99
Exercice 3
Ecrire un programme qui lit le prix HT dun article, le nombre darticles et le taux de TVA, et qui fournit le prix total TTC correspondant. Faire en sorte que des libells apparaissent clairement.
ENSA Safi
100
Solution
variables nb, pht, ttva, pttc : entier Dbut ecrire_ecran "Entrez le prix hors taxes :" lire_clavier pht ecrire_ecran "Entrez le nombre darticles :" lire_clavier nb ecrire_ecran "Entrez le taux de TVA ( %):" lire_clavier ttva pttc nb * pht * (1 + (ttva/100)) ecrire_ecran "Le prix toutes taxes est : ", pttc Fin L aussi, on pourrait squeezer une variable et une ligne en crivant directement. : ecrire_ecran "Le prix toutes taxes est : ", nb * pht * (1 + ttva) C'est plus rapide, plus lger en mmoire, mais un peu plus difficile relire (et crire !)
ENSA Safi
101
Les Tests
Si boolen Alors Boolen 1 Instructions Finsi oui Instruction 1 Si boolen Alors Instructions 1 Sinon Instructions 2 Finsi Si boolen1 Alors Instructions 1 Sinon si boolen2 Alors Instructions 2 Instruction suivant Instructions 3 Sinon Instructions 4 Finsi
ENSA Safi
non non
Instruction 4
102
Les Tests
Boolen est une condition : gal = diffrent de != strictement plus petit que < strictement plus grand que > plus petit ou gal <= plus grand ou gal >= Conditions composes oprateur logique ET, OU, NON, et XOR
ENSA Safi 103
Exercice 1
crire un algorithme qui demande un nombre lutilisateur, et linforme ensuite si ce nombre est positif ou ngatif (on laisse de ct le cas o le nombre vaut zro).
ENSA Safi
104