• Aucun résultat trouvé

Introduction au langage C++ en pdf

N/A
N/A
Protected

Academic year: 2021

Partager "Introduction au langage C++ en pdf"

Copied!
22
0
0

Texte intégral

(1)

Introduction à la

programmation C++

Les tableaux statiques

BOULCH Alexandre

(2)

Plan de la séance

Déclaration, définition

Spécificités des tableaux La librairie Imagine++ TP

(3)

Les tableaux

Des tableaux pour . . .

I . . . éviter la multiplication des variables

I . . . structurer les données (e.g. coordonnées d’un vecteur)

(4)

Utilisation

I Les tableaux ont un type

I Les tableaux ont une taille fixe (une constante)

Déclaration type nom_tableau[taille]; Initialisation C++ i n t t a b[ 1 0 ] ; f o r(i n t i=0; i<10; i++){ t a b[i] = 5 ; } d o u b l e t a b 2[ 5 ] = { 2 , 3 . 2 , 9 . 7 6 , 6 , 1 0 0 0 } ;

(5)

Comparaison avec Python

Python t a b 1= [ 0 f o r i i n r a n g e( 5 ) ] t a b 1[ 2 ] = 5 t a b 2= [" t e s t ", 1 0 , True] t = 6 t a b 3= [ 0 f o r i i n r a n g e(t) ] t a b 3.a p p e n d( 1 0 0 ) C++ i n t t a b 1[ 5 ] = { 0 , 0 , 0 , 0 , 0 } ; t a b 1[ 2 ] = 5 b o o l t a b 1 ={" t e s t ", 1 0 , Tru e} ; // ERREUR i n t t = 6 i n t t a b 3[t] ; // ERREUR t non c o n s t a n t c o n s t i n t t = 6 ; i n t t a b 3[t] ; // OK t c o n s t a n t t a b 3.a p p e n d( 1 0 0 ) // ERREUR t a i l l e f i x e N.B.

Les tableaux en C++ sont plus proches des tableaux numpy que des listes python.

(6)

Taille constante

Pour créer un tableau il est impératif que la taille soit une constante : un nombre ou un const int.

C++ i n t t a b 1[ 5 ] ; // OK c o n s t i n t t a i l l e = 1 0 0 0 ; // d e c l a r a t i o n d ’ une c o n s t a n t e d o u b l e t a b 2[t a i l l e] ; C++ Erreurs d o u b l e t a i l l e 2 = 1 0 0 ; f l o a t t a b 3[t a i l l e 2] ; // ERREUR l a t a i l l e e s t un d o u b l e i n t t a i l l e 3 = 2 0 0 ; f l o a t t a b 3[t a i l l e 3] ; // ERREUR l a t a i l l e n ’ e s t p a s une c o n s t a n t e

(7)

Utilisation

Si n est la taille du tableau, les indices vont de 0 à n-1.

C++

c o n s t i n t n=100;

c h a r t a b[n] ;

t a b[ 0 ] = ’ a ’; // OK t a b[n] = ’ f ’; // ERREUR

Les tableaux utilisent de la mémoire, ne pas les utiliser si ils ne sont pas nécessaires.

C++ // c a l c u l 2^99 i n t t[ 1 0 0 ] ; t[ 0 ] = 1 ; f o r(i n t i=1; i<100; i++){ t[i] = t[i−1]∗2; } c o u t<< t[ 9 9 ] << e n d l; C++ // c a l c u l 2^99 // s a n s t a b l e a u i n t r=1; f o r(i n t i=1; i<100; i++){ r ∗= 2 ; } c o u t<< r << e n d l;

(8)

Plan de la séance

Déclaration, définition

Spécificités des tableaux

La librairie Imagine++ TP

(9)

Tableaux et fonctions

On peut utiliser les tableaux dans les fonctions :

C++ v o i d a f f i c h e(i n t t[ 5 ] ) { f o r(i n t i=0; i<5; i++){ c o u t<< t[i] <<" "; } c o u t << e n d l; } C++ v o i d a f f i c h e(i n t t[ ] , i n t t a i l l e) { f o r(i n t i=0; i<t a i l l e; i++){ c o u t<< t[i] << " "; } c o u t<< e n d l; }

La seconde solution est à préférer car elle réutilisable avec des tableaux de différentes tailles.

(10)

Tableaux et fonctions 2

Attention

I Un tableau est toujours passé par référence. On n’utilise pas de &.

I Une fonction ne peut pas retourner de tableau.

C++ c o n s t i n t t a i l l e = 1 0 ; d o u b l e t a b[t a i l l e] ; i n i t(t a b) ; a f f i c h e(t a b) ; // 0 0 0 0 0 0 0 0 0 0 C++ v o i d i n i t(d o u b l e t[ ] , i n t t a i l l e) { f o r(i n t i=0; i<t a i l l e; i++){ t[i] = 0 ; } }

(11)

Égalité de tableaux

On ne peut pas faire d’égalité entre les tableaux.

C++

b o o l t 1[ 4 ] = { 1 , 2 , 3 , 4 } , t 2[ 4 ] ;

t 2 = t 1 ; // ERREUR : p a s d ’ a f f e c t a t i o n a v e c l e = p o u r l e s t a b l e a u x Seule solution : itérer sur les éléments.

