38
Ministère de lenseign Institut Supér Ayadi walid [email protected] Atelier Li C C C C C C nement supérieur et de la recherche rieur des études technologiques de R épartement Génie mécanique Version 10/09/13 programmatio langage C icence appliquée en génie mécani Première année, semestre1 Unité informatique Module : Atelier C C C C e scientifique Rades on en ique C C C C

TP programmation en langage C

Embed Size (px)

DESCRIPTION

travaux pratiques d'introduction à la programmation en langage c, pour être capable de traduire un algorithme simple en C 1-Les instructions de base 2-les conditions et les boucles 3-les tableaux 4-Les fonctions et procédures

Citation preview

Page 1: TP programmation en langage C

Ministère de l’enseignement supérieur et

Institut Supérieur des études technologiques de Rades

Département Génie mécanique

Ayadi walid [email protected]

Atelier programmation en

Licence

C C C

C C C

enseignement supérieur et de la recherche scientifique

Institut Supérieur des études technologiques de Rades

Département Génie mécanique

Version 10/09/13

Atelier programmation en

langage C

icence appliquée en génie mécanique

Première année, semestre1

Unité informatique

Module : Atelier

C C

C C

de la recherche scientifique

Institut Supérieur des études technologiques de Rades

Atelier programmation en

appliquée en génie mécanique

C C

C C

Page 2: TP programmation en langage C

Version 10/09/2013

TP1 Les instructions de base

http://youtu.be/QF9z9Awtm1o

http://youtu.be/oL0eB0FuaEE

http://www.youtube.com/watch?v=kukKa9Rtnho&feature=relmfu

http://www.youtube.com/watch?v=5PawS09cosE

http://www.youtube.com/watch?v=xUSN5X09cC0

http://www.youtube.com/watch?v=PQjvo3zEX

https://docs.google.com/file/d/0B7wNDg3DekVhWkNWLWlMNk5mQU0/ed

it?usp=sharing

http://my.questbase.com/take.aspx?pin=2319

TP1 Les instructions de

base

1.1. Déclaration des variables

[email protected]

Déclaration des variables

http://youtu.be/QF9z9Awtm1o

http://youtu.be/oL0eB0FuaEE

http://www.youtube.com/watch?v=kukKa9Rtnho&feature=relmfu

http://www.youtube.com/watch?v=5PawS09cosE

http://www.youtube.com/watch?v=xUSN5X09cC0

http://www.youtube.com/watch?v=PQjvo3zEX-A

https://docs.google.com/file/d/0B7wNDg3DekVhWkNWLWlMNk5mQU0/ed

http://my.questbase.com/take.aspx?pin=2319-0517-5922

Les instructions de

base

1.1. Déclaration des variables

1.2. Affectation

1.3. Ecriture

1.4. Lecture

[email protected]

2 Déclaration des variables

https://docs.google.com/file/d/0B7wNDg3DekVhWkNWLWlMNk5mQU0/ed

Les instructions de

Page 3: TP programmation en langage C

Version 10/09/2013

TP1 Les instructions de base

1.1. Déclaration des variables

• Syntaxe

Algorithme

VAR <nom de var> :<type>

C

<type de variable> <nom de variable

Exemple 1

Algorithme

VAR a : entier

C

int a ;

• Exemple 2

Algorithme

VAR

a,b,c :entier

montant : réelle

premiere_lettre :caractère

resultat :booléenne

C

int a,b,c;

float montant;

char premiere_lettre;

int resultat;

• Les types de variables

Type

entier

booléen

réelle

caractère

http://www.youtube.com/watch?v=kukKa9Rtnho&feature=relmfu

[email protected]

Déclaration des variables

Déclaration des variables

<type de variable> <nom de variable, nom de variable,…>;

premiere_lettre :caractère

resultat :booléenne

premiere_lettre;

Les types de variables

En C exemple

int -32768 à 32767

int La variable est considérée

elle est égale à 0, Sinon (vrai)

float 2.05452 -1.5

char ‘Z ‘ ‘z’ ‘a’ ‘A’ ‘1’

http://www.youtube.com/watch?v=kukKa9Rtnho&feature=relmfu

[email protected]

3 Déclaration des variables

La variable est considérée (faux)quand

Sinon (vrai)

‘Z ‘ ‘z’ ‘a’ ‘A’ ‘1’

Page 4: TP programmation en langage C

Version 10/09/2013

TP1 Les instructions de base

1.2. Expressions et affectation

• Syntaxe

Algorithme

<nom de variable cible> � <nom de variable ou expression>

C

<nom de variable cible>=<nom de variable ou expression>;

• Exemple 1

Algorithme

a�10

a�a+1

b�(a*10-1)/3

C

a=10 ;

a=a+1 ;

b=(a*10-1)/3 ;

• Opérateurs arithmétiques

Arithmétiques

+ : addition

- : soustraction

/ : division

MOD : modulo reste de la

division

* : multiplication

Attention, il ne faut pas confondre l’opérateur logique == (égale à) avec

l’instruction d’affectation =

http://youtu.be/kukKa9Rtnho?t=7m48s

[email protected]

