Você está na página 1de 12

S.

Laporte

Intro l'algo

Lyce Louise Michel

CHAPITRE 1 : Introduction la programmation

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

Lyce Louise Michel

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

II. Notion de variables et dclarations


1. Prsentation
Les programmes ont pour but de traiter diffrentes donnes afin de produire des rsultats. Les rsultats peuvent eux-mmes tre des donnes pour d'autres programmes. donne(s) programme rsultat(s)

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

Lyce Louise Michel

Les variables dont la valeur ne change pas au cours de l'excution du programme sont appeles variables constantes ou plus simplement constantes.

2. Dclaration des variables


Pour qu'un programme puisse utiliser une variable, il faut au pralable que cette variable ait t dclare, c'est--dire que le programme lui ait rserv une place en mmoire et ait attribu l'identificateur cette place. Mais toutes les variables n'ont pas besoin de la mme place en mmoire. Un grand nombre prend plus de place qu'un caractre. Selon le type de l'objet, il faudra lui rserver plus ou moins de place: c'est pourquoi il faut dclarer le type des variables et pas seulement leur nom. Par ailleurs, selon le type des variables, les oprations possibles seront diffrentes. Donc la dclaration d'une variable indique deux choses: - son identificateur (son nom) - son type (sa taille) Un identificateur peut tre compos de lettres et de chiffres mais il ne peut pas commencer par un chiffre et ne peut comporter d'espaces. L'identificateur des variables doit tre suffisamment signifiant pour qu'on reconnaisse leur fonction aisment. Par exemple pour des variables reprsentant un prix et une quantit, vitez a et b mais utilisez plutt prix et quant. En algorithmique, on distingue 5 types principaux: - les caractres (lettres, chiffres, ponctuation, code des oprations, espace, retour chariot, et plus gnralement toutes les touches que l'on peut trouver sur une machine crire) - les chanes de caractre (suites de caractres) - les entiers (les nombres sans virgule) - les rels (les nombres virgule et sans virgule) - les boolens (qui n'ont que deux valeurs possibles: soit VRAI, soit FAUX) Les oprations possibles sur les variables dpendent de leur type (voir page suivante) Synthse: identificateur - commence par une lettre - pas d'espace valeur
- incluse dans le domaine de valeur du type 1-dans certains langages, il est possible de ne pas dclarer le type des variables. Ce sont des langages faiblement typs. Mais ceci n'est pas recommand, c'est pourquoi en algorithmique, nous prendrons l'habitude de toujours dclarer le type des variables

variable

type - dtermine le domaine de


valeur de la variable

DAIGL BTS IG 1

S. Laporte

Intro l'algo

Lyce Louise Michel

3. Les oprateurs de lalgorithmique


Type rel Exemple -15.69 , 0.36 oprations possibles addition soustraction multiplication division exposant pourcentage comparaisons addition soustraction multiplication division modulo exposant pourcentage comparaisons concatnation longueur extraction comparaison ngation conjonction disjonction symbole ou mot cl correspondant + * (et pas x pour ne pas confondre avec la lettre x) / ^ % <, ,>, , =, + * (et pas x pour ne pas confondre avec la lettre x) DIV cf. ci-aprs % MOD cf. ci-aprs & ^ % <, ,>, , =, cf. ci aprs '

entier

-10, 3, 689

caractre chaine

'B' 'h' '' '?' '\n' "Bonjour" "93000" "toto@caramail.com" VRAI, FAUX

& cf. ci-aprs ( longueur(chane) <, ,>, , =, NON ET OU

boolen

DAIGL BTS IG 1

S. Laporte

Intro l'algo

Lyce Louise Michel

% 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

4. Syntaxe gnrale de lalgorithmique


PROGRAMME toto /* les constantes: il est obligatoire de leur donner une valeur ds leur dclaration */ CONST titi ) 10 : entier tutu ) "bonjour!" : chane dclarations

// 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

Lyce Louise Michel

III. Les instructions lmentaires


1. Prsentation gnrale
L'excution d'un programme est constitue : - d'changes d'informations en mmoire - de calculs Une instruction est un ordre lmentaire que peut excuter directement l'ordinateur. Une instruction revient dplacer une information d'un endroit un autre de la mmoire. Les informations (donnes) manipules par les instructions peuvent prendre plusieurs formes: - des variables proprement dites - des variables constantes - des valeurs littrales (crites telles qu'elles dans le programme: ex "bonjour", 45, VRAI) - des messages (libells) envoys l'utilisateur (quelles donnes sont entrer, quels rsultats sont affichs), qui sont des valeurs littrales particulires - des expressions complexes (combinaisons de variables, constantes et valeurs littrales avec des oprateurs) ex : 2 * r * 3.14 Les instructions lmentaires les plus courantes sont : - l'affectation: le fait de donner une nouvelle valeur une variable - l'affichage sur l'cran - la saisie travers le clavier D'autre instructions permettent de lire et d'crire sur d'autres priphriques: nous les tudierons plus tard.

Illustration des instructions lmentaires


mmoire variables et constantes clavier cran cran

*!
valeur d'une expression
messages du programme

saisir afficher affectation )

DAIGL BTS IG 1

S. Laporte

Intro l'algo

Lyce Louise Michel

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.
,"

2. Laffectation est diffrente de lgalit mathmatique


Quand on dit qu'une variable prend pour valeur une autre variable, a ne veut pas dire qu'elles seront toujours gales! Cela veut seulement dire qu'au moment de l'instruction, la premire variable va prendre la valeur de la seconde. Voici les principales diffrences entre laffectation et lgalit mathmatique:
,"

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

Lyce Louise Michel

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

- possible! et trs courant


ancienne 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)

3. Complments ." Laffectation de caractres et de chaines


DAIGL BTS IG 1 8

S. Laporte

Intro l'algo

Lyce Louise Michel

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

." Linitialisation des variables


Au dbut dun programme, les variables nont pas encore reues de valeur ; on dit quelles sont indfinies. Toutes les variables doivent tre initialises, cest--dire recevoir une valeur initiale, avant leur utilisation ( droite d'une affectation ou dans une expression conditionnelle). Sinon, le contenu de la variable nest pas vide, il n'est pas forcement nul, il est quelconque. Ainsi, lorsquon utilise une variable indfinie (qui na pas encore reue de valeur), le comportement du programme va tre alatoire. De l vient la ncessit de toujours bien initialiser les variables avant dutiliser leur valeur.1 Linitialisation seffectue gnralement au dbut du programme, juste aprs les dclarations. Elle prend la forme d'une simple affectation ou dune saisie au clavier. Programme initialisation /*dclarations*/ VAR x , y : entiers a : chane DEBUT /*initialisation*/ x)0 y ) 10 a ) "hello" /* autres instructions */ FIN

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

S. Laporte ." Syntaxe Saisir variable1 [, variables2, ]* + Exemples:

Intro l'algo

Lyce Louise Michel

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

* Les crochets indiquent des lments optionnels DAIGL BTS IG 1 10

S. Laporte

Intro l'algo

Lyce Louise Michel

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

Lyce Louise Michel

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