Académique Documents
Professionnel Documents
Culture Documents
Présenté par
Mr BABELA Audry
Ingénieur Génie Logiciel
Email : audry.babela@senprog.com
<date/time> <footer> 1
SOMMAIRE
Chapitre 1 : Introduction à l’algorithmique
Chapitre 2 : Les variables, lecture et écriture
Chapitre 3 : Les structures de contrôle et les boucles
Chapitre 4 : Tableaux et procédures de programmation
Chapitre 1 : Introduction à l’algorithmique
1. 1 .1 Définitions:
Un algorithme est une procédure de calcul bien définie qui prend en entrée un
ensemble de valeurs et qui délivre en sortie un ensemble de valeurs
Un algorithme est une suite d’instructions qui une fois exécutée correctement
conduit a la résolution d’un problème en un nombre fini d’étapes,
Pratique de l'optimisation :
Pour suivre l’efficacité d’une optimisation, le développeur s’appuie sur des tests
de performance, c’est-à-dire sur des mesures objectives du temps de traitement
et de la taille de la mémoire allouée.
De cette manière, le nombre 56 = 50 + 6 mais que l'on peut aussi écrire 56 = 5×101
+ 6×100
Rappel :
a0 = 1
a1 = a
a2 = a*a
an = a*...*a (n facteur)
Chapitre 1 : Introduction à l’algorithmique
1 .4.1 Bases décimale:
On peut selon ce principe imaginer une infinité de systèmes numériques fondés sur
des bases différentes.
En informatique, outre la base 10, on utilise très fréquemment le système binaire
(base 2) puisque la logique booléenne est à la base de l'électronique numérique.
Deux symboles suffisent: 0 et 1.
Cette unité élémentaire ne pouvant prendre que les valeurs 0 et 1 s'appelle un bit
(de l'anglais binary digit).
L’on vous avais parlé des rangs (unités, dizaines, centaines…), et bien sachez qu'en binaire
on emploie le mot « bit » (contraction de « binary-digit », signifiant simplement « rang binaire
»). Par exemple, le nombre en base 2 « 10011 » s'étale sur 5 bit.
Là où cela se complique, c'est qu'en binaire chaque rang ne peut prendre que deux valeurs (il
pouvait en prendre dix en décimal).
En binaire, un rang commence à 0 et se termine à 1.
Vous pouvez en comprendre que chaque bit représente une puissance de 2, tout comme
chaque rang en base 10 est une puissance de 10.
Chapitre 1 : Introduction à l’algorithmique
1 .4.1 Le binaire (suite):
Un code binaire représente un texte, des instructions de processeur ou toute autre
donnée utilisant un système à deux symboles.
Le système à deux symboles utilisé est souvent "0" et "1" dans le système de
numération binaire. Le code binaire assigne une combinaison de chiffres binaires,
également appelé bits, à chaque caractère, instruction, etc. Par exemple, une chaîne
binaire de huit bits peut représenter n'importe laquelle des 256 valeurs possibles et,
par conséquent, représenter une grande variété d'éléments différents.
26= 16 + 8 + 2
26= 1×16 + 1×8 + 1×2
26= 1×24 + 1×23 + 1×21 (on écrit les coefficients sous forme de puissances de 2)
26= 1×24 + 1×23 + 0×22 + 1×21 + 0×20 (on ajoute les puissances de 2 qui manquent)
26= 1×24 + 1×23 + 0×22 + 1×21 + 0×20 (voyez les puissances de 2 qui sont toutes là)
26= 1×24 + 1×23 + 0×22 + 1×21 + 0×20 (en vert : notre nombre en binaire !)
Il est important de ne pas oublier les puissances dont les coefficients sont zéro.Finalement,
pour obtenir le nombre 26 en binaire, il suffit de mettre les coefficients qui sont devant les
puissances de 2 à la suite. On obtient : 11010.
On écrit : (26)dec = (11010)bin
Chapitre 1 : Introduction à l’algorithmique
1.4.3 Conversion du décimal en binaire:
Méthode 2 : les puissances de 2
La conversion du décimal vers l'hexadécimal se fait par une suite de divisions entières ou bien
en utilisant le binaire comme base intermédiaire.
Chapitre 2 : Les variables, lecture et écriture
Une constante est un objet dont l'état reste inchangé durant toute l'exécution d'un
programme. On ne peut jamais modifier sa valeur et celle-ci doit donc être
précisée lors de la définition de l'objet.
Une variable est un objet dont le contenu peut être modifié par une action.
CONST PI=3.14
NOM="PASCAL"
Chapitre 2 : Les variables, lecture et écriture
Exemples
VAR Classement : ENTIER
Moyenne : REEL
Chapitre 2 : Les variables, lecture et écriture
Une variable de type logique (booléen) peut prendre deux valeurs VRAIE ou
FAUSSE.
Exemple :
VAR EXISTE :BOOLEEN
EXISTE <---VRAIE
Exemple :
• Opérateurs de comparaison : = , ≤ , ≥ , ≠
VAR X,Y :REEL
SUP :BOOLEEN
SUP <--- ( X > Y)
Chapitre 2 : Les variables, lecture et écriture
Exemple :
Var C : CARACTERE
C <- ‘A'
Chapitre 2 : Les variables, lecture et écriture
Une chaîne de caractère est un objet qui peut contenir plusieurs caractères de manière
ordonnée.
Exemple :
VAR NOM : CHAINE[30] → Chaine de 30 caractères maximum
ADRESSE : CHAINE → Chaine de 128 caractères maximum
Chapitre 2 : Les variables, lecture et écriture
Un type énuméré est un type permettant de représenter des objets pouvant prendre
leur valeur dans une liste finie et ordonnée de noms.
Exemple :
TYPE SEMAINE=(lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche)
TYPE COULEUR=(rouge, vert, bleu)
Chapitre 2 : Les variables, lecture et écriture
Un type intervalle est un type dont les objets prennent leur valeur dans une portion de
l'intervalle des valeurs d'un autre type (entier, énuméré ou caractère).
Exemple :
NBRE=0..99
OUVRABLE=lundi..vendredi
Chapitre 2 : Les variables, lecture et écriture
1. 2 .1 Constantes et variables: déclaration et type de variables:
Type structurés
Une structure est un objet contenant un ensemble d'objets de types différents, appelés
champs. Un type doit donc décrire l'ensemble des champs contenus dans ses objets.
Exemple :
STRUCTURE <NOM> STRUCTURE ETUDIANT{
{
champ1 : type NOM : CHAINE
champ2 : type NOTE : REEL
....
} Classement :ENTIER
}
Chapitre 2 : Les variables, lecture et écriture
1. 2 .1 Constantes et variables: déclaration et type de variables:
Type pointeur (1/3)
Un pointeur est une adresse mémoire: il permet de désigner directement une zone de
la mémoire et donc l'objet dont la valeur est rangée à cet endroit.
Un pointeur est souvent typé de manière à préciser quel type d'objet il désigne dans la
mémoire.
Un type pointeur est défini par le symbole ^ suivi par le nom du type de l'objet pointé:
VAR P1: ^ENTIER ! ! ! ! ! !
ET1: ^ETUDIANT
Chapitre 2 : Les variables, lecture et écriture
1. 2 .1 Constantes et variables: déclaration et type de variables:
Type pointeur (2/3)
Exemple:
ALGORITHME ESSAI
VAR P :^ENTIER
E : ENTIER
DEBUT
E ← 1 (* E=1*)
P ← @E (* On met dans P l'adresse de E → E est l'objet pointé par P *)
P^ ← 2 (* On met dans l'objet pointé par P la valeur 2 →E=2 *)
FIN
Chapitre 2 : Les variables, lecture et écriture
1. 2 .1 Constantes et variables: déclaration et type de variables:
Actions élémentaires :
les actions élémentaires sont des opérations simples, directement utilisables.
* Affectation
L'affectation permet de donner une valeur à une variable .
A ← 22 « reçoit » Si A avait une valeur auparavant, cette valeur disparaît : elle est écrasé par 22.
Format général :
<id_variable> <expression>
A ← 28+13
A « l'exécution » : l'expression est évaluée (calculée) et sa valeur est rangée dans la variable.
Exemple :
Qu'est qu'une structure de contrôle ? Pour faire simple, une structure de contrôle
est un ensemble d'instructions qui permet de contrôler l'exécution du code. Il en
existe essentiellement deux types :
Les structures de contrôle décrivent l’enchaînement des instructions. Elles permettent des traitements
séquentiels, conditionnels ou répétitifs (itératifs).
La plupart des autres structures de contrôle utilise la notion de condition (expression booléenne) :
Une condition a une valeur qui est, soit vraie, soit fausse.
3.2.1 Structures SI-ALORS
La conditionnelle permet d’exécuter une séquence d’instruction, seulement si une condition est vraie.
La condition est nécessairement une expression booléenne.
Évaluation :
la condition est évaluée;
si la condition est vraie, la séquence est exécutée puis le contrôle passe à la suite;
si la condition est fausse, le contrôle passe à la suite, sans exécuter la séquence.
Syntaxe :
SI <condition>
FINSI
Chapitre 3 : Les structures de contrôles et les boucles
DEBUT
LIRE(a)
SI a>0 alors
ECRIRE(a)
FIN SI
FIN
Chapitre 3 : Les structures de contrôles et les boucles
3.2.3 Structures SI-ALORS-SINON
La conditionnelle Si...Alors...Sinon... permet de poser une alternative. Si la condition est vraie, c’est la
séquence1 qui sera exécutée, sinon c’est la séquence2 qui sera exécutée. Dans tous les cas, l’exécution
continuera à suite.
Syntaxe :
SI <condition>
FINSI
Chapitre 3 : Les structures de contrôles et les boucles
Syntaxe : Fonctionnement :
1 : la condition 1 est évaluée :
SELONQUE Si la condition 1 est vraie, alors on exécute l'action correspondante et on
<condition 1> : <action 1> quitte la structure selon-que
<condition 2> : <action 2> Si la condition 1 est fausse, on évalue la condition 2...et ainsi de suite.
...
<condition n> : <action n> 2.Si aucune n'est vraie on effectue l'action sinon ( au cas où l'action sinon
SINON : <action_sinon> n'existe pas alors aucune action n'est exécutée !).
FINSELONQUE
Chapitre 3 : Les structures de contrôles et les boucles
FINSELONQUE
Chapitre 3 : Les structures de contrôles et les boucles
Normalement, une boucle s'exécute selon le cas, soit un nombre de fois connu à l'avance,
soit jusqu'à ce qu'une condition permette de sortir de la boucle. Il arrive toutefois qu'une
erreur de programmation fasse que la condition ne devienne jamais vraie. Le programme
s'exécute alors indéfiniment à l'intérieur de cette boucle infinie.
Chapitre 3 : Les structures de contrôles et les boucles
On distingue:
La boucle "POUR"
La boucle "TANT QUE"
La boucle "RÉPÉTER"
Chapitre 3 : Les structures de contrôles et les boucles
Algorithme: lecture_notes
var note: réel
i: entier
DEBUT
POUR i=1 à 5 faire
LIRE(note)
FIN POUR
FIN
Chapitre 3 : Les structures de contrôles et les boucles
Algorithme: puissance
var p, x: réel
i, n: entier
DEBUT
lire(x)
lire(n)
p←1
POUR i=1 à n FAIRE
p←x**p
FIN POUR
écrire(p)
FIN
Chapitre 3 : Les structures de contrôles et les boucles
EXERCICES
BOUCLE POUR Ecrire l'algorithme permettant d'afficher la table de multiplication par 9.
Fonctionnement
On exécute "action" tant que la condition est vraie, on arrête l'exécution lorsque la condition devient
fausse. Si initialement la condition est fausse on n'exécute pas action.
Chapitre 3 : Les structures de contrôles et les boucles
BOUCLE TANTQUE_REPETER
1. Définition :
Un ensemble de valeurs portant le même nom de variable et repérées par un nombre, s’appelle un
tableau, ou encore une variable indicée.
Le nombre qui, au sein d’un tableau, sert à repérer chaque valeur s’appelle l’indice.
Chaque fois que l’on doit désigner un élément du tableau, on fait figurer le nom du tableau, suivi de
l’indice de l’élément, entre parenthèses.
Syntaxe:
nom_tableau : TABLEAU[min_indice..max_indice] EN <type_predefini>;
ce qui signifie que les éléments ont pour type le type_predefini
les indices des éléments vont de min_indice à max_indice,
avec min_indice < max_indice,
NB: on peut déclarer un tableau de N valeurs comme ceci: nom_tableau: TABLEAU[ N ] DE <type_predefini>
Chapitre 4 : Tableaux et procédure de programmation
Moy ← (N1+N2+N3+N4+N5+N6+N7+N8+N9+N10+N11+N12)/12
C’est tout de même bigrement laborieux. Et pour un peu que nous soyons dans un programme de
gestion avec quelques centaines ou quelques milliers de valeurs à traiter, alors là c’est le suicide direct.
Chapitre 4 : Tableaux et procédure de programmation
C’est pourquoi la programmation nous permet de rassembler toutes ces variables en une seule, au sein
de laquelle chaque valeur sera désignée par un numéro. Cela donnerait donc quelque chose du genre
« la note numéro 1 », « la note numéro 2 », « la note numéro 8 ». C’est largement plus pratique.
Chapitre 4 : Tableaux et procédure de programmation
Un tableau doit être déclaré comme tel, en précisant le nombre et le type de valeurs qu’il contiendra (la
déclaration des tableaux est susceptible de varier d'un langage à l'autre. Certains langages réclament le
nombre d'éléments, d'autre le plus grand indice... C'est donc une affaire de conventions).
En nous calquant sur les choix les plus fréquents dans les langages de programmations, nous
déciderons ici arbitrairement et une bonne fois pour toutes que :
Chapitre 4 : Tableaux et procédure de programmation
On peut créer des tableaux contenant des variables de tous types : tableaux de numériques, bien sûr,
mais aussi tableaux de caractères, tableaux de booléens, tableaux de tout ce qui existe dans un
langage donné comme type de variables. Par contre, hormis dans quelques rares langages, on ne
peut pas faire un mixage de types différents de valeurs au sein d’un même tableau.
Chapitre 4 : Tableaux et procédure de programmation
Remarque générale : l’indice qui sert à désigner les éléments d’un tableau peut être exprimé directement comme un
nombre en clair, mais il peut être aussi une variable, ou une expression calculée.
Dans un tableau, la valeur d’un indice doit toujours :
être égale au moins à 0 (dans quelques rares langages, le premier élément d’un tableau porte l’indice 1). Mais
comme je l'ai déjà écrit plus haut, nous avons choisi ici de commencer la numérotation des indices à zéro, comme
c’est le cas en langage C et en Visual Basic. Donc attention, Truc(6) est le septième élément du tableau Truc !
être un nombre entier Quel que soit le langage, l’élément Truc(3,1416) n’existe jamais.
être inférieure ou égale au nombre d’éléments du tableau (moins 1, si l’on commence la numérotation à zéro). Si
le tableau Bidule a été déclaré comme ayant 25 éléments, la présence dans une ligne, sous une forme ou sous une
autre, de Bidule(32) déclenchera automatiquement une erreur.
Chapitre 4 : Tableaux et procédure de programmation
Aussi, pour parer à ce genre de situation, a-t-on la possibilité de déclarer le tableau sans
préciser au départ son nombre d’éléments. Ce n’est que dans un second temps, au cours du
programme, que l’on va fixer ce nombre via une instruction de redimensionnement : Redim.
Chapitre 4 : Tableaux et procédure de programmation
Exemple : on veut faire saisir des notes pour un calcul de moyenne, mais on ne sait pas combien il y
aura de notes à saisir.
Tableau Notes() en Numérique
Variable nb en Numérique
Début
Ecrire "Combien y a-t-il de notes à saisir ?"
Lire nb
Redim Notes(nb-1)
Fin
Chapitre 4 : Tableaux et procédure de programmation
3 122 11 45 24 67 89 28 86 46
On recommence à chercher le plus petit élément, mais cette fois, seulement à partir du deuxième
(puisque le premier est maintenant correct, on n’y touche plus). On le trouve en troisième position
(c’est le nombre 11). On échange donc le deuxième avec le troisième :
3 11 112 45 24 67 89 28 86 46
Chapitre 4 : Tableaux et procédure de programmation
En Algorithmique, chaque solution partielle donne lieu à un sous-algorithme qui fera partie d’un algorithme
complet pour pouvoir être exécuté.
1- Définitions
Un sous-algorithme est un bloc faisant partie d’un algorithme. Il est déclaré dans la partie entête (avant le début
de l’algorithme) puis appelé dans le corps de l’algorithme.
Étant donné qu’il s’agit d’un bloc à part entière, il possède éventuellement un en-tête, une série de traitements,
et une gestion des résultats tout comme l’algorithme qui le contient.
Notes :
a- Un sous-algorithme utilise les variables déclarées dans l’algorithme (appelées variables globales). Il peut
aussi avoir ses propres variables (dites locales) déclarées dans l’espace qui lui est réservé ; mais qui ne peuvent
être utilisées que dans ce sous-algorithme et nulle part ailleurs car sa portée (visibilité) est limitée au bloc qui la
contient. L’espace de ces variables locales n’est réservé que lorsque le sous-algorithme est appelé et est libéré
dès la fin de l’exécution.
b- Un sous-algorithme est déclaré de manière générale c.-à-d qu’il peut être appelé plusieurs fois avec
différentes valeurs grâce à des arguments. Ces derniers, bien qu’ils soient facultatifs, sont dits paramètres et
sont clairement déclarés, au besoin, dans l’entête du sous-algorithme.
Un paramètre est une valeur du bloc principal dont le sous-algorithme a besoin pour exécuter avec des données
réelles l’enchaînement d’actions qu’il est chargé d’effectuer. On distingue deux types de paramètres :
- Les paramètres formels sont la définition du nombre et du type de valeurs que devra recevoir le sous-
algorithme pour se mettre en route avec succès. On déclare les paramètres formels pendant la
déclaration du sous-algorithme.
1
Initiation à l’algorithmique – Chapitre 4-
- Les paramètres effectifs sont des valeurs réelles (constantes ou variables) reçues par le sous-algorithme
au cours de l’exécution du bloc principal. On les définit indépendamment à chaque appel du sous-
algorithme dans l’algorithme principal.
c- L’exécution d’un sous-algorithme (procédure ou fonction) se fait par une instruction d’appel (voir sections
suivantes). L’application de cette instruction génère un saut vers le sous-algorithme appelé. La terminaison de
ce sous-algorithme redémarre la suite d’instruction interrompue par l’appel.
2- Types de sous-algorithme
2-1 Procédure
Une procédure est un bloc d’instructions nommé et déclaré dans l’entête de l’algorithme et appelé dans son
corps à chaque fois que le programmeur en a besoin.
L’appel d’une procédure peut être effectué en spécifiant, au moment souhaité, son nom et éventuellement ses
paramètres ; cela déclenche l’exécution des instructions de la procédure.
Exemple : Voici un algorithme utilisant une procédure qui calcule une somme de 100 nombres.
2
Initiation à l’algorithmique – Chapitre 4-
Algorithme essai;
Variable
I, S : entier;
Procedure Somme ;
S 0 ;
SS+i
FinPour ;
Somme
2-2 Fonction
Une fonction est un bloc d’instructions qui retourne obligatoirement une et une seule valeur résultat à
l’algorithme appelant. Une fonction n’affiche jamais la réponse à l’écran car elle la renvoie simplement à
l’algorithme appelant.
Etant donné qu’une fonction a pour but principal de renvoyer une valeur, il est donc nécessaire de préciser le
type de la fonction qui est en réalité le type de cette valeur.
3
Initiation à l’algorithmique – Chapitre 4
Un appel de fonction est une expression d’affectation de manière à ce que le résultat soit récupéré dans une
variable globale : Nom_variable-globale Nom_Fonction (paramètres) ;
Exemple : L’algorithme précédent, qui calcule une somme de N nombres, peut utiliser une fonction au lieu
d’une procédure.
Algorithme essai;
Variable
I, Som : entier;
Variable
S : entier ;
S 0 ;
SS+I
FinPour ;
Somme S
Som Somme ;
Note : De même qu’une procédure, une fonction peut appeler d’autres sous-algorithmes à condition qu’ils
soient définis avant elle ou qu’ils soient déclarés dans son entête.
Un sous-algorithme avec paramètres est très utile parce qu’il permet de répéter une série d’opérations
complexes pour des valeurs qu’on ne connaît pas à l’avance. Il existe deux types de passage de paramètres : par
valeur et par variable (dite aussi par référence ou encore par adresse).
4
Initiation à l’algorithmique – Chapitre 4
Exemple :
Soit l’algorithme suivant.
Algorithme pas-val ;
Déclaration
M : entier ;
Debut
nombre - nombre
FinSi ;
Ecrire (nombre)
Fin ;
Debut
Lire (M) ;
P1 (M) ;
Ecrire (M)
Fin.
5
Initiation à l’algorithmique – Chapitre 4
Après l’appel de procédure : la variable-paramètre "nombre" est déclarée et reçoit en copie la valeur de M.
M Nombre Ecran
-6 -6
-6 6
-6 6 6
Au retour à l’algorithme (au niveau de l’appel) il ne reste que la variable globale avec sa valeur initiale
M Ecran
-6
-6 -6
3-2 Passage paramètres par variable
Ici, il s’agit non plus d’utiliser simplement la valeur de la variable, mais également son emplacement dans la
mémoire (d’où l’expression « par adresse »). En fait, le paramètre formel se substitue au paramètre effectif
durant le temps d’exécution du sous-programme et à la sortie il lui transmet sa nouvelle valeur.
Un tel passage de paramètre se fait par l’utilisation du mot-clé Var.
Syntaxe :
Procedure nom_procédure (Var param1 :type1, param2, param3 :type2) ;
Fonction <nom_fonction> (Var param1 : type1, param2 :type2) : Type_fonction ;
Note : Les paramètres passés par valeur et par adresse peuvent cohabiter à l’intérieur d’un même sous-
algorithme. Il suffit de partager les deux types de passage par un (;).
Syntaxe :
Procedure nom_procédure (Var param1 :type1 ; param2, param3 :type2) ;
Dans ce cas param1 est passé par référence alors que les deux autres ont par valeur
Exemple :
Soit l’algorithme précédent modifié dans le type de passage de paramètre
Initiation à l’algorithmique – Chapitre 4
Algorithme pas-val ;
Déclaration
M : entier ;
Procedure P1 (Var nombre : entier) ;
Debut
Si nombre < 0 Alors
nombre - nombre
FinSi ;
Ecrire (nombre)
Fin ;
Debut
Lire (M) ;
P1 (M) ;
Ecrire (M)
Fin.
Exemple 1 :
Un algorithme qui calcule et affiche la valeur absolue d’une valeur en utilisant une fonction
7
Initiation à l’algorithmique – Chapitre 4
Algorithme exemple1 ;
Declaration
a, b : Entier ;
Fonction abs (unEntier : Entier) : Entier ;
Declaration
valeurAbsolue : Entier ;
Debut
si unEntier ≥ 0 alors
valeurAbsolue unEntier
sinon
valeurAbsolue - unEntier
finsi ;
abs valeurAbsolue
fin ;
Debut
Ecrire ('Entrez un entier : ') ;
Lire (a) ;
b abs (a) ;
Ecrire ('la valeur absolue de ', a, ' est ', b)
Fin.
Lors de l’exécution de la fonction abs, la variable a et le paramètre unEntier sont associés par un passage de
paramètre en entrée : La valeur de a est copiée dans unEntier.
Exemple 2 :
Il est demandé d’écrire un algorithme qui demande à l’utilisateur d’entrer une valeur entière positive appelée
(Valeur) puis
c. et qui saisit des valeurs au nombre de Valeur puis affiche la plus grande valeur saisie.