Algorithmique & Programmation Langage C: M2: Module Informatique
Algorithmique & Programmation Langage C: M2: Module Informatique
M2 : Module Informatique
Y. ELKABDANI
[Link]@[Link]
Plan :
1
07/12/2021
Objectifs du cours
2. Savoir transcrire les différentes étapes de résolution d'un problème sous forme
d'algorithme.
3. Etre capable de mettre en œuvre ces concepts pour analyser des problèmes simples et
écrire les programmes correspondants.
2
07/12/2021
Dans cette conversation, la réponse de l’homme est la description d’une suite ordonnée d’instructions (allez tout
droit, prenez à gauche, prenez à droite) qui manipulent des données (rond-point, boulevard) pour réaliser la
taché désirée (aller à la gare).
Algorithme
Un algorithme est une suite d’instructions écrite en langage d’algorithmes qui résout un problème et qui
peuvent être programmés par n’importe quel langage.
Un algorithme est un ensemble d'opérations de calcul élémentaires, organisé selon des règles précises dans le
but de résoudre un problème donné. Pour chaque donnée du problème, l'algorithme retourne une réponse
après un nombre fini d'opérations
Déterministe :
Une suite d'exécutions à partir des mêmes données doit produire des résultats identiques.
3
07/12/2021
Le langage C est un langage de programmation développé à partir de 1972 dans les laboratoires
Bell, dans le but d’écrire le système d’exploitation par Denis Ritchie. En raison de sa
puissance et de sa souplesse, le langage C s’est rapidement répandue, les programmeurs ont
commencé à l’utiliser pour écrire toutes sortes de programmes
Algorithme Langage C
Retenir
A retenir que chaque partie de l’algorithme et de langage C possède des mots clés spécifiant la nature, ainsi que
l’étape de description.
4
07/12/2021
Retenir
l’avantage de pseudo-langage est permis de d’écrire tout algorithme de façon formelle tout on reste compréhensible
Tout problème à programmer doit être résolu, d’abord sous forme d’algorithme, puis converti en programmation dans le
langage de votre choix en effet un algorithme est indépendant du langage de programmation utilisé. Le cycle de
développement d’un programme ou d’une application informatique peut se résumer dans la figure ci-dessous
Problème
• La première étape consiste à analyser le problème, c’est-à-dire en cerner les
Réflexion et analyse limites et le mettre en forme dans un langage descriptif appelé algorithme.
Algorithme
• L’étape suivante consiste à traduire l’algorithme dans un langage de
Codage et programmation programmation spécifique, il s’agit de la phase de programmation.
Programme
• Le programme est ensuite transforme en langage machine lors d’une étape
Compilation Exécution appelée compilation. La compilation est une phase réalisée par l’ordinateur
Résultats
grâce à un compilateur.
Parmi les langages de programmation on peut citer : langage C++, Visual Basic, java et JavaScript etc
5
07/12/2021
Exemple
On peut avoir en mémoire une variable prix et une variable quantité
Variable Valeur
Les données ainsi que les résultats des calculs intermédiaires, sont rangés
Prix 100
dans des cas mémoires qui correspondant a des variable
Quantité 20
Une variable est caractérisée par son nom (identificateur), sa contenu (valeur) ainsi que son (type)
6
07/12/2021
La partie de déclaration consiste a énumérer toutes les variables dont on aura besoin au cours de programme.
Syntaxe de variable
Algorithme Langage C
Exemples
Algorithme Langage C
Je veux mémoriser un prix d'un produite dans une variable, j'ai le choix de l'appeler :
P 1Prix Prix Prixdeproduite
• Le premier cas est trop court, si je n'ai pas lu la description de programme, je suis totalement perdu.
• Le deuxième cas ne convient pas non plus car on évitera les noms commencent par un nombre dans les noms de variable.
• Le dernier cas est certes très précis, mais tellement long qu'il en devient illisible.
• Le troisième cas semble le plus approprié
Retenir
7
07/12/2021
Les types de variable est l’ensemble des valeurs qu’elle peut prendre une variable, par exemple une variable de type
logique booléen (Vrai et faux). Il existe plusieurs types utilisés en algorithme et programmation
8
07/12/2021
Algorithme Langage C
Constante T = 25; #define T 25 Const int T=25;
Constante Pi = 3.14; #define Pi 3.14 Const float Pi=3.14;
Constante Nom = ESTE; #define Nom ESTE Const char Nom=ESTE;
Retenir
Les constantes dont leur valeurs stockée ne sera jamais modifiée au cours de l’exécution de programme.
9
07/12/2021
Une Instruction d’affectation permet d’affecter une valeur a une variable elle est symbolisée en algorithme par une
flèche (←) et par (=) pour langage C.
Syntaxe de déclaration
Algorithme Langage C
10
07/12/2021
Algorithme Langage C
Algorithme calcul #include <stdio.h>
Variables A, B, C, D : entiers; main(){
Début int A, B, C, D;
1. A ← 10; 1. A = 10;
2. B ← 20; 2. B = 20;
3. C ← A+B; 3. C = A+B;
4. D ← C*A; 4. D = C*A;
Fin }
N° De ligne
Variable
1 2 3 4
A 10 10 10 10
B - 20 20 20
C - - 30 30
D - - - 300
11
07/12/2021
Syntaxe de déclaration
Algorithme Langage C
Il existe un certain nombre de caractères particuliers dont les principaux sont résumés dans le tableau
suivant
sémantique Retour a la ligne tabulation backspace
caractère \n \t \d
Les commentaires sont essentiels pour éclairer le code. Un commentaire est un texte qui est ignoré par l'ordinateur
lorsqu'il exécute le programme, mais qui peut être lu par le développeur lorsqu'il lit le programme
12
07/12/2021
Exercice 1
Écrire un algorithme qui permet de saisir les valeurs de A et B , par la suite calculer la
somme et afficher le résultat.
Exercice 2
Écrire un algorithme qui permet de calculer et afficher la moyenne de deux nombre
entiers.
Exercice 3
Écrire un algorithme qui permet de calculer et afficher a l’utilisateur la surface d’un
cercle
13
07/12/2021
Condition ( If ) en langage C
L'instruction if sélectionne le traitement (bloc d'instructions) à faire si une condition est vérifiée.
Syntaxe Exemple
14
07/12/2021
Permet de choisir dans une alternative, en fonction du résultat, VRAI ou FAUX, d’un test (booléenne).
Si la condition VRAIE, Alors les instructions-1 sont exécutées, et l’ensemble d’instructions-2 est ignoré, la
machine sautera directement à la première instruction située après le FinSi. De même, au cas où la condition était
FAUSSE (avait comme valeur Faux), la machine saute directement à la première ligne située après le Sinon et
exécute l’ensemble d’instructions2.
Syntaxe : Exemple :
Lorsque if est utilisée avec else, elle indique également le traitement à faire si la condition n'est pas vérifiée.
Syntaxe Exemple
#include <stdio.h>
If (condition)
main( ){
{ True
Traitement 1; int a,b;
Traitement 2; printf("Introduire a et b : ");
……….........; scanf ("%d%d",&a,&b);
else if (a==b){
Traitement 3; printf(" a égale à b \n ");
Traitement 4; else
……….........; printf("a différent de b\n");
} }
}
15
07/12/2021
Testes imbriqués :
Le test imbriqué est une généralisation de la structure de contrôle conditionnelle, lorsque le nombre de traitements
différents est plus grand que deux.
Syntaxe :
Si condition-1 alors
Instructions1;
SinonSi condition-2 alors
Instructions2;
SinonSi condition-3 alors
Instructions-3;
Sinon
Instructions;
FinSi
L’instruction qui sera exécutée sont les l’instructions dont la condition est VRAIE. Si aucune condition n’a la valeur
VRAIE, c’est l’instructions qui suit le Sinon qui sera exécutée.
Même exemple précèdent , un programme devant donner l’état de l’eau selon sa température doit pouvoir choisir entre trois
réponses possibles (solide, liquide ou gazeuse).
Algorithme Temp_Eau
Variable Temp : Entier
Début
Ecrire ("Entrez la température de l’eau :");
Lire (Temp);
Si Temp =< 0
Alors Ecrire ("C’est de la glace");
Sinon
Si Temp < 100 Alors
Ecrire("C’est du liquide");
Sinon
Ecrire("C’est de la vapeur");
C’est du vapeur Finsi
Finsi
Fin
16
07/12/2021
Testes imbriqués :
La condition if…else if…else est une structure conditionnelle encore plus complète que la condition if…else puisqu’elle
va nous permettre cette fois-ci de générer et de prendre en charge autant de cas que l’on souhaite.
Syntaxe :
If condition-1
Instructions1;
Else if condition-2
Instructions2;
Else if condition-3
Instructions-3;
Else
Instructions;
Par exemple, un programme devant donner l’état de l’eau selon sa température doit pouvoir choisir entre trois réponses
possibles (solide, liquide ou gazeuse).
#include <stdio.h>
main( ){
Float Temp;
printf ("Entrez la température de l’eau :");
scanf ("%f" ,&Temp);
if (Temp =< 0){
printf (" C’est de la glace \n ");
}
Else if (Temp < 100 ){
printf (" C’est du liquide \n");}
C’est du vapeur
Else
printf (" C’est de la vapeur");
}
17
07/12/2021
La structure conditionnelle à choix multiple est une structure algorithmique utilisée de préférence dans des structures à
plusieurs traitements selon des conditions, il permet de choisir le traitement à effectuer en fonction de la valeur ou de
l'intervalle de valeurs d'une variable ou d'une expression.
Syntaxe :
Algorithme Langage C
Lorsque la machine rencontre cette instruction, il vérifie la valeur de la variable de sélection (Variable de contrôle)
et il la compare aux différentes valeurs. Les valeurs sont évaluées dans l'ordre, les unes après les autres, et dès
qu'une de celle-ci est vérifiée l'action associée est exécutée.
Valeur-i peut être un ensemble des valeurs qui seront séparées par des pointes ou intervalle des valeurs
(Valeur-i .. Valeur-f)
Exemple :
Algorithme Ma_note
Valeur Commentaire Variables N : Entier;
Début
0à9 C'est nul
Ecrire("Donnez la note de votre BAC:");
10 à 12 Passable Lire(N);
13 à 14 Assez bien Selon N faire
15 à 16 Bien 0 .. 9 : Ecrire("C'est nul");
10 ..12 : Ecrire("Passable");
Exercice 13 ..14 : Ecrire("Assez bien");
1. Ecrire un algorithme permettant d’afficher 15 ..16 : Ecrire("bien");
le mois en toute lettre selon son numéro saisi Sinon
Ecrire("La note saisi est incorrecte :");
au clavier.
FinSelon
2. Récrire cet algorithme en langage C Fin
18
07/12/2021
Une structure répétitive, encore appelée boucle, est utilisée quand une instruction ou une liste d’instructions,
doit être répétée plusieurs fois, la répétition est soumise à une condition.
Prenons par exemple, un programme pose une question à laquelle l’utilisateur doit répondre par O (Oui) ou N
(Non). Mais l’utilisateur, risque de taper autre chose que la réponse attendue. Alors, dans tout l’algorithme on
met en place ce qu’on appelle un contrôle de saisie, afin de vérifier que les données entrées au clavier
correspondent bien à celles attendues par l’algorithme
Algorithme Restaurant
Variable Rep : Caractère; Si l’utilisateur ne se trompe qu’une seule fois, et entre une
Début valeur correcte à la deuxième demande, c’est parfait. Par
Ecrire ("Voulez vous un café ? (O/N)"); contre, s’il commet une deuxième erreur, il faudrait rajouter
Lire (Rep); un SI. Et ainsi de suite, on peut rajouter des centaines de SI,
Si (Rep < > " O " ET Rep < > " N ") Alors et écrire un algorithme lourd.
Ecrire( " Saisie erronée. Recommencez ");
Lire (Rep);
FinSi La solution à ce problème consiste à utiliser une structure
Fin répétitive (Les boucles)
Algorithme Langage C
la boucle Pour la boucle For
La boucle Tant que La boucle While
La boucle Faire Tant que La boucle Do While
19
07/12/2021
La boucle Pour, For (en langage C) est une instruction permet de répéter l’exécution d’un bloc d’instructions, elle
utilise un compteur d’itération, une valeur initiale et une valeur finale du compteur. Le compteur est incrémenté
automatiquement.
20
07/12/2021
La boucle TantQue permet de répéter un traitement tant que la condition est vraie.
Exemple :
Algorithme Somme
Variables Som, N, I : entier;
Début
Som ← 0;
I ← 1;
Ecrire (" Donnez la valeur, N ");
Lire (N);
Tantque (I <= N) faire
Som ← Som + I;
I ← I + 1;
FinTantQue
Ecrire(''La somme des '', N, '' premiers entiers est : '', Som);
Fin
Exercice
Récrire cet algorithme en langage C on utilisant l’organigramme précédant
21
07/12/2021
La boucle permet de répéter les instructions jusqu’à la vérification de la condition, c’est-a-dire de répéter une
instruction jusqu'à ce qu'une condition soit vraie.
Syntaxe :
Algorithme Langage C
Algorithme Somme
Variables Som, N, I : entier;
Début
Som ← 0;
I ← 1;
Ecrire (" Entrer la valeur, N ");
Lire (N);
Faire
Som ← Som + I;
I ← I + 1;
Tantque (I <= N);
Ecrire(''La somme des '', N, '' premiers entiers est : '', Som);
Fin
Remarques
Les instructions de la boucle Répéter ou bien Faire Tantque sont exécutées au moins une fois, car l’évaluation de la
condition vient après le passage dans la boucle.
22
07/12/2021
Les instructions de la boucle Tantque ( While ) peuvent ne jamais être exécutées si la condition n’est pas vérifiée, lors
de la première évaluation.
Cependant, la boucle Faire Tantque ( Do While ) s’exécute jusqu’à ce que la condition soit vérifiée a ce point la
condition permet la sortie de la boucle Répéter
Retenir
Exercices
Exercice 1
Ecrire un algorithme qui demande un nombre entier à l’utilisateur et afficher N fois le message suivant
(Ecole Superieure de Technologie Essaouira LP MGE).
Exercice 2
Ecrire un algorithme permettant d’afficher la saison en introduisant le numéro du mois.
Exercice 3
Réécrire les algorithmes précédents, en utilisant les instructions de langage C
23
07/12/2021
Un sous-algorithme est un bloc ou bien élément d’algorithmique 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.
Intérêt :
Réaliser un découpage d’une tâche en sous-tâche.
Optimiser le nombre d’instructions dans un programme
Effectuer une seule description d’une tâche commune.
Concevoir un programme de manière descendante en entrant de plus en plus dans les détails.
Faciliter la mise au point et la correction des erreurs.
24
07/12/2021
En algorithmique, comme langage C, il existe deux types de sous-programmes. Les fonctions et procédures.
En langage C : les fonctions mathématique sont prédéfinie dans la bibliologique Math.h pour
utiliser les fonctions de cette librairie, il faut inclure la librairie par la directive
#include <math.h>
25
07/12/2021
En algorithmique, comme langage C, il existe deux types de sous-programmes. Les fonctions et procédures.
V. 2. les fonctions
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.
Syntaxe exemple
Fonction Nom (paramètres formels: types): type fonction Fonction somme (a, b : entier) : entier
Déclaration des variables; Variables c : entier;
Début Début
Instructions et le corps de la fonction; c ← a+b;
Nom ← resultat; somme ← c;
FinFonction Finfonction
26
07/12/2021
• 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.
• Une procédure est un sous-programme qui ne retourne pas de valeur.
Syntaxe Exemple
Syntaxe Exemple
Algorithme factoriel
Nom de la procédure (paramètres et leurs types) Procédure FAT (n: entier)
Variables y, i : entier;
Retenir Début
y ← 1; Pour i ← 1 à n faire
Les paramètres placés dans la déclaration d'une
y ← y ∗ i;
procédure sont appelés paramètres formels. Ces Fin pour
paramètres peuvent prendre toutes les valeurs Ecrire (’le factoriel de ce nombre entier est’, y);
possibles mais ils sont abstraits (n'existent pas Finprocédure
réellement). Variables A: entier;
Les paramètres placés dans l'appel d'une Début
procédure sont appelés paramètres effectifs. ils Lire (A);
contiennent les valeurs pour effectuer le traitement. FAT(A);
Fin
27
07/12/2021
le paramètre transmis n'est jamais affecté par les modifications dans la procédure ou la fonction (on ne
récupère pas les résultats ) le contenu des paramètres effectifs ne peut pas être modifié par les instructions de
la fonction ou de la procédure. Car nous ne travaillons pas directement avec la variable, mais sur une copie
le paramètre transmis dans ce cas peut être modifié et on récupère les résultats la procédure utilise l'adresse du
paramètre effectif. Lorsqu'on utilise l'adresse du paramètre, on accède directement à son contenu. La valeur de
la variable effectif sera donc modifiée. Les paramètres passés par adresse sont précédés du mot clé Var.
28
07/12/2021
29
07/12/2021
Une procédure est une série d’instructions regroupées sous un nom, qui permet d’effectuer des actions par un
simple appel de la procédure dans un algorithme ou dans un autre sous-algorithme. Une procédure renvoie
aucune valeur et leur type est déclare Void .
Syntaxe
Void Nom de procédure (liste déclarations de paramètres)
{
liste-de-déclarations;
liste-d'instructions;
}
30
07/12/2021
#include <stdio.h>
int sommecarre(int a, int b)
{ int w;
w=(a*a)+(b*b)
return w; }
int main()
{ int y,x;
printf("donnez la valeurs de x et y");
Scanf("%d%d" ,&x,&y);
printf("la somme des carres de x et y = %d ", sommecarre(x,y));
}
donnez la valeurs de x et y
5
4
la somme des carres de x et y = 41
#include <stdio.h>
double aireRectangle(double largeur, double hauteur)
{
return largeur * hauteur;
}
int main()
{
printf("Rectangle de largeur 5 et hauteur 10. Aire = %f\n", aireRectangle(5, 10));
printf("Rectangle de largeur 2.5 et hauteur 3.5. Aire = %f\n", aireRectangle(2.5, 3.5));
printf("Rectangle de largeur 4.2 et hauteur 9.7. Aire = %f\n", aireRectangle(4.2, 9.7));
}
31
07/12/2021
printf("fin du cours");
32