Académique Documents
Professionnel Documents
Culture Documents
Algorithmique Et Programmation: Département D'informatique Pr. L. El Bermi
Algorithmique Et Programmation: Département D'informatique Pr. L. El Bermi
Département d’informatique
Pr. L. EL BERMI
Contenu du Module
• Chapitre 1: Généralités
• Introduction
• Codage
Introduction
• L’informatique est la science de traitement automatique de
l’information par des ordinateurs.
• Informatique = information + automatique (mot inventé en 1962 par
Philippe Dreyfus)
• Information: ensemble de données ou de connaissances humaines
et des communications dans le domaine technique, scientifique,
économique et social.
• Traitement automatique: toutes les opérations que l’on peut effectuer
sur les informations: saisie, modification, stockage, transmission,…
• Le traitement de l'information consiste en une suite d'opérations
transformant une représentation de cette information en une autre
représentation plus facile à manipuler ou à interpréter.
Définitions
• Un ordinateur est un ensemble de circuits électroniques
qui traite l'information grâce à un programme qu'il
mémorise, communique et archive des informations.
• Le traitement de l'information se fait automatiquement
et vise à résoudre un problème bien défini.
Bus
Unités ...
d’entrée-
Imprimante Écran
sortie
Disque
La mémoire contient des instructions et des données
• Tous ces constituants sont reliés entre eux par
l’intermédiaire d’un bus, qui est l’artère centrale
et leur permet de s’échanger des données.
• Pratiquement tous les ordinateurs actuels ont
cette architecture, qui ce soit les micros
ordinateurs personnels ou les gros ordinateurs
des entreprises.
• Les différences résident essentiellement dans
les performances des constituants.
• L’ensemble des communications à l’intérieur
s’effectue par le langage binaire.
Codage
Comprendre comment un ordinateur :
représente une information (nombre,
caractère, image, son, etc.).
Convertis des entiers ou des virgule flottante
en représentation binaire et vice versa.
En général on peut distinguer deux types
d’information: instructions et les données.
Les données
Les données: sont les opérandes sur lesquels
portent les opérations, ou produits par celles-
ci. Une addition, par exemple, peut s’appliquer
à deux opérandes, donnant un résultat qui est
la somme des deux opérandes. On distingue
les données numériques, pouvant être l’objet
d’une opération arithmétique, des données
non numériques, par exemple, les symboles
constituant un texte.
Instructions
• Les instructions représentent les opérations (addition, par
exemple) effectuées par un ordinateur. Elles sont composées
de plusieurs champs:
- Le code de l’opération à effectuer;
- Les opérandes impliqués dans l’opération.
• Le traitement de l’information est une suite d’opérations
transformant une représentation de cette information en une
autre représentation plus facile à manipuler ou à interpréter.
Exemples: 245+5x2-5=250; Gestion des comptes clients dans
une banque; Recensement de la population; Inscription,
notes des étudiants, …
• Le codage d’une information consiste à établir une
correspondance entre la représentation externe
(habituelle) de l’information (le nombre 65 ou le
caractère «A» par exemple) et sa représentation
interne dans la machine (une suite de bits).
• L’unité de base de la théorie de l’information est
le bit, bit = binary digit, qui signifie en anglais
nombre binaire.
• Un bit, par définition, est un composant
quelconque ne pouvant se trouver que dans deux
états possibles, exclusifs l’un de l’autre. Il prend la
valeur 0 ou 1.
Nombre de bits
Convertir de la base 10 vers une base
quelconque
• Cas de nombre entiers : On divise le nombre
par base b, puis le quotient obtenu par la base
b, et ainsi de suite jusqu’a obtenir un quotient
nul. La suite des restes obtenus correspond
aux chiffres dans la base b visée,
anan1...a1a0
Exemple 1
Sens inverse: binaire en décimal
Comme, on a définit précédemment ( en base
b), convertir un nombre binaire en base décimal
c’est le calcul de la décomposition de ce
nombre. Exemple:
1012 1 2 2 0 21 1 2 0 5
10 2 1 21 0 2 0 2
1111 2 1 2 3 1 2 2 1 21 1 2 0 15
Chapitre 2: L’élément de base
d’un algorithme
• Introduction
• Définitions
• Principe
Problème
• Je veux informatiser ce problème et le rendre exploitable à
travers ma machine. Qu’est ce que je dois faire ?
2*x + 3 = 0 10*x - 1= 0
0*x + 0 = 0 0*x + 3 = 0
?? a*x + b = 0 ??
Principe d’algorithmique
Énoncé non précis : Problème informel
Spécification
Énoncé précis : Problème formel
Analyse
Algorithme
Programmation
Langage de programmation : Pascal,..
Compilation
Exécutable du programme
Exécution
Résultat
Algorithmique
Exemple :
Définition :
Début
Manipulation Instructions
FIN
Etapes de résolution
• Variables
Donnée ou objet
Définition :
Un objet est toute partie identifiable de l’information au
cours d’un traitement.
Il est caractérisé par son nom, son type et sa valeur.
L’ensemble des objets manipulés par un algorithme est
appelé:
environnement de cet algorithme.
Remarque :
Les objets manipulés par un ordinateur sont :
Les Constantes et Les Variables
Les constantes
Définition :
Syntaxe de la déclaration :
Exemple :
Constante Pi = 3.14
Les variables
Définition :
Ce sont des références (adresses mémoires) où vont être
stockées des valeurs variables. Les différentes valeurs d’une
référence vont appartenir au type de données auquel
appartient la référence.
Remarques :
1°- Le nom d’une variable suite de caractères qui permet d’identifier
Syntaxe de la déclaration :
Exemple :
a et b sont, par exemple,
Variable a,b : Entier les coefficients de
l’équation : ax + b = 0
Types de variables: Réel
Définition :
Exemple :
Exemple :
Exemple :
Variable Décision : Booléen
Autres types de déclarations
Objets : Type Tableau
Un tableau permet de représenter un ensemble de valeurs ayant des propriétés
communes et appartenant toutes au même type. Ces variables sont identifiées par un
Titre du Problème
Déclaration des Constantes
Déclaration Déclaration des Variables
des Objets Déclaration des Tableaux
Déclaration des Procédures et Fonctions
Début
Manipulation Instructions
FIN
Manipulation: Corps d’algorithme
Dans la partie manipulation, on doit commencer par le
mot DEBUT et se termine par le mot FIN :
DEBUT
Instruction 1
Instruction 2
……. Action
…….
Instruction n
FIN
Les instructions
La partie manipulation utilise les différents objets déclarés
dans la partie déclaration et leur applique des opérations afin de
retourner le(s) résultat(s) attendu(s) par le programmeur. Pour
ce fait, il y a différentes actions, dites instructions, à savoir :
Lire(Variable)
Exemple :
Écrire (‘ Saisissez la valeur de a ’)
Lire(a)
Instruction d’affectation
Définition:
C’est le stockage d’une valeur à un endroit
spécifique(variable). Pour affecter une valeur à une variable,
on écrit :
Variable Valeur
Exemple :
Variable valeur 1 + valeur 2
Variable valeur 1 * valeur 2
Variable valeur + Variable1
Les variables sont des références (adresses mémoires) où vont
être stockées des valeurs qui peuvent changer au cours de
l’exécution du programme. Les mémoires sont repérées par
des numéros (pour l’ordinateur) ou des noms (pour le
programmeur, qui a intérêt à choisir des noms significatifs).
Chaque fois qu’on procède à une nouvelle affectation, l’ancien
contenu de la mémoire est perdu et un nouveau contenu est
placé dans la mémoire.
Les constantes correspondent à des zones mémoires dont le
contenu ne peut pas varier. ’A’
octet n° 52
01000001
Exemple
Quels résultats produit l’algorithme suivant ? Les types de
variables sont-ils corrects
Titre : Calcul
Déclaration
Variable A: Entier
C,B : Réel
D : caractère
E : Booléen
Début
A ← 30
B ← A * 2
Écrire('B=' , B)
Manipulation
C ← (B + A)/4
B ← C / 5
D ← ‘Amine’
E ←(A > 40) Ou (C < B)
Écrire('les valeurs obtenues sont : A = ' , A ,
'B = ' ,B , ' C = ', C , ' D = ', D, ' E = ', E)
Fin
Etat de la mémoire
Instruction A B C D E
Après l’instruction
A ← 30
30 — — — —
Après l’instruction
B←A*2
30 60 — — —
Après l’instruction
C ← (B + A)/4
30 60 22.5 — —
Après l’instruction
B← C/5
30 4.5 22.5 — —
Après l’instruction
D ← ‘Amine'
30 4.5 22.5 Amine —
Après l’instruction
E ← (A >40) Ou (C<B)
30 4.5 22.5 Amine Faux
Exercice
Énoncé:
Manipulation :
DEBUT
Écrire ( 'Saisir la valeur du rayon' )
Lire(Rayon)
Surface Rayon * Rayon * Pi
Écrire (' La Surface du cercle est : ', Surface)
FIN
Exercice
Indication :
#include<stdio.h>
Void main () {
}
monProgramme.c
#include <stdio.h>
void main()
{
printf(" Bonjour tout le monde ") ;
59
Filière MIP (S1) : Module I111
Compilation d'un programme C
Quelques environnements de développement
Fin }
61 Filière MIP (S1) : Module I111
De l’algorithmique au C
Traduction de l’entête d’un algorithme
64
Filière MIP (S1) : Module I111
De l’algorithmique au C
Traduction des instructions : affectation
Exemple:
Exemple :
66
Filière MIP (S1) : Module I111
De l’algorithmique au C
Exemple : Traduire en C l'algorithme suivant
Exemple :
Opérateurs de comparaison
== égal à
!= différent de
<, <=, >, >= plus petit que, ...
Exemple:
int A,MAX = 1023;
char C,TAB = '\t';
float X = 1.05e-4;
Remarque:
Exemple:
Exemple:
76
Filière MIP (S1) : Module I111
Les opérateurs particuliers de C
+= ajouter à
-= diminuer de
*= multiplier par
/= diviser par
%= modulo
Exemple
A+=2; A=A+2;
A*=B A=A*B;
A%=B A=A%B;
COMMANDE C EXPLICATION
exp(X) fonction exponentielle
log(X) logarithme naturel
log10(X) logarithme à base 10
pow(X,Y) X exposant Y
sqrt(X) racine carrée de X
fabs(X) valeur absolue de X
sin(X) cos(X) tan(X) sinus, cosinus, tangente de X
asin(X) acos(X) atan(X) arcsin(X), arccos(X), arctan(X)
sinh(X) cosh(X) tanh(X) sinus, cosinus, tangente hyperboliques de X
char A=3; résultat (0.75) est affecté à D qui est aussi du type float. On
int B=4; obtient donc: D=0.75
float C=4;
float D,E; Pour le calcul de E, A est converti en int et divisé par B. Le
char F; résultat de la division (type int, valeur 0) est converti en float.
D = A/C;
E = A/B; On obtient donc: E=0.000
F = A/C; Pour le calcul de F, A est converti en float et divisé par C. Le
résultat (0.75) est retraduit en char. On obtient donc: F=0
(<Type>) <Expression>
Exemple
La valeur de A est explicitement convertie
char A=3;
int B=4; en float. La valeur de B est automatiquement
float C;
C = (float)A/B; convertie en float. Le résultat de la division
(type rationnel, valeur 0.75) est affecté à C.
Résultat: C=0.75
83 Filière MIP (S1) : Module I111
Écriture d'un caractère putchar('a');
Exemples
char A = 225;
char B = '\a';
int C = '\a';
putchar('x'); /* afficher la lettre x */
putchar('?'); /* afficher le symbole ? */
putchar('\n'); /* retour à la ligne */
putchar(65); /* afficher le symbole avec le code 65 (ASCII: 'A') */
putchar(A); /* afficher la lettre avec le code 225 (ASCII: 'ß') */
putchar(B); /* beep sonore */
putchar(C); /* beep sonore */
Remarque:
putchar(B); printf("%c",B) ;
Exemple:
int C;
Scanf("%c",&c);
C = getchar();
Algorithme Calcul
Variable A : Entier
C,B : Réel
D : caractère
E : Booléen
Début
A ← 30
B ←A* 2
Écrire('B=' , B)
C ← (B + A)/4
B←C/5
D ← ‘A’
E ← (A > 40) Ou (C < B)
Écrire('les valeurs obtenues sont : A = ' , A , 'B = ' ,B , ' C =’,C, ' D = ', D, ' E = ', E)
Fin
86
Exemple 2 : Traduire en C l'algorithme suivant
87
Exemple 3 : Traduire en C l'algorithme suivant
Algorithme Commission
Constante M = 4000 * M: montant fixe*
Variable CA : Entier * Donnée d’entrée (CA: chiffre d’affaire) *
Com : Réel * Donnée intermédiaire (Com: commission )*
Sal : Réel * Donnée de sortie(Sal: salaire mensuel )*
DEBUT
Écrire ('Donner le CA mensuel en DHS')
Lire(CA)
Com CA * 10/100
Sal Com + M
Écrire ('Le salaire mensuel est de : ', Sal, ' en DHS ' )
FIN
88
Chapitre 2: L’élément de base
d’un algorithme
• Structure alternative
Structure alternative
Les conditions :
+ Addition
- Soustraction
* Multiplication
/ Division
Opérateur Signification
= Égal
< Inférieur
> Supérieur
<= Inférieur ou égal
>= Supérieur ou égal
<> différent
Opérations logique
On peut combiner des conditions à l’aide des opérateurs
logiques :
Opérateur Signification
Et Et logique
Ou Ou logique
Ou = Xor Ou exclusif
Exemple
Expression Résultat
(4 <7) ET (9>0) Vrai
(1 < 0) OU (1<>1) Faux
Non(13.4 < 15) Faux
Priorité des opérations
Priorité de *, / div et % par rapport à + et -
5 + 9 * 3 = 32 et non 42
5*9+3 = 48 et non 60
Pour les opérateurs de même priorité, associativité à
partir de la gauche
15 / 5 * 3 = 9 et non 1
5 – 2 + 4 = 7 et non –1
On peut utiliser des parenthèses pour changer l’ordre
des opérations :
15 / (5 * 3) = 1
(5 + 9 ) * 3 = 42
Types de variables et Opérations
Priorité de *, / div et % par rapport à + et -
5 + 9 * 3 = 32 et non 42
5*9+3 = 48 et non 60
Pour les opérateurs de même priorité, associativité à
partir de la gauche
15 / 5 * 3 = 9 et non 1
5 – 2 + 4 = 7 et non –1
On peut utiliser des parenthèses pour changer l’ordre
des opérations :
15 / (5 * 3) = 1
(5 + 9 ) * 3 = 42
Structure Alternative: SI
Pour exprimer le fait que des instructions vont être exécutées
dans un cas alors que d’autres instructions peuvent être
exécutées dans l’autre cas, on utilise une structure alternative.
Syntaxe :
Si condition alors
Actions 1
[ Sinon
Actions 2] Option Facultative
Finsi
Exemple
Titre : Test 1 Titre : Test 2
Variable x : entier Variable x : entier
Début Début
Écrire ('Saisir un entier x ') Écrire ('Saisir un entier x ')
Lire (x) Lire (x)
Si (x > 0) alors Si (x > 0) alors
Écrire('x est un nombre positif ') Écrire (' x est un nombre positif ')
Finsi Sinon
Fin Écrire (' x est un nombre négatif ou nul')
Finsi
Fin
Exercice
Dans l’exercice précédent (Calcul la moyenne générale). Afficher
‘Admis’ si un étudiant a une moyenne générale >=10 et Afficher ‘Ajourné’
dans le cas contraire (Moyenne générale < 10).
Solution Classique :
DEBUT
Écrire (' Bonjour tout le monde ') 1
Écrire (' Bonjour tout le monde ') 2
.
.
Écrire (' Bonjour tout le monde ') 300
FIN
Boucle: Tant que
On utilise cette instruction pour exécuter des actions tant
qu’une condition est réalisée.
Syntaxe :
<initialisation>
Tant que Condition Faire
<bloc de traitement>
<bloc de contrôle> Action
exécuté.
Si valeur(T)=Faux on passe à l'instruction suivante.
boucle.
La boucle n'est pas INCONDITIONNELLE. On
Syntaxe :
<Initialisation>
Faire
<bloc de traitement>
<bloc de progression > Action
Jusqu’à Condition
Sémantique :
Si valeur(T)= Faux la boucle est à nouveau exécutée.
Si Valeur(T)=Vrai, on passe à l'instruction suivante.
Avec Faire jusqu’à le test est fait à POSTERIORI.
• Il y aura un passage dans la boucle. Le bloc d’instructions
sera exécuté au moins une fois.
• La boucle n’est pas INCONDITIONNELLE. On ne
connaît pas à l’avance le nombre d’itérations.
Exemple
Titre : Boucle2
Variable i , y : Entier
Début
i
y0 Valeurs de y ?
faire
i i+1
y y+i
Écrire (' y = ' , y)
Jusqu’à (i >7)
Fin
Exercice
<Bloc de traitement>
Fin Pour
Exercice
Variable N : Entier
Variable a, b, S : Réel
DEBUT
Écrire ('Saisir la valeur du premier terme et les coefs a et b:')
Lire (S , a, b)
N 0
Faire
S a * S + b
N N + 1
Jusqu’à S > 1000
Écrire (' La somme de la série est : ', S)
Écrire (' Le rang est : ', N )
FIN
Exercice
Remarque :
1°- Un tableau peut être d’une ou plusieurs dimensions.
2°- La syntaxe de la déclaration d’un tableau change selon
la dimension de ce dernier
Syntaxe de la déclaration :
Tableau à une dimension :
Remarques :
1°- Les Fonctions et les Procédures sont caractérisées par des
paramètres d’entrée et des paramètres de sortie.
2°-La fonction retourne une seule valeur tandis que La
procédure peut retourner plusieurs valeurs ou aucune.