43
Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions Introduction au langage C Système et environnement de programmation Université Grenoble Alpes Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes 1 / 42

Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Embed Size (px)

Citation preview

Page 1: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Introduction au langage C

Système et environnement de programmation

Université Grenoble Alpes

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes1 / 42

Page 2: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Plan

1 Le langage C

2 Bases entières

3 Types

4 Les caractères

5 Les tableaux

6 Les structures de contrôle

7 Les fonctions

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes2 / 42

Page 3: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Origine

Créé en 1972 par K. Thompson, D. Ritchie, B. KernighanAux débuts d’UNIX (1969) : développement du systèmeEncore largement utilisé aujourd’hui

Noyau des systèmes d’exploitationProgrammes nécessitant une grande efficacité de calculSystèmes embarqués (peu de mémoire, runtime basique)

Etendu en C++ par B. Stroustrup en 1983, notammentOrienté objetExceptionPolymorphisme paramétréRéférences

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes3 / 42

Page 4: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Différences majeures avec Python

Mémoire gérée explicitementVariables typées

Il faut les déclarer avant toute utilisationTaille fixe occupée en mémoireEnsemble fini de valeurs représentables

Allocation mémoire expliciteIl faut demander au système toute mémoire utilisée (allocation)Aucune structure de données ne grossit toute seule en mémoire(tableaux, listes, . . . )Il faut libérer la mémoire qui ne sert plus

Forme et mécanismes un peu différentsIndentation libre, blocs délimités par {}Il faut indenter (devoir pour les relecteurs)Non orienté objet

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes4 / 42

Page 5: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Pourquoi apprendre le C ?

Tout informaticien doit connaître le CPour comprendre comment on écrit les choses à plus basniveauPour savoir comment être efficace lorsque cela est necéssaireParce que, parfois, on a besoin d’être à bas niveau

Noyau du système (gestion processus et mémoire, pilotes)Interpréteur python, java, . . . (gestion mémoire)

Souvent comparé à un langage d’assemblage portableNiveau immédiatement au dessusCompilable sur tout système/processeur

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes5 / 42

Page 6: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Mon premier programme en CTout programme doit contenir une fonction main// Un commentaire débute par //// # include va chercher le contenu d’un fichier// stdio.h : affichage et lecture standards# include <stdio.h>int main () {

// printf permet d’afficher à l’écran// \n est le caract ère de fin de ligneprintf ("Hello world\n");// Toutes les instructions se terminent par un ;return 0;

}

Dans un environnement UNIX, un programme renvoie :0, tout s’est bien passéUn code d’erreur non nul, en cas de problème

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes6 / 42

Page 7: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Execution de mon premier programme

Le texte d’un programme en C n’est pas exécutableCompilation : texte en C -> exécutable en langage machineLangage machine

Illisible par un être humainCompris directement par le processeur (efficace)

Dans le cas de mon programme hello_world.cclang hello_world .c

Produit un fichier exécutable a.out en langage machinePour l’exécuter :./a.out

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes7 / 42

Page 8: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Plan

1 Le langage C

2 Bases entières

3 Types

4 Les caractères

5 Les tableaux

6 Les structures de contrôle

7 Les fonctions

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes8 / 42

Page 9: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Les bases utiles

Une valeur entière est représentée dans une baseLes humains ont dix doigts et comptent donc en base dixCette norme est tellement répandue que les humains n’ayantpas dix doigts comptent aussi en base 10Mais comme le disait une personne célèbre :

Il y a 10 catégories de personnes, les informaticiens et lesautres – Benjamin Franklin

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes9 / 42

Page 10: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Le binaire : la base 2

Le matériel utilisé en informatique stocke généralementl’information sous la forme de deux états (signal ou pas)On assemble une séquence de plusieurs de ces états pourreprésenter l’informationLa première base utile est donc la base 2

chiffres utilisés :

0 1

Exemples

Décimal 0 1 2 3 5 7 11Binaire 0 1 10 11 101 111 1011

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes10 / 42

Page 11: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

L’octal : la base 8

Un chiffre octal correspond à 3 chiffres binairesla conversion est facileUtilise une partie des chiffres de la base 10On l’utilise pour les droits Unix (chmod 764)

chiffres utilisés :

0 1 2 3 4 5 6 7

Exemples

