Le langage C++ 337 CHAPITRE 22 Exercices Ce chapitre présente un certain nombre

Le langage C++ 337 CHAPITRE 22 Exercices Ce chapitre présente un certain nombre d’exercices dont les corrigés sont donnés sur un support électronique séparé1. Les exercices sont groupés par sous- chapitre, et la numérotation suit la numérotation des chapitres. Les numéros des exercices correspondent aux numéros des solutions. Ces exercices ont été compilés avec différents compilateurs. La mention du ou des compilateurs n’est pas systématique. Il se peut que certains de ces exercices compilés avec une certaine version d’un compilateur puissent provoquer des er- reurs sur certains autres. Il en va en particulier ainsi des exercices réalisables en C ANSI plutôt qu’exclusivement en C++. La compatibilité ANSI des compila- teurs C++ est inégale, et souvent soumise au choix d’une ou plusieurs options pas toujours claires au premier abord. L’ensemble des exercices corrigés a été réalisé en utilisant l’éditeur fourni avec le CD, soit Editeur V3.4. Il s’agit d’un logiciel “shareware”, donc sujet à des droits d’utilisation. Ces droits doivent être payés à l’auteur, M. J.-P Menicucci, et se montent à environ 100 FF (vérifier le montant exact mentionné dans le formu- laire d’enregistrement fourni dans l’aide du programme). Les coordonnées de l’auteur peuvent être trouvées à l’adresse indiquée sur la figure suivante. On peut aussi consulter le site (http://www.studioware.com) afin de vérifier s’il n’existe pas une version plus récente de ce logiciel. Le paiement des finances d’enregistre- ment vous donne accès à toutes les nouvelles versions de Editeur. Il est bien sûr possible aussi d’utiliser votre propre environnement de développement, au cas où vous auriez fait l’acquisition d’un autre système. Il est possible dans ce dernier cas de figure que certains caractères (minuscules accentuées, par exemple) ne soient pas supportées par votre environnement de développement. L’éditeur supporte plusieurs formats de fichier, ainsi que trois langues de 1. Les corrigés des exercices font partie du CD de distribution du cours C++ ainsi que l’éditeur et le sys- tème de développement permettant la résolution de ces exercices. einev Télécommunications mjn 338 Le langage C++ dialogue (Français, anglais, italien). Il supporte également l’édition de macros, ce qui en fait un outil très efficace pour l’utilisateur averti. Sa simplicité d’utilisation en font un outil utili- sable également par les novices. Enfin, la possibilité d’ utiliser divers langages de program- mation en font aussi un accessoire utile pour d’autres langages, comme Java, par exemple. Le compilateur utilisé est également livré avec le CD : il s’agit d’un portage par Cygnus Solutions du compilateur de GNU pour Windows 32. Il est nécessaire de disposer de Windows 95 ou Windows NT pour utiliser cet environnement. Hormis le compilateur, qui compile aussi bien du code C ANSI (gcc) que C++ ANSI (g++), l’environnement fourni propose aussi divers utilitaires bien connus des utilisateurs de UNIX, comme make, flex, awk, etc... Les habitués de UNIX se trouveront à leur aise avec cet environnement qui inclut également le shell bash, alors que les habitués de Windows devront se réaccoutumer un peu à la manipulation de fenê- tres alphanumériques. Cet exercice est de toutes façons nécessaire du fait que les exercices proposés utilisent intégralement des entrées-sorties alphanumériques. Le compilateur GNU est gratuit, et se trouve également sur les diverses moutures de UNIX, et bien sûr sur Linux. L’utilisation de ces exercices corrigés dans un autre environnement que Windows requiert une adaptation de format des fichiers. Consulter le site de Cygnus (http://www.cygnus.com) afin de vérifier s’il n’existe pas une nouvelle version : celle actuellement distribuée sur le CD est la version B20. La difficulté des exercices est très variable. En principe, ils sont classés par ordre crois- sant de difficulté, sauf si la logique demande un autre séquencement (exercices liés à la termi- naison préalable d’une autre exercice). La difficulté de l’exercice est signalée par un code alphanumérique dans la donnée. Ce code correspond aux indications de difficulté fréquem- ment rencontrées pour la cotation d’itinéraires de montagne par l’UIAA (Union Internationale des Alpinistes Amateurs); ceci ne signifie pas que les dangers inhérents à la réalisation de l’exercice soient à la mesure du danger rencontré dans un itinéraire de montagne correspon- dant ! Le plus grave danger auquel on s’expose dans ce genre d’exercice est une éventuelle frustration : • F : facile. Réalisable en quelques minutes. • PD : peu difficile. Réalisable en une demi-heure. Le langage C++ 339 einev Télécommunications mjn • AD : assez difficile. Il vaut mieux prévoir une petite heure. • D : difficile. Un après-midi (4 heures) devrait néanmoins suffire. • TD : très difficile. Une journée (8 heures) sera bien remplie. • ED : extrêmement difficile. Il s’agit d’un projet de longue haleine, et le corrigé n’est pas forcément fourni, parceque l’auteur n’a peut-être pas trouvé de solution satisfaisante. • XD : exceptionnellement difficile. Niveau travail de doctorat. Fourni sans corrigé. Les temps indiqués peuvent varier pour certains exercices. En réalité, certains exercices de niveau facile contiennent un nombre élevé de points à traiter, ce qui peut effectivement prendre pas mal de temps. Les corrigés, quand ils existent, sont regroupés par dossiers. Chaque sous-chapitre de cette liste d’exercices a un dossier correspondant localisé à l’intérieur du dossier “Exercices corrigés”. Le nom du dossier contenant les corrigés est mentionné dans l’en-tête des données d’exercices, et les fichiers respectifs sont indiqués dans la donnée. einev Télécommunications mjn 340 Le langage C++ 22.4 Une rapide introduction à C++ Les corrigés se trouvent dans le dossier Exercices corrigés/Hello. 1. (F) Ecrire un programme qui écrit “Hello” sur la console en utilisant <stdio.h> 2. (F) Ecrire un programme qui écrit “Hello” sur la console en utilisant <iostream.h>. 3. (F) Ecrire un programme qui permet de lire un entier et un caractère du clavier en utilisant <stdio.h>. 4. (F) Ecrire un programme qui permet de lire un entier et un caractère du clavier en utilisant <iostream.h> Le langage C++ 341 einev Télécommunications mjn 22.5 Le préprocesseur Les corrigés se trouvent dans le dossier Exercices corrigés/Le préprocesseur. 1. (F) Ecrire un programme affichant systématiquement le numéro de la ligne qu’il est en train d’exécuter (Corrigé : LineNo.c). 2. (F) Ecrire un programme utilisant soit stdio.h soit iostream.h selon qu’il est compilé par un compilateur C ou un compilateur C++. einev Télécommunications mjn 342 Le langage C++ 22.6 Types de base et dérivés Tous ces exercices ne sont pas solubles sans un petit “regard en avant” sur les fonctions. Les notions introduites dans le paragraphe définissant “C++ en un clin d’oeil” devraient pour- tant être suffisantes. Les corrigés se trouvent dans le répertoire Types. 1. (F) Ecrire une macro définissant le type Byte. (Un byte est un mot de huit bit, dont le MSB (Most Significant Bit) représente le signe). On suppose que la machine cible utilise un jeu de caractères de type USASCII. 2. (PD) Définir une structure implémentant des variables VeryLongInt (entiers sur 256 bit). 3. (PD) Afficher sur l’écran une variable de type VeryLongInt. 4. (AD) Lire depuis le clavier une valeur de type VeryLongInt. 5. (F) Définir un type VeryLongInt. 6. (PD) Utiliser le code défini en (exercice 3, page342) et (exercice4, page342) en l’incluant à la structure définissant le type VeryLongInt. Le langage C++ 343 einev Télécommunications mjn 22.7 Types standard introduits par C++ einev Télécommunications mjn 344 Le langage C++ 22.8 Opérateurs standard et instructions Avant d’aborder ces exercices, il est nécessaire d’étudier également le chapitre consacré aux instructions. Pour faire le moindre exercice ayant un intérêt quelconque, il faut avoir une connaissance au moins élémentaire des opérateurs de base et des instructions du langage. Les corrigés de ces exercices peuvent être consultés dans le dossier “Exercices corrigés/Opéra- teurs standard”. 1. (PD) Ecrire un programme permettant l’entrée d’un nombre entier depuis le clavier, et l’affichage de : • Son carré • Sa factorielle • Les bits le composant (prendre garde à la taille de l’entier pouvant varier selon les implé- mentations) • Sa parité • S’il s’agit d’un carré parfait, et si oui, afficher la racine. • S’il s’agit d’un nombre premier Le programme bouclera sur lui-même tant qu’on ne lui a pas donné la valeur 0 à traiter. La sortie du programme réalisé ressemblera à peu près à la séquence suivante (Metrowe- rks Code Warrior avec des entiers de 2 byte) : Entrer un entier 13 Carre de 13 : 169 La factorielle de 13 est -13312 Representation binaire de 13: 000001101 13 est un nombre impair 13 n'est pas un carre parfait 13 est un nombre premier Entrer un entier 5 Carre de 5 : 25 La factorielle de 5 est 120 Representation binaire de 5: 000000101 5 est un nombre impair 5 n'est pas un carre parfait 5 est un nombre premier Entrer un entier 16 Carre de 16 : 256 La factorielle de 16 est -32768 Representation binaire de 16: 000010000 16 est un nombre pair 16 est un carre parfait, dont la racine vaut 4 16 n'est pas premier, puisque divisible par 2 Entrer un entier Le langage C++ 345 einev Télécommunications mjn 0 Au plaisir de vous revoir ... Corrigé : BasicOps.cpp. 2. uploads/Litterature/ exercices-c.pdf

  • 11
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager