Algo 01
Algo 01
Algo 01
Laporte
Intro l'algo
I. Notion de programme
Rappel: Un ordinateur est une machine lectronique programmable servant au traitement de linformation code sous forme binaire, cest--dire sous forme de tout ou rien (soit le courant passe, soit il ne passe pas). Contrairement la vision des films de science-fiction, un ordinateur est une machine totalement dnue d'intelligence. Il n'est capable de traiter quun nombre limit d'instructions. Donc il ne faut en aucun cas tre intimid par les ordinateurs: ils sont infiniment plus btes que vous. Ce n'est que lorsqu'on ralise vraiment la stupidit des ordinateurs qu'on commence progresser, car il faut s'abaisser son niveau: il faut tout lui dire, car il fait tout au pied de la lettre, sans rflchir. Pourtant, contrairement aux autres machines qui sont ddies un nombre limit de tches, l'ordinateur est potentiellement capable deffectuer une infinit de tches concernant le traitement rationnel de linformation. On dit que c'est une machine universelle. Alors comment une machine stupide peut traiter autant de problmes diffrents? C'est que, grce aux actions de base qu'elle sait raliser, il est possible en les assemblant de faon pertinente, de rsoudre la plupart des problmes concernant le traitement de l'information. Il suffit de lui indiquer l'ordre dans lequel il faut qu'il effectue ces actions basiques et avec quelles donnes. Ces ordres lmentaires sont appels instructions et sont rassembles au sein d'un programme. Comme l'ordinateur a l'avantage d'excuter trs rapidement et sans erreurs les ordres qu'on lui donne (les instructions), il excute beaucoup de traitements complexes plus vite et plus srement qu'un homme. Pour donner des ordres l'ordinateur, il est ncessaire de pouvoir communiquer avec lui. Cette communication passe par un langage de programmation, dans lequel est crit le programme. Un programme est un assemblage et un enchanement dinstructions lmentaires crit dans un langage de programmation, et excut par un ordinateur afin de traiter les donnes dun problme et renvoyer un ou plusieurs rsultats. Un algorithme reprsente l'enchanement des actions (instructions) ncessaires pour faire excuter une tche un ordinateur(rsoudre un problme) Un algorithme s'crit le plus souvent en pseudo-langage de programmation (appel langage algorithmique)
DAIGL BTS IG 1
S. Laporte
Intro l'algo
Un algorithme n'est donc excutable directement par aucune machine. Mais il a l'avantage d'tre traduit facilement dans tous les langages de programmation. L'algorithmique, l'art d'crire des algorithmes, permet de se focaliser sur la procdure de rsolution du problme sans avoir se soucier des spcificits d'un langage particulier. Pour rsoudre un problme, il est vivement conseill de rflchir d'abord l'algorithme avant de programmer proprement dit, c'est dire d'crire le programme en langage de programmation.
rflexion"
problme
algorithme
codage
programme
Les donnes d'un programme doivent tre rcupres en mmoire centrale, partir du clavier ou d'un fichier par exemple, pour pouvoir tre traites par le processeur qui excute le programme. Ainsi, toutes les donnes d'un programme sont mmorises en mmoire centrale, dans des sortes de cases que l'on appelle variables. Une variable peut tre reprsente par une case mmoire, qui contient la valeur d'une donne. Chaque variable possde un nom unique appel identificateur par lequel on peut accder son contenu. Par exemple, on peut avoir en mmoire une variable prix et une variables quantit qui contiennent les valeurs 10.2 et 5 10.2 prix 5 quantit
$ Attention ne pas confondre la variable et son contenu Une variable est un contenant, c'est dire une sorte de bote, alors que le contenu d'une variable est une valeur numrique, alphanumrique ou boolenne, ou de tout autre type Deux variables peuvent avoir la mme valeur, mais une variable ne peut pas avoir plusieurs valeurs en mme temps. En revanche, la valeur d'une variable peut varier au cours du programme. L'ancienne valeur est tout simplement crase et remplace par la nouvelle.
DAIGL BTS IG 1
S. Laporte
Intro l'algo
Les variables dont la valeur ne change pas au cours de l'excution du programme sont appeles variables constantes ou plus simplement constantes.
variable
DAIGL BTS IG 1
S. Laporte
Intro l'algo
entier
-10, 3, 689
caractre chaine
'B' 'h' '' '?' '\n' "Bonjour" "93000" "toto@caramail.com" VRAI, FAUX
boolen
DAIGL BTS IG 1
S. Laporte
Intro l'algo
% Pour les entiers, la division est note Div. Elle est nomme division entire et diffre un peu de la division que l'on trouve sur les calculettes. Elle ne donne que le chiffre avant la virgule du rsultat (elle renvoie un entier). & Les entiers supportent une opration supplmentaire appele modulo, note mod et qui renvoie le reste de la division entire. Exemple: 7 / 2 donne 3.5 7 Div 2 donne 3 7 Mod 2 donne 1 ' Les caractres sont compars selon lordre du code ASCII. Cest ainsi quon peut comparer tous les caractres entre eux. Par exemple la lettre Z (majuscule), de code ASCII 90 est infrieure la lettre a (minuscule) de code ASCII 97. Lordre ASCII des lettres de la mme casse suit lordre alphabtique, de sorte que A<B<C<D< ( Loprateur & sert concatner des chanes de caractre, ce qui signifie transformer plusieurs chanes en une seule en les ajoutant les unes la suite des autres. Ex : Bonjour & tous donne Bonjour tous
// les variables au sens strict VAR DEBUT /* instructions*/ FIN Les mots du langage algorithmique sont crits en gras ou souligns. Un algorithme commence par le mot PROGRAMME suivi de son identificateur (le nom du programme). Ensuite viennent les dclarations: dans un premier temps celles des constantes, annonce par CONST, puis celle des variables, annonce par VAR. Pour dclarer une variable, on indique son identificateur suivi d'un double point et de son type. La valeur des constantes est donne ds leur dclaration, avec le signe ) prcd de son identificateur. Le corps du programme commence par DEBUT et se termine par FIN. On peut insrer des commentaires, soit entre les balises /* */, soit aprs // jusqu' la fin de la ligne. DAIGL BTS IG 1 5 corps du programme riri, fifi : rels loulou : chane
S. Laporte
Intro l'algo
*!
valeur d'une expression
messages du programme
DAIGL BTS IG 1
S. Laporte
Intro l'algo
B. Laffectation
1. Prsentation dtaille
Laffectation consiste tout simplement placer une valeur dans une variable (ce qui revient changer le contenu de cette variable) La nouvelle valeur est value partir d'une expression, qui peut tre - soit une autre variable ou constante, - soit une valeur littrale - soit une combinaison de variables, de valeurs littrales et d'oprateurs + Exemple: Supposons que rayon soit une variable de valeur 5 2 * rayon * 3.14 est une expression qui vaut 31.4 En algorithmique, pour reprsenter lopration daffectation, on va utiliser le symbole ). On vite dutiliser le symbole = pour ne pas le confondre avec lgalit mathmatique. x)5; x)y; x)5+8; x)5+y; Les instructions daffectation sont formes de deux parties : A gauche du symbole ), on trouve toujours le nom dune variable destine recevoir une valeur. ," A droite, on trouve lexpression qui va donner la valeur quon veut affecter la variable en question.
,"
Linstruction daffectation agit en deux temps : Tout dabord elle dtermine la valeur de lexpression droite du ) (la plupart du temps, il n'y a mme pas de calculs faire!) ," puis elle range la rsultat dans la variable situe gauche.
,"
Linstruction x ) y na pas la mme signification que linstruction y ) x contrairement aux mathmatiques o x = y est quivalent y = x. L'instruction x ) y signifie que x va prendre la valeur de y. Au contraire y ) x signifie que y va prendre la valeur de x.
DAIGL BTS IG 1
S. Laporte
,"
Intro l'algo
On ne peut affecter de valeur qu une variable. Il est impossible daffecter une valeur une expression. Ainsi, par exemple, linstruction a + 5 ) b na pas de sens, alors que a + 5 = b a une signification en mathmatiques. ," Il est possible de retrouver la mme variable droite et gauche de lexpression. Ecrire a ) a + 3 a un sens en programmation, alors que a = a + 3 n'a pas de sens en mathmatiques. Cela signifie que lon value a + 3 avec l'ancienne valeur de a et quon range le rsultat dans a. La valeur de a sera donc augmente de 3 par cette opration. en maths en programmation
a=a+3
$ impossible
a ) a+3
nouvelle valeur
Illustration: VAR a, b : entiers //a et b ont une valeur indtermine DEBUT a)3 // a vaut 3 // b na pas encore de valeur (ou plus exactement a une valeur indtermine) b ) a + 2 // b vaut 5, a vaut toujours 3 a ) b * 2 // a vaut 10, b vaut 5 b ) b + 1 // b vaut 6 FIN ! Application : la permutation Comment changer les valeurs de deux variables a et b ? (lment de rponse : si on commence par crire a = b on va dtruire la valeur de a Il va falloir utiliser une troisime variable)
S. Laporte
Intro l'algo
Les valeurs numriques, nous lavons vu, scrivent de faon naturelle, sans avoir les accompagner de symboles supplmentaires. Il nen est pas de mme avec les caractres et les chanes, quil faut entourer de guillemets ou d'apostrophe. Sinon, en effet, le programme pourrait confondre le caractre ou la chane avec le nom dune variable. Les chanes sont entoures de guillemets et les caractres de simples apostrophes. Exemples: rponse ) 'o' mot ) bonjour
C. La saisie
Linstruction de saisie permet de communiquer des donnes au programme. Cette instruction assigne une valeur entre au clavier dans une variable. Tant que l'utilisateur n'entre rien au clavier, le droulement du programme est stopp.
Notez que la saisie d'une variable au clavier permet, comme l'initialisation d'affecter une valeur initiale une variable: donc les variables saisies n'ont pas tre initialises.
DAIGL BTS IG 1
Intro l'algo
Saisir x Cette instruction va lire la valeur saisie au clavier et l'affecte la variable x Saisir x, y Cette instruction lit la premire valeur saisie au clavier et l'affecte x, puis lit la deuxime valeur saisie et l'affecte y ." Utilit de la saisie On pourrait se dire que linstruction de saisie est inutile car on dispose dj un moyen dattribuer une valeur aux variables, par linstruction daffectation. Mais en fait, linstruction de saisie (ou de lecture sur un priphrique autre que le clavier) est indispensable pour permettre dutiliser le mme programme sur des donnes diffrentes sans avoir changer les valeurs du programme chaque fois. Par exemple, linstruction lire x laquelle on fournirait 5, pourrait tre remplace par x ) 5. Mais alors si on veut utiliser le programme avec une autre valeur, il faudra aller changer le programme. En revanche, si on utilise une instruction de saisie, le choix de la valeur se fait en cours dexcution du programme. On peut donc utiliser le programme autant de fois que lon veut avec des donnes diffrentes sans avoir modifier le programme. + Exemple: Le traitement qui consiste calculer le primtre d'un cercle partir de son rayon peut s'effectuer pour toutes les valeurs possible de rayon. A chaque excution du programme, on fournit une valeur diffrente au rayon, ce qui va donner un primtre diffrent. Rayon 1 excution saisie 5 2 excution saisie 7 ect Sans instruction de saisie (ou de lecture sur un priphrique quelconque), un programme fournirait toujours le mme rsultat. 2 *3.14 * 7 2 *3.14 * 5 2 * 3.14 *rayon Primtre du cercle affichage 31.4
affichage 43.74
S. Laporte
Intro l'algo
D. l'affichage
La plupart des programmes ncessitent de communiquer lutilisateur un certain nombre de rsultats par lintermdiaire dun priphrique. Pour cela, ils utilisent des instructions d'affichage. L'instruction d'affichage permet de fournir des rsultats directement comprhensible pour l'utilisateur travers l'cran. sous forme
." Syntaxe Afficher expression1, [expression2] + Exemples Afficher toto Cette instruction permet d'afficher la valeur de la variable toto l'cran Si toto est une chane qui vaut "tutu", cette instruction affichera tutu l'cran Afficher "Bonjour!" Celle-ci permet d'afficher la chane littrale Bonjour! l'cran Afficher a, b Quand on veut afficher deux objets la suite, on les spare d'une virgule Si a vaut 5 et b vaut 10, on obtient alors l'cran: 5 10 / Remarque: dans la plupart des langages (dont le C++), il faut ajouter dans le programme un espace entre les diffrentes expressions afficher, mais en algorithmique on ne s'embte avec ces dtails. On peut mlanger l'affichage de valeur littrales et de variables. Cela est particulirement utile si on veut voir apparatre un libell (texte accompagnant la saisie des donnes ou l'dition des rsultats, permettant de guider l'utilisateur). + Exemple Afficher Voici les rsultats : x = , x, et y = , y Ils apparatront dans lordre. Nous aurons donc lcran (en supposant que les valeurs de x et y sont respectivement 5 et 10) : Voici les rsultats : x = 5 et y = 10
DAIGL BTS IG 1
11
S. Laporte
Intro l'algo
SYNTHESE
Raliser un algorithme, cest exprimer, dans un langage prcis (le langage algorithmique), les rgles de traitement dun problme pour le soumettre un ordinateur (par un programme). Les donnes dun programme sont mmorises dans des variables qui sont des cases mmoire. Une variable est un contenant, qui contient une et une seule valeur un moment donn. Une variable est caractrise par : ," un identificateur (son nom) ," une valeur (qui peut varier au cours du programme, sauf pour les constantes) ," un type (qui dtermine sa taille et les oprations possibles) Les instructions de base sont :
l'affectation permet de changer la valeur d'une variable. ," la saisie permet d'assigner une variable, une valeur entre au clavier ," l'affichage permet d'crire le contenu d'une variable ou d'une expression l'cran
,"
Exemple complet Nous allons crire un algorithme qui calcule l'ge de l'utilisateur en fonction de son anne de naissance. PROGRAMME ge CONST anne ) 2000 VAR ddn : entier // date de naissance DEBUT Afficher "Entrez votre anne de naissance sur 4 chiffres" Saisir ddn Afficher "Vous avez, ou aurez dans l'anne" , anne ddn , "ans." FIN
saisie
donnes traitement
utilisateur
affichage
rsultats
ordinateur
DAIGL BTS IG 1
12