[email protected]. introduction langage très répandu noyau linux vlc … des avantages...
TRANSCRIPT
![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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/18.jpg)
« 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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/24.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/25.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/26.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/27.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/28.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/29.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/30.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/31.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/32.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/33.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/34.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d7f497959293b8b7566/html5/thumbnails/35.jpg)
Apres cette courte présentation …A vos compilateurs !