Fascicule de TP Langage C

April 20, 2017 | Author: a7med02061989 | Category: N/A
Share Embed Donate


Short Description

Download Fascicule de TP Langage C...

Description

Ecole Nationale des Ingénieurs de Sousse ENISO

Fascicule TP Langage C

Préparé par : Mme Saoussen Ben Jabra

AU 2010/2011

TRAVAUX PRATIQUES N°1 Introduction au langage C , Types de base, Opérateurs, Expressions du langage C et Les entrées-sorties 1-Introduction Turbo C n’est pas qu’un langage de programmation, mais aussi un système complet de développement de programmes. Il offre tous les outils permettant d’écrire, d’éditer, de compiler, de lier et de déboguer vos programmes. L’E.D.I possède 3 éléments principaux : • La barre de menu (en haut de l’écran) • La zone de travail (au milieu de l’écran). • La ligne d’état (en bas de l’écran) La barre des menus est votre moyen principal d’accès aux commandes des différents menus. 1-Chaque étudiant doit créer un répertoire de travail (Nom + Prénom + TPX). 2-Se familiariser avec l’environnement C/C++ : • Barre de menu (File, Edit, Search, View, Project,...). • Barre d’outils. • Barre d’état.

2- Histoire de C + Avantages ¾ Le langage C a été créé dans les années 1970 par Dennis Rithcie. ¾ Un programme en langage C est une suite d'instructions. ¾ Un programme en C est un ensemble de fonctions, parmi ces fonctions, il existe une fonction de démarrage dont le nom est "main". Le grand succès du langage C s'explique par les avantages suivants; C est un langage: ™ Universel C n'est pas orienté vers un domaine d'applications spéciales, comme par exemple FORTRAN (applications scientifiques et techniques) ou COBOL (applications commerciales ou traitant de grandes quantités de données). ™ Compact C est basé sur un noyau de fonctions et d'opérateurs limités, qui permet la formulation d'expressions simples, mais efficaces. ™ Moderne C est un langage structuré, déclaratif et récursif; il offre des structures de contrôle et de déclaration comparables à celles des autres grands langages de ce temps (FORTRAN, ALGOL68, PASCAL). ™ Rapide Comme C permet d'utiliser des expressions et des opérateurs qui sont très proches du langage machine, il est possible de développer des programmes efficients et rapides. ™ Extensible C ne se compose pas seulement de la fonction standard; le langage est animé par des bibliothèques de fonctions privées ou livrées par de nombreuses maisons de développement.

3- Structure d’un programme en C main() { < Déclarations > < Instructions > return 0 ; } Ben Jabra Saoussen

Page : 1

Remarque : Chaque programme en C doit renfermer une fonction du nom de "main"(Fonction principale de chaque programme C). Exemple : main() { printf("Bonjour"); return 0 ; }

4. Les bibliothèques de fonctions prédéfinies Utilisation des bibliothèques de fonctions La pratique en C exige l'utilisation de bibliothèques de fonctions. Ces bibliothèques sont disponibles dans leur forme précompilées (extension: .LIB). Pour pouvoir les utiliser, il faut inclure des fichiers en-tête (extension .h) dans nos programmes. Ces fichiers contiennent des 'prototypes' des fonctions définies dans les bibliothèques et créent un lien entre les fonctions précompilées et nos programmes. L'instruction #include insère les fichiers en-tête indiqués comme arguments dans le texte du programme au moment de la compilation. Identification des fichiers Lors de la programmation en C, nous travaillons donc avec différents types de fichiers qui sont identifiés par leurs extensions: *.C : fichiers source *.OBJ : fichiers compilés (versions objet) *.EXE : fichiers compilés et liés (versions exécutables)

Exemple Nous avons écrit un programme qui fait appel à des fonctions mathématiques et des fonctions graphiques prédéfinies. Pour pouvoir utiliser ces fonctions, le programme a besoin des bibliothèques: MATHS.LIB GRAPHICS.LIB

Nous devons donc inclure les fichiers en-tête correspondants dans le code source de notre programme à l'aide des instructions: #include #include

