1. Préparation requise

publicité
Université du Québec à Chicoutimi
LABORATOIRE 1
INTRODUCTION AU LANGAGUE C/C++
Automne 2012
INTRODUCTION AUX ORDINATEURS
(6TIN100)
Département des Sciences Appliquées
Module d’ingénierie
Préparé par
Hatem Mrad, Ph.D.
Bureau P4-6490
Tél. : (418) 545-5011 poste 2499
Courriel : [email protected]
Auxiliaires d’enseignement
Mathieu Dionne-Tremblay
Jean Gauthier
Université du Québec à Chicoutimi
Département des Sciences Appliquées
Module d’ingénierie
1. Préparation requise
Vous devez vous présenter à la séance de laboratoire avec le présent document imprimé pour
faciliter la concentration et le travail à l’ordinateur en évitant la permutation constante des fenêtres du
laboratoire et du logiciel de programmation. La copie papier vous sert également à marquer votre état
d’avancement et prendre des notes au besoin. Si la taille de l’écran le permet, vous pouvez le diviser en
deux en mettant en côte-à-côte le document de laboratoire à gauche et le logiciel de programmation en
C++ à droite par le redimensionnement des fenêtres respectives. Cette directive s’applique pour toutes les
séances de la session.
2. Logiciel utilisé
Microsoft Visual C++ version 6, langage C++ : dans les laboratoires de l'UQAC.
3. Objectifs
Les objectifs de la présente séance sont de comprendre la portée des variables dans un programme
selon l’emplacement de leur déclaration, de bien distinguer les formats de données des variables ainsi que
la saisie d’information à l’écran par l’usager.
4. Procédure de création d’un programme avec plusieurs
exercices
Pour maintenir la structure de fichier cohérente avec le laboratoire et éviter d’entrer en conflit
entre les exercices, il faut créer un niveau additionnel de répertoire de base pour chaque exercice. Ainsi,
sous LabN, il faut à chaque laboratoire, créer un sous-répertoire ExN comme suit :
Étape
Instructions
1. Démarrer le logiciel
- Aller dans Menu Démarrer de Windows et sélectionner Microsoft
Visual C++ 6.0
2. Créer une nouvelle structure - Aller dans Menu Fichier de Visual Studio > Nouveau > Projet
d’application
- Dans l’arborescence Type de projet, sélectionner Visual C++ >
Win32 et dans la section Modèle d’application, sélectionner
Application console Win32.
- Entrer dans le champ « nom », un nom de projet correspondant au
numéro d’exercice: « Ex1 »
- Sélectionner un emplacement désiré pour créer l’application dans le
champ « Location ». Créez-vous un répertoire de base afin de
correspondre au laboratoire courant, par exemple, sur le
disque/répertoire C:\Labs6TIN100\Lab1.
- Ne rien entrer dans le champ Nom de solution, et assurez vous que
la case Créer le répertoire pour la solution n’est pas cochée,
ensuite cliquer « OK ».
- À la fenêtre suivante, cliquer sur Suivant. Ensuite à la section
Options supplémentaires, cocher la case Projet vide et cliquer sur
Terminer pour entamer le processus de mise en place de la structure
d’application.
Sélectionner une application vierge dans notre cas et « Terminer ».
6TIN100 Introduction aux ordinateurs
Laboratoire 1
Introduction au langage C++
Automne 2011
Page 2 de 10
Université du Québec à Chicoutimi
Département des Sciences Appliquées
Module d’ingénierie
- L’arborescence répertoire et les fichiers de base constituant la
structure d’application sont alors créés.
C’est cette structure de répertoire à partir de LabN qu’il faudra
compresser en un fichier à remettre. L’arborescence des
exercices du laboratoire sera donc sous la forme LabN\ExN
3. Créer le
d’application
fichier
source - Dans l’arborescence créée avec l’explorateur de solution, accéder au
menu contextuel en cliquant avec la touche droite de la sourie du
répertoire ExN > Fichiers sources et sélectionner Ajouter > Nouvel
élément.
- Dans l’arborescence Catégories de la nouvelle fenêtre, sélectionner
Visual C++ et le modèle Fichier C++ (.cpp). Entrer le nom de
fichier correspondant à l’exercice « UtilisationVariables » et Ok.
Un fichier vierge est alors créé.
4. Composer le programme
- Entrer votre programme à faire dans la fenêtre de programmation,
tel que spécifié à l’exercice 1. Attention à la syntaxe.
5. Compiler l’application pour la - Compiler le programme par le menu Générer > Générer la
rendre exécutable
solution, ou utiliser l’icône ou la touche rapide correspondante.
Portez attention au bavard pendant la compilation, il ne doit pas y
avoir d’erreur ni d’avertissement.
6. Exécuter le programme
- Exécuter le programme par le menu Déboguer > Exécuter sans
débogage.
- Avis : Vous pouvez personnaliser les menus pour obtenir les icônes
de compilation et d’exécution pour les utiliser directement. Il suffit
de cliquer sur le menu contextuel dans la zone vide des icônes et
activer les menus Déboguer et Générer. On peut ajouter les icônes
manquantes par Personnaliser tel que celui correspondant à
« Exécuter sans débogage ».
- Fermer la fenêtre à la fin en appuyant une touche tel qu’indiqué par
le système.
7. Fermeture
- Pour fermer l’application et en recréer une nouvelle, passer par le
menu Fichier > Fermer la solution puis reprendre du début.
- Fermer le logiciel pour terminer par l’icône supérieure droite de la
fenêtre logicielle ou par le menu Fichier > Quitter.
Exercice 1 : Utilisation de variables dans des calculs et
l’affichage
Faire l’essai du programme suivant pour vous familiariser avec l’utilisation des variables. On
retrouve dans l’ordre, la déclaration des variables, une assignation de valeurs à celles-ci, un affichage à
l’écran de leur contenu pour consultation, des calculs et un affichage des résultats.
Il est important d’observer le changement de valeur des variables utilisées plusieurs fois au fil de
l’exécution du programme pour mettre en évidence, la relation entre les valeurs d’une variable en fonction
de la séquence d’exécution du programme, ce dont il faut toujours tenir compte lorsqu’on conçoit un
6TIN100 Introduction aux ordinateurs
Laboratoire 1
Introduction au langage C++
Automne 2011
Page 3 de 10
Université du Québec à Chicoutimi
Département des Sciences Appliquées
Module d’ingénierie
programme. À la sortie du programme, la variable prend toujours la dernière valeur assignée peut importe
ce qui s’est passé précédemment.
Suivre la procédure de création d’un programme tel que vu précédemment. Entrer comme nom du
fichier source UtilisationVariables avec comme sous-répertoire Ex1.
VOIR EN ANNEXE 1 la liste des caractères de contrôle du curseur pour la mise en page à l’écran.
Code source
//
//
//
//
Lab1, Exercice 1 - Utilisation des variables
Programme conçu par: Pierre Charbonneau ing.
Application: Laboratoires 6TIN100
Titre: UtilisationVariables.cpp
// 1- Résumé des fonctionnalités de l’application
/* Programme de familiarisation sur l'utilisation
des variables selon leur type */
// 2- Instructions au préprocesseur
// 2.1- Inclusion des bibliothèques d'entêtes .h
#include <iostream> // Fonctions d’entrées sorties
// 2.2- Inclusion des bibliothèques directives spéciales
using namespace std ;
// 3- Programme principal
void main()
{
// 3.1- Déclaration des variables
// NOTEZ: Il est de bonne pratique d'apposer le type de la variable en suffixe
comme suit. Cela facilite grandement
// la mise au point du programme. On utilise généralement la première lettre du
type.
char aC, bC, cC;
int aI, bI, cI;
float aF, bF, cF;
double aD, bD, cD;
char msgC[] = "Inscrire un message de votre choix.";
//
aC
bC
cC
aI
bI
cI
aF
bF
cF
aD
bD
cD
3.2- Initialisation des variables
= 104;
= 185;
= 0;
= 19540;
= 24600;
= 0;
= 35.230; // NOTEZ BIEN L'AFFICHAGE, LE ZÉRO N'EST PAS AFFICHÉ PAR DÉFAUT
= 375.45;
= 0.0;
= 2343;
= -234.3;
= 0;
// 3.2.1- Affichage des valeurs des variables de type CHAR, noter l'état des
valeurs au moment de leur affichage
// NOTEZ QUE POUR LE MOMENT LES LETTRES AVEC ACCENT NE SONT PAS UTILISÉES
cout << "\nVALEUR DES VARIABLES APRES INITIALISATION:\n\n";
cout << "La valeur de aC est : " << aC << "\n";
6TIN100 Introduction aux ordinateurs
Laboratoire 1
Introduction au langage C++
Automne 2011
Page 4 de 10
Université du Québec à Chicoutimi
Département des Sciences Appliquées
Module d’ingénierie
cout
cout
cout
cout
cout
cout
cout
cout
cout
cout
cout
<<
<<
<<
<<
<<
<<
<<
<<
<<
<<
<<
"La
"La
"La
"La
"La
"La
"La
"La
"La
"La
"La
valeur
valeur
valeur
valeur
valeur
valeur
valeur
valeur
valeur
valeur
valeur
de
de
de
de
de
de
de
de
de
de
de
bC
cC
aI
bI
cI
aF
bF
cF
aD
bD
cD
est
est
est
est
est
est
est
est
est
est
est
:
:
:
:
:
:
:
:
:
:
:
"
"
"
"
"
"
"
"
"
"
"
<<
<<
<<
<<
<<
<<
<<
<<
<<
<<
<<
bC
cC
aI
bI
cI
aF
bF
cF
aD
bD
cD
<<
<<
<<
<<
<<
<<
<<
<<
<<
<<
<<
"\n";
"\n";
"\n";
"\n";
"\n";
"\n";
"\n";
"\n";
"\n";
"\n";
"\n";
// QUESTIONS À RÉPONDRE:
// Q1: SELON VOUS, POURQUOI ON NE VOIT PAS CORRECTEMENT TOUTES LES VALEUR ?
// Q2: QUE DOIT-ON FAIRE POUR OBTENIR LE BON AFFICHAGE ?
// Q3: POURQUOI bC EST NÉGATIVE ALORS QU'ELLE EST INITIALISÉE AVEC UNE VALEUR
POSITIVE ?
// Q4: QUE FAIRE POUR ÉLIMINER LES AVERTISSEMENTS DE TRONCATURE DU COMPILATEUR
?
/* Déplacer ce commentaire de paragraphe selon la progression de l'exercice.
// 3.3- Calculs et affichage des résultats
// NOTEZ QUE les valeurs des variables précédemment affichées changent au
moment où celles-ci sont modifiées
// Valider les résultats à la calculatrice
cout << "\nValeur des variables après modification selon les calculs
suivants:\n";
// Il n'est pas nécessaire d'effectuer une conversion lorsque les variables
sont toutes du même type.
// 3.3.1- Type CHAR
cC = aC + bC;
cout << "Type CHAR\n---------\n";
cout << "cC = aC + bC;\n";
cout << "cC = " << aC << " + " << bC << " = " << cC << "\n"; // APPLIQUEZ LA
CONVERSION APPROPRIÉE
// Q5: Est-ce que le résultat est bon ? Qu'est-qui ne va pas avec cette valeur
?
//
//
//
Réexécuter l'expression en 3.3.1 avec les changements suivants:
1) Déclarer les variables CHAR en non-signé
2) Répondre à nouveau à la question 5.
// NOTEZ QU'UNE PROGRAMMATION SOIGNÉE PERMET D'OBTENIR DES RÉSULTATS SOIGNÉS.
AINSI POUR UN AFFICHAGE CONVIVIAL, IL NE FAUT
// PAS HÉSITER D'ÉTOFFER LA PROGRAMMATION POUR Y PARVENIR.
// 3.3.2- Refaire la section 3.3.1 avec les autres opérateurs changeant
l'opérateur et l'expression. Observer les
// résultats en questions pour chaque type, ne pas répondre à nouveau à la
question 5, vous constaterez les mêmes effets
// de débordement de plage.
// Q6: POURQUOI DANS CERTAINS CAS, LES VALEURS NE CORRESPONDENT PAS, PARFOIS DE
TRÈS PEU COMME DANS LE CAS DE
// LA DIVISION, PARFOIS DE BEAUCOUP COMME DANS LE CAS DE LA MULTIPLICATION ?
// 3.4- Utilisation de plusieurs types dans une même expression
// Lorsque plus d'un type de variable est impliqué, il faut faire une
conversion de façon appropriée.
6TIN100 Introduction aux ordinateurs
Laboratoire 1
Introduction au langage C++
Automne 2011
Page 5 de 10
Université du Québec à Chicoutimi
Département des Sciences Appliquées
Module d’ingénierie
// 3.4.1- EXPRESSION AVEC RÉSULTAT DE TYPE CHAR UTILISANT D'AUTRES TYPES DE
VARIABLES
cC = aI + bI*aC;
cout << "\nCombinaison de types :\n";
cout << "Type CHAR\n---------\n";
cout << "cC = aI + bI * aC;\n";
cout << "cC = " << aI << " + " << bI << " * " << aC << " = " << cC << "\n";
// Q7: Pourquoi rien ne va plus avec cette expression ? Réassigner les valeurs
suivantes aux variables avant leur utilisation
// aI = 24, bI = 16, aC = 2 et expliquer le nouveau résultat. Appliquez la
conversion appropriée.
// 3.4.2- EXPRESSION AVEC RÉSULTAT DE TYPE INT UTILISANT D'AUTRES TYPES DE
VARIABLES
cI = aC + bF*bC;
cout << "\nType INT\n---------\n";
cout << "cI = aC + bF * bC;\n";
cout << "cI = " << aC << " + " << bF << " * " << bC << " = " << cI << "\n";
// Q8: Expliquer ce qui se passe en détail dans le calcul de l'expression en
3.4.2 et
// appliquer la conversion appropriée
// Une façon de voir ce qui se passe dans une expression est de faire plusieurs
essais d'affichage selon son
// ordre de priorité d'exécution comme suit:
// cout << "cI = " << int(aC) << " + " << bF << " * " << int(bC) << " = " <<
bf * bC << "\n";
// poursuivre jusqu'à l'expression complète de la partie droite de l'égalité.
// 3.4.3- EXPRESSION AVEC RÉSULTAT DE TYPE FLOAT UTILISANT D'AUTRES TYPES DE
VARIABLES
cF = aC/9 + aF;
cout << "\nType FLOAT\n---------\n";
cout << "cF = aC/9 + aF;\n";
cout << "cF = " << aC << " / " << 9 << " + " << aF << " = " << cF << "\n";
// Q9: Expliquer ce qui se passe en détail dans le calcul de l'expression en
3.4.3 et
// appliquer la conversion appropriée
// 3.4.4- EXPRESSION AVEC RÉSULTAT DE TYPE DOUBLE UTILISANT D'AUTRES TYPES DE
VARIABLES
cD = aF/bC + bF*aC/2;
cout << "\nType DOUBLE\n---------\n";
cout << "cD = aF/bC + bF*aC/2;\n";
cout << "cD = " << aF << " / " << int(bC) << " + " << bF << " * " << int(aC)
<< " / 2" << " = " << cD << "\n";
*/
cout << "\n" << msgC << "\n";
// 4- Fin du programme
// Aucune information n'est retournée à la fin ce programme
}
6TIN100 Introduction aux ordinateurs
Laboratoire 1
Introduction au langage C++
Automne 2011
Page 6 de 10
Université du Québec à Chicoutimi
Département des Sciences Appliquées
Module d’ingénierie
Copie d’écran des résultats attendus du code source initial
6TIN100 Introduction aux ordinateurs
Laboratoire 1
Introduction au langage C++
Automne 2011
Page 7 de 10
Université du Québec à Chicoutimi
Département des Sciences Appliquées
Module d’ingénierie
Exercice 2 : Entrées de données
L’entrée de données dans un programme doit nécessairement utiliser une ou plusieurs variables
pour la manutention des valeurs obtenue de l’usager. Elle permet un dialogue et une interaction nécessaire
dans les outils informatiques. Elle évite d’avoir à programmer chaque changement de valeur au
programme, qui nécessiterait une compilation et une réexécution pour chaque cas. L’entrée de données
rend le programme énormément plus fonctionnel et efficient.
Notez bien ici : Il faut toujours accompagner à la déclaration des variables, une description pour
documenter le programme et faciliter sa compréhension. Il faut considérer qu’un programme puisse être
modifié plusieurs années après sa conception par des personnes différentes et étrangères au concepteur,
peu importe sa taille, sa complexité ou son importance.
Le programme suivant permet donc de se familiariser avec ce principe. Copiez ce programme en
reprenant les mêmes étapes de création de programme que pour le premier exercice, mais sous le
6TIN100 Introduction aux ordinateurs
Laboratoire 1
Introduction au langage C++
Automne 2011
Page 8 de 10
Université du Québec à Chicoutimi
Département des Sciences Appliquées
Module d’ingénierie
répertoire Ex2. Utiliser le nom de fichier source « EntreeDonnees » tel qu’indiqué en commentaire du
programme suivant :
Code source
//
//
//
//
Lab2, Exercice 2 - Entrée de données
Programme conçu par: Pierre Charbonneau
Application: Laboratoires 6TIN100
Titre: EntreeDonnees.cpp
// 1- Résumé des fonctionnalités de l’application
/*
Programme de familiarisation avec l’entrée de données
*/
// 2- Instructions au préprocesseur
// 2.1- Inclusion des bibliothèques d'entêtes .h
#include <iostream> // Fonctions d’entrées-sortie
// 2.2- Inclusion des bibliothèques directives spéciales
using namespace std ;
// 3- Programme principal
void main()
{
// 3.1- Déclaration
float
lngF,
lrgF,
htrF;
double
volD;
des variables
// Longueur en mètre
// Largeur en mètre
// Hauteur en mètre
// Résultat d'un calcul effectué en mètre cube
// 3.2- Initialisation des variables
// Il n'est pas nécessaire d'initialiser ici les variables, cette opération
étant faite par l'usager.
// L'important est de ne pas lire une variable avant de l'avoir initialisé.
// 3.3- Entrée des données de l'usager
cout << "\n\nProgramme de calcul du volume d'une forme rectangulaire\n\n";
cout << "Entrer la longueur en metre ? ";
cin >> lngF; // L'instruction cin permet l'entrée de données par l'usager ou
par un fichier de données.
cout << "\nEntrer la largeur en metre ? ";
cin >> lrgF;
cout << "\nEntrer la hauteur en metre ? ";
cin >> htrF;
// 3.4- Calcul
volD = lngF*lrgF*htrF; // Volume de la forme
// 3.5- Affichage des résultats
cout << "\n\nLe volume de la forme est : " << volD << " m3.\n\n";
// 4- Fin du programme
// Aucune information n'est retournée à la fin ce programme
}
6TIN100 Introduction aux ordinateurs
Laboratoire 1
Introduction au langage C++
Automne 2011
Page 9 de 10
Université du Québec à Chicoutimi
Département des Sciences Appliquées
Module d’ingénierie
ANNEXE 1
C++ Reserved or Nongraphic Characters
Character
ASCII
Representation
ASCII
Value
Escape Sequence
Newline
NL (LF)
10 or 0x0a
\n
Horizontal tab
HT
9
\t
Vertical tab
VT
11 or 0x0b
\v
Backspace
BS
8
\b
Carriage return
CR
13 or 0x0d
\r
Formfeed
FF
12 or 0x0c
\f
Alert
BEL
7
\a
Backslash
\
92 or 0x5c
\\
Question mark
?
63 or 0x3f
\?
Single quotation mark
'
39 or 0x27
\'
Double quotation mark
"
34 or 0x22
\"
Octal number
ooo
—
\ooo
Hexadecimal number
hhh
—
\xhhh
Null character
NUL
0
\0
If the character following the backslash does not specify a legal escape sequence, the result is
implementation defined. In Microsoft C++, the character following the backslash is taken literally, as though the
escape were not present, and a level 1 warning ("unrecognized character escape sequence") is issued.
Octal escape sequences, specified in the form \ooo, consist of a backslash and one, two, or three octal
characters. Hexadecimal escape sequences, specified in the form \xhhh, consist of the characters \x followed by a
sequence of hexadecimal digits. Unlike octal escape constants, there is no limit on the number of hexadecimal digits
in an escape sequence.
Octal escape sequences are terminated by the first character that is not an octal digit, or when three
characters are seen.
SOURCE: MSDN Centre Visual C++ (http://msdn.microsoft.com/fr-fr/library/6aw8xdf2.aspx)
6TIN100 Introduction aux ordinateurs
Laboratoire 1
Introduction au langage C++
Automne 2011
Page 10 de 10
Téléchargement