Stampare un rombo di asterischi in JavaScript

La programmazione offre strumenti potenti per visualizzare modelli e strutture, giocando con semplici concetti come loop e condizioni. In questo tutorial, esploreremo come utilizzare JavaScript per disegnare un rombo composto da asterischi, un esercizio eccellente per affinare la comprensione dei loop e del controllo del flusso in programmazione.

Introduzione al problema

Il rombo di asterischi è una figura geometrica simmetrica che possiamo costruire utilizzando righe di caratteri. Il nostro obiettivo è creare un programma in JavaScript che stampi un rombo, dato un numero intero n che rappresenta il numero di asterischi nella riga più lunga del rombo. Ecco un esempio di come dovrebbe apparire un rombo per n = 5:
    *
   ***
  *****
 *******
*********
 *******
  *****
   ***
    *

Comprendere la struttura del rombo

Prima di iniziare a scrivere il codice, è importante comprendere la struttura del rombo. Possiamo suddividere il rombo in due parti:

  • Parte superiore (inclusa la riga centrale): In questa sezione, il numero di asterischi aumenta da 1 fino a n.
  • Parte inferiore: In questa sezione, il numero di asterischi diminuisce da n fino a 1.

Ogni riga ha un certo numero di spazi prima degli asterischi per mantenere la simmetria. Il numero di spazi diminuisce man mano che ci spostiamo verso il centro del rombo e aumenta quando ci allontaniamo dal centro.

Iniziamo scrivendo il codice per stampare il rombo. Utilizzeremo due loop principali: uno per la parte superiore e uno per la parte inferiore.

Passo 1: Stampare la parte superiore del rombo

Iniziamo con la parte superiore del rombo, incluso il centro.

		// Parte superiore del rombo
		for (let i = 1; i <= n; i++) {
				// Stampa gli spazi
				for (let j = 0; j < n - i; j++) {
					output += " ";
				}
				// Stampa gli asterischi
				for (let k = 0; k < 2 * i - 1; k++) {
					output += "*";
				}
				output += "\n";
		}

Nel codice sopra, il primo ciclo for itera sulle righe. I due loop interni servono per stampare prima gli spazi e poi gli asterischi. 

Nota: Da notare che il numero di asterischi in ogni riga è dispari, seguendo la formula 2 * i - 1.

Passo 2: Stampare la parte inferiore del rombo

Dopo aver stampato la parte superiore, procediamo con la parte inferiore.

		// Parte inferiore del rombo
		for (let i = n - 1; i >= 1; i--) {
				// Stampa gli spazi
				for (let j = 0; j < n - i; j++) {
					output += " ";
				}
				// Stampa gli asterischi
				for (let k = 0; k < 2 * i - 1; k++) {
					output += "*";
				}
				output += "\n";
		}

La parte inferiore è quasi un riflesso della parte superiore, con la differenza che il loop itera in direzione opposta.

Passo 3: Completare la funzione e stampare il risultato

A questo punto non resta che unire i due codice e stampare l’output:

function stampaRombo(n) {
	let output = "";

	// Parte superiore del rombo
	for (let i = 1; i <= n; i++) {
		// Stampa gli spazi
		for (let j = 0; j < n - i; j++) {
			output += " ";
		}
		// Stampa gli asterischi
		for (let k = 0; k < 2 * i - 1; k++) {
			output += "*";
		}
		output += "\n";
	}
	// Parte inferiore del rombo
	for (let i = n - 1; i >= 1; i--) {
			// Stampa gli spazi
			for (let j = 0; j < n - i; j++) {
				output += " ";
			}
			// Stampa gli asterischi
			for (let k = 0; k < 2 * i - 1; k++) {
				output += "*";
			}
			output += "\n";
		}
		console.log(output);
}

stampaRombo(3);

Creare un rombo di asterischi in JavaScript è un ottimo esercizio per comprendere il funzionamento dei loop e della manipolazione delle stringhe. Attraverso questo esercizio, abbiamo esplorato come controllare il flusso del programma e come utilizzare loop annidati per creare modelli complessi.