-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathles-tableaux-dans-scala.html
240 lines (212 loc) · 11.7 KB
/
les-tableaux-dans-scala.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>Les tableaux dans scala</title>
<!-- Bootstrap Core CSS -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="css/clean-blog.min.css" rel="stylesheet">
<!-- Custom Fonts -->
<link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href='http://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<style>
blockquote {
font-style: normal;
font-family: Menlo,Monaco,Consolas,"Courier New",monospace;
padding: 2px 4px;
font-size: 90%;
color: #c7254e;
background-color: #f9f2f4;
border-radius: 4px;
}
pre {
display: block;
padding: 9.5px;
margin: 0 0 10px;
font-size: 13px;
line-height: 1.42857143;
color: red;
word-break: break-all;
word-wrap: break-word;
background-color: #F9F2DE;
border: 1px solid #F9F2DE;
border-radius: 4px;
}
</style>
</head>
<body>
<!-- Navigation -->
<nav class="navbar navbar-default navbar-custom navbar-fixed-top">
<div class="container-fluid">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header page-scroll">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="index.html">Accueil</a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
<li>
<a href="contact.html">Contact</a>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container -->
</nav>
<!-- Page Header -->
<!-- Set your background image for this header on the line below. -->
<header class="intro-header" style="background-image: url('img/post-bg.jpg')">
<div class="container">
<div class="row">
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
<div class="post-heading">
<h1>Les tableaux dans scala</h1>
<h2 class="subheading">
</h2>
<span class="meta" > 28 Août 2017</span>
</div>
</div>
</div>
</div>
</header>
<!-- Post Content -->
<article>
<div class="container">
<div class="row">
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
<h2 class="section-heading">Les tableaux dans scala</h2>
<ul>
<li>
Définition d’un tableau
</li>
<li>
Accès et update des éléments du tableau
</li>
<li>
Les itérations sur les tableaux
</li>
<li>
Les transformations sur les tableaux
</li>
</ul>
<h3 style="text-decoration: underline">1- Définition et création d'un tableau </h3>
<p>Le tableau est une classe Array qui se définit ici : <a href="http://www.scala-lang.org/api/2.6.0/scala/Array.html">http://www.scala-lang.org/api/2.6.0/scala/Array.html</a>
Création d’un tableau :</p>
<pre>val tab = new Array [Int] (10)</pre>
<p>Où le type d’élément du tableau est de type Int , le tableau ne peut contenir que des éléments de mêmes types, dans notre cas nous avons un tableau de 10 éléments de type Int </p>
<p>Nous avons aussi la possibilité de créer une instance d’un tableau comme ceci :</p>
<pre>val tab = Array.apply (1,2,3,4,5,6,7,8,9,10)</pre>
<p>Ou bien en omettant d’utilise le apply qui et une fonction cachée comme il l’en n’existe beaucoup dans scala</p>
<pre>val tab = Array (1,2,3,4,5,6,7,8,9,10)</pre>
<p>Nous pouvons aussi créer des tableaux avec plusieurs dimensions dans cette exemple un tableau à 2 dimensions</p>
<pre>val mat = Array.ofDim[Int](3,9)</pre>
<h3 style="text-decoration: underline">2- Accès et update des éléments du tableau</h3>
<p>Tous les cas de figure et exemples utiliseront : </p>
<pre>val tab = Array (1,2,3,4,5)</pre>
<p>L’accès aux éléments du tableau de fait par l’indice du tableau comme ceci : </p>
<pre>val e = tab(2)</pre>
<p>Où l’indice commence par 0 donc dans notre cas e=3</p>
<p>Ou bien via « apply » qui se trouve dans la classe Array qui permet de définir une instance de la classe Array</p>
<pre>val e = tab.apply(2) // on tombe sur le même résultat cad e=3</pre>
<p>Pour modifier un élément d’un tableau c’est simple, faudra juste affecter la valeur voulue, pour cela nous avons deux façons de le faire </p>
<pre>Tab(2)=4 </pre>
<p>ou bien avec la méthode update de Array tab.update(2,4) ou 2 est l’indice et 4 la valeur </p>
<h3 style="text-decoration: underline">3- Les itérations sur le tableau</h3>
<p>Nous avons plusieurs manière d’itérer sur un tableau : Itération avec un indice, boucle FOR, WHILE, FOR/UNTIL … avec des syntaxes plus ou moins différentes.</p>
<h4>Itération avec indice</h4>
<pre>var j=0
while (j < tab.legth) {
println (tab(j))
j=j+1
}
</pre>
<h4>Boucle FOR avec syntaxe particulière</h4>
<pre>for (e <- tab) println(e)</pre>
<h4>Boucle FOREACH </h4>
<p>La méthode que j’utilise le plus pour itérer sur un tableau </p>
<pre>tab.foreach ( e => println (e))</pre>
<h3 style="text-decoration: underline">4- Les transformations sur les tableaux</h3><p></p>
<h4>La transformation avec FOR / YIELD</h4>
<p>En gros appliquer un for / yield sur un tableau, revient à créer un nouveau tableau de même type bien sûr , dans cette exemple on va créer un nouveau tableau où ses element seront des multiples de « 2 » des elements du tableau « tab »</p>
<pre>val tab2 = for (e <- tab) yield e*2 </pre>
<h4>Calcul des propriétés d’un tableau et sélection d’une partie d’un tableau</h4>
<pre>tab.sum // return la somme des éléments de tab </pre>
<pre>tab.take(2) // return un tableau avec les 2 premiers éléments de tab a parti de l’indice 2 </pre>
<p>Plusieurs autres calculs sur les propriétés d’un tableau existent dans la class Array : <a href="http://www.scala-lang.org/api/2.6.0/scala/Array.html">http://www.scala-lang.org/api/2.6.0/scala/Array.html</a></p>
<h4>filter</h4>
<p>La méthode permet de filtrer un tableau et de sélectionner qu’une partie par rapport a la condition du filtre </p>
<pre>val filtre = tab.flter ( e => e <= 2 ) </pre>
<p>Ou bien avec le for / yield</p>
<pre>val filtre = for ( e <- tab if e <=2) yield e </pre>
<h4>map </h4>
<p>permet de transformer et d‘itérer sur les éléments d’un tableau pour en créer un nouveau tab[A] -> tab[B]</p>
<pre>val map=tab.map (e => e*2)</pre>
<p>On obtiendra un nouveau tableau de « tab » ou les éléments du premier seront multiplies par 2</p>
<h4>sortWith</h4>
<p>Permet de trier un tableau </p>
<pre>val sortWith = tab.sortWith((e1,e2) => e1 < e2) </pre>
<h4>reduce</h4>
<p>Tient son nom de « réduction » : essaie de réduire le tableau à une valeur , cad transforme chaque couple de tableau en une valeur jusqu’aà obtenir une valeur finale </p>
<pre>tab.reduce ((e1,e2)=> e1+e2)</pre>
<p>Dans cet exemple ca revient à faire la somme des éléments du tableau </p>
<p>La liste des opérations sont dans <a href="http://www.scala-lang.org/api/2.6.0/scala/Array.html">http://www.scala-lang.org/api/2.6.0/scala/Array.html</a></p>
</div>
</div>
</div>
</article>
<hr>
<!-- Footer -->
<footer>
<div class="container">
<div class="row">
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
<ul class="list-inline text-center">
<li>
<a href="https://twitter.com/ghiles_J">
<span class="fa-stack fa-lg">
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
</span>
</a>
</li>
<li>
<a href="https://github.com/aaitsalem/">
<span class="fa-stack fa-lg">
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
</span>
</a>
</li>
</ul>
<p class="copyright text-muted">Copyright © le webeur 2017</p>
</div>
</div>
</div>
</footer>
<!-- jQuery -->
<script src="js/jquery.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="js/bootstrap.min.js"></script>
<!-- Custom Theme JavaScript -->
<script src="js/clean-blog.min.js"></script>
</body>
</html>