Après la compilation, les fonctions précompilées des bibliothèques seront ajoutées à notre programme pour former une version exécutable du programme (voir schéma).

5- Fichiers « include » ™ Se trouvent dans un répertoire nommé "include", ™ Ils possèdent l'extension h, ™ Ils renferment les déclarations des fonctions du système. Exemple: # include (Fichiers d’entrée, sortie). #include (Fichiers Mathématiques). #include (Fonctions Graphiques). ™ Le programme précédant devient : #include main() { printf("Bonjour"); return 0 ; } Ben Jabra Saoussen

Page : 2

6- Les identificateurs Les noms des fonctions et des variables en C sont composés d'une suite de lettres et de chiffres. Le premier caractère doit être une lettre. Le symbole '_' est aussi considéré comme une lettre. ™ L'ensemble des symboles utilisables est donc: {0,1,2,...,9,A,B,...,Z,_,a,b,...,z} ™ Le premier caractère doit être une lettre (ou le symbole '_') ™ C distingue les majuscules et les minuscules, ainsi: 'Nom_de_variable' est différent de 'nom_de_variable' Remarque: Il est déconseillé d'utiliser le symbole '_' comme premier caractère pour un identificateur, car il est souvent employé pour définir les variables globales de l'environnement C. Exemples Identificateurs corrects

Identificateurs incorrects

nom1 nom_2 _nom_3 Nom_de_variable deuxieme_choix mot_francais

1nom nom.2 -nom-3 Nom de variable deuxième_choix mot_français

7-Les commentaires Un commentaire commence toujours par les deux symboles '/*' et se termine par les symboles '*/'. Il est interdit d'utiliser des commentaires imbriqués. Exemples /* Ceci est un commentaire correct */ /* Ceci est /* évidemment */ défendu */

7-Les types de bases 7-1-Le type entier ( int ) Ils existent 3 types différents: Type short int ou short int long int

Occupation mémoire 2 ou 4 octets 2 ou 4 octets 4 octets

Plage de valeur -32768 à 32767 -32768 à 32767 -2147483647 à 2147483648

7-2- Le type flottant ( float ) Permet de représenter de manière approchée une partie des nombres réels. Ils existent 3 types différents: Types float double long double

Occupation mémoire 4 octets 8 octets 10 octets

Plage de valeur 3.4*10-38 à 3.4*1038 1.7*10-308 à 1.7*10308 3.4*10-4932 à 3.4*104932

7-3- Le type caractère ( char ) ¾ Il est utilisé pour représenter un caractère. ¾ Un objet de type caractère contiendra le code binaire de n’importe quel caractère utilisé sur la machine. ¾ Un objet de type caractère est pour C un entier occupant un octet.

Ben Jabra Saoussen

Page : 3

8- Les variables ¾ ¾ ¾ ¾ ¾

Une variable : possède un nom, possède un type, possède un contenu, est modifiable, est rangée en memoire à partir d'une certaine adresse.

Déclaration et initialisation des variables Type NomVar1, NomVar2………………., NomVarN ; Type NomVar1= val 1, NomVar2= Val 2………………., NomVar N= ValN ; Exemples : ™ char c ; ™ int X, Y ; ™ float Z = 4.5 ; ™ double W ; ™ int t_presse

9- Les opérateurs standard Affectation en C = ; Exemples d'affectations Reprenons les exemples du cours d'algorithmique pour illustrer différents types d'affectations:

™ L'affectation avec des valeurs constantes Affectation

Type de la constante

LONG = 141; PI = 3.1415926; NATION = 'L';

(const. entière) (const. réelle) (caractère const.)

™ L'affectation avec des valeurs de variables •



VALEUR = X1A; LETTRE = COURRIER;

™ L'affectation avec des valeurs d'expressions • AIRE = PI*pow(R,2); • MOYENNE = (A+B)/2; • UN=pow(sin(X),2)+pow(cos(X),2); • RES = 45+5*X; • PLUSGRAND = (X>Y);