Déclaration des variables

1.2. Expressions et affectation

<nom de variable ou expression>

<nom de variable cible>=<nom de variable ou expression>;

arithmétiques

En C Logique

+ <

- ≤

/ >

% ≥

* =

ET &&

OU ||

NON

Attention, il ne faut pas confondre l’opérateur logique == (égale à) avec

l’instruction d’affectation =

http://youtu.be/kukKa9Rtnho?t=7m48s

[email protected]

4 Déclaration des variables

En C

<

<=

>

>=

==

!=

(touche 1 du clavier)

(touches : AltGr+6)

!

Attention, il ne faut pas confondre l’opérateur logique == (égale à) avec

Page 5: TP programmation en langage C

Version 10/09/2013

TP1 Les instructions de base

1.3. ECRITURE

• Permet d’afficher un message sur écran

Printf("Hello Word!");

• Syntaxe

Algorithme

ECRIRE (<variable ou expression ou "chaine de caractère"

C

printf("<chaine de caractère à afficher>

• Exemple 1

Algorithme

VAR a : entier

DEBUT

a�10

ECRIRE(a)

FIN

C

int a ; a=10; printf("%d ",a);

• Manipulation1

1. Ecrire le code ci-dessous

C

print f("Bonjour je m’appelle Walid")

2. Modifier le message en ajoutant

précédent

C

print f("Bonjour \ nje m’appelle Walid")

3. Déduire l’action de \n

http://www.youtube.com/watch?v=5PawS09cosE

[email protected]

Permet d’afficher un message sur écran

Printf("Hello Word!");

ou expression ou "chaine de caractère">);

<chaine de caractère à afficher>" , <nom de variable ou expression>);

et voir le résultat

f("Bonjour je m’appelle Walid") ;

Modifier le message en ajoutant \n après le mot Bonjour et comparer le résultat avec le

nje m’appelle Walid") ;

http://www.youtube.com/watch?v=5PawS09cosE

[email protected]

Ecriture - printf 5

et comparer le résultat avec le

Page 6: TP programmation en langage C

Version 10/09/2013

TP1 Les instructions de base

• Manipulation2

1. Ecrire le code ci-dessous

2. Compiler le programme

3. Changer la valeur 2 par 10 puis par 10.5 et voir le résultat de la compilation

4. Déduire l’action de %d

5. Changer %d par %f et voir la valeur affichée

C

printf("La valeur de a=%d",2);

http://www.youtube.com/watch?v=xUSN5X09cC0

• Manipulation3

1. Ecrire le code ci-dessous

2. Compiler le programme

3. Déduire l’ordre d’affectation des %d

C

int a;

a=5;

printf("La valeur de %d*%d=%d",a,10,a*10);

http://www.youtube.com/watch?v=PQjvo3zEX

[email protected]

Changer la valeur 2 par 10 puis par 10.5 et voir le résultat de la compilation

et voir la valeur affichée

printf("La valeur de a=%d",2);

http://www.youtube.com/watch?v=xUSN5X09cC0

Déduire l’ordre d’affectation des %d

printf("La valeur de %d*%d=%d",a,10,a*10);

http://www.youtube.com/watch?v=PQjvo3zEX-A

[email protected]

Ecriture - printf 6

Changer la valeur 2 par 10 puis par 10.5 et voir le résultat de la compilation

Page 7: TP programmation en langage C

Version 10/09/2013

TP1 Les instructions de base

• Syntaxe:

printf("<chaine

• comporte une seule chaine de caractère entre

• Dans la chaine on peut utiliser des

\n : fait un retour à la ligne

%d : remplace une valeur de type entier

%f : remplace une valeur de type réelle

%c : remplace un caractère

Et il y en a d’autre…

http://www.youtube.com/watch?v=kukKa9Rtnho&feature=relmfu

http://www.youtube.com/watch?v=5PawS09cosE

http://www.youtube.com/watch?v=xUSN5X09cC0

http://www.youtube.com/watch?v=PQjvo3zEX

[email protected]

Mémo printf

<chaine de caractère>",<variable ou expression>);

chaine de caractère entre " "

Dans la chaine on peut utiliser des caractères spéciaux qui ne s’affichent pas

une valeur de type entier

remplace une valeur de type réelle

http://www.youtube.com/watch?v=kukKa9Rtnho&feature=relmfu

http://www.youtube.com/watch?v=5PawS09cosE

http://www.youtube.com/watch?v=xUSN5X09cC0

http://www.youtube.com/watch?v=PQjvo3zEX-A

[email protected]

Mémo - printf 7

);

comme:

Page 8: TP programmation en langage C

Version 10/09/2013 [email protected]

Mémo - scanf TP1 Les instructions de base 8

1.4. LECTURE

scanf Permet de lire une entrée saisie au clavier par

l’utilisateur

• Syntaxe

Algorithme

LIRE (<nom de variable >);

C

scanf(" <type de variable à lire> " ,& <nom de variable> );

• Exemple 1

Algorithme

VAR a : entier

DEBUT

ECRIRE ("donner la valeur de a")

LIRE(a)

FIN

C

{ int a ; printf("donner la valeur de a") ; scanf("%d",&a); }

• Manipulation 4

1. Ecrire le code ci-dessous et voir le résultat

C

int a ; printf("donner un entier a"); scanf("%d",&a); printf("Vous avez entré la valeur %d",a);

2. Compiler le programme et entrer la valeur 10.5, quel est la valeur affiché ?

3. Remplacer %d par %f dans scanf et printf, compiler et entrer la valeur 10.5 (n’oublier pas de

remplacer int a par float a. Déduire

Page 9: TP programmation en langage C

Version 10/09/2013

TP1 Les instructions de base

• Manipulation 5

1. Compléter les zones noircies du

C

float a,b; printf("donner la valeur1 scanf("%f",&a); printf("donner la valeur 2 : scanf("%f",&b); printf("la somme de %f+ printf("la soustraction de %f printf("la multiplication de %fx printf("la division de %f/

• Manipulation 6

1. Editer le code ci-dessous

C

char c1 , c2,c3; printf("donner le premier scanf("%c",&c1); printf("donner le deuxieme caractère scanf("%c",&c2); printf("donner le troisieme caractère scanf("%c",&c3); printf("Le mot est

http://www.youtube.com/watch?v=kukKa9Rtnho&feature=relmfu

• Exercice 1

1. Traduire cet algorithme en C

Algorithme

Algorithme

VAR a, b,reste,quotion: entier

DEBUT

ECRIRE ("donner la valeur

LIRE(a)

ECRIRE ("donner la valeur de b")

LIRE(b)

reste�a MOD b ;

quotion �a DIV b;

ECRIRE (a,"=",b,"x", quotion

FIN

Exemple d’écran

[email protected]

Compléter les zones noircies du code ci-dessous et voir le résultat

printf("donner la valeur1 :");

la valeur 2 : ");

somme de %f+ %f=%f\n",a,b,a+b); soustraction de %f -%f=%f\n",a,b,a+b); multiplication de %fx %f=%f\n",a,b,a*b );

printf("la division de %f/ %f=%f\n",a,b,a/b);

et voir le résultat

printf("donner le premier caractère :");

printf("donner le deuxieme caractère :");

printf("donner le troisieme caractère :");

est :%c%c%c",c1,c2,c3);

http://www.youtube.com/watch?v=kukKa9Rtnho&feature=relmfu

Traduire cet algorithme en C

ECRIRE ("donner la valeur de a")

ECRIRE ("donner la valeur de b")

quotion,"+",reste)

[email protected]

Mémo - scanf 9

);

Page 10: TP programmation en langage C

Version 10/09/2013 [email protected]

Mémo - scanf TP1 Les instructions de base 10

Mémo scanf • Syntaxe:

scanf(" <type de variable à lire> " ,& <nom de variable> );

• Comporte une seule chaine de caractère entre " "

• Dans la chaine on remplace le type de valeur à lire par :

%d : pour lire une valeur de type entier

%f : pour lire une valeur de type réelle

%c : pour lire un caractère

Et il y a d’autre…

Page 11: TP programmation en langage C

Version 10/09/2013 [email protected]

https://docs.google.com/file/d/0B7wNDg3DekVhSGdiejZPZXoyS28/edit?usp

=sharing

http://my.questbase.com/take.aspx?pin=2300-9270-3377

TP2 Les conditions

& les boucles

2.1. Les conditions

2.2. Les boucles :

2.2.1. Boucle POUR

2.2.2. Boucle REPETER… JUSQU’A

2.2.3. Boucle TANTQUE …FAIRE

Page 12: TP programmation en langage C

Version 10/09/2013 [email protected]

Condition SI…SINON (if … else ) TP2 Les conditions & les boucles 12

2.1. La condition SI…SINON

• Syntaxe

Algorithme

SI (<condition logique de teste >) ALORS

Début

<traitement si vrai>

fin

SINON

Début

<traitement si faux>

fin

FIN SI

C

if ( <condition logique de teste >) { <traitement si vrai>; } else { <traitement si faux> ; }

• Exemple 1 :

Algorithme

SI ((a<=12) OU (a=b)) ALORS

Début

a�a+1

fin

SINON

Début

a�a-1

fin

FIN SI

C

if((a<=12)||(a==b))

{

a=a+1;

}

else

{

a=a-1;

}

Page 13: TP programmation en langage C

Version 10/09/2013 [email protected]

Condition SI…SINON (if … else ) TP2 Les conditions & les boucles 13

Attention, il ne faut pas mettre un point virgule ( ;) après les parenthèses de la condition

logique, ceci termine l’instruction conditionnelle

• Manipulation 7

4. Identifier la <condition logique>, <traitement si vrai>, <traitement si faux> de l’algorithme

suivant :

5. Traduire cet algorithme en langage c

6. Modifier votre programme afin de traiter le cas de rachat quand la moyenne est comprise

entre 9.75 et 10

Algorithme résultat

VAR

moy : réel

DEBUT

LIRE (moy)

SI (moy>=10) ALORS

Début

ECRIRE ("Admis")

fin

SINON

Début

ECRIRE ("refuse")

fin

FIN SI

FIN

Page 14: TP programmation en langage C

Version 10/09/2013 [email protected]

Mémo les conditions (if … else) TP2 Les conditions & les boucles 14

Mémo if…else

• Syntaxe if

if ( <condition logique de teste >)

{ <traitement si le test est vrai>; }

Attention, il n’ya pas un point virgule devant les parenthèses de la condition de teste

• Syntaxe if…else

if ( <condition logique de teste >) { <traitement si le test est vrai>; } else { <traitement si le teste est faux> ; }

Page 15: TP programmation en langage C

Version 10/09/2013 [email protected]

15 TP2 Les conditions & les boucles La boucle POUR (for )

2.2. Les boucles

2.2.1. La boucle POUR

Syntaxe

Algorithme

POUR (<initialisation du compteur> ; <condition de répétition> ;<incrémentation du compteur>) FAIRE

<traitement >

Fin POUR

C

for ( <initialisation du compteur> ; <condition de répétition> ; <incrémentation du compteur> ) { <traitement >; }

Attention, il n’ya pas un point virgule devant les parenthèses de la boucle for

Exemple

Algorithme

VAR

i : entier

POUR i de 0 à 10 FAIRE

ECRIRE (i)

Fin POUR

C

int i; for ( i=0 ; i<=10;i++ ) { printf("%d",i) ;

}

Attention aux boucles infinies

Lorsque vous créez une boucle, assurez-vous toujours qu'elle peut s'arrêter à un moment ! Si la

condition est toujours vraie, votre programme ne s'arrêtera jamais !

Page 16: TP programmation en langage C

Version 10/09/2013 [email protected]

16 TP2 Les conditions & les boucles La boucle POUR (for )

Si votre boucle ne s’arrête pas après la compilation, appuyer sur la touche clavier « pause » ou

cliquer par la sourie sur la console pour arrêter le bouclage et fermer la console (X) pour terminer

l’exécution du programme

• Manipulation 8

1. Compléter le programme ci-dessous qui traduit l’algorithme suivant :

Algorithme

VAR

i : entier

POUR i de 0 à 10 FAIRE

SI (i MOD 2=0) ALORS

ECRIRE (i)

FIN SI

Fin POUR

C

int i; printf ( " Les nombres paires <10 sont:\n ") ;

for ( i=0 ; i<=10;i++ ) { if (i%2==0) { printf ( " %d\n ", i ) ;

} }

2. Voir ce qui se passe si on met cette condition de répétition : i>=0

3. Commenter !

4. Modifier votre programme pour qu’il affiche les nombres entiers impairs inférieurs à 20

2.2.2. La boucle REPETER … JUSQU’A

Syntaxe

Algorithme

REPETER

<traitement >

JUSQU'A (<condition d’arrêt> )

C

do

{ <traitement >;

}while( <condition de répétition>);

Page 17: TP programmation en langage C

Version 10/09/2013 [email protected]

Boucle REPETER … JUSQU'A (do…while ) TP2 Les conditions & les boucles 17

Exemple : contrôle de saisi

Algorithme contrôle de saisi

VAR

a : entier

REPETER

ECRIRE (“donner un entier entre 10 et 20”)

LIRE(a)

JUSQU'A ((a>=10) ET (a<=20))

C

int a; do { printf(" donner un entier entre 10 et 20 ") ; scanf( "%d",&a ) ; }while( (a<10)||(a>20) );

La condition d’arrêt de la boucle répéter … jusqu'à dans l’algorithme est transformée en

son complément logique dans la boucle do … while en langage C

• Manipulation 9

1. Compléter le programme ci-dessous qui traduit l’algorithme suivant :

Algorithme

VAR

i : entier

i �0

REPETER

ECRIRE ( i )

i � I + 1

JUSQU'A (i >10)

C

int i; i=0 ; do { printf(" %d", i ) ;

i++; }while( i<=10 );

Page 18: TP programmation en langage C

Version 10/09/2013 [email protected]

Boucle REPETER … JUSQU'A (do…while ) TP2 Les conditions & les boucles 18

2. Placer l’incrémentation du compteur avant le printf. Conclure

3. Que faut –il changer dans ce cas pour pouvoir compter à partir de 0 ?

4. Comparer cette boucle avec la boucle POUR

2.2.3. La boucle TANTQUE…FAIRE

• Syntaxe

Algorithme

TANTQUE (<condition de répétition>) FAIRE

<traitement >

FIN TANTQUE

C

while( <condition de répétition>)

{ <traitement >; }

• Exemple : contrôle de saisi 2

Algorithme contrôle de saisi 2

VAR

a : entier

ECRIRE (“donner un entier entre 10 et 20”)

LIRE(a)

TANTQUE ( (a<10) OU (a>20) )

ECRIRE (“donner un entier entre 10 et 20”)

LIRE(a)

FIN TQ

C

int a; printf(" donner un entier entre 10 et 20 ") ;

scanf( "%d",&a ) ; while( (a<10)||(a>20) ) { printf(" donner un entier entre 10 et 20 ") ; scanf( "%d",&a ) ; }

Attention, il n’ya pas un point virgule devant la condition de la boucle while

Page 19: TP programmation en langage C

Version 10/09/2013 [email protected]

Boucle TANTQUE … FAIRE (do…while ) TP2 Les conditions & les boucles 19

• Manipulation 10

1. Compléter le programme ci-dessous qui traduit l’algorithme suivant :

Algorithme

VAR

i : entier

i�0

TANTQUE (I < 10)

ECRIRE ( i )

i�i+1

FIN TQ

C

int i; i=0 ; while( i<=10 ) { printf(" %d", i ) ;

i++; }

2. Mettez l’incrémentation avant le printf. Conclure

3. Que faut –il changer dans ce cas pour pouvoir compter à partir de 0 ?

4. Comparer cette boucle avec la boucle POUR et la boucle REPETER…JUSQU'A

Page 20: TP programmation en langage C

Version 10/09/2013 [email protected]

Exercices TP2 Les conditions & les boucles 20

EXERCICE 2 : factoriel

1. Traduire l’algorithme suivant en langage C

2. Compiler et voir le résultat pour n=5, puis n=4 puis n=1

3. Essayer le cas de n=0 qui doit donner 1 (0 !=1)

4. Ajouter une condition au programme pour traiter le cas de n=0

5. Ajouter un contrôle de saisi pour que n soit positive et inférieur ou égale à 100

6. Remplacer la boucle POUR par la boucle REPETER…JUSQU'A puis par la boucle

TANTQUE…FAIRE et retraduire le programme

7. Essayer le cas de n=20 ; chercher une réponse

Algorithme factoriel

VAR i,n,F : entier

DEBUT

ECRIRE ("donner un entier :")

LIRE (n)

F�1

POUR i de 1 à n FAIRE

F�F*i

FIN POUR

ECRIRE (F)

FIN

C

………………………………………………………………………………………………………………………………………………………………………………. ………………………………………………………………………………………………………………………………………………………………………………. ………………………………………………………………………………………………………………………………………………………………………………. ………………………………………………………………………………………………………………………………………………………………………………. ………………………………………………………………………………………………………………………………………………………………………………. ……………………………………………………………………………………………………………………………………………………………………………….

EXERCICE 3 : jeu devinette

a) Le principe du jeu

Le principe est le suivant.

8. L'ordinateur tire au sort un nombre entre 1 et 100.

9. Il vous demande de deviner le nombre. Vous entrez donc un nombre entre 1 et 100.

10. L'ordinateur compare le nombre que vous avez entré avec le nombre « secret » qu'il a tiré au

sort. Il vous dit si le nombre secret est supérieur ou inférieur à celui que vous avez entré.

11. Puis l'ordinateur vous redemande le nombre.

12. … Et il vous indique si le nombre secret est supérieur ou inférieur.

13. Et ainsi de suite, jusqu'à ce que vous trouviez le nombre secret.

Page 21: TP programmation en langage C

Version 10/09/2013 [email protected]

Exercices TP2 Les conditions & les boucles 21

Le but du jeu, bien sûr, est de trouver le nombre secret en un minimum de coups.

Voici une « capture d'écran » d'une partie, c'est ce que vous devez arriver à faire :…….

Quel est le nombre ? 50

C'est plus !

Quel est le nombre ? 75

C'est plus !

Quel est le nombre ? 85

C'est moins !

Quel est le nombre ? 80

C'est moins !

Quel est le nombre ? 78

C'est plus !

Quel est le nombre ? 79

Bravo, vous avez trouve le nombre mystere !!!

b) Tirer un nombre au sort

On essaie de générer un nombre aléatoire automatiquement. L'avantage est qu'on peut jouer tout

seul du coup.

Pour générer un nombre aléatoire, on utilise la fonction rand(). Cette fonction génère un nombre au

hasard. Mais nous, on veut que ce nombre soit compris entre MIN=1 et MAX=100

Pour ce faire, on va utiliser la fonction srand depuis la bibliothèque time.h

C srand(time(NULL)); n_secret = (rand() % (MAX - MIN + 1)) + MIN; La première ligne (avec srand) permet d'initialiser le générateur de nombres aléatoires.

L'instruction srand ne doit être exécutée qu'une seule fois (au début du programme). Il faut obligatoirement faire un srand une fois, et seulement une fois. Vous pouvez ensuite faire autant de rand() que vous voulez pour générer des nombres aléatoires, mais il ne faut PAS que l'ordinateur lise l'instruction srand deux fois par programme, ne l'oubliez pas.

Page 22: TP programmation en langage C

Version 10/09/2013 [email protected]

Exercices TP2 Les conditions & les boucles 22

MAX et MIN sont des constantes, le premier est le nombre maximal (100) et le second le nombre minimal

(1). Je vous recommande de définir ces constantes au début du programme, comme ceci :

C constconstconstconst int MAX = 100, MIN = 1;

c) Les bibliothèques à inclure

Pour que votre programme fonctionne correctement, vous aurez besoin d'inclure trois bibliothèques

: stdlib, stdio et time (la dernière sert pour les nombres aléatoires).

Votre programme devra donc commencer par :

C #include <stdio.h> #include <stdlib.h> #include <time.h>

d) Avant de programmer le jeu : 1. Analyser les variables entrées et sorties

Nom de Variable Type Rôle Commentaires

n_secret entier Le nombre secret Entrée clavier

n_joueur entier Le nombre proposé

par le joueur

Entrée clavier

2. Décomposer votre algorithme en grandes parties

Partie 1Partie 1Partie 1Partie 1 :::: Affecter une valeur à n_secret entre 1 et 100

Partie 2Partie 2Partie 2Partie 2 ::::

Répéter de

Demander au joueur un nombre et dit lui sisisisi c’est plus ou moins par rapport la valeur secrète

Jusqu’à ce qu’il tombe sur la bonne valeur

3. Ecrire votre idée en algorithme (je vous propose cette solution que vous devrez le

compléter)

Algorithme jeu devinette

VAR n_secret, n_joueur : entier

DEBUT

n_secret � RANDOM(1..100) REPETER

ECRIRE ("Quel est le nombre ?:")

LIRE (n_joueur )

Page 23: TP programmation en langage C

Version 10/09/2013

TP2 Les conditions & les boucles

SI (n_joueur > ECRIRE ("moins")

SINON

SI (n_joueur ECRIRE

SINON

ECRIRE

FSI

FSI

JUSQU'A (n_joueur = n_secret

FIN

4. Traduire votre algo en C et tester

http://youtu.be/_8SGTLvHhLc

[email protected]

TP2 Les conditions & les boucles

> n_secret ) ALORS

("moins")

n_joueur < n_secret ) ALORS

ECRIRE ("Plus")

ECRIRE ("Bravo ! vous avez trouvez le nombre secret")

n_joueur = n_secret )

Traduire votre algo en C et tester

http://youtu.be/_8SGTLvHhLc

[email protected]

Exercices 23

! vous avez trouvez le nombre secret")

Page 24: TP programmation en langage C

Version 10/09/2013 [email protected]

Mémo for, while … do, while TP2 Les conditions & les boucles 24

Mémo for, while, do..while

• Syntaxe for

for ( <initialisation du compteur> ; <condition de répétition> ; <incrémentation du compteur> ) { <traitement >; }

Attention, il n’ya pas un point virgule devant les parenthèses de la boucle for

• Syntaxe do … while

do

{ <traitement >;

}while( <condition de répétition>);

Attention, la boucle do … while se termine par un point virgule

• Syntaxe while

while( <condition de répétition>)

{ <traitement >; }

Attention, il n’ya pas un point virgule devant la condition de la boucle while

Page 25: TP programmation en langage C

Version 10/09/2013 [email protected]

Les tableaux TP3 Les tableaux et les chaines de caractères 25

https://docs.google.com/file/d/0B7wNDg3DekVhWjJYcjhEY3BkY2M/edit?us

p=sharing

http://my.questbase.com/take.aspx?pin=5660-2803-2566

TP3 Les tableaux

et les chaines

3.1. Les tableaux

3.2. Les chaines de caractères

Page 26: TP programmation en langage C

Version 10/09/2013 [email protected]

Les tableaux TP3 Les tableaux et les chaines de caractères 26

3.1. Les tableaux

Ils permettent de stocker des variables de même type de façon contiguë.

Chaque variable est adressé par des indices. Ils sont caractérisés par:

• Une identité : nom du tableau

• Une dimension (1D, 2D, 3D, …)

• La taille : longueur de chaque dimension

Déclaration des tableaux à une dimension

• Syntaxe

Algorithme

VAR

<nom du tableau> : tableau (<longueur>) <type>

C

<type> <nom du tableau> [ <longueur> ];

Exemple 1 :

Algorithme

VAR

T : tableau (5) entier

C

int T[5];

Tableau de dimension 3

Taille :nxmxL

Tableau de dimension 2

Taille : nxm

Tableau de dimension 1

Taille : n

i

j

0 1 2 … n-1

m-1

1

i

0 1 2 … n-1

i

j

0 1 2 … n-1

L-1

0

m-1

1

Page 27: TP programmation en langage C

Version 10/09/2013 [email protected]

Les chaines TP3 Les tableaux et les chaines de caractères 27

Attention, le premier élément du tableau est T[0], et le dernier élément est T[4].

Les longueurs sont des entiers

Déclaration des tableaux à 2 dimensions

• Syntaxe

Algorithme

VAR

<nom du tableau> : tableau (<longueur ligne>, <longueur colonne>) <type>

C

<type> <nom du tableau> [ <longueur ligne> ][ <longueur colonne> ];

• Exemple 2 :

Algorithme

VAR

T : tableau (5,3) entier

C

int T[5][3];

Attention, le premier élément du tableau est T[0] [0], et le dernier élément est T[4] [2].

Les longueurs sont des entiers

• Manipulation 11

7. Donner les caractéristiques des tableaux X, Y et Z depuis le code ci-dessous :

Nom tableau Dimension Taille Nombre de

case

Type

X

Y

Z

U

C

int X[10][10]; float Y[255]; int Z[10][8][6]; char U[12];

Page 28: TP programmation en langage C

Version 10/09/2013 [email protected]

Les chaines TP3 Les tableaux et les chaines de caractères 28

• Manipulation 12

1. Traduire en C l’algorithme suivant en apportant des améliorations d’affichage:

Algorithme

VAR

T : tableau (3) entier

i:entier

DEBUT

POUR i=0 à 2 FAIRE

LIRE(T[i])

FIN POUR

POUR i=0 à 2 FAIRE

ECRIRE(T[i])

FIN POUR

FIN

• Manipulation 13

Dans cette manipulation on souhaite remplir un tableau avec n entier saisi au clavier avec n donnée

par l’utilisateur, puis on afficher la somme de ses valeurs

Exemple d’écran

Donner la longueur du tableau :3

Donner T[0] :2

Donner T[1] :0

Donner T[2] :1

La somme est 3

1. Compléter l’algorithme ci-dessous et traduire le en C en apportant des améliorations

d’affichage:

Algorithme

VAR

T : tableau (255) entier

n,i,s :entier

DEBUT

ECRIRE ("Donner le nombre de case")

LIRE(n)

POUR i=0 à n-1 FAIRE

LIRE(T[i])

FIN POUR

s=0 ;

POUR i=0 à n-1 FAIRE

s=s+T[i]

FIN POUR

ECRIRE(s)

FIN

Page 29: TP programmation en langage C

Version 10/09/2013 [email protected]

Les chaines TP3 Les tableaux et les chaines de caractères 29

Attention, il ne faut jamais déclarer un tableau avec une longueur inconnu comme int T[n] . La

solution peut être par le choix d’une longueur assez grande et suffisante à l’exécution du

programme

• Manipulation 14 : initialisation des tableaux

Dans cette manipulation on souhaite initialiser un tableau T de taille 4 par les valeurs suivantes :

T= 12 0 8 -1 0 1 2 3

1. 1ère

solution : utiliser ce code pour initialiser le tableau T puis afficher le

C

int T[4]; T[0]=12; T[1]=0; T[2]=8; T[3]=-1;

1) 2ème

