Introduction à la programmation en C
Introduction à la programmation en C
Introduction au langage C
Objectifs pédagogiques :
Installer un compilateur C ;
Écrire la structure d’un programme C ;
Inclure les bibliothèques stdio.h, stlib.h, math.h et conio.h ;
Utiliser les fonctions d’entrée/sortie classiques (scanf, printf, get,) ;
P
R Situation problème :
O Votre ami souhaite utiliser l’ordinateur pour exécuter ses algorithmes. Pour
G cela, votre petit frère lui propose la traduction de ces algorithmes en langage C avant
R de les exécutés. Ne connaissant rien sur ce langage, il fait donc appel à vous dans le
A but de l’expliquer quelques notions sur langage C.
M
M Consignes :
E 1. Définir langage de programmation
R 2. A part le langage C, quel autre langage de programmation connaissez -vous ?
3. Comment appelle-t-on un algorithme déjà traduit en langage de programmation ?
E 4. Comment appelle-t-on l’application qui permet d’exécuter un programme sur un
N ordinateur ?
5. Donner la structure du programme écrit en langage C.
C 6. Donner le rôle des bibliothèques en langage C. Puis énumérer quelques exemples.
7. Donner une fonction utilisée en langage C pour :
- Afficher un message
- Lire une variable.
I. DÉFINITION :
Programmation : c’est la traduction d’un algorithme en un langage de
programmation.
Langage de programmation : ensemble des mots et symboles permettant
d’écrire un programme.
int main ()
{
Déclarati ons de variable s inter nes
instructi ons
}
La ligne : int main() se nomme un "en-tête". Elle précise que ce qui sera
décrit à sa suite est en fait le ''programme principal". Elle peut avoir des paramètres
P formels.
R Le programme (principal) proprement dit est constitué des variables internes
O et des instructions et vient à la suite de cet en-tête. Il est délimité par les accolades
G "{" et "}".
R
A Exemple de programme C affichant "Bonjour".
M
M
E
R
E ) ;
N
P
R
O
G
R
A
M
M
E
R
Après avoir inscrit un indicateur de conversion dans la chaîne de caractère
(dans les guillemets ""), il faut indiquer de quelle variable il faut afficher la valeur. Il E
suffit de rajouter une virgule après les ces derniers, suivis du nom de la variable, N
comme ceci :
C
printf ("% [lettre]", variable_ a_afficher);
Exemples :
Les entrées
Pour récupérer les valeurs saisies par l’utilisateur, nous utilisons les fonctions
suivantes : scanf () et get ()
La syntaxe de l’utilisation de la fonction Scanf() est :
P scanf("%[lettre]", &variable qui_contiendra_notre_valeur);
R
NB : La fonction scanf a besoin de connaitre l’emplacement en mémoire de nos
O
variables afin de les modifier. Afin d’effectuer cette opération, on utilise le symbole
G
&. Donc, si vous oubliez le &, le programme plantera quand vous le lancerez, car
R
vous tenterez d’accéder à une adresse mémoire inexistante !
A
Exemple :
M
M
E
R
E
N
EXERCICES
Exercice 1
Vous souhaitez écrire un programme C qui demande à l’utilisateur de saisir un
nombre puis affiche ce nombre.
1. Donner la structure d’un programme C
2. Quelles sont les bibliothèques standard que vous avez besoin dans votre
programme C
3. Écrire l’algorithme qui permet de réaliser cette tâche. P
4. Traduire votre algorithme en langage C R
O
G
R
Exercice 2 A
1. Définir le terme suivant : compilateur, programme, programmation, langage de M
programmation. M
2. Citer deux exemples de compilateur C E
3. Donner deux exemples de langage de programmation. R
4. Donner le rôle des bibliothèques standard suivant : <stidio.h>, <stdlib.h> et
<math.h> E
5. Donner 03 exemples des fonctions C utilisées pour afficher les textes à l’écran. N
6. Donner deux exemples des fonctions C qui permet la récupération des données
de l’utilisateur. C
7. Donner la différence entre les fonctions puts() et printf()
8. Quel rôle joue le symbole & dans la récupération de la valeur d’une variable ?
Exercice 3
Écrire un programme C qui affiche « bonjour » suivi du nom de l’utilisateur.
1 #include <math.h>
2 int main() {
3 int a ;
4 put("entrer un nombre");
5 scanf(%d,a) ;
6 printf("le nombre saisi est:",a);
P 7 return 0 ;
R 8 )
O
Travail demandé :
G
Ce programme est -il correct ? Si non relevez toutes les lignes incorrectes puis
R
corriger.
A
M
M
E
R
E
N
Objectifs pédagogiques :
Écrire la syntaxe des structures for, while et do…while en C;
Utiliser l’operateur conditionnelle (?) et virgule ;
Situation problème : P
Votre amie souhaite écrire un programme C qui calcule et affiche la table deR
multiplication d’un nombre positif saisi par l’utilisateur. Elle souhaite donc que ceO
programme affiche à chaque fois un message à l’utilisateur s’il saisi un nombre G
négatif. Rencontrant des problèmes sur l’écriture de ce programme, elle donc appel R
à vous dans le but de l’aider. A
Consignes : M
1. Qu’entend-on par structure de contrôle ? M
2. Énumérer les différentes structures de contrôle utilisées en programmation. E
3. Quelle structure utilise-t-on dans le cas où la condition se traite en deux cas R
possibles ?
4. Quelle structure utilise-t-on dans chacun des cas suivants : E
- La répétition connue d’un bloc instructions d’un programme ? N
- La répétition non connue d’un bloc instructions d’un programme ?
C
La forme réduite
if (condition) {
P bloc instructions 1
R }
O
G Exemple : le programme C qui prend en entrée un nombre puis affiche le
R message « positif » si c’est ce nombre est supérieur à 0 est :
A #include <Stdio.h>
M int main (void) {
M int n ;
E printf ("saisir un nombre");
R scanf("%d",&n);
if (n>0) {
printf("Positif");
E
}
N
Return 0;
}
C
La forme complète
if (condition) {
bloc instructions 1
} else {
bloc instructions 2
#include <Stdio.h>
int main (void) {
int n ;
printf ("saisir un nombre");
scanf("%d",&n);
if (n%2==0) {
printf("%d",n,"est paire");
P
} else { R
printf("%d",n,"est impaire"); O
} G
Return 0; R
} A
M
L’opérateurs conditionnel ?
M
L’opérateur conditionnel ? est un opérateur ternaire. Sa syntaxe est la suivante :
condition ? expression 1 : expression 2 ; E
Cette expression est égale à expression 1 si condition est satisfaite, et à expression 2 R
sinon.
Exemple : le programme C qui calcule la valeur absolue d’un nombre est : E
N
#include <Stdio.h>
int main (void) { C
int x, abs;
abs=((x>=0)? x : -x) ;
printf(" abs= %d",abs);
}
Return 0;
}
#include <Stdio.h>
P int main (void) {
R int a, b ;
O b=((a=3),(a+2)) ;
G printf(" b= %d",b);
}
R
Return 0;
A
}
M
M retournera 5 à la sortie.
E NB : la virgule séparant les arguments d’une fonction ou les déclarations des variables
R n’est pas l’opérateur virgule.
E
Structures itératives
N
Toutes les structures itératives répètent l’exécution de traitement(s). Deux
cas sont cependant à envisager, selon que :
C
- Le nombre de répétitions est connu à l’avance : c’est le cas des boucles itératives.
- Le nombre de répétitions n’est pas connu ou est variable : c’est le cas des boucles
conditionnelles.
Boucle for
Cette structure est une boucle itérative ; elle consiste à répéter un certain
traitement un nombre de fois fixé à l’avance. Cette structure est donnée par :
for (initialisation ; condition ;incrémentation ) {
bloc instructions;
}
150 Groupe WhatsApp « Les grandprofs Info »
11- Programmer en C
Exemple : Affichage de nombres plus petit ou égal à 5.
printf(" i=%d",i);
Boucle while
Parfois, pour réaliser une tâche, on doit effectuer plusieurs fois les mêmes
P
instructions, sans que le nombre de fois soit déterminé à l’avance. On utilise alors
R
une boucle conditionnelle. Dans cette structure, le même traitement est effectué tant
O
qu’une condition reste valide ; la boucle s’arrête quand celle-ci n’est plus remplie.
G
Cette structure répétitive est ainsi formulée :
R
While (condition vraie) { A
M
bloc instructions; M
} E
R
Exemple : affichage des nombres plus petit que 5
i=0 ; E
While (i < 5) {
N
printf("i=%d",i);
i++; C
}
Boucle do…while
Une variante de structure répétitive avec boucle conditionnelle consiste à
répéter un traitement jusqu’à ce qu’une certaine condition soit vérifiée. Dans ce cas,
la boucle est exécutée au moins une fois, après quoi on teste la condition. On la
traduit par l’instruction :
do {
bloc instructions;
} While (condition);
E
N
EXERCICES
Exercice 1
Soit le programme suivant :
P
R
O
G
R
A
M
Ecrire un programme C réalisant exactement la même chose, en utilisant :
M
a) Une instruction while;
E
b) Une instruction do ... while
R
Exercice 2
E
Écrire un programme C pour calculer la moyenne de notes fournies au clavier. Le
nombre de notes n’est pas connu à priori et l’utilisateur peut en fournir autant qu’il N
le désire. Pour signaler qu’il a terminé on convient de fournir une note négative non
comptée dans la moyenne. C
Exercice 3
Écrire un programme C pour Déterminer si un nombre entier fourni en donnée est
premier ou non
Exercice 4
Écrire un programme qui affiche la table de multiplication des nombres de 1 à 10
Exercice 5
Soit le programme C ci-dessous :
#include <Stdio.h>
int main (void) {
int a,b,m;
m =((a>b)? a : b) ;
printf("%d",m);
}
P
Return 0;
R
}
O
G
a. Que fait ce programme ?
R
b. Traduire ce programme en utilisant la structure alternative.
A
M
M
E
R
E
N
Les tableaux en C
Objectif pédagogique :
Déclarer un tableau en C ;
Situation problème :
Votre camarade Ali souhaite écrit un programme C qui calculera la moyenne
arithmétique de 50 nombres. Votre petit frère lui conseil d’utiliser le tableau dans P
son programme pour stocker les 50 nombres. Ne connaissant pas comment utiliser R
le tableau en C, il fait appel à vous dans le but de l’aider. O
Consignes : G
1. Définir tableau R
2. Donner l’intérêt de l’utilisation d’un tableau A
3. Donner les caractéristiques d’un tableau M
4. Donner la syntaxe de déclaration d’un tableau en langage C M
5. Expliquer comment, on remplit un tableau avec ses éléments en C E
6. Expliquer comment on accède aux différents éléments d’un tableau en C. R
E
I. DÉCLARATION D’UN TABLEAU N
Un tableau est un ensemble fini d’éléments de même type, stockés en
mémoire à des adresses contiguës. C
La déclaration d’un tableau à une dimension se fait de la façon suivante :
type nom-du-tableau[nombre-éléments] ;
où nombre-éléments est une expression constante entière positive. Par exemple : int
tab [10] ; indique que tab est un tableau de 10 éléments de type int.
Pour plus de clarté, il est nécessaire de donner un nom à la constante
nombre-éléments par une directive au préprocesseur, par exemple
# define nombre-éléments 10
P Exemple :
R int tab[2] ;
O tab[0]=10 ; 10 9
G
tab[1]= 9 ;
R
A
M Évidemment, à ce rythme-là, l’affectation est longue, surtout si votre tableau
M est de grande taille. C’est pourquoi on utilise la boucle itérative for.
E On peut initialiser le tableau lors de sa création par une liste de constantes
R de la façon suivante :
type nom-du-tableau[N ]={ constante-1,…,constante-N} ;
E Par exemple, on peut écrire :
N # define N 4
int tab[N]={1,2,3,4} ;
C 1 2 3 4
#include <Stdio.h>
#define N 10
int main () {
int tab[N];
int i;
……………
for (i=0;i<N;i++) {
printf("tab[%d]=%d\n",I,tab[i]);
}
Return 0;
P
R
}
O
G
R
A
M
M
E
R
E
N
EXERCICES
Exercice 1
Écrire un programme C qui calcule la moyenne de 5 nombres saisi par l’utilisateur.
Exercice 2
1. Définir tableau puis donner 03 éléments qui caractérisent un tableau.
2. Quel inconvénient présente le remplissage d’un tableau en utilisant l’affectation ?
P Quelle autre méthode proposeriez-vous pour résoudre ce problème ?
R
O Exercice 3
G 1. Écrire un programme C qui permet de rechercher le plus petit élément d’un
R tableau à 20 éléments.
A 2. Écrire un programme C qui permet de rechercher le nom d’un candidat parmi les
M noms de 50 candidats admis à un concours.
M 3. Écrire un programme C qui permet de faire la somme de 10 éléments d’un
E tableau.
R 4. Écrire un programme C permettant de créer les tableaux ci-dessous :
E Tableau 1 :
N 12 13 14 15 222
Tableau 2 :
C 2 3 4 5 22 1 2 1 2 3
11 22 11 22 3 4 12 14 14 6
Les sous-programmes en C
Objectif pédagogique :
Déclarer et appeler un sous-programme en C ;
Situation problème :
Votre ami Isaac a utilisé le langage C pour créer une calculatrice qui effectue
les opérations d’addition, de soustraction, de division et de multiplication. Il constate P
que le code source de son programme est touffu et volumineux ce qui lui rend R
difficile la compréhension de son code. Il cherche donc un moyen très efficace pour O
mieux structurer son programme. Pour cela il fait appel à vous dans le but de l’aider. G
Consignes : R
1. Que doit faire votre ami Isaac pour organiser et mieux comprendre son code ? A
2. Comment appelle-t-on le sous-programme en C ? M
3. Donner la syntaxe de définition d’une fonction en C M
4. Comment fait-on appel à une fonction en langage C ? E
R
I. DÉFINITION D’UNE FONCTION
L’écriture et la compréhension d’un programme peut s’avérer difficile E
lorsque le nombre d’instructions devient trop important. A ce moment, le N
programme devient lourd et son exécution par l’ordinateur devient beaucoup plus
lente. Pour pallier ce problème, on a mis sur pied la notion de sous-programme C
informatique dont l’objectif principal est de scinder un programme complexe et
touffu en plusieurs sous-programmes plus simples et plus efficaces. En C, les sous
programmes sont appelés les fonctions.
A part la fonction principale main() qui est obligatoire, les autres fonctions
d’un programme C sont dites fonctions secondaires.
Une fonction en C se définit de la manière suivante :
type nom-fonction (type-1 argument-1,…,type-n argument-n)
{
[ déclarations des variables locales]
listes d’instructions
printf("%d\n",produit(c,d));
}
E
N
EXERCICES
Exercice 1
On veut écrire un programme C qui calcule la moyenne de 50 nombres saisis par
l’utilisateur.
a. Écrire une fonction nommée Lecture qui permet de lire les 50 nombres puis les
stockent dans un tableau de taille 50.
b. Écrire une autre fonction nommée somme qui permet de sommer les 50 nombres P
stockés dans le tableau. R
c. Écrire une autre fonction nommée moyenne qui calcule la moyenne de ces 50 O
nombres. G
d. Écrire la fonction principale faisant appel à ces fonctions pour résoudre le R
problème posé. A
M
Exercice 2 M
1. Définir fonction E
2. Quel mot clef utilisé en C et qu’on place devant le nom de la fonction pour R
signifier qu’elle ne retourne pas une valeur ?
3. Donner la différence entre une variable globale et une variable locale. E
4. Écrire une fonction en C qui permet de calculer x n où x et n sont les nombres N
entiers.
5. Écrire une fonction en C qui permet de déterminer le type d’une personne selon C
son âge.
NB : mineur (si âge <= 14), adulte (si âge > 14)
Situation problème :
Votre amie Claudine a écrit un programme qui calcule la somme des 10
P nombres en utilisant le langage C. Elle souhaite donc tester ce programme pour savoir
R s’il réalise vraiment la tâche demandée. Rencontrant des difficultés, elle fait appel à
O vous dans le but de l’aider.
G Consignes :
R 1. De quoi a-t-elle besoin pour tester son programme ?
A 2. Donner le rôle d’un compilateur.
M 3. Décrire les étapes qu’elle doit suivre pour résoudre son problème.
M
E I. TESTER UN PROGRAMME C EN UTILISANT LE COMPILATEUR GCC
R Le C est un langage compilé (par opposition aux langages interprétés). Cela
signifie qu’un programme C est décrit par un fichier texte, appelé fichier source. Ce
E fichier n’étant évidemment pas exécutable par le microprocesseur, il faut le traduire
N en langage machine. Cette opération est appelée la compilation et est effectuée par
un programme appelé compilateur. Elle se décompose en fait en 4 phases successives
C :
1. Le traitement par le préprocesseur : le fichier source est analysé par le
préprocesseur qui effectue des transformations purement textuelles (remplacement
de chaînes de caractères, inclusion d’autres fichiers source … ).
2. La compilation : la compilation proprement dite traduit le fichier généré par le
préprocesseur en assembleur.
3. L’assemblage : cette opération transforme le code assembleur en un fichier binaire,
c’est-`a-dire en instructions directement compréhensibles par le processeur.
4. L’édition de liens : un programme est souvent séparé en plusieurs fichiers source,
pour des raisons de clarté mais aussi parce qu’il fait généralement appel à des librairies
des fonctions standard déjà écrites. Une fois chaque code source assemble, il faut