Observations Les opérateurs et les fonctions arithmétiques utilisées dans les expressions seront introduites dans la suite du TP. Observons déjà que: ™ il n'existe pas de fonction standard en C pour calculer le carré d'une valeur; on peut se référer à la fonction plus générale pow(x,y) qui calcule xy. ™ le test d'égalité en C se formule avec deux signes d'égalité ==, l'affectation avec un seul = .

10-Les fonctions arithmétiques standard Les fonctions suivantes sont prédéfinies dans la bibliothèque standard . Pour pouvoir les utiliser, le programme doit contenir la ligne: #include Type des données : Les arguments et les résultats des fonctions arithmétiques sont du type double.

Ben Jabra Saoussen

Page : 4

Fonctions arithmétiques COMMANDE C

EXPLICATION fonction exponentielle logarithme naturel logarithme à base 10 X exposant Y racine carrée de X valeur absolue de X arrondir en moins reste rationnel de X/Y (même signe que X) pour X différent de 0 sinus, cosinus, tangente de X arcsin(X), arccos(X), arctan(X) sinus, cosinus, tangente hyperboliques de X

exp(X) log(X) log10(X) pow(X,Y) sqrt(X) fabs(X) floor(X) fmod(X,Y) sin(X) cos(X) tan(X) asin(X) acos(X) atan(X) sinh(X) cosh(X) tanh(X)

Remarque avancée La liste des fonctions ne cite que les fonctions les plus courantes. Pour la liste complète et les constantes prédéfinies voir .

11-Les opérateurs 11-1- Les opérateurs connus Avant de nous lancer dans les 'spécialités' du langage C, retrouvons d'abord les opérateurs correspondant à ceux que nous connaissons déjà en langage descriptif et en Pascal.

+ * / %

Opérateurs arithmétiques addition soustraction multiplication

&& || !

Opérateurs logiques et logique (and) ou logique (or) négation logique (not)

Opérateurs de comparaison == égal à != différent de = que, ...

