Labo I : Introduction à Code Warrior et à C++

Download Report

Transcript Labo I : Introduction à Code Warrior et à C++

Labo 4 : Les structures et les
entrées et sorties
Démo : INF3105
Structures de données et algorithmes
Groupe : 10
Moniteur : Stéphane HENRY
Courriel :
Notes de : Kerlyne Fostine
Plan de la démonstration

Les structures







Déclaration d’une structure
Utilisation de structure
Imbrication de structure
Tableau de structure
Pointeur de structure
Utilisation de structure en C++
Les entrées et sorties



Les fichiers
Lecture dans un fichier
Écriture dans un fichier
2
Les Structures

Déclaration d’une structure
struct nom_structure{
type1 champ1;
type2 champ2;
type3 champ3;
};
struct Rationnel{
int numerateur;
int denominateur;
};
3
Les structures (Suite)

Déclaration de variable de structure




struct
struct
struct
struct
nom_structure nomVariable;
Rationnel r1;
Rationnel fraction;
Rationnel *p;
4
Les structures (suite)

Utilisation de structures



Nom_variable_structure.nom_champ;
fraction.numerateur = 5;
fraction.denominateur = 8;
5
Les structures (Suite)

Exercice I

Ecrire un programme qui gère les
opérations sur les nombres rationnels.


Ecrire une fonction additionnerRationnel qui
accepte comme paramètres deux
rationnels, qui les additionne et qui
retourne leur somme
Ecrire un programme qui crée deux
rationnels et qui utilise la fonction
additionnerRationnel pour les additionner et
qui affiche leur somme.
6
Imbrication de structures
struct date {
int jour;
int mois;
int annee;
};
struct personne{
char nom[30];
char prenom[30];
struct date dateNaissance;
};
struct personne personne1;
7
Imbrication de structures (Suite)
struct personne{
char nom[30];
char prenom[30];
struct {
int jour;
int mois;
int annee;
} dateNaissance;
};
struct personne personne1;
8
Imbrication de structures (Suite)
personne1.nom;
Personne1.prenom;
Personne1.date_naissance.jour
9
Imbrication de structures (Suite)

Exercice II

Écrire un programme qui fait la lecture de deux
personnes en utilisant la structure personne
présentée et qui dit laquelle des deux personnes est
plus vieilles que l’autre.

Il doit y avoir une fonction qui accepte les deux
variables personnes, qui fait la comparaison de leur
date de naissance et qui retourne




0 si les deux personnes ont la meme date de naissance
1 si la première personne passée comme paramètre est
plus vieille que la deuxième
-1 si la deuxième personne passée comme paramètre
est plus vieille que la première
Le programme doit afficher le nom, le prénom et la
date de naissance de la plus vieille personne.
10
Tableaux de structures

struct nom_structure variable[dimension];
struct Rationnel tableau_rationnel[10];

Exercice III



Ecrire un programme qui lit un nombre
de rationnel fournit par l’utilisateur et qui
calcule et affiche leur somme.
Il faut faire utilisation de la fonction
additionner_rationnel utiliser plus haut.
11
Pointeur sur les structures


Declaration de pointeur

struct nom_structure *p1, *p2;

struct Rationnel *rationnel1;

struct Rationnel r1;

r1.num = 13;

r1.deno = 25;

rationnel1 = &r1;
Utilisation de pointeur de structure

(*rationnel1).numerateur = 10;

(*rationnel1).denominateur = 5;

rationnel1->numerateur = 10;

rationnel1.->denominateur = 5
12
Pointeur sur les structures (Suite)

Exercice IV





Ecrire une fonction qui accepte comme
paramètre une structure rationnel et qui la
simplifie. Cette fonction ne doit rien retourner
comme valeur (Une procédure).
Exemple de simplification : 4/10 = 2/5
Pour faire la simplification, il faut faire usage
d’une fonction pgcd.
Cette fonction doit utiliser le formalisme
pointeur.
Modifie la fontion additionner_rationnel pour
simplifier la somme des rationnels avant de
retourner la somme.
13
Utilisation de structure en C++

En C++ on peut déclarer des
structures avec des données membres
et des fonctions membres comme des
classes
struct Rationnel{
int numerateur;
int denominateur;
struct Rationnel additionner(struct Rationnel, struct Rationnel);
}

Les données ne sont pas encapsulées
(publiques)
14
14
Les entrées et sorties

Les fichiers


Pour chaque fichier, il faut un flux
différent
Création d’un flux



ifstream flux pour la lecture
ofstream flux pour l’écriture
Initialisation du flux


Ifstream flux(« fichier.extension », mode_ouverture);
Ofstream flux(« fichier.extension », mode_ouverture);
15
Les entrées et sorties (Suite)

Mode d’ouverture






in : en lecture
out : en écriture
binary : en mode binaire
trunc : en écrasement
app : en mode ajout
ate : en écriture et à la fin (initialement)
Note : Il faut toujours indiquer un des trois modificateurs ios::trunc, ios::app ou ios::ate en
plus de ios::out, pour spécifier la procédure à suivre au cas où le fichier existerait déjà.
16
Les entrées et sorties (Suite)

Lecture dans un fichier






ifstream fichier(“fichier.ext”, ios::in)
ifstream fichier(chaine.c_str(), ios::in);
getline(fichier, chaine) : pour lire une ligne
entière et placée le contenu de la ligne dans
chaine
fichier.get(caractère) : pour lire un caractère
fichier >> variable : Pour récupérer le contenu
du fichier jusqu’à un délimiteur (Meme chose
que cin)
Fichier.read(const char *buffer, int nbOctets)
17
Les entrées et sorties (Suite)

Ecriture dans un fichier





ofstream fichier(“fichier.ext”, ios::out |
[ios::trunc ou ios::ate ou ios::app])
ofstream fichier(chaine.c_str(), ios::out |
[ios::trunc ou ios::ate ou ios::app])
fichier.put(caractere) : Pour ecrire un caractère
fichier<< variable ou chaine de caractere : Pour
ecrire dans le fichier. (Même chose que cout)
Fichier.write(const char * buffer, int nbOctets)
18
Entrées et sorties (Suite)

Exercice V

Ecrire un programme qui lit le contenu
du fichier fichier.txt ligne par ligne et qui
affiche les lignes jusqu’à la fin.
19
Entrées et sorties (Suite)

Exercice VI




Écrire un programme qui fait la lecture des
informations d’un nombre de personne donné et
les enregistre dans un fichier. Une fois la lecture
terminée, le programme doit lire le contenu du
fichier et doit afficher son contenu à l’ecran.
Le programme doit faire usage de la structure
Personne présentée plus haut
Il doit y avoir une fonction enregistrer qui
accepte comme paramètre une information de
type Personne et l’enregistrer dans le fichier
Le programme doit faire usage d’une seule
variable de type structure pour lire les données
20