Introduction au Langage C,C - PowerPoint PPT Presentation

1 / 51
About This Presentation
Title:

Introduction au Langage C,C

Description:

Conditionne le format de la variable en m moire. Peut tre soit un type standard ou un ... long double nombres d cimaux encore plus pr cis ... – PowerPoint PPT presentation

Number of Views:257
Avg rating:3.0/5.0
Slides: 52
Provided by: Hab47
Category:

less

Transcript and Presenter's Notes

Title: Introduction au Langage C,C


1
Introduction au Langage C,C
  • Formation Admin INSTA
  • Source  Université de Metz 

2
Progression
3
Introduction au Langage C,C
  • Mon Premier Programme en C

Début du programme
Inclusion de la bibliothèque contenant la
fonction printf
include ltstdio.hgt void main() printf("Bonjour
!\n")
Point d'entré du programme
première instruction
Fin du programme
4
Introduction au Langage C,C
  • Définition d'une variable
  • nom
  • Unique pour chaque variable
  • Commence toujours par une lettre
  • Différenciation minuscule-majuscule
  • type
  • Conditionne le format de la variable en mémoire
  • Peut être soit un type standard ou un type
    utilisateur
  • valeur
  • Peut évoluer pendant l'exécution
  • initialisation grâce à l'opérateur d'affectation

5
Introduction au Langage C,C
  • Types de variable
  • char?caractères
  • int ?entiers
  • short int ?entiers courts
  • long int ?entiers longs
  • float ?nombres décimaux
  • double ?nombres décimaux de précision
    supérieure
  • long double ?nombres décimaux encore plus
    précis
  • unsigned int ?entier non signé

.. signifie facultatif
6
Introduction au Langage C,C
  • Déclaration d'une variable
  • Type nom_de_la_variable valeur
  • Exemple
  • int nb
  • float pi 3.14
  • char c 'a'
  • long i,j,k
  • double r 6.2879821365

7
Introduction au Langage C,C
  • Affichage de la valeur d'une variable
  • en C
  • printf("format de l'affichage", variables)
  • Exemple
  • int i 8int j 10
  • printf("i vaut d j vaut d \n",i,j)
  • float r 6.28
  • printf("le rayon f \n",r)
  • Autres formats
  • c ?caractère
  • lf ?double
  • s ?chaîne de caractères
  • e ?réel en notation scientifique

8
Introduction au Langage C,C
  • Affichage de la valeur d'une variable
  • en C
  • cout ltltchaîne 1 ltltvariable 1ltltchaîne 2 ltltvariable
    2
  • Exemple
  • int i 8int j 10
  • cout ltlt"i vaut" ltlt i ltlt"j vaut"ltltj ltlt'\n'
  • float r 6.28
  • coutltlt"le rayon "ltlt r ltlt'\n'

9
Introduction au Langage C,C
  • Instructions de base
  • opérateurs de base
  • ,-,, / ? opérateurs arithmétique de base
  • ? reste d'une division entière
  • ? test d'égalité
  • ! test de différence
  • lt, gt, lt, gt ?test de comparaison
  • ! ? négation
  • ? ou logique pour évaluer une expression
  • ? et logique pour évaluer une expression

10
Introduction au Langage C,C
  • Instructions de base
  • opérateurs de base
  • a 23 valeur de a 5
  • r 32 valeur de a 1
  • a (33) valeur de a 1
  • a (65) valeur de a 0
  • a (2!3) valeur de a 1
  • a (6lt3) valeur de a 0
  • a !1 valeur de a 0
  • a ((33) (6lt3)) valeur de a 1
  • a ((33) (6lt3)) valeur de a 0

11
Introduction au Langage C,C
  • Instructions de base
  • boucle pour
  • for(expr1expr2expr3)
  • instructions
  • expr1 évaluée 1 seule fois en début de boucle
  • expr2 évaluée avant chaque itération. Si vrai
    alors les instructions de la boucle sont
    exécutées sinon la boucle est terminée
  • expr3 évaluée à la fin de chaque itération

12
Introduction au Langage C,C
  • Instructions de base
  • boucle pour
  • exemple
  • // somme des 100 premiers entiers
  • int i,s
  • s 0
  • for(i0ilt100i i1)
  • s si / / ou si
  • cout ltlt"s "ltltsltlt'\n'

13
Introduction au Langage C,C
  • Instructions de base
  • boucle tant que
  • while (expression)
  • instructions
  • expression est évaluée avant chaque itération. Si
    le résultat est vrai alors les instructions sont
    exécutées sinon on sort de la boucle
  • exemple
  • i 0
  • n 20
  • while (iltn)
  • i

14
Introduction au Langage C,C
  • Instructions de base
  • boucle répéter
  • do
  • instructions
  • while (expression)
  • expression est évaluée après chaque itération. Si
    le résultat est vrai alors les instructions sont
    exécutées sinon on sort de la boucle
  • exemple
  • i 0
  • n 20
  • do
  • i
  • while(iltn)

15
Introduction au Langage C,C
  • Instructions de base
  • instruction conditionnelle simple si alors
  • if (expression)
  • instructions
  • expression est évaluée après chaque itération. Si
    le résultat est vrai alors les instructions sont
    exécutées sinon on sort de la boucle.
  • exemple
  • int i 5
  • int n
  • if (ilt20)
  • n 0

16
Introduction au Langage C,C
  • Instructions de base
  • instruction conditionnelle simple si alors sinon
  • if (expression)
  • instructions1
  • sinon
  • instrutions2
  • expression est évaluée après chaque itération. Si
    le résultat est vrai alors les instructions1 sont
    exécutées sinon on exécute l'ensemble
    instructions2
  • exemple
  • int i 5int n
  • if (ilt20)
  • n 0
  • else
  • n5

17
Introduction au Langage C,C
  • Instructions de base
  • instruction conditionnelle multiple
  • switch (expression)
  • case valeur1
  • instructions1break
  • case valeur2
  • instructions2break
  • .
  • .
  • .
  • case valeur3
  • instruction3break
  • default
  • instruction4break
  • expression est évaluée. Si le résultat vaut
    valeur1, alors instruction1 est exécutée et on
    quitte le switch, sinon si expression vaut
    valeur2, , sinon on va dans default pour
    exécuter instruction4.

18
Introduction au Langage C,C
  • Instructions de base
  • instruction conditionnelle multiple
  • exemple
  • int c'a'
  • switch (c)
  • case 'a'
  • file()break
  • case 'b'
  • save()break
  • case 'q'
  • quitter()break
  • default
  • beep()break

19
Introduction au Langage C,C
  • Instructions de base
  • l'instruction break
  • permet d'interrompre prématurément une boucle et
    de se brancher vers la première instruction
    n'appartenant pas à la boucle
  • exemple
  • int iint n20
  • for (i0ilt10i)
  • if (n31) break
  • nn2
  • cout ltltnltlt'\n'

Quand n vaut 31 alors la boucle est interrompue
20
Introduction au Langage C,C
  • Les Pointeurs
  • Deux manières d'utiliser une variable
  • Par son nom ?adressage direct
  • compilateur réserve de la mémoire pour la
    variable
  • exemple
  • int x 17

21
Introduction au Langage C,C
  • Les Pointeurs
  • Par son adresse ?adressage indirect
  • une variable de type pointeur contient l'adresse
    d'une autre variable
  • Le lien entre pointeur et la variable pointée est
    géré par le programmeur
  • exemple
  • int x 17
  • int px x

px pointe vers x
22
Introduction au Langage C,C
  • Les Pointeurs
  • déclaration d'un pointeur
  • type nom_du_pointeur
  • exemples
  • char buffer
  • int pf
  • float ppi

? C'est au programmeur d'initialiser le pointeur
23
Introduction au Langage C,C
  • Les Pointeurs
  • initialisation d'un pointeur
  • Il faut lui fournir l'adresse d'une variable
    existant en mémoire
  • Il doit pointer vers une zone mémoire réservée
    par le compilateur comme étant une variable
  • utilisation de l'opérateur d'adressage
  • int f
  • int pf,pg
  • pf f
  • pg (int)malloc(sizeof(int))
  • .
  • .
  • free(gf)

création du lien entre le pointeur et la variable
allocation dynamique d'une variable de type int
création du lien entre pg et l'espace mémoire
réservé
libération de l'espace réservé
24
Introduction au Langage C,C
  • Les Pointeurs
  • utilisation de l'opérateur d'indirection
  • travaille la valeur de la variable pointée
  • exemples
  • int i 8
  • int pi
  • pi i
  • cout ltltpiltlt'\n'
  • pi 19
  • cout ltltiltlt'\n'

8
19
25
Introduction au Langage C,C
  • Les tableaux statiques à 1 dimension
  • définition
  • Ensemble de variables de même type, de même nom
    caractérisées par un index.
  • déclaration
  • type nom_tableaudimension
  • exemples
  • char buffer80
  • int mat10

doit être une constante
26
Introduction au Langage C,C
  • Les tableaux statiques à 1 dimension
  • accès aux éléments du tableau
  • Nom_tableauindice
  • exemples
  • buffer5 'c'
  • mat6 10
  • le premier élément commence à l'indice 0 !!
  • Les valeurs ne sont pas initialisées !!
  • Les débordements ne sont pas vérifiés

27
Introduction au Langage C,C
  • Les tableaux statiques à 2 dimensions et plus
  • définition
  • Il s'agit d'un tableau de tableaux
  • déclaration
  • type nom_tableaudim1dim2dimn
  • exemples
  • char buffer2080
  • int mat610
  • char livres1006080

28
Introduction au Langage C,C
  • Les tableaux statiques à 2 dimensions et plus
  • accès aux éléments
  • nom_tableauind1ind2indn
  • exemples
  • livre301520 'c'
  • mat56 13
  • cout ltlt mat56ltlt'\n'

29
Introduction au Langage C,C
  • Lien entre le nom d'un tableau à 1 dimension et
    les pointeurs
  • Nom du tableau adresse du premier élément du
    tableau
  • nom_tableaui peut s'écrire (nom_tableaui)
  • exemples
  • char buffer80
  • buffer 'C' accès au premier caractère
  • (buffer 5) 'V' accès au 6 ème caractère

30
Introduction au Langage C,C
  • Lien entre le nom d'un tableau à 2 dimension et
    les pointeurs
  • un tableau 2d est un tableau de tableau de
    dimension 1
  • On peut donc dire que le nom d'un tableau 2d est
    l'adresse d'un tableau d'adresse de tableaux de
    dimension 1
  • On dit aussi qu'il s'agit d'un pointeur de
    pointeur
  • exemple
  • int TAB67
  • int p déclaration d'un pointeur de pointeur
  • p TAB initialisation du pointeur de pointeur

31
Introduction au Langage C,C
  • Lien entre le nom d'un tableau à 2 dimension et
    les pointeurs

tableaux d'entiers
tableaux de pointeurs vers des tableaux d'entiers
32
Introduction au Langage C,C
  • Initialisation dynamique d'un tableau
  • Tableau une dimension
  • int t
  • t (int)malloc(20sizeof(int))

fonction de calcul automatique de la taille d'un
entier en octet
nom du tableau
fonction d'allocation dynamique de la mémoire
nombre d'éléments dans le tableau
33
Introduction au Langage C,C
  • Initialisation dynamique d'un tableau
  • Tableau à deux dimensions nm
  • déclaration dynamique du tableau de n pointeurs
    et des n tableaux à une dimension de m éléments
  • quelques lignes de code sont nécessaires (voir
    transparent suivant)

34
Introduction au Langage C,C
  • Initialisation dynamique d'un tableau
  • Tableau à deux dimensions nm
  • int TAB,l
  • TAB (int)malloc(nsizeof(int))
  • for (l0lltnl)
  • TABl (int)malloc(msizeof(int))
  • désallocation
  • for (l0lltnl)
  • free(TABl)
  • free(TAB)

35
Introduction au Langage C,C
  • Les structures de données
  • intérêt
  • Rassembler des données hétérogènes caractérisant
    une entité pour en faire un type utilisateur.
  • exemple
  • point dans l'espace ?3 entiers
  • nud d'un arbre binaire ?2 adresses vers les
    fils, 3 entiers pour les données du nud
  • noms et références des pièces mécaniques
    constituant une voiture ?600 tableaux de
    caractères 600 entiers pour la référence

36
Introduction au Langage C,C
  • Les structures de données
  • déclaration
  • struct nom_structure
  • type1 nomchamps1
  • type2 nomchamps2
  • .
  • .
  • .
  • typeN nomchampsN

37
Introduction au Langage C,C
  • Les structures de données
  • exemple et utilisation
  • struct pt
  • int x
  • int y
  • int z
  • char nom
  • main()
  • struct pt p

38
Introduction au Langage C,C
  • Les structures de données
  • simplification de l'écriture
  • struct pt
  • int x
  • int y
  • int z
  • char nom
  • typedef struct pt point
  • main()
  • point p

typedef struct pt int x int y int z char
nom point
Notations équivalentes
39
Introduction au Langage C,C
  • Les structures de données
  • accès aux données
  • Deux cas de figure
  • On dispose du nom de la variable
  • Accès par NomVariable.NomChamps
  • exemple
  • main()
  • point p1
  • p1.x 8 p1.y 9 p1.z 10
  • cout ltltp1.xltltp1.yltltp1.zltlt'\n'

40
Introduction au Langage C,C
  • Les structures de données
  • accès aux données
  • Deux cas de figure
  • On dispose de l'adresse de la variable (pointeur)
  • Accès par NomVariable-gtNomChamps
  • exemple
  • main()
  • point pp1, p1
  • pp1 p1
  • pp1-gtx 8 pp1-gty 9 pp1-gtz 10
  • cout ltltpp1-gtxltltpp1-gtyltltpp1-gtzltlt'\n'

41
Introduction au Langage C,C
  • Les fonctions
  • définition
  • Ensemble d'instructions pouvant être appelés de
    manière répétitive par un nom
  • déclaration
  • type arg_ret nom_f( type arg1,type arg2, type
    argn)
  • ensemble instructions
  • arg_ret est l'argument renvoyé par la fonction
    (instruction return
  • nom_f est le nom de la fonction
  • arg1 argn sont les arguments envoyés à la
    fonction

42
Introduction au Langage C,C
  • Les fonctions
  • règles d'utilisation
  • L'ordre, le type et le nombre des arguments
    doivent être respectés lors de l'appel de la
    fonction
  • L'appel d'une fonction doit être située après sa
    déclaration ou celle de son prototype (voir
    exemple transp suivant)
  • Si la fonction ne renvoie rien alors préciser le
    type void

43
Introduction au Langage C,C
Prototype de la fonction min
  • Les fonctions
  • exemple
  • int min(int a, int b)
  • void main()
  • cout ltltmin(a,b)ltlt'\'
  • int min(int a, int b)
  • if (a ltb) return a
  • else return b

Programme principal
Fonction min et son bloc d'instructions
44
Introduction au Langage C,C
  • Les fonctions
  • Les paramètres se passent par valeur
  • Recopie en mémoire des paramètres dans des
    paramètres temporaires.
  • Toute modification des paramètres dans la
    fonction est sans effet sur les paramètres
    originelles
  • Quand on quitte la fonction, les paramètres
    temporaires sont effacés de la mémoire
  • Recopie dans le sous programme appelant de la
    valeur du paramètre retourné par la fonction
    return.

45
Introduction au Langage C,C
  • Les fonctions
  • exemple
  • void permutter(int a, int b)
  • int temp
  • temp a
  • a b
  • b temp
  • void main()
  • int x3int y 5
  • permutter(x,y)
  • cout ltlt "x"ltltxltlt" y"ltltyltlt'\n'

Aucune action sur les paramètres x et y
x3 y5
46
Introduction au Langage C,C
  • Les fonctions
  • Passage d'arguments par adresse
  • On passe non pas la valeur de la variable mais
    son adresse
  • Il est donc possible par les pointeurs de
    modifier le contenu de l'adresse, donc la
    variable originelle
  • Permet de modifier plusieurs arguments à la fois
    dans une fonction
  • Permet de passer des tableaux en argument

47
Introduction au Langage C,C
  • Les fonctions
  • exemple
  • void permutter(int pa, int pb)
  • int temp
  • temp pa
  • pa pb
  • pb temp
  • void main()
  • int x3int y 5
  • permutter(x,y)
  • cout ltlt "x"ltltxltlt" y"ltltyltlt'\n'

Action sur les paramètres x et y
x5 y3
48
Introduction au Langage C,C
  • Les Fichiers
  • Les fichiers sont soit
  • binaires (un float sera stocké comme il est codé
    en mémoire , d'où gain de place mais
    incompatibilité entre logiciels)
  • formaté ASCII (un float binaire sera transformé
    en décimal puis on écrira le caractère
    correspondant à chaque chiffre).
  • Pour accéder aux données, on le fait soit
  • De manière séquentielle (on accède au contenu
    dans l'ordre du stockage)
  • Par un accès direct (on peut directement accéder
    à n'importe quel endroit du fichier)

49
Introduction au Langage C,C
  • Les Fichiers
  • Les Fonctions
  • Prototypées dans stdio.h, io.h, fcntl.h
  • Ouverture dun fichier
  • handle open(char nomfic, int mode)
  • nomfic pointeur vers une chaîne de caractère
    contenant le chemin, le nom du fichier et
    lextension du fichier
  • mode variable entière dont chaque bit possède
    une signification particulière. Utilisation de
    constantes prédéfinies
  • O_RDONLY Ouverture pour lecture seule
  • O_WRONLY Ouverture pour écriture seule
  • O_RDWR Ouverture pour lecture et écriture
  • O_APPEND Ajout des données à la fin du
    fichier
  • O_CREAT Crée le fichier sil nexiste pas
  • O_BINARY Ouvre le fichier en mode Binaire
    (Stockage de linfo comme elle est stockée dans
    la mémoire de lordinateur)
  • O_TEXT Ouvre le fichier en mode Texte. (On
    mémorise le code ASCII de chaque nombre ou
    caractère)

50
Introduction au Langage C,C
  • Les Fichiers
  • Les Fonctions
  • Écriture dans un fichier
  • int write(int handle, void bloc, unsigned
    taille)
  • Handle numéro entier caractérisant le fichier
    (renvoyé lors de louverture du fichier avec la
    fonction open)
  • Bloc pointeur vers le bloc de données
  • Taille taille en octet de ce bloc
  • Lecture dans un fichier (idem écriture avec
    fonction read)
  • int read(int handle, void bloc, unsigned
    taille)
  • Fermeture dun fichier
  • int close(int handle)

51
Introduction au Langage C,C
  • Les Fichiers
  • Exemple
  • // inclusion des entêtes des fonctions
  • include ltio.hgt
  • include ltfcntl.hgt
  • include ltstring.hgt
  • main()
  • int handle // numéro caractérisant le fichier
  • char string40 // tableau de caractères
  • int length // Variable mémorisant la taille
    du bloc de données
  • int x40 // entier x valant 40
  • int y102 // entier y valant 102
  • // ouverture du fichier Monfichier.txt avec
    création s'il n'existe pas
  • // Fichier ouvert en écriture en mode texte
  • handle open("c\\Monfichi.txt",O_CREAT O_RDWR
    O_APPEND)
  • // Fonction (idem à printf) qui écrit un
    message formaté dans un tableau
  • // de caractères (printf l'écrit vers l'écran)
  • lengthsprintf(string,"valeur de xd valeur
    de yd \n",x,y)
Write a Comment
User Comments (0)
About PowerShow.com