formation c débutant. notion de compilation source.c executable phase de compilation fichier de...

25
Formation C débutant

Upload: marguerite-philippot

Post on 03-Apr-2015

114 views

Category:

Documents


0 download

TRANSCRIPT

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