Vous êtes sur la page 1sur 66

Introduction Premier programme en C Premiers concepts en C

Initiation au C cours n 1
Antoine Min e
Ecole normale suprieure e

15 fvrier 2007 e

Antoine Min Ecole normale suprieure e e

Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Organisation du cours Rep`res historiques e Gnralits sur le C e e e

Organisation du cours
Organisation des sances e 2 heures : 45mn de cours en salle R, suivi de 1h15mn de TPs en salle S ou T, (` adapter) a Supports de cours Disponibles progressivement sur le site WEB : http://www.di.ens.fr/~mine/enseignement/prog2006 transparents, feuilles de TPs, corrections, ches thmatiques (syntaxe, compilation, dbogage, etc.) e e
Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Organisation du cours Rep`res historiques e Gnralits sur le C e e e

Organisation du cours

Cours libre : pas dexamen, pas dECTS Le cours peut sadapter aux besoins

Contact Antoine Min e mine@di.ens.fr dpartement dinformatique e bureau S14, saumon -1

Antoine Min Ecole normale suprieure e e

Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Organisation du cours Rep`res historiques e Gnralits sur le C e e e

Programme daujourdhui

Aujourdhui gnralits culturelles e e e premier programme, compilation variables, valeurs, types, expressions achage sur lcran e conditionnelles simples boucles simples

Antoine Min Ecole normale suprieure e e

Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Organisation du cours Rep`res historiques e Gnralits sur le C e e e

Rep`res historiques e

Antoine Min Ecole normale suprieure e e

Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Organisation du cours Rep`res historiques e Gnralits sur le C e e e

Rep`res historiques e
Origine Denis Ritchie et Ken Thomson (Bell Labs) cherchent un langage pour reprogrammer UNIX de faon portable. c Le C est driv du B (1969), BCPL (1966), CPL (1960), etc. e e Historique 1969 UNIX par Ken Thomson (assembleur pour DEC PDP-7) 1972 invention du C par Denis Ritchie 1973 UNIX en C par Denis Ritchie et Ken Thomson (PDP-11) 1978 The C Programming Language : C K&R 1989 1`re normalisation : ANSI C (C89), ISO C90 e 1999 2`me normalisation : ISO C99 e
Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Organisation du cours Rep`res historiques e Gnralits sur le C e e e

Le C aujourdhui
Le C est toujours tr`s utilis : e e syst`mes dexploitations : Linux e biblioth`ques : GNU libc e 6,8 millions de lignes 1.4 million de lignes 700 000 lignes 1 million de lignes 250 000 lignes

compilateur : gcc (C, C++, ada, etc.) Internet : Apache (serveur WEB) applications : GIMP (retouche dimages) Langages inspirs du C e compatibles : C++, Objective-C de syntaxe similaire : Java, C#, etc.
Antoine Min Ecole normale suprieure e e

Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Organisation du cours Rep`res historiques e Gnralits sur le C e e e

Gnralits sur le C e e e

Antoine Min Ecole normale suprieure e e

Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Organisation du cours Rep`res historiques e Gnralits sur le C e e e

