Vous êtes sur la page 1sur 15

REPUBLIQUE DU CAMEROUN REPUBLIC OF CAMEROON

Paix-Travail-Patrie Peace-Work-Fatherland

**************** ****************

MINISTERE DE L’ENSEIGNEMENT SUPERIEUR MINISTRY OF HIGHER EDUCATION

**************** **************

UNIVERSITE DE DOUALA INSTITUT UNIVERSITAIRE DES SCIENCES, DES


TECHNOLOGIES ET DE L’ETHIQUE
*****************
**************
BP 2701 Tél/Fax : 233-40-64-15
BP : 30201 Tél : 222-31-70-66 /67736364O

E-mail : iuste2013@yahoo.com/

site web : www.univ-stee.org

Chapitre 2 : initiation au langage C


Objectifs pédagogiques :
Ce chapitre propose une étude sommaire de la programmation en langage C, qui
s’avère être proche du langage des processeurs utilisés pour commander des processus
industriels. L’étudiant doit être capable à la fin de ce chapitre de:
Connaître la structure d’un programme C
Connaître les composantes élémentaires du C
Connaître les principaux types de données du langage C
Se familiariser avec les fonctions assurant l’échange d’information entre la
mémoire centrale et les périphé riques standard.
Pouvoir écrire un programme en C
Différencier entre les variables globales et les variables locales

Sommaire
I- Introduction..........................................................................................................................................1
II- Structure d’un programme en C..........................................................................................................1
III- Les Variables ...................................................................................................................................2
IV- Les constantes .................................................................................................................................4
V- Les commentaires .............................................................................................................................4
VI- Les operateurs ......................................................................................................................... ........4
VII- Saisie clavier et affichages..............................................................................................................7
A. Saisis clavier .....................................................................................................................................7
B. Affichage écran...................................................................................................................................8
VIII- Les boucles et test .........................................................................................................................9
IX- Les fonctions............................................................................................................................. ......12
Travaux dirigés N°2..............................................................................................................................14

Cours de NGAN BAKINDE P a g e 1 | 15


I- Introduction
Le langage C’est un langage évolué et structuré, assez proche du langage machine
destiné à desapplications de contrôle de processus (gestion d'entrées/sorties,
applications temps réel ...). Lescompilateurs C possèdent les taux d'expansion les
plus faibles de tous les langages évolués(rapport entre la quantité de codes machine
générée par le compilateur et la quantité de codesmachine générée par l'assembleur
et ce pour une même application); Le langage C possède assezpeu d'instructions, il
fait par contre appel à des bibliothèques, fournies en plus ou moins grandnombre
avec le compilateur.

Exemples: math.h: bibliothèque de fonctions mathématiques et stdio.h:


bibliothèque d'entrées/sorties standard

On ne saurait développer un programme en C sans se munir de la documentation


concernant cesbibliothèques.

II- Structure d’un programme en C


Un programme en C comporte :
Un entête (header) constitué de méta instructions ou directives destinées
aupréprocesseur.
Un bloc principal appelé main(). Il contient des instructions élémentaires ainsi
que les appels aux modules (fonctions) considérés par le compilateur comme
desentités autonomes. Chaque appel à une fonction peut être considéré comme
uneinstruction.
Le corps des fonctions placées avant ou après le main () dans un ordre
quelconque, les uneaprès les autres. Partout, les variables et les fonctions font l’objet
d’une déclarationprécisant leur type. Le schéma général est donc :

Cours de NGAN BAKINDE P a g e 2 | 15


Figure 1.1 : structure d’un programme C

III- Les Variables


Une variable est une suite de caractères parmi les lettres (minuscules ou majuscules,
mais nonaccentuées), les chiffres, le tirait bas.
Le rôle d’une variable est d’associer un nom à un emplacement mémoire ou à une
fonction,qui peux permettre de stocker des données ou faciliter la manipulation.
1. Les mots-clefs
Un certain nombre de mots, appelés mots-clefs, sont réservés pour le langage lui-
même et nepeuvent pas être utilisés comme nom de variable L'ANSI-C compte 32
mots clefs :
auto const double floatint short structunsigned break continue else for
longsigned switch void case default enumgotoregistersizeoftypedef volatile
char doextern if return static union while

Cours de NGAN BAKINDE P a g e 3 | 15


2. Les types de données
En C, il n’existe que quelques types fondamentaux de données :
 Le type char : un seul byte représentant un caractère.
 Le type int: un nombre entier dont la taille corresponds à celles des entiers du SE.
 Le type float : un nombre en virgule flottante en simple précision.
 Le type double : un nombre en virgule flottante en double précision.

Des qualificatifs peuvent préciser le type int: short, long, unsigned, signed. Les
qualificatifs signedet unsignedpeuvent préciser le type char. Le qualificatif long
peutpréciser le type double. Quand une déclaration ne précise pas le type de base,
intest supposé.

3. Declaration de variables
Les variables doivent toutes être déclarées avant d’être utilisées bien que certaines
soient
faîtes implicitement par le contexte. A une variable correspond un espace en
mémoire et un
mécanisme permettant d’adresser cet emplacement. En C une variable est
caractérisé par :
 Son nom (un identificateur)
 Son type (type de base ou type définie par l’utilisateur)
 Sa classe d’allocation (extern, static, auto, register)
Une déclaration de variables a la forme :

Une déclaration indique le nom, le type (parfois la valeur) et regroupe derrière une ou
plusieursvariables de même type. On peut initialiser les variables lors de la
déclaration :

Les constantes
Une constante est une valeur qui apparaît littéralement dans le code source
d'unprogramme, le type de la constante étant déterminé par la façon dont la

Cours de NGAN BAKINDE P a g e 4 | 15


constante estécrite. Les constantes vont être utilisées, par exemple, pour
l’initialisation de variables.

V- Les commentaires
Un commentaire débute par /* et se termine par */. Par exemple : /* Ceci est un
commentaire*/. On ne peut pas imbriquer des commentaires.

VI- Les operateurs


1. L'affectation
En C, l'affectation est un opérateur à part entière. Elle est symbolisée par le signe =.
Sasyntaxe est la suivante :Le terme de gauche de l'affectation peut être une variable
simple, un élément de tableau, …etc.Cette expression a pour effet d'évaluer «
expression » et d'affecter la valeur obtenue à « variable». De plus, cette expression
possède une valeur, qui est celle de « expression ». Ainsi,l'expression i = 5 vaut 5.
L'affectation effectue une conversion de type implicite : la valeur de l'expression
(terme de droite)est convertie dans le type du terme de gauche.
Par exemple, le programme suivant :

TAF:
a. Utilisez votre calculatrice ou une feuille de papier pour effectuer ces calculs et
trouver lavaleur de X
b. Entrer ce code sur votre compilateur et exécuter le programme relever la valeur de
X?
c. Quelle remarque faites-vous ? Conclure.

2. Les opérateurs arithmétiques


Les opérateurs arithmétiques classiques sont l’opérateur unaire - (changement de
signe) ainsi queles opérateurs binaires :+ addition ; - soustraction ; * multiplication ; /
division ; % reste de la division (modulo) (pour lesentiers)
Ces opérateurs agissent de la façon attendue sur les entiers comme sur les flottants.
Leurs seulesspécificités sont les suivantes :

 Contrairement à d'autres langages, le C ne dispose que de la notation / pour


Cours de NGAN BAKINDE P a g e 5 | 15
désigner à lafois la division entière et la division entre flottants. Si les deux
opérandes sont de typeentier, l'opérateur / produira une division entière (quotient de
la division). Par contre, ildélivrera une valeur flottante dès que l’un des opérandes est
un flottant. Par exemple :
 L'opérateur % ne s'applique qu’à des opérandes de type entier. Si l'un des deux