division (entière et rationnelle!) modulo (reste d'une div. entière)

Opérations logiques Les résultats des opérations de comparaison et des opérateurs logiques sont du type int: ™ la valeur 1 correspond à la valeur booléenne vrai ™ la valeur 0 correspond à la valeur booléenne faux Les opérateurs logiques considèrent toute valeur différente de zéro comme vrai et zéro comme faux: ™ 32 && 2.3 ™ !65.34 ™ 0||!(32 > 12)

→ 1 → 0 → 0

11-2- Les opérateurs particuliers de C 11-2-1- Les opérateurs d'affectation En pratique, nous retrouvons souvent des affectations comme: En C, nous utiliserons plutôt la formulation plus compacte: L'opérateur += est un opérateur d'affectation. Pour la plupart des expressions de la forme:

i=i+2 i += 2

expr1 = (expr1) op (expr2) il existe une formulation équivalente qui utilise un opérateur d'affectation: expr1 op= expr2 Ben Jabra Saoussen

Page : 5

+= -= *= /= %=

ajouter à diminuer de multiplier par diviser par modulo

11-2-2- Opérateurs d'incrémentation et de décrémentation Les affectations les plus fréquentes sont du type: I = I + 1 et I = I - 1 En C, nous disposons de deux opérateurs inhabituels pour ces affectations: ™ I++ ou ++I pour l'incrémentation (augmentation d'une unité) ™ I-- ou –I pour la décrémentation (diminution d'une unité) Les opérateurs ++ et -- sont employés dans les cas suivants: ™ Incrémenter/décrémenter une variable (p.ex: dans une boucle). Dans ce cas il n'y a pas de différence entre la notation préfixe (++I --I) et la notation postfixe (I++ I--). ™ Incrémenter/décrémenter une variable et en même temps affecter sa valeur à une autre variable. Dans ce cas, nous devons choisir entre la notation préfixe et postfixe: •

X = I++

passe d'abord la valeur de I à X et incrémente après



X = I--

passe d'abord la valeur de I à X et décrémente après



X = ++I

incrémente d'abord et passe la valeur incrémentée à X



X = --I

décrémente d'abord et passe la valeur décrémentée à X

Exemple Supposons que la valeur de N est égal à 5: • Incrém. Postfixe : X = N++; • Incrém. préfixe:

X = ++N;

Résultat: N=6 et X=5 Résultat: N=6 et X=6

12-Les priorités des opérateurs Exemple Supposons pour l'instruction suivante: A=5, B=10, C=1 X = 2*A+3*B+4*C; L'ordinateur évalue d'abord les multiplications: 2*A ==> 10 , 3*B ==> 30 , 4*C ==> 4 Ensuite, il fait l'addition des trois résultats obtenus: 10+30+4 ==> 44 A la fin, il affecte le résultat général à la variable: X = 44 Priorité d'un opérateur On dit alors que la multiplication a la priorité sur l'addition et que la multiplication et l'addition ont la priorité sur l'affectation. Si nous voulons forcer l'ordinateur à commencer par un opérateur avec une priorité plus faible, nous devons (comme en mathématiques) entourer le terme en question par des parenthèses. Exemple Dans l'instruction: X = 2*(A+3)*B+4*C; L’ordinateur évalue d'abord l'expression entre parenthèses, ensuite les multiplications, ensuite l'addition et enfin l'affectation. (En reprenant les valeurs de l'exemple ci-dessus, le résultat sera 164) Entre les opérateurs que nous connaissons jusqu'ici, nous pouvons distinguer les classes de priorités suivantes: Ben Jabra Saoussen

Page : 6

Classes de priorités Priorité 1 (la plus forte): Priorité 2: Priorité 3: Priorité 4: Priorité 5: Priorité 6: Priorité 7: Priorité 8: Priorité 9 (la plus faible):

( ) ! * + < == && || = /=

++ /

>=

!=

+= %=

-=

*=

Evaluation d'opérateurs de la même classe ™ Dans chaque classe de priorité, les opérateurs ont la même priorité. Si nous avons une suite d'opérateurs binaires de la même classe, l'évaluation se fait en passant de la gauche vers la droite dans l'expression. ™ Pour les opérateurs unaires (!,++,--) et pour les opérateurs d'affectation (=,+=,=,*=,/=,%=), l'évaluation se fait de droite à gauche dans l'expression. Exemples 2-Pour A=3 et B=4, l'expression A *= B += 5 sera évaluée comme suit:

Pour A=1 et B=4, l'expression !--A==++!B sera évaluée comme suit:

Les parenthèses Les parenthèses sont seulement nécessaires si nous devons forcer la priorité, mais elles sont aussi permises si elles ne changent rien à la priorité. En cas de parenthèses imbriquées, l'évaluation se fait de l'intérieur vers l'extérieur. Exemple En supposant à nouveau que A=5, B=10, C=1 l'expression suivante s'évaluera à 134: X = ((2*A+3)*B+4)*C Observez la priorité des opérateurs d'affectation : X *= Y + 1 X = X * (Y + 1) X *= Y + 1 n'équivaut PAS à X = X * Y + 1

Ben Jabra Saoussen

Page : 7

13-Écriture formatée de données : printf() La fonction printf est utilisée pour transférer du texte, des valeurs de variables ou des résultats d'expressions vers le fichier de sortie standard stdout (par défaut l'écran). Ecriture formatée en C : printf ("", , , ... ) ™ "" : format de représentation ™ ,....... : variables et expressions dont les valeurs sont à représenter La partie "" est en fait une chaîne de caractères qui peut contenir: ™ du texte ™ des séquences d'échappement ™ des spécificateurs de format ™ Les spécificateurs de format indiquent la manière dont les valeurs des expressions sont imprimées. ™ La partie "" contient exactement un spécificateur de format pour chaque expression . ™ Les spécificateurs de format commencent toujours par le symbole % et se terminent par un ou deux caractères qui indiquent le format d'impression. Exemple 1 : (Le tester à la machine) La suite d'instructions: int A = 1234; int B = 567; printf("%d fois %d est %ld\n", A, B, (long)A*B); va afficher sur l'écran: 1234 fois 567 est 699678 Les arguments de printf sont : ™ la partie format : "%d fois %d est %ld" ™ la variable : A ™ la variable : B ™ l'expression : (long)A*B er Le 1 spécificateur (%d) indique que la valeur de A sera imprimée comme entier relatif : 1234 Le 2ème spécificateur (%d) indique que la valeur de B sera imprimée comme entier relatif : 567 Le 2ème spécificateur (%ld) indique que la valeur de (long)A*B sera imprimée comme entier relatif long : 699678 Exemple 2 (Le tester à la machine) La suite d'instructions: char B = 'A'; printf("Le caractère %c à le code %i !\n", B, B); va afficher sur l'écran: Le caractère A à le code 65 ! Spécificateurs de format pour printf SYMBOLE

%d ou %i %u %o %x %c %f %e %s

Ben Jabra Saoussen

IMPRESSION COMME

entier relatif entier naturel (unsigned) entier exprimé en octal entier exprimé en hexadécimal caractère rationnel en notation décimale rationnel en notation scientifique chaîne de caractères Page : 8

Exercice 1 Soit le programme suivant : #include void main() { printf("Ecole nationale des ingénieurs de Sousse") ; } 1- Saisir ce programme source avec l’éditeur de texte. 2- Sauvegarder ce programme source sous le nom TP1_EX1 dans votre répertoire. 3- Manipuler ce programme source en utilisant les commandes de la barre de menu. • Recopier 2 fois la ligne printf. • Effacer 2 fois la ligne printf. • Ajouter dans le programme source le commentaire suivant : /* Instruction d'affichage d'un message sur l'écran*/ 4- Compiler et exécuter ce programme : • En utilisant la barre de menu. • Avec le clavier. 5- Conclure. 6-Modifier le programme comme indiqué, sauvegarder, compiler et exécuter. #include void main() { printf("Ecole nationale des ingénieurs de Sousse\n") ; printf("Département Informatique") ; } 7-Déduire le rôle de la séquence \n.

14-Lecture formatée de données : scanf() La fonction scanf est la fonction symétrique à printf; elle nous offre pratiquement les mêmes conversions que printf, mais en sens inverse. Lecture formatée en C

scanf ("", , , ...) ™ "" ™ ,...

: :

format de lecture des données adresses des variables auxquelles les données seront attribuées

• La fonction scanf reçoit ses données à partir du fichier d'entrée standard stdin (par défaut le clavier). • La chaîne de format détermine comment les données reçues doivent être interprétées. • Les données reçues correctement sont mémorisées successivement aux adresses indiquées par ,... . • L'adresse d'une variable est indiquée par le nom de la variable précédé du signe &. Exemple La suite d'instructions: int JOUR, MOIS, ANNEE; scanf("%d %d %d", &JOUR, &MOIS, &ANNEE); Lit trois entiers relatifs, séparés par des espaces, tabulations ou interlignes. Les valeurs sont attribuées respectivement aux trois variables JOUR, MOIS et ANNEE. • scanf retourne comme résultat le nombre de données correctement reçues (type int).

Ben Jabra Saoussen

Page : 9

Spécificateurs de format pour scanf SYMBOLE

%d ou %i %u %o %b %c %f ou %e %s

IMPRESSION COMME

entier relatif entier naturel (unsigned) entier exprimé en octal entier exprimé en hexadécimal caractère rationnel en notation décimale ou exponentielle (scientifique) chaîne de caractères

1. Les signes d'espacement Lors de l'entrée des données, une suite de signes d'espacement (espaces, tabulateurs, interlignes) est évaluée comme un seul espace. Dans la chaîne de format, les symboles \t, \n, \r ont le même effet qu'un simple espace. Exemple Pour la suite d'instructions int JOUR, MOIS, ANNEE; scanf("%i %i %i", &JOUR, &MOIS, &ANNEE); les entrées suivantes sont correctes et équivalentes: 12 4 1980 ou 12 004 1980 ou 12 4 1980 2. Formats 'spéciaux' Si la chaîne de format contient aussi d'autres caractères que des signes d'espacement, alors ces symboles doivent être introduits exactement dans l'ordre indiqué. Exemple La suite d'instructions int JOUR, MOIS, ANNEE; scanf("%i/%i/%i", &JOUR, &MOIS, &ANNEE); accepte les entrées: rejette les entrées: 12/4/1980

12 4 1980

12/04/01980

12 /4 /1980

Exercice 2 Soit un programme C contenant les instructions suivantes : #include void main() { int i, j, k ; ……….. ……….. } 1- Ecrire un programme C qui permet de : ™ saisir des valeurs numériques pour i, j, et k. ™ D’afficher chacune des expressions suivantes en utilisant des messages, des codes formats et les caractères de contrôles : Ben Jabra Saoussen

Page : 10

♦ i, j et k sont des entiers, ♦ i est un entier décimal, j un entier octal et k un entier hexadécimal, ♦ i et j sont des entiers hexadécimaux et k un entier octal, ♦ (i+j), (i-k), ♦ sqrt(i + j) , abs(i-k) 2- Saisir ce programme source avec l’éditeur de texte. 3- Sauvegarder ce programme source sous le nom TP1_EX2 dans votre répertoire. 4- Compiler le programme TP1_EX2 pour effectuer la correction 5- Exécuter ce programme.

Notes Personnelles

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

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

Exercice 3 Les opérateurs d’incrémentation sont très utiles et très puissants ; ils peuvent être combinés avec l’instruction d’affectation. Je vous propose de les découvrir au travers du programme suivant : #include void main() { int X,Y,RES; X=Y=6; RES = X+Y; printf("X = %i \t Y = %i \t RES = %i \n", X , Y, RES); RES = X++ + Y; printf("X = %i \t Y = %i \t RES = %i \n", X , Y, RES); RES = ++X + Y; printf("X = %i \t Y = %i \t RES = %i \n", X , Y, RES); RES = X-- + Y; printf("X = %i \t Y = %i \t RES = %i \n", X , Y, RES); RES = --X + Y; printf("X = %i \t Y = %i \t RES = %i \n", X , Y, RES); RES = X+Y; printf("X = %i \t Y = %i \t RES = %i \n", X , Y, RES); } 1- Essayer de deviner les résultats, avant d’exécuter ce programme. 2- Préciser dans chacun des cas, s’il s’agit d’une pré ou d’une post-incrémentation ou -décémentation 3- Saisir ce programme source avec l’éditeur de texte. 4- Sauvegarder ce programme source sous le nom TP1_EX2 dans votre répertoire. 5- Compiler le programme TP1_EX2 pour effectuer la correction 6- Exécuter ce programme. 7- Conclure.

Ben Jabra Saoussen

Page : 11

Notes Personnelles ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. …………………………………………………….

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

Exercice 4 1- Ecrire un programme C qui permute et affiche les valeurs de trois variables A, B et C de type entier qui sont entrées au clavier. 2-Saisir ce programme source avec l’éditeur de texte. 3- Sauvegarder ce programme source sous le nom TP1_EX4 dans votre répertoire. 4- compiler et exécuter ce programme.

Notes Personnelles

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

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

Exercice 5 1-Essayez le programme suivant et modifiez-le de façon à ce qu'il affiche: ™ AB, ™ l'hypoténuse d'un triangle rectangle de côtés A et B, ™ la tangente de A en n'utilisant que les fonctions sin et cos, ™ la valeur arrondie (en moins) de A/B, ™ la valeur arrondie (en moins) à trois positions derrière la virgule de A/B. 2-Saisir ce programme source avec l’éditeur de texte. 3- Sauvegarder ce programme source sous le nom TP1_EX5 dans votre répertoire. 4- compiler et exécuter ce programme.

Ben Jabra Saoussen

Page : 12

TRAVAUX PRATIQUES N°2 Les structures alternatives Résumé 1-if-else if () < Bloc d’instructions1> ; else ;

2- if sans else if () { < Bloc d’instructions1> ; } 3- Test Imbriqués if () ; else if () ; else . . else if () ; else < Bloc N+1> ;

4- Les opérateurs conditionnels ? : ; 5- Test multiples (switch) switch () { case constante-1 : [ ;] case constante-1 : [ ;] . . case constante-N : [ ;] [ défault : [ ;]] }

Ben Jabra Saoussen

Page : 13

Exercice 1 Soit le programme C suivant : #include void Main() { float a,b,x /*Résolution d’une équation du premier degré*/ print (Introduire la valeur de a :"); scanf ("%f" ,a); printf ("Introduire la valeur de b :"); scanf ("%f" ,b); if (a = 0) if (b= =0) prntf ("Infinité de solution"); else printf ("Pas de solution"); else { x = =-b/a printf ("La solution = %3f\n ; &x); } 1-Saisir ce programme source avec l’éditeur de texte. 2- Sauvegarder ce programme source sous le nom TP2_EX1 dans votre répertoire. 3-Compiler le programme TP2_EX1 pour effectuer la correction. 4-Exécuter ce programme et introduire des valeurs.

Notes Personnelles

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

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

Exercice 2 On considère 3 variables entières positives x, y et z . 1-Ecrire un programme permettant de : a- de déclarer l’entier positif x. b- de saisir un entier x. c- d’insérer le commentaire. d- si x est pair afficher un message signalant que x est pair sous la forme suivante " x est pair" 2- Sauvegarder ce programme source sous le nom TP2_EX2 dans votre répertoire. 3-Compiler le programme TP2_EX2 pour effectuer la correction. 4-Exécuter ce programme et introduire des valeurs. 5- Modifier ce programme pour qu’il puisse afficher, dans le cas ou x n’est pas pair, un massage signalant que x est impair. Ben Jabra Saoussen

Page : 14

6- Enregistrer les modifications, compiler et exécuter le programme. 7- Ajouter au programme les déclarations des entiers positif x et y. 8- Saisir les valeur de y et z. 9- Insérer, après la dernière instruction, le commentaire suivant : " Partie 2 : Parité de deux entiers". 10- Ajouter l’instruction permettant de dire si x et y sont de même parité. 11- Enregistrer les modifications, compiler et exécuter le programme. 12- Insérer, après la dernière instruction, le commentaire suivant : " Partie 3 : une des trois variables est paire". 13- Ecrire l’expression ainsi que l’instruction nécessaire permettant de dire l’une au moins des trois variables est paire. 14- Enregistrer les modifications, compiler et exécuter le programme. 15- Insérer, après la dernière instruction, le commentaire suivant : " Partie 4 : Parité entre trois variables". 16- Ecrire l’expression ainsi que l’instruction nécessaire permettant de dire que deux d’entre elles au moins ont la même parité. 17- Enregistrer les modifications, compiler et exécuter le programme. 18- Insérer, après la dernière instruction, le commentaire suivant : " Partie 5 : deux variables, exactement, parmi les trois sont de même parité". 19- Ecrire l’expression ainsi que l’instruction nécessaire permettant de dire qu’exactement deux sur les trois sont paires. 20- Enregistrer les modifications, compiler et exécuter le programme. 21- Le programme est ainsi formé de 5 parties, on désire activer à chaque exécution une seule de ces parties, suivant le choix de l’utilisateur. Ajouter les modifications nécessaires pour avoir ce résultat.

Notes Personnelles ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. …………………………………………………… ……………………………………………………. …………………………………………………… ……………………………………………………. ……………………………………………………. …………………………………………………… ……………………………………………………. …………………………………………………… …………………………………………………… ……………………………………………………. …………………………………………………… ……………………………………………………. ……………………………………………………. …………………………………………………… ……………………………………………………. ……………………………………………………. …………………………………………………… ……………………………………………………. …………………………………………………… …………………………………………………… Ben Jabra Saoussen

…………………………………………………… ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. …………………………………………………… ……………………………………………………. …………………………………………………… ……………………………………………………. …………………………………………………… ……………………………………………………. …………………………………………………… ……………………………………………………. …………………………………………………… ……………………………………………………. ……………………………………………………. …………………………………………………… ……………………………………………………. ……………………………………………………. …………………………………………………… ……………………………………………………. …………………………………………………… …………………………………………………… Page : 15

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

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

Exercice 3 Ecrire un programme C qui permet de lire un entier N (On suppose qu’il est de 4 chiffres) et déterminer : ¾ le plus grand chiffre et ¾ la position du plus grand chiffre. Remarque : ¾ on suppose que les chiffres de N sont différents ¾ Les positions des chiffres sont numérotées de la gauche vers la droite en commençant par 1. Exemple : Donner l’entier N

:

1925

Résultat Le plus grand chiffre est 9 et sa position = 2

Notes Personnelles

……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. …………………………………………………… ……………………………………………………. …………………………………………………… ……………………………………………………. …………………………………………………… …………………………………………………… ……………………………………………………. …………………………………………………… ……………………………………………………. …………………………………………………… Ben Jabra Saoussen

…………………………………………………… ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. …………………………………………………… ……………………………………………………. …………………………………………………… …………………………………………………… ……………………………………………………. …………………………………………………… ……………………………………………………. …………………………………………………… Page : 16

Exercice 4 1- Ecrire un programme qui permet de saisir 2 nombres flottants et un caractère et qui fournit un résultat correspondant à l’une des 4 opérations appliquées à ses deux réels, en fonction de la valeur du dernier, à savoir : ♦ Addition pour le caractère +, ♦ Soustraction pour -, ♦ Multiplication pour *, ♦ Division / Remarque : ™ Tout autre caractère que l’un des 4 cités sera erroné. ™ On tiendra compte des risques de division par zéro.

Notes Personnelles

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

Ben Jabra Saoussen

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

Page : 17

TRAVAUX PRATIQUES N°3 Les structures répétitives Résumé 1-while while() { < Bloc d’instructions> ; }

2- for for() ; ; ) { < Bloc d’instructions> ; } ¾ Est équivalente à : ; while() { < Bloc d’instructions> ; ; } 3- do-while do { < Bloc d’instructions1> ; } while () ;