Décimal 0 1 2 3 5 7 11 13 17 19Octal 0 1 2 3 5 7 13 15 21 23

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes11 / 42

Page 12: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

L’hexadécimal : la base 16

Un chiffre hexadécimal correspond à 4 chiffres binairesla conversion est facilePermet une représentation compacte de données binaires :11011110101011011011111011101111 se représente mieuxen DEADBEEF

chiffres utilisés :

0 1 2 3 4 5 6 7 8 9 A B C D E F

Exemples

Déc. 0 1 2 3 5 7 11 13 17 19 23 29 31Hexa. 0 1 2 3 5 7 B D 11 13 17 1D 1F

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes12 / 42

Page 13: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Exercice

Parmi les nombres suivants :

10 14 ADA 70 0

Combien sont valides en binaire ?Combien sont valides en octal ?Combien sont valides en décimal ?Combien sont valides en hexadecimal ?

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes13 / 42

Page 14: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Pour s’exercer

Les conversions de base c’est super rigoloMais pour ceux qui trouveraient ça ennuyeux, il y a Flippy bit

Application AndroidIl faut repousser une invasion d’aliens hexadécimauxOn tire en traduisant en binaire

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes14 / 42

Page 15: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Notations en C

n1 = 0b10; // binaire (vaut 2)n2 = 010; // octal (vaut 8)n3 = 10; // decimal (vaut 10)n4 = 0x10; // hexadécimal (vaut 16)

Attention ! La notation C pour l’octal est très dangereuse, ilest facile de la confondre avec du décimalCes notations se retrouvent dans de nombreux autres langages

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes15 / 42

Page 16: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Plan

1 Le langage C

2 Bases entières

3 Types

4 Les caractères

5 Les tableaux

6 Les structures de contrôle

7 Les fonctions

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes16 / 42

Page 17: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Le typage

En C, toutes les variables ont un typeOn doit déclarer une variable (et son type) avant de l’utiliserLe type explicite la nature et la taille du contenu de la variableLe compilateur vérifie le type des variables manipulées

Paramètres effectifs des appels de fonctionsOpérandes des opérateurs utilisés

Lorsque les types de correspondent pasConversion automatique lorsque cela est possibleErreur sinon

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes17 / 42

Page 18: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Intérêts du typage

Aide le programmeur en soulignant certaines erreursEx : on ne peut pas ajouter une chaine de caractères à unentierIl faut convertir la chaine avant, si elle représente bien un entierDiagnostiqué à la compilation (tôt)

Résulte en une représentation compacte et efficace enmémoire

Un int en C occupe en général 4 octetsUn entier en python occupe une place qui dépend de sa valeur

Occupe plus de place (taille à stocker)Varie dynamiquement : surcoût

Evite certaines conversions à la volée durant l’exécution

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes18 / 42

Page 19: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Les types entiers

Les divers types entiers varient en tailleNon standard en C :la taille de ces types peut varier selon l’architecture/OSIl existe des types standard pour préciser la taille de la variableen octet (hors de notre programme)Signés par défaut (entiers relatifs) il faut ajouter unsigned àla déclaration pour une variante non signée (entier naturel)

Exemple sur Debian 8.10 / x86_64 (turing)char : 1 octetshort : 2 octetsint : 4 octetslong : 8 octetslong long : 8 octets

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes19 / 42

Page 20: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Intervalles de valeurs

On choisit le type en fonction de la taille de l’entier à représenterSur turing

Octets Bits Valeurs En signé En non signé1 8 256 [-128 ; 127] [0 ;255]2 16 65536 [-32768 ;32767] [0 ;65535]4 32 232 [-231 ;231-1] [0 ;232-1]

(4 milliards)8 64 264 [-263 ;263-1] [0 ;264-1]

(16 milliardsde milliards)

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes20 / 42

Page 21: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Exercice

Combien de valeurs peut-on représenter avec les 5 doigtsd’une main ?

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes21 / 42

Page 22: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Que choisir ?

A moins de progrès fulgurants en médecine, l’âge d’un humainpourra être représenté par un unsigned charPar contre pour compter le nombre d’étudiants dans uneuniversité on prendra plutôt un unsigned shortPour suivre le solde du compte en banque d’une personne, unint suffit généralementPour compter le nombre d’être humains sur terre on devrautiliser un unsigned long long

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes22 / 42

