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

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

La boucle for : init7.c et init71.c
Introduction au Langage C,C++
A RECUPERER EN ENTRANT Le polycopié de Caml Partie 1
Erratum C Surcharge For(int x=0; … 2.
Programmation Orienté Objet en C++
Rappels C.
Introduction au langage C
Rappels de C ECP – Option SA Henri Fallon. Objectifs Théorie + pratique Compréhension générale du langage Repartant « du début » Pour ceux qui savent.
C++ 6ème cours Patrick Reuter maître de conférences
Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.
Groupe IHM Isabelle BONDOUX Cédric CASTAGNE Samy FOUILLEUX
GEF 243B Programmation informatique appliquée
C.
Rappels de C ECP – Option SA Henri Fallon. Objectifs Théorie + pratique Compréhension générale du langage Repartant « du début » Pour ceux qui savent.
M. BENJELLOUN : Info II Mohammed BENJELLOUN Service dInformatique Faculté Polytechnique de Mons
Structures et unions types énumérés Qu'est-ce qu'une structure
Les pointeurs Manipulation d'adresses et de ce qui est contenu dans ces adresses Très important, fondamental même en C mauvaise réputation : 'dur à comprendre',
FLSI602 Génie Informatique et Réseaux
FLSI602 Génie Informatique et Réseaux
FLSI602 Génie Informatique et Réseaux
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
8PRO100 Éléments de programmation Allocation dynamique de la mémoire.
La fonction alloue un bloc de taille size. Il faut indiquer la taille du bloc que lon veut allouer. Le premier exemple: #include void main()
TRAITEMENT DE STRUCTURES
Question Comment le compilateur fait-il pour évaluer une expression telle que : A + B lorsque A et B sont des données de types arithmétiques différents.
Les fichiers binaires en C++
IFT-2000: Structures de données
Structures de données IFT-2000
Points importants de la semaine Le préprocesseur. La conversion de types. Les fonctions.
Principes de programmation
Un langage de programmation hybride
IFT 6800 Atelier en Technologies d’information
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
La programmation en langage C
8PRO100 Éléments de programmation Les types composés.
Introduction au Langage C
C++ : variables Déclaration de variables
LANGAGE C LP A2I IUT St DIE
Plan cours La notion de pointeur et d’adresse mémoire.
Formation C++. Hello World ! #include /* Commentaire sur plusieurs lignes */ int main() { //Affiche hello world std::cout
L’essentiel du langage C
Introduction au C.
Structures des données
Le langage C Structures de données
2.1 - Historique Chapitre 2 : Introduction au langage C++
Les pointeurs L'opérateur &.
Le langage C Rappel Pointeurs & Allocation de mémoire.
Programmer en langage c
Les Pointeurs et les Tableaux Statiques et Tableaux Dynamiques
La notion de type revisitée en POO
et quelques rappels sur certains éléments du langage C
Les adresses des fonctions
SIF-1053 Architecture des ordinateurs
ALGORITHMIQUE ET PROGRAMMATION C
Les types.
Argc et argv Utilisation des paramètres de la ligne de commande.
Un survol du language C.
1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.
La fonction alloue un bloc de taille size. Il faut indiquer la taille du bloc que l’on veut allouer. Le premier exemple: #include void main()
 Syntaxe du langage PHP
Les types composés Les enregistrements.
TABLEAUX des POINTEURS TRAITEMENT DE STRUCTURES
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O.
PRO-1027 Programmation Scientifique en C
Introduction au langage C
C++ BY AURÉLIEN MODULO MARION. PLAN DES TROIS PRÉSENTATIONS C++ avancé C++ orienté objet Bases de C++
Informatique 2A Langage C 5ème séance. Déroulement de la séance 5 1 ère partie Étude des chaînes de caractères 2 ème partie Les structures 3.
Informatique 1A Langage C 6 ème séance 1. Objectifs de la séance 6  Allocation dynamique de mémoire  Application à la création de tableaux 2.
Transcription de la présentation:

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 !

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

Ce quil faut savoir à tout prix !

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

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

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

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

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

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

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

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;

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

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

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;

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

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

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

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

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

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

Aie aie aie Caramba !

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 :

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

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

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.

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

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;

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;

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;

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;

Les enfants, ne faites pas cela chez vous !

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

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 ?

Apres cette courte présentation … A vos compilateurs !