Un langage impratif e
Programme = squence de : e dclarations e instructions (soit X . . .), (actions ` eectuer), a

chacune termine par un point-virgule ; e

Paradigme impratif e Les instructions sont excutes en squence. e e e Autres paradigmes : langages logiques, orients-objets, e fonctionnels, multi-paradigmes, etc.
Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Organisation du cours Rep`res historiques e Gnralits sur le C e e e

Un langage structur e
Bloc = suite dinstructions dlimite par { et } e e

Structures de contrle o Contrlent lexcution dun bloc : o e conditionnelles if, else, boucles while, for, Il ne faut pas sauter dune instruction ` une autre (goto). a Les blocs et structures de contrle peuvent simbriquer. o
Initiation au C cours n 1

Antoine Min Ecole normale suprieure e e

Introduction Premier programme en C Premiers concepts en C

Organisation du cours Rep`res historiques e Gnralits sur le C e e e

Un langage procdural e
Fonction = bloc dinstructions, dclare une fois, rutilisable de nombreuses fois, e e e peut prendre des arguments et retourner une valeur, a un eet (modication de la mmoire, achage ` lcran), e a e peut tre dnie dans un autre module (biblioth`ques). e e e Fonctions prdnies e e biblioth`que standard (achage, chiers, mmoire), e e biblioth`que mathmatique, etc. e e Il faut les importer par une directive spciale #include. e
Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Organisation du cours Rep`res historiques e Gnralits sur le C e e e

Un langage dclaratif e
Variable = morceau de mmoire o` stocker une valeur e u

Attention Toute variable doit tre dclare avant dtre utilise ! e e e e e Dure de vie dune variable e variable globale, variable locale ` un bloc ou une fonction, a mmoire dynamique. e

Antoine Min Ecole normale suprieure e e

Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Organisation du cours Rep`res historiques e Gnralits sur le C e e e

Un langage typ e
Typage Les variables sont types. e Le type est x lors de la dclaration. e e Le type dune variable dtermine : e lensemble de valeurs possibles (entiers, ottants, etc.), la quantit de mmoire ` rserver (sizeof), e e a e le codage utilis en mmoire, e e la smantique des oprations (division /), e e permet de vrier la cohrence du programme. e e

Antoine Min Ecole normale suprieure e e

Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Organisation du cours Rep`res historiques e Gnralits sur le C e e e

Un langage typ e

Les types du C types entiers (int, unsigned, char, etc.), types ottant : (double, float), types composs : tableaux, enregistrements, e types pointeurs : adresse des variables en mmoire, e types de fonctions (prototypes), types dnis par lutilisateur. e

Antoine Min Ecole normale suprieure e e

Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Organisation du cours Rep`res historiques e Gnralits sur le C e e e

Un langage (assez) bas niveau


Le C permet : des oprations mal dnies ou invalides, e e lacc`s direct ` la mmoire (pointeurs), e a e le contournement du syst`me de types. e Inconvnients e dangereux peu dabstraction Avantages rapidit e contrle total sur la mmoire o e

Le syst`me est l` pour protger les autres programmes ! e a e (Segmentation Fault)


Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Organisation du cours Rep`res historiques e Gnralits sur le C e e e

Un langage compil e
Source = chier .c contenant le texte du programme en C. Langage binaire : seul comprhensible par lordinateur. e La compilation transforme le source en binaire.

fichier source C (texte .c)

La compilation Opration complexe : e analyse syntaxique et typage, gestion des ressources tr`s bas e niveau (registres, adresses), dcoupage en instructions tr`s e e lmentaires. ee
Initiation au C cours n 1

Compilation
fichier executable (binaire a.out)
Antoine Min Ecole normale suprieure e e

Introduction Premier programme en C Premiers concepts en C

Organisation du cours Rep`res historiques e Gnralits sur le C e e e

Un langage compil e
Compilation et excution : e compiler une fois, excuter une ou plusieurs fois, e recompiler si le source change, recompiler pour un autre syst`me / microprocesseur. e Avantages de la compilation rapidit (excution en langage machine), e e vrication compl`te du programme (syntaxe, typage), e e optimisation globale, liens avec dautres langages, binaire autonome. Dirent des langages interprts (shell, Perl, BASIC, etc.) ! e ee
Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Organisation du cours Rep`res historiques e Gnralits sur le C e e e

Un langage normalis e
Normalisation impose par le succ`s du langage C : e e disponible sur des syst`mes tr`s dirents, e e e chaque constructeur fournit son compilateur. Attention : tout nest pas normalis ! e extensions non standard (dpendent du compilateur), e biblioth`ques non standard (dpendent du syst`me), e e e comportements indnis dans la norme. e Avantage de la normalisation Il est possible dcrire des programmes portables e avec un peu de soins !
Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Compilation, excution e Explication de lexemple Exemples derreur

Premier programme en C

Antoine Min Ecole normale suprieure e e

Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Compilation, excution e Explication de lexemple Exemples derreur