solution : utiliser ce code pour initialiser le tableau T puis afficher le

C

int T[4] ={12,0,8,-1};

2) Compléter le code ci-dessous pour initialiser la matrice M suivante et afficher ses valeurs:

0 1 2 3

M= 0 1 2 3 4 1 5 6 7 8

C

int M[4][2] ={1,2,3,4,5,6};

Page 30: TP programmation en langage C

Version 10/09/2013 [email protected]

Les chaines TP3 Les tableaux et les chaines de caractères 30

• Manipulation 16 : traduire cet algorithme en C

Algorithme

VAR T : tableau (3) (3) : entier

i, trace : entier

DEBUT

POUR i de 0 à 2 FAIRE

POUR j de 0 à 2 FAIRE

LIRE( T[i][j] )

FIN POUR

FIN POUR

trace����0

POUR i de 0 à 2 FAIRE

Trace ���� trace + T[i] T[i]

FIN POUR

ECRIRE (trace)

FIN

Page 31: TP programmation en langage C

Version 10/09/2013 [email protected]

Les chaines TP3 Les tableaux et les chaines de caractères 31

3.1. Les chaines de caractères

Elles sont vues par le C comme un tableau de caractères se terminant par un code de fin appelé le

caractère nul '\0'.

• Syntaxe

