Vous êtes sur la page 1sur 25

BASE LANGAGE C

#include <stdio.h>

#include <stdlib.h>

int main()

printf("Hello world!\n");

return 0;

ANALYSE :

#include <stdio.h>

#include <stdlib.h>

Des lignes spéciales que l’on ne retrouvent qu’en début de code. Ces lignes sont
reconnaissables par le signe dièse #.

Le mot include demande d’inclure des fichiers au projet pour la compilation. Il joue le même
rôle que les framework.

Un framework est, comme son nom l’indique en anglais, un « cadre de travail ». L’objectif d’un
framework est généralement de simplifier le travail des développeurs, en offrant une
architecture prête à l’emploi.

Deux fichiers sont inclus :

stdio.h

stdlib.h

sont des bibliothèques de code qui vont nous permettre d'afficher du texte à l'écran.

Les bibliothèques
Les fonctions sur les nombres <math.h>

• cos() cosinus.

• sin() sinus.

• tan() tangente.

• exp() exponentielle (ex).

• log() logarithme népérien.

• log10() logarithme décimal.

• modf() décomposition en partie entière et décimale d'un réél.

• pow() élévation à la puissance (xy).

• sqrt() extraction de racine carrée.

• ceil() calcul de l'entier inférieur le plus proche (fonction plancher).

• fabs() valeur absolue.

• floor() calcul de l'entier supérieur le plus proche (fonction

plafond).

• fmod() reste de la division.

int main()

printf("Hello world!\n");

return 0;

Le langage C est constitué de fonctions. Chaque fonction permet de rassembler plusieurs


commandes (les instructions).

Ici nous avons déclarer une fonction qui s’intitule main.

main est la fonction principale de votre programme, c'est toujours par la fonction main que le
programme commence.
Les accolades { et } délimitent le début et la fin de la fonction et les lignes entre les accolades
sont les instructions.

Toute instruction se termine obligatoirement par un point-virgule ;

\n est un caractère spécial qui permet d’aller à la ligne

Déclaration variable
· indiquer le type de la variable que l'on veut crée
· Indiquer le nom de la variable

Exemple pour créer la variable somme_tot

Int somme_tot ;

Les mots réservés à la création d’une variable :

auto, break, case, char, continue, const, default, do, double, else, extern, float, for, goto, if, int,
long, register, return, short, sizeof, static, struct, switch, typedef, union, unsigned, while

Les types de données :


Affectation valeur à une variable
Ex : somme_tot=345 ;

Déclaration constante
Const int SOMME_TOT=777 ;

En plus du mot clé const, par convention on écrit le nom de la constante en majuscule pour
mieux distinguer les constantes des variables.

Afficher contenu d’une variable


printf("mon age est %d \n",age);

Explication :

%d indique ce que l’on doit afficher

%d=int

%u=usigned int

%ld=long*

%f=double et float ...


Saisie clavier
Pour demander à l'utilisateur d'entrer quelque chose dans la console, on va utiliser scanf.

• Syntaxe :

Scanf ("formats d'affichage", variable1, variable2,...,variablen) ;

• Remarque : Seules les variables scalaires (entiers, réels et caractères)

doivent être précédées de &.


Les Opérateurs
+ addition

— soustraction

/ division

* multiplication

% reste d’une division euclidienne

Les Opérateurs de pas


i = i + 20; i += 20;

i = i - 20; i -= 20;

i = i * 20; i *= 20;

i = i / 20; i /= 20;

Les Opérateurs logiques


Les opérateurs logiques sont, par ordre décroissant de priorité :

! Non logique

> >= < <= Test de supériorité et d'infériorité

== et != Test d'égalité et d'inégalité

&& et || ET et OU logique
Les conditions
Structure de base :

if (/* la condition condition */)

else if ( /* la condition condition */ )

else // Sinon...

Il est possible de définir plusieurs conditions à remplir avec les opérateurs ET (&&) , OU ( || ) et
NON (!).

Exemple avec ET : pour inscrire son enfant au jardin, catégorie petite section, l’âge minimum
est 2 ans et l’âge maximum est 4 ans.

Exemple avec OU : Pour inscrire son enfant au CPS, soit l’enfant à une moyenne en classe de
terminale >=13, soit il fait un test de niveau avec une moyenne >=15.

La boucle while (tant que)


Une boucle permet de de répéter les mêmes instructions n fois

Structure de base

while (/* Condition */)

// Instructions à répéter

}
/*Créer un programme qui permet de saisir l'année en cours

tant que la bonne année n'est pas saisie alors afficher

Vous n’ avez pas saisie la bonne reponse !

*/

