A programming language C++: Course 2, Lecture notes of Programming Languages

C++ (/ˌsiːˌplʌsˈplʌs/) is a general-purpose programming language created by Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significantly over time, and modern C++ now has object-oriented, generic, and functional features in addition to facilities for low-level memory manipulation. It is almost always implemented as a compiled language, and many vendors provide C++ compilers, including the Free Software Foundation, LLVM, Microsoft,

Typology: Lecture notes

2019/2020

Uploaded on 06/22/2020

sofiane-salmani
sofiane-salmani 🇺🇸

1 document

1 / 241

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
COURS et TP DE LANGAGE C++
Chapitre 1
Eléments de langage C++
Joëlle MAILLEFERT
IUT de CACHAN
Département GEII 2
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Partial preview of the text

Download A programming language C++: Course 2 and more Lecture notes Programming Languages in PDF only on Docsity!

COURS et TP DE LANGAGE C++

Chapitre 1

Eléments de langage C++

Joëlle MAILLEFERT

[email protected]

IUT de CACHAN

Département GEII 2

CHAPITRE 1

ELEMENTS DE LANGAGE C++

Les exercices ont été testés avec les outils BORLAND C++ BUILDER (toute version) en

mode « console » et BC5. Le corrigé des exercices et le listing de ces programmes se trouvent

à la fin de chaque chapitre et sont téléchargeables.

Pour avancer un peu plus vite et aborder l’essentiel de la Programmation Orientée Objet

(P.O.O.), on pourra étudier les chapitres et paragraphes marqués de ***, dans un deuxième

temps.

INTRODUCTION

Le langage C++ est un langage évolué et structuré. C’est en ce sens une évolution du langage

C.

Il possède en outre les fonctionnalités de la programmation orienté objet.

Le langage C++ se trouve à la frontière entre le langage C, non objet, et le langage JAVA

conçu d’emblée en orienté objet.

On trouve sur le marché un grand nombre de compilateurs C++ destinés à différents

microprocesseurs ou microcontrôleurs.

Le langage C++ possède assez peu d'instructions, il fait par contre appel à des bibliothèques,

fournies en plus ou moins grand nombre avec le compilateur.

exemples: math.h : bibliothèque de fonctions mathématiques

iostream.h : bibliothèque d'entrées/sorties standard

complex.h : bibliothèque contenant la classe des nombres complexes.

On ne saurait développer un programme en C++ sans se munir de la documentation

concernant ces bibliothèques.

Echanger les 2 premières instructions, puis exécuter le programme.

Modifier maintenant le programme comme ci-dessous, puis le tester :

Dans ce programme, on introduit 3 nouveaux concepts :

  • La notion de déclaration de variables : les variables sont les données que manipulera le

programme lors de son exécution. Ces variables sont rangées dans la mémoire vive de

l’ordinateur. Elles peuvent être déclarées au moment où on en a besoin dans le programme.

Pour une meilleure lisibilité, il est conseillé de les déclarer au début (sauf peut-être pour des

variables créées par commodité et qui ne servent que très localement dans le programme).

  • La notion d’affectation, symbolisée par le signe =. La source de l’information est à droite du

signe =, la destination à gauche.

a = 10; signifie « a prend la valeur 10 »

s = a + b; signifie « s prend la valeur a + b »

s = s + 5; signifie « la nouvelle valeur de s est égale à l’ancienne + 5 »

  • La notion d’opération. Un programme informatique est exécuté séquentiellement, c’est à

dire une instruction après l’autre. Lorsque l’instruction s = a + b est exécutée, a possède la

valeur 10, et b possède la valeur 50.

//les commentaires s'écrivent derrière 2 barres obliques

#include <iostream.h> //sorties standard #include <conio.h>