Algorithme

VAR

<nom de la chaine> : chaine (<longueur>)

C

<type> <nom de la chaine> [ <nbre de caractère+1> ]; Exemple 2 :

Algorithme

VAR

message : chaine (10)

C

char T[10];

On a défini un tableau de caractères de 10 éléments. Le message ne pourra contenir au plus

que neuf caractères car le dixième est réservé pour le caractère de fin '\0'.

• Manipulation 15 : initialisation des chaines de caractères

Dans cette manipulation on souhaite initialiser une chaine de taille 10 par un message de 7

caractères par les valeurs suivantes :

T= B o n j o u r \n 0 1 2 3 4 5 6 7 8 9

2. 1ère

solution : utiliser ce code pour initialiser la chaine message puis afficher la

C

char message[10]; message[0]='B'; message[1]='o'; message[2]='n'; message[3]='j'; message[4]='o'; message[5]='u'; message[6]='r'; message[7]='\0';

Page 32: TP programmation en langage C

Version 10/09/2013 [email protected]

Les chaines TP3 Les tableaux et les chaines de caractères 32

3) 2ème

solution : utiliser ce code pour initialiser la chaine message puis afficher la

C

char message[10]= "Bonjour";

Attention, Il n’est pas possible d'initialiser une chaîne de la façon suivante : char message = "Bonjour";

