Algorithme Et Programmation 2-1
Algorithme Et Programmation 2-1
Programmation
Cours Magistral
Licence Informatique & MIO
2
Algorithme et programmation 2 Ed.N.SARR
Objectifs
• Connaitre les notions de base de l’algorithme
– Identificateurs
– Variables, Constantes et Types
– Operateurs
– Entrées / sorties
– Instructions conditionnelles et itératives
• Maitriser les notions avancés de l’algorithme
– Programmation modulaire
– Les structures de de données
– Programmation récursif
• Savoir implémenter et compiler les programmes en le langage C
– Compilation
– Implémentation
3
– Exécution
Algorithme et programmation 2
Sommaire
• Chapitre 1 : Notions de bases de l’algorithme
– Variables, Constantes,Types et les Operateurs
– Instructions conditionnelles et itératives
– Lire et Afficher
• Chapitre 2 : Initiation au Langage C
– TD 1 & TP 1
• Chapitre 3 : Les Tableaux et algorithmes de Tri
– TD 2 & TP 2
• Chapitre 4 : Programmation modulaire et récursivité
– Les procédures
– Les Fonctions
– Appels de fonctions
– TD 3 & TP 3
4
Chapitre 1
Les fondamentaux de
l’algorithme
2H
Chapitre 1: Les fondamentaux de l’algorithme
7
Chapitre 1: Les fondamentaux de l’algorithme
8
Chapitre 1: Les fondamentaux de l’algorithme
9
Chapitre 1: Les fondamentaux de l’algorithme
14
Chapitre 1: Les fondamentaux de l’algorithme
Les opérateurs
• les opérateurs arithmétiques
+ (addition) * (multiplication)
% (Modulo) - (soustraction)
/ (division) ^ (exponentiation)
• Les opérateurs logiques
ET OU NON
• Les operateurs de comparaison
= (égal) < (inférieur) <= (inférieur ou égal)
<> (différent) > (supérieur) >= (supérieur ou égal)
• L’opérateur concaténation
+ (réalisant la concaténation de deux chaînes de caractères)
• Operateurs d’incrémentation et de décrémentation
++ -- += -= *= /=
• Affectation (ß) : permet d'affecter, à une variable, une nouvelle valeur.
15
Chapitre 1: Les fondamentaux de l’algorithme
16
Chapitre 1: Les fondamentaux de l’algorithme
17
Chapitre 1: Les fondamentaux de l’algorithme
Entrées / Sorties
• Au cours de l'exécution d'un programme, il est indispensable que
l’utilisateur puisse communiquer avec l'ordinateur:
– Demander des données (Lecture)
– Rendre des données (Affichage)
• Possible grâce à l'emploi des instructions Afficher et Lire.
• NB:
– Chaines de caractères et dates sont mises entre cotes ' ’ lors
de l’affichage
• Exemples
• afficher ('le plus grand est=' , max)
• afficher ('la racine carrée de ' , x , ' est ' , r)
• Afficher (x+y)
• lire (x)
• Saisir (x , y) lecture de deux valeurs saisies par l’utilisateur
18
Chapitre 1: Les fondamentaux de l’algorithme
19
Chapitre 1: Les fondamentaux de l’algorithme
Instructions conditionnelles: SI
• Structure de contrôle permettant de gérer des cas et de rendre
conditionnelle l'exécution de séquences d'instructions.
• Si la condition est vraie le programme exécute la séquence1
d'instructions puis il se poursuit après l'instruction finsi
• sinon (condition fausse) il exécute la séquence2 d'instructions.
Remarque: Dans
certain cas le SINON
n'existe pas; la syntaxe
et le schéma sont alors
réduits à la forme
suivante à
20
Chapitre 1: Les fondamentaux de l’algorithme
Instructions conditionnelles: SI
21
Chapitre 1: Les fondamentaux de l’algorithme
Instructions conditionnelles: SI
22
Chapitre 1: Les fondamentaux de l’algorithme
SELON abréviation
"M" : afficher( " Monsieur " )
"Mme" :afficher( " Madame " )
"Mlle" : afficher( " Mademoiselle " )
autres :afficher( " Monsieur, Madame " )
FIN SELON 23
Chapitre 1: Les fondamentaux de l’algorithme
26
Chapitre 1: Les fondamentaux de l’algorithme
27
Chapitre 1: Les fondamentaux de l’algorithme
28
Chapitre 2
Les bases du langage C
Définitions
Langage C
Les identificateurs
Les mots clés
Les types
Variables et les constante
Commentaires
Operateurs
Les entrées / Sorties
Instructions conditionnelles
Les boucles
Les fonctions en C
Chapitre 2: les bases du langage C
Définitions
• Programmation = Développement = Codage
• Instruction
– Ordre donné à l’ordinateur pour effectué une tache
– Se termine toujours par un point virgule ( ; )
– Exemple: Int x=5;
• Programme
– Ensemble cohérant d’instructions pour résoudre un problème.
– Chacune de ces instructions permet de faire une tache et la somme
permet de résoudre le problème.
– Exemple: Programme Somme de deux valeurs
– Méthode : Fonction ou procédure
• Applications
– Un ou plusieurs programme
– Permet d’effectuer un travail (resoudre un ensemble de problemes)
30
– Exemple: Application calculatrice
Chapitre 2: les bases du langage C
Le langage C
• Langage de programmation utilisé pour
éditer et exécuter des programmes
• Conçu en 1972 par Dennis Richie et Ken
Thompson
• Langage de Bas Niveau
• A inspiré beaucoup d'autres langages tels
que le JAVA ou C++
• Langage Procédurale c’est-à-dire non
orienté Objet
• Langage compilé (par opposition aux
langages interprétés tels que le JAVA)
• Les fichiers source sont suffixés par .c
31
Chapitre 2: les bases du langage C
32
Chapitre 2: les bases du langage C
34
Chapitre 2: les bases du langage C
Les identificateurs
• Une suite de caractères parmi : les lettres (minuscules ou majuscules,
mais non accentuées),
• Le rôle d'un identificateur est de donner un nom à une entité du
programme :un nom de variable, constantes ou de fonction
• Règles:
– suite de caractères alphanumériques ou caractère espérés par un _
donc pas d’espace
– premier caractère doit être alphabétique ou caractère surligné _
– Longueur des identificateurs dépendante du compilateur
• Mots réservés
– Un certain nombre de mots, appelés mots-clefs, sont réservés pour le
langage lui-même donc non utilisables
35
Chapitre 2: les bases du langage C
36
Chapitre 2: les bases du langage C
Les commentaires
• Un texte en langage humaine dans un code source
• Permet de donner son opinion ou d’expliciter une partie du
programme
• Débute par /* et se termine par */.
• Par exemple:
main( ) {
printf("bonjour MIO 2"); /* ce programme affiche bonjour*/
}
37
Chapitre 2: les bases du langage C
Les Variables
• Syntaxe de base :
type nomVariable ;
– Exemple:
int i; /* i est une variable de type entier */
float j,k; /* j et k sont des variables de type réel */
char c; /* c est une variable de type caractère */
• Une valeur initiale peut être affectée à une variable dès la déclaration
int i, j=3, k; /* seul j est initialisé à 3*/
float f=1.2344 ; /* f est initialisé à 1,2344*/
• On peut déclarer plusieurs variables d'un même type:
– Exemple:
int a, b, c;
• On peut initialiser une variable lors de sa déclaration:
– Exemple:
float pi = 3.14; 38
Chapitre 2: les bases du langage C
Les Constantes
• Une constante est une donnée dont la valeur ne varie pas lors de
l'exécution du programme.
• Syntaxe :
const Type Identificateur = Valeur ;
• Ou bien en utilisant la directive define avant d’entrer dans le main:
#define Identificateur Valeur
39
Chapitre 2: les bases du langage C
Caractères spéciaux
• Des caractères spéciaux sont représentés à l'aide du méta-caractère \.
40
Chapitre 2: les bases du langage C
41
Chapitre 2: les bases du langage C
42
Chapitre 2: les bases du langage C
43
Chapitre 2: les bases du langage C
Operateurs
• Operateurs arithmétiques
+ addition x=y+z;
- soustraction x=z-y;
* multiplication t=vs* s;
/ division v=a/u;
% reste de la division entière z=e%b;
• Operateurs de pas
+= -= *= /=
• Exemples
i = i + 20; i += 20;
i = i - 20; i -= 20;
i = i * 20; i *= 20;
i = i / 20; i /= 20;
44
Chapitre 2: les bases du langage C
Operateurs
• Operateurs logiques
• Les opérateurs logiques sont, par ordre décroissant de priorité :
! Non logique
> >= < <= Test de supériorité et d'infériorité
== et != Test d'égalité et d'inégalité
&& et || ET et OU logique
45
Chapitre 2: les bases du langage C
Operateurs
• Post (i++) et pré-incrémentation (++i)
– Ils permettent d'incrémenter ou de décrémenter une variable.
– Dans une opération d'affectation qui met en jeu l'opérateur de :
• pré-incrémentation (pré-décrémentation), la variable est d'abord
incrémentée (décrémentée) de 1. L'affectation est ensuite effectuée.
• post-incrémentation (post-décrémentation), L'affectation (sans les ++ (--
)) est effectuée avant l'incrémentation (décrémentation).
46
Chapitre 2: les bases du langage C
Instructions conditionnelles: IF
• L'instruction if sélectionne le traitement (bloc d'instructions) à faire si une
condition est vérifiée.
• Syntaxe :
Instructions conditionnelles: IF
• If ELSEIF ELSE
– En combinant plusieurs structures if - else en une expression
nous obtenons une structure qui est très courante pour
prendre des décisions entre plusieurs alternatives:
48
Chapitre 2: les bases du langage C
Instructions conditionnelles: IF
• If imbriqués
– Il est possible d'imbriquer plusieurs structures if-else, cela
permet de prendre des décisions entre plusieurs alternatives.
– Mais, afin de gagner en lisibilité, on conseille d'adopter une
écriture tabulée.
49
Chapitre 2: les bases du langage C
Instructions conditionnelles: IF
• Exemple avec les IF
50
Chapitre 2: les bases du langage C
51
Chapitre 2: les bases du langage C
• Exemple
• Explications :
– i = 0 initialise la variable i à 0. Il suppose l’existence préalable de la
variable i (donc sa déclaration en amont).
– i < 10 constitue la condition pour entrer dans la boucle (c’est la
condition qui autorise l’exécution du bloc d’instructions de la boucle).
– i = i + 1 correspond à l’incrémentation (on remplace parfois en i++ à
la fin de chaque boucle).
Chapitre 2: les bases du langage C
53
Chapitre 2: les bases du langage C
• Ici, instruction sera exécutée tant que expression est non nulle.
Cela signifie donc que instruction est toujours exécutée au moins
une fois.
54
Chapitre 2: les bases du langage C
55
Chapitre 2: les bases du langage C
Les bibliothèques
• La pratique du C exige l'utilisation de bibliothèques de fonctions.
• Sont disponibles sous forme précompilées (.lib).
• Afin de pouvoir les utiliser, il faut inclure des fichiers en-tête (.h)
dans nos programmes.
• Pour inclure les fichiers en-tête: #include
• Exemple
#include <stdio.h>
56
Chapitre 2: les bases du langage C
58
Chapitre 2: les bases du langage C
60
Chapitre 3
Les tableaux et les
algorithmes de Tri
Chapitre 3: les tableaux et les algorithmes de Tri
Introduction
• Les variables, telles que nous les avons vues, ne permettent de
stocker qu'une seule donnée à la fois.
• Or, pour de nombreuses données, comme cela est souvent le cas,
des variables distinctes seraient beaucoup trop lourdes à gérer.
• Exemple:
– Les notes de la MIO 2
– La liste des étudiants de UASZ
– La liste des employés de la SGBS
• C’est pourquoi:
– Les langages de programmation tels que le langage C propose des
structures de données permettant de stocker l'ensemble de ces
données dans une unique « variable commune » : UN TABLEAU
• Un tableau est une suite de cases (espace mémoire) de
même taille destinée à stocker et manipuler un ensemble de
valeurs de même type
Chapitre 3: les tableaux et les algorithmes de Tri
Introduction
• Deux formes de tableaux usuels
– Tableaux à une dimension
64
Chapitre 3: les tableaux et les algorithmes de Tri
Syntaxes:
for (i=0; i<=M; i++) { … }
for (i=0; i<N; i++) { … }
67
Chapitre 3: les tableaux et les algorithmes de Tri
68
Chapitre 3: les tableaux et les algorithmes de Tri
– Exemples
• int tab[20][35];
– On déclare un tableau de 20 lignes et 35 colonnes
51 23
• Tab[0][0] =51; 11 32
• Tab[1][1] =32;
83 51
• Tab[0][0] = Tab[2][1] ;
Fatou BA
Amie FAYE
Jean SARR
72
Chapitre 3: les tableaux et les algorithmes de Tri
73
Chapitre 3: les tableaux et les algorithmes de Tri
74
Chapitre 3: les tableaux et les algorithmes de Tri
int main(void) {
int Tab[3][2] = {{ 51, 23 }, { 11, 32 }, { 83, 14 } }; 51 23
int i=0, j=0;
11 32
for (i = 0; i < 3; ++i) {
for (j = 0; j < 2; ++j) { 83 14
printf("tab[%d][%d] = %d\n", i, j, tab[i][j]);
}
}
return 0;
} 75
Chapitre 3: les tableaux et les algorithmes de Tri
Introduction
• Trier = ordonner suivant un ou plusieurs critères
76
Chapitre 3: les tableaux et les algorithmes de Tri
77
Chapitre 3: les tableaux et les algorithmes de Tri
78
Chapitre 3: les tableaux et les algorithmes de Tri
79
Chapitre 3: les tableaux et les algorithmes de Tri
Tri à bulle
• Dans chaque boucle, les paires successives des éléments sont
comparées et permutées si nécessaire.
• Si la paire a la même valeur ou est en ordre croissant, on la garde
elle-même.
• S’il y a N éléments à trier, le tri à bulles fait N-1 pour traverser le
tableau.
80
Chapitre 3: les tableaux et les algorithmes de Tri
81
TD 2 & TP 2:
Les tableaux et algorithmes de tri
82
Chapitre 4
Programmation modulaire
et récursivité
Chapitre 4: programmation modulaire et récursivité
87
Chapitre 4: programmation modulaire et récursivité
88
Chapitre 4: programmation modulaire et récursivité
• Exemple
• NB
– En C, une fonction ne peut retourner qu’une valeur au plus
grâce à la commande return
– Le type de la fonction doit être le même que celui de la valeur
retournée
89
Chapitre 4: programmation modulaire et récursivité
90
Chapitre 4: programmation modulaire et récursivité
91
Chapitre 4: programmation modulaire et récursivité
92
Chapitre 4: programmation modulaire et récursivité
95
Chapitre 4: programmation modulaire et récursivité
La récursivité
• La récursivité
– Une notion est dite récursive lorsqu’elle se contient elle-même
en partie ou si elle est partiellement définie à partir d’elle-
même.
– Typiquement, il s’agit d’une suite dont le terme général
s’exprime à partir de termes qui le précèdent.
96
Chapitre 4: programmation modulaire et récursivité
98
TD 3 & TP 3:
Programmation modulaire &
recursivité
99
Références
101
Algorithme &
Programmation
Cours Magistral
Licence Informatique & MIO