02-langage C.pdf

  • Uploaded by: othman ok
  • 0
  • 0
  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View 02-langage C.pdf as PDF for free.

More details

  • Words: 3,515
  • Pages: 24
14/03/16

Programmation en langage C EL Moukhtar ZEMMOURI ENSAM – Meknès Version 1.0 – 2015 / 2016

What is C

"C is a general-purpose programming language which features economy of expression, modern control flow and data structures, and a rich set of operators. C is not a "very high level" language, nor a "big" one, and is not specialized to any particular area of application." Kernighan & Richie, 1978

E. Zemmouri,

ENSAM - Meknès

1

14/03/16

Sommaire •  Généralités •  Éléments de base de C o 

Identificateurs

o 

Mots clés

o 

Commentaires

o 

Les types

•  Lecture / écriture •  Structures de contrôle

E. Zemmouri,

ENSAM - Meknès

Un peu d'histoire … •  Le C a été conçu en 1972 par Dennis Richie et Ken Thompson o 

Deux chercheurs au Bell Labs

o 

Objectif : développer un système d'exploitation UNIX

•  En 1978, Brian Kernighan et Dennis Richie publient la définition classique du C o 

Première édition du livre "The C programming language"

•  En 1983, l'ANSI décida de normaliser le langage o 

1989 la définition de la norme ANSI C (ou C89)

o 

Deuxième édition de "The C programming language"

•  L'ISO à repris la même norme en 1990 (ou C90) E. Zemmouri,

ENSAM - Meknès

2

14/03/16

La compilation •  C est un langage compilé o 

Par opposition au langages interprétés (Python, Matlab, …)

•  è Un programme C écrit dans un fichier source est traduit en totalité en langage machine avant exécution. •  Quatre phases : o 

Traitement par le préprocesseur

o 

Compilation

o 

Assemblage

o 

Édition de liens

•  Exemples de compilateurs o 

GCC du projet GNU

o 

MinGW (Minimalist GNU for Windows)

E. Zemmouri,

ENSAM - Meknès

La compilation Ficher source

Messages d'erreurs Préprocesseur

Compilateur Code assembleur

Assemblage Ficher objet Librairies de fonctions

Editeur de liens

Messages d'erreurs

Fichier exécutable

E. Zemmouri,

ENSAM - Meknès

3

14/03/16

Éléments de base du langage

Premier programme •  À éditer à l'aide d'un éditeur de texte o 

Fichier source hello.c

•  Compiler o 

gcc hello.c

•  Puis exécuter J

E. Zemmouri,

ENSAM - Meknès

4

14/03/16

Composants élémentaires du C •  Six catégories de composants élémentaires : o 

Les identificateurs

o 

Les mots clés

o 

Les opérateurs

o 

Les constantes

o 

Les chaines de caractères

o 

Les signes de ponctuation

•  Les commentaires sont enlevés par le préprocesseur

E. Zemmouri,

ENSAM - Meknès

Identificateurs •  Servent pour identifier (donner des noms) aux entités du programme : o 

variables, fonctions, types, …

•  Suite de caractères parmi : o 

les lettres (minuscules ou majuscules, non accentuées),

o 

les chiffres,

o 

le “blanc souligné _

•  Commence par une lettre (ou _ ) •  Ne doit pas être un des mots clés du langage. E. Zemmouri,

ENSAM - Meknès

5

14/03/16

Mots clés •  32 mots clefs de la l'ANSI C • 

int

float

double

char

void

short

long

signed

unsigned struct enum union • 

const volatile static auto register extern typedef

• 

if

else

for

while

do

switch

case

default

break

continue goto • 

return sizeof

E. Zemmouri,

ENSAM - Meknès

Les commentaires •  Les commentaires permettent de documenter un programme. o 

Améliorer la lisibilité du programme

•  Un commentaire en C commence par /* et se termine par */ o 

• 

Exemple /* ceci est un commentaire */