4) Compléter le code ci-dessous pour initialiser la chaine M par le message "Hello World !"

ensuite l’afficher:

0 1 2 3 4 5 6 7 8 9 10 11 12

M= H e l l o W o r l d ! \0

C

char M[255] ="Hello World!"; int i ; for (i=0;i<=11;i++) { Printf(“%c”,M[i]); }

5) Essayer cette méthode pour afficher le message M sans utiliser une boucle, déduire le rôle de

%s

C

char M[255] ="Hello World!"; Printf(“ %s”, M);

Il existe une multitude de fonctions de manipulations des chaînes, voir la bibliothèque string.h

Page 33: TP programmation en langage C

Version 10/09/2013 [email protected]

Exercices TP3 Les tableaux et les chaines de caractères 33

EXERCICE 4 : Jeu mot caché version 0

e) Le principe du jeu Le but du jeu est de dévoiler le mot caché en un minimum de coups

f) Déroulement du jeu 1) On se fixe un mot de 4 lettres et on l’affiche par des étoiles ‘****’ 2) Le joueur propose une lettre à l'ordinateur 3) Si cette lettre existe l’ordinateur affichera cette lettre dans leurs positions dans le mot caché,

les autres lettres restent cachées par des étoiles ‘*’, Sinon rien ne change et on passe au deuxième coup