opérandes est négatif, le signe du reste dépend de l'implémentation, mais il est en
général le même que celui du dividende.
Notons enfin qu’il n'y a pas en C d’opérateur effectuant l’élévation à la puissance.
Defaçon générale, il faut utiliser la fonction pow(x,y) de la librairie math.h pour
calculer xy

3. Les opérateurs relationnels


> Strictement supérieur ; >= supérieur ou égal ; < Strictement inférieur ; <= inférieur
ou égal ;== égal ; != différentLeur syntaxe est : expression1 op expression2
Les deux expressions sont évaluées puis comparées. La valeur rendue est de type
int (il n'y a pasde type booléen en C); elle vaut 0 si la condition est faux, et une valeur
différente de 0 sinon.Attention à ne pas confondre l'opérateur de test d’égalité ==
avec l’opérateur d’affection =.Ainsi, le programme suivant imprime à l’écran : a et b
sont égaux.

4. Les opérateurs logiques (booléens)


&& : ET logique || : Ou logique ! : négationlogique Comme pour les opérateurs de
comparaison, la valeur retournée par ces opérateurs est un intqui vaut 0 si la
condition est faux.
Dans une expression de type : expression1 op1 expression2 op2 ...expressionN ,
l’évaluation se fait de gauche à droite et s'arrête dès que le résultat final est
déterminé.
5. Les opérateurs d'affectation composée
Les opérateurs d'affectation composée sont : += -= *= /= %= &= ^= |= <<= >>= Pour
tout opérateur op, l'expression : expression1 op= expression2 expression1 =
expression1 opexpression2 Toutefois, avec l'affection composée, expression1 n'est
évaluée qu'une seule fois.
6. Les opérateurs d'incrémentation et de décrémentation
Les opérateurs d'incrémentation ++ et de décrémentation -- s'utilisent aussi bien en
suffixe(i++) qu'en préfixe (++i). Dans les deux cas la variable i sera incrémentée,
toutefois dansla notation suffixe la valeur retournée sera l'ancienne valeur de i alors
que dans la notationpréfixe se sera la nouvelle. Par exemple :

Cours de NGAN BAKINDE P a g e 6 | 15


VII- Saisie clavier et affichages
A. Saisis clavier
1. La fonction scanf
Cette fonction lit à partir de l’entrée standard (clavier) une liste de variables en
mémoire selon un
format donné.

Liste d’adresse représente une liste d’adresses de variables déclarées ; format


représente leformat de lecture des données. Elle est composée de spécificateurs qui
indique le type devariables qu’on va lire. Chaque spécificateur correspond à un type
de variable et doit doncapparaître dans le même ordre que la variable dans la liste.
Les principaux spécificateurs deformat sont résumé dans le tableau suivant.

2. La fonction gets
Elle renvoie une chaîne de caractère lue dans le flux en entrée stdin. Sa déclaration
est la suivante:

Cours de NGAN BAKINDE P a g e 7 | 15


Lorsqu’on lit une chaîne de caractères avec scanf, la lecture s’arrête dès la
rencontre d’un blanc. Avec la fonction gets, la lecture se termine à la réception d’un
retour chariot ‘\n’.
Exemple :
char CH[20] ;
gets (CH) ;

3. Les fonctions getch(), getche() et getchar()


La première fonction renvoie un caractère lu au clavier sans écho à l’écran alors que
la deuxièmerenvoie un caractère lu au clavier avec écho à l’écran. La fonction
getchar renvoie un caractèredepuis stdin.

B. Affichage écran
1. Fonction printf
Elle permet la traduction de quantité alphanumérique en chaîne de caractères ainsi
qu’uneprésentation formatée des éditions.

format: format de représentation.


liste d’exprexssion: variables et expressions dont les valeurs sont à éditer.
La première partie est en fait une chaîne de caractères qui peut contenir
 du texte
 des séquences d’échappement qui permettent de contrôler l’affichage des
données.
Exemple ‘\n’ qui permet le passage à la ligne suivante
 des spécificateurs de format ou de conversion
Elle contient exactement un spécificateur de format pour chaque expression.

2. Fonction puts, putchar


 La fonction putsenvoie une chaîne de caractères vers stdout et ajoute un saut de
ligne (newline)

Cours de NGAN BAKINDE P a g e 8 | 15


 La fonction putcharenvoie un caractère vers stdout (écran)

VIII- Les boucles et test


1. If – ELSE

 Si l'expression fournit une valeur différente de zéro, alors le bloc d'instructions 1


est exécuté
 Si l' expressionfournit la valeur zéro, alors le bloc d'instructions 2 est exécuté
La partie expression peut désigner :
- une variable d'un type numérique,
- une expression fournissant un résultat numérique.
La partie bloc d'instructions peut désigner :
- un bloc d'instructions compris entre accolades.
- une seule instruction terminée par un point-virgule.
On peut avoir des « if » imbriqués

Cours de NGAN BAKINDE P a g e 9 | 15


2. Switch
C’est un moyen qui permet de décider dans une structure à plusieurs cas. Cette
instruction teste siune expression prend une valeur parmi un ensemble de constante
et fait le branchement enconséquence.

L’instruction break permet de sortir de l’instruction switch. Elle est importante car si
on ne la metpas après chaque cas d’exécution alors toutes les instructions après ce
cas seront exécutées(bien sur s’ils ne sont pas suivis d’une autre instruction break).
3. While

Cours de NGAN BAKINDE P a g e 10 | 15


Tant que l'expression est vraie, le bloc d'instructions est exécuté. Sinon, sortir de la
boucle.

Exemple2 : affichage du code binaire d’un caractère lu au clavier

4. do-While

Le bloc d'instructions est exécuté au moins une fois et aussi longtemps que
l'expression fournitune valeur différente de zéro.

5. For
La structure pour en langage algorithmique est utilisées pour faciliter la

Cours de NGAN BAKINDE P a g e 11 | 15


programmation deboucles de comptage. La structure for en C est plus générale et
beaucoup plus puissante.

expr1est évaluée une fois avant le passage de la boucle. Elle est utilisée pour
initialiser lesdonnées de la boucle.
expr2est évaluée avant chaque passage de la boucle. Elle est utilisée pour décider
si laboucle est répétée ou non.
expr3est évaluée à la fin de chaque passage de la boucle. Elle est utilisée pour
réinitialiser lesdonnées de la boucle.
En pratique, les parties expr1 et expr2 contiennent souvent plusieurs initialisations
ouréinitialisations, séparées par des virgules.

Exemple2 : affichage du code binaire d’un caractère lu au clavier

IX- Les fonctions


La structuration de programmes en sous-programmes se fait en C à l'aide de
fonctions.Les fonctions en C correspondent aux fonctions et procédures en langage
algorithmique.Nous avons déjà utilisé des fonctions prédéfinies dans des
bibliothèques standard (printf,…).

1. Définition de fonctions
Définition d’une fonction

Cours de NGAN BAKINDE P a g e 12 | 15


 Si une fonction ne fournit pas de résultat, il faut indiquer void (vide) comme type du
résultat.
 Si une fonction n'a pas de paramètres, on peut déclarer la liste des paramètres
comme(void) ou simplement comme () .
 Le type par défaut est int; autrement dit: si le type d'une fonction n'est pas déclaré
explicitement, elle est automatiquement du type int.
 Il est interdit de définir des fonctions à l'intérieur d'une autre fonction (comme en
Pascal).
 En principe, l'ordre des définitions dans le texte du programme ne joue pas de
rôle, maischaque Fonction doit être déclarée ou définie avant d'être appelée.
2. Déclaration de fonctions
En C, il faut déclarer chaque fonction avant de pouvoir l'utiliser. La déclaration
informe lecompilateur du type des paramètres et du résultat de la fonction. La
déclaration d'une fonctionse fait par un prototype de la fonction qui indique
uniquement le type des données transmises et reçues par la fonction.
TypeRésultatNomFonction (TypePar1, TypePar2, ...); Ou bien
TypeRésultatNomFonction (TypePar1 NomPar1, TypePar NomPar2, ...);

Travaux dirigés N°2


Exercice 1 :
1. Ecrire un programme C qui lit un entier x et affiche son opposé.
2. Ecrire un programme C qui lit trois entiers et affiche leur somme, leur produit et
leurmoyenne.
3. Une date est donnée sous forme d’un nombre entier de 6 chiffres. Par exemple
211007représente le 21 octobre 2007. Développer un programme C qui accepte en
donnée un telnombre et affiche le résultat suivant :
Jour : 21
Mois : 10
Année : 2004
4. Développer un programme C qui pour un rayon donné, renvoie le périmètre du
cercle et lasurface du disque.
5. Une température Tc exprimée dans l’échelle Celsius est liée à la même
température TFdans l’échelle Farenheit par la relation : TF = 32 + 1.8 Tc. La
température TK exprimée endegrés Kelvin est liée à Tc par la relation TK = 273 + Tc.

Cours de NGAN BAKINDE P a g e 13 | 15


Ecrire un programme C qui admet en donnée la température exprimée dans l’échelle
Farenheit et renvoie en résultat la même température exprimée en degrés Kelvin.

Exercice 2 :
1. Ecrire un programme C qui pour deux entiers donnés, affiche le maximum.
2. Ecrire un programme C qui lit trois entiers A, B, et C et affiche le max et le min.
3. Développer un programme C qui permet de résoudre l’équation ax + b = 0.
4. Développer un programme C qui permet de résoudre l’équation ax2 + bx + c = 0
Exercice 3 : Ecrire un programme C qui permet de lire la moyenne d’un étudiant, de
type réel, et d’afficher la mention correspondante en utilisant la structure sachant que
:
Moy< 10 : « Non admis »
10 >= Moy< 12 : « Passable »
12 >= Moy< 14 : « Assez Bien »
14 >= Moy< 17 : « Bien »
17 >= Moy< 18 : « Très Bien »
18 >= Moy< 20 : « Excellent »
Moy = 20 : « Parfait »

Exercice 4: Ecrire un programme C qui simule le fonctionnement d’une calculatrice


ayant lesopérations suivantes (+, -, /, *) La forme d’une opération est : opérande1
opérateur opérande2

Exercice 5 : On désire calculer le montant de la facture d’électricité d’un abonné


sachant quel’abonné :
1. Paye 780 Frs (frais d’abonnement) même s’il n’a rien consommé.
2. Paye sa consommation selon un tarif à tranches :
a. 79 Frs, par KWh, pour les 100 premiers KWh
b. 125Frs , par KWh, pour les 150 KWh suivants
c. 220Frs , par KWh, pour la fraction de consommation qui excède 250 KWh
3. Paye la TVA pour un taux de 19.25%.
Ecrire un programme C qui lit deux valeurs entières : l’ancien index et le nouvel index
pourdéterminer la consommation d’électricité en KWh et affiche le montant à payer
hors taxe et lemontant toutes taxes comprises.
N. B : La consommation est mesurée en KWh.
Consommation en KWh = nouvel index - ancien index
Montant toutes taxes comprises = montant hors taxe * (1 + TVA)

Exercice 6 :

1. Ecrire un programme C qui permet de lire deux entiers et de calculer leur produit
par additions successives.
2. Ecrire un programme C qui lit un nombre entier N et affiche sa table de
multiplication

Cours de NGAN BAKINDE P a g e 14 | 15


Exemple : Pour N = 5, l’algorithme affiche :
5 x0 =0
5 x1 =5
5 x 2 = 10
5 x 3 = 15

5 x 10 = 50
3. Soit la suite Un définie par : U0 = 1 Un+1 = 5 Un + 3
Ecrire un programme C qui permet de lire n et de calculer la suite Un pour un rang n.

Cours de NGAN BAKINDE P a g e 15 | 15

Vous aimerez peut-être aussi