31
Tableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel nombreaux slides dus à Pierre Cubaud 1/12

Tableaux et Entrées-Sortiescedric.cnam.fr/~porumbed/20162017/vari1/c5.pdfTableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Tableaux et Entrées-Sortiescedric.cnam.fr/~porumbed/20162017/vari1/c5.pdfTableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel

Tableaux et Entrées-Sorties

Valeur d’accueil et reconversion en informatique 1 (VARI1)Daniel Porumbel

nombreaux slides dus àPierre Cubaud

1/12

Page 2: Tableaux et Entrées-Sortiescedric.cnam.fr/~porumbed/20162017/vari1/c5.pdfTableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel

Plan

Tableaux

déclaration et utilisationdimension >1 : matrices, etc.

Tris et bouclesvisualisations intuitivesle nombre de calculs la complexité

Entrées-sortieslire un fichier dans un tableau de Stringdessiner la Terre et la France,

2/12

Page 3: Tableaux et Entrées-Sortiescedric.cnam.fr/~porumbed/20162017/vari1/c5.pdfTableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel

(1) Les tableaux

déclaration

accès à une case

afficher tout le contenu

Page 4: Tableaux et Entrées-Sortiescedric.cnam.fr/~porumbed/20162017/vari1/c5.pdfTableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel

déclaration 6= allocation mémoire�f l o a t [ ] tab ; / / d e c l a r a t i o ntab = new f l o a t [ 1 0 ] ; / / a l l o c mem� �Le nombre de cases peut dépendre d’une variable�tab = new f l o a t [ n∗m] ; / / a l l o c mem� �on peut initialiser les tableaux à la main :�i n t [ ] tab = { 1 , 2 , 3 , 5 } ;� �Comment calculer la valeur maximale ?

Page 5: Tableaux et Entrées-Sortiescedric.cnam.fr/~porumbed/20162017/vari1/c5.pdfTableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel

Exemple graphique

Page 6: Tableaux et Entrées-Sortiescedric.cnam.fr/~porumbed/20162017/vari1/c5.pdfTableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel

Exemple du tri bulle vu dans le cours Architecture :

Page 7: Tableaux et Entrées-Sortiescedric.cnam.fr/~porumbed/20162017/vari1/c5.pdfTableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel
Page 8: Tableaux et Entrées-Sortiescedric.cnam.fr/~porumbed/20162017/vari1/c5.pdfTableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel

Affectation entre tableaux

Page 9: Tableaux et Entrées-Sortiescedric.cnam.fr/~porumbed/20162017/vari1/c5.pdfTableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel

Comparaison de tableaux

Page 10: Tableaux et Entrées-Sortiescedric.cnam.fr/~porumbed/20162017/vari1/c5.pdfTableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel

Tableaux multi-dimensionnels

Page 11: Tableaux et Entrées-Sortiescedric.cnam.fr/~porumbed/20162017/vari1/c5.pdfTableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel

Fonction de tri toute faite

Rque : sort() fonctionne aussi avec les tableauxde chaines

Page 12: Tableaux et Entrées-Sortiescedric.cnam.fr/~porumbed/20162017/vari1/c5.pdfTableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel

temps de calcul du tri : mesure avec millis()

difficile de lutter avec sort !

Page 13: Tableaux et Entrées-Sortiescedric.cnam.fr/~porumbed/20162017/vari1/c5.pdfTableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel

100000

10000

1000

nombre decases

3921510

7233

52

tri sort()tri bulle

à revoir en NFP136…

Page 14: Tableaux et Entrées-Sortiescedric.cnam.fr/~porumbed/20162017/vari1/c5.pdfTableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel

(2) Les fichiers

programme

fichier entrée

lecture écriture

fichier sortie- ouverture du fichier (open)- utilisation (lecture ou écriture)- vidage du tampon d'E/S (fluch)- fermeture du fichier (close)

- dépendance du système d'exploitation- flots d'octets ≠ flots de caractères (texte)- disque = accès lent

Page 15: Tableaux et Entrées-Sortiescedric.cnam.fr/~porumbed/20162017/vari1/c5.pdfTableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel

Les fichiers avec Processing version >2

enentrée:

ensortie:

On ne va pas tout voir !!

Page 16: Tableaux et Entrées-Sortiescedric.cnam.fr/~porumbed/20162017/vari1/c5.pdfTableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel

Exemple lecture d’entiers

Soit un fichier abc.txt :

1219