4) Cette boucle continue jusqu’à ce que le mot se dévoile en totalité Voici un exemple de partie :

Supposons que le mot caché est. ISET

Essayer de devoile le mot : ****

Essai 1, donner une lettre : A

Le mot est : ****

Essai 2, donner une lettre : S

Le mot est : *S**

Essai 3, donner une lettre : B

Le mot est : *S**

Essai 4, donner une lettre : E

Le mot est : *SE*

Essai 5, donner une lettre : o

Le mot est : *SE*

Essai 6, donner une lettre : i

Le mot est : ISE*

Essai 7, donner une lettre : T

Le mot est : ISET

Bravo !

Page 34: TP programmation en langage C

Version 10/09/2013 [email protected]

Mémo tableaux et chaines TP3 Les tableaux et les chaines de caractères 34

Mémo tableaux et chaines

• Syntaxe déclaration tableau ou chaine de dimension 1

<type> <nom> [ <longueur> ];

• Syntaxe déclaration tableau ou chaine de dimension 2

<type> <nom> [ <longueur1> ][ <longueur2> ];

• Affichage d’une chaine en utilisant %s

printf(“%s”, <nom de chaine> );

Une chaine de longueur n ne peut contenir que n-1 caractères au plus car la fin du message est

terminé par le caractère de fin '\0'.

Page 35: TP programmation en langage C

https://docs.google.com/file/d/0B7wNDg3DekVhSFlrS25xYldWVHM/edit?us

p=sharing

http://my.questbase.com/take.aspx?pin=5660-2803-2566

TP4 Les fonctions et les

procédures

3.1. Les fonctions

3.2. Les procédures

Page 36: TP programmation en langage C

Version 10/09/2013 [email protected]

TP4 Les fonctions et les procédures 36

3.1. Les fonctions

Syntaxe

Algorithme

FONCTION <nom de fonction> (<paramètre 1> :<type>, …, <paramètre n> :<type>) :<type de sortie>

DEBUT

<traitement>

Sortie���� <résultat de la fonction>

FIN

C

<type> <nom de la fonction> (<type> <paramètre 1>, …, <type> <paramètre n>)

{

<traitement>;

return <résultat de la fonction> ;

}

Exemple 1 :

Algorithme

FONCTION carre (x : entier) : entier

DEBUT

Sortie���� x*x

FIN

C

int carre (int x)

{

return x*x ;

}

Manipulation 16 :

1. Créer un nouveau projet sur codeBlocks, nommer le « TP4 »

2. Dans la source main.c, recopier le code ci-dessous

3. Compiler le code et tester le pour x=0, x=1, x=2, x=3 et x=4

