Vous êtes sur la page 1sur 32

Bourasse Adam

Institut de formation aux métiers de l’industrie


automobile Kenitra

Rendu sur Langage C


Réaliser par : Bourasse Adam

Technicien spécialisé en système industriel


automatisé
SIA 1 2023/2024

Formatrice : MLLE CHBOUK Bouchra


Bourasse Adam

Compte Rendu sur le Langage C


I. Introduction
Le langage C est un langage de programmation a joué un rôle majeur dans le développement de
nombreux systèmes d'exploitation et logiciels.

II. Caractéristiques Fondamentales


1. Types de Données
Le langage C offre une gamme de types de données tels que int, float, double, char, etc., permettant
aux programmeurs de manipuler différents types de données de manière efficace.

2. Structures de Contrôle
Les structures de contrôle, comme les boucles (for, while,do..while), les boucles imbrique et les
instructions conditionnelles (if, else), offrent des mécanismes puissants pour contrôler le flux
d'exécution des programmes.

3. Fonctions
Les fonctions en C permettent d'organiser le code de manière modulaire. Elles sont définies avec un
en-tête (bibliothèques) , un corps (programme) et si nécessaire ,une valeur de retour.

III. Exemples Pratiques du TD 1


Exercice 1 :
Ecrire un programme qui demande l'année de naissance d'une personne,
puis il calcule et affiche l'âge de la personne.
Solution :
#include<stdio.h>
#include<stdlib.h>
int main(){
int naissance,age;

// Demande l’année de naissance à l’utilisateur


Bourasse Adam

printf("veuillez entrer l'annee de naissance d'une


personne");
scanf("%d",&naissance);
// Calcul l’âge de la personne
age=2023-naissance;
// affiche l’âge de la personne
printf("age d'une personne est %d",age); }

Exercice 2 :
Ecrire un programme qui demande à l'utilisateur de saisir deux réels X et Y et
qui affiche la puissance x.
Solution :
#include<stdio.h>
#include<math.h>
int main()
{
float x,y,puissance;

// Demander à l'utilisateur de saisir les valeurs de X et Y


printf("saisir deux reel xety");
scanf("%f %f",&x,&y);
// Calculer la puissance de X en Y
puissance=pow(x,y);
// Afficher le résultat
Bourasse Adam

printf("la puissance est %.2f ",puissance);


}

Exercice 3:
Ecrire un programme qui demande à l'utilisateur de taper le rayon d'une
sphère, puis calcule et affiche son volume.
Solution :
#include<stdio.h>
#include<math.h>
int main(){
float R,V;
char Pi=3.14;
// Demander à l'utilisateur de saisir le rayon de la sphère
printf("veuillez entre le rayon d'une sphere");
scanf("%f",&R);
// Calculer le volume de la sphère
V=(4/3)*Pi*pow(R, 3)
// Afficher le résultat
printf("le volume d'une sphere est %f",V);
}

Exercice 4:
Bourasse Adam

Ecrire un programme qui demande à l'utilisateur de saisir deux entiers A et B,


qui échange le contenu des variables A et B puis qui affiche A et B.
Solution :
#include<stdio.h>
int main(){
int A,C,B;

// Demander à l'utilisateur de saisir les valeurs de A et B


printf("saisir deux entier A et B");
scanf("%d%d",&A,&B);
// Échanger les valeurs de A et B en utilisant le variable C
C=A;
A=B;
B=C;
// Afficher les valeurs après l'échange
printf("echange le contenue %d%d",A,B);
}

Exercice 5:
Bourasse Adam

Ecrire un programme qui échange les contenus de deux données numériques


si elles sont de me même signe, sinon il met la somme des deux dans la
première donnée et leur produit dans la deuxième.
Solution :
#include<stdio.h>
#include<math.h>
int main(){
int A,B,C,D;

// Demander à l'utilisateur de saisir les deux nombres


printf("entre les valuers de A et B");
scanf("%d %d",&A,&B);
// Vérifier si les nombres ont le même signe
if((A>0 && B>0)||(A<0 && B<0)){
// Échanger les valeurs de num1 et num2
C=B;
B=A;
A=C;
printf("la valeur de %d", A);
printf("la valeur de %d",B);
} else{
// Mettre la somme dans num1 et le produit dans num2
C=A+B;
D=A*B;
C=A;
D=B;
printf("la somme est A=%d:",A);
Bourasse Adam

printf("le produit est B=%d:",B);


}
}

Exercice 6 :
Un magasin de reprographie facture 0,10dh les dix premières photocopies,
0,09dh les vingt suivantes et 0,08dh au-delà. Ecrire un programme qui
demande à l'utilisateur le nombre de photocopies effectuées et qui affiche le
coût total des photocopies.
Solution :
#include <stdio.h>
int main() {
int nombrePhotocopies;
float coutTotal;

// Demander à l'utilisateur le nombre de photocopies


printf("Entrez le nombre de photocopies effectuees : ");
scanf("%d", &nombrePhotocopies);
// Calculer le coût total
if (nombrePhotocopies <= 10) {
coutTotal = nombrePhotocopies * 0.10;
} else if (nombrePhotocopies <= 30) {
Bourasse Adam

coutTotal = 10 * 0.10 + (nombrePhotocopies - 10) *


0.09;
} else {
coutTotal = 10 * 0.10 + 20 * 0.09 +
(nombrePhotocopies - 30) * 0.08;
}
// Afficher le coût total des photocopies
printf("Le cout total des photocopies est : %.2f dh\n",
coutTotal);
}

Exercice 7 :
Ecrire un programme permettant de saisir trois notes (sur 20) d'un étudiant,
calculant sa moyenne et affichant cette moyenne avec la mention ("Très bien"
à partir de 16, "Bien" entre 14 et 16, "Assez bien" entre 12 et 14, "Passable"
entre 10 et 12. "Insuffisant" en dessous de 10).
Solution :
#include <stdio.h>
int main() {
float note1, note2, note3, moyenne;

// Demander à l'utilisateur de saisir les trois notes


printf("Entrez la premiere note (sur 20) : ");
Bourasse Adam

scanf("%f", &note1);
printf("Entrez la deuxieme note (sur 20) : ");
scanf("%f", &note2);
printf("Entrez la troisieme note (sur 20) : ");
scanf("%f", &note3);
// Calculer la moyenne
moyenne = (note1 + note2 + note3) / 3;
// Afficher la moyenne
printf("La moyenne est : %.2f\n", moyenne);
// Afficher la mention en fonction de la moyenne
if (moyenne >= 16) {
printf("Mention : Tres bien\n");
} else if (moyenne >= 14) {
printf("Mention : Bien\n");
} else if (moyenne >= 12) {
printf("Mention : Assez bien\n");
} else if (moyenne >= 10) {
printf("Mention : Passable\n");
} else {
printf("Mention : Insuffisant\n");
}
}
Bourasse Adam

Exercice 8:
En utilisant l'instruction switch, donner un programme qui demande deux
nombres entiers et l'une des opérateurs suivant : +,-,*,/puis effectue
l'opération correspond et affiche le résultat de cette opération.
Solution :
#include <stdio.h>
int main() {
int nombre1, nombre2;
char operateur;
double resultat;

// Demander à l'utilisateur de saisir deux nombres et un


opérateur
printf("Entrez le premier nombre : ");
scanf("%d", &nombre1);

printf("Entrez le deuxième nombre : ");


scanf("%d", &nombre2);
printf("Entrez l'operateur (+, -, *, /) : ");
scanf("%c", &operateur);
Bourasse Adam

// Utiliser switch pour effectuer l'opération correspondante


switch (operateur) {
case '+':
resultat = nombre1 + nombre2;
break;
case '-':
resultat = nombre1 - nombre2;
break;
case '*':
resultat = nombre1 * nombre2;
break;
case '/':
// Vérifier si la division par zéro est évitée
if (nombre2 != 0) {
resultat = (double)nombre1 / nombre2;
} else {
printf("Erreur : Division par zero.\n");
}
break;
default:
printf("Operateur non valide.\n");
}
// Afficher le résultat de l'opération
printf("Le resultat de l'operation est : %.2f\n",
resultat);
}
Bourasse Adam

Exercice 9:
Ecrire un programme qui demande un nombre de départ, et qui ensuite
affiche les dix nombres suivants en utilisant la boucle Pour. Par exemple, si
l'utilisateur entre le nombre 33, le programme affichera les nombres de 34 à
43.
Solution :
#include <stdio.h>
int main() {
int nombreDepart;

// Demander à l'utilisateur de saisir un nombre de départ


printf("Entrez un nombre de depart : ");
scanf("%d", &nombreDepart);
// Afficher les dix nombres suivants en utilisant la boucle
for
printf("Les dix nombres suivants sont :\n");
for (int i = 1; i <= 10; ++i) {
printf("%d\n", nombreDepart + i); }
}
Bourasse Adam

IV. Exemples Pratiques du TD 2


Exercice 1 : (tests imbriqués)
Ecrire un programme qui calcule et affiche-la ou les solutions d’une équation
du second degré de la forme ax2 + bx + c = 0
Solution :
#include<stdio.h>
#include<math.h>
main ( ) {
// Déclaration des variables
float a,b,c,D,x0,x1,x2,Re,Img;

// Affichage du message pour l'utilisateur


Printf ("résolution de l'equation ax2+ bx+ c=0 \n");
// Demande à l'utilisateur de saisir les valeurs de a, b et
c
Printf ("donne les val de a et b et c:\n");
scanf("%f %f %f", &a, &b, &c);
// Vérification du type d'équation et résolution
if(a==0){
Bourasse Adam

if(b==0){
if(c==0)
Printf ("tout reel est solution \n");
else
Printf ("pas de solution \n");
}
else{
Printf ("equation premier ordre :");
Printf ("\t x=%.3f", -c/b);
}
}
else{
// Calcul du discriminant
D=pow(b,2) -4*a*c ;
if(D>0){
// Deux solutions réelles distinctes
x1=(-b+sqrt(D))/2*a;
x2=(-b-sqrt(D))/2*a;
printf ( "l'equation admet deux solutions reels x1=
%.3f \n ,x1,x2");
}
else if (D==0){
x0=-b/2*a;
printf ( "l'equation admet une seule solution :
x0=%.3f" ,x0);
}
Bourasse Adam

else{
Re=-b/2*a;
Img=sqrt(-D)/2*a;
Printf ("l'equation admet deux solutions : \n x1=
%.3f+i%.3f \t x2=%.3f-i%.3f" ,Re,Img);
}}
}

Exercice 2 : (Programme qui affiche une direction à l’aide


de switch et break)
Ecrire un programme qui demande à l’utilisateur de saisir un nombre puis en
fonction du nombre saisi :
- 6 : affiche « le personnage va à droite ».
- 4 : affiche « le personnage va à gauche ».
- 8 : affiche « le personnage va en haut »
- 2 : affiche « le personnage va en bas »
-dans le cas d’un autre caractère, affiche : « erreur de saisie, le personnage
ne bouge pas ».
Solution :
#include <stdio.h>
int main(){
int nbr;
Bourasse Adam

// Demande à l'utilisateur de saisir un nombre


printf ( "veuiller saisir un nombre:" );
scanf("%d" , &nbr);
// Utilisation de l'instruction switch pour déterminer
l'action en fonction du nombre saisi
switch(nbr){
case 6 : printf ( "le personnage va à droite" );
break;
case 4 : printf ( "le personnage va à gauche" );
break;
case 8 : printf ( "le personnage va en haut" );
break;
case 2 : printf ( "le personnage va en bas" );
break;
default : printf ( "erreur de saisir,le personne ne bouge
pas" );
break;}

Exercice 3 : (Programme avec les boucles while … et do…


while)
Ecrire un programme qui demande un nombre de départ, et qui ensuite
affiche les dix nombres suivants en utilisant la boucle Pour. Par exemple, si
Bourasse Adam

l’utilisateur entre le nombre 33, le programme affichera les nombres de 34 à


43.

Solution :
#include <stdio.h>
int main(){
int N, i;
// Demande à l'utilisateur de saisir un nombre de départ
printf ( "veuiller saisir un nombre:" );
scanf( "%d",&N);
for ( i=N+1; i<=N+10; i++ );
Printf ( "%d\n" , i );
// i=N+1;
// while(i<=N+10){
// printf("%d\n",i);
// }
// do{
// printf("%d\n",i);
// i++; // }
While(i<=N+10) ; }
Bourasse Adam

Exercice 4 : (les tableaux)


Ecrire un programme qui déclare, remplisse et affiche un tableau de 10
entiers en les mettant tous à zéro.
Solution :
#include<stdio.h>
int main(){
// Déclaration et initialisation d'un tableau de 10 entiers
int i, T[10];

for (i=0; i<10; i++)


T[i]=0;
for (i=0; i<10; i++)
Printf("T[%d]=%d\n",i,T[i]);
Return 0; }
Bourasse Adam

Exercice 5 : (Produit scalaire)


Ecrire un programme qui effectue le produit scalaire de deux vecteurs de
même taille (3 éléments) représentés par des tableaux à une dimension.

Solution :
#include <stdio.h>
int main(){
float U[3], V[3], P;
int i;

printf("veuillez saisir les valeurs des vecteurs: \n");


for(i=0; i<3; i++){
printf("U[%d]=", i+1);
scanf("%f",&U[i]);
printf("V[%d]=", i+1);
Bourasse Adam

scanf("%f",&V[i]);
}
for(i=0; i<3; i++)
P= P + U[i]*V[i];
printf("le produit scalaires des deus vecteurs est:%.2f",P);
return 0 ;}

Exercice 6 :
Ecrire un programme qui demande à l’utilisateur de saisir 10 entiers qu’on
stocke dans un tableau T. Ensuite, le programme détermine et affiche le
minimum des éléments du tableau T.
Solution :
#include <stdio.h>
int main(){
int T[10];
// Déclaration d'un tableau de 10 entiers
int i, min;
// Déclaration de variables
Bourasse Adam

// Demande à l'utilisateur de saisir les éléments du


tableau
printf( "veuillez saisir les elements du tableau: \n" );
for(i=0; i<10; i++){
printf("T[%d]=", i+1);
scanf("%d",&T[i]);
}
min=T[0];
// Initialisation du minimum avec le premier élément du
tableau
// Recherche du minimum dans le tableau
for(i=1; i<10; i++){
if(min>T[i])
min=T[i]; }
// Affichage du minimum
printf( "le minimum des elements du tableau est: %d",
min);
return 0 ;}
Bourasse Adam

Exercice 7 :
Ecrire un programme qui demande à l’utilisateur de saisir de 10 entiers qu’on
stocke dans un tableau T. Ensuite on redemande à l’utilisateur de saisir un
entier n. l’objectif étant de chercher l’existence du nombre n dans T, le
résultat va s’afficher comme suit :
- Si n se trouve dans T : « n se trouve dans le tableau ».

- Si n ne se trouve pas dans T : « n ne se trouve pas dans le tableau ».


Solution :
#include <stdio.h>
int main() {
// Déclaration d'un tableau de 10 entiers
int tableau[10];

// Demande à l'utilisateur de saisir 10 entiers


printf("Veuillez saisir 10 entiers :\n");
for (int i = 0; i < 10; ++i) {
printf("Element %d : ", i + 1);
scanf("%d", &tableau[i]);
}
// Demande à l'utilisateur de saisir un entier n
int n;
printf("\nVeuillez saisir un entier n : ");
scanf("%d", &n);
// Recherche de l'existence de n dans le tableau
int existe = 0;
Bourasse Adam

for (int i = 0; i < 10; ++i) {


if (tableau[i] == n) {
existe = 1;
// Marquer que n a été trouvé et sortir de la boucle
break;
}
}
// Affichage du résultat
if (existe) {
printf("%d se trouve dans le tableau.\n", n);
} else {
printf("%d ne se trouve pas dans le tableau.\n", n); }
return 0;}
Bourasse Adam
Bourasse Adam
Bourasse Adam

 Solution :
 Exercice 1 :
Bourasse Adam

Exercice 2 :
Bourasse Adam

Exercice 3 :

Exercice 4 :
Bourasse Adam
Bourasse Adam
Bourasse Adam

Exercice 5 :
Bourasse Adam

V. Avantages et Limitations
Avantages
 Efficacité : Le langage C offre un contrôle direct sur la mémoire, permettant des
performances optimales.
 Portabilité : Les programmes C peuvent être facilement adaptés à différentes plates-formes.

Limitations
 Complexité : Manipuler directement la mémoire peut rendre le code complexe et sujet à des
erreurs.
 Absence d'Outils de Sécurité Intégrés : Contrairement à des langages plus récents, le C
n'inclut pas d'outils de sécurité intégrés, laissant la responsabilité de la sécurité aux
programmeurs.

VI. Conclusion
Le langage C demeure un choix populaire pour les projets nécessitant une optimisation des
ressources et une maîtrise totale du système. Cependant, les programmeurs doivent être conscients
des défis potentiels liés à la gestion de la mémoire

Vous aimerez peut-être aussi