Le code suivant permet de lire le contenu dans deux variables�S t r i n g [ ] l i g n e s = loadS t r i ngs ( " abc . t x t " ) ;i n t x = i n t ( l i g n e s [ 0 ] ) ;p r i n t l n ( x ) ;i n t y = i n t ( l i g n e s [ 1 ] ) ;p r i n t l n ( y ) ;� �

4/12

Page 17: Tableaux et Entrées-Sortiescedric.cnam.fr/~porumbed/20162017/vari1/c5.pdfTableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel

Exemple lecture d’entiers

Soit un fichier abc.txt :

1219

Le code suivant permet de lire le contenu dans deux variables�S t r i n g [ ] l i g n e s = loadS t r i ngs ( " abc . t x t " ) ;i n t x = i n t ( l i g n e s [ 0 ] ) ;p r i n t l n ( x ) ;i n t y = i n t ( l i g n e s [ 1 ] ) ;p r i n t l n ( y ) ;� �

4/12

Page 18: Tableaux et Entrées-Sortiescedric.cnam.fr/~porumbed/20162017/vari1/c5.pdfTableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel

Exemple complet : tracer le monde

Nous avons un fichier lemonde.csv :

...-5.6619487,54.554604,Europe-6.197885,53.867565,Europe141.00021,-2.600151,Asia142.73524,-3.2891529,Asia...32.94696,35.386703,Africa33.66723,35.373215,Africa

Objectiflire toutes ces ligner et tracer le contour du monde !

5/12

Page 19: Tableaux et Entrées-Sortiescedric.cnam.fr/~porumbed/20162017/vari1/c5.pdfTableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel

Étape 1 : lecture du fichier

...-5.6619487,54.554604,Europe-6.197885,53.867565,Europe141.00021,-2.600151,Asia142.73524,-3.2891529,Asia...32.94696,35.386703,Africa33.66723,35.373215,Africa

On va lire ces données dans un tableau :�S t r i n g l i g n e s [ ] ;l i g n e s = loadS t r i ngs ( " lemonde . csv " ) ;� �Le nombre de ligne est lignes.length. On peut découper chaqueligne ligne[i ] en deux grâce à la fonction split .

6/12

Page 20: Tableaux et Entrées-Sortiescedric.cnam.fr/~porumbed/20162017/vari1/c5.pdfTableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel

étape 1 : - chargement du fichier texte dans un tableau- on récupère le nombre de lignes du fichier

étape 2 :décomposition de la ligne lue : split(chaine,separateur)

étape 3 :map() effectue une conversion linéaire

loadString() peut échouer :il ne faut jamais supposer dans un programmeque les ressources (fichier, etc) existent=> mécanisme des exceptions vu plus tard

Page 21: Tableaux et Entrées-Sortiescedric.cnam.fr/~porumbed/20162017/vari1/c5.pdfTableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel

Un squellete de code�

S t r i n g l i n e s [ ] ;l i n e s = loadS t r i ngs ( " lemonde . csv " ) ;s i ze (1000 ,800) ;background ( 0 ) ;f o r ( i n t i =0; i < . . . . . ; i ++) {

. . . . va ls = s p l i t ( l i n e s [ i ] , " , " ) ;i f ( va ls . length >=3) {

f l o a t l ong i t ude = f l o a t ( va ls [ 0 ] ) ;f l o a t l a t i t u d e = f l o a t ( va ls [ 1 ] ) ;s t roke (100 ,000 ,200) ;po i n t (4∗ l ong i t ude +500 ,4∗ l a t i t u d e +400) ;/ / 4∗ pour zoomer , 500,400= center

}}� �

7/12

Page 22: Tableaux et Entrées-Sortiescedric.cnam.fr/~porumbed/20162017/vari1/c5.pdfTableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel

L’impact de la projection de Mercator

Aucune projection n’est parfaite : L’Amérique du Sud sembleplus petite que le Groenland ; en réalité, elle est 8 × plus grande

8/12

Page 23: Tableaux et Entrées-Sortiescedric.cnam.fr/~porumbed/20162017/vari1/c5.pdfTableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel

Réalisation de la projection de Mercator

Il faut appliquer une formule sur la latitude :�l a t i t u d e = 50∗ l og ( tan ( PI / 4 )

+rad ians ( l a t i t u d e ) / 2 ) ;� �

Comment tracer l’émisphère Sud en vert ?Comment tracer l’Europe en bleu ?

On utilise la fonction match(String a,String b)

9/12

Page 24: Tableaux et Entrées-Sortiescedric.cnam.fr/~porumbed/20162017/vari1/c5.pdfTableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel

