[email protected]. Introduction Langage très répandu Noyau Linux VLC … Des avantages...

35

Transcript of [email protected]. Introduction Langage très répandu Noyau Linux VLC … Des avantages...

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 !