Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de...

25
Formation C débutant

Transcript of Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de...

Page 1: Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.

Formation C débutant

Page 2: Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.

Notion de compilation

source.c executable

Phase de compilation

Fichier de texte brut, inexploitable directement par la machine

Fichier compréhensible et executable par l'OS et la machine

Page 3: Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.

Hello World

#include <stdio.h>

int main(void){ /* affiche le fameux Hello World ! */ printf("Hello World !\n");

return( 0 );}

Page 4: Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.

Structure d'un programme CUn programme contient :

● des directives du préprocesseur : inclusion de librairies (#include <stdio.h>)

● des définitions de types : typedef int MON_INT● des variables: int i = 0;● des fonctions (comme main)● des commentaires : /* mes commentaires */ ● des boucles, des structures conditionnelles (if, for,

while, switch)● des appels de fonctions : fonction_a_moi( 12, 42 )● des opérations : i = 12 * j + 42;

Page 5: Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.

Type de bases● type caractères:

●char, signed char : -128 à 127●unsigned char : 0 à 255

● types entiers:●short int, short, signed short int : -32768 à 32767●unsigned short int, unsigned short : 0 à 65535●(long) int, signed (long) int : -2147483648 à 2147483647●unsigned (long) int : 0 à 4294967295

● type à virgule flottante:●float ●double●long double

Page 6: Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.

Variables et tableaux

type nom_de_variable;type nom_de_variable = valeur;type nom_de_tableau[taille du tableau];type nom_de_tableau[taille1][...][tailleN];

exemples:

int i;int j = 12;char char1, char2= 'a';

float point[3];point[0] = 2.0; point[1] = 12.0; point[3] = 42.0;

Page 7: Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.

Fonctions

type nom_de_fonction( paramètres ){ variables locales du code C}

int carre( int x){ return( x * x );}

exemples

void affiche(int i){ int ne_sert_a_rien; printf( "i vaut %d\n", i);}

Page 8: Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.

Exemple#include <stdio.h>

int carre( int x ){ return( x * x ); /* retourne le carre de x */}

int main(void){ int i, j = 12;

i = carre( j ); printf( "j² vaut : %d\n", i ); return 0;}

Page 9: Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.

Structures conditionnellesif( condition ) { instructions si vrai}else { instruction si faux}

switch( valeur ou variable ){ case( valeur1 ): instructions break; case( valeur2 ): instructions break; default: instructions}

Remarque : à la place de if ... else ... on peut parfois utiliser :( condition ) ? instruction si vrai : instruction si faux

Page 10: Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.

Structures de boucle

while( condition ){ instructions}

do{ instructions} while( condition );

for( instruction ; condition; instruction ){ instructions}

Page 11: Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.

Exemple#include <stdio.h>

int main(void){ int i;

for( i = 0; i < 12; i++ ) { printf( "i vaut %d\n", i ); } return 0;}

Page 12: Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.

Break et continue

● break : permet de sortir d'une boucle● continue : va directement à l'itération

suivante

Page 13: Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.

Comparaison de while et do while

int i = 42;

while( i < 12 ){ /* jamais exécuté */ printf( "i vaut %d\n", i ); i = i + 1;}

int i = 42;

do{ /* executé qu'une fois */ printf( "i vaut %d\n", i); i = i +1;} while( i < 12 )

Page 14: Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.

Comparaison de while et for

int i;

for( i =2; i < 12 ; i++ ){ printf( "i vaut %d\n", i );}

int i;

i = 2;while( i < 12 ){ printf( "i vaut %d\n", i ); i++;}

Page 15: Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.

Notion de pointeur

Variable " i "

Variable " j "

12

42

NULLPointeur " p "

int i = 12, j = 42, * p = NULL;

(rien)

Page 16: Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.

Notion de pointeur

Variable " i "

Variable " j "

12

42

Adresse(j)Pointeur " p "

p = &j;

Page 17: Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.

Notion de pointeur

Variable " i "

Variable " j "

12

2

Adresse(j)Pointeur " p "

*p = 2;

Page 18: Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.

Exemplesvoid echange( int *p_x, int *p_y ){ int tmp;

tmp = *p_x; *p_x = *p_y; *p_y = tmp;}

int a,b;echange( &a, &b );

void echange( int x, int y ){ int tmp;

tmp = x; x = y; y = tmp;}

int a,b;echange( a, b );

Page 19: Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.

Type "structure"struct nom_de_la_structure { champs de la structure }

exemple:struct point_s { int x, y; }

struct point_s pt1, pt2, *p_pt3;

pt1.x = 12; pt1.y = 42;

pt2 = pt1;

p_pt3 = &pt1;p_pt3->x = 0; p_pt3->y = pt2.y;

Page 20: Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.

Type "union"union nom_de_l_union { champs de l'union }

ex:

union mon_union_u { float f; int i; }

union mon_union_u u1;u1.f = 1.2;/* affiche le motif en hexadecimal de 1.2 */printf( "%f donne 0x%x\n", u1.f, u1.i ); en memoire on a

int iu1float f

Page 21: Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.

Définition de types personnaliséstypedef type_existant nouveau_type;

exemple:

typedef int MON_INT;

typedef struct point_s { int x,y; } point_t;

Ansi on peut écrire:

struct point_s p1; point_t p2;

Page 22: Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.

Opérateurs

● arithmétiques●+, -, *, /, %, ●++, --●=, +=, -=, *=, ....

● logiques●||, &&, !

● travaillant au niveaux binaire●&, |, ~, <<, >>

● de comparaison●<, <=, >, >=, ==, !=

Page 23: Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.

Complément - malloc/freeAllouer/désallouer dynamiquement des variables/zones mémoires.

typedef struct point_s { int x,y; } point_t;

point_t *p_pt; /* p_pt n'est pas directement utilisable */

p_pt = malloc( sizeof( point_t ) );

p_pt->x = 2; ......

free( p_pt );

Page 24: Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.

Complément - malloc/free"Tableaux dynamiques"

int iint *tab;

tab = calloc( 1242, sizeof( int ) );

for( i = 0; i < 1242; i++ ){ tab[i] = 2*i; /* 1242 premiers nombres pairs */ /* on peut aussi écrire: *(tab+i) = 2*i */}

free( tab );

Page 25: Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.

Complément - Compilation

source.c

divers.c

source.o

divers.o

executable

compilation éditions des liens