C++

b o o l t 1[ 4 ] = { 1 , 2 , 3 , 4 } , t 2[ 4 ] ;

f o r(i n t a=0; a<4; a++){

t 2[a] =t 1[a] ; }

(12)

Plan de la séance

Déclaration, définition Spécificités des tableaux

La librairie Imagine++

(13)

Les modules

I Common

fonctions et classes basiques (Timer, Color. . .)

I LinAlg

algèbre linéaire (inversion de matrices. . .)

I Graphics

affichage (fenêtre 2D/3D, dessin. . .)

I Images

(14)

Programme simple

C++ #i n c l u d e<i o s t r e a m > #i n c l u d e <I m a g i n e / G r a p h i c s . h> u s i n g namespace s t d; u s i n g namespace I m a g i n e; i n t main( ) { i n t x c=128 , y c=128 ,t=0 ,r; // i n i t v a r i a b l e s openWindow( 2 5 6 , 2 5 6 ) ; // O u v e r t u r e de l a f e n e t r e w h i l e (t r u e) { // B o u c l e p r i n c i p a l e r = 10∗c o s(t/ 1 0 0 0 ) ; // m i s e a j o u r du r a y o n f i l l C i r c l e(xc,yc,r,RED) ; // A f f i c h a g e du d i s q u e m i l l i S l e e p( 2 0 ) ; // T e m p o r i s a t i o n f i l l C i r c l e(xc,yc,r,WHITE) ;// E f f a c e m e n t du d i s q u e t++; // i n c r e m e n t e l e t e mp s } e n d G r a p h i c s( ) ;

(15)

Gestion des fenêtres

Il est possible d’ouvrir et de travailler avec plusieurs fenêtres graphiques. C++ // p r e m i e r e f e n e t r e openWindow( 2 5 6 , 2 5 6 ) ; f i l l C i r c l e( 1 2 8 , 1 2 8 , 5 0 ,RED) ; // s e c o n d e f e n e t r e openWindow( 2 5 6 , 2 5 6 ) ; f i l l C i r c l e( 1 2 8 , 1 2 8 , 5 0 ,BLUE) ; // // i m p o s s i b l e de r e v e n i r d e s s i n e r // d a n s l a p r e m i e r e f e n e t r e : // e l l e n ’ a p a s de nom // C++ // p r e m i e r e f e n e t r e

Window window1 = openWindow( 2 5 6 , 2 5 6 ) ;

f i l l C i r c l e( 1 2 8 , 1 2 8 , 5 0 ,RED) ;

// s e c o n d e f e n e t r e

Window window2 = openWindow( 2 5 6 , 2 5 6 ) ;

f i l l C i r c l e( 1 2 8 , 1 2 8 , 5 0 ,BLUE) ; s e t A c t i v e W i n d o w(window1) ; f i l l C i r c l e( 1 2 8 , 1 2 8 , 5 0 ,GREEN) ; s e t A c t i v e W i n d o w(window2) ; f i l l C i r c l e( 1 2 8 , 1 2 8 , 5 0 ,BLACK) ; // f e r m e t u r e d ’ une f e n e t r e c l o s e W i n d o w(window1) ;

(16)

La documentation

(17)

La documentation

(18)

La documentation

(19)

Plan de la séance

Déclaration, définition Spécificités des tableaux La librairie Imagine++

(20)

Le TP du jour

Mastermind

I Utilisation des tableaux

I Algorithmie

(21)

Exercices

I Écrire un programme demandant à l’utilisateur d’entrer 10 entiers qui seront placés dans un tableau. Calculer et afficher le plus grand élément.

I Écrire une fonction qui inverse les valeurs d’un tableau (le premier élément devient le dernier, le second l’avant dernier. . .)

I Écrire une fonction prends deux tableaux, qui les compare terme à terme et qui renvoie true si tous les éléments sont égaux, false sinon.

(22)

Références

Documents relatifs

Écrire un script PHP qui calcule, par additions successives, le produit de deux variables $M et $N en utilisant une boucle while. Écrire un script PHP qui calcule, par

Écrire une fonction qui prend en paramètres un tableau de nombres entiers contenant N élements et un élément de ce tableau et retourne le nombre de fois où apparait cet élément

Au lieu d'une ligne fwrite qui mémorise dans le fichier tout un tableau d'un coup (quelle que soit sa taille et la nature de ses éléments), il faut écrire élément après élément,

• Tout module utilisant un autre module doit inclure le fichier entête de ce dernier dans son fichier source ou dans son fichier entête:. #include “Module1.h“

Dans le cas d’un tableau de taille fixe, cette taille est une expression constante – qui est soit cod ´ee en dur au sein du programme ( `a ´eviter ),. – soit sp ´ecifi ´ee par

En langage C, il n’existe pas de véritable type chaîne mais une chaîne de caractères n’est autre qu’un tableau, comportant plusieurs données de type char, dont le dernier

Comme pour les tables à clé numérique, le Lua nous facilite un peu les choses en fournissant aussi une fonction préprogrammée appelée pairs qui retourne trois valeurs : une

Écrire une fonction correcte qui prend en entrée une chaîne de caractères et qui renvoie la même chaîne mais dont le premier et le dernier élément sont tous deux remplacés par