Académique Documents
Professionnel Documents
Culture Documents
Module : Algorithmique I
Module : Programmation C I
I. Introduction :
Les algorithmes sont présents dans notre vie, nous les exécutons ou nous les faisons
exécuter tous les jours.
Avons-nous déjà essayé de faire fonctionner un appareil électronique à l’aide de son guide,
lu une recette de cuisine, ou guidé quelqu’un à retrouver un quartier ou une faculté ? Si oui et
sans le savoir, nous avons exécuté des algorithmes.
1. Notion d’un algorithme :
Un algorithme est une suite d’actions ou d’instructions élémentaires qui doivent se dérouler
dans un ordre bien précis afin de résoudre un problème (ou réaliser un travail).
• Langage naturel
• Pseudocode
• Organigramme
• Programme
En l’informatique, l’ordinateur exécute aussi des algorithmes sauf qu’il est une machine
non intelligente, c'est-à-dire qu’il n’est pas capable de résoudre des problèmes sans une
description détaillée des actions à faire.
• d'être compréhensible par tous informaticien même s'il ne connait pas le langage du
programme
3. Langages informatiques :
On distingue 2 catégories de langages.
3.1. Langage machine :
Ce sont des langages utilisant des mots formés uniquement de 0 et de 1. Ces langages
sont l’avantage d’être compréhensible par la machine et le fonctionnement interne de la
machine. Ils sont néanmoins, utilisés par des programmes nécessitant des exécutions
rapides.
3.2. Langage évolué :
Dans le but de faciliter l’accès de l’informatique à un plus grand nombre de personne, ils
ont été amenés à créer des langages dont les mots sont proches d’une langue parlée (souvent
Anglais).
Ces langages présentent l’avantage d’être universels dans la mesure où ils ne dépendent pas
de la machine qui les utilise. Ces langages évolués (langages de programmation) ont été
généralement crée en fonction d’une orientation donnée.
Exemple :
Le langage C créé entre 1969 et 1973 et il est un langage bas niveau. C’est donc a priori
plus difficile. Mais grâce à ces bases solides, vous serez ensuite capable d'apprendre beaucoup
plus rapidement un autre langage de programmation si vous le désirez. Et avec plus
d’autonomie ! Par ailleurs, le C est un langage très populaire. Il est utilisé pour programmer
une grande partie des logiciels que vous connaissez. C'est un des langages les plus connus et
les plus utilisés qui existent. Le langage C est à la base des plus grands systèmes d'exploitation
tels UNIX (et donc Linux et Mac OS) ou Windows.
Chapitre 2 : Notions et Instructions Simples d’un Algorithme et Langage C
3
IA-1
b. Compilateurs
Un compilateur est un logiciel qui traduit tout le code source d'un programme en un
langage machine ou en code binaire avant de l'exécuter.
Le processus de compilation se déroule en deux étapes : d'abord, le code source est
analysé et vérifié pour les erreurs, puis il est traduit en code machine ou en code intermédiaire
(comme le bytecode dans le cas de langages comme Java). Le fichier résultant est appelé "code
compilé" ou "exécutable".
Après la compilation, le programme peut être exécuté plusieurs fois sans avoir besoin
d'une nouvelle phase de compilation, sauf si des modifications sont apportées au code source.
Les langages de programmation couramment associés à des compilateurs comprennent
C, C++, et d’autres.
Les compilateurs produisent un exécutable indépendant du code source, tandis que les
interpréteurs nécessitent le code source pour chaque exécution.
Les compilateurs ont tendance à optimiser le code lors de la compilation, ce qui peut
entraîner des performances supérieures, tandis que les interpréteurs exécutent généralement
le code moins rapidement, car ils traduisent le code à la volée.
Les erreurs de compilation sont détectées avant l'exécution pour les compilateurs, tandis que
les erreurs dans le code source peuvent être détectées au fur et à mesure de l'exécution pour
les interpréteurs.
b.1. Etapes de compilation en langage C :
Les étapes de compilation en langage C sont un processus en plusieurs étapes qui
permet de transformer un code source C en un programme exécutable. La figure suivante
illustre les étapes de la compilation en C :
Ce nom est écrit principalement sous la forme d’une chaine de caractère constituée de
lettres non accentuée, de chiffres et du caractère « _ », et commence obligatoirement par un
alphabet.
Le nom de la donnée doit être le plus représentatif possible du contenu de celle-ci pour
faciliter la lecture de l’algorithme. En revanche, il ne doit pas non plus être trop long pour ne
pas nuire à la lisibilité de l’ensemble.
Exemples :
Le nom « ma_donnee » : est valide.
Le nom « ma-donnee » : n’est pas valide (contient le caractère « - »).
Le nom « madonnee » : est valide.
Chapitre 2 : Notions et Instructions Simples d’un Algorithme et Langage C
5
IA-1
Les données sont nécessaires au déroulement d’un algorithme. On distingue deux catégories
simples : les constantes et les variables.
Une constante est une donnée fixe qui ne varie pas durant l’exécution d’un algorithme. Une
constante est caractérisée par son nom et sa valeur fixe.
Une variable est le nom d’un espace mémoire dont le contenu peut être modifié par une action
durant l’exécution d’un algorithme. Une variable est caractérisée par son nom et son type.
Une variable peut contenir différents types de données et de tailles différents de données.
La déclaration d’une donnée avec un type permet de réserver une place mémoire dont la taille
peut varier selon le type choisi.
Il existe plusieurs types de données, nous allons nous limiter ici aux types classiques de
données. Ainsi on distingue :
Type Entier : les données de type Entier peuvent contenir toutes les valeurs numériques
entières (positives et négatives).
Type Réel : les données de type Réel peuvent contenir toutes les valeurs numériques avec ou
sans virgule (positives et négatives).
Type Caractère : les données de type Caractère peuvent contenir tout caractère figurant sur
le clavier de votre ordinateur. Ces valeurs doivent être délimitées par des guillemets.
Type Chaîne de caractères : le type Chaîne de caractère peut contenir une suite de
caractères (un mot, une phrase ou même un texte). Ces valeurs doivent être délimitées par des
guillemets.
Exemples :
Voici un tableau donnant les types de données, taille en octet et plage de valeurs acceptée en
langage C :
Comme on l’a déjà précisé, une donnée peut être de nature constante ou variable.
Syntaxe en algorithme :
Exemples :
Algorithme Langage c
Constante Pi 3,14 #define Pi 3.14 ou const float Pi=3.14
Constante e 2,71 #define e 2.71 ou const float e=2.71
Remarque :
Dans le langage c :
• #define et const (qualificateur de type) permettent de définir une constante
La déclaration des constantes dans l’algorithme fait sans préciser le type de données, alors que
la syntaxe de déclaration des variables nécessite une précision de type et est donnée par :
Syntaxe en algorithme :
Syntaxe en langage c:
En C il existe plusieurs types entiers, dépendant du nombre d'octets sur lesquels ils sont
codés ainsi que de leur format, c'est-à-dire s'ils sont signés (possédant le signe - ou +) ou non.
Par défaut les données sont signées.
Exemples :
Algorithme Langage c
Variable Nb_Eleves : entier int Nb_Eleves ;
Variable Note : réel float Note ;
Variable Operateur : caractère char Operateur ;
Variable Prenom : chaines de caractères char Prenom [20] ;
Nous allons aborder dans ce paragraphe les instructions de base à utiliser dans un
algorithme, à savoir :
L’affectation
La lecture
L’écriture
2.1. L’instruction d’affectation :
L’affectation est une opération qui consiste à attribuer une valeur à une variable. Elle est
représentée par une flèche orientée à gauche dans algorithme et = dans Langage c.
Syntaxe :
Algorithme Langage c
Nom_VariableValeur ou expression Nom_Variable=Valeur ou expression ;
Exemples :
Algorithme Langage c
Nb_Eleves 35 Nb_Eleves= 35 ;
Note17,89 Note=17.89 ;
Opérateur’C’ Opérateur=‘C’ ;
Prénom’ Ahmed’ Prénom[] = ‘Ahmed’ ;
ATrue A=True ;
AFalse A=False ;
On suppose X10
Algorithme Langage c
Ecrire ("message") printf("message") ;
Exemples :
Remarques :
• Le %d sera remplacé par la variable indiquée après la virgule, à savoir A.
• Le tableau suivant vous propose les principaux formats utilisables avec Langage c.
• Les caractères spéciaux en langage C sont des lettres spéciales qui permettent d’indiquer
qu'on veut aller à la ligne, faire une tabulation, etc. Ils sont faciles à reconnaître : c’est
un ensemble de deux caractères. Le premier d’entre eux est toujours un anti-slash ( \ ),
et le second un nombre ou une lettre. Voici deux caractères spéciaux courants que vous
aurez probablement besoin d'utiliser, ainsi que leur signification :
\n : retour à la ligne « Entrée » ;
\t : tabulation.
• Lorsqu'un programme devient long, il est conseillé d’ajouter des lignes de commentaires
dans le programme, c’est-à-dire des lignes qui ont pour but de donner des indications
sur les instructions effectuées et d’expliquer le fonctionnement de programme sans que
le compilateur ne les prenne en compte. Les deux types de commentaires sont :
En général un algorithme doit échanger des données avec l’utilisateur. En fait, l’instruction
d’écriture déjà vu, permet d’afficher des messages et des valeurs à l’écran.
Algorithme Langage c
Lire (Variable) scanf (" %format Variable ", & Variable) ;
Lire (Variable) scanf (" % formatVar1 %format formatVar2 ", & Var1, & Var2 ) ;
Exemples :
• Lire(A) : Le programme donne la main à l’utilisation pour saisir une valeur (validation
par la touche « Entrée ») et l’affecte à la variable A.
• Lire(A,B) : Le programme donne la main à l’utilisateur pour saisir la première et la
deuxième valeur et les affecte successivement à la variable A et B.
Chapitre 2 : Notions et Instructions Simples d’un Algorithme et Langage C
10
IA-1
Algorithme Langage c
Variable Nb: entier int Nb;
Lire (Nb) scanf ("%d",&Nb) ;
Variable note: réel float note;
Variable valide: caractère char valide;
Lire (note,valide) scanf ("%f%c",& note,&valide) ;
Attention : Lorsqu’il d’agit d’une chaîne de caractère il faut enlever l’adresse et mettre
directement la variable chaîne de caractère. Par exemple, scanf("%s",chaine) ;
3. Expression et opérateurs :
3.1. Expression :
Une expression est un ensemble de valeurs, reliées par des opérateurs, et équivalent à une seule
valeur.
3.2. Opérateur :
Un opérateur est un signe qui relie deux valeurs pour produire un résultat. Les opérateurs
possibles dépendent du type des valeurs qui sont en jeu.
+ Addition +
- Soustraction -
× Multiplication *
/ Division /
^ Puissance pow
Remarques :
2. Les opérateurs suivants sont ordonnés de plus prioritaire au moins prioritaire dans
l’évaluation d’une expression arithmétique :
Les parenthèses,
L’opérateur de puissance ^,
Les opérateurs de multiplication ×, de division / et de modulo %. Ces opérations ont la
même priorité et sont évaluées de gauche à droite.
Les opérateurs d’addition + et soustraction -. Ces opérations ont la même priorité et sont
évaluées de gauche à droite.
3. Opérateur ++ et -- comme préfixe et suffixe dans langage c
• Si vous utilisez l'opérateur ++ comme préfixe comme : ++var, la valeur de var est
incrémentée de 1 ; puis il renvoie la valeur.
• Si vous utilisez l'opérateur ++ comme suffixe comme : var++, la valeur d'origine de var est
renvoyée en premier ; alors var est incrémenté de 1.
• L'opérateur -- fonctionne de la même manière que l'opérateur ++ sauf que -- diminue la
valeur de 1.
• Exemple :
#include <stdio.h>
int main() {
int var1 = 5, var2 = 5;
printf("%d\n", var1++);
// 5 est affiché
// alors, var1 est incrémenté à 6.
printf("%d\n", ++var2);
// var2 est incrémenté à 6
// alors il est affiché.
return 0; }
Une expression logique est la composée d’expressions de comparaisons par les opérateurs
logiques. Une expression logique donne un résultat booléen (Vrai ou Faux).
et &&
ou ||
non !
Les opérateurs logiques sont utilisés en général pour combiner plusieurs conditions dans les
structures alternatives qu’on verra par la suite.
Soit A et B deux variables booléennes. Le tableau suivant illustre les différentes valeurs de
vérité que l’on obtient en combinant les valeurs de A et B à l’aide des opérateurs logiques.
A B A et B A ou B non A
Ce sont les opérateurs qui permettent de comparer deux valeurs. Le résultat de comparaison
est une valeur logique (Vrai ou Faux). Le tableau ci-après donne les différents opérateurs de
comparaison.
Egalité = ==
Différent ≠ !=
Inférieur strict < <
Supérieur strict > >
Inférieur ou égal ≤ <=
Supérieur ou égal ≥ >=
Début
Fin
Exemple :
Algorithme Langage C
Exemple : #include <stdio.h>
Algorithme int main( ) {
Somme_Nombres float A, B, S;
Variable A, B, S : Réel printf("La valeur de A=") ;
Début
scanf ("%f", &A);
Ecrire("La valeur de A=" )
Lire (A) printf("La valeur de B=") ;
Ecrire("La valeur de B=" ) scanf ("%f", &B);
Lire (B) S=A+B ;
SA+B printf("La somme est " ,S) ;
Ecrire("La somme est",S ) return 0 ;
Fin }
Remarques :