libri-javascript-python

In questa lezione svolgeremo alcuni esercizi sul ciclo for in JavaScript in modo tale da comprenderne meglio il funzionamento.

Esercizi sul ciclo for in JavaScript – primo esercizio

Esercizio: Progettate un algoritmo in JavaScript che stampi tutte le coppie di numeri naturali la cui somma è 30.

L’algoritmo deve generare e stampare una sequenza di coppie di numeri che iniziano con (30,0), seguite da (29,1), (28,2), (27,3), e così via fino a quando il primo numero raggiunge 0.

Per ottenere questo risultato, iniziamo assegnando al primo termine il valore 30 e al secondo il valore 0. Successivamente, decrementiamo il primo termine di 1 e incrementiamo il secondo. Queste operazioni vengono eseguite iterativamente finché il primo numero raggiunge 0.

Per implementare questa logica, utilizzeremo un ciclo che itera attraverso queste operazioni. Iniziamo definendo una variabile somma e assegnandole il valore iniziale di 30.

All’interno del ciclo, utilizzeremo due variabili, a e i, per rappresentare rispettivamente il primo e il secondo termine della coppia. Inizializziamo a con il valore di somma e decrementiamo a di 1 ad ogni iterazione. Utilizziamo la stessa variabile i per il secondo termine della coppia, partendo da 0 e incrementandola ad ogni iterazione fino a raggiungere 30.

Ecco dunque una possibile soluzione:

const somma = 30;
let a = somma;

for (let i = 0; i <= somma; i++){
  console.log(`(${a}, ${i})`);
  a--;
}

Il console.log del seguente programma mi stamperà tutte le coppie di numeri che danno come somma 30. Quindi (30,0), (29,1), (28,2) … (2,28), (1,29),(0,30).

Se vogliamo evitare ripetizioni ci potremmo fermare alla coppia (15, 15).

Ecco dunque una variante dell’algoritmo precedente:

let a = 30;

for (let i = 0; i <= a; i++){
  console.log(a, i);
  a--;
}

In questo caso abbiamo fatto senza della variabile somma, utilizzando la condizione i <= a.

Possiamo proporre una variante all’algoritmo precedente che utilizza il break, il quale provoca un’uscita immediata dal ciclo. Infatti se la condizione (a <= i) è vera, significa che abbiamo già stampato tutte le coppie uniche di numeri, quindi il ciclo viene interrotto utilizzando come già detto l’istruzione break.

Ecco dunque il codice di esempio:

const somma = 30;

for (let i = 0; i <= somma; i++) {
    const a = somma - i;
    if (a <= i) {
        break; // Per evitare la stampa di coppie duplicate
    }
    console.log(`(${a}, ${b})`);
}

Esercizi sul ciclo for in JavaScript – secondo esercizio

Esercizio: Inserire N coppie di numeri reali, contare quelle che generano un prodotto negativo, positivo oppure uguale a zero, ma senza eseguire l’operazione.

Innanzitutto chiediamo all’utente quante coppie di numeri vuole inserire utilizzando la funzione prompt() e convertiamo la risposta in un numero intero utilizzando parseInt(). Memorizziamo poi il risultato nella costante numCoppie. Dopo dichiariamo tre variabili prodPositivi, prodNegativi e prodNulli, inizializzate a 0. Queste variabili verranno utilizzate per contare il numero di coppie con entrambi i numeri positivi, entrambi i numeri negativi o almeno un numero nullo, rispettivamente.

Quindi utilizziamo un ciclo for per iterare attraverso il numero di coppie specificato dall’utente. Ad ogni iterazione chiediamo all’utente di inserire due numeri tramite prompt() e convertiti in numeri interi utilizzando parseInt(). Questi numeri vengono memorizzati nelle variabili a e b.

  • Viene effettuato un controllo condizionale per determinare il tipo di coppia di numeri inserita:
    • Se entrambi i numeri sono positivi oppure negativi, incrementa prodPositivi.
    • Altrimenti se almeno uno dei due numeri è nullo, incrementa prodNulli.
    • Altrimenti vuol dire che sono di segno opposto, dunque incrementa prodNegativi.

Alla fine del ciclo, vengono stampati nella console i conteggi delle diverse categorie di coppie di numeri.

Ecco dunque una possibile risoluzione dell’algoritmo:

const numCoppie = parseInt(prompt('Quante coppie di numeri vuoi inserire?'));
let prodPositivi = 0, prodNegativi = 0, prodNulli = 0;

for (let i = 0; i < numCoppie; i++) {
  const a = parseInt(prompt('Inserisci il primo numero:'));
  const b = parseInt(prompt('Inserisci il secondo numero:'));

  if ((a > 0 && b > 0) || (a < 0 && b < 0)) {
    prodPositivi++;
  } else if (a == 0 || b == 0) {
    prodNulli++;
  } else {
    prodNegativi++;
  }
}

console.log('Numero di coppie con entrambi i numeri positivi:', prodPositivi);
console.log('Numero di coppie con entrambi i numeri negativi:', prodNegativi);
console.log('Numero di coppie con almeno uno zero:', prodNulli);

Conclusione

In questa lezione abbiamo affrontato dei semplici esercizi sul ciclo for in JavaScript, nelle prossime lezioni vedremo altri esempi.

Alcuni link utili

Indice tutorial JavaScript

Istruzione condizionale if else

Esercizi sulle istruzioni condizionali

Come utilizzare il console log in JavaScript

JavaScript substring