La boucles FOR
C’est en quelque sorte un condensé de while

Structure

For (initialisation ;condition ;incrementation)

//Les instructions à répéter

Exemple :

Explication :

i = 0 initialise la variable i à 0. Il suppose l’existence préalable de la


· variable i
i < 10 constitue la condition pour entrer dans la boucle (c’est la
· condition qui autorise l’exécution du bloc d’instructions de la boucle).
i = i + 1 correspond à l’incrémentation (on remplace parfois en i++ à
· la fin de chaque boucle).

Organiser notre code avec les fonctions


Structure de base d’une fonction

type Nom_Fonction(parametres)

// instructions

Appeler fonction dans main


Structure de base

int main()

int saisie_nombre, resultat;

resultat = Nom_Fonction(saisie_nombre);

TABLEAU A UNE DIMENSION

Imaginons que dans un programme, nous ayons besoin simultanément de 50 valeurs (par
exemple, des notes pour calculer la moyenne d’une classe).

La seule solution dont nous disposons a l’heure actuelle consiste a déclarer 50 variables.

Exemple Note1, Note2, Note3, etc.

Arriver au calcul on aura :

Moyenne=(Note1 + Note2 + Note3 + ...... Note50) / 50

Heureusement, les langages de programmation offrent la possibilité de rassembler toutes ces


variables dans une seule structure de donnée appelée tableau.

Un tableau est donc un ensemble de valeurs portant le mème nom de variable et repérées par
un nombre, ou encore une variable indicée.

Et le nombre qui sert à repérer chaque valeur s’appelle un indice.

Définir un tableau
Dans notre exemple, de la classe avec 50 élèves : int tableau[50];

NB : Un tableau par défaut commence par l'indice n 0 !

Notre tableau de 50 int a donc les indices 0, 1, 2 ... 49.


Syntaxes:

for (i=0; i<=N; i++) { ... }

Déclaration nécessite trois informations :

– Le type des éléments du tableau ;

– le nom du tableau (son identificateur) ;

– la taille du tableau (le nombre d’éléments qui le composent)

Exemple 1: on déclare un tableau nommé Tab1 de 04 entiers

int Tab1[4];

Exemple 2: on déclare un tableau TabP de 10 chaines de caractères

char TabP[10];

Initialisation = Action de déclarer un tableau et de lui donner ses premières valeurs

int tab[3] = { 12, 24, 73 };

Il est possible d’initialiser sans donner la taille du tableau

int tab[] = { 1, 2, 3 };

Accéder aux éléments dans un tableau

– On utilise l’indice i

• tab [i] avec i étant l’indice (numéro de la cellule)

– Exemple d’utilisation :

• tab [3] = 12;

( Mettre la valeur 12 dans la case numéro 3 du tableau)

• printf ("%d", tab [3])

(affiche la valeur numérique contenue dans la case numéro 3 du tableau)


• tab [3] = tab [3] + 2 ;

(Ajoute 2 à la valeur contenue dans la case numéro 3 du tableau et le remttre dans la


meme cellule tab [3] )

Exemple: Si elle contenait auparavant la valeur 12, elle contiendra à présent la valeur
14.

Parcourir d’un tableaux


On utilise une boucle FOR allant i=0 à M

– 0 est le premier indice

– M est l’indice maximal du tableau (M=N-1) ou N est le nombre

d’éléments

for (i=0; i<=M; i++) { ... }

for (i=0; i<N; i++) { ... }

Exemple pour parcourir et afficher les éléments d’un tableau :

Int tab[3], i ;

tab[0]= 6 ;

tab[1]= 9 ;

tab[2]= 4 ;

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

Printf (« %d \n», tab[i] ) ;

Return 0 ;
TABLEAU A DEUX DIMENSIONS

Un tableau à deux dimensions contient donc L x C composantes.

– L le nombre de lignes

– C le nombre de colonnes.

– L et C sont alors les deux dimensions.

Déclaration d’un tableau à deux dimensions

– Le type des éléments du tableau ;

– le nom du tableau (son identificateur) ;

– La taille des différentes dimensions (Nombre de lignes et Nombre

de colonnes).

Type NomduTableau [Nb lignes] [Nb colonnes];


Exemple :

• int tab[10][15];

– On déclare un tableau de type int, de nom tab contenant 10 lignes et


15 colonnes.

• char cps [20][4];

– On déclare un tableau de type char, de nom cps contenant 20 lignes et


4 colonnes.

Initialisation d’un tableau à deux dimensions


Exemple 1 :

char Presidentiel [2][2] = { { ’Macky’, ’SALL’ }, { ’Ousmane’, ’SONKO’ } } ;

Macky SALL
Ousmane SONKO

Exemple 2 :

int Tab [3][2] = { { 1, 22 }, { 15, 33 }, { 76, 44 } } ;

1 22
15 33
76 44

Accès aux éléments d’un tableau à deux dimensions


Parcourir les éléments d’un tableau à deux dimensions
– i pour les lignes 0 à L

– j pour les colonnes 0 à C

On utilise deux boucles FOR imbriquées

– La première boucle i pour les lignes for (i=0;i<L; i++)

– La seconde boucle j pour les colonnes for (i=0;i<C; i++)

Exemple :

Code Resultat

int main() 10 13
{ 11 2
int tab[3][2] = 34 56
{
{10 , 13 }, tab[0][0] = 10
{ 11, 2 }, tab[0][1] = 13
{ 34, 56 } tab[1][0] = 11
},i,j; tab[1][1] = 2
tab[2][0] = 34
tab[2][1] = 56
for (i = 0; i < 3; ++i)
{ Process returned 0 (0x0) execution time :
for (j = 0; j < 2; ++j) 0.197 s
{ Press any key to continue.
printf("tab[%d][%d] = %d\n", i, j, tab[i][j]);
}
}
return 0;
}
TP TABLEAU A DEUX DIMENSIONS

TP1 /

Créer un tableau à 2D de 4 lignes et 5 colonnes.

Initialiser le tableau :

4 6 7 9 56

1 0 67 8 9

7 3 2 1 78

5 3 2 1 0

Afficher le contenu du tableau

TP2 /

Créer un tableau à 2D de 4 lignes et 4 colonnes.

Initialiser le tableau :

4 6 7 9

1 0 67 8

7 3 2 1

5 3 2 1

Afficher que les nombres impairs du tableau

TP3 /

Créer un tableau à 2D de 4 lignes et colonnes.

Initialiser le tableau :

4 6 7 9

1 0 67 8

7 3 2 1

5 3 2 1

Afficher que les nombres pairs du tableau


TP4 /

Créer un programme qui demande à l’utilisateur d’indiquer le nombre de lignes et le nombre de


colonnes.

Demander à l’utilisateur de saisir un chiffre sur chaque élément du tableau à 2D.

Afficher le contenu du tableau à 2D

Calculer et afficher la somme des éléments des colonnes

Calculer et afficher la somme des éléments des lignes

Calculer et afficher la somme de tous les éléments du tableau

TP5/

1/ demander à l'utilisateur de saisir le nombre de colonnes et de lignes pour créer un tableau à


deux dimensions

2/ demander à l'utilisateur de remplir le tableau avec des valeurs

3/ afficher le tableau

4/ faire un filtre sur le tableau pour trouver le nombre max et afficher sa position

5/ faire un filtre sur le tableau pour trouver le nombre min et afficher sa position

TP6/

Un homme d’affaires dirige une entreprise d’élevage et de vente de poulets.

Prix des poulets : 2500, 3000 et 4000.

(les colonnes= mois, la 1ere ligne les poulets de 2500, la 2eme ligne : poulets 3000, la
3eme ligne : poulets 4000)

Créer une matrice qui :

1/ Permet de saisir le nombre de V pour les trois catégories de poulets durant la période de
janvier à juin.

2/ Afficher toutes les ventes

3/Sachant que l’homme d’affaires à un bénéfice de 25% sur la vente de chaque poulet, quel
mois est le plus rentable ?
LES CHAINES DE CARACTERES (#include <string.h>)

Les chaînes de caractères désignent du texte.

Dans un programme on utilise les chaînes de caractères pour manipuler des mots, des
dialogues, des jeux, des messages...

En C on peut aussi définir une chaîne de caractères comme un tableau de caractères (de type
char).

Le moyen le plus simple de déclarer une chaîne de caractères et de l’initialiser est :

Char caractere [ ]= « Bonjour Monsieur » ;

Char= type,

Caratere= nom du tableau,

[ ] = taille du tableau (dans cet exemple la taille du tableau est vide donc le programme se
charge lui même de calculer le nombre de caractères).

« Bonjour Monsieur »= initialisation du tableau

Maintenant affichons le message « Bonjour Monsieur »

Printf(« %s \n»,caractere) ;

RESULTAT : notre programme calcul le nombre exacte de caractères et affiche tout le


texte.

Nous pouvons aussi définir une taille à notre tableau de chaîne de caractères

Exemple : char classe[5]= « cps2 » ;

Remarque1 : cps2 est composé de 4 caractères et nous avons déclaré 5 caractères à


l’initialisation.

Explication :

Notre tableau est composé de la sorte :

[‘c’][‘p’][‘s’][‘2’][‘\0’] ;
[‘\0’] marque la fin de notre chaîne de caractères.

Si la fin d’une chaîne de caractères n’est pas définie soit notre programme bug en utilisant une
zone de la mémoire non autorisée soit tous les caractères ne s’affichent pas.

Remarque 2 : Ce n’est qu’à l’initialisation du tableau qu’on peut écrire du texte c’est à dire
qu’on ne peut pas faire cette pratique :

Char classe [5];

Et à la suite suite du programme faire ceci :

Classe= « cps2 » ;

QUELQUES FONCTIONS UTILES

La fonction de copie (strcpy)

Syntaxe :

Strcpy(destination,valeur à copier dans la variable de destination) ;

Objectif : copier les valeurs d’une chaîne de caractères à une autre

Exercice :

– Créer une chaîne de caractères (classe) et l’initialiser à « CPS2A »


– Afficher la classe actuelle
– Créer une autre chaîne de caractères (memorise_classe) et demander à l’utilisateur de
changer sa classe
– Utiliser la fonction strcpy pour copier la valeur de memorise_classe vers classe
– Afficher la chaîne de caractères classe avec les nouvelles valeurs

La fonction pour comparer deux chaînes de caractères (strcmp)

Syntaxe : strcmp(chaîne1,chaîne2) ;

Remarque : si deux chaînes de caractères sont exactes alors, la fonction strcmp revoie la
valeur zero (0) ;

Exercice :

– Créer deux chaînes de caractères c1 et c2


– Saisir c1 et c2
– Comparer c1 et c2
– Si les deux chaînes sont identiques afficher le message « BRAVO »
– Sinon afficher le message « ERROR »

La fonction pour calculer la taille d’une chaîne de caractères (strlen)

Syntaxe :

Strlen(chaîne_caractères) ;

Exercice :

– Créer une chaîne de caractères prénom


– Demander à l’utilisateur de saisir son prénom
– Tant que le prénom est > à 10 caractères, afficher le message « vous avez un prénom
kilométrique, veuillez diminuer le nombre de caractères
– Sinon afficher le message « WELCOME »

La fonction pour concaténer deux chaînes de caractères (strcat)

Syntaxe :

Strcat(chaine1,chaine2) ;

Exercice :

– Creer une chaîne de caractères chaine1 et l’initialiser « Noface et »


– Creer une deuxième chaîne de caractères et l’initialiser « Mya »
– Concaténer les deux
La fonction pour chercher une chaîne de caractères dans une autre chaîne de caractères
(strstr)

Syntaxe :

Strstr(chaîne1,chaîne2 à chercher dans chaîne1) ;

Remarque : si la chaîne2 est dans la chaîne1 alors le résultat trouvé sera différent de NULL

(!= NULL).

Exercice :

– Créer une chaîne de caractère chaine1 et l’initialiser « welcome to cps2 »


– Créer une deuxième chaîne de caractères chaine2
– Demander à l’utilisateur de saisir un mot
– Si chaine2 est dans chaine1 alors afficher « BRAVO »
– Sinon afficher « ERROR »

Autre méthode pour gérer la saisie avec gets

Exemple :

Char chaine [15] ;

Gets(chaine) ;

Autre méthode pour gérer l’affichage avec puts

Exemple :

puts(chaine) ;

Exercice avec gets et puts

Écrire un programme qui permet de :

– Saisir une chaîne de caractères


– Afficher la chaîne de caractères
TP1/

1/ Demander à l’utilisateur de saisir une chaîne de caractères

2/ Afficher la chaîne de caractères

3/ Calculer et afficher la longueur d’une chaîne de caractères sans utiliser la fonction strlen.

TP2/

Écrire un programme qui permet de calculer le nombre d’apparition d’un caractère dans une
chaîne de caractères.

1/ Demander à l’utilisateur de saisir une chaîne de caractères

2/ Afficher la chaîne de caractères

3/ Saisir un caractère à rechercher sur la chaîne de caractères

4/Calculer et afficher le nombre d’apparition du caractère sur la chaîne de caractères

TP3/

Écrire un programme qui permet de de calculer et d’afficher le nombre de mots dans une
chaîne de caractères.
Sécuriser la saisie avec fgets

Pour la saisie d’une chaîne de caractères, nous avons d’abord utilisé scanf.

La limite de la scanf est que elle s’arrête dès que notre chaîne de caractère tombe sur un
espace ou une tabulation.

La deuxième limite de scanf est que, à la déclaration de notre chaîne de caractères lorsqu’on
définie une taille au tableau exemple [6], normalement on peut saisir et afficher jusqu’à 5
caractères le dernier étant réservé à [\0].

Même si on saisie une chaîne largement supérieure, la fonction scanf continue à écrire la suite
de la chaîne . C’est ce qu’on appel un BUFFER ou un dépassement de mémoire.

Le dépassement de mémoire est très dangereux pour un programmeur car il risque d’écraser
d’autres informations.

Nous pouvons quand même améliorer la fonction scanf comme suite :

int main()

char nom[5];

printf("Quel est votre nom ? ");

scanf("%5s", nom);

printf("votre nom est %s !\n", nom);

return 0;

Dans cet exemple, nous limitons l’affichage de la chaîne à 5 caractères mais le problème
demeure.

En effet même si ce programme n’affiche que 5 caractères, il garde toujours en mémoire les
caractères qui dépassent (BUFFER).
La deuxième fonction est la fonction gets qui règle le problème des espaces dans notre chaîne
de caractères mais qui ne contrôle toujours pas les « BUFFER » d’où la nécessité d’utiliser
FGETS.

Donc en résumé fgets permet de gérer les espaces, les tabulations, le nombre de caractères et
enfin l’effacement du « BUFFER ».

Syntaxe :

Fgets (NomTabChaine,taille,stdin) ;

Stdin est une fonction de la bibliothèque #include <stdio.h> pour le gérer le contrôle du clavier.

TP4/

Créer un programme qui gère un qcm de 5 questions.

Chaque question est / 4.

Donner à chaque fois une indication à l’étudiant du nombre de caractères qu’il doit saisir pour
trouver la bonne réponse.

Afficher la note de l’étudiant avec comme appréciation « Très bien » si sa note est comprise
entre 16 et 20, « Passable » si sa note est comprise entre 12 et 15 sinon afficher

« MAUVAISE NOTE »

NB : Utiliser la fonction fgets pour sécuriser la saisie.


LES FONCTIONS

Certains problèmes conduisent à des programmes longs, difficiles à écrire et à comprendre. On


les découpe en des parties appelées sous-programmes ou modules .

ü Les fonctions sont des modules (groupe d'instructions) indépendants désignés par un
nom. Elles ont plusieurs intérêts :

• permettent de mettre en commun les parties qui se répètent.

• permettent une structuration et une meilleure lisibilité des programmes

• facilitent la maintenance du code (il suffit de modifier une seule fois)

• les fonctions peuvent éventuellement être réutilisées dans d'autres programmes

ü Le rôle d'une fonction en programmation est similaire à celui d'une fonction en


mathématique : elle retourne un résultat à partir des valeurs des paramètres

En résumé : Les fonctions en C sont des blocs de code qui accomplissent une tâche
spécifique et qui peuvent être réutilisées dans un programme. Elles permettent de diviser
un programme en parties plus petites et plus faciles à gérer, ce qui rend le code plus
lisible et maintenable.

Déclaration et Définition d’une fonction :

type_fonction nom_fonction (type1 paramètre1, type2 parametre2...)


{
Instructions constituant le corps de la fonction
return ...
}

Exemple :
int addition(int a,int b)
{
Int c ;
c=a+b ;
Return c ;
}

ü Pour le choix d'un nom de fonction il faut respecter les mêmes règles que celles pour les
noms de variables

ü type_fonction est le type du résultat retourné

ü L'instruction return sert à retourner la valeur du résultat


Appeler une fonction :

Nom_fonction(parametre1,parametre2...) ;

TP1 /

Créer une fonction qui permet de calculer la surface d’une pyramide en prenant en compte la
base et la hauteur .

NB : Vous êtes libre de choisir la méthode de calculer la surface d’une pyramide mais je vous
conseille celle-ci :

1/ calculer la surface de base = coté * coté

2/ calculer les surfaces latérales= 2 * coté * hauteur

3/ surface totale = surface de base + surfaces latérales

TP2 /

Créer une fonction qui calcule la moyenne de 10 élèves

TP3 /

créer une fonction calculant la vitesse du son dans l'air en fonction de la température en degrés
Celsius,

de la pression de l'air en kilopascals et de l'humidité.

TP4 /

Créer une fonction qui calcule la vitesse du son dans l'eau en fonction de la température en
degrés Celsius et de la pression de l'eau en bars.

Vous aimerez peut-être aussi