1 Langage Dia
1 Langage Dia
1 Langage Dia
1
Le langage C++
Numérique & Science Informatique
― Alexander Stepanov
2
Le langage C++
Numérique & Science Informatique
3
Le langage C++
Numérique & Science Informatique
Langage C++
4
Le langage C++
Numérique & Science Informatique
5
Le langage C++
Numérique & Science Informatique
Le typage en C++
Les types built-in :
int : entier (short, long, long long)
float : réel (double)
char : l’octet
bool : booléen
auto : inférence de type
6
Le langage C++
Numérique & Science Informatique
namespace b
{
void function(void) {} // seconde fonction
}
8
Le langage C++
Numérique & Science Informatique
L'instruction conditionnelle
if ( condition ) {
Traitement() ;
}
else {
Autre_Traitement() ;
}
9
Le langage C++
Numérique & Science Informatique
Itérations
C++ dispose de deux types de boucles :
Boucle for
• de façon « classique »
• utilisation d’un itérateur sur des conteneurs
Boucle while
while ( condition ) {
Traitement() ;
}
11
Le langage C++
Numérique & Science Informatique
Créer :
• une fonction qui parcours une chaîne et compte les voyelles
• une fonction qui indique si une lettre est une voyelle
12
Le langage C++
Numérique & Science Informatique
return total;
}
13
Le langage C++
Numérique & Science Informatique
return total;
}
14
Le langage C++
Numérique & Science Informatique
return false;
}
15
Le langage C++
Numérique & Science Informatique
Les itérateurs
Objets qui pointent sur un tableau ou un conteneur
Exemple :
array<int, 4> data = { 1, 2, 3, 4 };
// élève au carré chaque élément de data
for (array<int, 4>::iterator it = data.begin(); it != data.end(); it++)
{
*it *= *it ;
cout << *it << endl;
}
16
Le langage C++
Numérique & Science Informatique
Classes built-in
Le langage C++ possède des classes prédéfinies :
18
Le langage C++
Numérique & Science Informatique
Classe string
•+ opérateur de concaténation
• size() envoie la longueur de la chaîne
• clear() efface la chaîne enregistrée
• find() recherche une sous chaîne s
• substr() extrait une sous chaîne à l’indice i de n caractères
• front(), back() renvoie le 1er / dernier caractère
• push_back() ajoute le caractère c en fin de chaîne
• at() donne le caractère à l’indice i
• erase() supprime à l’indice i, n caractères
• replace() remplace à l’indice i, n car à partir de la chaîne s
• begin(), end() retourne un itérateur
19
Le langage C++
Numérique & Science Informatique
int main(void)
{
int a = 3, b = 82;
swap(a, b);
cout << a << " " << b << endl;
return 0 ;
}
20
Le langage C++
Numérique & Science Informatique
Exemple :
fonction unique qui échange deux variables de type quelconque
21
Le langage C++
Numérique & Science Informatique
La spécialisation
Modifie le comportement d’une fonction selon un type
Exemple : comparaison entre 2 variables
template <typename T>
T getMax(const T& a, const T& b)
{
return a > b ? a : b ;
}
template <>
string getMax(const string& a, const string& b)
{
// la comparaison se fait cette fois sur la longueur de la chaîne
return a.size() > b.size() ? a : b ;
}
22
Le langage C++
Numérique & Science Informatique
Pointeur
variable contenant l'adresse d'un espace mémoire
Smart Pointer
permet d’éviter l'existence de dangling pointers
#include <memory>
void UseSmartPointer(const float f)
{
unique_ptr<float> pf(new float);
*pf = f;
// ...
} // pf sera automatiquement indisponible ici (out of scope!)
24
Le langage C++
Numérique & Science Informatique
Notation []
La déclaration des tableaux en C a été conservée
pour assurer une compatibilité avec les bibliothèques C
et manipulation de format de fichier
Exemple :
vector<unsigned int> frequency(SIZE, 0);
ifstream ifs(input_file, ifstream::binary);
if ( ifs )
// read frequency
ifs.read(reinterpret_cast<char*>(&frequency[0]), SIZE * sizeof(int));
25
Le langage C++
Numérique & Science Informatique
Manipulation de fichiers
3 classes de flux pour manipuler les fichiers :
• fstream : lecture/écriture
• ifstream : lecture
• ofstream : écriture
4 méthodes de base :
Ouvrir
Écrire
Lire
Fermer
26
Le langage C++
Numérique & Science Informatique
Ouvrir un fichier
void open(const string& fileName, ios::openmode mode);
Modes d’ouverture :
in : lecture
out : écriture
trunc : écriture et lecture (écrase)
app : ajout
Exception :
failbit : erreur ouverture
27
Le langage C++
Numérique & Science Informatique
Paramètres :
data : données à écrire
size : nombre d’octets à écrire
Exceptions :
failbit : erreur sur la dernière opération
badbit : erreur d’écriture
NB : streamsize = int
28
Le langage C++
Numérique & Science Informatique
Écrire un tableau
// ouverture fichier par constructeur
ofstream ofs(output_file, ifstream::binary);
if ( !ofs )
cout << "Erreur ouverture" << endl;
else {
array<int, 5> frequency = { 0, 1, 2, 3, 4 };
ofs.write(
reinterpret_cast<char*>(&frequency[0]),
frequency.size() * sizeof(int)
);
}
// fermeture automatique par destructeur
29
Le langage C++
Numérique & Science Informatique
Lire un fichier
istream& read(char* buffer, streamsize size);
Paramètres :
buffer : tampon pour données lues
size : nombre d’octets à lire
Exceptions :
failbit : erreur de lecture
eofbit : fin de fichier
NB : streamsize = int
30
Le langage C++
Numérique & Science Informatique
31
Le langage C++
Numérique & Science Informatique
Lecture « bufferisée »
ifstream ifs(input_file, ifstream::binary);
if ( !ifs )
cout << "Erreur ouverture" << endl;
else
do {
// lecture par blocs de 1024 octets
vector<unsigned char> buffer(1024);
ifs.read(reinterpret_cast<char*>(&buffer[0]), 1024);
// affiche les octets lus
cout << ifs.gcount() << endl;
} while ( !ifs.eof() ); // s’arrête sur la fin de fichier
32
Le langage C++
Numérique & Science Informatique
Fermer un fichier
void close(void);
Exception :
failbit : le fichier n’a pas été ouvert
33
Le langage C++
Numérique & Science Informatique
34
Le langage C++
Numérique & Science Informatique
Exemple :
vector<int> values = {1, 3, 4, 5, 6};
36
Le langage C++
Numérique & Science Informatique
37