// permet un commentaire sur une seule ligne

•  N.B. Les commentaires ne peuvent pas être imbriqués

E. Zemmouri,

ENSAM - Meknès

6

14/03/16

Les types de base •  Le C est un langage typé : o 

è Toute variable, constante ou fonction est d’un type précis

•  Le type définit la représentation mémoire d'un objet •  Les types de base en C concernent o 

les entiers

o 

les flottants (nombres réels)

o 

les caractères

E. Zemmouri,

ENSAM - Meknès

Les types entiers • 

Le type entier représente l'ensemble des entiers relatifs (positifs et négatifs)

• 

Plusieurs sous types : Type

Taille

Valeurs

Intervalle

char

8 bits

caractères

[–128 , 127]

short

16 bits

Entiers courts

[–32768 , 32767]

int

32 bits

Entiers

[–231 , 231 – 1]

long

64 bits

Entiers long

[–263 , 263 – 1]

unsigned char

8 bits

caractères

[0 , 255]

unsigned short

16 bits

Entiers courts non signés

[0 , 65536]

unsigned int

32 bits

Entiers non signés

[0 , 232 – 1]

unsigned long

64 bits

Entiers long non signés

[0 , 264 – 1]

N.B. La taille mémoire des types en C dépend de la machine ! E. Zemmouri,

ENSAM - Meknès

7

14/03/16

Les types entiers •  Exercice : o 

E. Zemmouri,

Ecrire un programme qui donne d'intervalle des nombres représentés par les types : char, short, int, et long, signed et unsigned.

ENSAM - Meknès

Les types flottants •  3 types correspondant à différentes précisions : Type

Taille

Valeurs

float

32 bits

Flottants simple précision

double

64 bits

Flottants double précision

long double

128 bits

Flottants précision étendue

•  Erreur de troncature : o 

Quelle que soit la machine utilisée, on est assuré que cette erreur (relative) ne dépassera pas 10-6 pour le type float et 10-10 pour le type long double. N.B. La taille mémoire des types en C dépend de la machine !

E. Zemmouri,

ENSAM - Meknès

8

14/03/16

Les types flottants •  Exercice : o 

E. Zemmouri,

Ecrire un programme qui donne le plus grand nombre et le plus petit nombre proche de zéro (epsilon) qu'on peut représenter avec le type float.

ENSAM - Meknès

Le type des caractères •  Le type char représente le jeu de caractères de la machine •  Un char en C est codé sur un octet (8 bits) •  Un caractère est encodé en utilisant un entier avant sa représentation binaire en mémoire. •  Plusieurs encodages sont utilisés: o 

ASCII (American Standard Code for Information Interchange) •  Vesrion originale (1960) représente 128 caractères avec les nombres de 0 à 127 sur 7 bits. •  Version étendue (1980) représente 256 sur 8bits

o 

E. Zemmouri,

Unicode (1990) représente 65 536 sur 16 bits ENSAM - Meknès

9

14/03/16 Standard Code for Information Interchange.) In the 1960s, the original ASCII set Delannoy Livre.book Page 22 Mercredi, 6. mai 2009 4:26 16each keyboard character and several control characters using the inteencoded gers from 0 through 127. An example of a control character is Control+D, which is the command to terminate a shell window. As new function keys and some international characters were added to keyboards, the ASCII set doubled in size to 256 distinct values in the mid-1980s. Then, when characters and symbols were added from languages other than English, the Unicode set was created to support 65,536 values in the early 1990s. Programmer en langage C

Le type des caractères

• 

Table 2.5 shows ASCII the mapping of characteroriginale) values to the first 128 ASCII L'ensemble des caractère (Version codes. The digits in the left column represent the leftmost digits of an

o 

ASCII andligne the digits in the top row rightmostpar digits. Thus, Comment lire : code, R sur 8 colonne 2 are esttheencodé 82.