Page 23: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Les types à virgule flottante

Nombre rationnels caractérisés par une partie entière et unepartie fractionnelleReprésentés en machine sous la formemantisse ∗ 2exposant où 1 ≤ mantisse < 2Valeurs particulières incluses

NaN : Not a Number+Inf/-Inf : Plus ou moins l’infini

Sur turing

Type Octets Mantisse Exposantfloat 4 23 bits 8 bitsdouble 8 52 bits 11 bitslong double 16 112 bits 15 bits

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes23 / 42

Page 24: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Particularités des types à virgule flottante

Non standard en CBeaucoup de formats coexistentStandard (IEEE 754) parfois absent ou partiellement respecté

Répartition mantisse / exposant= compromis intervalle de valeur / précisionBeaucoup de rationnels non représentables exactement

1/3 qui a un infinité de chiffres après la virgulePlus surprenant : 1/10 également car nous sommes en base 2On ne représente que les rationnels de la forme

mantisse × 2taillemantisse+exposant

2taillemantisse

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes24 / 42

Page 25: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Calculer avec des nombres flottants

La précision finie oblige à être conservatifOn ne compare pas à 0On teste si la valeur absolue est inférieure à un ε fixé

Les erreurs se propagent, les alternatives sont coûteusesArithmétique d’intervallesCalcul en précision arbitraire

En pratiqueDouble précision souvent acceptable pour le calcul scientifiqueSimple précision pour la cao, les jeux vidéoDemi précision pour certains domaines (deep learning)

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes25 / 42

Page 26: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Plan

1 Le langage C

2 Bases entières

3 Types

4 Les caractères

5 Les tableaux

6 Les structures de contrôle

7 Les fonctions

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes26 / 42

Page 27: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

La table ASCII

En Cles caractères n’existent pason ne manipule que des codes entiers qui les représententtraduction à la lecture, l’ecriture ou dans les constantes

Le standard ASCII associe un caractère à chaque valeurnumérique de [0 ;127]128 caractères définis ⇒ 7 bits de stockageOn peut donc stocker cette valeur numérique sur un octet8ème bit utilisé dans des certaines variantes pour représenterdes caractères spécifiques à une langue

Windows latin-1Mac OS roman

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes27 / 42

Page 28: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Partie imprimable du code ACSII

30 40 50 60 70 80 90 100 110 120---------------------------------0: ( 2 < F P Z d n x1: ) 3 = G Q [ e o y2: * 4 > H R \ f p z3: ! + 5 ? I S ] g q {4: " , 6 @ J T ^ h r |5: # - 7 A K U _ i s }6: $ . 8 B L V ‘ j t ~7: % / 9 C M W a k u SUP8: & 0 : D N X b l v9: ´ 1 ; E O Y c m w

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes28 / 42

Page 29: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Ambiguïté du nom char

Caractère ascii stocké comme une valeur entière sur 1 octetLe type char fait un octetSon nom laisse entendre qu’il permet de stocker un caractèreOui ! Mais c’est avant tout une valeur entière sur un octet

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes29 / 42

Page 30: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Entier ou caractèreLe f de printf signifie "format"

%c est un format caractère%d est un format entier

Qu’affiche ce code ?char c = 65;int i = 65;

printf ("c1 =%c, c2=%d\n", c, c);printf ("i1=%c, i2=%d\n", i, i);

c1=A, c2=65i1=A, i2=65

Deux fois la même chose !Un int stocke aussi bien la valeur numérique d’un caractèrequ’un char, on perd juste de la place inutile.

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes30 / 42

Page 31: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Entier ou caractèreLe f de printf signifie "format"

%c est un format caractère%d est un format entier

Qu’affiche ce code ?char c = 65;int i = 65;

printf ("c1 =%c, c2=%d\n", c, c);printf ("i1=%c, i2=%d\n", i, i);

c1=A, c2=65i1=A, i2=65

Deux fois la même chose !Un int stocke aussi bien la valeur numérique d’un caractèrequ’un char, on perd juste de la place inutile.

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes30 / 42

Page 32: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Exercice

Ecrire le corps de la fonction C suivante :char capitalize (char c);

Si c est une lettre minuscule la fonction renvoie la lettremajuscule associéeSi c n’est pas une lettre minuscule, renvoie c

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes31 / 42

Page 33: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Plan

1 Le langage C

2 Bases entières

3 Types

4 Les caractères

5 Les tableaux

6 Les structures de contrôle

7 Les fonctions

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes32 / 42

Page 34: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Déclaration d’un tableau

Un tableau est un ensemble d’éléments consécutifs de même typeLa taille d’un tableau :

est le nombre d’éléments qu’il contientest donnée à la déclarationne varie pas au cours de l’exécutionn’est pas stockée par le C (à nous de le faire)

Déclarationint tableau [10];

On accède à un élément à l’aide de son indice dans le tableautableau [3] = 42;

Les indices sont dans [0; taille − 1]

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes33 / 42

Page 35: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

DébordementsAttention, le code suivant marche !int tableau [10];tableau [99] = 42;

Le C ne vérifie pas que l’indice donné est dans le tableauLa commande ci-dessus marche

Le programme va écrire dans la mémoire à la case demandéeC’est au delà de la fin du tableau

Deux cas de figure pour l’erreurLa case est en dehors de la mémoire octroyée à l’utilisateur⇒ Segmentation faultSinon, elle contient potentiellement autre chose, son contenusera écrasé, bug très insidieux

Pour éviter cela, il faut être attentif, toujours vérifier qu’onaccède bien aux cases de 0 à taille − 1

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes34 / 42

Page 36: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Plan

1 Le langage C

2 Bases entières

3 Types

4 Les caractères

5 Les tableaux

6 Les structures de contrôle

7 Les fonctions

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes35 / 42

Page 37: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Structure conditionnelle

Syntaxeif (< expression >) {

<bloc instructions 1>} else {

<bloc instructions 2>}

SémantiqueSi l’expression a une valeur non nulle

Alors executer le bloc d’instructions 1Sinon exécuter le bloc d’instructions 2

FacultatifToute la partie else s’il n’y a rien a faire dans le sinonLes accolades si un bloc se réduit à une instruction

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes36 / 42

Page 38: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Boucle while

Syntaxewhile (<expression >) {

<bloc instructions >}

SémantiqueTant que l’expression a une valeur non nulle, exécuter le blocd’instructions (peut ne jamais être exécuté)

FacultatifLes accolades si le bloc se réduit à une instruction

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes37 / 42

Page 39: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Boucle for

Syntaxefor (<expr 1>; <expr 2>; <expr 3>) {

<bloc instructions >}

Sémantique<expr 1>while (<expr 2>) {

<bloc instructions ><expr 3>

}

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes38 / 42

Page 40: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Plan

1 Le langage C

2 Bases entières

3 Types

4 Les caractères

5 Les tableaux

6 Les structures de contrôle

7 Les fonctions

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes39 / 42

Page 41: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Les fonctions sont typées

Une fonction est caractérisée parson nomle type de sa valeur de retour (void si aucune)le type et le nom de chacun de ses paramètres formels

int max(int a, int b) {if (a < b)

return b;else

return a;}

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes40 / 42

Page 42: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Passage de paramètresLes paramètres d’une fonction sont passés par valeur

Un emplacement mémoire est créé pour les paramètres formelsLa valeur des paramètres effectifs y est copiée

=> les variables passées à une fonctions restent inchangées# include <stdio.h>void echange (int a, int b) {

int tmp = a;a = b;b = tmp;

}int main () {

int qd = 42; int ue = 203;echange (qd , ue );printf ("En %d on parle de %d\n", ue , qd );return 0;

}Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes41 / 42

Page 43: Introduction au langage C · Système et environnement de programmation Introduction au langage C Université Grenoble Alpes19 / 42 Le langage CBases entièresTypesLes caractèresLes

Le langage C Bases entières Types Les caractères Les tableaux Les structures de contrôle Les fonctions

Le cas des tableaux

Les tableaux font exception à la règle et sont passés par adresse# include <stdio.h>void echange (int Tab [], int i, int j) {

int tmp;tmp = Tab[i];Tab[i] = Tab[j];Tab[j] = tmp;

}int main () {

// Initialisation de taille et valeursint Tab [] = {42, 203};echange (Tab , 0, 1);printf ("En %d on parle de %d\n", Tab [0], Tab [1]);return 0;

}

Système et environnement de programmation () Introduction au langage C Université Grenoble Alpes42 / 42