Premier programme
bonjour.c
#include <stdio.h> int main() { printf("Bonjour tout le monde!\n"); return(0); }

Eet : ache Bonjour tout le monde !, retourne le code 0 (tout sest bien pass). e

Antoine Min Ecole normale suprieure e e

Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Compilation, excution e Explication de lexemple Exemples derreur

Compilation et excution e

Lancement de lditeur en tche de fond (&). e a


Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Compilation, excution e Explication de lexemple Exemples derreur

Compilation et excution e

Lancement de lditeur en tche de fond (&). e a


Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Compilation, excution e Explication de lexemple Exemples derreur

Compilation et excution e

On tape le texte du programme.


Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Compilation, excution e Explication de lexemple Exemples derreur

Compilation et excution e

Il ne faut pas oublier de sauvegarder.


Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Compilation, excution e Explication de lexemple Exemples derreur

Compilation et excution e

Lancement de la compilation avec gcc.


Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Compilation, excution e Explication de lexemple Exemples derreur

Compilation et excution e

Si le compilateur ne dit rien, tout sest bien pass. e Un chier a.out a t cr. e e ee
Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Compilation, excution e Explication de lexemple Exemples derreur

Compilation et excution e

Lancement de lexcutable. e
Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Compilation, excution e Explication de lexemple Exemples derreur

Compilation et excution e

Le programme sexcute et rend la main. e


Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Compilation, excution e Explication de lexemple Exemples derreur

Anatomie de bonjour.c
bonjour.c
#include <stdio.h> int main() { printf("Bonjour tout le monde!\n"); return(0); }

Tout programme C doit contenir une fonction appele main. e Lexcution commence au dbut de main. e e

Antoine Min Ecole normale suprieure e e

Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Compilation, excution e Explication de lexemple Exemples derreur

Anatomie de bonjour.c
bonjour.c
#include <stdio.h> int main() { printf("Bonjour tout le monde!\n"); return(0); }

Par convention, la fonction main renvoie un code de retour : il est de type int (entier), la convention est de retourner 0 si tout se passe bien, les parenth`se de return sont facultatives, e le code de retour est exploitable depuis le shell.
Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Compilation, excution e Explication de lexemple Exemples derreur

Anatomie de bonjour.c
bonjour.c
#include <stdio.h> int main() { printf("Bonjour tout le monde!\n"); return(0); }

La fonction printf permet dcrire sur lcran. e e elle fait partie de la biblioth`que C standard, e elle doit tre importe depuis len-tte stdio.h. e e e

Antoine Min Ecole normale suprieure e e

Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Compilation, excution e Explication de lexemple Exemples derreur

Anatomie de bonjour.c
bonjour.c
#include <stdio.h> int main() { printf("Bonjour tout le monde!\n"); return(0); }

printf prend en argument une cha de caract`res : ne e tape entre guillemets ", e \ sert ` entrer des caract`res spciaux : a e e \n signie retour ` la ligne. a
Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Compilation, excution e Explication de lexemple Exemples derreur

Exemple derreur
bonjour.c faux
1 2 3 4 5 6 7

#include <stdio.h> int main() { printf("Bonjour tout le monde!\n") return(0); }

Antoine Min Ecole normale suprieure e e

Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Compilation, excution e Explication de lexemple Exemples derreur

Exemple derreur
bonjour.c faux
1 2 3 4 5 6 7

#include <stdio.h> int main() { printf("Bonjour tout le monde!\n") return(0); }

Rsultat e
$ gcc bonjour.c -Wall bonjour.c: In function main: bonjour.c:6: error: expected ; before return bonjour.c:7: warning : control reaches end of ...

Il manque un ;. Aucun a.out nest gnr. e ee


Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Compilation, excution e Explication de lexemple Exemples derreur

Exemple davertissement
bonjour.c faux
1 2 3 4 5

int main() { printf("Bonjour tout le monde!\n"); return(0); }

Rsultat e
$ gcc bonjour.c -Wall bonjour.c: In function main: bonjour.c:3: warning: implicit declaration of function printf

