35

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

Embed Size (px)

Citation preview

Page 2: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

Introduction

Langage très répanduNoyau LinuxVLC…

Des avantages indéniables mais aussi des contraintes !

Ceci n’est qu’un rapide tour d’horizon

Ca s’apprend par la pratique !

Page 3: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

Sources de documentation Internet

http://www.developpez.com/Google…

Bouquins divers et variés(mais ca coûte cher et utilitévariable)

Cédricstilgar sur IRC

Page 4: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

Ce qu’il faut savoir à tout prix !

Page 5: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

La Compilation - 1

Traduire un fichier texte brut compréhensible par l’humain en un fichier exécutable par la machine

Un peu plus complexe en fait …

MonCodeSource.c MonProgramme.exe

Page 6: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

La Compilation - 2

Compilation != édition de liens

source1.c source1.o

source2.csource2.o

executable

Page 7: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

Premier Programme !#include <stdio.h>

int main(void){ /* Pas de “Hello World !” pour nous

on a plus de classe quand même */ printf(“Tagazok !\n");

return( 0 );}

Page 8: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

Structure d’un 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

Page 9: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

Commentaires

/* Ceci est

un commentaire sur

plusieurs lignes */

// Celui-ci

// aussi !

// Sur une seule ligne !

Page 10: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

Types de données – 1 :Les entiers

char short long int short ≤ int ≤ long signed / unsigned …

Page 11: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

Types de données – 2 :Les flottants

float double signed / unsigned …

Page 12: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

Définition de variablestype 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;

Page 13: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

Instructions / Opérateurs

arithmétique+, -, /, *, %

affectation=+=, -=, /=, *=, %=

comparaison==, >, >=, <,<=, !=

logique&&, ||, !

binaire&, ~, |, >>, <<

Une instruction se termine par un ;

Page 14: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

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);

Page 15: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

Structures conditionnellesif(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;

Page 16: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

Structures de boucleswhile( condition ){ instructions}

do{ instructions} while( condition );

for( instruction ; condition; instruction ){ instructions}

break / continue

Page 17: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

Exemple#include <stdio.h>

int main(void){ int i;

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

Page 18: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

« 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 != whileint 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++;}

Page 19: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

Définition de fonctionstype nom_de_fonctions(paramètres)

{

variables locales

code en C

}

return signature et prototype variables locales et portée

Page 20: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

Exempleint 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;

}

Page 21: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

Directives de pré compilation Inclusion de header :

#include <headerstd.h>#include " monheader.h "stdio.hmath.hstring.hassert.h…

librairie standard ! #define

Page 22: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

Aie aie aie Caramba !

Page 23: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

Les pointeurs

Faisons simple:

un pointeur c’est 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 :

Page 24: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

Exemple pointeurint i=51, j=69;

int *pointeur;

pointeur = &i;

*pointeur = 31337;

Page 25: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

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 );

Page 26: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

Avantage et inconvénients C’est cool, rapide et efficace surtout ! Gain en performances considérables

notamment lors des appels de fonctions

Cependant, au début, on mélange et c’est rapidement le bronx.

Page 27: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

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

Page 28: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

Structuresstruct 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;

Page 29: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

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;

Page 30: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

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;

Page 31: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

Types personnaliséstypedef 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;

Page 32: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

Les enfants, ne faites pas cela chez vous !

Page 33: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

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 );

Page 34: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

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 ?

Page 35: Ikariya@via.ecp.fr. Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour

Apres cette courte présentation …A vos compilateurs !