1 L’OPERATEUR COUT L’opérateur cout, spécifique à C++, appartient à la biblioth

1 L’OPERATEUR COUT L’opérateur cout, spécifique à C++, appartient à la bibliothèque iostream.h, et permet la sortie sur ecran de n'importe quel type de variable . #include <iostream.h> // sorties standards #include <conio.h> void main() { cout <<"BONJOUR"; //affichage d'un message sur l'écran cout<< " Belle journée!!"; cout<< "Pour continuer frapper une touche..."; // Attente d'une saisie clavier pour voir l'écran d'exécution getch(); } #include <iostream.h> //sorties standard #include <conio.h> void main() { int a, b, calcul ; //déclaration de 3 variables float s = 45.78 ; 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 << "Voici b (en hexa) : " << hex << b << "\n"; cout << "Voici s : " << s << "\n"; cout << "Pour continuer frapper une touche..."; getch(); // Attente d'une saisie clavier } 2 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). Exemples: char alpha; int i; float r; cin >>alpha; // saisie d'un caractère cin >>i; // saisie d'un nombre entier en décimal cin >>r; // saisie d'un nombre réel Exercice II_1: Saisir un caractère au clavier, afficher son code ASCII à l'écran. Soigner l'affichage. #include <iostream.h> #include <conio.h> 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(); } allocation dynamique de mémoire Via l’opérateur new, natif dans le C++, on réserve, pendant l’exécution du programme, de la place dans la mémoire pour l’objet (ou la variable) pointé. L’adresse de base est choisie par le système lors de l’exécution, en fonction du système d’exploitation. exemple : char *pc; // on peut faire char *pc = new char[10]; int *pi,*pj; float *pr; pc = new char[10]; // on réserve de la place pour 10 caractèrespi = new int[5]; // on réserve de la place pour 5 entiers, pj = new int; // on réserve de la place pour 1 entierpr = new float[6]; // on réserve de la place pour 6 réels, soit 24 cases mémoire 3 delete pc; // on libère la place précédemment réservée pour c delete pi; // on libère la place précédemment réservée pour i delete pr; // on libère la place précédemment réservée pour r // On définit un type struct identifié par Etud_t typedef struct { char nom[10]; char prenom[10]; // Ici 4 champs int age; float note; }Etud_t; main() { Etud_t *f; // on déclare un pointeur sur Etud_t f = new Etud_t; // réserve de la mémoire pour une f cout <<"SAISIE D'UNE FICHE \n"; cout <<"NOM: "; cin >> f -> nom; cout <<"PRENOM: "; cin >> f -> prenom; cout << "AGE: "; cin >> f -> age; cout << "NOTE: "; cin >> f -> note; cout << "\n\nLECTURE DE LA FICHE :\n"; cout << "NOM: " << f -> nom << " PRENOM : " << f -> prenom; cout << " AGE: " << f -> age << " NOTE: " << f -> note; cout << "\n\nPOUR SORTIR FRAPPER UNE TOUCHE "; getch(); delete f ; // si on a terminé } LES FONCTIONS int randdat (int * pa, int n) { int i; for (i = 0; i <n; ++ i) { * pa = rand ()% n + 1; ++ pa; } // ou bien for (i = 0; i <n; ++ i) * (pa + i) = rand ()% n + 1 // ou bien for (i = 0; i <n; ++ i) pa [i] = rand ()% n + 1; } void swap (int * a, int * b) { int temp; temp = * a; * a = * b; * b = temp; } 4 void saisie(Etud_t &fx) { // passage par valeur cout <<"SAISIE D'UNE FICHE \n"; cout <<"NOM: "; cin >> fx.nom; cout <<"PRENOM: "; cin >> fx.prenom; cout <<"AGE: "; cin >> fx.age; cout <<"NOTE: "; cin >> fx.note; } void affiche(Etud_t fx) { // passage par valeur cout << "\n\nLECTURE DE LA FICHE:\n"; cout << "NOM: "<< fx.nom <<" PRENOM : "<< fx.prenom; cout << " AGE : "<< fx.age<<" NOTE: "<< fx.note; } void main() { Etud_t f; saisie(f); affiche(f); cout<<"\n\nPOUR SORTIR FRAPPER UNE TOUCHE "; getch(); } void saisie_r(Etud_t *fx) { // passage par référence cout <<"SAISIE D'UNE FICHE \n"; cout <<"NOM: "; cin >> fx -> nom; cout <<"PRENOM: "; cin >> fx -> prenom; cout <<"AGE: "; cin >> fx -> age; cout <<"NOTE: "; cin >> fx -> note; } void affiche_r(Etud_t *fx) { // passage par référence cout << "\n\nLECTURE DE LA FICHE:\n"; cout << "NOM: "<< fx -> nom cout <<" PRENOM : "<< fx -> prenom; cout << " AGE : "<< fx -> age cout <<" NOTE: "<< fx -> note; } 5 void main() { Etud_t f; saisie_r( &f ); affiche_r( &f ); cout<< "\n\nPOUR SORTIR FRAPPER UNE TOUCHE "; getch(); } 6 MANIPULATIONS GENERALES SUR LES FICHIERS Pour manipuler un fichier, on commence toujours par l’ouvrir et vérifier qu’il est effectivement ouvert (s’il n’existe pas, cela correspond à une création). Lorsque la manipulation est terminée, il faut fermer ce fichier et vérifier sa fermeture effective. 1 - Déclaration: FILE *index; // majuscules obligatoires pour FILE 2 Ouverture: On utilise la fonction fopen de prototype : FILE *fopen(char *nom, char *mode); mode (pour les fichiers TEXTES) : « r » lecture seule « w » écriture seule (destruction de l'ancienne version si elle existe) « w+ » lecture/écriture (destruction ancienne version si elle existe) « r+ » lecture/écriture d'un fichier existant (mise à jour), pas de création d'une nouvelle version. « a+ » lecture/écriture d'un fichier existant (mise à jour), pas de création d'une nouvelle version, le pointeur est positionné à la fin du fichier. mode (pour les fichiers BINAIRES) : « rb » lecture seule « wb » écriture seule (destruction de l'ancienne version si elle existe) « wb+ » lecture/écriture (destruction ancienne version si elle existe) « rb+ » lecture/écriture d'un fichier existant (mise à jour), pas de création d'une nouvelle version. « ab+ » lecture/écriture d'un fichier existant (mise à jour), pas de création d'une nouvelle version, le pointeur est positionné à la fin du fichier. Lorsqu’il y a un problème à l’ouverture du fichier, la fonction fopen retourne une valeur particulière du pointeur de fichier, la valeur NULL (ceci est une constante définie dans le fichier stdio.h). En testant la valeur retournée on peut ainsi réaliser un contrôle d’erreur : 3 - Fermeture: fclose(index) ; Exemple : FILE *index ; char nom[30] ; cout << "Nom du fichier : " ; cin >> nom ; index = fopen(nom, "w") ; if (index == NULL) cout << « Erreur a l’ouverture » ; else { // Ici instructions de traitement // fclose(index) ; } 7 Les Classes en C++ La classe décrit le modèle structurel d'un objet :  Ensemble des attributs (ou champs ou données membres) décrivant sa structure,  Ensemble des méthodes (ou opérations ou fonctions membres) qui lui sont applicables. En C++, on sépare l’interface d'une classe et son corps. L'interface rassemble sous le nom de la classe ses attributs et les prototypes de ses méthodes. On place en général l'interface dans un fichier entête.h , (nom_classe .h ). Le corps de la classe contient le corps des méthodes définies dans l'interface de la classe. Il est placé dans un fichier source .cpp (e.g., nom_classe .cpp ). Instance de classe Un objet est une instance d’une classe (une variable dont le type est une classe). Un objet occupe de l’espace en mémoire. Il peut être alloué : Statiquement : Comme toute variable déclarée statiquement, la durée de vie d’un objet est limitée au contexte dans lequel il est déclaré, en général le corps d’une fonction ou méthode. On peut aussi instancier plusieurs objets de même classe dans un tableau alloué statiquement : Dynamiquement : cela est effectué par l’intermédiaire des opérateurs new et delete. Un pointeur sur la zone mémoire du tas où l’objet a été alloué est retourné. L’objet déclaré dynamiquement est persistant. On libère l’objet alloué en donnant le pointeur sur cette zone allouée à l’opérateur delete, lorsqu’on n’en a plus besoin. Les constructeurs Les données membres d'une classe ne peuvent pas être initialisées à l’instanciation de l’objet, Il faut donc prévoir une méthode d'initialisation des données (constructeur) qui serai invoquée lors de la création de l’objet en mémoire. Son nom est identique au nom de la uploads/Litterature/ cours-c-st-m1-b-2018-2019.pdf

  • 13
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager