LANGAGE C
1: Introduction
2:Concepts de stockage et affichage de données
3: Les conditions (structure Alternative)
4: Les boucles (structure répétitive)
5: Les Tableaux vecteurs
6: Les Fonctions et procédures
7: Les chaines de caractères
8 : Les Tableaux matrices
9: La Recursivité
10 : Les Pointeurs
11: Les Structures
12: Les Ficchiers 1
2.
GÉNÉRALITÉS
Le langage Ccréé au début des années 70
Langage successeur du langage B (les années 60),
Le langage C fait partie des langages de programmation
procédurale
Langage compilé
Une meilleure portabilité (fonctionnement sur de
nombreuses plates-formes)
2
3.
Code::Blocks. pourWindows, Mac et Linux.
Visual studio Express, visual c++, dev c++
pour Windows
Xcode, Sur Mac
…
!
IDE GRATUIT POUR C
TYPES DE VARIABLES
Ily a globalement trois types de variables :
Les entiers : int, short int, long int
Les réels : float, double
Les caractères : char
5
6.
Une variablede type char occupe un octet
en mémoire.
Un float : 4 Octets (réel simple précision)
Un Double : 8 Octets(réel double précision )
TYPES DE VARIABLES
7.
Déclaration desvariables
int x;
float y,w;
Déclaration et affectation de variable
int x= 1, z=5
int y=x+2;
float pi = 3.14;
Char z = ‘a’;
Déclaration et affectation de constante
On utilise la ligne de commande : #define.
#define PI 3.14159
7
TYPES DE VARIABLES
8.
L’Opérateur d'affectation (=)
Opérateursarithmétiques (+, -, *, /, %)
Opérateurs de comparaison (==, !=, <, <=,>, >=)
Opérateurs logiques (&&, ||, !)
Les opérateurs standards en C
int main()
main estla fonction principale
de votre programme,
Sans fonction main, il est
impossible de générer un
programme exécutable
13.
NOUVEAU PROJET CONSOLE
Code::Blocksa donc généré le minimum de code en
langage C dont on a besoin.
#include <stdio.h>
#include <stdlib.h>
int main()
{ printf("Hello world!n");
return 0;
}
14.
void main( )
{char c;
int i,j, k;
c = 'A';
i = 50;
j =10;
K=10;
void main( )
{ char c = 'A';
int i=50,j, k;
j=k=10;
15.
15
Le C distingueles minuscules des majuscules.
abc, Abc, ABC sont des identificateurs valides et
tous différents.
Identificateurs invalides :
3eme commence par un chiffre
x#y caractère non autorisé (#)
nb-pos caractère non autorisé (-)
Nb pos caractère non autorisé (espace)
Identificateurs
16.
#include <stdio.h>
Cetteligne demande d'inclure des fichiers au
projet, c'est-à-dire d'ajouter des fichiers pour la
compilation.
bibliothèques (librairies)
17.
La bibliothèquestandard est une collection utilisées
pour implémenter des opérations courantes, telles que
les entrées/sorties et la gestion des chaînes de
caractères, les fonctions mathématiques.
Le prototype des fonctions d’entrée-sortie
(scanf et printf) est dans <stdio.h>
LES ENTRÉES SORTIES : PRINTF,
SCANF
18.
LES ENTRÉES SORTIES: PRINTF,
SCANF
printf permet d ’afficher du texte à
l ’écran
scanf permet récupérer le texte saisi au
clavier
18
19.
#include <stdio.h>: bibliothèque (entrée / sortie).
#include <math.h> : pou les fonctions mathématiques
#include <string.h> : Traitement de chaînes de caractères
#include <time.h> Traitement date et heure ()
LES BIBLIOTHEQUES
20.
printf("Bonjour");
n : retourà la ligne ; printf("Bonjourn");
t : tabulation.
a : sonnerie
b : espace
AFFICHER UN MESSAGE :
PRINTF();
21.
#include<conio.h>
getch lit unseul caractère au clavier et le retourne
comme résultat sans l'écrire sur l'écran et sans
attendre un retour à la ligne.
22.
# Include <stdio.h>
#include<conio.h>
voidmain ()
{ printf (" premiere ligne ");
printf (" n");
printf (" deuxième ligne ");
printf (" n");
printf (" troisième ligne ");
getch()
}
22
Création du 1er
programme printf
23.
printf ("message ");
printf(" %d ", a ); a est un entier
printf(" %c",x); x est un caractère
printf("%f ",z); z est un réel
printf("%s", ch); ch est une chaîne de caractère
printf(" Le résultat est %d ", a );
printf(" Le résultat est %d n", a );
printf(" La somme du 1er
chiffre %d et le 2ème
chiffre %d
est égale à %d ", a,b,c );
printf(" %d +2 = %d ", a,a+2 );
Afficher les données : printf
24.
PRINTF, SCANF
Ces fonctionsutilisent des formats qui
permettent de lire/écrire des variables de
différents types :
%f : réels float
%lf : réels de type double
%d : entiers int
%ld : entiers long int
%s : chaîne de caractères
%c : un caractère
%x :affichera un hexadecimal
%o :affichera une valeur en base 8 (base octale)
24
25.
L’utilisation de &est indispensable avec scanf
(valeur lue et donc modifiée),
scanf("%c",&x); x est un caractère
scanf("%d",&y); y est un entier
scanf("%f",&z); z est un réel
scanf("%s", &ch); ch est une chaîne de caractères
Lire des données du clavier : scanf
26.
On peut fixerle nombre de caractères de
la donnée à lire.
%10s pour une chaîne de 15 caractères,
%5d pour un entier qui s’étend sur 5 chi res.
ff
%.2f le réel est affiché avec 2 chi res après la
ff
virgule. (par défaut 6 chi res après la virgule).
ff
Lire des données du clavier : scanf
27.
EX1
Ecrire un programmequi saisit deux entiers et
affiche leur produit.
Demander à l’utilisateur de saisir le 1er
chiffre
Demander à l’utilisateur de saisir le 2ème chiffre
Calculer somme, produit, différence, le
quotient et le reste de la division.
28.
#include <stdio.h>
int i,j;
intmain()
{printf("donner le 1er entier ");
scanf("%d",&i);
printf("donner le 2ème entier ");
scanf("%d",&j);
printf("le produit de %d et %d est égale à %d ",i, j, i*j);
printf(" %d * %d = %d ", i, j, i*j);
}
EX1
29.
Ecrire un programmequi échange
deux entiers saisis. Afficher les
entiers avant et après l’échange.
(permutation)
EX2
30.
#include <stdio.h>
Void main()
{int i,j,z;
Printf(" donner le 1er
chiffre ") ; scanf("%d",&i) ;
Printf(" donner le 2ème chiffre ") ; scanf("%d",&j) ;
Printf(" le 1er
chiffre est %d le 2ème
chiffre est %d",
i,j) ;
z=i;
i=j;
j=z;
Printf(" le 1er
chiffre est %d le 2ème
chiffre est %d",
i,j) ;}
EX2
31.
LECTURE DE DEUXVARIABLES DANS
UN SCANF
printf("donner les deux chiffres n");
scanf("%d%d",&i,&j);
32.
EQUIVALENT DU PRINTF
Putchar(..),Cette fonction a pour effet
d'émettre le caractère passé en
paramètre vers le flux de sortie
standard. char c=‘A’; putchar(c);
putchar('s'); // équivaut printf("s");
Puts(..) :Cette fonction a pour effet
d'émettre la chaine de caractères
passée en paramètre vers le flux de
sortie standard. puts (" le résultat ");
// équivaut printf(" le résultat n");
33.
getchar, pourla lecture d’un caractère.
char x = getchar();
gets, pour la lecture de chaînes de caractères.
char ch[10];
gets(ch);
EQUIVALENT DU SCANF
EXPRESSIONS ÉVALUÉES DANSLES
TESTS
if (a = b) : erreur fréquente,
if (a == b) : a égal à b
if (a != b) : a différent de b
if (a > b) : a supérieur à b
if ((a >=0)&&(a<10)) : a comprise entre 0 et 9
if ((a<=b)||(a>0)) : a inférieur ou égal à b
ou a positif
if (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')
39
40.
EXPRESSIONS ÉVALUÉES DANSLES
TESTS
if ((h<0)||(h>23))
printf(" heure saisie est incorrecte");
Else
if ((m<0)||(m>59))
printf(" minute saisie est incorrecte");
else
m=m+1
…..
41.
TEST AVEC IF(SI)
int main()
{int n,m;
printf("donner le 1er chiffre ");
scanf("%d", &n);
printf("donner le 2ème chiffre ");
scanf("%d", &m);
if (n>m)
printf("le 1er chiffre %d est le plus grand n",n);
else
printf("le 2ème chiffre %d est le plus grand n",m);
return 0;}
42.
42
#include <stdio.h>
int main(void)
{int i;
printf(" saisir un chiffre ");
scanf(" %d", &i);
if (i>0)
printf("le chiffre %d est positifn",i);
else if (i<0)
printf("le chiffre %d est negatifn",i);
else
printf("le chiffre %d est zéron",i);
return 0;}
43.
Syntaxe :
switch(expression)
{
case valeur1: { instructions1;break; }
case valeur2 : { instructions2;break; }
...
case valeurn : { instructionsn;break; }
default : { instructionsautre;break; }
}
Test avec switch (selon)
44.
Default : proposeune instruction a
effectuer dans le cas où l’expression n'a
pris aucune des valeurs proposées dans les
cases successifs.
Break : renvoie à la fin du switch. Si le
break n'est pas mis, le programme
exécutera le case suivant.
Test avec switch (selon)
45.
UTILISATION DE SWITCHCASE
Int main()
{ int i;
printf(" saisir un chiffre soit 1 ou 2 ou 3 ");
scanf(" %d", &i);
switch(i)
{ case 1 : printf(" le chiffre est 1 "); break;
case 2 : printf(" le chiffre est 2 "); break;
case 3 : printf(" le chiffre est 3 "); break;
default : printf(" le chiffre est différent de 1,2,3");
}
}
46.
printf(" saisir ladate J M A ");
scanf(" %d %d %d ", &j, &m, &a);
switch(m)
{ case 1: case 3: case 5: case 7: case 8: case 10:case 12:
if((j>=1)&&(j<=31))
printf(" la date est valide ");
else
printf(" la valeur du jour est incorrecte");
break;
case 4: case 6: case 9: case 11:
if((j>=1)&&(j<=30))
printf(" la date est valide ");
else
printf(" la valeur du jour est incorrecte");
break;
47.
case 2 :if((j>=1)&&(j<=29))
printf(" la date est valide ");
else
printf(" la valeur du jour est incorrecte");
break;
default : printf(" la valeur du mois est incorrecte "); }
48.
int t;
printf(" saisirla température de l'eau ");
scanf("%d",&t);
switch (t)
{ case -100 ... 0 : printf(" glace"); break;
case 1 ... 99 : printf(" liquide "); break;
case 100 ... 130 : printf(" gaz "); break;
default : printf(" saisie incorrecte "); break;
}
SWITCH (INTERVALE DE
VALEURS)
BOUCLE POUR «FOR »
#include <stdio.h>
#define NUMBER 10
int main()
{
int c, total = 0;
for( c =1; c <= NUMBER; c++)
{ total += c;}
printf("Le total est %dn", total);
}
51.
BOUCLE TANT QUE« WHILE »
51
#include <stdio.h>
#define NUMBER 10
main()
{
int c = 1, total = 0;
while(c <= NUMBER)
{
total += c;
c++;
}
printf(“Le total est : %d ”, total);
}
52.
BOUCLE « DOWHILE »
PERMET D ’EXÉCUTER AU MOINS UNE FOIS LES
INSTRUCTIONS AVANT D ’ÉVALUER LE TEST
#include <stdio.h>
#define NUMBER 10
main()
{
int c = 1, total = 0;
do
{ total += c;
c++;
} while(c <= NUMBER);
printf(“Le total est : %d ”, total);
}
53.
EX: IMPOSER ÀL’UTILISATEUR LA
SAISIE AU CLAVIER D’UN ENTIER
ENTRE 1 ET 10,
int a;
Do
{ printf("n Entrez un entier entre 1 et 10 : ");
scanf("%d",&a);}
while ((a <= 0) || (a > 10));
54.
EX3: AFFICHER TOUSLES ENTIERS DE
0 À 9:
int i;
for (i = 0; i < 10; i++)
printf("n i = %d",i);
55.
break
L’instruction break peut,être
employée à l’intérieur de n’importe
quelle boucle. Elle permet
d’interrompre le déroulement de la
boucle, et passe à la première
instruction qui suit la boucle.
56.
main()
{int i;
for (i= 0; i < 5; i++)
{printf("i = %dn",i);
if (i == 3)
break;
}}
imprime à l’écran
i = 0
i = 1
i = 2
i = 3
LES FONCTIONS MATHEMATIQUES
#INCLUDE<MATH.H>
les fonctions sinus, cosinus, et tangente.
•x = sin(..); y = cos(..); z = tan(..);
Fonctions logarithmes
•x = log(..);
Fonction exponentielle,
•double x = exp(..);
Fonction puissance
•x = pow(5, 2);
Fonction racine carrée
•x = sqrt(25);
Fonction valeur absolue
x = fabs(-7);
61.
• strlen :longueur de chaîne
char chaine[] = "Bonjour";
int x= strlen(chaine);
• strcpy : Copier une chaîne
char chaine2[ ], chaine[ ]= "TDI";
strcpy(chaine2, chaine);
• strcat : concaténer deux chaînes
char c1[10] = "bon"; char c2[10] = "jour";
strcat(c1, c2); /* on concatène */
LES FONCTIONS CHAINE CARACTERES
#INCLUDE <STRING.H>
62.
strcmp : comparer2 chaînes
char ch [3 ]; scanf("%s ",&ch)
if (strcmp(chaine1, "TDI") == 0)
{ }
else { }
sprintf : Ecrire dans une chaîne
char chaine[100]; int N = 1;
sprintf(chaine, "NTIC TDI %d Année !", N);
63.
CTYPE.H
int isupper(C) :retourne une valeur différente de zéro,
si C est une majuscule
int islower(C) : retourne une valeur différente de zéro,
si C est une minuscule
int isdigit(C) : retourne une valeur différente de zéro,
si C est un chiffre décimal
int isalpha(C) : retourne une valeur différente de zéro,
si (C) est alphabet
int isalnum(C) : retourne une valeur différente de zéro,
si isalpha(C) ou isdigit(C)
int isspace(C) : retourne une valeur différente de zéro,
si C est un signe d'espacement
touuper(C) : convertit c en majuscule
tolower(C) : convertit c en minuscule
64.
INT I=0;
CHAR STR[]="TEST CHAINE.N" ;
CHAR C;
WHILE (STR[I]) // WHILE
(I<STRLEN(STR))
{ C=STR[I];
IF (ISLOWER(C))
C=TOUPPER(C);
PUTCHAR (C);
I++; }
LES FONCTIONS ETPROCÉDURES
Le programme contient des procedures et des
variables. Les procédures précisent les tâches à
exécuter par le programme.
Le programme «principal» établit la logique de
l'ensemble du code. Il appelle les différentes
fonctions ou procédures nécessaires pour effectuer la
sous-tâches.
66
67.
Programme typique enC
include
main(){
a();
b();}
fonction a()
fonction b()
Appel de la fonction a
Main() toujours la
1ere fonction appelée
Appel de la fonction b
68.
int main()
{ charchoix;
printf("a : l ’additionn");
printf("b : la multiplicationn");
printf("c : la soustractionn");
printf("d : la divisionn");
printf(" Donner votre choix : ");
scanf("%c", &choix);
switch(choix)
{ case 'a' : procA(); break;
case 'b' : procB(); break;
case 'c' : procC(); break;
case d : procD(); break;
default :printf(‘’choix incorrecte’’);
}}
procA()
{ printf("vous exécutez la procédure A : l’addition");
……
UTILISATION DE SWITCH POUR
CHOISIR