introduction langage c et systèmes d’exploitation partie 1 ...· 3 12/11/15 institut...

Download Introduction Langage C et Systèmes d’exploitation Partie 1 ...· 3 12/11/15 Institut Mines-Télécom

Post on 29-Nov-2018

212 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • Institut Mines-Tlcom

    Introduction Langage C et Systmes dexploitation Partie 1: Langage C

    Responsable : Etienne Borde (C218-3) Auteurs : Bertrand Dupouy et Etienne Borde

  • Institut Mines-Tlcom 12/11/15 INF104 Langage C partie 1 2

    ! Deuxime partie

    ! Prprocesseur

    ! Tableaux et pointeurs(2)

    ! Variables : allocation en mmoire

    ! Fonctions

    ! Pile et arguments ! Fonctions dE/S

    ! Annexe : Java/C

    ! Premire partie

    ! Introduction

    ! Variables

    ! Types de base ! Types composs ! Tableaux et

    pointeurs(1) ! Oprateur sizeof

    ! Fonctions

    ! Instructions

    ! Fonctions dentre/sortie

    Plan

  • Institut Mines-Tlcom 12/11/15 INF104 Langage C partie 1 3

    ! Premire partie

    ! Introduction

    ! Variables

    ! Types de base ! Types composs ! Tableaux

    et pointeurs (1) ! Oprateur sizeof

    ! Fonctions

    ! Instructions

    ! Fonctions dentre/sortie

    Plan

  • Institut Mines-Tlcom 12/11/15 INF104 Langage C partie 1 4

    ! Lobjectif de cette premire partie est de donner les lments de base pour dbuter la programmation en C :

    ! On verra ici comment se servir du langage, ! Son fonctionnement sera dtaill dans la seconde partie, ! Sa compilation (traduction du langage de haut niveau vers le langage machine)

    sera prsente dans la troisime partie.

    ! Organisation du cours :

    ! 2 TH de cours (partie 1), ! 3 TH de TP (un minimum de pratique), ! 2 TH de cours (partie 2), ! 2 TH de TP (quelques exercices plus avancs)

    Langage C : premire partie

  • Institut Mines-Tlcom

    ! Le langage C a t cr par B. Kernighan et D. Ritchie dans les annes 1970 et formalis en 1978 (The C Programming Language, 2nd ed., by Kernighan and Ritchie, Prentice Hall). A cette poque, le systme UNIX a t crit en C. Les crateurs du langage le caractrisent ainsi :

    ! conomie d'expression, ! Absence de restrictions, ! Ni de trs haut niveau, ni trs riche,

    ! Objectif : efficace et adapt la programmation systme (par exemple : systmes embarqus)

    ! Si le langage remplit bien le rle qui lui a t assign, une des consquences de ces

    hypothses d'extrme simplicit est la suivante :

    ! Pas de contrle l'excution (exemples : pas de gestion de la mmoire, pas de gestion d'exceptions), le comportement des applications va dpendre du systme sous-jacent.

    Langage C : un peu dhistorique

    12/11/15 INF104 Langage C partie 1 5

  • Institut Mines-Tlcom

    ! Peu de constructions (ou mots-cls) connatre pour lutiliser,

    ! Langage trs concis, les contraintes syntaxiques sont faibles et peuvent tre leves (le cast operator), un programme est donc vite crit,

    ! De plus, le compilateur est permissif (avec gcc : il faut utiliser loption Wall pour afficher tous les warning de compilation) on obtient donc facilement un excutable, mais:

    1. la plus grande partie de la mise au point (i.e. rsolution de bugs) se fera durant lexcution (pas de contrle sur la taille des tableaux, typage par dfaut des fonctions et de leur arguments, )

    2. Le programmeur doit savoir comment fonctionne le langage pour l'utiliser correctement,

    ! L'aspect simple du C masque le fait qu'il faut plus de connaissances sur le systme qu'en Java pour l'utiliser

    Langage C : caractristiques gnrales

    12/11/15 INF104 Langage C partie 1 6

  • Institut Mines-Tlcom

    ! La structure d'un programme C est trs simple :

    ! une (et une seule) fonction main, point dentre du programme: premire fonction qui sexcute lorsquon lance le programme

    ! gnralement, plusieurs autres fonctions ! la dfinition et linitialisation de variables

    ! Lensemble de ces fonctions et variables peuvent tre rparties dans un ou plusieurs fichiers

    ! Les fonctions sont dclares et implmentes sans structuration: les fonctions sont visibles (peuvent tre appeles) par nimporte quelle fonction. On crit ces fonctions directement dans un fichier .c

    ! Les variables sont dclares et utilises avec une structuration simple:

    ! des variables globales, visibles (peuvent tre utilises) par nimporte quelle fonction. Ces variables sont dclares et initialises directement dans un fichier .c

    ! Des variables locales, dclares et initialises dans une fonction; ces variables sont visibles par la fonction seulement.

    ! Les commentaires sont identifis par

    ! // un commentaire sur une ligne ! /* un commentaire qui peut stendre sur plusieurs lignes */

    Structure d'un programme C : un jeu de fonctions et de variables plat

    12/11/15 INF104 Langage C partie 1 7

  • Institut Mines-Tlcom

    ! Premire partie

    ! Introduction

    ! Variables ! Types de base ! Types composs ! Tableaux

    et pointeurs (1) ! Oprateur sizeof

    ! Fonctions

    ! Instructions

    ! Fonctions dentre/sortie

    Plan

    12/11/15 INF104 Langage C partie 1 8

  • Institut Mines-Tlcom

    Variables : dclaration et dfinition

    ! La dclaration dune variable suit le schma suivant:

    extern ;

    ! La dfinition dune variable suit le schma suivant:

    = ;

    La diffrence entre dfinition et dclaration vient du fait quon peut dclarer une variable (avec le mme identifiant) plusieurs fois. Par contre, une variable ne peut tre dfinie quune seule fois.

    12/11/15 INF104 Langage C partie 1 9

  • Institut Mines-Tlcom

    ! Le type dune variable dfinit :

    ! l'encombrement mmoire de la variable (sa taille, mesure en octets),

    ! les rgles dutilisation de cette variable (oprateurs associs), ! la zone mmoire o est place la variable (on verra cela dans la deuxime partie

    du cours),

    ! Lemplacement de la dclaration dune variable dtermine :

    ! sa dure de vie, qui peut tre celle : ! du programme (variable globale), ! de la fonction (variable locale la fonction)

    ! sa visibilit (variables globales ou locales, une fonction, un fichier,), on en a dj parl dans la description de la structuration dun programme.

    Variables : type, allocation mmoire, dure de vie

    12/11/15 INF104 Langage C partie 1 10

  • Institut Mines-Tlcom

    ! Premire partie

    ! Introduction

    ! Variables

    ! Types de base ! Types composs ! Tableaux

    et pointeurs (1) ! Oprateur sizeof

    ! Fonctions

    ! Instructions

    ! Fonctions dentre/sortie

    Plan

    12/11/15 INF104 Langage C partie 1 11

  • Institut Mines-Tlcom

    ! Plusieurs types d'entiers : char (1 octet), short (2 octets), int et long

    ! Seul la taille des types char et short est fix: respectivement 1 et 2 octets ! La taille des autres types peut varier selon les machines Sur ma machine

    (64 bits) : int -> 4 octets, long -> 8 octets.

    ! Lensemble de valeurs que lon peut encoder avec un type particulier dpend du type en question: 2Nb_bits.

    ! Le qualificatif unsigned peut tre utilis pour indiquer quon nutilise pas le bit de signe, ce qui double la dynamique des positifs:

    ! char c; // valeurs allant de -125 126. ! unsigned char c; // valeurs allant de 0 255.

    Types de base : les entiers

    12/11/15 INF104 Langage C partie 1 12

  • Institut Mines-Tlcom

    ! Le type char peut aussi tre utilis pour reprsenter des caractres ASCII.

    ! Les valeurs de caractres sont identifies via des guillemets simples: a, A, b, C

    ! Des caractres spciaux souvent utiliss :

    ! \n: retour la ligne; \t: marge; \0: caractre NULL

    ! Les char sont traits comme des entiers sur un octet, attention aux effets de bord (voir exemple qui suit)

    Le type char pour les caractres

    12/11/15 INF104 Langage C partie 1 13

  • Institut Mines-Tlcom

    Le type boolen nexiste pas

    ! Pour les boolens, on utilise en C le type char avec la convention suivante:

    ! la valeur 0 reprsente la valeur boolenne false. ! Toute valeur diffrente de 0 reprsente la valeur boolenne true.

    char c = 0; if(c) // toujours faux {} c = 25; if(c) // toujours vrai {}

    12/11/15 INF104 Langage C partie 1 14

  • Institut Mines-Tlcom

    #include char carac1; int main(int argc, char*argv[]){ unsigned char carac2; carac1 = 255; carac2 = 255; printf("carac1 = %d carac2 = %d\n", carac1, carac2); carac1 = 'A'; carac2 = '1'; printf("carac1 = %c carac2 = %c\n", carac1, carac2); printf("carac1 = %d carac2 = %d\n", carac1, carac2); /* Les char sont traites comme des int !!!! */ carac1 = carac1 + 1; printf("carac1 = %c (%d)\n", carac1, carac1); return 0; }

    Rsultats (affichs sur le terminal): carac1 = -1 carac2 = 255 carac1 = A carac2 = 1 carac1 = 65 carac2 = 49 carac1 = B (66)

    %c : format ASCII

    %d : format dcimal

    Le type char : premier exemple de programme

    Fichier: premier_program.c

    ! Effets de bord sur linterprtation des donnes (2551; A65;A+166),

    ! Faible structuration, fonctions et variables globales au mme niveau,

    ! Nous expliquerons plus tard le fonctionnement de la fonction printf (), ainsi que le rle du #include

    ! La fonction main a toujours cette forme, que nous expliquerons par la suite,

    ! Variable globale: carac1, de type char, utilisable dans toute fonction,

    ! Variable locale: carac2, utilisable dans la fonction main seulement.

    12/11/15 INF104 Langage C partie 1 15

  • Institut Mines-Tlcom

    ! Premire partie

    ! Introduction

    ! Variables

    ! Types de base ! Types composs ! Tableaux

    et pointeurs (1) ! Oprateur sizeof

    ! Fonctions

    ! Instructions

    ! Fonctions

Recommended

View more >