4- Choix de la structure répétitive •

Si le bloc d'instructions ne doit pas être exécuté si la condition est fausse, alors utilisez while ou for.



Si le bloc d'instructions doit être exécuté au moins une fois, alors utilisez do - while.



Si le nombre d'exécutions du bloc d'instructions dépend d'une ou de plusieurs variables qui sont modifiées à la fin de chaque répétition, alors utilisez for.



Le choix entre for et while n'est souvent qu'une question de préférence ou d'habitudes.

Ben Jabra Saoussen

Page : 18

Exercice 1 #include void main() { int n,d; printf("Donner un entier :"); scanf("%d",&n); d=2; while((d*d)0, b>0 et a>b). ¾ calcule et affiche le PPCM de a et b.

Notes Personnelles

……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. Ben Jabra Saoussen

…………………………………………………… ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. Page : 19

Exercice 3 On se propose de chercher parmi les entiers de l’intervalle [ a , b ] ( 2 ≤ a ≤ b ≤ 10 ) celui qui représente le plus grand diviseur d’ un entier donné N ( 20 < N < 50 ) Ecrire un programme C permettant de chercher puis afficher cet entier. N.B

: a et b sont deux entiers saisis à partir du clavier, N est un entier saisi à partir du clavier.

Exemple : Si

a = 2 et b = 9 N = 40

Résultat :

le plus grand diviseur de 40 de [ 2 , 9 ] = 8

Notes Personnelles ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. ……………………………………………………. …………………………………………………….

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

Exercice 4 On veut saisir des réels représentant les moyennes générales des N étudiants d’une classe, sachant que chaque étudiant a une seule moyenne générale. Le nombre des étudiants est saisi à partir du clavier (5
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF