Skip to content

Commit d2f312b

Browse files
committed
2 parents 1ab0699 + 8b1eaa2 commit d2f312b

File tree

34 files changed

+316
-319
lines changed

34 files changed

+316
-319
lines changed

1-js/02-first-steps/10-ifelse/1-if-zero-string/solution.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
**Certo.**
22

3-
Qualunque stringa ad eccezione di quella vuota (`"0"` non è vuota) diventa `true` in un contesto logico.
3+
Qualunque stringa -ad eccezione di quella vuota (`"0"` non lo è)- diventa `true` in contesto booleano.
44

55
Possiamo eseguirlo e controllare:
66

1-js/02-first-steps/10-ifelse/2-check-standard/task.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ importance: 2
44

55
# Il nome di JavaScript
66

7-
Usando il costrutto `if..else`, scrivi il codice che chiede: 'What is the "official" name of JavaScript?'
7+
Usando il costrutto `if..else`, scrivi un codice che chieda: 'What is the "official" name of JavaScript?'
88

99
Se l'utente digita "ECMAScript", ritorna "Right!", altrimenti-- ritorna: "Didn't know? ECMAScript!"
1010

1-js/02-first-steps/10-ifelse/3-sign/task.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ importance: 2
44

55
# Mostra il segno
66

7-
Utilizzando `if..else`, scrivi il codice che preleva un numero tramite `prompt` e lo mostra con un `alert`:
7+
Utilizzando `if..else`, scrivi un codice che preleva un numero tramite `prompt` e lo mostra con un `alert`:
88

99
- `1`, se il valore è maggiore di zero,
1010
- `-1`, se è minore di zero,
1111
- `0`, se è uguale a zero.
1212

13-
In questo esercizio assumiamo che l'input sia sempre un numero.
13+
In questo esercizio supporremo che l'input sia sempre un numero.
1414

1515
[demo src="if_sign"]

1-js/02-first-steps/10-ifelse/5-rewrite-if-question/task.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ importance: 5
44

55
# Riscrivi 'if' con '?'
66

7-
Riscrivi questo `if` utilizzando l'operatore ternario `'?'`:
7+
Riscrivi il seguente `if` utilizzando l'operatore ternario `'?'`:
88