the ASCIIde code of the character at row 8, celle columnde 2 iscaractère 82. Par ailleurs, la notion caractère en C'R' dépasse imprimable, c’est-à-dire auquel est obligatoirement associé un graphisme (et qu’on peut donc imprimer ou afficher sur 0 qu’il 1 existe 2 certains 3 4 5 7 8 de 9ligne, de tabulation, un écran). C’est ainsi caractères de6changement 0 alarme NUL SOH STX ETX EOT ENQ ACKd’ailleurs BEL BS déjà HT utilisé le premier d’activation d’une sonore (cloche),... Nous avons CR SO SI DLE DCI DC2 DC3 (sous la forme \n1). LF VT FF 2

DC4

NAK

SYN

ETB

CAN

EM

SUB

ESC FS

3

RS

US

SP

!



#

$

%

&

4

(

)

*

+

,

-

.

/

0

1

5

2

3

4

5

6

7

8

9

:

;

6

<

=

>

?

@

A

B

C

D

E

7

F

G

H

I

J

K

L

M

N

O

U

V

W

X

Y

9

Z

[

\

]

^

_



a

b

c

GS

D e tels caractères sont souvent nommés « caractères de contrôle ». Dans` le code ASCII (restreint ou non), ils ont des codes compris entre 0 et 31.

P Q R S T 4.2 Notation des 8constantes caractères

Les constantes de10type « caractère », lorsqu’elles correspondent à des caractères imprimables, d e f g h i j k l m se notent de façon classique, enp écrivant entre apostrophes (ou quotes) le caractère voulu, 11 n o q r s t u v w comme dans ces 12 exemples : x y z { | } ~ DEL E. Zemmouri,

[TABLE 2.5] The original ASCII character set'+' ENSAM - Meknès 'a' 'Y'

'$'

Certains caractères non imprimables possèdent une représentation conventionnelle utilisant le caractère « \ », nommé « antislash » (en anglais, il se nomme « back-slash », en français, on le nomme aussi « barre inverse » ou « contre-slash »). Dans cette catégorie, on trouve également quelques caractères (\, ’, " et ?) qui, bien que disposant d’un graphisme, jouent un rôle particulier de délimiteur qui les empêche d’être notés de manière classique entre deux apostrophes. Le type des caractères [ 56 ] CHAPTER 2 Software Development, Data Types, and Expressions Voici la liste de ces caractères. Copyright 2011 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s). Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.

•  Les caractères nonCaractères imprimables : disposant d’une notation spéciale NOTATION EN C \a \b \f \n \r \t \v \\ \' \" \?

E. Zemmouri,

22

CODE ASCII (hexadécimal) 07 08 0C 0A 0D 09 0B 5C 2C 22 3F

ABRÉVIATION SIGNIFICATION USUELLE BEL cloche ou bip (alert ou audible bell) BS Retour arrière (Backspace) FF Saut de page (Form Feed) LF Saut de ligne (Line Feed) CR Retour chariot (Carriage Return) HT Tabulation horizontale (Horizontal Tab) VT Tabulation verticale (Vertical Tab) \ ' " ?

ENSAM - Meknès

© Éditions Eyrolles

10

14/03/16

Le type booléen •  Le type booléen n'est pas prédéfini en C. •  On utilise le type int o 

0 est faux

o 

Toute valeur différente de 0 est vraie, en particulier 1.

E. Zemmouri,

ENSAM - Meknès

Les constantes en C • 

Une constante est une valeur qui apparaît littéralement dans le code source d’un programme o 

• 

Exemples : 123, 'A', "Hello", 1.5, …

La manière avec laquelle on écrit une constante détermine implicitement son type

E. Zemmouri,

ENSAM - Meknès

11

14/03/16

Les constantes en C Catégorie

Entiers

Représentation Décimale Hexa Octale Long unsigned

Habituelle : 123 Commence par 0x : 0x1F4 è 500 Commence Par 0 : 0377 è 255 Se termine par l ou L : 123L Se termine par u ou U : 123U

A virgule Exponentielle

Habituelle : 12.5 1. .5 Avec e ou E : 12.4E-5 1e-6 1.5E10 Le type par défaut est double Pour le type float on ajoute F/f : 1.5F Pour le type long double on ajoute L/l : 1.5L

Caractère Chaine

Entre apostrophes : 'A' '\n' '1' Entre guillemets : "Hello world"

Réels

Caractères

E. Zemmouri,

Notation et exemples

ENSAM - Meknès

Définition de constantes symboliques •  Définition à l'aide de la directive : o 

#define

NOM

Valeur

•  Demande au préprocesseur de remplacer NOM par Valeur dans la suite du fichier source. •  Exemples : o 

#define

PI

3.14

o 

#define

N

100

o 

#define

MIN

0

o 

#define

MAX

100

o 

#define

AVG

E. Zemmouri,

(MIN + MAX)/2

ENSAM - Meknès

12

14/03/16

Déclaration •  Déclaration de variables : o 

type identificateur;

o 

//déclaration et initialisation

o 

type identificateur = valeur;

•  Déclaration de constantes: •  On utilise le mot clé const o 

const type identificateur = valeur;

•  Exemple: o 

E. Zemmouri,

const double pi = 3.14

ENSAM - Meknès

Les opérateurs en C

Catégorie

Opérateurs

Affectation + *

Comparaison

E. Zemmouri,

variable = expression; •  Ne pas confondre avec ==

=

arithmétiques

<

<= ==

/

Syntaxe et remarques

%

> >= !=

•  Division entière et réelle : si les deux opérandes sont entières, / produira une division entière (quotient de la division). Exemple : float x; x = 3/2; è x = 1.0 x = 3.0/2; è x = 1.5 •  Pas d'opérateur de puissance en C. on utilise la fonction pow(x,y) de math.h expression1 op expression2 •  Le résultat est de type int (pas de type booléen en C): 1 si vrai, et 0 sinon.

ENSAM - Meknès

13

14/03/16

Les opérateurs en C

Catégorie Logiques booléens

E. Zemmouri,

Opérateurs

Syntaxe et remarques

&& (le ET) || (le OU) ! (le NON)

•  Le résultat est de type int: 1 si vrai, et 0 sinon. •  L’évaluation d'une expression se fait de gauche à droite et s’arrête dès que le résultat final est déterminé. Exemple: int i,j, n; if (i!=j && i
ENSAM - Meknès

Les opérateurs en C

Catégorie Logiques bit à bit (bitwise operators)

E. Zemmouri,

Opérateurs & | ^ ~ << >>

Syntaxe et remarques Exemple et signification: unsigned char a = 103, b = 41; expr -----a b a & b a | b a ^ b ~a a >>2 a <<3

//sur 8 bits

binaire déc signification --------- ----- -----------------0110 0111 103 valeur de a 0010 1001 41 valeur de b 0010 0001 33 et bit à bit 0110 1111 111 ou bit à bit 0100 1110 78 ou exclusif 1001 1000 152 complément à 1 0001 1001 25 décalage à droite 0011 1000 56 décalage à gauche

ENSAM - Meknès

14

14/03/16

Les opérateurs en C

Catégorie

Opérateurs

Incrémentation Décrémentation

++ --

Affectation composée

E. Zemmouri,

+= *=

•  ++ ajoute 1 à son opérande •  -- soustrait 1 à son opérande •  S'utilisent en suffixe (var++ et var--) et en préfixe (++var et --var). Exemple: int x, n; n = 5; •  x = n++; incrémentation après affectation è x = 5 puis n = 6 •  x = ++n; incrémentation avant affectation è n = 6 puis x = 6

-= /=

Syntaxe et remarques

%=

variable op= expression; Équivalent à: variable = variable op expression;

ENSAM - Meknès

Les opérateurs en C

Catégorie Opérateur conditionnel ternaire

Opérateurs ? :

Syntaxe et remarques Condition ? Expression1 : Expression2 •  Le résultat est Expression1 si la condition est vraie et Expression2 sinon. •  C'est l'équivalent d'un if – else. Exemple : int a, b, max, min; min = (a<=b) ? a : b; max = (a>=b) ? a : b; float x; x = (x>=0) ? x : (-x);

E. Zemmouri,

ENSAM - Meknès

15

14/03/16

Les opérateurs en C

Catégorie Opérateur de conversion explicite de type (cast)

Opérateur d'adresse Opérateur de taille

E. Zemmouri,

Opérateurs (type)

&

sizeof

Syntaxe et remarques (type)expression •  Permet de modifier explicitement le type d'un objet. Exemple : int a = 3, b = 2; float x; x = a/b; è x = 1.0 x = (float)a/b; è x = 1.5; &variable •  Appliqué à une variable retourne l’adresse mémoire de cette variable. sizeof(expression) •  expression est un type, une variable, … •  Le résultat est le nombre d’octets nécessaires pour stocker l'expression.

ENSAM - Meknès

Les opérateurs en C • 

Ordre de priorité des opérateurs o 

E. Zemmouri,

En cas de doute, on utilise les parenthèses

ENSAM - Meknès

16

14/03/16

Les entrées sorties standards

Fonctions d'E/S •  Il s’agit des fonctions de la librairie standard stdio.h utilisées avec les unités classiques d’entrées / sorties: o 

le clavier et l’écran.

•  Pour les utiliser : o 

E. Zemmouri,

#include <stdio.h>

ENSAM - Meknès

17

14/03/16

Fonction d'affichage •  La fonction printf o 

C'est une fonction d’impression formatée

o 

è les données sont converties selon le format choisi avant impression.

•  Syntaxe: o 

printf ("chaine de caractères", expression1, …, expressionN);

o 

La chaîne de caractères contient le texte à afficher et les spécifications de format correspondant à chaque expression.

E. Zemmouri,

ENSAM - Meknès

Fonction d'affichage • 

30 Spécificateurs de format pour printfChapitre 1. format %d %ld %u %lu %o %lo %x %lx %f %lf %e %le %g %lg %c %s

E. Zemmouri,

conversion en int long int unsigned int unsigned long int unsigned int unsigned long int unsigned int unsigned long int double long double double long double double long double unsigned char char*

ENSAM - Meknès

Les bases de la programmation en C

´ecriture d´ecimale sign´ee d´ecimale sign´ee d´ecimale non sign´ee d´ecimale non sign´ee octale non sign´ee octale non sign´ee hexad´ecimale non sign´ee hexad´ecimale non sign´ee d´ecimale virgule fixe d´ecimale virgule fixe d´ecimale notation exponentielle d´ecimale notation exponentielle d´ecimale, repr´esentation la plus courte parmi %f et %e d´ecimale, repr´esentation la plus courte parmi %lf et %le caract`ere chaˆıne de caract`eres

Tab. 1.5 – Formats d’impression pour la fonction printf

Exemple : #include <stdio.h> main() { int i = 23674; int j = -23674;

18

14/03/16

Fonction de lecture •  La fonction scanf o 

permet de saisir des données au clavier les convertir selon les formats spécifiés puis les stocker en mémoire.

•  Syntaxe o 

E. Zemmouri,

scanf ("formats", adresse1, adresse2, … , adresseN);

ENSAM - Meknès

Fonction de lecture Chapitre 1. Les bases de la programmation en C

32

• 

Format pour scanf

E. Zemmouri,

ENSAM - Meknès

format %d %hd %ld %u %hu %lu %o %ho %lo %x %hx %lx %f %lf %Lf %e %le %Le %g %lg %Lg %c %s

type d’objet point´e int short int long int unsigned int unsigned short int unsigned long int int short int long int int short int long int float double long double float double long double float double long double char char*

repr´esentation de la donn´ee saisie d´ecimale sign´ee d´ecimale sign´ee d´ecimale sign´ee d´ecimale non sign´ee d´ecimale non sign´ee d´ecimale non sign´ee octale octale octale hexad´ecimale hexad´ecimale hexad´ecimale flottante virgule fixe flottante virgule fixe flottante virgule fixe flottante notation exponentielle flottante notation exponentielle flottante notation exponentielle flottante virgule fixe ou notation exponentielle flottante virgule fixe ou notation exponentielle flottante virgule fixe ou notation exponentielle caract`ere chaˆıne de caract`eres

Tab. 1.6 – Formats de saisie pour la fonction scanf

1.11.3

Impression et lecture de caract` eres

