Transcription of Programmation en C – Exercices
1 Universit de Perpignan Via DomitiaLicence de Sciences et TechnologiesMention Sciences de l Ing nieurProgrammation en C ExercicesEnonc sSujets des partiels et examensExemples de corrections des exercicesExemples de corrections des partiels et des examensPh. LANGLOISV ersion du 18 septembre 2013 Programmation en C ExercicesPhL. version du 18 septembre 20132 Table des mati resI Enonc s des exercices71 Description de l environnement de code source l ex cution : cas simple .. code source l ex cution : cas g n ral .. et conseils associ s .. M* Windows.. tre s r d avoir bien compris ..122 Variables, valeurs, constantes, d clarations, types scalaires, op rateurs, expressions, entr es-sorties simples133 Op rateurs entiers, bit bit, logiques, tests154 Fonctions math matiques, tableaux, boucles, constantes symboliques175 Structures de contr le : r p tition, choix196 Fonctions : prototypes, d finition, appels237 Pointeurs258 Types,makefile27II Sujets des partiels et de novembre 2010.
2 De d cembre 2010 .. de mars 2011 .. de mai 2011 .. de juin 2011 (session 2) .. de juillet 2011 (session 2) ..41 III Exemples de corrections des exercices4310 Description de l environnement de bonjourlemonde .. swap1 .. swap2 .. swaps .. swap3 ..4611 Variables, valeurs, constantes, d clarations, types scalaires, op rateurs, entr es-sorties simples operateurs .. int2bin .. tabverite .. formats ..513 Programmation en C Exercices12 Op rateurs entiers, bit bit, logiques, vallimit .. op-int .. int-vs-unsigned .. div .. op-bit .. op-decall .. masques ..5613 Fonctions math matiques, tableaux, boucles, constantes somme .. somme-p .. felem .. fibo.
3 Fibo-inv .. fois2fois2etc .. max-tab .. ind-max-tab .. last-ind-max-tab ..6314 Structures de contr le : r p tition, double-indice .. des-boucles-for .. des-boucles-while .. un-deux-etc .. suites .. equa-prem-deg .. aleas ..6715 Fonctions : prototypes, d finition, f-fibo .. fibo .. f-fibo-main .. f-masques .. f-masques-main ..7116 ptr .. arith-ptr .. affiche-vect .. affichons-mat .. mystery-inc .. tab-ptr .. main-inc .. doubler-tab .. tab-dyn ..8117 Types, type-vect-mat .. manip-type-vect-mat .. makefile ..84 PhL. version du 18 septembre 20134 Programmation en C ExercicesIV Exemples de correctiondes partiels et Correction du partiel de novembre echauffement.
4 Tri2 .. tri3 .. expression .. des-expressions .. exp-bool ..8919 Correction de l examen de d cembre paire .. code-asci .. max-prod-mat .. moiss .. f-mois .. mois2 ..9520 Correction du partiel de mars tables-mult .. xoxo .. compter ..9821 Correction de l examen de mai rev1 .. rev2 .. rev3 .. rev4 .. rev5 .. aff-tab-carres-1 .. aff-tab-carres-2 .. aff-tab-carres-3 .. aff-tab-carres-4 .. 10522 Correction de l examen de juin 2011 (session 2) exp2 .. exp3 .. un .. combiendeun .. suite .. suite2 .. 10923 Correction de l examen de juillet 2011 (session 2) moy1 .. moy2 .. moy4 .. concattab .. 113V Annexes11524 C Reference Card (ANSI)11725 R sum des commandes de base UNIX11926 Description de l enseignement121 PhL.
5 Version du 18 septembre 20135 Programmation en C ExercicesPhL. version du 18 septembre 20136 Premi re partieEnonc s des exercices7 Chapitre 1 Description de l environnement deprogrammationCette partie d crit la prise en main de l environnement de programmationgccutilis en TD sous envi-ronnement Linux ou aveccygminsous utiliser pour les extensions des noms de fichiers :.c: fichier source : fichier en-t te (header) : fichier objetsans extension : ex cutableOn distingue deux cas, selon que le programme est compos d un seul fichier (cas simple) ou de plu-sieurs (cas g n ral). Du code source l ex cution : cas simpleTrois tapes sont n cessaires pour cr er un fichier ex cutable partir d un fichier de code Compiler : g n ration du fichier nous verrons plus loin que cette tape comporte en faitdes tapes interm Linker : dition des liens entre les fichiers objets et cr ation du fichier ex deux tapes peuvent tre aussi regroup es en une seule commande, ce que nous apprendronsd Le code sourceUtiliser votre diteur favori pour taper la version C suivante du classique Hello World.
6 En fran *Vous l avez reconnu : Bonjour le monde !*/#include< >int main(){printf("Bonjour le (centre du) monde !\n");return 0;}Sauvegarder ce programme dans le Les principales sp cificit s de cette configutaion sont d crites la section en C M thode 1 : g n ration directe de l ex cutableLe cas simple du code contenu dans un fichier unique permet d utiliser une seule commande cet version la plus courte est$ gcc partir du fichier , le compilateurgccg n re un ex cutable appel se trouvera au m me endroit que le fichier source. Pour l ex cuter il suffit alors d entrer la com-mande suivante (dans une fen treterminal).$ . plus simplement encore,$ votre variable d environnementPATH permet d examiner le r pertoire est plus pratique de pouvoir choisir le nom de son ex cutable en le pr cisant avec l option-o.
7 $ gcc -o bonjourlemonde pour introduire quelquesoptions de compilation obligatoires tout au long de cette ann utiliserez en effet la commande plus longue suivante.$ gcc -Wall -pedantic -std=c99 -o bonjourlemonde -std=c99indique au compilateur de traiter le code selon le standard C99 (et donc de rejeter certainesextensions comme celles de GNU par exemple) -pedanticpermet de signaler les avertissements, ouwarnings, selon la norme ISO ; et -Wallpermet de signaler un grand nombre d autreswarningsd crit dans leman effet la diff rence d Ada, la grande permissivit de C r duit l aide du compilateur (sans option)pour traquer certaines erreurs et les mauvaises pratiques de M thode 2 : compiler et lier avant d ex cuterD s que votre application comporte plusieurs fichiers, il est n cessaire de proc der en deux tapes :i) compilation-g n ration (option-c) d un fichier objet ( )ii) puis cr ation de l ex cutable (sans extension) par ditions des liens (option-o) entre les diff rentsfichiers le cas simple, chaque tape (compilation, dition des liens) correspond une des deux lignes decommandes suivantes.
8 $ gcc -Wall -pedantic -std=c99 -c $ gcc -Wall -pedantic -std=c99 -o bonjourlemonde suffit maintenant d ex Pour bien comprendre Recommencer les m thodes 1 et 2 partir de fichiers sources modifi s (contenu, nom du fichier, autresextensions), ailleurs dans votre arborescence. Observer le contenu du r pertoire de travail apr s chaque commande. Observer les droits sur les diff rents Du code source l ex cution : cas g n ralNous d taillons maintenant le cas habituel d applications comportant plusieurs fichiers sources et l uti-lisation de la version du 18 septembre 201310 Programmation en C Editer-compiler-lier-ex cuterEntre la cr ation du code source ( dition) et l ex cution du binaire qui en d coule, nous retrouvons lesdeux tapes de compilation et d dition des liens d j d que l application est constitu e de plusieurs fichiers (en g n ral des les fichiersd en-t ), g n rer l ex cutable n cessite de cr er, un un, tous les fichiers objets(.)
9 O) associ aux (compilation et g n ration des fichiers objets, option-c) , puis de lier ( di-tion des liens, option-o) tous ces fichiers objets (et si besoin les biblioth ques ext rieures) en pr cisionle nom de l ex cutable (sans extension en g n ral).Par exemple, notre application est constitu e des , , , ce dernier contenantla proc dure principalemain. Nous voulons l ex cuter par le biais de la commande (sans argument)endavant. On y arrive en effectuant les deux tapes compilation ditions des liens suivantes.$ gcc -Wall -pedantic -std=c99 -c $ gcc -Wall -pedantic -std=c99 -c $ gcc -Wall -pedantic -std=c99 -c $ gcc -Wall -pedantic -std=c99 -o endavant est courant de devoir modifier un fichier parmi tous ceux qui consitue une application.
10 Dans ce cas,il n est pas n cessaire de recompiler des fichiers non modifi s pour cr er un nouvel ex cutable. Il suffitde mettre jour le fichier objet concern puis de cr er une nouvelle versi de l x Utiliser unMakefileCette partie sera d crite une fois la compilation s par e trait e en Pratique et conseils associ Une session classique1. Cr er un fichier source sous l diteur,2. le compiler,3. corriger (sous l diteur) les erreurs signal es par le compilateur,4. le recompiler puis revenir l tape 3 tant que la compilation ne s ach ve pas avec succ s,5. ex cuter le programme sur diff rents jeux de donn es bien choisis,6. identifier ainsi les (premiers)bugset revenir l tape 3 jusqu obtenir l ex cution Conseils pour l criture d un fichier sourceLa plupart des conseils suivants ont pour objectif d am liorer la lisibilit des fichiers sources, la s ret ,la maintenabilit et la portabilit des d veloppements.