99
```js
1010
let result;

1-js/02-first-steps/10-ifelse/article.md

Lines changed: 30 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
Qualche volta abbiamo bisogno di eseguire certe azioni solo nel caso valgano determinate condizioni.
44

5-
Per questo c'è l'istruzione `if` e anche l'operatore condizionale di valutazione a cui noi ci riferiremo con l'operatore "punto di domanda" `?` per semplicità.
5+
Per questo c'è l'istruzione `if` e l'operatore condizionale di valutazione a cui ci riferiremo, per semplicità, con "l'operatore punto di domanda" `?`.
66

77
## L'istruzione "if"
88

9-
L'istruzione `if(...)` richiede una condizione, la valuta, e se il risultato è `true`, esegue il codice.
9+
L'istruzione `if(...)` valuta una condizione (racchiusa nelle parentesi); se il risultato è `true`, esegue il codice che segue `if`.
1010

1111
Ad esempio:
1212

@@ -20,7 +20,7 @@ if (year == 2015) alert( 'You are right!' );
2020

2121
Nell'esempio sopra, la condizione è un semplice controllo di uguaglianza: `year == 2015`, ma potrebbe essere qualcosa di molto più complesso.
2222

23-
Se dobbiamo eseguire più di un'istruzione, queste vanno raggruppate tramite le parentesi graffe:
23+
Se dobbiamo eseguire più di un'istruzione, queste vanno raggruppate tramite parentesi graffe:
2424

2525
```js
2626
if (year == 2015) {
@@ -29,34 +29,34 @@ if (year == 2015) {
2929
}
3030
```
3131

32-
E' consigliabile raggruppare sempre il codice all'interno delle parentesi graffe `{}` quando si usa un `if`, anche se contiene una sola istruzione. La leggibilità viene migliorata.
32+
E' consigliabile raggruppare sempre il codice all'interno delle parentesi graffe `{}`, quando si usa un `if`, anche se contiene una sola istruzione. La leggibilità ne guadagna.
3333

3434
## Conversione booleana
3535

36-
L'istruzione `if (…)` valuta la condizione tra le parentesi e la converte al tipo booleano.
36+
L'istruzione `if (…)` valuta la condizione tra le parentesi e converte il risultato al tipo booleano.
3737

3838
Ricordiamo le regole di conversione viste nel capitolo <info:type-conversions>:
3939

4040
- Il numero `0`, una stringa vuota `""`, `null`, `undefined` e `NaN` diventano `false`. Per questo vengono chiamati valori "falsi".
4141
- Gli altri valori diventano `true`, quindi vengono chiamati "veri".
4242

43-
Quindi, il codice nell'esempio qui sotto, non verrà mai eseguito:
43+
Quindi, il codice nell'esempio sotto, non verrà mai eseguito:
4444

4545
```js
4646
if (0) { // 0 è falso
4747
...
4848
}
4949
```
5050

51-
...Invece nel prossimo esempio -- verrà eseguito sempre:
51+
...Nel seguente esempio, invece, verrà sempre eseguito:
5252

5353
```js
5454
if (1) { // 1 è vero
5555
...
5656
}
5757
```
5858

59-
Possiamo anche passare un valore già valutato in precedenza su un `if`, come qui:
59+
Possiamo anche passare un valore già valutato in precedenza, come qui:
6060

6161
```js
6262
let cond = (year == 2015); // l'uguaglianza diventa vera o falsa
@@ -99,13 +99,13 @@ if (year < 2015) {
9999
}
100100
```
101101

102-
Nel codice sopra JavaScript controlla prima `year < 2015`. Se risulta falso allora va alla successiva condizione `year > 2015`, altrimenti mostra il blocco else con l'`alert`.
102+
Nel codice sopra JavaScript controlla anzitutto la prima condizione, `year < 2015`. Se risulta falsa va alla successiva condizione `year > 2015` ed esegue il codice dentro le parentesi graffe, altrimenti esegue il codice dentro al blocco `else`.
103103

104104
Ci possono essere molti blocchi `else if`. L'`else` finale è opzionale.
105105

106106
## Operatore condizionale '?'
107107

108-
Qualche volta abbiamo bisogno di assegnare un valore ad una variabile in base ad una condizione.
108+
Qualche volta abbiamo bisogno di assegnare un valore ad una variabile in base ad una certa condizione.
109109

110110
Ad esempio:
111111

@@ -124,45 +124,45 @@ if (age > 18) {
124124
alert(accessAllowed);
125125
```
126126

127-
Esiste un'operatore "condizionale" o "punto interrogativo" che ci consente di farlo in maniera più breve e semplice.
127+
Esiste un operatore "condizionale", o "punto interrogativo", che ci consente di farlo in maniera più breve e semplice.
128128

129-
L'operatore viene rappresentato dal punto interrogativo `?`. Il termine formale è "ternario", il che significa che richiede tre operatori. E' l'unico operatore in JavaScript di questo tipo.
129+
L'operatore viene rappresentato dal punto interrogativo `?`. Il termine formale è "ternario", perché richiede tre operatori. E' l'unico operatore in JavaScript che ne accetta così tanti.
130130

131131
La sintassi è:
132132
```js
133133
let result = condition ? value1 : value2;
134134
```
135135

136-
La `condition` viene valutata, se risulta viene ritornato il `value1`, altrimenti viene ritornato il -- `value2`.
136+
La `condition` viene valutata; se risulta vera, viene ritornato `value1`, altrimenti viene ritornato `value2`.
137137

138138
Ad esempio:
139139

140140
```js
141141
let accessAllowed = (age > 18) ? true : false;
142142
```
143143

144-
Tecnicamente, potremmo omettere le parentesi su `age > 18`. L'operatore condizionale ha una precedenza molto bassa. Viene eseguito dopo gli operatori di confronto `>`.
144+
Tecnicamente, potremmo omettere le parentesi attorno ad `age > 18`. L'operatore condizionale ha una precedenza molto bassa, viene eseguito dopo gli operatori di confronto `>`.
145145

146-
Questo esempio porta allo stesso risultato di quello precedente:
146+
Il risultato dell'esempio sotto è uguale a quello precedente:
147147

148148
```js
149149
// l'operatore di confronto "age > 18" viene eseguito per primo
150150
// (non c'è bisogno di racchiuderlo tra parentesi)
151151
let accessAllowed = age > 18 ? true : false;
152152
```
153153

154-
Le parentesi rendono però il codice più leggibile, quindi è consigliabile utilizzarle.
154+
Ma le parentesi rendono il codice più leggibile, quindi è consigliabile utilizzarle.
155155

156156
````smart
157-
Nell'esempio sopra sarebbe possibile evitare l'operatore ternario, perchè l'operatore di confronto ritorna già di suo `true/false`:
157+
Nell'esempio sopra sarebbe possibile omettere anche l'operatore ternario, perchè l'operatore di confronto `>` ritorna già di suo `true/false`:
158158
159159
```js
160-
// the same
160+
// stesso risultato (risulterà in `true` o `false`, a seconda del valore di `age`)
161161
let accessAllowed = age > 18;
162162
```
163163
````
164164

165-
## Operatori '?' multipli
165+
## Multipli operatori '?'
166166

167167
Una sequenza di operatori `?` consente di ritornare un valore che dipende da più condizioni.
168168

@@ -178,14 +178,14 @@ let message = (age < 3) ? 'Hi, baby!' :
178178
alert( message );
179179
```
180180

181-
Potrebbe essere difficile inizialmente capirne la logica. Ma dopo averlo guardato da più vicino ci accorgiamo è una semplice sequenza di condizioni.
181+
Potrebbe essere difficile, inizialmente, capirne la logica. Ma dopo averlo guardato da più vicino ci accorgeremo che è una semplice sequenza di condizioni.
182182

183183
1. Il primo operatore "?" controlla `age < 3`.
184-
2. Se è vero -- ritorna `'Hi, baby!'`, altrimenti -- segue la colonna `":"` e controlla `age < 18`.
185-
3. Se questo è vero -- ritorna `'Hello!'`, altrimenti -- segue la colonna `":"` e controlla `age < 100`.
186-
4. Se questo è vero -- ritorna `'Greetings!'`, altrimenti -- segue la colonna `":"` e ritorna `'What an unusual age!'`.
184+
2. Se è vero -- ritorna `'Hi, baby!'`, altrimenti -- segue la colonna `":"`, controlla `age < 18`.
185+
3. Se questo è vero -- ritorna `'Hello!'`, altrimenti -- segue la colonna `":"`, controlla `age < 100`.
186+
4. Se questo è vero -- ritorna `'Greetings!'`, altrimenti -- segue la colonna `":"`, ritorna `'What an unusual age!'`.
187187

188-
La stessa logica viene usata con `if..else`:
188+
La stessa logica riscritta utilizzando `if..else`:
189189

190190
```js
191191
if (age < 3) {
@@ -212,16 +212,15 @@ let company = prompt('Which company created JavaScript?', '');
212212
*/!*
213213
```
214214

215-
In base al risultato della condizione `company == 'Netscape'`, viene eseguita la prima o la seconda parte, e mostra il giusto alert.
215+
In base alla valutazione della condizione `company == 'Netscape'`, viene eseguita la prima o la seconda parte (e il rispettivo `alert`).
216216

217-
Qui non assegnamo il risultato ad una variabile. L'idea è di eseguire codice differente in base alla condizione.
217+
Qui non assegniamo il risultato ad una variabile. L'idea è di eseguire un codice differente a seconda della condizione.
218218

219219
**Non è consigliabile utilizzare l'operatore ternario in questo modo.**
220220

221-
La notazione risulta essere molto più breve rispetto all'istruzione `if`, questo viene sfruttato da molti programmatori. Ma risulta meno leggibile.
222-
223-
Lo stesso codice realizzato con un istruzione `if`:
221+
La notazione risulta essere molto più breve rispetto all'istruzione `if`; questo viene sfruttato da molti programmatori, ma risulta meno leggibile.
224222

223+
Compariamo il codice sopra con una versione che utilizza `if` invece dell'operatore ternario `?`:
225224
```js run no-beautify
226225
let company = prompt('Which company created JavaScript?', '');
227226

@@ -234,6 +233,6 @@ if (company == 'Netscape') {
234233
*/!*
235234
```
236235

237-
I nostri occhi scannerizzano il codice verticalmente. Quindi i costrutti che si estendono per qualche riga risultano più semplici da capire piuttosto di un'unica istruzione che si estende orrizontalmente.
236+
I nostri occhi esaminano il codice verticalmente. I costrutti che si estendono per qualche riga risultano più semplici da capire piuttosto di un'unica istruzione che si estende orrizontalmente.
238237

239-
L'idea dell'operatore ternario `?` è di ritornare un valore piuttosto che un altro, in base al valore di una condizione. Va quindi utilizzato solo per questo tipo di situazioni. Invece per eseguire diversi codice è consigliabile utilizzare il costrutto `if`.
238+
L'idea dell'operatore ternario `?` è di ritornare, in base a una condizione, un valore piuttosto di un altro. Va quindi utilizzato solo in questo tipo di situazioni. Per eseguire diversi codici è consigliabile utilizzare il costrutto `if`.

1-js/02-first-steps/13-while-for/1-loop-last-value/solution.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
La risposta: `1`.
1+
La risposta è: `1`.
22

33
```js run
44
let i = 3;
@@ -15,11 +15,11 @@ Quindi, gli step del ciclo sono ("loop unrolled"):
1515
```js
1616
let i = 3;
1717

18-
alert(i--); // shows 3, decreases i to 2
18+
alert(i--); //mostra 3, decrementa i a 2
1919

20-
alert(i--) // shows 2, decreases i to 1
20+
alert(i--) // mostra 2, decrementa i a 1
2121

22-
alert(i--) // shows 1, decreases i to 0
22+
alert(i--) // mostra 1, decrementa i a 0
2323

24-
// done, while(i) check stops the loop
24+
// finito, `i` è ora 0, che convertito a booleano è falso
2525
```

1-js/02-first-steps/13-while-for/1-loop-last-value/task.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ importance: 3
44

55
# Valore all'ultimo ciclo
66

7-
Qualè l'ultimo valore stampato da alert in questo codice? Perchè?
7+
Qual è l'ultimo valore mostrato da *alert* in questo codice? Perché?
88

99
```js
1010
let i = 3;

1-js/02-first-steps/13-while-for/2-which-value-while/solution.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ L'esercizio dimostrava come le forme prefissa/postfissa possono portare a risult
99

1010
Il primo valore è `i = 1`, perchè `++i` incrementa prima `i` e poi ritorna il nuovo valore. Quindi il primo confronto è `1 < 5` e `alert` mostra `1`.
1111

12-
Poi seguono `2, 3, 4…` -- i valori vengono mostrati uno dopo l'altro. Il confroto utilizza sempre il valose incrementato, perchè `++` è posto prima della variabile.
12+
Poi seguono `2, 3, 4…` -- i valori vengono mostrati uno dopo l'altro. Il confronto utilizza sempre il valore incrementato, perchè `++` è posto prima della variabile.
1313
14-
Ultima iterazione, `i = 4` viene incrementato a `5`, il confronto `while(5 < 5)` fallisce, e il ciclo termina. Quindi `5` non viene mostrato.
14+
Ultima iterazione, `i = 4` viene incrementato a `5`, il confronto `while(5 < 5)` risulta `false`, e il ciclo termina. `5` non viene mostrato.
1515
1616
2. **Da 1 a 5**
1717
@@ -22,10 +22,10 @@ L'esercizio dimostrava come le forme prefissa/postfissa possono portare a risult
2222
2323
Il primo valore è ancora `i = 1`. La forma postfissa `i++` incrementa `i` e ritorna il *vecchio* valore, quindi il confronto `i++ < 5` utilizza `i = 0` (a differenza di `++i < 5`).
2424
25-
La chiamata ad `alert` è separata. E' un istruzione che viene eseguita dopo l'incremento e il confronto. Quindi avra il valore `i = 1`.
25+
La chiamata ad `alert` è separata. E' un istruzione che viene eseguita dopo l'incremento di `i` e il controllo della condizione. Quindi `i = 1`.
2626
2727
Seguono `2, 3, 4…`
2828
29-
Fermiamoci a `i = 4`. La forma prefissa `++i` incrementerebbe ed utilizzerebbe `5` nel confronto. Qui però stiamo usando la forma postfissa `i++`. Quindi incrementa `i`a `5`, ma ritorna il vecchio valore. Il confronto è `while(4 < 5)` -- vero, il controllo passa alla chiamata `alert`.
29+
Fermiamoci a `i = 4`. La forma prefissa `++i` incrementerebbe ed utilizzerebbe `5` nel controllo della condizione `i < 5`. Qui però stiamo usando la forma postfissa `i++`. Quindi incrementa `i`a `5`, ma ritorna il vecchio valore. Il confronto è dunque `while(4 < 5)` -- vero; il controllo passa alla chiamata `alert`.
3030
31-
Il valore `i = 5` è l'ultimo, perchè nello step successivo avremmo `while(5 < 5)` che è falso.
31+
Il valore `i = 5` è l'ultimo, perchè nell'iterazione successiva avremmo `while(5 < 5)` e la condizione sarebbe falsa.

1-js/02-first-steps/13-while-for/2-which-value-while/task.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ importance: 4
22

33
---
44

5-
# Quali valori mostra il ciclo while?
5+
# Quali valori mostrerà il ciclo while?
66

7-
Per ogni iterazione del ciclo, scrivi quali valori vengono mostrati e poi confrontali alla soluzione.
7+
Per ogni iterazione del ciclo, scrivi quali valori verranno mostrati e poi confrontali con la soluzione.
88

9-
Entrambi i cicli mostrano gli stessi valori in `alert`, o no?
9+
Entrambi i cicli mostreranno gli stessi valori in `alert`, o no?
1010

1111
1. La forma prefissa `++i`:
1212

1-js/02-first-steps/13-while-for/3-which-value-for/solution.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ for (let i = 0; i < 5; ++i) alert( i );
66
for (let i = 0; i < 5; i++) alert( i );
77
```
88

9-
Questo può eserre facilmete dedotto dall'algoritmo `for`:
9+
Questo può essere facilmente dedotto dall'algoritmo `for`:
1010

11-
1. Esegue un asola volta `i = 0` come prima cosa (begin)
11+
1. Esegue come prima cosa `i = 0` (una sola volta)
1212
2. Verifica la condizione `i < 5`
13-
3. Se è `true` -- esegue il corpo del ciclo `alert(i)`, successivamente `i++`
13+
3. Se è `true` -- esegue il corpo del ciclo, dove si trova `alert(i)`, poi incrementa `i` di 1
1414

15-
L'incremento `i++` è separato dal controllo della condizione(2). E' un istruzione differente.
15+
L'incremento `i++` è separato dal controllo della condizione(2). E' un'istruzione differente.
1616

1717
Il valore ritornato non viene utilizzato, quindi non c'è differenza tra `i++` e `++i`.

0 commit comments

Comments
 (0)