I U T S T I D P a u A l b e r t R O Y E R I.U.T. DES PAYS DE L’ADOUR Statistiqu
I U T S T I D P a u A l b e r t R O Y E R I.U.T. DES PAYS DE L’ADOUR Statistique et Traitement Informatique des Données É l é m e n t s d u l a n g a g e C + + p a r A l b e r t R O Y E R AID E - M É M O I R E Éléments du langage C++ Les informations contenues dans ce document sont destinées aux étudiants de deuxième année. Toute remarque sur son contenu sera la bienvenue. © 1998 A. ROYER IUT STID, Pau. Tous droits réservés. © 2000 Révision A. ROYER IUT STID, Pau. Table des matières 0. AVANT-PROPOS 1 Première version : fract1.cpp 1 Structure du texte 3 Commentaire 3 include 3 Déclarations de types 3 Déclarations de fonctions 3 Définition du programme principal3 Contenu des fonctions 3 Premiers enseignements 4 Les opérateurs 4 arithmétiques 4 de comparaison 4 Les entrées-sorties de base 4 1. LES ASPECTS CLASSIQUES DU LANGAGE 1 Déclarations 1 Constantes 1 Types 1 Tableau 1 Structure 2 Énumération 2 Fonctions 2 Variables 3 Chaînes de caractères 3 strlen 4 strcpy 4 strcat 4 strcmp 5 Instructions 5 Séquentielles 5 Itératives 5 for 5 while 6 do 6 break 6 continue 7 Sélectives 7 Conditionnelle 7 Choix multiple 8 Autres instructions de contrôle 8 return 8 goto 9 Compléments sur les entrées/sorties de base 9 Clavier 9 Écran 9 2. ADRESSES ET POINTEURS1 Adresses 1 Pointeur 1 Déclaration 1 Opérateurs & et * 2 Opérateur d'adressage & 2 Opérateur d'indirection * 2 Passage de pointeurs en paramètres2 Pointeurs et autres types 2 Pointeurs et tableaux 2 Pointeurs et structures 3 Pointeurs et références 3 3. LES FLUX 1 Fichiers 1 Généralités 1 Suite d’octets 1 fstream.h 1 Type d’utilisation de fichiers 1 Opérations communes à tous les fichiers2 Ouverture du fichier 2 Fermeture du fichier 2 Contrôle de l’état d’un flux 2 Opérations de manipulation de fichiers 3 Fichier ofstream 3 Fichier ifstream 4 Fichier fstream 5 Accès direct 5 À un octet paticulier 5 À un enregistrement 5 Présentation des informations 5 Formatage 5 Manipulateurs 6 Pour en savoir plus 6 Autres modes d'ouverture 6 Définition des opérateurs d'entrée-sortie 7 4.LES OBJETS 1 I U T S T I D P a u A l b e r t R O Y E R Classe 1 Membre de classe 1 Données membres 1 Fonctions membres 1 visibilité des membres 1 Déclaration de la classe fraction 2 Définitions des opérations 2 Utilisation de la classe fraction 2 Héritage 3 Dérivation 3 neofraction.h 3 neoprincipal.cpp 3 neofraction.cpp 3 Constructeur 4 fraction.h 4 programme principal 4 fraction.cpp 4 Amis 5 fraction.h 5 fraction.cpp 5 programme principal 6 Conclusion 6 Chapitre 0 A l b e r t R O Y E R I U T S T I D P a u Avant-propos Afin de parcourir les possibilités du langage C++, nous allons nous appuyer sur un même programme dont l’objectif est de permettre la manipulation de fractions. Pour nous, une fraction, ou nombre rationnel, est la valeur du quotient de deux entiers : le numérateur et le dénominateur (0 ). Nous limitons l’écriture de chaque fraction à une seule que nous appellerons normalisée ; c’est-à-dire fraction réduite avec le signe accolé au numérateur. otre programme devra autoriser la saisie de deux fractions et renvoyer le résultat d’une des quatre opérations arithmétiques appliquées à ces deux fractions. N Première version : fract1.cpp Ce premier programme peut s’écrire ainsi : #include <iostream.h> // fract1.cpp, première version du programme implantant les fractions // - créé par A. Royer le 23 juil. 97 // déclaration du type FRACTION struct FRACTION { int NUM; // entier signé int DEN ; // entier positif }; // déclaration des différentes fonctions du programme int pgcd (int a, int b){ // en entrée : deux entiers // valeur de retour : le pgcd des 2 nombres int m, n; // on ne s'intéresse qu'aux valeurs absolues des paramètres if (a<0) m = -a; else m = a; if (b<0) n = -b; else n = b; if (m*n == 0) // cas particulier où au moins un des deux nombres est nul return m+n; 0 - 1 else // cas général while (m!=n) if (m>n) m = m - n; else n = n - m; return m; } void normaliser (FRACTION & F){ // en entrée et en sortie : la fraction objet de la normalisation int D; // traitement du signe éventuellement négatif du dénominateur if (F.DEN<0) { F.NUM = -F.NUM; F.DEN = -F.DEN; } // réduction de la fraction D = pgcd(F.NUM, F.DEN); F.NUM = F.NUM / D; F.DEN = F.DEN / D; } FRACTION saisir (void){ // valeur de retour : la fraction saisie FRACTION F; cout << "Numérateur ? "; cin >> F.NUM; cout << "Dénominateur ? "; cin >> F.DEN; return F; } void afficher (FRACTION F){ // en entrée : la fraction à afficher cout << F.NUM << " / " << F.DEN; } FRACTION plus (FRACTION F1, FRACTION F2){ // en entrée : deux fractions // valeur de retour : la fraction somme des deux précédentes FRACTION F; F.DEN = F1.DEN * F2.DEN; F.NUM = F1.NUM * F2.DEN + F2.NUM * F1.DEN; normaliser(F); return F; } void main(){ FRACTION F1, F2, F3; cout << "Entrer la première fraction \n"; F1 = saisir(); cout << "Entrer la deuxième fraction \n"; F2 = saisir(); // pour éviter d'allonger le texte, on ne programme que l'addition F3 = plus(F1,F2); 0 - 2 A l b e r t R O Y E R I U T S T I D P a u cout << "Le résultat est : "; afficher(F3); cout << endl; } Structure du texte En C++, on trouve la référence au module définissant les entrées-sorties, les déclarations de constantes, de types, des fonctions puis la définition de la fonction principale repérée par le mot-clé main. Commentaire Il commence avec // et s’arrête à la fin de la ligne. Un commentaire de plusieurs lignes se parenthèse par /* et */. include On indique par une ou plusieurs lignes #include les éléments de bibliothèques que l’on va utiliser dans le programme, ici les entrées-sorties. Déclarations de types On trouve en début de programme les déclarations utiles à l’ensemble du programme. Dans ce premier exemple, nous déclarons un agrégat hétérogène (appelé structure par les C-istes) pour définir une fraction. Déclarations de fonctions Il n’y a en C++ qu’une seule catégorie de sous-programme : les fonctions. Une fonction renvoie un objet d’un certain type (Exemples : FRACTION pour saisir, entier pour pgcd) qu’elle calcule à partir de paramètres de types quelconques (Exemples : f de type FRACTION pour normaliser, a et b de type entier pour pgcd). L’équivalent d’une procédure est réalisé par une fonction dont la valeur de retour n’existe pas ; en C++, pour une procédure la valeur de retour est neutralisée en la déclarant de type void. Ce même mot-clé void est aussi utilisé pour remplacer une liste de paramètres vide. On préférera la version fract2.cpp qui ne donne que l’entête des fonctions avant le texte du programme principal et qui définit in extenso les mêmes fonctions après (cf. annexe). Définition du programme principal Tout programme contient une et une seule fonction principale, appelée aussi fonction main ; c’est par elle que commence l’exécution du programme. Cette fonction, comme les autres peut retourner une valeur d’un type quelconque et peut disposer de paramètres. Classiquement, la valeur retournée par la fonction main est prise en compte par le système d’exploitation qui a pu éventuellement lui fournir des paramètres lors du lancement du programme. Contenu des fonctions Le contenu d’une fonction est encadrée d’accolades. On y trouve des déclarations et des instructions. Une déclaration de variables commence par le nom du type et se poursuit par la liste des variables de ce type. On retrouve les instructions rencontrées dans les autres langages de programmation, avec une syntaxe qui peut parfois surprendre. Dans cet exemple, il y a : l’instruction d’affectation dont le symbole est =, 0 - 3 l’instruction conditionnelle if (condition) instruction_vraie [else instruction_fausse], une des instructions de bouclage while (condition) instruction, l’appel de fonction, qui se note toujours avec des parenthèses (Exemple : saisir() dans le programme principal), l’instruction return, qui précède l’expression de la valeur à renvoyer, les opérations d’entrée-sortie repérables par les opérateurs d’injection (<<) et d’extraction (>>). Premiers enseignements Les opérateurs arithmétiques Les opérateurs arithmétiques sont : + - * / bien sûr. Il faut y ajouter % qui est l’opérateur modulo. On notera qu’il n’y a pas d’opérateur d’élévation à la puissance. de comparaison Les opérateurs de relation sont : < <= > >=. L’opérateur de comparaison d’égalité est donné par == et celui d’inégalité par !=. Les entrées-sorties de base Les entrées effectuées via le clavier et les sorties réalisées grâce uploads/Finance/ poly2000.pdf
Documents similaires








-
33
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Mai 30, 2022
- Catégorie Business / Finance
- Langue French
- Taille du fichier 0.2994MB