TP programmation en langage C

Page 1

C

Ministère de l’enseignement supérieur et de la recherche scientifique Institut Supérieur des études technologiques de Rades Département Génie mécanique

C

C

C

C

C

C

C

Atelier programmation en langage C C

C

C

C

C

Licence icence appliquée en génie mécanique Première année, semestre1 Unité informatique Module : Atelier

Ayadi walid ayadi.walid@gmail.com

Version 10/09/13

C


TP1 Les instructions de base

TP1

Déclaration des variables

Les instructions de base 1.1. Déclaration des variables 1.2. Affectation 1.3. Ecriture 1.4. Lecture

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 http://www.youtube.com/watch?v=PQjvo3zEX-A

https://docs.google.com/file/d/0B7wNDg3DekVhWkNWLWlMNk5mQU0/ed it?usp=sharing

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

Version 10/09/2013

Ayadi.Walid@Gmail.com

2


TP1 Les instructions de base

Déclaration des variables

1.1. Déclaration des variables •

Syntaxe

Algorithme VAR <nom de var> :<type> C <type de variable> <nom de variable, 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

En C

exemple

entier

int

-32768 à 32767

booléen

int

La variable est considérée (faux)quand elle est égale à 0, Sinon (vrai)

réelle

float

2.05452 -1.5

caractère

char

‘Z ‘

‘z’

‘a’ ‘A’

‘1’

http://www.youtube.com/watch?v=kukKa9Rtnho&feature=relmfu Version 10/09/2013

Ayadi.Walid@Gmail.com

3


TP1 Les instructions de base

Déclaration des variables

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

En C

Logique

En C

+ : addition

+

<

<

- : soustraction

-

<=

/ : division

/

>

>

MOD : modulo reste de la division

%

>=

* : multiplication

*

=

==

!=

ET

&&

(touche 1 du clavier)

OU

||

(touches : AltGr+6)

NON

!

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

http://youtu.be/kukKa9Rtnho?t=7m48s Version 10/09/2013

Ayadi.Walid@Gmail.com

4


TP1 Les instructions de base

Ecriture - printf

1.3. ECRITURE •

Permet d’afficher un message sur écran

Printf("Hello Word!");

Syntaxe

Algorithme ECRIRE (<variable ou expression ou "chaine de caractère">); caractère" C printf("<chaine <chaine de caractère à afficher>" afficher> , <nom de variable ou expression>);

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 et voir le résultat C printf("Bonjour f("Bonjour je m’appelle Walid"); Walid") 2. Modifier le message en ajoutant \n après le mot Bonjour et comparer le résultat avec le précédent C printf("Bonjour\nje nje m’appelle Walid"); Walid") 3. Déduire l’action de \n http://www.youtube.com/watch?v=5PawS09cosE

Version 10/09/2013

Ayadi.Walid@Gmail.com

5


TP1 Les instructions de base

Ecriture - printf

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 http://www.youtube.com/watch?v=PQjvo3zEX-A

Version 10/09/2013

Ayadi.Walid@Gmail.com

6


TP1 Les instructions de base

Mémo - printf

Mémo printf • Syntaxe: printf("<chaine <chaine de caractère>",<variable ou expression>); ); • comporte une seule chaine de caractère entre " " • Dans la chaine on peut utiliser des caractères spéciaux qui ne s’affichent pas comme: \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 http://www.youtube.com/watch?v=PQjvo3zEX-A

Version 10/09/2013

Ayadi.Walid@Gmail.com

7


Mémo - scanf

TP1 Les instructions de base

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

Version 10/09/2013

Ayadi.Walid@Gmail.com

8


Mémo - scanf

TP1 Les instructions de base

Manipulation 5

1. Compléter les zones noircies du code ci-dessous et voir le résultat C float a,b; printf("donner la valeur1 :"); scanf("%f",&a); printf("donner la valeur 2 :"); : scanf("%f",&b); printf("la somme de %f+%f=%f\n",a,b,a+b); %f+ printf("la soustraction de %f-%f=%f\n",a,b,a+b); %f printf("la multiplication de %fx%f=%f\n",a,b,a*b); %fx ); printf("la division de %f/%f=%f\n",a,b,a/b); %f/

Manipulation 6

1. Editer le code ci-dessous et voir le résultat C char c1,c2,c3; printf("donner le premier caractère :"); 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 :%c%c%c",c1,c2,c3); 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 de a") LIRE(a) ECRIRE ("donner la valeur de b") LIRE(b) reste a MOD b ; quotion a DIV b; ECRIRE (a,"=",b,"x", quotion,"+",reste) quotion FIN Exemple d’écran

Version 10/09/2013

Ayadi.Walid@Gmail.com

9


Mémo - scanf

TP1 Les instructions de base

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…

Version 10/09/2013

Ayadi.Walid@Gmail.com

10


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

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

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

Version 10/09/2013

Ayadi.Walid@Gmail.com


TP2 Les conditions & les boucles

Condition SI…SINON (if … else )

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; }

Version 10/09/2013

Ayadi.walid@gmail.com

12


TP2 Les conditions & les boucles

Condition SI…SINON (if … else )

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 : 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 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

Version 10/09/2013

Ayadi.walid@gmail.com

13


TP2 Les conditions & les boucles

Mémo les conditions (if … else)

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> ; }