Il manque un #include <stdio.h>. Cest un avertissement non fatal gnr par -Wall. e ee
Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Compilation, excution e Explication de lexemple Exemples derreur

Les options -Wall et -Wextra


-Wall attire lattention, entres autres, sur : les oublis dimports #include, les ambigu es syntaxiques courantes, t les incohrences de types. e La norme est tr`s laxiste ne consid`re pas ces points comme des e e erreurs ! -Wextra ajoute des avertissements supplmentaires. e Toujours compiler avec -Wall et -Wextra !

Antoine Min Ecole normale suprieure e e

Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Compilation, excution e Explication de lexemple Exemples derreur

Espacement
Lespacement et les sauts de lignes sont libres. Exemple correct mais illisible
# include <stdio.h> int main ){ printf ("toto\n" );return(0) ;} (

Exceptions #include <stdio.h> doit tre sur une seule ligne, e les sauts de ligne comptent dans les cha nes de caract`res. e
Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Compilation, excution e Explication de lexemple Exemples derreur

Commentaires
Commentaires : tout ce qui est entre /* et */ est ignor. e Exemple comment e
#include <stdio.h> /* pour avoir printf */ /* la fonction principale */ int main(/* rien ici */) { printf("toto\n"); return(0); /* OK */ }

Conseils : - indentez votre code (tabluation sous Emacs), - commentez votre code.
Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Variables et expressions Achage sur cran e Conditionnelles Boucles while

Variables et expressions

Antoine Min Ecole normale suprieure e e

Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Variables et expressions Achage sur cran e Conditionnelles Boucles while

Dclaration de variables e
Les variables doivent tre dclares avant dtre utilises. e e e e e Syntaxe type nom; Exemple
int main() { int x; double y; x = 12; y = x/3.0; return 0; }
Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Variables et expressions Achage sur cran e Conditionnelles Boucles while

Dure de vie et visibilit e e


Variables locales : dclares en dbut de bloc (sauf C99), e e e cres quand le programme entre dans le bloc, ee dtruites en n de bloc, e masquent les autres variables de mme nom. e Exemple (fragment)
{ int x; { int y; int x; y=x+1; /* il sagit du dernier x */ } y=x+1; /* erreur: y inconnu */ int z; /* erreur: pas en dbut de bloc */ e }
Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Variables et expressions Achage sur cran e Conditionnelles Boucles while

Dure de vie et visibilit e e


Variables globales : dclares en dehors de tout bloc, fonction, e e existent toujours, surtout utiles quand on a plusieurs fonctions (cours suivant). Exemple
#include <stdio.h> int x; int main() { x=12; return x; }
Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Variables et expressions Achage sur cran e Conditionnelles Boucles while

Identicateurs
Identicateur = nom de variable suite de lettres, chires ou souligns : a-z A-Z 0-9 _ e commence par une lettre ou soulign, e pas daccent, despace, de ponctuation, sensible ` la casse. a Exemples int i ; int I ; /* diffrent de i */ e int Mon42emeEntier ; double nombre_flottant2 ;

Antoine Min Ecole normale suprieure e e

Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Variables et expressions Achage sur cran e Conditionnelles Boucles while

Noms rservs e e
Certains noms sont rservs par le langage. e e Une variable ne doit pas porter un nom rserv. e e Noms rservs e e auto break case char const continue default do double else enum extern float for goto if inline int long register restrict return short signed sizeof static struct switch typedef union unsigned void volatile while Tout nom commenant par _ suivi dune majuscule ou de _ c Par contre, on peut utiliser : Auto, break2, _case.
Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Variables et expressions Achage sur cran e Conditionnelles Boucles while

Types de base
Types courants int char double entiers machine caract`res, galement entiers e e nombres ottants double prcision e

Autres types entiers et ottants : unsigned short unsigned short long unsigned long long long unsigned long long signed char unsigned char float
Antoine Min Ecole normale suprieure e e

entiers positifs petits entiers gros entiers tr`s gros entiers e tr`s petits entiers e ottants simple prcision e

Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Variables et expressions Achage sur cran e Conditionnelles Boucles while

