Université Mohammed Premier Ecole Nationale des Sciences Appliquées - Oujda Fil
Université Mohammed Premier Ecole Nationale des Sciences Appliquées - Oujda Filière STPI (2ère année) Prof. R. MALEK 2018/2019 TP avec corrections - Langage C Filière STPI Pr. Rachid MALEK Langage C – CP2 R. MALEK TP 1 – Généralités sur le langage C Les objectifs du TP1 : Se familiariser avec DevC++, compiler et exécuter les deux exemples et faire sortir les aspects fondamentaux du langage C (structure générale, la fonction main, déclarations, …) Exemple 1 // Directives au pré-processeur - Ceci est un commentaire #include <stdio.h> #include <math.h> main ( ) // Fonction principale { // Déclaration des variables - Ceci est un commentaire int i ; float x ; float racx ; printf ("Bonjour\n") ; // Affichage sur l'écran - Ceci est un commentaire printf ("\n") ; // Retour à la ligne - Ceci est un commentaire printf ("Calcul de 5 racines carrées\n") ; // Affichage sur l'écran - Ceci est un commentaire printf ("\n") ; // Retour à la ligne - Ceci est un commentaire // Boucle - Ceci est un commentaire for (i=0 ; i<5 ; i++) { printf ("Donnez un nombre réel x :\n ") ; scanf ("%f", &x) ; // Saisie au clavier de x - Ceci est un commentaire // Test - Ceci est un commentaire if (x < 0.0) printf ("Le nombre %f ne possède pas de racine carrée\n", x) ; else { racx = sqrt (x) ; printf ("Le nombre %f a pour racine carrée : %f\n", x, racx) ; } // Fin du test - Ceci est un commentaire } // Fin de la boucle - Ceci est un commentaire printf ("Travail terminé\n") ; getch ( ); } // Fin du programme - Ceci est un commentaire Exemple 2 #include <stdio.h> main ( ) { char op ; int n1, n2 ; printf ("opération souhaitée (+ ou *) ?\n ") ; scanf ("%c", &op) ; printf ("donnez 2 nombres entiers : \n") ; scanf ("%d %d", &n1, &n2) ; if (op == '+') printf ("leur somme est : %d \n", n1+n2) ; else printf ("leur produit est : %d \n", n1*n2) ; getch ( ); } // Fin du programme Langage C – CP2 R. MALEK TP 2 – Les types de base en langage C L’objectif du TP2 : Manipuler les types de base (int, short int, long int, float, double, long double, char) Exercice 1 Ecrire un programme qui affiche le nombre d’octets réservés sur votre machine pour les types : - int, short int et long int - float, double et long double - char Utiliser la fonction sizeof ( ) dans un printf ( ). Exemple : printf ("La taille en octets d'un entier (int) est : %d \n", sizeof (int)) ; Exercice 2 Soient les déclarations suivantes : int i; short int j ; long int k ; float x ; double y ; long double z; char c ; Ecrire un programme qui lit au clavier toutes ces variables et affiche leur adresse ainsi que leur valeur respective. Quel est l’ordre de placement de ces variables en mémoire ? Pour afficher l’adresse d’une variable var, utilisez &var dans un printf ( ). Exemple pour float x : printf ("La valeur de x est : %f et son adresse est : %d \n", x, &x); Exercice 3 Ecrire un programme qui lit un caractère au clavier et affiche le caractère ainsi que son code numérique (code ASCII). Exercice 4 Ecrire un programme qui lit au clavier les valeurs de trois résistances et de trois capacités et calcule leur résistance et leur capacité équivalente, respectivement, dans les deux cas : - Les trois résistances et les trois capacités sont placées en série - Les trois résistances et les trois capacités sont placées en parallèle Les résultats doivent être affichés dans chaque cas. Toutes les variables utilisées dans ce programme doivent être déclarées avec le type double. Exercice 5 Soient les déclarations suivantes : int i ; float f ; char c ; c = 98 ; // commenter cette instruction c = (char) 98; // commenter cette instruction i = 'a' ; // commenter cette instruction i = (int) 'a' ; // commenter cette instruction f = 3 ; // commenter cette instruction f = (float) 3 ; // commenter cette instruction i = 3.4 ; // commenter cette instruction i = -3.3 ; // commenter cette instruction i = (int) 3.4 ; // commenter cette instruction Langage C – CP2 R. MALEK Eléments de réponses - TP2 Exercice 1 printf ("Le nombre d’octets réservés pour un entier est : %d\n", sizeof (int)); Même chose pour les autres types. Exercice 2 printf("L’adresse de la variable i est : %d\n", &i); Même chose pour les autres variables. Exercice 3 #include <stdio.h> main() { double R1, R2, R3, Rs, Rp; printf("Introduisez les valeurs pour R1, R2 et R3 : "); scanf("%lf %lf %lf", &R1, &R2, &R3); Rs = R1+R2+R3; printf("Résistance résultante en série : %f\n", Rs); Rp = (R1*R2*R3)/(R1*R2+R1*R3+R2*R3); printf("Résistance résultante en parallèle : %f\n", Rp); return 0; } Exercice 4 #include <stdio.h> #include <conio.h> main() { int c; printf("Introduire un caractère \n"); c = getch(); printf("Le caractère %c a le code ASCII %d\n", c, c); getch() ; // juste pour garder la fenêtre de l’exécution return 0; } Exercice 5 // conversion entier vers char. c=98; // implicite : c prend le code ASCII 98 c-à-d ’b' c = (char) 98; // explicite plus propre // char vers entier i= 'a' ; // i prend la valeur 97 i= (int) 'a' ; //plus propre // entier vers réel f=3; // f prend la valeur 3.0; f=(float) 3; //+ propre //réel vers entier, attention : troncature i = 3.4; // i prend la valeur 3 i= -3.3; // i prend la valeur -3 i = (int) 3.4; // + propre Langage C – CP2 R. MALEK TP 3 – Les opérateurs et les expressions en langage C Les objectifs du TP3 : Manipuler les différents opérateurs et les expressions en langage C. Exercice 1 Evaluer les expressions suivantes en supposant : A=20 B=5 C=-10 D=2 X=12 Y=15 (1) (5*X)+2*((3*B)+4) (2) (5*(X+2)*3)*(B+4) (3) A == (B=5) (4) A += (X+5) (5) A != (C *= (-D)) (6) A *= C+(X-D) (7) A %= D++ (8) A %= ++D (9) (X++)*(A+C) (10) A = X*(B<C)+Y*!(B<C) Exercice 2 Ecrire un programme qui permute les valeurs de trois variables entières A, B et C. A prendra la valeur de C, B celle de A et C celle de B. Afficher le résultat final. Exercice 3 Ecrire un programme qui calcule la distance entre deux points A et B du plan Oxy. Le programme doit lire les coordonnées de A et B. Afficher le résultat final. Exercice 4 Ecrire un programme qui lit trois nombres entiers A, B et C et affiche leur valeur maximale. Utiliser les trois méthodes suivantes : a) if - else et une variable d'aide MAX b) if - else if - ... - else sans variable d'aide c) opérateur conditionnel ? et une variable d'aide MAX Exercice 5 Ecrire un programme qui lit trois nombres entiers A, B et C et effectue un tri par ordre décroissant de ces derniers en échangeant leur valeur. Introduire une variable AIDE. Exercice 6 Ecrire un programme qui calcule les solutions réelles d’une équation du second degré. On supposera que les coefficients a, b et c sont des nombres entiers. Exercice 7 Ecrire un programme qui affiche le signe du produit de deux entiers A et B sans faire la multiplication. Langage C – CP2 R. MALEK Eléments de réponses – TP3 Exercice 1 (1) (5*X)+2*((3*B)+4) -> 98 / (2) (5*(X+2)*3)*(B+4) -> 1890 / (3) A == (B=5) -> 0 B=5 (4) A += (X+5) -> 37 A=37 (5) A != (C *= (-D)) -> 0 C=20 (6) A *= C+(X-D) -> 0 A=0 (7) A %= D++ -> 0 D=3 A=0 (8) A %= ++D -> 2 D=3 A=2 (9) (X++)*(A+C) -> 120 X=13 (10) A = X*(B<C)+Y*!(B<C) -> 0+15 = 15 A=15 Exercice 2 #include <stdio.h> main() { int A, B, C, AIDE; printf("Introduisez trois nombres (A, B, C) : "); scanf("%d %d %d", &A, &B, &C); /* Affichage à l'aide de tabulations */ printf("A = %d\tB = %d\tC = %d\n", A, B, C); AIDE=A; A=C; C=B; B=AIDE; printf("A = %d\tB = %d\tC = %d\n", A, B, C); return 0; } Exercice 3 #include <stdio.h> #include <math.h> main() { int XA, YA, XB, YB; double DIST; /* Attention: La chaîne de format que nous utilisons */ /* s'attend à ce que les données soient séparées par */ /* une virgule lors de l'entrée. */ printf("Entrez les coordonnées du point A : XA,YA "); scanf("%d,%d", &XA, &YA); printf("Entrez les coordonnées du point B : XB,YB "); scanf("%d,%d", &XB, &YB); DIST=sqrt(pow(XA-XB,2)+pow(YA-YB,2)); printf("La distance entre A(%d,%d) et B(%d, %d) est %.2f\n", XA, YA, XB, YB, DIST); return 0; } Exercice 4 a) if - else et une variable d'aide MAX #include <stdio.h> main() uploads/Litterature/ tp-avec-corrections-langage-c-filiere-stpi-pr-rachid-malek.pdf
Documents similaires
-
17
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Jui 04, 2022
- Catégorie Literature / Litté...
- Langue French
- Taille du fichier 1.5457MB