Série 2
Premiers pas en programmation
Buts
Cette série a pour but de vous familiariser avec les divers outils dont vous aurez besoin pour écrire et compiler vos programmes en C++, en vous faisant pratiquer sur des exemples simples de (premiers) programmes.Informations
Pour vous aider dans votre pratique (voire votre [auto-]évaluation),
un thème et un niveau de difficulté (de 1 = facile à 3 = avancé) est
associé à chaque exercice. Pratiquez donc en priorité les thèmes avec
lesquels vous vous sentez le moins à l'aise.
De même, si vous êtes doué pour la matière, attaquez directement
les exercices niveau 2 et 3.
Si par contre vous êtes en difficulté, focalisez vous sur les
niveau 1 et 2 puis revenez plus tard sur le niveau 3.
Notez que les niveaux sont déterminés en fonction du moment où
la série est prévue... il est clair qu'un même exercice donné plus
tard au cours de l'année (par exemple au moment de l'examen) serait
considéré comme beaucoup plus facile !
Il existe de plus des exercices de niveau 0, qui reprennent pas
à pas un exemple du cours et l'expliquent en détail. Ces exercices
sont prévus pour vous faire assimiler le cours à votre rythme, en
particulier aux débutants.
Commencez donc par là si vous êtes en difficulté.
La totalité de la série n'est pas prévue pour être finie en 2 heures ! La série est à considérer comme un regroupement de plusieurs exercices, un peu comme un chapitre de livre d'exercices, où chacun peut choisir (à l'aide des indications ci-dessus) ce qui lui semble adapté à sa progression.
Le niveau moyen pour 2 heures d'exercices correspond à deux exercices niveau 1 et un exercice niveau 2.
Pour finir, je vous conseille également, en plus des 2 heures d'exercices hebdomadaires à l'emploi du temps, de travailler par vous-même chez vous de façon régulière en guise d'exercices personnels. Ce travail supplémentaire devrait en moyenne correspondre à 2 à 3 heures hebdomadaires.
Pour résumer :
- Niveau 0
- Reprise pas à pas d'un exemple du cours. Les exercices de ce niveau peuvent sans problème être sautés par tous ceux qui estiment avoir une suffisamment bonne compréhension de la programmation de base et du cours.
- Niveau 1
- Ces exercices élémentaires devraient pouvoir être faits par tous dans un temps raisonnable (30 à 45 minutes maximum). Ils permettent de travailler les bases.
- Niveau 2
- Ces exercices plus avancés devraient être abordés par tous, sans forcément être finis. La reprise de l'exercice avec la correction devrait constituer un bon moyen de progresser.
- Niveau 3
- Ces exercices d'un niveau avancé sont pour les plus motivés/habiles d'entre vous. Ils peuvent dans un premier temps être ignorés. Ils devraient être repris, si nécessaire avec la correction, lors des révisions.
Préliminaires :
Si ce n'est déjà fait, faites les quiz du MOOC.
Premier exercice niveau 0
Le but de cet exercice est de vous apprendre, pas à pas, à
- éditer un programme ;
- compiler un programme ;
- corriger les erreurs de compilation.
- Cliquez ici pour apprendre à travailler avec QTCreator.
- Cliquez ici pour apprendre à travailler avec Geany.
- Si vous souhaitez faire les exercices sur votre propre machine mais que vous n'avez pas encore installé ces outils il faudra vous connecter à distance sur ces machines (point 2 de l'exercice 1 de la série 1).
- Il est recommandé d'acquérir des compétences ave QTCreator (que vous pouvez d'ailleurs adopter comme seul outil de développement en abandonnant Geany). Cet environnement sera utile pour le mini-projet et le projet du semestre prochain.
Second exercice niveau 0 (IMC)
Le but de cet exercice est de vous apprendre, pas à pas, à écrire un petit programme simple comportant :
- la déclaration de variables ;
- la rédaction d'une expression ;
- la lecture de données depuis le clavier ;
- des écritures sur le terminal.
Exercice 1 : Variables (niveau 1)
(pages 13 et 197 dans la 2e édition).
- demande son âge à l'utilisateur ;
- lit la réponse de l'utilisateur et l'enregistre dans une variable age de type entier ;
- calcule l'année de naissance (à un an près) de l'utilisateur et l'enregistre dans la variable annee de type entier ;
- affiche l'année de naissance ainsi calculée.
Indications :
-
Pour demander à l'utilisateur son âge,
affichez un message à l'aide de l'instruction suivante :
cout << "Quel age avez-vous ? " ;
-
Pour lire la réponse de l'utilisateur et l'enregistrer dans la
variable age, utilisez l'instruction suivante :
cin >> age;
-
Pour afficher du texte et des variables, séparez
chaque élément par <<. Exemple :
cout << "message 1 " << var1 << ", message2 " << var2 << endl;
(le endl à la fin correspond au «saut de ligne» et permet à l'affichage de passer à la ligne suivante).
Exercice 2 : Fondue (niveau 1)
Le but de cet exercice est d'écrire un programme qui permet d'adapter automatiquement, en fonction du nombre de convives, les quantités d'ingrédients nécessaires à la confection d'une fondue fribourgeoise (au pur Vacherin fribourgeois ; une recette typiquement suisse, mais à ne pas confondre avec la fondue « moitié-moitié », suisse également ;-) ).
Ecrivez un programme fondue (sous Geany un simple fichier fondue.cc et sous QtCreator ce peut être votre projet qui s'appelle fondue) qui :
-
déclare une constante BASE, initialisée à 4, et qui indique le nombre de personnes pour laquelle est conçue la recette de base ;
-
déclare une variable fromage, initialisée à 800.0, qui donne la quantité de fromage en grammes nécessaire pour BASE personnes (du « Vacherin fribourgeois » en l'occurrence !) ;
-
déclare une variable eau, initialisée à 2.0, qui donne la quantité d'eau en décilitres nécessaire pour BASE personnes ;
-
déclare une variable ail, initialisée à 2.0, qui donne le nombre de gousses d'ail nécessaires pour BASE personnes (on choisit le type double car on veut pouvoir utiliser des moitiés de gousses par exemple) ;
-
déclare une variable pain, initialisée à 400.0, qui donne la quantité de pain en grammes nécessaire pour BASE personnes ;
-
demande à l'utilisateur d'introduire le nombre de convives pour lequel on veut préparer la recette ;
-
lit la réponse de l'utilisateur et l'enregistre dans une variable nb_convives de type entier ;
-
adapte les quantités de chaque ingrédient en faisant une règle de trois (nouvelle_quantite = quantite_de_base * nb_convives / BASE ) ;
-
et affiche la recette pour le nombre de convives voulus selon l'exemple ci-dessous.
Exemple d'exécution du programme
Entrez le nombre de personne(s) conviée(s) à la fondue : 3 Pour faire une fondue fribourgeoise pour 3 personnes, il vous faut : - 600.0 gr de Vacherin fribourgeois - 1.5 dl d'eau - 1.5 gousse(s) d'ail - 300.0 gr de pain - du poivre à volonté
Exercice 3 : Variables (niveaux 2 (début) et 3 (explication))
(pages 13 et 198 dans la 2e édition).
- déclare les variables x et y de type entier ;
- déclare les variables a, b, c et d de type réel ;
- affecte la valeur 2 à x et 4 à y ;
- calcule la somme, la différence, le produit, et le quotient de x par y, et affecte les résultats à a, b, c et d ;
- affiche les valeurs de a, b, c et d.
Compilez et exécutez le programme.
Vous devez constater que le quotient de x par y (c'est-à-dire x / y) donne un résultat nul.
Modifiez ensuite votre programme en déclarant x
et y avec le type réel.
Recompilez et exécutez.
Que constatez-vous ?
Même question avec x de type entier et
y de type réel.
(Expliquez [à votre voisin] les différents résultats obtenus.)
Exercice 4 : Variables, opérateurs arithmétiques (niveau 2)
Une tante fortunée vous envoie un jour une petite enveloppe (en francs tout ronds) pour vos études à l'EPFL. L'étudiant(e) prévoyant(e) et organisé(e) que vous êtes décide de gérer cette somme de la façon suivante :
- Les trois quarts de cette somme seront dédiés à l'achat de livres et fournitures
- Le reste sera équitablement réparti entre les rubriques "cafés à Sat", "abonnement au Flash" et "billets de métro".
Exemple d'exécution du programme:
Combien avez-vous reçu d'argent (Frs)? 800 Livre et Fournitures: 600 Frs Vous pouvez ensuite acheter: 33 cafes a Sat 16 numeros du Flash 22 billets de métro et il vous restera 4 Frs pour les roses blanches.Indication: utilisez des variables de type int. Utilisez l'opérateur % qui vous donne le reste de la division entière.