Types de base
Pourquoi tous ces types ? compromis entre capacit et occupation mmoire, e e interprtation dpendante de la machine ! e e Exemples courants int unsigned char double 32-bits : [-2147483648 ;2147483647] 32-bits : [0 ;4294967295] 8-bits : [-128 ;127] ou [0 ;255] 64-bits : magnitude 10308 ` 10308 , a 16 chires signicatifs

Antoine Min Ecole normale suprieure e e

Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Variables et expressions Achage sur cran e Conditionnelles Boucles while

Aectations et expressions
Aectation = modication de la valeur dune variable Syntaxe variable = expression ;

Expression = constantes enti`res : 2, -45, a (=141), e constantes ottantes : 3.45, -4.5e-12 (=4.5 1012 ), variables, oprateurs, e parenth`ses : (, ). e
Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Variables et expressions Achage sur cran e Conditionnelles Boucles while

Oprateurs arithmtiques e e
Oprateurs courants e + * / % addition soustraction (binaire) ou ngation (unaire) e multiplication division (enti`re ou ottante) e reste de la division (enti`re) e

Priorits e Comme en mathmatiques : e *, /, % prioritaires sur + et -, si mme priorit, on value de gauche ` droite, e e e a en cas de doute, mettre des parenth`ses. e
Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Variables et expressions Achage sur cran e Conditionnelles Boucles while

Smantique de laectation e

Deux tapes : e valuation de lexpression en un entier ou ottant, e utilise la valeur courante des variables, stockage du rsultat dans la variable destination. e Exemple
x = 2+3*4; /* ici, x vaut 14 */ y = 2*(x+1); /* ici, y vaut 30 */ x = x - 1; /* ici, x vaut 13 */

Antoine Min Ecole normale suprieure e e

Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Variables et expressions Achage sur cran e Conditionnelles Boucles while

Initialisation des variables


Attention ! Le contenu dune variable est indni avant la premi`re aectation. e e Exemple
int x; int y; /* x et y sont alatoires */ e y = 100 / x; /* opration dangereuse */ e

Raccourcis : dclaration et initialisation combine e e int x = 12; int y = 2+3*x;


Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Variables et expressions Achage sur cran e Conditionnelles Boucles while

Achage sur cran e

Antoine Min Ecole normale suprieure e e

Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Variables et expressions Achage sur cran e Conditionnelles Boucles while

La fonction printf
printf permet dacher : du texte, la valeur dexpressions enti`res ou ottantes. e Arguments de printf printf prend un nombre arbitraire darguments : 1er argument : texte ` acher, a arguments suivants : expressions ` valuer. ae Les arguments sont spars par une virgule , e e Eet Dans le texte, chaque %x est remplac par la valeur dun argument. e
Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Variables et expressions Achage sur cran e Conditionnelles Boucles while

Utilisation de printf

Exemple
#include <stdio.h> int main() { int x = 12; printf("x = %i\n",x); return 0; }

Rsultat : e
x = 12

Antoine Min Ecole normale suprieure e e

Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Variables et expressions Achage sur cran e Conditionnelles Boucles while

Utilisation de printf

Exemple
#include <stdio.h> int main() { int x = 12; printf("1/3 vaut %f mais 3x vaut %i\n\n", 1.0/3.0, 3*x); return 0; }

Rsultat : e
1/3 vaut 0.333333 mais 3x vaut 36

Antoine Min Ecole normale suprieure e e

Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Variables et expressions Achage sur cran e Conditionnelles Boucles while

Caract`res magiques dans printf e


Caract`res magiques \ et % e \n \" \\ %i %c %f %% Attention : il faut autant darguments supplmentaires que de %x, e largument doit tre entier pour %i et %c, ottant pour %f, e loption -Wall vrie cela pour vous ! e
Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

passe ` la a ache " ache \ ache un ache un ache un ache %

ligne suivante

entier pass en argument e caract`re pass en argument e e ottant pass en argument e

Introduction Premier programme en C Premiers concepts en C

Variables et expressions Achage sur cran e Conditionnelles Boucles while

Conditionnelles

Antoine Min Ecole normale suprieure e e

Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Variables et expressions Achage sur cran e Conditionnelles Boucles while

La construction if
Syntaxe if (expression) { instructions }

Eet : lexpression est value, e e le bloc suivant nest excut que si lexpression est vraie. e e Raccourcis : si il ny a quune instruction : if (expression) instruction ; Les parenth`ses sont par contre obligatoires ! e
Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Variables et expressions Achage sur cran e Conditionnelles Boucles while

Expressions boolennes e
On peut comparer la valeur de deux expressions arithmtiques : e Oprateurs de comparaison e == != > < >= <= gal e dirent e strictement suprieur e strictement infrieur e suprieur ou gal e e infrieur ou gal e e

Exemple if (x>2*y) { x=2*y ; y=0 ; } La priorit des oprateurs de comparaison est plus faible que celle e e des oprateurs arithmtiques. e e
Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Variables et expressions Achage sur cran e Conditionnelles Boucles while

Oprateurs boolens e e
On peut combiner la valeur de vrit dexpressions boolennes : e e e Oprateurs boolens e e || && ! ou logique et logique ngation logique e (binaire) (binaire) (unaire)

Exemple if ((x>0 && y>0) || (x<0 && y<0)) signe_xy=1 ;

Conseil : utilisez des parenth`ses pour ne pas vous tromper dans e les priorits. e
Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Variables et expressions Achage sur cran e Conditionnelles Boucles while

La construction if else

Syntaxe if (expression) { instructions1 } else { instructions2 } Eet : lexpression est value, e e le premier bloc est excut si lexpression est vraie, e e le deuxi`me bloc est excut si lexpression est fausse. e e e

Antoine Min Ecole normale suprieure e e

Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Variables et expressions Achage sur cran e Conditionnelles Boucles while

Exemple de test

Exemple
if (age>99) printf("vous ^tes trop vieux!\n"); e else { if (age<18) printf("interdit aux mineurs!\n"); else printf("vous avez %i ans\n",age); }

Antoine Min Ecole normale suprieure e e

Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Variables et expressions Achage sur cran e Conditionnelles Boucles while

Oprateurs ` ne pas confondre e a


Ne pas confondre loprateur daectation = et loprateur de comparaison == e e Programme C correct
1 2 3 4 5 6 7

int main() { int x; x==0; if (x=0) {} return 0; }

Conseil : compiler avec -Wall -Wextra

y.c: In function main: y.c:4: warning: statement with no effect y.c:5: warning: suggest parentheses around assignment used as tru
Antoine Min Ecole normale suprieure e e Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Variables et expressions Achage sur cran e Conditionnelles Boucles while

Boucles while

Antoine Min Ecole normale suprieure e e

Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Variables et expressions Achage sur cran e Conditionnelles Boucles while

La construction while
Syntaxe while (expression) { instructions }

Eet : tant que expression est vraie, le bloc est excut. e e Notes : si la condition est initialement fausse, le bloc nest jamais excut, e e la condition est re-teste apr`s chaque tour de boucle, e e les { } sont facultatives. mais les ( ) obligatoires.

Antoine Min Ecole normale suprieure e e

Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Variables et expressions Achage sur cran e Conditionnelles Boucles while

Droulement dune boucle e


entree evaluation de lexpression

vrai? oui instruction 1 . . . instruction n

non

sortie

Antoine Min Ecole normale suprieure e e

Initiation au C cours n 1

Introduction Premier programme en C Premiers concepts en C

Variables et expressions Achage sur cran e Conditionnelles Boucles while

Exemple de boucle
Exemple
#include <stdio.h> int main() { int pommes = 10; while (pommes > 0) { printf("jai %i pommes dans ma pochette\n", pommes); pommes = pommes-1; } printf("je nai plus de pommes!\n"); return 0; }

Antoine Min Ecole normale suprieure e e

Initiation au C cours n 1