View
1
Download
0
Category
Preview:
Citation preview
1
++- 1M. BENJELLOUN : 2019-20 UMONS Résumé 1e Bac
Mohammed BENJELLOUN
Service d’Informatique
Faculté Polytechnique de Mons
Mohammed.Benjelloun@umons.ac.be
2019-2020
Résumé Ba1
++- 2M. BENJELLOUN : 2019-20 UMONS Résumé 1e Bac
(pseudo-code/organigramme)
(langage)
Ce programme doit gérer en boucle le menu suivant :
1- Saisie et Affiche2- Tri et Affiche3- Seuil de lipolyse et Affichage4- Efface et Affiche5- Ajoute et Affiche
{char Rep;
Rep = ‘X’ ;cout << "Voulez vous continuer ? (O/N)" ;
if (Rep <> "O" ) cout << "Saisie …" ;
cout << "Fin …«…}
(suite finie d’opérations élémentaires)
Résumé Ba1
2
++- 3M. BENJELLOUN : 2019-20 UMONS Résumé 1e Bac
Programmer: Y = X2, Z = X3 et
#include <iostream> // pour cout et cin#include <cmath> // pour sqrt( )using namespace std;
void main() {int X, Y, Z ; // variablesfloat racine;
cout << " ??valeur de X = ";cin >> X;
Y= X * X ; // X²Z= Y * X ; // X³racine = sqrt(X);
cout << "La racine de" << X << " est " << racine << endl;cout << " Y = " << Y << " et Z = " << Z ;
}
++- 4M. BENJELLOUN : 2019-20 UMONS Résumé 1e Bac
Un identificateur ne peut pas être un mot réservé du langage :
Les mots réservés du langage C++ doivent être écrits en minuscules.
Identificateurs
3
++- 5M. BENJELLOUN : 2019-20 UMONS Résumé 1e Bac
Les structures de contrôle
Alternative: if-else
Itérations: for, while, do-while
Rupture de Contrôle: break, continue, return …
Choix Multiple: switch-case
Bloc 1
d’instructions
Bloc 2
d’instructions
oui non
Suite du programme
oui non
Suite du
programmeBloc
d’instructions
Condition
vraie
oui
non
Bloc
d’instructions
programme
Conditionvraie
Suite du programme
programme
Condition
vraie
if-else while
do-while
++- 6M. BENJELLOUN : 2019-20 UMONS Résumé 1e Bac
Les décisions - if … else
if (Condition vraie) {instruction 1;instruction 2;
}else {
instruction 3;instruction 4;
}
Selon qu’une certaine condition est vérifiée ou non, on exécutera une ou plusieurs instructions.
Les décisions - if sans elseif (Condition vraie){
instruction 1;instruction 2;…
instruction N;}
4
++- 7M. BENJELLOUN : 2019-20 UMONS Résumé 1e Bac
Les itérations
for( init ; (Condition vraie); itération)
{
/* bloc d'instructions */
}
for (i = 0; i <4; i++) {
cout << "i = " << i << endl;
}
while (Condition vraie){
............; /* bloc d'instructions */
............;
............;
}
int i = 0;
while(i < 4) {
cout<< "i = " << i << endl;
i++;
}
do
{
............; /* bloc d'instructions */
............;
}
while (Condition vraie);
int i = 0;
do {
cout<< "i = " << i << endl;
i++;
} while(i < 4);
++- 8M. BENJELLOUN : 2019-20 UMONS Résumé 1e Bac
switch = AU CAS OU ... FAIRE ...
…
switch(variable de type char ou int) // au cas où la variable vaut:
{case valeur1: ......; // variable=valeur1 : exécutez ce bloc d'instructions.
.......;break;
case valeur2:........; // variable=valeur2: exécutez ce bloc d'instructions.........;
break;.. // etc ....
default: .......; /* Si aucune des valeurs précédentes: exécutez ce........; bloc d'instructions, pas de "break" ici.*/
}
Le bloc "default" n'est pas obligatoire. valeur1, valeur2, …. doivent être des expressions constantes. L’instruction switch correspond à une cascade d’instructions if ...else
5
++- 9M. BENJELLOUN : 2019-20 UMONS Résumé 1e Bac
Tableaux et Strings
Un tableau est une collection de variables de même type, appelées éléments
Type Nom_Tableau[dim];
int tab[4]; déclare un tableau de 4 valeurs entières tab[0] tab[1] tab[2] tab[3]
Constante
Chaînes de caractères ou string
• Un tableau de char à une dimension : char Nom[dim];
• Un type spécial string : string Nom; // Il faut inclure <string>
++- 10M. BENJELLOUN : 2019-20 UMONS Résumé 1e Bac
Lecture d’un string contenant des espaces
Attention ! On ne peut donc pas lire en une fois une ligne entièrecontenant des blancs (espaces) avec cin
☞ il faut utiliser getline pour lire une ligne entière (contenant des espaces)
Exemple :
string nom_compose, nom;cout << " Introduisez le nom avec espace : "; // Van den bosschegetline(cin, nom_compose);cout << nom_compose << endl; // ==> Van den bosschecout << " Introduisez un nom avec espace : "; // Van Coolcin >> nom_compose;cout << nom_compose << endl; // ==> Van
6
++- 11M. BENJELLOUN : 2019-20 UMONS Résumé 1e Bac
Début programme
Fin
instructions
cout << " Modifier n = " ;cin >> n ;
if ( n == x) {…
}else {
…}
for (x = 0; x < 4; x++) {cout << "x = " << x << endl;
}
while(x<4 ) {…
}
do {…
} while(x < 4 );
#include <iostream>
using namespace std;
int main ()
{
return 1;
}
int n=2, x ; // commentaire
x=3;
instructions2
instructions1
If OK?O
If OK?
instructions
O
N
N
++- 12M. BENJELLOUN : 2019-20 UMONS Résumé 1e Bac
#include <iostream>
using namespace std;int Somme(int x, int y);
void main(void) {
int Som;
Som = Somme(7,9); //appel de la fonction
if ( Som > 10 ) {
cout <<" Som > 10 "<< Som<< endl;
}
else {cout <<" Som <= 10 "<< Som;
}
int Somme(int x, int y) { /* Définition de
la fonction */
int S;
S= x+y;
return S ;
}
Directives du préprocesseur : accès avant la compilation
Programme
principal
Déclarations
TraitementsDonnéesStructures de contrôleCommentaires
Structure d'un programme C++ : exemple
7
++- 13M. BENJELLOUN : 2019-20 UMONS Résumé 1e Bac
…
void main(){
Fnct_SomCar(5) ;
Fnct_SomCar(10) ;
Fnct_SomCar(7) ;
}
void Fnct_SomCar(int N){
int i, S=0;
for (i = 0; i <N; i++)
S = S + i*i ;
cout<<" SC="<<S<< endl;
}
5
Fonctions pourquoi ?10
++- 14M. BENJELLOUN : 2019-20 UMONS Résumé 1e Bac
…
void main(){
int Val1, Val3;
…
Val1 = Fnct1_() ;
Fnct2_() ;
Val3 = Fnct3_() ;
}
……….………..return entier;
int Fnct1_()
……….………..Fnct4_();………..………..
void Fnct2_()
……….………..………..………..
void Fnct4_()
……….………..return entier;
int Fnct3_()
Fonctions pourquoi ?
Une fonction peut, pendant son exécution, faire appel à une autre fonction, qui elle-même en appelle d'autres, etc.
8
++- 15M. BENJELLOUN : 2019-20 UMONS Résumé 1e Bac
Écrire un programme modulaire qui permet de saisir et afficher les éléments de deux
tableaux (Tab1[10] et Tab2[10]) contenant des noms. Le nombre d’éléments (N1 et
N2) saisis peut être différents pour chacun des deux tableaux mais ne peut dépasser
10 éléments.
Combien de fonctions Saisie et Affichage contiendra votre programme? Justifiez.
…
int main () // Programme principal
{ .....
string T1[Nmax], T2[Nmax];
…..
case 1: saisie (N1, T1);affichage (N1, T1);
break;case 2: saisie (N2, T2);
affichage (N2, T2);break;
…..
}
………..
return 1;
saisie (N1, T1, N2, T2);affichage (N1, T1, N2, T2);
++- 16M. BENJELLOUN : 2019-20 UMONS Résumé 1e Bac
#include …
void Modifier(int v);
void main(){
int v = 5;
Modifier(v);
cout << "\nmain: v = " << v;
}
void Modifier(int v){
v = v *100;
cout << "Modifier: v = "<< v;
}
#include …
void Modifier(int *v);
void main(){
int v = 5;
Modifier(&v);
cout << "\nmain: v = " << v;
}
void Modifier(int *v){
*v = *v *100;
cout << "Modifier: *v = "<< *v;
}
#include …
void Modifier(int &v);
void main(){
int v = 5;
Modifier(v);
cout << "\nmain: v = " << v;
}
void Modifier(int &v){
v = v *100;
cout << "Modifier: v = "<< v;
}
par Valeur Pointeur Référence
Appel par valeurs, pointeurs, références ??!!
var = 5
var = 500
Modifier: v = 500
main: v = 5
Modifier: *v = 500
main: v = 500
Modifier: v = 500
main: v = 500
var = 5
var = 500
9
++- 17M. BENJELLOUN : 2019-20 UMONS Résumé 1e Bac
#include …
void fonct (int a)
{
a=1 ;
}
void main(void){
int var = 5;
fonct (var);
cout << var << endl;
}
5
#include …
int fonct (int a)
{
a=1 ;
return a;
}
void main(void){
int var = 5;
var = fonct (var);
cout << var << endl;
}
1 1
#include …
void fonct (int *a)
{
*a=1 ;
}
void main(void){
int var = 5;
fonct (&var);
cout << var << endl;
}
#include …
void fonct (int &a)
{
a=1 ;
}
void main(void){
int var = 5;
fonct (var);
cout << var << endl;
}
1
++- 18M. BENJELLOUN : 2019-20 UMONS Résumé 1e Bac
Règles de visibilité des variables
#include <iostream>
using namespace std;
void main() {
const float PI= 3.14159;
float rayon = 3.5;
float circonference, surface;
int choix;
cout << "1. Calculer la circonference\n";
cout << "2. Calculer la surface\n";
cout << "Votre choix?";
cin >> choix;
switch (choix) {
case 1 : rayon = 0;
circonference = 2*PI*rayon;
cout << circonference << endl; break;
case 2 : surface = PI*rayon*rayon;
cout << surface << endl; break;
}
}
Le C++ est un langage structuré en blocs { } , les variables ne peuvent être utilisées que là où elles sont déclarées.
10
++- 19M. BENJELLOUN : 2019-20 UMONS Résumé 1e Bac
Gestion des fichiers en C++
Pour manipuler un fichier en C++ il faut #include <fstream>
On y trouve essentiellement les classes:• ofstream (output file stream) permet d’écrire les données dans le fichier ;• ifstream (input file stream) permet de lire les données du fichier ;
Ouverture et fermeture d’un fichier :
ofstream output, X;output.open("Res.txt"); ou output.open("c:\\labojeudi\\Res.txt");X.open("Data"); ou X.open("A:\\Data");
Écriture :
Lecture : ifstream input ;input.open("Data.txt"); ou input.open("c:\\labojeudi\\Data.txt");
++- 20M. BENJELLOUN : 2019-20 UMONS Résumé 1e Bac
Student191000
Obé
Lix
191001
Astér
Ix
100009
Tint
In
101899
Tourne
Sol
struct Student { // mot-clé struct + nomStructint Id;char nom[30];string prenom;
};
struct Student Tab[Nmax];
Les Structures
Structure = ensemble de variables définissant un nouveau type sous un seul nom.
11
++- 21M. BENJELLOUN : 2019-20 UMONS Résumé 1e Bac
struct E{
int x;
int y ;
} ;
#include …
void fonct (E *a) {
*a.x=1 ; *a.y=2;
}
void main(void){
struct E V;
V.x=V.y=0;fonct (&V);
cout << V.x << V.y;}
1 2
#include …
void fonct (E a) {
a.x=1 ; a.y=2;
}
void main(void){
struct E V;
V.x=V.y=0;
fonct (V);
cout << V.x << V.y;
}
0 0
#include …
E fonct (E a) {
a.x=1 ; a.y=2;
return a;
}
void main(void) {
struct E V;
V.x=V.y=0;
V = fonct (V);
cout << V.x << V.y;}
1 2
#include …
void fonct (E &a) {
a.x=1 ; a.y=2;
}
void main(void){
struct E V;
V.x=V.y=0;fonct (V);
cout << V.x << V.y;}
1 2
++- 22M. BENJELLOUN : 2019-20 UMONS Résumé 1e Bac
struct Article{
int x ;
string nom ;
} ;
3
Nom1
2
Nom4
5
Nom5
…
…
Elem Tab[Cste];
void Saisie(Article Tab[], int n) {
for(int i=0; i<n; i++) {
cout << "\n le nom de l article: "
cin >> Tab[i].nom;cout << "\n le prix de l article: ";
cin >> Tab[i].x;}
}
Manipulation d’un tableau
12
++- 23M. BENJELLOUN : 2019-20 UMONS Résumé 1e Bac
void main() {
struct Article Tab[Nmax];
…
do{
rep_menu=menu();
switch(rep_menu) {
case 1: Saisie(Tab,n);
Affichage(Tab, n);
break;
default : cout << " Il faut choisir entre 1) .... et 8) \n";
}
}while (rep_menu!=8);
. . . . . . Manipulation d’un tableau
struct Article{
int x ;
string nom ;
} ;
++- 24M. BENJELLOUN : 2019-20 UMONS Résumé 1e Bac
void saisie(Etudiant T[], int &n, int &NM) {
int i, j;
? n et NMfor(i=0;i<n;i++){
cout << " nom[" i << " ] = ";
cin>> T[i].nom;cout <<" num " ;
cin >> T[i].num;
for(j=0;j< NM;j++){
cout << " Matiere " << i ;
cin >> T[i].Matieres[j] ;}
}
}
struct Etudiant{string nom ;int numero ;int Matieres[NMax] ;
} ;
Résumé 1e Bac
Manipulation d’un tableau. . . . . .
13
++- 25M. BENJELLOUN : 2019-20 UMONS Résumé 1e Bac
☺☺☺
Les listes sont des structures de données dynamiques, linéaires. Elles sont composées de cellules chaînées les unes aux autres par pointeurs.
NULL
NULL
Une cellule étant une structure qui contient un élément à stocker et un pointeur sur la prochaine cellule de la liste.
struct Cellule{int Data;
struct Cellule *suiv; // pointeur sur le prochain maillon};
++- 26M. BENJELLOUN : 2019-20 UMONS Résumé 1e Bac
debut
Noeud?
debut
NULL
struct Noeud {int data;Noeud *next;Noeud *prev;
};
Liste chaînée
Liste doublement chaînée
Recommended