04C TP1 ProgrammationC 1415
04C TP1 ProgrammationC 1415
04C TP1 ProgrammationC 1415
TP 1
1. Mise ne place de lespace de travail
Tlcharger le fichier http://priimaths.free.fr/lynsli/IMG/zip/TP_C.zip
le dcompresser dans votre espace de travail. Ce rpertoire contient les fichiers indispensables pour le bon
droulement de vos TP : ne les supprimer pas, ne les modifier pas,
Tous vos programmes doivent sauvegarder dans ce rpertoire
Lancer geany, puis ouvrir un nouveau fichier
Taper le programme ci-contre :
#include <stdio.h>
Remarque :
int main(){
\n : new line
printf("Salut tout le monde !\n");
\t : tabulation
return 0;
\b : backspace
}
Enregistrer le programme sous le nom programme_poli.c
cliquer successivement sur
Le rsultat du votre programme sera afficher dans la console :
Remarquez le code de sortie de votre programme.
Question
Ecrire un
programme qui
affiche
Modifier votre
programme pour
affiche r
Remarque
1.
Question
Quelle est le type derreur indique dans le message ci-dessus ?
/* -------------------------------------------------------------------------------------------------------|
* Programme : 01exemple_ggraphique (version 01)
*
* Auteur : le corbu , Date : 20/11/14
*
* ------------------------------------------------------------------------------------------------------- */
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
1. Tester ce programme
2. Commenter les lignes 10,11 et 12.
3. Modifier ce programme de sorte afficher un triangle rectangle dont les trois cts sont de couleurs
diffrentes.
a. Dclaration et initialisation.
Rappel :
les diffrents types simples de donnes dfinis
dans le langage C
Pour les format daffichage voir lannexe
Dautres types plus complexes seront abords
ultrieurement
Exercices
Exercice 1
a. Commenter le programme ci-dessous
int main(){
int a , c ;
a=2;
b=3 ;
printf("La valeur de a est %d, la valeur de b est %d \n",a,b,c) ;
b=a ;
a=b ;
printf("La valeur de a est %d, la valeur de b est %d \n",a,b,c) ;}
3/5
Exercice 2
On considre le programme ci-dessous
int main()
{double ht, ttc, taux;
taux=19.6 ;
printf ("Entrer le prix hors taxe : ") ;
scanf("%lf", &ht);
ttc = ht + ht * taux / 100;
printf("Le prix toutes taxes comprises est %.2lf\n",ttc);
}
4/5
Annexe
La fonction printf est utilise pour transfrer du texte, des valeurs de variables ou des rsultats d'expressions vers le fichier de sortie standard stdout (par dfaut
l'cran). Ecriture formate en C : printf("<format>",<Expr1>,<Expr2>, ... )
type de C
int
short int
long int
unsigned int
format
%d
%hd
%ld
%u
%hu
%lu
%o
%ho
%lo
%x
%hx
%lx
%f
%lf
%Lf
%e
%le
%Le
char
char *
chane de caractres
%s
float
double
long double
Exemples
#include <stdio.h>
main()
{
int i = 23674;
int j = -23674;
long int k = (1l << 32);
double x = 1e-8 + 1000;
char c = 'A';
char *chaine = "chaine de caracteres";
printf("impression de i: \n");
printf("%d \t %u \t %o \t %x",i,i,i,i);
printf("\n impression de j: \n");
printf("%d \t %u \t %o \t %x",j,j,j,j);
printf("\n impression de k: \n");
printf("%d \t %o \t %x",k,k,k);
printf("\n%ld \t %lu \t %lo \t %lx",k,k,k,k);
printf("\n impression de x: \n");
printf("%f \t %e \t %g",x,x,x);
printf("\n%.2f \t %.2e",x,x);
printf("\n%.20f \t %.20e",x,x);
printf("\n impression de c: \n");
printf("%c \t %d",c,c);
printf("\n impression de chaine: \n");
printf("%s \t %.10s",chaine,chaine);
printf("\n");
%g
%lg
%Lg
%c
5/5
Programmation Le langage C
TP 2
a. La mmoire
Un ordinateur utilise de la mmoire vive (RAM, Random Access Memory) pour stocker des informations pendant
son fonctionnement. Cette mmoire est alloue ou libre pour de nouvelles informations aussi souvent que
ncessaire.
La quantit de mmoire vive installe sur chaque ordinateur est variable. On lexprime en multiples doctets
(mgaoctets ou gigaoctets). Si autrefois la mmoire tait compte, nos ordinateurs disposent aujourdhui de
mgaoctets, voire de gigaoctets, et les programmeurs ont la fcheuse tendance lutiliser sans compter. Voici
quelque exemples de tailles
Donne
Le caractre x
Le nombre 500
Le nombre
La phrase "japprends le C"
Une page de manuel
La mmoire RAM est sollicite de faon squentielle et chaque octet est identifi par une adresse unique gre
automatiquement par votre compilateur.
b. Les variables
Une variable est le nom dune zone mmoire de votre ordinateur. En utilisant ce nom dans votre programme, vous
adressez la donne qui y est stocke.
A retenir : Les noms de variable doit
contenir des lettres, des chiffres.
Le premier caractre doit tre une lettre. Le caractre ( ) est aussi autoris, mais dconseille.
Les lettres majuscules sont diffrentes des minuscules. Par exemple, compte et Compte ne reprsentent
pas la mme variable.
Il ne faut pas utiliser les mots cls, ils font partie du langage C.
Utiliser des noms de variables mnmotechniques. Se fixer une convention pour les noms de variables.
6/5
Mot cl
char
short
int
long
unsigned char
unsigned short
unsigned int
unsigned long
float
Octets
ncessair
es
1
2
4
4
1
2
4
4
4
Caractre
Entier court
Entier
Entier long
Caractre non sign
Entier court non sign
Entier non sign
Entier long non sign
Simple prcision virgule
flottante
Double prcision virgule
flottante
double
128 127
32 768 32 767
2 147 483 648 2 147 438 647
2 147 483 648 2 147 438 647
0 255
0 65 535
0 4 294 967 295
0 4 294 967 295
1,21038 3,4 1038 (prcision 10-7 prs)
Remarque
La prcision dune variable dpend du type de votre matriel. Sur un ancien systme 16 bits, long et int nont pas
la mme taille.
La commande sizeof() permet de donner la taille dune variable.
Exemple :
Exercice
Ecrire un programme qui affiche la taille de chacune de type des variables du tableau 2.
Remarque
On peut crer un synonyme pour un type de donne existant. Par exemple, dans mon programme je veux utiliser
entier au lieu de int . Pour cela on utilise le mot cl typedef :
7/5
d. Les constantes
Une constante est un emplacement mmoire utilis par votre programme. linverse dune variable, la valeur
stocke dans une constante ne peut changer pendant lexcution du programme. Le langage C possde deux types
de constantes qui ont chacune un usage spcifique.
Les constantes littrales
Une constante littrale est une valeur qui est introduite directement dans le code source. Voici deux exemples :
int count = 20;
float tax_rate = 0.28;
Deux intrts :
Instructions facile comprendre
Lorsque jai besoin de modifier la valeur de PI, je le ferai une seule fois.
Comment ?
commande
#define PI 3.14159
const float PI = 3.14159;
Commentaire
pas de ;
8/5
9/5
Exercice 1.
a. Que se passera-t-il si jessaye de stocker un nombre dcimal dans un entier ?
b. (i) quaffichera le bout de programme
unsigned short var=-1 ;
printf("La valeur de var est %hu \n",var) ;
(ii) le tester, puis expliquer
1.
2.
3.
4.
Exercice 2 .
Quel type de variable convient le mieux pour stocker les valeurs suivantes :
a. Lge dune personne.
b. Le poids dune personne.
c. Le rayon dun cercle.
d. Votre salaire annuel.
e. Le prix dun article.
f. La note la plus haute dun test (supposons que ce soit toujours 100).
g. La temprature.
h. Le gain dune personne.
i. La distance dune toile en kilomtres.
Donnez un nom appropri chaque variable de lexercice 1.
crivez les dclarations pour les variables de lexercice 2.
Dans la liste suivante, quels sont les noms de variable corrects ?
a. 123variable.
b. x.
c. score_total.
d. Poids_en_#s.
e. one.0.
f. gross-cost.
g. RAYON.
h. Rayon.
i. rayon.
j. cela_est_une_variable_pour_stocker_la_largeur
Symbole
+
*
/
%
Opration
Additionne les deux oprandes
Soustrait la valeur du second oprande la valeur du premier
Multiplie les deux oprandes
Divise le premier oprande par le second
Donne le reste de la division du premier oprande par le second
Exemple
x+y
x- y
x*y
x/y
x%y
10/
5
Exemple
Symbole
++
Opration
Augmente de 1 la valeur de loprande
Exemples
++x, x++
Dcrmentation
--
--y , y--
++x
x = x + 1; y
y = y 1;
11/
5
Exemple
Symbole
==
>
<
>=
Infrieur ou gal
<=
Diffrent
!=
Question pose
Le premier oprande est-il gal au second ?
Le premier oprande est-il plus grand que le second ?
Le premier oprande est-il plus petit que le second ?
Le premier oprande est-il suprieur ou gal au
second ?
Le premier oprande est-il infrieur ou gal au
second ?
Le premier oprande est-il diffrent du second ?
Exemple
x == y
x>y
x<y
x >= y
x <= y
x != y
Signification
La valeur 5 est-elle gale 1 ?
5 est-elle plus grande que 1
La valeur 5 est-elle diffrente de 1 ?
Lexpression (5 + 10) est-elle gale (3 * 5) ?
Valeur
faux
? vrai
vrai
vrai
12/
5
En C
If (Delta >=0)
{ printf(le trinome a au moins une
racine)}
Else {printf(le trinome nadmet pas de racine)}
Syntaxe :
En algorithmique
Si condition alors
instruction1(s)
Sinon
instruction2(s)
FinSi
En C
if (condition)
{instruction1(s) ;}
else
{instruction2(s) ;}
Remarque.
1. Pour crire une condition, on dispose des relations mathmatiques habituelles :
Symbole mathmatique
=
<
>
criture en C
==
!=
<
>
<=
2. On peut tester plusieurs conditions simultanment.
operateur logique
Notation
Exemple
si
&&
if ((a>0) && (b<0)) { instructions}
ou
||
if ((a>0) || (b<0)) { instructions}
ngation
!
if( !(a>0)) {instructions}
>=
13/
5
Un exemple graphique
Exemple Bataille navale
Exercices
Exercice 1.
Exercice 2.
Ecrire un algorithme max2 et un programme max2.c qui retourne le maximum de deux nombres
rels donns par lutilisateur.
14/
5
Exercice 3.
Ecrire un algorithme discriminant et un programme discriminant.c qui calcule le discriminant dun
trinme de second degr.
Exercice 4. Clic 1
1. Afficher une ligne verticale en blanc qui spare lcran en deux parties gales.
2. Attendre un clic de lutilisateur. Si le clic est gauche de la ligne afficher un cercle bleu et sil
est droite afficher un cercle rouge.
Dans les deux cas, le cercle devra tre centr l o lutilisateur a cliqu.
Exercice 5. Clic 2
1. Afficher une ligne verticale en blanc qui spare lcran en deux parties gales.
2. Attendre un clic de lutilisateur. Si lutilisateur clique droite de la ligne, afficher un cercle bleu
la mme ordonne mais gauche de lcran (abscisse au choix) et vice versa (si le clic est
gauche, afficher le cercle droite).
15/
5
Programmation Le langage C
TP 3
Remarque Importante
Les exemples de ce TP comme pour les TP prcdents servent illustrer et exprimenter les techniques de
programmation C abordes. Vous devez les saisir et les excuter, puis manipuler ventuellement le code pour
trouver dautres applications. Ces sections sont destines lexprimentation.
en C : : if (condition) {instruction;}
A noter
Un else se rapporte toujours au dernier if rencontr auquel un else na pas encore t attribu.
Exemple :
if ( condition1 ) {
if ( condition1 )
if ( condition2 )
instruction1;
else
if ( condition2 )
instruction1;
else
instruction2;
instruction2;
if ( condition1 )
instruction1;
else {
if ( condition2 )
instruction2;
else
instruction3;
}
if ( conditions 1 )
{instructions 1;}
else if ( conditions 2 )
{instruction2;}
else
{instructions 3;}
16/
5
Exemple
#include <stdio.h>
#define TAUX_TVA 19.6
int main() {
float ht, ttc, net, tauxr, remise ;
printf("donnez le prix hors taxes : ") ;
scanf ("%f", &ht) ;
ttc = ht * ( 1. + TAUX_TVA/100.) ;
if ( ttc < 1000.) tauxr = 0 ;
else if ( ttc < 2000 ) tauxr = 1. ;
else if ( ttc < 5000 ) tauxr = 3. ;
else tauxr = 5. ;
remise = ttc * tauxr / 100. ;
net = ttc - remise ;
printf ("prix ttc %10.2f\n", ttc) ;
printf ("remise %10.2f\n", remise) ;
printf ("net a payer %10.2f\n", net) ;
}
Symbole
&&
OU
||
NON
Description
exp1 && exp2 (Vraie si exp1et exp2
vraies. Sinon faux )
exp1 || exp2 : Vraie si exp1vraie ou
exp2vraie. Faux si les deux
expressions sont fausses.
!exp1 : Faux si exp1est vraie. Vraie si
exp1est fausse.
Exemple
if ( x<1 && x>0)
{printf(" %f est compris entre 0 et 1 ",x) ; }
if ( x<1 || x>0)
{printf(" %f est un rel" ,x) ; }
if (x !=0)
{printf(" %f est non nul " ,x) ; }
Valeur
Vraie, car les deux oprandes sont vrais
Vraie, car un oprande est vrai
Faux, car un oprande est faux
Vrai, car loprande est faux
17/
5
Exercice
crivez une instruction if pour savoir si une personne est un adulte (21 ans), mais pas
une personne ge (65 ans).
Exercice
Corrigez le programme ci-contre.
exit(EXIT_SUCCESS)
}
b) Choix Multiple
Lorsque plusieurs alternatives se prsentent. L'imbrication est peu recommande.
En pseudo code
En C
switch ( expression )
{
case val1 : instruction1.1;
instruction1.2;
case val2 instruction2;
case val3 :
case val4 : instruction4.1;
instruction4.2;
default : instructionD ;
}
Remarque
Dans le cas o aucune valeur satisfaisante naura t rencontre auparavant, le programme se branchera sur
Ltiquette default
18/
5
main(){
Exemple
Excuter ce programme
R-excuter ce programme sans linstruction
break . Interprter !
int n ;
printf ("donnez un entier : ") ;
scanf ("%d", &n) ;
switch (n) {
case 0 : printf ("zero \n") ;
break ; //sortie forc de switch
case 1 : printf ("un\n") ;
break ;
case 2 : printf ("deux\n") ;
break ;
default : printf ("au revoir\n") ;
break ;
}
Remarque
c) Boucles (Itration)
Itrer :
Refaire plusieurs fois le mme traitement sur un objet
Faire des actions sur plusieurs objets identiques
Modifier les objets sur lesquels l'action est rpte
Exemples :
Afficher n fois le mme caractre
Calculer la somme des n premier entiers
Il faut donc exercer un contrle sur les instructions pour :
Recommencer au bon endroit
Compter le nombre d'itration et donc tre capable de
dterminer si oui ou non on doit recommencer
..
for (
En C
for ( initialisation ; condition ; in(d)crmentation )
{
instruction1;
instruction2;
}
{printf(%d, );}
for (
;
;
{ printf(%d, );}
.
) //
) //
19/
5
..
for (i=1 ; i <=10 ; i+=2) // i+=2 i=i+2
{ printf(%d, );}
..
Exercice
1) Ecrire un seul programme, qui affiche les rsultats des deux exemples prcdents ?
2) Le modifier pour afficher les 100 multiples de 7 suprieurs 10
Exercice
3) Quaffiche le programme ci-contre
4) Le modifier pour afficher ::
#include <stdio.h>
int main()
{ int i,j;
for (i=1 ; i <=10 ; i++)
{
printf("\n");
for (j=1;j< i ; j++)
printf("*");
}
printf("\n");
}
Exercice
1. Afficher une ligne verticale en blanc qui spare lcran en deux parties gales.
2. Attendre un clic de lutilisateur. Si lutilisateur clique droite de la ligne, afficher 10 cercle bleu
concentrique de rayon multiple de 20 la mme ordonne mais gauche de lcran (abscisse
au choix) et vice versa (si le clic est gauche, afficher les cercles droite).
Exercice
1) Ecrire un programme qui calcule la somme des 100 premiers entiers naturels :
2)
3)
4)
5)
.
.
un rel fourni en
20/
5
EXEMPLE
TantQue i<10 faire
aa*i
i i+1
FinTantQue
En C
while ( condition ){
instruction1;
instruction2 ; }
int main(){
int i=0,a=2;
while (i<10) {
a=a*i;
i=i+1 ;
initialisation ;
while (condition)
{
instruction
in(d)crmentation;}
Exemple.
avec for
main()
{
int i ;
for ( i=1 ; i<=5 ; i++ )
{ printf ("bonjour ") ;
printf ("%d fois\n", i) ;
}
}
Boucle faire ... tant que
Pseudo code
Rpter
{instructions}
Tant que condition
n : entier
Faire {lire n ;
afficher " vous avez fourni n ", n
}
tanque (n0)
avec while
main()
{
int i ;
i=1;
while (i<=5){
printf ("bonjour ") ;
printf ("%d fois\n", i) ;
i++ ; }
}
En C
do {
instruction1;
instruction2;
} while ( condition );
main()
{
int n ;
do{
printf ("donnez un nb >0 : ") ;
scanf ("%d", &n) ;
printf ("vous avez fourni %d\n", n) ;
}
while (n<=0) ;
printf ("rponse correcte") ;}
21/
5
Exercice
Quaffiche le programme ci-contre
Le modifier pour afficher le numro de lafffichage
Exercice
Exercice
i = 1;
while (i < 10)
{
printf("\n cuicui ");
i++;
}
int a;
do
{
printf("\n Entrez un entier entre 1 et 10 : ");
scanf("%d",&a);
}
while ((a <= 0) || (a > 10));
#include <stdio.h>
main() {
int i, n, sum ;
sum = 0 ;
for (i=0 ; i<4 ; i++)
{ printf ("donnez un entier ") ;
scanf ("%d", &n) ;
sum += n ;
}
printf ("Somme : %d\n", som) ;
}
22/
5
Commentaire
wait_escape()
on attend un escape :
fill_screen(COULEUR color);
Affichage un pixel
Dessine un segment
Dessine un triangle
write_text(char *a_ecrire)
write_int(int n)
24/
5