Vous êtes sur la page 1sur 2

1

______________________________________________________________________________________________________________
cole Prparatoire en Sciences et Techniques Architecture des systmes informatiques
2012/2013 1
re
anne, 2
me
semestre
TP 1 Initiation langage C
_________________________________________________________________________

L'objectif de ce TP est dinitier ltudiant lcriture dun programme C. (affectation, instruction if else, entres/sorties
clavier/cran, boucles while et for).
Prsentation de lenvironnement de travail
Outils pour la programmation en C
Les sances de TP langage C se droulent sur des machines fonctionnant sous LINUX.
Lcriture, la compilation, la mise au point et lexcution dun programme C font appel diffrents outils.
Les instructions du programme doivent tre rentres comme un texte normal dans un fichier laide dun diteur de texte. On
parle de programme source. Le fichier contenant un programme source doit comporter lextension .c (Ex: prog.c).
Ce fichier source doit ensuite tre compil pour crer un excutable (fichier binaire) ou un fichier objet (dextension .o). Ceci est
fait en utilisant un compilateur.
Lexcution du programme consiste tout simplement taper son nom dans une fentre du terminal.
Ces outils (traitement de texte et compilateur) seront lancs partir dune fentre du terminal sous la forme de commandes.
dition du programme
Lditeur de textes utilis est gedit. Pour le lancer: taper gedit & dans la fentre du terminal (ou trouver la commande dans le
menu gnral).
Attention: tout programme source devra tre sauv en lui donnant lextension .c, par exemple programme.c.
Compilation
Le compilateur C utilis sera un compilateur GNU: gcc.
Pour compiler, par exemple, le programme programme.c on tapera la ligne suivante:
gcc -Wall -g -o programme programme.c -lm
Si tout ce passe bien, lexcutable programme sera cr et pourra tre lanc en tapant ./programme dans la fentre du terminal.
Exercice 1
crire un programme affichant a lcran un message de bienvenue (Hello World). Le compiler puis lexcuter.
Exercice 2
crire un programme qui dtermine si un entier saisi est pair ou impair.
Exercice 3
3.1 Le calcul des racines dune quation du second degr du type ax
2
+bx+c = 0 se fait en calculant dabord son discriminant =
b
2
4ac.
crire un programme permettant de calculer et dafficher sa valeur lcran pour des valeurs fixes de a,b et c.
3.2 Complter le programme prcdent de manire pouvoir rentrer les valeurs de a, b et c au clavier. Compiler et tester.
3.3 Calculez et afficher les solutions de lquation dans le cas ou > 0. (x1= (b +)/2a et x2= (b )/2a)
3.4 Traiter les cas = 0 (1 racine double: x = b/2a) et < 0 (2 racines complexes conjugues:
x1= b/2a+j()/2a) et x2b/2aj()/2a)). Pour les racines complexes on affichera les parties relles et imaginaires.
Exercice 4
crire un programme qui affiche les codes ASCII des lettres et des chiffres sous la forme suivante:
caractre = A code = 65 code hexa = 41
caractre = B code = 66 code hexa = 42
. . .
caractre = 1 code = 49 code hexa = 31
. . .
caractre = 9 code = 57 code hexa = 39
2

Exercice 5
crire un programme qui affiche le plus grand et le plus petit dune suite dentiers saisis. Les nombres saisis ne sont pas conservs
en mmoire. La suite se termine avec la valeur 0.
Exercice 6
On dsire crire un programme dont le rle est de calculer la moyenne de N notes rentres au clavier. Lutilisateur doit fournir le
nombre N de notes puis la liste des N notes la suite de quoi le rsultat (moyenne des N notes) doit safficher lcran. Le
nombre maximal de notes est fix 100.
Que se passe-t'il si lutilisateur rentre dabord la valeur 0? Proposer une solution pour tenir compte de ce cas.

NB
La fonction printf permet dcrire lcran des chanes de caractres et des donnes numriques.
Sa syntaxe est la suivante:
int printf(char *format, arg1, arg2, arg3, ...)
Elle admet un nombre quelconque darguments.
char * format est une chane de caractres qui contrle le format daffichage des arguments de printf. Elle contient des caractres
ordinaires affichs tels quels lcran et des spcifications de conversion dont chacune porte sur un argument de printf. Ces
spcifications commencent par le caractre % et se terminent par un caractre de conversion.
Les principaux caractres de conversion sont:
d ou i pour un entier (x pour afficher un entier en hexadcimal).
c pour un caractre.
s pour une chane de caractres.
f pour un rel en virgule fixe
e pour un rel en notation scientifique
Entre le % et le caractre de conversion on peut rajouter (dans lordre):
Le signe - pour cadrer largument gauche
Un nombre qui prcise la largeur minimale du champ dimpression.
un point suivi dun nombre qui prcise le nombre de chiffres aprs la virgule afficher (pour un rel).
la lettre l pour un long int ou h pour un short int

La fonction scanf fournit des possibilits de conversions semblables printf mais pour des entres. Sa syntaxe est:
int scanf(char *format, &arg1, &arg2, &arg3, ...)
Les arguments (autres que format) de scanf doivent tre des adresses de variables (ou des pointeurs).
La chane de caractres format contient les spcifications de conversion qui indiquent comment interprter les valeurs rentres. A
chaque argument de scanf doit correspondre une spcification de conversion constitue du caractre % suivi dune lettre.
d ou i pour un entier sous forme dcimale (int)
u pour un entier non sign
ld ou li pour un entier long (long int)
hd ou hi pour un entier court (short int)
x pour un entier sous forme hexadcimale
e, f ou g pour un rel simple prcision (float)
lf, le ou lg pour un rel double prcision (double)
c pour un caractre
s pour une chane de caractres

La fonction sqrt calcule la racine carre d'un nombre rel.