précédent: Introduction
monter: UE33/UE43 - Opt1. Algorithmique D.E.U.G. 2ème Année
suivant: Équivalence langage algorithmique / langage C
  Table des matières
Sous-sections
Le langage algorithmique est un langage générique permettant de
traiter des problèmes par concaténation d'instructions élémentaires.
Il est à la base de tous les langages de programmation (enfin...
tous les langages de programmations impératifs).
En matière de programmation, il n'y a pas grand chose d'obligatoire
mais beaucoup de choses recommandées. En particulier, un programme a à
peu près toujours la même organisation générale
Déclaration de variables
Qu'est ce qu'une variable ? Une variable est un espace mémoire nommé,
de taille fixée prenant au cours du déroulement de l'algorithme un
nombre indéfini de valeurs différentes. Ce changement de valeur se
fait par l'opération d'affectation (notée dans notre
langage algorithmique). La variable diffère de la notion de
constante qui, comme son nom l'indique, ne prend qu'une
unique valeur au cours de l'exécution de l'algorithme.
À quoi sert la déclaration de variable ? La partie déclaration
de variable permet de spécifier quelle seront les variables
utilisées au cours de l'algorithme ainsi que le type de valeur
qu'elles doivent respectivement prendre. Il est bien évident que l'on
ne peut mémoriser une chaîne de caractères dans une variable de type
``Entier''. Le type des variables est utile à l'algorithmicien pour
lui permettre de structurer ses idées. Il est très utile au
programmeur car il permet de détecter des erreurs potentielles. Il est
indispensable au compilateur car les différents types ne sont pas tous
représentés de la même façon. La représentation d'un même type peut
même varier d'un processeur à l'autre.
On utilisera différents types de variables (pour le moment):
Par exemple,
définit 2 variables de type entières n'ayant aucune valeur (pour l'instant).
Une instruction est une action élémentaire commandant à la machine un
calcul, ou une communication avec un de ses périphériques (Entrant ou
Sortant). Une instruction de base peut être :
- une affectation et/ou opération arithmétique:
- l'affectation est
l'action élémentaire principale puisque c'est par son intermédiaire
que l'on peut modifier la valeur d'une variable. L'affectation a
pour syntaxe variablevaleur.
- un affichage:
- l'affichage est l'action élémentaire permettant a
l'utilisateur de fournir un ou plusieurs résultats issus de son
algorithme. Ainsi l'affichage peut être une simple phrase mais aussi
peut permettre la visualisation du contenu (typé) d'une variable.
L'affichage dans le langage algorithmique se fait par
l'intermédiaire de la commande Écrire.
Cette séquence d'instructions affiche la phrase suivante à l'écran:
La Valeur de A est 3.
La Valeur de A+1 est 4.
Dans le langage simple que nous utilisons pour écrire nos
algorithmes, on indique directement ce qui doit être écrit en les
séparant par des virgules. En C, le mécanisme est un peu différent.
Le premier argument est une sorte de texte à trou que les autres
arguments viennent remplir.
- une lecture au clavier ou dans un fichier:
- la lecture au
clavier est l'action élémentaire permettant de spécifier par une
intervention humaine la valeur d'une variable. Cette action
symbolise donc la communication avec un périphérique d'entrée tel
que le clavier. Bien évidemment, la valeur saisie par l'utilisateur
de l'algorithme se d'être du même type que la variable recevant la
valeur. La saisie se fait par l'intermédiaire de la commande Lire.
Si l'utilisateur saisit la valeur 10, nous aurons alors à
l'écran:
La Valeur de 2*A est 20
Exercice 1
Que fait la liste d'instructions suivantes ?
Voir réponse
1.
Exercice 2
Que fait la liste d'instructions suivantes ?
Voir réponse
2.
Exercice 3
Comment inverser le contenu de deux variables ?
Voir réponse
3.
Exercice 4
Comment faire sans utiliser une variable supplémentaire?
Voir réponse
4.
Exercice 5
Étant donnée X, comment calculer le plus rapidement possible
?
Voir réponse
5.
Exercice 6
Écrire un algorithme saisissant le prix "TTC" d'une marchandise et
affichant le prix "Hors Taxe" sachant que cet article a une T.V.A.
de 18,6%.
Voir réponse
6.
Exercice 7
Écrire un algorithme saisissant 2 variables entières qui calcule et
affiche leur moyenne.
Voir réponse
7.
Exercice 8
Écrire un algorithme saisissant un temps en seconde que l'on
transcrira en jours, heure, minutes, secondes.
Voir réponse
8.
Exercice 9
En se basant sur l'exercice précédent, écrire un algorithme
permettant de faire la différence entre deux horaires saisis en
heure, minutes, secondes.
Voir réponse
9.
La condition en algorithmique est une instruction de branchement permettant de
décider, dans un contexte donné, quelle sera la séquence d'instructions
a appliquer. Elle permet ainsi à l'algorithme de prendre des décisions
concernant son exécution. Sa syntaxe est :
La section est facultative. La partie
est essentielle puisque c'est elle qui décide de
l'exécution des instructions conditionnées. Elle est de type Booléen.
Cela signifie que:
- si
vaut
, seul le bloc
sera exécuté.
- si
vaut
, seul le bloc
(s'il existe) sera exécuté.
On s'intéresse au bloc d'instructions suivant:
Exercice 10
Donner les valeurs des variable A, B et C à la
sortie de ce bloc d'instructions:
- pour , ,
Voir réponse 10.
- pour , ,
Voir réponse 10.
- pour
,
,
Voir réponse 10.
- pour , ,
Voir réponse 10.
-
, ,
Voir réponse 10.
Exercice 11
Saisir 3 entiers a, b, c et déterminer dans
(i.e. sans solution dans les complexes) les racines de
l'équation
.
Voir réponse
11.
Si le langage algorithmique se limitait aux structures précédentes,
nous ne pourrions pas faire grand chose de plus qu'avec une
calculatrice. On pourra nottemment remarquer que lorsque l'on a un
grand nombre d'opérations similaires à faires, le programme se
déroulant de façon linéaire, il est nécessaire d'écrire ces opérations
autant de fois que nécessaire. On introduit donc d'autres structures
de contrôle : les boucles.
La boucle permet d'appliquer une opération (c'est-à-dire un
ensemble d'instructions) à chaque élément d'une liste.
Ces boucles peuvent se présenter sous différentes formes:
Exercice 12
En vous inspirant de l'exemple précédent, écrivez un algorithme qui
demande un nombre
, calcule et affiche la somme
.
Voir réponse
12.
Boucle indéfinies
La boucle finie permet donc de réaliser des tâches répétitives à
l'aide d'un ordinateur. Néanmoins, il n'est pas toujours possible de
décrire simplement l'ensemble des indices que doit parcourir la
boucle. Dans le cas, par exemple, où l'on cherche le premier entier
tel que la soit premier, on ne peut (à moins de
réfléchir un peu) pas savoir la taille de l'ensemble d'indice à
observer. Peut-être même qu'un tel nombre n'existe pas...Une chose
est certaine, si ce nombre existe, une boucle permettra de le
trouver.
Une variable standard permet de stocker une valeur. Une variable
indicée de 1 à permet de stocker valeurs. La déclaration d'un
tableau dont les éléments ont un type de base, a une structure très
proche d'une déclaration de variables ayant un type de base. La seule
différence consiste à indiquer entre crochets le nombre d'éléments du
tableau après le nom de la variable.
L'accès aux valeurs du tableau se fait donc à l'aides d'indices.
Dans l'exemple de la section 1.5.2, le test
avait été utilisé. Ce n'est pas une instruction
élémentaire et la détermination de la valeur de "
" nécessite un certain nombre de calculs. Il serait
parfaitement possible d'insérer l'ensemble d'instruction correspondant
avant et et au début du corps de la boucle . Cela nuirait
cependant à la lisibilité de l'algorithme et ne serait pas très
pratique. Lorsqu'un ensemble d'instructions réalise un certain
algorithme et que cet ensemble est utilisé à différents endroits, il
faut utiliser une fonction.
La structure d'une fonction ressemble à s'y méprendre à celle d'un
programme si ce n'est qu'elle peut prendre un certain nombre de
paramètres en entrée et qu'elle doit renvoyer une valeur.
Si a est de type Réel et b de type Entier, il est ensuite
possible d'appeler une fonction power prenant deux
arguments (le premier de type Réel et le second de type Entier) et
renvoyant un Réel (par exemple) de la façon suivante:
Exercice 13
À titre d'exemple, comment écrire une fonction qui détermine si un
nombre n'est pas premier?
Voir réponse
13.
Notons quelque-chose d'extrèmement important concernant les variables
(même si cette notion est plus sémantique qu'algorithmique). Une
variable a une portée. Elle n'est visible que dans une certaine zone.
Pour mieux comprendre cette notion, regardons l'exemple suivant:
La sortie de toute mise en uvre raisonnable de l'algorithme
précédent est:
3.14156926
1
3.14156926
La variable i qui est modifiée ligne 6 dans la
fonction foo() est celle qui est définie
ligne 4 et pas celle qui est définie
ligne 2. À la sortie de la fontion
foo(), i (définie ligne 2) n'est
donc pas modifiée.
Il est donc possible de définir des variables en cours d'exécution du
programme. Lorsque l'on est à l'extérieur de la fonction foo(),
il n'est pas possible d'accéder à la variable i définie
ligne 4. L'algorithme suivant illustre cette
impossibilité.
Si l'on essayait de programmer cet algorithme tel quel, le compilateur
nous dirait qu'en ligne 9, la variable j n'a pas
été déclarée.
précédent: Introduction
monter: UE33/UE43 - Opt1. Algorithmique D.E.U.G. 2ème Année
suivant: Équivalence langage algorithmique / langage C
  Table des matières
Arnaud Legrand
2003-08-18