Skip to content

Commit 8b1eaa2

Browse files
authored
Merge pull request #193 from Dorin-David/Articolo/if-else
if else
2 parents 8a618de + f87914b commit 8b1eaa2

File tree

6 files changed

+36
-37
lines changed

6 files changed

+36
-37
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/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ alert(i); // 3; la variabile `i` è accessibile (è stata dichiarata fuori dal c
167167

168168
### Parti opzionali
169169

170-
Ogni parte del `for` è opzionale.
170+
Ogni parte del ciclo `for` è opzionale.
171171

172172
Ad esempio, possiamo omettere `begin` se non abbiamo bisogno di una variabile per la nostra `condition`.
173173

0 commit comments

Comments
 (0)