Introduction à L’algorithmique
1. Notion de programme
Un ordinateur est une machine électronique programmable
servant au
traitement de l’information codée sous forme binaire
Un programme est un assemblage et un enchaînement d’instructions
élémentaires écrit dans un langage de programmation, et exécuté par un
ordinateur afin de traiter les données d’un problème et renvoyer un ou
plusieurs résultats.
Un algorithme représente l'enchaînement des actions (instructions)
nécessaires pour faire exécuter une tâche à un ordinateur(résoudre un
problème) Un algorithme s'écrit le plus souvent en pseudo-langage de
programmation
L'algorithmique, l'art d'écrire des algorithmes, permet de se focaliser sur
la
procédure de résolution du problème sans avoir à se soucier des
spécificités
d'un langage particulier.
Pour résoudre un problème, il est vivement conseillé de réfléchir d'abord à
l'algorithme avant de programmer, c'est à dire d'écrire le programme en
langage de programmation.
2. Notion de variables et
déclarations
Les programmes ont pour but de traiter différentes données afin de
produire des
résultats. Les résultats peuvent eux-mêmes être des données pour
d'autres programmes.
Une variable peut être représentée par une case mémoire, qui contient
la valeur d'une donnée.
Chaque variable possède un nom unique appelé identificateur par lequel
on peut accéder à son contenu.
Par exemple, on peut avoir en mémoire une variable prix et une
variables
quantité qui contiennent les valeurs 10.2 et 5
NB : Attention à ne pas confondre la variable et son contenu
Une variable est un contenant, c'est à dire une sorte de boîte,
alors que le contenu d'une variable est une valeur numérique,
alphanumérique ou
booléenne, ou de tout autre type
Deux variables peuvent avoir la même valeur, mais une variable ne peut
pas
avoir plusieurs valeurs en même temps.
En revanche, la valeur d'une variable peut varier au cours du programme.
Les variables dont la valeur ne change pas au cours de l'exécution du
programme
sont appelées variables constantes ou plus simplement constantes.
Pour qu'un programme puisse utiliser une variable, il faut au préalable
que cette
variable soit déclarée, c'est-à-dire que le programme lui ait réservé une
place en mémoire et ait attribué l'identificateur à cette place.
Mais toutes les variables n'ont pas besoin de la même place en mémoire.
Un
grand nombre prend plus de place qu'un caractère. Selon le type de l'objet,
il faudra lui réserver plus ou moins de place: c'est pourquoi il faut déclarer
le type des variables et pas seulement leur nom. Par ailleurs, selon le type
des variables, les opérations possibles seront différentes.
Donc la déclaration d'une variable indique deux choses:
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 aisément. Par exemple pour des variables
représentant un prix et une quantité, évitez a et b mais utilisez plutôt prix
et quant.
Lorsqu’on déclare une variable (réserver un emplacement mémoire),
on doit préciser ce que l’on voudra mettre dedans, car de cela dépendent
la taille de l’emplacement de la mémoire et le type de codage utilisé.
2.1.1 Types numériques classiques
Le type de variable choisi pour un nombre déterminera :
les valeurs maximales et minimales des nombres pouvant être stockés
dans la variable.
Tous les langages, quels qu’ils soient offrent un « bouquet » de types
numériques, dont le détail est susceptible de varier légèrement d’un
langage à l’autre.
2.1.2 Autres types numériques
Certains langages autorisent d’autres types numériques,
notamment :
le type monétaire (avec strictement deux chiffres après la
virgule)
2.1.3 Type alphanumérique
Onledispose
type date (jour / mois
également / année).
du type alphanumérique (également appelé
type caractère, type chaîne ou en anglais, le type string ). Dans une
variable de ce type, on stocke des caractères, qu’il s’agisse de lettres,
de signes de ponctuation, d’espaces, ou même de chiffres. Le nombre
maximal de caractères pouvant être stockés dans une seule variable
string dépend du langage utilisé.
En pseudo-code, une chaine de caractères est toujours notée entre
guillemets
2.1.4 Type booléen
Le dernier type de variables est le type booléen : on y stocke
uniquement les valeurs logiques VRAI et FAUX. On peut représenter
ces notions de VRAI et de FAUX par TRUE et FALSE ou par des
nombres 0 et 1. Ce qui compte, c'est de comprendre que le type
booléen est très économique en termes de place mémoire occupée,
puisque pour stocker une telle information binaire, un seul bit suffit.
la déclaration de constante en pseudo-code se fait de la manière
suivante :
CONST Identificateur = valeur
Exemple :
CONST Pi = 3,14
Mois = " Janvier "
La déclaration de variables en pseudo-code se fait de la manière
suivante :
VAR Identificateur : Type
Exemple :
VAR nombre : entier
VAR PrixHT, TauxTVA, PrixTTC : réel
Nom, Prenom, Marque : chaine
Change : booléen
LA SYNTAXE GÉNÉRALE D’UN PSEUDO-CODE
3.L’INSTRUCTION D’AFFECTATION
L’une des manipulations qu’on puisse faire avec une variable, c’est
l’affecter, c’est-à-dire lui attribuer une valeur.
En pseudocode, l'instruction d'affectation se note avec le signe ←
My_var ← valeur (permet d'affecter une valeur a une variable)
La valeur peut etre :
une variable du même que type que My_var ;
une constante du dit My_var ;
une expression dont l'évaluation produit un résultat du type
My_var
Exemples 1:
1 VAR R : entier
←
R 10
VAR X, Y : entier
R Y← R prend la valeur de Y
X R← X prend la valeur de R
←
R X + Y R prend la valeur de X+Y
←
R R +1 on évalue R + 1 avec l'ancienne valeur de R et on
range le
résultat dans R
Exemples 2
MyVar1 ← 24
Cette instruction attribue la valeur 24 à la variable MyVar1.
Cela sous-entend impérativement que MyVar1 soit une variable de type
numérique. Si MyVar1 a été défini dans un autre type, cette instruction
provoquera une erreur.
On peut en revanche sans aucun problème attribuer à une variable la
valeur d’une autre variable, telle quelle ou modifiée. Par exemple :
←
MyVar2 MyVar1
Signifie que la valeur de MyVar2 est maintenant celle de MyVar1.
Notez bien que cette instruction n’a en rien modifié la valeur de MyVar1. Une
instruction d’affectation ne modifie que ce qui est situé à gauche de la flèche.
←
MyVar2 MyVar1 + 4
Si MyVar1 contenait 12, MyVar2 vaut maintenant 16. De même que précédemment,
MyVar1 vaut toujours 12.
←
MyVar2 MyVar2 + 1
Si MyVar2 valait 6, il vaut maintenant 7. La valeur de MyVar2 est modifiée, puisque
MyVar2 est la variable située à gauche de la flèche.
3.1 Ordre des instructions
Il va de soi que l’ordre dans lequel les instructions sont
écrites va jouer un rôle essentiel dans le résultat final.
Considérons les deux algorithmes suivants :
Exemple 1
Var A : Entier
Début
A ← 34
A ← 12
Fin
Exemple 2
Var A : Entier
Début
A ← 12
A ← 34
Fin
Il est clair que dans le premier cas la valeur finale de A est 12, dans
l’autre elle est 34 .
Il n’y a aucun intérêt à affecter une variable pour l’affecter
différemment juste après. En l’occurrence, on aurait tout aussi bien
atteint le même résultat en écrivant simplement :
Exemple 1
Var A : Entier
Début
A ← 12
Fin
Exemple 2
Var A : Entier
Début
A ← 34
Fin
PARTIE 1
Énoncé des Exercices
Exercice 1.1
Quelles seront les valeurs des variables A et B après exécution des
instructions suivantes ?
Var A, B : Entier
Début
A←1
B←A+3
A←3
Fin
Corrigé exercice 1.1
Après La valeur des variables est :
A←1 A=1B=?
B←A+3 A=1B=4
A←3 A=3B=4
Exercice 1.2
Quelles seront les valeurs des variables A, B et C après
exécution des instructions suivantes ?
Var A, B, C : Entier
Début
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 après exécution
des instructions suivantes ?
Var A, B : Entier
Début
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 après exécution
des instructions suivantes ?
Var A, B, C : Entier
Début
A ←3
B ← 10
C←A+B
B←A+B
A←C
Fin
Exercice 1.5
Quelles seront les valeurs des variables A et B après exécution des
instructions suivantes ?
Var A, B : Entier
Début
←
A 5
←
B 2
←
A B
←
B A
Fin
Les deux dernières instructions permettent-elles d’échanger les
deux valeurs de B et A ? Si l’on inverse les deux dernières
instructions, cela change-t-il quelque chose ?
4. EXPRESSIONS ET OPÉRATEURS
Une expression est un ensemble de valeurs, reliées par des
opérateurs, et équivalent à une seule valeur.
En résumé, on s’aperçoit que dans une instruction d’affectation, on
trouve :
A gauche de la flèche , un nom de variable, et uniquement cela .
A droite de la flèche , ce qu’on appelle une expression.
Une condition supplémentaire de validité d’une instruction
d’affectation est que :
l’expression située à droite de la flèche soit du même type que la
variable située à gauche.
Un opérateur est un signe qui relie deux valeurs, pour produire un
résultat.
Les opérateurs possibles dépendent du type des valeurs qui sont en
jeu.
4.1 Opérateurs numériques :
Ce sont les quatre opérations arithmétiques tout ce qu’il y a de
classique.
+ : addition
- : soustraction
* : multiplication
/ : division
4.2 Opérateur alphanumérique : &
Cet opérateur permet de concaténer, autrement dit de mettre bout à
bout, deux chaînes de caractères. Par exemple :
Var A, B, C : chaine de Caractère
Début
A ← "Gloubi"
B ← "Boulga"
C←A&B
Fin
La valeur de C à la fin de l’algorithme est "GloubiBoulga"
4.3 Opérateurs logiques (ou booléens) :
Il s’agit du ET, du OU et du NON .
Exercice 1.8
Que produit l’algorithme suivant ?
Var A, B, C : chaine
Début
A ← "423"
B ← "12"
C←A+B
Fin
Exercice 1.9
Que produit l’algorithme suivant ?
Var A, B, C : Chaine
Début
A ← "423"
B ← "12"
C←A&B
Fin
4.4 Les types et les opérateurs correspondants
1. Pour les entiers, la division est notée Div. Elle est nommée
division entière et diffère un peu de la division que l'on trouve sur
les calculettes. Elle ne donne que le chiffre avant la virgule du
résultat (elle renvoie un entier).
2. Les entiers supportent une opération supplémentaire appelée
modulo, notée mod et qui renvoie le reste de la division entière.
Exemple:
7 / 2 donne 3.5
7 Div 2 donne 3
7 Mod 2 donne 1
3. Les caractères sont comparés selon l’ordre du code ASCII (American
Standard Code for Information Interchange – Code standard Américain
de codage d’information). C’est ainsi qu’on peut comparer tous les
caractères entre eux. Par exemple la lettre Z (majuscule), de code
ASCII 90 est inférieure à la lettre a (minuscule) de code ASCII 97.
L’ordre ASCII des lettres de la même casse suit l’ordre alphabétique, de
sorte que A<B<C<D<…
4. L’opérateur & sert à concaténer des chaînes de caractère, ce qui
signifie
transformer plusieurs chaînes en une seule en les ajoutant les unes à
la suite des autres.
Ex : « Bonjour » & « à tous » donne « Bonjour à tous »
Table ASCII
5. Lecture et Ecriture
5.1 Notion de lecture et écriture
Imaginons que nous ayons fait un programme pour calculer le carré
d’un nombre, mettons 12. Si on a fait au plus simple, on a écrit un truc
du genre : Var A : Entier
Début
A ← 12^2
Fin
D’une part, ce programme nous donne le carré de 12. Mais si l’on
veut le carré d’un autre nombre que 12, il faut réécrire le programme.
D’autre part, le résultat est incontestablement calculé par la
machine. Mais elle le garde soigneusement pour elle, et l’utilisateur
qui fait exécuter ce programme, lui, ne saura jamais quel est le carré
C’est pourquoi, heureusement, il existe des instructions pour permettre
à la machine de dialoguer avec l’utilisateur.
Dans un sens, ces instructions permettent à l’utilisateur de rentrer
des valeurs au clavier pour qu’elles soient utilisées par le programme.
Cette opération est la lecture.
Dans l’autre sens, d’autres instructions permettent au programme de
communiquer des valeurs à l’utilisateur en les affichant à l’écran. Cette
opération est l’écriture.
5.2 Les instructions de lecture et d’écriture
Pour que l’utilisateur entre la (nouvelle) valeur de la variable Prix,
on mettra :
Lire (Prix)
Dès que le programme rencontre une instruction Lire, l’exécution
s’interrompt, attendant la saisi d’une valeur au clavier par l’utilisateur
Dès lors, aussitôt que la touche Entrée (Enter) a été frappée, l’exécution
reprend. Dans le sens inverse, pour écrire quelque chose à l’écran, c’est
aussi simple que :
écrire (Prix )
Avant de Lire une variable, il est très fortement conseillé d’écrire des
libellés à l’écran, afin de prévenir l’utilisateur de ce qu’il doit saisir (sinon,
l’ utilisateur passe son temps à se demander ce que l’ordinateur attend
de lui) :
Ecrire "Entrez la valeur du rayon du cercle:"
Lire Rayon
Énoncé des Exercices
Exercice 5.1
Quel résultat produit le programme suivant ?
Programme Prog1
Var val, double : réel
Début
Val← 231
Double ← Val * 2
Ecrire (Val)
Ecrire (Double)
Fin
Corrigés de l’exercice 5.1
On verra apparaître à l’écran 231, puis 462 (qui vaut 231 * 2)
Exercice 5.2
Ecrire un programme qui demande un nombre à l’utilisateur, puis qui
calcule et affiche le carré de ce nombre.
Correction de l’Exercice 5.2
Programme NombreCarrée
Var nb, carr : Entier
Début
Ecrire ("Entrez un nombre :« )
Lire (nb)
carr ← nb * nb
Ecrire "Son carré est : ", carr
Fin
En fait, on pourrait tout aussi bien économiser la variable carr en
remplaçant les deux avant-dernières lignes par :
Ecrire ("Son carré est : ", nb*nb )
C'est une question de style ; dans un cas, on privilégie la lisibilité de
l'algorithme, dans l'autre, on privilégie l'économie d'une variable.
Exercice 5.3
Ecrire un programme qui lit le prix HT d’un article, le nombre d’articles
et le taux de TVA, et qui fournit le prix total TTC correspondant. Faire
en sorte que des libellés apparaissent clairement.
Correction Exercice 5.3
Programme CalculPrixTTC
Var nb, pht, ttva, pttc : Réel
Début
Ecrire ("Entrez le prix hors taxes :" )
Lire (pht)
Ecrire ("Entrez le nombre d’articles :")
Lire (nb)
Ecrire ("Entrez le taux de TVA :")
Lire (ttva)
pttc ← nb * pht * (1 + ttva)
Ecrire ("Le prix toutes taxes est : ", pttc)
Fin
Exercice 5.4
Ecrire un algorithme utilisant des variables de type chaîne de
caractères, et affichant quatre variantes possibles de la célèbre « belle
marquise, vos beaux yeux me font mourir d’amour ». On ne se soucie
pas de la ponctuation, ni des majuscules.
CorrectionExercice 5.4
Programme ExempleChaine
Var Mot1, Mot2, Mot3, Mot4 : Chaine
Début
Mot1 ← "belle Marquise"
Mot2 ← "vos beaux yeux"
Mot3 ← "me font mourir"
Mot4 ← "d’amour"
Ecrire (Mot1 & " " & Mot2 & " " & Mot3 & " " & Mot4 )
Ecrire (Mot3 & " " & Mot2 & " " & Mot4 & " " & Mot1)
Ecrire (Mot2 & " " & Mot3 & " " & Mot1 & " " & Mot4)
Ecrire (Mot4 & " " & Mot1 & " " & Mot2 & " " & Mot3)
Fin