Les fonctions getchar et putchar permettent respectivement de lire et d’imprimer des caract`eres. Il s’agit de fonctions d’entr´ees-sorties non format´ees. La fonction getchar retourne un int correspondant au caract`ere lu. Pour mettre le caract`ere lu dans une variable caractere, on ´ecrit caractere = getchar();

19

14/03/16

Les structures de contrôle

Bloc d'instructions •  Pour délimiter un bloc d'instructions on utilise les { } o 

Deux instructions ou plus.

•  Les blocs peuvent être imbriqués:

Ligne d'entête { Instruction 1 Instruction 2 ... Instruction N }

Ligne d'entête { Instruction Instruction Ligne d'entête { Instruction Instruction } Instruction Instruction }

E. Zemmouri,

ENSAM - Meknès

20

14/03/16

La sélection • 

Utilisée pour l'exécution conditionnelle

• 

Sélection simple :

if (expression) { Bloc d'instructions 1 } else{ Bloc d'instructions 2 }

if (expression){ Bloc d'instructions }

False

expr expr

True

Instructions

E. Zemmouri,

True

False

Instructions 2

Instructions 1

ENSAM - Meknès

La sélection • 

Sélection multiple switch

False

switch (expression){ case constante1 : { instructions 1 break; }

False

. . .

case constante2 : { instructions 2 break; } ... case constanteN : { instructions N break; } default : { instructions break; }

= cste2

False

Instructions

= csteN

= cste1 True

True

Instructions 1

Instructions 2

True

Instructions N

} E. Zemmouri,

ENSAM - Meknès

21

14/03/16

La répétition •  La boucle for o 

Permet de répéter un bloc d'instructions un nombre prédéfini de fois for (expr1; expr2; expr3){ Instruction 1 ... Instruction N }

expr1

expr2

False

True

Instructions 1 ... Instruction N

expr3 E. Zemmouri,

ENSAM - Meknès

La répétition •  La boucle while o 

Tant que une condition est vraie, on répète l'exécution des instructions

o 

On teste, puis on exécute. expr while (expression){ Instruction 1 ... Instruction N }

E. Zemmouri,

False

True

Instructions 1 ... Instruction N

ENSAM - Meknès

22

14/03/16

La répétition •  La boucle do - while o 

Répéter un bloc d'instructions tant que une condition est vraie

o 

On exécute, puis on teste. Instructions 1 ... Instruction N

do { Instruction 1 ... Instruction N }while (expression); True

expr False

E. Zemmouri,

ENSAM - Meknès

break et continue •  Utilisées dans une boucle for ou while ou do - while o 

break : permet de sortir de la boucle (ou de switch aussi)

o 

continue : permet de passer à l'itération suivante de la boucle

E. Zemmouri,

ENSAM - Meknès

23

14/03/16

break et continue

E. Zemmouri,

ENSAM - Meknès

24

More Documents from "othman ok"

Matricecor.pdf
June 2020 16
P94-078.pdf
May 2020 8
02-langage C.pdf
June 2020 7
April 2020 29
April 2020 27