You are on page 1of 16

K.

Zabo Intro l'algo Centre Universitaire Professionnalis

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)

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

L3-M1-M2-INFORMATIQUE-TELECOMS 1
K. Zabo Intro l'algo Centre Universitaire Professionnalis

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 codage

problme algorithme 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 variable quantit qui
contiennent les valeurs 500 et 15
500 15

Prix 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.

L3-M1-M2-INFORMATIQUE-TELECOMS 2
K. Zabo Intro l'algo Centre Universitaire Professionnalis

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 type
variable
- commence par - dtermine le domaine de
une lettre valeur de la variable
- pas d'espace

valeur

-domaine de valeur incluse dans le 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

L3-M1-M2-INFORMATIQUE-TELECOMS 3
K. Zabo Intro l'algo Centre Universitaire Professionnalis

3. Les oprateurs de lalgorithmique

Type Exemple oprations possibles symbole ou mot cl correspondant

rel -15.69 , 0.36 addition +


soustraction
multiplication * (et pas x pour ne pas confondre avec la lettre x)
division /
exposant ^
pourcentage %
comparaisons <, ,>, , =,

entier -10, 3, 689 addition +


soustraction
multiplication * (et pas x pour ne pas confondre avec la lettre x)
division DIV
modulo MOD
exposant ^
pourcentage %

caractre 'B' 'h' '' '?' '\n' comparaisons <, ,>, , =, ref(7)

chaine "Bonjour" "93000" concatnation &


"toto@caramail.com" longueur longueur(chane) ref(8)
extraction

boolen VRAI, FAUX comparaison <, ,>, , =,


ngation NON

L3-M1-M2-INFORMATIQUE-TELECOMS
K. Zabo Intro l'algo Centre Universitaire Professionnalis

conjonction ET
disjonction OU

DAIGL BTS IG 1 4

L3-M1-M2-INFORMATIQUE-TELECOMS
K. Zabo Intro l'algo Centre Universitaire Professionnalis

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
Ref(7)
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
ref(8)
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 arro 10 : entier
arri "bo njour!" : chane dclarations

// les variables au sens strict


VAR zinzin, zozo : rels
loulou : chane

DEBUT
corps du
/* instructions*/ programme

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.
L3-M1-M2-INFORMATIQUE-TELECOMS

6
K. Zabo Intro l'algo Centre Universitaire Professionnalis

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'autres instructions permettent de lire et d'crire sur d'autres priphriques: nous les
tudierons plus tard.

Illustration des instructions lmentaires

mmoire cran
cran
variables et constantes
clavier

valeur d'une expression

messages du programme

saisir
afficher
affectation

L3-M1-M2-INFORMATIQUE-TELECOMS

7
K. Zabo Intro l'algo Centre Universitaire Professionnalis

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.
L3-M1-M2-INFORMATIQUE-TELECOMS

8
K. Zabo Intro l'algo Centre Universitaire Professionnalis

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 possible et trs courant


a=a+3 ancienne valeur

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

L3-M1-M2-INFORMATIQUE-TELECOMS

9
K. Zabo Intro l'algo Centre Universitaire Professionnalis

3. Complments

Laffectation de caractres et de chaines


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

L3-M1-M2-INFORMATIQUE-TELECOMS

10
K. Zabo Intro l'algo Centre Universitaire Professionnalis

Syntaxe

Saisir variable1 [, variables2, ]*

Exemples:

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 possibles de rayon. A chaque excution du programme, on
fournit une valeur diffrente au rayon, ce qui va donner un primtre diffrent.

Rayon 2 * 3.14 *rayon Primtre


du cercle
1 excution
saisie affichage
5 2 *3.14 * 5 31.4

2 excution
saisie affichage

7 2 *3.14 * 7

43.74 ect

Sans instruction de saisie (ou de lecture sur un priphrique quelconque), un


programme fournirait toujours le mme rsultat.

L3-M1-M2-INFORMATIQUE-TELECOMS 11
K. Zabo Intro l'algo Centre Universitaire Professionnalis

* Les crochets indiquent des lments optionnels


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 sous forme directement


comprhensible pour l'utilisateur travers l'cran.

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

L3-M1-M2-INFORMATIQUE-TELECOMS 12
K. Zabo Intro l'algo Centre Universitaire Professionnalis

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

rsultats
affichage
utilisateur ordinateur

L3-M1-M2-INFORMATIQUE-TELECOMS 13
K. Zabo Intro l'algo Centre Universitaire Professionnalis

CHAPITRE 1 INTRO A LALGO Enonce des Exercices

Exercice 1.1

Quelles seront les valeurs des variables A et B aprs excution des instructions suivantes ?
Variables A, B en Entier
Dbut
A 1
B A + 3
A 3
Fin

Exercice 1.2

Quelles seront les valeurs des variables A, B et C aprs excution des instructions suivantes ?
Variables A, B, C en Entier
Dbut
A 5
B 3
C A + B A
2
C B A
Fin

Exercice 1.3

Quelles seront les valeurs des variables A et B aprs excution des instructions suivantes ?
Variables A, B en Entier
Dbut A 5
B A + 4
A A + 1
B A 4
Fin

Exercice 1.4

Quelles seront les valeurs des variables A, B et C aprs excution des instructions suivantes ?
Variables A, B, C en Entier
Dbut
A 3
B 10
C A + B
B A + B
A C
Fin

L3-M1-M2-INFORMATIQUE-TELECOMS 14
K. Zabo Intro l'algo Centre Universitaire Professionnalis

Exercice 1.5

Quelles seront les valeurs des variables A et B aprs excution des instructions suivantes ?
Variables A, B en Entier
Dbut A 5
B 2
A B
B A
Fin

Moralit : les deux dernires instructions permettent-elles dchanger les deux valeurs de B et A ? Si lon
inverse les deux dernires instructions, cela change-t-il quelque chose ?

Exercice 1.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.

Exercice 1.7

Une variante du prcdent : on dispose de trois variables A, B et C. Ecrivez 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).

Exercice 1.8

Que produit lalgorithme suivant ?


Variables A, B, C en Caractres
Dbut
A "423" B
"12"
C A + B
Fin

Exercice 1.9

Que produit lalgorithme suivant ?


Variables A, B, C en Caractres
Dbut
A "423" B
"12"
C A & B
Fin

L3-M1-M2-INFORMATIQUE-TELECOMS 15
K. Zabo Intro l'algo Centre Universitaire Professionnalis

Exercice 1.10
Quel rsultat produit le programme suivant ?
Variables val, double numriques
Dbut
Val 231
Double Val * 2
Ecrire Val
Ecrire Double
Fin

Exercice 1.11
Ecrire un programme qui demande un nombre lutilisateur, puis qui calcule et affiche le carr de
ce nombre.

Exercice 1.12
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.

Exercice 1.13
Ecrire un algorithme utilisant des variables de type chane de caractres, et affichant quatre
variantes possibles de la clbre belle marquise, vos beaux yeux me font mourir damour . On ne
se soucie pas de la ponctuation, ni des majuscules.

L3-M1-M2-INFORMATIQUE-TELECOMS 16

You might also like