Académique Documents
Professionnel Documents
Culture Documents
Dr MAMBE
Objectif et plan du cours
Objectif :
• Apprendre les concepts de base de l'algorithmique et de la
programmation
• Être capable de mettre en oeuvre ces concepts pour analyser des
problèmes simples et écrire les programmes correspondants
Exemples:
– préparer une recette de cuisine
– montrer le chemin à un touriste
– programmer un magnétoscope
– etc ...
Algorithme et programme
L’élaboration d’un algorithme précède l’étape de
programmation
• Un programme est un algorithme
• Un langage de programmation est un langage compris par
l'ordinateur
L’élaboration d’un algorithme est une démarche de
résolution de problème exigeante
La rédaction d’un algorithme est un exercice de
réflexion qui se fait sur papier
• L'algorithme est indépendant du langage de programmation
• Par exemple, on utilisera le même algorithme pour une
implantation en Java, ou bien en C++ ou en Visual Basic
• L’algorithme est la résolution brute d’un problème informatique
Algorithmique
Notions et Instructions de
base
instructions de base
Algo exemple
/* La partie déclaration de l’algorithme */
Constantes // les constantes nécessitent une valeur dès leur déclaration
var1←20 : entier
var2←"bonjour!" : chaîne
Variables // les variables proprement dites
var3, var4 : réels
var5 : chaîne
Début // corps de l’algorithme
/* instructions */
Fin
la séquence des instructions
Par exemple, enfiler ses bas puis enfiler ses bottes n’est pas
équivalent à enfiler ses bottes puis enfiler ses bas.
Affectation : exercices
Donnez les valeurs des variables A, B et C après exécution des
instructions suivantes ?
Variables A, B, C: Entier
Début
A←7
B ← 17
A←B
B ← A+5
C←A+B
C←B–A
Fin
Affection : exercices
0. 1.
A B A B
2. 3.
A B A B
Fiche 2.6
Affectation : échanges
Écrire un algorithme permettant d’échanger
les valeurs de deux variables A et B ?
Réponse :
on utilise une variable auxiliaire C et on écrit les
instructions suivantes :
CA; AB; B C;
Expressions et opérateurs
Une expression peut être une valeur, une variable ou une
opération constituée de variables reliées par des opérateurs
exemples: 1, b, a*2, a+ 3*b-c, …
L'évaluation de l'expression fournit une valeur unique qui est le
résultat de l'opération
Les opérateurs dépendent du type de l'opération, ils peuvent être :
• des opérateurs arithmétiques: +, -, *, /, % (modulo),
^(puissance)
• des opérateurs logiques: NON(!), OU(| |), ET (&&)
• des opérateurs relationnels: =, <, >, <=, >=
• des opérateurs sur les chaînes: & (concaténation)
Une expression est évaluée de gauche à droite mais en tenant
compte des priorités des opérateurs.
Expression : remarques
C1 C2 C1 et C2 C1 ou C2 C1 XOR C2
Vrai Vrai Vrai Vrai Faux
Vrai Faux Faux Vrai Vrai
Faux Vrai Faux Vrai Vrai
Faux Faux Faux Faux Faux
C1 Non C1
Vrai Faux
Faux Vrai
Les instructions d’
d’entré
entrées et
sorties : lecture et écriture
Les instructions de lecture et d'écriture permettent à la machine
de communiquer avec l'utilisateur
La lecture permet d'entrer des donnés à partir du clavier
• En pseudo-code, on note: lire (var)
la machine met la valeur entrée au clavier dans la zone
mémoire nommée var
Remarque: Le programme s'arrête lorsqu'il rencontre une
instruction Lire et ne se poursuit qu'après la saisie de l’entrée
attendue par le clavier et de la touche Entrée (cette touche
signale la fin de l’entrée)
Conseil: Avant de lire une variable, il est fortement conseillé
d’écrire des messages à l’écran, afin de prévenir l’utilisateur de
ce qu’il doit frapper
Les instructions d’
d’entré
entrées et
sorties : lecture et écriture
En pseudo-code :
Si condition alors
instruction ou suite d'instructions1
Sinon
instruction ou suite d'instructions2
Finsi
instructions conditionnelles
Vraie
test Suite d’instructions 1
Faux
Suite d’instructions 2
Instructions conditionnelles
Remarques :
• la condition ne peut être que vraie ou fausse
• si la condition est vraie alors seules les instructions1 sont
exécutées
• si la condition est fausse seules les instructions2 sont exécutées
• la condition peut être une expression booléenne simple ou une
suite composée d’expressions booléennes
La partie Sinon est optionnelle, on peut avoir la forme
simplifiée suivante:
Si condition alors
instruction ou suite d'instructions1
Finsi
Si…
Si…Alors…
Alors…Sinon : exemple
Algorithme ValeurAbsolue1
Rôle : affiche la valeur absolue d’un entier
Données : la valeur à calculer
Résultat : la valeur absolue
Variable x : réel
Début
Ecrire (" Entrez un réel : ")
Lire (x)
Si x < 0 alors
Ecrire ("la valeur absolue de ", x, "est:",-x)
Sinon
Ecrire ("la valeur absolue de ", x, "est:",x)
Finsi
Fin
Si…
Si…Alors : exemple
Algorithme ValeurAbsolue2
…
Variable x, y : réel
Début
Ecrire (" Entrez un réel : " )
Lire (x)
y← x
Si x < 0 alors
y ← -x
Finsi
Ecrire ("la valeur absolue de ", x, "est:",y)
Fin
Exercice (tests)
TantQue (condition)
instructions condition Vrai
instructions
FinTantQue
Faux
la condition (dite condition de contrôle de la boucle) est évaluée avant
chaque itération
si la condition est vraie, on exécute les instructions (corps de la boucle),
puis, on retourne tester la condition. Si elle est encore vraie, on répète
l'exécution, …
si la condition est fausse, on sort de la boucle et on exécute l'instruction
qui est après FinTantQue
Il est possible que les instructions à répéter ne soient jamais exécutées.
Les boucles Tant que : remarques
version 1
Variables som, i : entier
Debut
i←0
som← 0
TantQue (som <=100)
i ← i+1
som ← som+i
FinTantQue
Ecrire (" La valeur cherchée est N= ", i)
Fin
Boucle Tant que : exemple3
Un algorithme qui détermine le premier nombre entier N tel
que la somme de 1 à N dépasse strictement 100
forme 2: attention à l'ordre des instructions et aux valeurs initiales
Variables som, i : entier
Debut
som ← 0
i←1
TantQue (som <=100)
som ← som + i
i ← i+1
FinTantQue
Écrire (" La valeur cherchée est N= ", i-1)
Fin
Les boucles Répéter … jusqu’à
jusqu’à …
Répéter
instructions
Jusqu'à condition instructions
Faux
condition
Vrai
i←initiale
Vrai
i n’a pas atteint finale instructions i←i+pas
Faux
Les boucles Pour
Pas est un entier qui peut être positif ou négatif. Pas peut ne
pas être mentionné, car par défaut sa valeur est égal à 1. Dans
ce cas, le nombre d'itérations est égal à finale - initiale+ 1
b) Si compteur est <= à finale dans le cas d'un pas positif (ou si
compteur est >= à finale pour un pas négatif), instructions seront
exécutées
i. Ensuite, la valeur du compteur est incrémentée de la valeur du pas
si pas est positif (ou décrémenté si pas est négatif)
Exemple: Exécution
Pour i allant de 1 à 5 OK
Pour j allant de 1 à i OOK
écrire("O") OOOK
FinPour OOOOK
écrire("K") OOOOOK
FinPour
Choix d'un type de boucle
Si on peut déterminer le nombre d'itérations avant l'exécution
de la boucle, il est plus naturel d'utiliser la boucle Pour
1
Les tableaux
2
1 – Tableaux à un indice
• Un tableau (encore appelé table ou variable indicée) est
un ensemble de données, qui sont toutes de même type,
désigné par un identificateur unique (le nom du
tableau), et qui se distinguent les une des autres par
leur numéro d’indice
• Exemple : les températures sous abri à 15h00 des jours
d’une semaine seront les 7 valeurs de la variable
température, qui est un tableau de 7 éléments
(variables) de type réel désigné par :
– Température[1], Température[2], …, Température[7],
3
1 – Tableaux à un indice
• Représentation graphique :
temperature Nom du tableau
1 25
2 30 Cette case du tableau
3 23 représente la variable
Temperature[3] dont la valeur est
4 36
23
5 33
6 22
7 27
4
1– Tableaux à un indice
• L’utilisation d’un indice variable présente le principal
intérêt des tableaux
• Si la variable k entière a pour valeur 3, alors
– Temperature[k] = 23
– Temperature[k+1] = 36
– Temperature[k-1] = 30
• Mais attention l’écriture de Temperature[-2] ou
Temperature[12] n’ont pas de sens car elles font
référence à des éléments inexistants
5
1 – Tableaux à un indice
• De même le calcul de la température moyenne de la
semaine se fera de façon très simple :
Entiers somme, k
Réel moyenne
somme 0
Pour k 1 à 7 faire
somme somme + Temperature[k]
fpour
moyenne somme / 7
6
2 – Déclaration des tableaux
• Comme tout objet un tableau doit être déclaré
avant tout utilisation
• 3 éléments fondamentaux définissent un tableau
à un indice :
– Son nom : identificateur respectant les règles
classiques des identificateurs d’un programme
– Le nombre de ses éléments
– Le type de données qu’il contient
Tableau [1..7] :Entiers
2
3
n
2001/2002 8
Les sous-programmes
9
1 - Introduction
• Jusqu’ici nous avons étudié les algorithmes selon une
approche simple :
– Un seul algorithme exprime une fonction
– qui à partir de données initiales produit un résultat
• Cas plus général :
– Le calcul d’une fonction est le résultat de plusieurs
algorithmes disjoints
– À chaque algorithme va donc correspondre un programme
– L’exécution restera quand même séquentiel un seul
programme s’exécute et exécute l’une de ses instructions
10
Exemple simple d’appels de sous-programmes
#include <stdio.h>
main(){
float X, Y;
printf("Entrez la valeur : "); appel du sous-programme d’affichage
scanf(‘’%f’’,&X); appel du sous-programme de lecture
Y = cos(X); appel du sous-programme cos
printf(" %f’’ ,Y); appel du sous-programme d’affichage
}
11
2-Fonctionnement
• Un programme particulier (cosinus), le
programme principal, lance successivement un
ensemble de sous-programmes, chacun d’eux
pouvant d’ailleurs lancer ses propres sous-
programmes.
• Cela revient à suspendre l’exécution du
programme en cours, autrement dit le processus du
programme principal et à lancer le processus
associé au sous-programme.
12
2-Fonctionnement
Processus
courant
Suspension du
processus appelant Sous-programme appelé
Nouveau processus courant
Reprise du
processus appelant
Retour vers
l’appelant
13
3-Intérêts
• Diviser pour mieux régner
• Méthode modulaire de conception utilisant
le découpage d’un problème en sous-
problèmes distincts
• Permet de réutiliser des programmes (sous-
programmes) déjà développés et surtout
validés
14
4-Problématique de l’usage des sous-
programmes
• Quel est le rôle du sous-programme qui est
exécuté le premier ?
• Peut-on définir des variables communes à
plusieurs sous-programmes et comment sont-elles
définies et/ou modifiées ?
• Comment peut-on transmettre des informations
spécifiques à un sous-programme lors de son
lancement ?
• Comment un sous-programme peut renvoyer des
informations au programme appelant ?
15
5 – Environnement d’un sous-programme
17
5 – Environnement d’un sous-programme
18
5 – Environnement d’un sous-
programme
• Les paramètres formels
– Les variables identifiées dans le sous-
programme qui servent à l’échange
d’information entre les programmes appelant et
appelé
– Leur portée est également locale.
19
6 – Les procédures
• Il s’agit de sous-programmes nommés qui
représentent une ou plusieurs actions, et qui
peuvent calculer et retourner une ou
plusieurs valeurs.
• Une procédure « P » doit être définie une
seule fois dans un algorithme « A » et peut
être appelée plusieurs fois par « A » ou par
une autre procédure de « A ».
20
6 – Les procédures
21
6 – Les procédures
• La définition d’une procédure comprend trois parties:
• Partie 1 : L’entête
Procédure Nom_procédure (Liste de paramètres
formels);
• Partie 2 : Déclaration des variables locales
type_variable_i Nom_variable_i
• Partie 3 : Corps de la procédure
Début
Instructions
Fin
22
6 – Les procédures
• Exemple :
– Calcul de la somme de deux matrices carrées A
et B.
– Pour calculer la somme de deux matrices il faut
lire d’abord ces deux matrices.
– Ainsi, au lieu d’écrire deux fois le sous-
programme de lecture d’une matrice, il est
possible d’écrire plutôt une procédure et de
l’utiliser pour saisir A et B.
23
7 - Paramètres formels & paramètres
effectifs
• Dans la déclaration de la procédure « Saisir », Les
paramètres « X » et « dim » sont appelés paramètres
formels dans la mesure où ils ne possèdent pas encore
de valeurs.
• Lors de l’utilisation de la procédure dans l’algorithme
principal, « A », « B » et « n » sont des paramètres
effectifs (ou réels).
• Remarque importante: Dans une procédure, le nombre
de paramètres formels est exactement égal au nombre
paramètres effectifs.
• De même à chaque paramètre formel doit correspondre
un paramètre effectif de même type.
24
Mode données
• Rappel
– Déclarer une variable de nom X Réserver un
emplacement mémoire pour X
• Lors de l’appel d’une procédure un emplacement
mémoire est réservé pour chaque paramètre
formel.
• De même, un emplacement mémoire est aussi
réservé pour chaque paramètre effectif lors de sa
déclaration.
• Cependant, lors de l’appel de la procédure, les
valeurs des paramètres effectifs sont copiées dans
les paramètres formels.
26
Mode données
• L’exécution des instructions de la procédure se fait avec
les valeurs des paramètres formels et toute modification
de ces derniers ne peut affecter en aucun cas celles des
paramètres effectifs.
• C’est le cas :
– dans la procédure « lire » du paramètre « dim »
– dans la procédure « écrire » des paramètres « Y » et « dim »
• Dans ce type de passage de paramètres, les valeurs des
paramètres effectifs sont connues avant le début de
l’exécution de la procédure et jouent le rôle uniquement
d’entrées de la procédure.
27
Mode données
• En C, en principe il n’existe que des fonctions.
Une fonction qui ne retourne aucun résultat
(type void) peut traduire la notion de procédure.
Procédure Afficher(Y:Matrice, n:entier)
• Se traduit en C par :
void Afficher(Matrice Y, int n);
Il y a eu initialisation des paramètres formels par
des valeurs lors de l’appel de la procédure
28
– Mode données
Procédure carrés(X,Y :entiers)
Entiers A,B
Début
AX
B Y
A AA
B BB
Fin
29
– Mode données
Procédure carrés_bis(Données X,Y :entiers)
Début
X XX
Y YY
écrire « X= »,X, « Y= »,Y
Fin
30
Mode résultats
• Passage par adresse, par variable
• La différence principale entre le passage par valeur et le
passage par adresse c’est que dans ce dernier un seul
emplacement mémoire est réservé pour le paramètre
formel et le paramètre effectif correspondant.
• Dans ce cas chaque paramètre formel de la procédure
utilise directement l’emplacement mémoire du
paramètre effectif correspondant.
• Toute modification du paramètre formel entraîne la
même modification du paramètre effectif correspondant.
31
Mode résultats
• Dans ce mode de passage de paramètres, les valeurs des
paramètres effectifs sont inconnues au début de
l’exécution de la procédure.
• Un paramètre formel utilisant ce type de passage ne peut
être que le résultat de la procédure. D’où le nom du
mode « Résultat ».
• Pour spécifier dans une procédure qu’il s’agit du mode «
Résultat », il suffit d’ajouter dans l’algorithme la
mention « Résultat » avant le paramètre formel
• Dans le programme Pascal il faut faire précéder le
paramètre du mot clé « Var »
32
Mode résultats
Procédure Somme(D,F:entier)
• Se traduit en C par :
void Somme(int D, int F, int *R);
• Contrairement au passage par valeur, dans ce cas à
l’appel de la procédure les valeurs des paramètres
effectifs ne sont pas copiées dans les paramètres
formels.
• Ces derniers utilisent directement l’emplacement
mémoire (ou l’adresse) des paramètres effectifs.
33
Procédure Remplacer (M:Matrices;dim:
entier); entiers i, j
Début
40
8 – Les fonctions
• Une fonction est un sous-programme qui
calcule, à partir de paramètres éventuels,
une valeur d’un certain type utilisable dans
une expression du programme appelant.
• Les langages de programmation proposent
de nombreuses fonctions prédéfinies : partie
entière d’un nombre, racine carrée,
fonctions trigonométriques, etc.
41
8-Les fonctions
• Les fonctions sont comparables aux
procédures à deux exceptions près :
– Leur appel ne constitue pas à lui seul une
instruction, mais figure dans une expression ;
– Leur exécution produit un résultat qui prend la
place de la fonction lors de l’évaluation de
l’expression.
42
8-Les fonctions
• La définition d’une fonction comprend aussi trois parties:
• Partie 1 : L’entête
Fonction Nom_fonction(Liste de paramètres formels): Type_fonction
• Partie 2 : Déclaration des variables locales
type_variable_i Nom_variable_i
• Partie 3 : Corps de la fonction
Début
Instructions
Retourner valeur retournée
Fin
43
8-Les fonctions
• Il s’agit donc de sous-programmes nommés et
typés qui calculent et retournent une et une
seule valeur.
• Le type de cette valeur est celui de la fonction.
44
Passage des paramètres
• Lors de la définition d’une fonction il ne doit,
normalement, être utilisé qu’un seul mode de
transmission de paramètres :
– Mode donnée (En C on parle de Passage par
valeur)
• Cependant les langages de programmation
permettent d’utiliser les autres modes.
45
Fonction : exemple
• Fonction permettant de calculer ex pour x
donnée avec une précision 10-3 et sachant
que :
2 n
=
x
+ x + x +...+ x
e 1! 2! n!
1
46
Constante utilisée
E=0.001
Variables
Réel x
fonction expo(Donnée x: réel): réel
Entier i
réel f, ex
Début
f 1 ex 1 i 1
Tant que f E faire
ff(x/i)
ex ex + f
ii+1
ftq
Retour ex;
Fin
47
Algorithme principal
Début
Écrire « Donner la valeur de x: »
Lire x
Écrire « L’exponentielle de x= », x, « est : », expo(x)
Fin
48