ÏÞßàvoid main() Ïϧ{ ÏϨ¹¹Ïint a, b, calcul ; //déclaration de 3 variables ÏϨ¹¹Ïcout<<"BONJOUR";//affichage d'un message sur l'écran ÏϨ¹¹Ïa = 10 ; // affectation ÏϨ¹¹Ïb = 50 ; // affectation ÏϨ¹¹Ïcalcul = (a + b)*2 ; // ÏϨ¹¹Ïcout <<" Affichage de a : "<< a<<"\n"; ÏϨ¹¹Ïcout <<" Affichage de b : "<< b<<"\n"; ÏϨ¹¹Ïcout <<" Voici le résultat : "<< calcul<<"\n"; ÏϨ¹¹Ïcout<<"Pour continuer frapper une touche..."; ÏϨ¹¹Ïgetch(); // Attente d'une saisie clavier ÏÏ©}

LES DIFFERENTS TYPES DE VARIABLES

1- Les entiers

Le langage C++ distingue plusieurs types d'entiers:

___________________________________________________________

TYPE DESCRIPTION TAILLE MEMOIRE

___________________________________________________________

int entier standard signé 4 octets: - 231^ ≤ n ≤ 231-

unsigned int entier positif 4 octets: 0 ≤ n ≤ 232

short entier court signé 2 octets: - 215^ ≤ n ≤ 215-

unsigned short entier court non signé 2 octets: 0 ≤ n ≤ 216

char caractère signé 1 octet : - 27^ ≤ n ≤ 27-

unsigned char caractère non signé 1 octet : 0 ≤n ≤ 28

_____________________________________________________________

Numération:

  • En décimal les nombres s'écrivent tels que,
  • En hexadécimal ils sont précédés de 0x.

exemple: 127 en décimal s'écrit 0x7f en hexadécimal.

Remarque: En langage C++, le type char possède une fonction de changement de type vers

un entier:

- Un caractère peut voir son type automatiquement transformé vers un entier de 8 bits

  • Il est interprété comme un caractère alphanumérique du clavier.

Exemples:

Les caractères alphanumériques s'écrivent entre ‘ ‘

Le caractère 'b' a pour valeur 98.

Le caractère 22 a pour valeur 22.

Le caractère 127 a pour valeur 127.

Le caractère 257 a pour valeur 1 (ce nombre s'écrit sur 9 bits, le bit de poids fort est perdu).

2- Les réels

Un réel est composé :

  • d'un signe,
  • d'une mantisse,
  • d'un exposant,

Un nombre de bits est réservé en mémoire pour chaque élément.

Le langage C++ distingue 2 types de réels:

_________________________________________________________

TYPE DESCRIPTION TAILLE MEMOIRE

_________________________________________________________

float réel standard 4 octets

double réel double précision 8 octets

__________________________________________________________

LES INITIALISATIONS

Le langage C++ permet l'initialisation des variables dès leurs déclarations:

char c; est équivalent à char c = 'A';

c = 'A';

int i; est équivalent à int i = 50;

i = 50;

Cette règle s'applique à tous les nombres, char, int, float ... Pour améliorer la lisibilité des

programmes et leur efficacité, il est conseillé de l’utiliser.

SORTIES DE NOMBRES OU DE TEXTE A L'ECRAN

L’OPERATEUR COUT

Ce n'est pas une instruction du langage C++, mais une fonction de la bibliothèque iostream.h.

Exemple: affichage d'un texte:

cout <<"BONJOUR"; // pas de retour à la ligne du curseur après l'affichage

cout <<"BONJOUR\n"; // affichage du texte, puis retour à la ligne du curseur

Exercice I-2: Tester le programme suivant et conclure.

Exercice I-3: Affichage d'une variable de type int ou float:

Tester le programme suivant et conclure.

#include <iostream.h> #include <conio.h>

ÏÞßàvoid main() Ïϧ{ ÏϨ¹¹Ïcout<<"BONJOUR " ; ÏϨ¹¹Ïcout <<"IL FAIT BEAU\n"; ÏϨ¹¹Ïcout <<"BONNES VACANCES"; ÏϨ¹¹Ïcout <<"Pour continuer frapper une touche..."; ÏϨ¹¹Ïgetch(); // Attente d'une saisie clavier ÏÏ©}

#include <iostream.h> #include <conio.h>

ÏÞßàvoid main() Ïϧ{ ÏϨ¹¹Ïint u = 1000 ; ÏϨ¹¹Ïfloat s = 45.78 ; ÏϨ¹¹Ïcout <<"Voici u (en base 10) : " << u << "\n"; ÏϨ¹¹Ïcout <<"Voici u (en hexa) : "<< hex << u <<"\n"; ÏϨ¹¹Ïcout <<"Voici s : "<< s << "\n"; ÏϨ¹¹Ïcout <<"Pour continuer frapper une touche..."; ÏϨ¹¹Ïgetch(); // Attente d'une saisie clavier ÏÏ©}

Exercice I-6:

Pour votre compilateur C++, la taille des entiers est de 32 bits;

Que va-t-il se passer, à l'affichage, lors de l'exécution du programme suivant?

Exercice I-7:

a et b sont des réels, a = -21,43 b = 4,782, calculer et afficher a+b, a-b, a*b, a/b, en

soignant l’interface homme/machine.

LES OPERATEURS

Opérateurs arithmétiques sur les réels: + - * / avec la hiérarchie habituelle.

Opérateurs arithmétiques sur les entiers: + - * / (quotient de la division) % (reste de la

division) avec la hiérarchie habituelle.

Exemple particulier: char c, d; c = 'G'; d = c+'a'-'A';

Les caractères sont des entiers sur 8 bits, on peut donc effectuer des opérations. Sur cet

exemple, on transforme la lettre majuscule G en la lettre minuscule g.

Opérateurs logiques sur les entiers:

& ET | OU ^ OU EXCLUSIF ~ COMPLEMENT A UN

« DECALAGE A GAUCHE

» DECALAGE A DROITE.

Exemples: p = n « 3; // p est égale à n décalé de 3 bits à gauche

p = n » 3; // p est égale à n décalé de 3 bits à droite

L'opérateur sizeof(type) renvoie le nombre d'octets réservés en mémoire pour chaque type

d'objet.

Exemple: n = sizeof(char); /* n vaut 1 */

#include <iostream.h> #include <conio.h>

ÏÞßàvoid main() Ïϧ{ ÏϨ¹¹Ïint a = 12345000, b = 60000000, somme; ÏϨ¹¹Ïsomme=ab; ÏϨ¹¹Ïcout<<"ab = "<<somme<<"\n"; Ïϧ ÏϨ¹¹Ïcout <<"Pour continuer frapper une touche..."; ÏϨ¹¹Ïgetch(); /* Attente d'une saisie clavier */ ÏÏ©}

Exercice I-8: n est un entier (n = 0x1234567a), p est un entier (p = 4). Ecrire un programme

qui met à 0 les p bits de poids faibles de n.

Exercice I-9: quels nombres va renvoyer le programme suivant?

INCREMENTATION - DECREMENTATION

Le langage C++ autorise des écritures simplifiées pour l'incrémentation et la décrémentation

de variables de type entier (int, char, long)

i = i+1; est équivalent à i++;

i = i-1; est équivalent à i--;

OPERATEURS COMBINES

Le langage C++ autorise des écritures simplifiées lorsqu'une même variable est utilisée de

chaque côté du signe = d'une affectation. Ces écritures sont à éviter lorsque l'on débute l'étude

du langage C++ car elles nuisent à la lisibilité du programme.

a = a+b; est équivalent à a+= b;

a = a-b; est équivalent à a-= b;

a = a & b; est équivalent à a&= b;

LES DECLARATIONS DE CONSTANTES

Le langage C++ autorise 2 méthodes pour définir des constantes.

#include <iostream.h> #include <conio.h>

ÏÞßàvoid main() Ïϧ{ ÏϨ¹¹Ïcout<<"TAILLE D'UN CARACTERE : "<<sizeof(char)<< "\n"; ÏϨ¹¹Ïcout<<"TAILLE D'UN ENTIER : " <<sizeof(int)<< "\n"; ÏϨ¹¹Ïcout<<"TAILLE D'UN REEL : " <<sizeof(float)<< "\n"; ÏϨ¹¹Ïcout<<"TAILLE D'UN DOUBLE : " <<sizeof(double)<< "\n"; ÏϨ¹¹Ïcout <<"Pour continuer frapper une touche..."; ÏϨ¹¹Ïgetch(); // Attente d'une saisie clavier ÏÏ©}

LES CONVERSIONS DE TYPES

Le langage C++ permet d'effectuer automatiquement des conversions de type sur les scalaires:

Exemple et exercice I-11:

Une conversion de type float --> int ou char peut-être dégradante.

Une conversion de type int ou char --> float est dite non dégradante.

ÏÞßàvoid main() Ïϧ{ ÏϨ¹¹Ïchar c=0x56,d=25,e; ÏϨ¹¹Ïint i=0x1234,j; ÏϨ¹¹Ïfloat r=678.9,s; ÏϨ¹¹Ïj = c; // j vaut 0x0056, utilisé précédemment pour afficher Ïϧ // le code ASCII d’un caractère ÏϨ¹¹Ïj = r; // j vaut 678 ÏϨ¹¹Ïs = d; // s vaut 25. ÏϨ¹¹Ïe = i; // e vaut 0x ÏÏ©}

CORRIGE DES EXERCICES

Exercice I-4:

Exercice I-7:

#include <iostream.h> #include <conio.h>

ÏÞßàvoid main() Ïϧ{ ÏϨ¹¹Ïint a,b; ÏϨ¹¹Ïa= -21430; ÏϨ¹¹Ïb= 4782; ÏϨ¹¹Ïcout<<"A + B = "<< a+b <<"\n"; ÏϨ¹¹Ïcout<<"A - B = "<< a-b <<"\n"; ÏϨ¹¹Ïcout<<"A x B = "<< a*b <<"\n"; ÏϨ¹¹Ïcout<<"A sur B = "<< a/b <<"\n" ; ÏϨ¹¹Ïcout<<"A mod B = "<< a%b <<"\n"; ÏϨ¹¹Ïcout<<"Pour continuer frapper une touche..."; ÏϨ¹¹Ïgetch(); // Attente d'une saisie clavier ÏÏ©}

#include <iostream.h> #include <conio.h>

ÏÞßàvoid main() Ïϧ{ ÏϨ¹¹Ïfloat a,b; Ïϧ ÏϨ¹¹Ïa= -21430; ÏϨ¹¹Ïb= 4782; Ïϧ ÏϨ¹¹Ïcout<<"A + B = "<< a+b <<"\n"; ÏϨ¹¹Ïcout<<"A - B = "<< a-b <<"\n"; ÏϨ¹¹Ïcout<<"A x B = "<< a*b <<"\n"; ÏϨ¹¹Ïcout<<"A sur B = "<< a/b <<"\n" ; Ïϧ ÏϨ¹¹Ïcout<<"Pour continuer frapper une touche..."; ÏϨ¹¹Ïgetch(); // Attente d'une saisie clavier ÏÏ©}

COURS et TP DE LANGAGE C++

Chapitre 2

Saisie de nombres et de caractères au clavier

Joëlle MAILLEFERT

[email protected]

IUT de CACHAN

Département GEII 2

CHAPITRE 2

SAISIE DE NOMBRES ET DE CARACTERES AU

CLAVIER

LA FONCTION GETCH

La fonction getch, appartenant à la bibliothèque conio.h permet la saisie clavier d’un

caractère alphanumérique, sans écho écran. La saisie s'arrête dès que le caractère a été

frappé.

La fonction getch n'est pas définie dans la norme ANSI mais elle existe dans les

bibliothèques des compilateurs.

On peut utiliser getch de deux façons:

- sans retour de variable au programme:

Exemple: cout<<"POUR CONTINUER FRAPPER UNE TOUCHE ";

getch();

- avec retour de variable au programme:

Exemple: char alpha;

cout<<"ENTRER UN CARACTERE (ATTENTION PAS DE

RETURN)";

alpha = getch();

cout<<"\nVOICI CE CARACTERE: "<<alpha;

Les parenthèses vides de getch() signifient qu'aucun paramètre n'est passé à cette

fonction par le programme appelant.

L’OPERATEUR CIN

L’opérateur cin, spécifique à C++, appartient à la bibliothèque iostream.h, et permet la

saisie à partir du clavier de n'importe quel type de variable (l’affichage prend en compte

le type de la variable).

La saisie s'arrête avec "RETURN" (c'est à dire LF), les éléments saisis s'affichent à

l'écran ( saisie avec écho écran ).

Tous les éléments saisis après un caractère d'espacement (espace, tabulation) sont

ignorés.

CORRIGE DES EXERCICES

Exercice II_1:

Exercice II_2:

#include <iostream.h> #include <conio.h>

ÏÞßàvoid main() Ïϧ{ ÏϨ¹¹Ïint I,V,M,P; ÏϨ¹¹Ïcout<<"Entrer le nombre d'inscrits : "; ÏϨ¹¹Ïcin>>I; ÏϨ¹¹Ïcout<<"Entrer le nombre de votants : "; ÏϨ¹¹Ïcin>>V; ÏϨ¹¹ÏP = V*100/I; ÏϨ¹¹ÏM = V/2 + 1; // Division entière ÏϨ¹¹Ïcout<<"Participation : "<<P<<"% - Majorité: "; ÏϨ¹¹Ïcout<<M<<" bulletins\n"; ÏϨ¹¹Ïcout<<"POUR CONTINUER FRAPPER UNE TOUCHE "; ÏϨ¹¹Ïgetch(); ÏÏ©}

#include <iostream.h> #include <conio.h>

ÏÞßàvoid main() Ïϧ{ ÏϨ¹¹Ïchar c; ÏϨ¹¹Ïint u; ÏϨ¹¹Ïcout<<"ENTRER UN CARACTERE : "; ÏϨ¹¹Ïcin >> c; ÏϨ¹¹Ïu = c; //conversion automatique de type ÏϨ¹¹Ïcout<<"VOICI SON CODE ASCII : "<< u << "\n"; ÏϨ¹¹Ïcout<<"Pour continuer frapper une touche..."; ÏϨ¹¹Ïgetch(); ÏÏ©}

Exercice II_3:

#include <iostream.h> #include <conio.h>

ÏÞßàvoid main() Ïϧ{ ÏϨ¹¹Ïfloat r1, r2, r3, moy; Ïϧ ÏϨ¹¹Ïcout<<"ENTRER UN NOMBRE REEL : "; ÏϨ¹¹Ïcin >> r1; Ïϧ ÏϨ¹¹Ïcout<<"ENTRER UN NOMBRE REEL : "; ÏϨ¹¹Ïcin >> r2; Ïϧ ÏϨ¹¹Ïcout<<"ENTRER UN NOMBRE REEL : "; ÏϨ¹¹Ïcin >> r3; Ïϧ ÏϨ¹¹Ïmoy = (r1 + r2 + r3) / 3; Ïϧ ÏϨ¹¹Ïcout<<"MOYENNE DE CES 3 NOMBRES : "<<moy<<"\n"; ÏϨ¹¹Ïcout<<"Pour continuer frapper une touche ..."; Ïϧ ÏϨ¹¹Ïgetch(); ÏÏ©}