4. Déduire la fonction f

5. Compléter le code pour traiter le cas des valeurs réelles et les valeurs négatives

C factorielle

#include <stdio.h> #include <stdlib.h> int main() {

Page 37: TP programmation en langage C

Version 10/09/2013 [email protected]

TP4 Les fonctions et les procédures 37

int x=0; float f(int n) { if (n==0) { return 1; } else { return n*f(n-1); } } printf("x="); scanf("%d",&x); printf("%.f",f(x)); }

• Manipulation 17

2. Ajouter les instructions nécessaires à l’algorithme ci-dessous pour lire deux vecteurs A et B

de 3 coordonnées puis affiche leur somme A+B (il faut utiliser les procédures Remplir et

Afficher)

3. Traduire en C l’algorithme en apportant des améliorations d’affichage:

Algorithme

VAR

T : tableau [3] entier

i:entier

DEBUT

PROCEDURE Remplir (VAR T : tableau [3] entier, i : entier)

DEBUT

POUR i=0 à 2 FAIRE

LIRE(T[i])

FIN POUR

FIN Remplir

PROCEDURE Afficher (VAR T : tableau [3] entier, i : entier)

DEBUT

POUR i=0 à 2 FAIRE

ECRIRE(T[i])

FIN POUR

FIN Remplir

FIN

Page 38: TP programmation en langage C

Version 10/09/2013 [email protected]

TP4 Les fonctions et les procédures 38

• Manipulation 18

Chercher un algorithme de tri et transformer le en procédure

EXERCICE 5 : Jeu mot caché version 1

Reprendre votre code du jeu mot caché et modifier le en se servant des fonctions et des procédures