La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour.

Présentations similaires


Présentation au sujet: "Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour."— Transcription de la présentation:

1

2 Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour dhorizon Ca sapprend par la pratique !

3 Sources de documentation Internet Google … Bouquins divers et variés (mais ca coûte cher et utilité variable) Cédric stilgar sur IRC

4 Ce quil faut savoir à tout prix !

5 La Compilation - 1 Traduire un fichier texte brut compréhensible par lhumain en un fichier exécutable par la machine Un peu plus complexe en fait … MonCodeSource.c MonProgramme.exe

6 La Compilation - 2 Compilation != édition de liens source1.c source1.o source2.c source2.o executable

7 Premier Programme ! #include int main(void) { /* Pas de Hello World ! pour nous on a plus de classe quand même */ printf(Tagazok !\n"); return( 0 ); }

8 Structure dun programme Des commentaires Des directives de précompilation Des déclarations de variables Des déclarations de fonctions Des déclarations de types personnalisés Des instructions Des appels de fonctions

9 Commentaires /* Ceci est un commentaire sur plusieurs lignes */ // Celui-ci // aussi ! // Sur une seule ligne !

10 Types de données – 1 : Les entiers char short long intshort int long signed / unsigned …

11 Types de données – 2 : Les flottants float double signed / unsigned …

12 Définition de variables type mavariable; type mavariable = valeur; type montableau[taille]; type montableau[taille1]…[tailleN]; int i; int j = 31337; char a, b='c'; char chaine[]= "Ceci est une chaîne de caractères\n"; float tab[3]; tab[0]=1.0; tab[2]=6.9; tab[1]=5.1;

13 Instructions / Opérateurs arithmétique +, -, /, *, % affectation = +=, -=, /=, *=, %= comparaison ==, >, >=, <,<=, != logique &&, ||, ! binaire &, ~, |, >>, << Une instruction se termine par un ;

14 Printf (dans stdio.h) printf("chaine de format",paramètres…); printf("une %s dans une autre !", "chaîne"); printf("un entier : %d, un float : %f",42, 51.0/69.0); printf("le format ? : %0.2f%\n", 51.0/69.0);

15 Structures conditionnelles if(condition) { instructions; } else { instructions; } switch(variable ou valeur) { case valeur1: instructions; break; case valeur2: instructions; break; default: instructions; } Forme condensée de If/Else : (condition)?inst_true:inst_false;

16 Structures de boucles while( condition ) { instructions } do { instructions } while( condition ); for( instruction ; condition; instruction ) { instructions } break / continue

17 Exemple #include int main(void) { int i; for( i = 0; i < 12; i++ ) { printf( "i vaut %d\n", i ); } return 0; }

18 « Equivalence » while / for for( int i = 0; i < 12; i++ ) { printf( "i vaut %d\n", i ); } int i = 2; while( i < 12 ) { printf( "i vaut %d\n", i ); i++; } do - while != while int i = 42; do { printf( "i vaut %d\n", i ); i++; } while( i < 12 ) int i = 42; while( i < 12 ) { printf( "i vaut %d\n", i ); i++; }

19 Définition de fonctions type nom_de_fonctions(paramètres) { variables locales code en C } return signature et prototype variables locales et portée

20 Exemple int carre(int x) { return x*x; } void affiche(float x) { int variable_inutile; printf("%f\n",x); } void plusun(void) { int i = 2; } int main(void) { int i = 1; printf("i = %d\n",i); plusun(); printf("i = %d\n",i); return 0; }

21 Directives de pré compilation Inclusion de header : #include #include " monheader.h " stdio.h math.h string.h assert.h … librairie standard ! #define

22 Aie aie aie Caramba !

23 Les pointeurs Faisons simple: un pointeur cest une adresse. Ca se définit avec le symbole *. Un pointeur pointe vers une variable. On peut modifier le pointeur ou la variable pointée Démonstration en image :

24 Exemple pointeur int i=51, j=69; int *pointeur; pointeur = &i; *pointeur = 31337;

25 Exemple pratique void 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 );

26 Avantage et inconvénients Cest cool, rapide et efficace surtout ! Gain en performances considérables notamment lors des appels de fonctions Cependant, au début, on mélange et cest rapidement le bronx.

27 la class ! enfin presque (voir en C++)

28 Structures struct nom_structure { type1 champs1; type2 champs2; }; struct point {int x,y;} struct point p1, p2, *p_p3; p1.x = 12; p1.y = 42; p2 = p1; p_p3 = &p1; p_p3->x = 51; p_p3->y = 69;

29 Union Comparable à un struct, mais les variables sont situées au même endroit en mémoire. union mon_union { int a; char tab[4]; /* sur une machine 32 bits */ }; union mon_union zone;

30 Enum Liste de valeur énumérée entières constantes enum couleur { rouge, bleu, vert, jaune}; enum mois { janvier = 1, fevrier, mars, … enum couleur variable = rouge; variable = vert;

31 Types personnalisés typedef type_existant nouveau_type; typedef struct point point_t; typedef int mon_entier; mon_entier a = 42; point_t pt; pt.x = 51; pt.y = 69;

32 Les enfants, ne faites pas cela chez vous !

33 Malloc / Free Allouer/Désallouer dynamiquement de la mémoire pour des zones ou des variables typedef struct point { int x,y; } point_t; point_t *p_pt; p_pt = malloc( sizeof( point_t ) ); p_pt->x = 7; free( p_pt );

34 La fuite mémoire vous guette Toujours désallouer les zones mémoire allouées while(1) { malloc(size_of(int)); } Durée de vie du système ?

35 Apres cette courte présentation … A vos compilateurs !


Télécharger ppt "Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour."

Présentations similaires


Annonces Google