Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.

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
Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour.
Rappels C.
Développement logiciel sur micro-contrôleurs PIC en 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.
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
B.Shishedjiev - Informatique II
Regrouper des éléments de même type et pouvoir y accéder à laide dun identificateur et dun indice. Objectif des tableaux.
Langage C Révision.
Types de données et représentation
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
1 Les pointeurs et quelques rappels sur certains éléments du langage C.
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.
Bases de la programmation en C++ 1 Les enchaînementsdinstruction Séquentiels. Exécutions dinstructions les unes à la suite des autres. Instructions séparées.
Développement logiciel pour microcontrôleurs PIC
IFT1969 Programmation scientifique en C
Les enregistrements (struct) suite. Struct Rappel Enregistrement : Suite de données pouvant être de types différents, accessibles via une seule variable.
Principes de programmation
Un langage de programmation hybride
Miguel Garzon CrUise Lab - SITE. Introduction Data Types and Sizes Constants Logic Operators Type conversions Example.
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.
8PRO100 Éléments de programmation Les types composés.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Introduction au Langage C
C++ : variables Déclaration de variables
Les Opérateurs Ils régissent toutes les opérations ou transformations sur les valeurs des variables. Opérateur d'affectation Opérateurs arithmétiques Opérateurs.
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
La librairie assert.h.
L’essentiel du langage 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.
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
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()
Les types composés Les enregistrements.
TABLEAUX des POINTEURS TRAITEMENT DE STRUCTURES
Structures de contrôle
8PRO100 Éléments de programmation Les pointeurs de caractères.
IFT1969 Programmation scientifique en C
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
8PRO107 Éléments de programmation Les adresses et les pointeurs.
PRO-1027 Programmation Scientifique en C
C++ BY AURÉLIEN MODULO MARION. PLAN DES TROIS PRÉSENTATIONS C++ avancé C++ orienté objet Bases de C++
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.
SIF-1053 Architecture de ordinateurs
Eléments de base du langage C
Eléments de base du langage C
Transcription de la présentation:

Formation C débutant

Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier compréhensible et executable par l'OS et la machine

Hello World #include int main(void) { /* affiche le fameux Hello World ! */ printf("Hello World !\n"); return( 0 ); }

Structure d'un programme C Un programme contient : des directives du préprocesseur : inclusion de librairies (#include ) des définitions de types : typedef int MON_INT des variables: int i = 0; des fonctions (comme main) des commentaires : /* mes commentaires */ des boucles, des structures conditionnelles (if, for, while, switch) des appels de fonctions : fonction_a_moi( 12, 42 ) des opérations : i = 12 * j + 42;

Type de bases type caractères: char, signed char : -128 à 127 unsigned char : 0 à 255 types entiers: short int, short, signed short int : à unsigned short int, unsigned short : 0 à (long) int, signed (long) int : à unsigned (long) int : 0 à type à virgule flottante: float double long double

Variables et tableaux type nom_de_variable; type nom_de_variable = valeur; type nom_de_tableau[taille du tableau]; type nom_de_tableau[taille1][...][tailleN]; exemples: int i; int j = 12; char char1, char2= 'a'; float point[3]; point[0] = 2.0; point[1] = 12.0; point[3] = 42.0;

Fonctions type nom_de_fonction( paramètres ) { variables locales du code C } int carre( int x) { return( x * x ); } exemples void affiche(int i) { int ne_sert_a_rien; printf( "i vaut %d\n", i); }

Exemple #include int carre( int x ) { return( x * x ); /* retourne le carre de x */ } int main(void) { int i, j = 12; i = carre( j ); printf( "j² vaut : %d\n", i ); return 0; }

Structures conditionnelles if( condition ) { instructions si vrai } else { instruction si faux } switch( valeur ou variable ) { case( valeur1 ): instructions break; case( valeur2 ): instructions break; default: instructions } Remarque : à la place de if... else... on peut parfois utiliser : ( condition ) ? instruction si vrai : instruction si faux

Structures de boucle while( condition ) { instructions } do { instructions } while( condition ); for( instruction ; condition; instruction ) { instructions }

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

Break et continue break : permet de sortir d'une boucle continue : va directement à l'itération suivante

Comparaison de while et do while int i = 42; while( i < 12 ) { /* jamais exécuté */ printf( "i vaut %d\n", i ); i = i + 1; } int i = 42; do { /* executé qu'une fois */ printf( "i vaut %d\n", i); i = i +1; } while( i < 12 )

Comparaison de while et for int i; for( i =2; i < 12 ; i++ ) { printf( "i vaut %d\n", i ); } int i; i = 2; while( i < 12 ) { printf( "i vaut %d\n", i ); i++; }

Notion de pointeur Variable " i " Variable " j " NULLPointeur " p " int i = 12, j = 42, * p = NULL; (rien)

Notion de pointeur Variable " i " Variable " j " Adresse(j) Pointeur " p " p = &j;

Notion de pointeur Variable " i " Variable " j " 12 2 Adresse(j) Pointeur " p " *p = 2;

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

Type "structure" struct nom_de_la_structure { champs de la structure } exemple: struct point_s { int x, y; } struct point_s pt1, pt2, *p_pt3; pt1.x = 12; pt1.y = 42; pt2 = pt1; p_pt3 = &pt1; p_pt3->x = 0; p_pt3->y = pt2.y;

Type "union" union nom_de_l_union { champs de l'union } ex: union mon_union_u { float f; int i; } union mon_union_u u1; u1.f = 1.2; /* affiche le motif en hexadecimal de 1.2 */ printf( "%f donne 0x%x\n", u1.f, u1.i ); en memoire on a int i u1float f

Définition de types personnalisés typedef type_existant nouveau_type; exemple: typedef int MON_INT; typedef struct point_s { int x,y; } point_t; Ansi on peut écrire: struct point_s p1; point_t p2;

Opérateurs arithmétiques +, -, *, /, %, ++, -- =, +=, -=, *=,.... logiques ||, &&, ! travaillant au niveaux binaire &, |, ~, > de comparaison, >=, ==, !=

Complément - malloc/free Allouer/désallouer dynamiquement des variables/zones mémoires. typedef struct point_s { int x,y; } point_t; point_t *p_pt; /* p_pt n'est pas directement utilisable */ p_pt = malloc( sizeof( point_t ) ); p_pt->x = 2; free( p_pt );

Complément - malloc/free "Tableaux dynamiques" int i int *tab; tab = calloc( 1242, sizeof( int ) ); for( i = 0; i < 1242; i++ ) { tab[i] = 2*i; /* 1242 premiers nombres pairs */ /* on peut aussi écrire: *(tab+i) = 2*i */ } free( tab );

Complément - Compilation source.c divers.c source.o divers.o executable compilation éditions des liens