Version 10/09/2013

Ayadi.walid@gmail.com

14


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 !

Version 10/09/2013

Ayadi.walid@gmail.com

15


La boucle POUR (for )

TP2 Les conditions & les boucles

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>);

Version 10/09/2013

Ayadi.walid@gmail.com

16


TP2 Les conditions & les boucles

Boucle REPETER … JUSQU'A (do…while)

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);

Version 10/09/2013

Ayadi.walid@gmail.com

17


TP2 Les conditions & les boucles

Boucle REPETER … JUSQU'A (do…while)

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

Version 10/09/2013

Ayadi.walid@gmail.com

18


TP2 Les conditions & les boucles

Boucle TANTQUE … FAIRE (do…while)

• 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

Version 10/09/2013

Ayadi.walid@gmail.com

19


TP2 Les conditions & les boucles

Exercices

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.

Version 10/09/2013

Ayadi.walid@gmail.com

20


TP2 Les conditions & les boucles

Exercices

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.

Version 10/09/2013

Ayadi.walid@gmail.com

21


TP2 Les conditions & les boucles

Exercices

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 const 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 n_secret n_joueur

Type entier entier

Rôle Le nombre secret Le nombre proposé par le joueur

Commentaires Entrée clavier Entrée clavier

2. Décomposer votre algorithme en grandes parties Partie 1 : Affecter

une valeur à

n_secret entre 1 et 100

Partie 2 : Répéter de Demander au joueur un nombre et dit lui si 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 ) Version 10/09/2013

Ayadi.walid@gmail.com

22


TP2 Les conditions & les boucles

Exercices

SI (n_joueur > n_secret ) ALORS ECRIRE ("moins") SINON SI (n_joueur n_joueur < n_secret ) ALORS ECRIRE ("Plus") SINON ECRIRE ("Bravo ! vous avez trouvez le nombre secret") FSI FSI JUSQU'A (n_joueur n_joueur = n_secret ) FIN

4. Traduire votre algo en C et tester

http://youtu.be/_8SGTLvHhLc

Version 10/09/2013

Ayadi.walid@gmail.com

23


TP2 Les conditions & les boucles

Mémo for, while … do, while

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

Version 10/09/2013

Ayadi.walid@gmail.com

24


TP3 Les tableaux et les chaines de caractères

TP3

Les tableaux

Les tableaux et les chaines 3.1. Les tableaux 3.2. Les chaines de caractères

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

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

Version 10/09/2013

Ayadi.walid@gmail.com

25


TP3 Les tableaux et les chaines de caractères

Les tableaux

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

m-1 m-1 j 1

1

L-1

j i

i 0

0

1

2

0

1

2

n-1

n-1

i 0

1

2

n-1

Tableau de dimension 1

Tableau de dimension 2

Tableau de dimension 3

Taille : n

Taille : nxm

Taille :nxmxL

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];

Version 10/09/2013

Ayadi.walid@gmail.com

26


TP3 Les tableaux et les chaines de caractères

Les chaines

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];

Version 10/09/2013

Ayadi.walid@gmail.com

27


TP3 Les tableaux et les chaines de caractères

Les chaines

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

Version 10/09/2013

Ayadi.walid@gmail.com

28


TP3 Les tableaux et les chaines de caractères

Les chaines

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: M=

0 1

0

1

2

3

1 5

2 6

3 7

4 8

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

Version 10/09/2013

Ayadi.walid@gmail.com

29


TP3 Les tableaux et les chaines de caractères

Les chaines

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

Version 10/09/2013

Ayadi.walid@gmail.com

30


TP3 Les tableaux et les chaines de caractères

Les chaines

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';

Version 10/09/2013

Ayadi.walid@gmail.com

31


TP3 Les tableaux et les chaines de caractères

Les chaines

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: M=

0

1

2

3

4

H

e

l

l

o

5

6

7

8

9

10

11

12

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

Version 10/09/2013

Ayadi.walid@gmail.com

32


TP3 Les tableaux et les chaines de caractères

Exercices

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) 2) 3)

On se fixe un mot de 4 lettres et on l’affiche par des étoiles ‘****’ Le joueur propose une lettre à l'ordinateur 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 !

Version 10/09/2013

Ayadi.walid@gmail.com

33


TP3 Les tableaux et les chaines de caractères

Mémo tableaux et chaines

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'.

Version 10/09/2013

Ayadi.walid@gmail.com

34


TP4

Les fonctions et les procédures 3.1. Les fonctions 3.2. Les procédures

https://docs.google.com/file/d/0B7wNDg3DekVhSFlrS25xYldWVHM/edit?us p=sharing http://my.questbase.com/take.aspx?pin=5660-2803-2566


36

TP4 Les fonctions et les procédures

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. 2. 3. 4. 5.

Créer un nouveau projet sur codeBlocks, nommer le « TP4 » Dans la source main.c, recopier le code ci-dessous Compiler le code et tester le pour x=0, x=1, x=2, x=3 et x=4 Déduire la fonction f 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() {

Version 10/09/2013

Ayadi.walid@gmail.com


37

TP4 Les fonctions et les procédures

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

• Version 10/09/2013

Ayadi.walid@gmail.com


38

TP4 Les fonctions et les procédures

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

Version 10/09/2013

Ayadi.walid@gmail.com


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.