0101010101 0101010101 0101010101 0101010101 0101010101 0101010101 0101010101 0101010101 0101010101 0101010101 |
Soluzione:
Utilizzando il blocco note (NOTEPAD.EXE) scriviamo il seguente file di testo.
<? for ($i=1;$i<=5; $i++) { printf("%s","0101010101\n"); printf("%s","1010101010\n"); } ?> |
Vi ricordo di salvarlo in c:\php selezionando in corrispondenza della voce "Salva come" l'opzione: "Tutti i file". Inoltre fornite come estensione del vostro documento la sigla ".PHP"
Per eseguire il vostro programma basta richiamare una finestra Dos. Per richiamarla usare il menu Esegui e digitare il comando Command (Cmd in WinNT).
Nella finestra DOS digitate CD C:\PHP<invio> ed in seguito php -q <Nome esercizio.php> per eseguirlo (vedi figura).
Se tutto č impostato correttamente a video vedete la sequenza di 0 ed 1.
CONSIDERAZIONI
L'esercizio proposto ha un numero di righe e colonne ben
definito: 10x10. Questo semplifica la soluzione poichč ci basta stampare per 5
volte le sequenza di stringhe "0101010101" e "1010101010"
per ottenere la nostra tabella.
Supponiamo invece che il numero di 0 ed 1 dipenda da due
variabili: $N (numero
di colonne), $M (numero di righe) entrambe inizializzate in cima al programma.
La soluzione per il nostro esercizio potrebbe diventare:
<? $M=10; $N=10; for ($i=1;$i<=$N; $i++) { for ($j=1;$j<=$M; $j++) { if ( ($i+$j) % 2==0 ) printf("%s","0"); else printf("%s","1"); } printf("\n"); } ?> |
Si noto come gli zeri si presentino sempre in corrispondenza di colonne e righe con indice contemporaneamente pari oppure contemporaneamente dispari. Ricordando che la somma di 2 numeri pari o di due numeri dispari da sempre un numero pari segue la condizione per stampare il carattere 0:
($i+$j) % 2==0
dove % č l'operatore resto nella divisione intera.
Posso fare un ulteriore considerazione: il valore visualizzato in corrispondenza della colonna $i e della riga $j č uguale al resto della divisione intera per 2 della somma dei 2 indici. Questa particolaritą introduce una ulteriore semplifica al nostro programma:
<? $M=10; $N=10; for ($i=1;$i<=$N; $i++) { for ($j=1;$j<=$M; $j++) printf("%s",($i+$j) % 2); printf("\n"); } ?> |
Attenzione: quando si sviluppa un programma analizzate tutte le sue particolaritą: questo potrebbe semplificare di molto la vostra soluzione.