Réalisation de la projection de Mercator

Il faut appliquer une formule sur la latitude :�l a t i t u d e = 50∗ l og ( tan ( PI / 4 )

+rad ians ( l a t i t u d e ) / 2 ) ;� �Comment tracer l’émisphère Sud en vert ?

Comment tracer l’Europe en bleu ?On utilise la fonction match(String a,String b)

9/12

Page 25: Tableaux et Entrées-Sortiescedric.cnam.fr/~porumbed/20162017/vari1/c5.pdfTableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel

Réalisation de la projection de Mercator

Il faut appliquer une formule sur la latitude :�l a t i t u d e = 50∗ l og ( tan ( PI / 4 )

+rad ians ( l a t i t u d e ) / 2 ) ;� �Comment tracer l’émisphère Sud en vert ?Comment tracer l’Europe en bleu ?

On utilise la fonction match(String a,String b)

9/12

Page 26: Tableaux et Entrées-Sortiescedric.cnam.fr/~porumbed/20162017/vari1/c5.pdfTableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel

Produire un fichier : saveStrings(...)

Un simple exemple :

String[] lignes = new String[3];lignes[0] = "première ligne";lignes[1] = "deuxième ligne";lignes[2] = "troisème ligne";saveStrings("test.txt",lignes);

utile lorsqu’on peut tout mémoriser dans un tableauon doit connaître le nombre de lignes à l’avance !Si on replacait la première ligne parString[] lignes = new String[5] ?

10/12

Page 27: Tableaux et Entrées-Sortiescedric.cnam.fr/~porumbed/20162017/vari1/c5.pdfTableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel

Produire un fichier : createWriter(...)

�P r i n t W r i t e r f i c ;f i c = c rea teWr i t e r ( nomFichier ) ;f i c . p r i n t l n ( . . . . ) ;. . . .f i c . f l u s h ( ) ; / / v idage tampon E/Sf i c . c lose ( ) ; / / fermer l e f i c h i e r� �

Écrire l’europe dans un fichier europe.csv

11/12

Page 28: Tableaux et Entrées-Sortiescedric.cnam.fr/~porumbed/20162017/vari1/c5.pdfTableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel

Produire un fichier : createWriter(...)

�P r i n t W r i t e r f i c ;f i c = c rea teWr i t e r ( nomFichier ) ;f i c . p r i n t l n ( . . . . ) ;. . . .f i c . f l u s h ( ) ; / / v idage tampon E/Sf i c . c lose ( ) ; / / fermer l e f i c h i e r� �Écrire l’europe dans un fichier europe.csv

11/12

Page 29: Tableaux et Entrées-Sortiescedric.cnam.fr/~porumbed/20162017/vari1/c5.pdfTableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel

Programmes entrée-sortie

1 Générer 100 nombres aléatoires (entre 1 et 1000) et stocker-les dans un fichier a.txt

2 Calculer l’addition de tous les nombres stockés dans un fi-chier a.txt et écrire le résultat dans un fichier b.txt

le fichier a.txt comporte un nombre par ligne3 Trier les nombres stockes dans un fichier a.txt et écrire le

tableau trié dans un fichier c.txt

12/12

Page 30: Tableaux et Entrées-Sortiescedric.cnam.fr/~porumbed/20162017/vari1/c5.pdfTableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel

Programmes entrée-sortie

1 Générer 100 nombres aléatoires (entre 1 et 1000) et stocker-les dans un fichier a.txt

2 Calculer l’addition de tous les nombres stockés dans un fi-chier a.txt et écrire le résultat dans un fichier b.txt

le fichier a.txt comporte un nombre par ligne

3 Trier les nombres stockes dans un fichier a.txt et écrire letableau trié dans un fichier c.txt

12/12

Page 31: Tableaux et Entrées-Sortiescedric.cnam.fr/~porumbed/20162017/vari1/c5.pdfTableaux et Entrées-Sorties Valeur d’accueil et reconversion en informatique 1 (VARI1) Daniel Porumbel

Programmes entrée-sortie

1 Générer 100 nombres aléatoires (entre 1 et 1000) et stocker-les dans un fichier a.txt

2 Calculer l’addition de tous les nombres stockés dans un fi-chier a.txt et écrire le résultat dans un fichier b.txt

le fichier a.txt comporte un nombre par ligne3 Trier les nombres stockes dans un fichier a.txt et écrire le

tableau trié dans un fichier c.txt

12/12