Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf ·...

47
ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA Laboratorio - Programmazione Angelo Di Iorio [email protected]

Transcript of Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf ·...

Page 1: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Laboratorio - Programmazione

Angelo Di Iorio

[email protected]

Page 2: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Progetto

■ L’obiettivo del progetto è realizzare un’applicazione PHP da linea di comando che raccoglie dati sui terremoti avvenuti in Italia dal sito di INGV e mostra a video alcune informazioni e statistiche su questi terremoti

■ Maggiori dettagli nelle prossime lezioni ma intanto una domanda: di cosa abbiamo bisogno?

Page 3: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Di cosa abbiamo bisogno?

■  Interprete PHP

■ Editor di testi (programmi)

■ Protocollo per raccogliere dati da INGV

Page 4: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

CodeLite

■  Va bene QUALUNQUE editor di testi ■ Ne prendiamo uno open-source: https://codelite.org/

Page 5: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

PHP

■ PHP è un linguaggio di scripting server-side progettato per il Web ma general-purpose ■ Noi lo usiamo per programmi command-line ■ http://php.net/

Page 6: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

In pratica

■  Installiamo PHP e CodeLite (o usate il vostro editor preferito)

■ Scriviamo il nostro primo programma helloworld.php

Page 7: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Hello World

<?php

echo “Hello World!”;

?>

Page 8: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Laboratorio di Programmazione (in PHP)

Page 9: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Algoritmo e Programma

■ Un algoritmo è una sequenza di istruzioni che risolve un dato problema ■ Un programma è un algoritmo espresso in un linguaggio

di programmazione ■  La programmazione è un processo creativo diviso in due fasi: ■ problem solving: individuare un algoritmo che risolve un

dato problema ■  implementazione: tradurre l’algoritmo in un programma

Page 10: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

PHP

PHP

■  PHP (acronimo ricorsivo per “PHP: Hypertext Preprocessor”, o “Personal Home Page”) è un linguaggio di scripting general-purpose open-source molto utilizzato, specialmente indicato per lo sviluppo Web. ■  PHP può essere usato su tutti i principali sistemi operativi, inclusi Linux, molte varianti di Unix (compresi HP-UX, Solaris e OpenBSD), Microsoft Windows, MacOS X ed è supportato dalla maggior parte dei web server esistenti.

Page 11: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Nicola Gessa

Installazione e uso

PHP può essere utilizzato in tre ambiti differenti:

■  Server-side scripting: in questo caso si può adottare un modulo per l’estensione del web server (es. file .dll) e usare PHP per creare pagine Web

■  Command line scripting: si installa e utilizza un interprete PHP per l’eseguzione da linea di comando.

■  Applicazioni GUI. Consente di creare e gestire finestre e oggetti grafici utilizzando estensioni.

Page 12: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Struttura di base, commenti e separatori

u Un programma PHP inizia con i <?php e termina con ?> u Esistono sintassi più compatte e PHP può essere mescolato ad

HTML ma noi non guardiamo questi aspetti

u Le istruzioni devono venire terminate da un simbolo ; u L’interprete esegue sequenzialmente le istruzioni (a meno di

istruzioni di controllo o invocazioni di funzioni) u PHP supporta i commenti in style C e C++

<?php

/***

Il mio primo script PHP

***/

echo “Hello World!”; // stampa

?>

Page 13: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Variabili

■ Gli identificatori o variabili sono nomi simbolici creati dal programmatore ed associati ad un valore ■ Gli identificatori in PHP iniziano con il simbolo $ ■  Le operazioni di assegnamento associano un valore ad

una variabile ■ Operatore di assegnamento: = ■  Alcune parole chiave o comandi NON si possono usare

come nomi di variabili

Page 14: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Esercizio

■  Scrivere un programma PHP che inizializza una variabile $n con un numero (decidete voi quale) e creare le seguenti variabili: ■ $n_3 contiene il triplo del valore di $n ■ $n_quadro contiene il quadrato di $n ■ $pippo contiene il doppio del valore di $n ■ $_resto2 contiene il resto della divisione di $n per 2

■ Nello stesso programma stampare , i valori di tutte le variabili (uno per linea)

Page 15: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Tipi in PHP

■  Il tipo di una variabile di solito non viene impostato dal programmatore ma deciso a runtime da PHP in base al contesto nel quale la variabile è utilizzata. ■  Per controllare quale sia il tipo e i valori di una certa variabile si usa la funzione var_dump(). ■  PHP supporta 8 tipi primitivi: ■  boolean: true o false ■  integer: <numero intero> ■  float: <numero con la virgola> ■  string: <sequenza di caratteri> ■  array: <valori multipli> ■  object, resource e NULL

Page 16: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Stringhe in PHP (1)

■  Le stringhe in PHP non pongono limiti nella lunghezza.

■  Si possono definire usando le doppie virgolette. In questo caso PHP interpreta le variabili e i caratteri di escape contenuti nella stringa. echo “stampo la variabile \$var: $var”; ■  Due stringhe speciali (e molto usate): ■ \t : tabulatore ■ \n : newline (va a capo)

Page 17: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Stringhe in PHP (2)

■  Alcuni operatori di stringa: ■  l’operatore . Concatena due stringhe ■  l’operatore .= concatena ad una variabile la stringa a

destra dell’uguale ■  Il confronto tra stringhe si esegue usando gli operatori ==, !=, >, <, >=, =<

Page 18: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Esercizio

■  Scrivere un programma che memorizza tre numeri interi (decidete voi i valori) in altrettante variabili e stampa a video una tabella con la differenza dei numeri a due a due ■  Esempio: se i numeri sono 2, 7, 3 deve stampare

2 7 3 2 0 5 1 7  5 0 4 3 1 -4 0

Page 19: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Aree

■  Scrivere un programma che memorizza un numero intero in una variabile $n e stampa a video i seguenti messaggi: L’area di un quadrato di lato <n> è <area>

L’area di un cerchio di raggio <n> è <area>

■  Ad esempio, se $n è inizializzato a 4 stampa: L’area di un quadrato di lato 4 è 16

L’area di un cerchio di raggio 4 è 50.24

Page 20: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Array in PHP (1)

■  PHP fornisce array associativi per memorizzare coppie chiave-valore.

■  La chiave può essere sia un intero che una stringa. ■  Un array può essere creato usando il costrutto array: $arr = array("foo" => "bar", 12 => true); echo $arr["foo"]; // bar echo $arr[12]; // 1

Page 21: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Array in PHP (2)

■  Un elemento di un array può essere di uno qualunque dei tipi PHP ■  E’ possibile quindi creare matrici (array di array)

$arr = array("somearray" => array(6 => 5, 13 => 9, "a" => 42));

echo $arr["somearray"][6]; // 5

echo $arr["somearray"][13]; // 9

echo $arr["somearray"]["a"]; // 42

Page 22: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Esercizio

■  Scrivere un programma PHP che memorizza in una variabile la seguente matrice di interi e la stampa a video in due modi diversi (ordine righe invertito)

2 7 3 2 0 -5 -1 7  5 0 4 3 1 -4 0

3 1 -4 0 7 5 0 4 2 0 -5 -1 2 7 3

Page 23: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Comandi condizionali

■ I comandi condizionali permettono di effettuare una scelta tra diversi comandi (o blocchi di comandi) alternativi da eseguire ■ la scelta viene fatta calcolando il valore di una espressione booleana, detta condizione

■  Costrutto if.. else (e if.. elseif.. else): if ($a > $b) {echo "a è maggiore di b";} else {echo "a non è maggiore di b";}

Page 24: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Esercizi

A. Scrivere un programma PHP che assegna un valore intero ad una variable e stampa a video un messaggio per dire se il numero è pari o dispari

B. Scrivere un programma PHP che inizializza due variabili con due valori interi e stampa a video un messaggio per dire se il primo numero è un multiplo del secondo

Page 25: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Esercizio

■  Scrivere un programma che memorizza tre numeri interi in altrettante variabili e un simbolo a scelta tra ‘/’ e ‘-’ e stampa a video una tabella con il rapporto o la differenza (in base al simbolo scelto) dei numeri a due a due ■  Esempio: se i numeri sono 2, 7, 3 e il simbolo ‘-’ deve

stampare 2 7 3

2 0 -5 -1 7  5 0 4 3 1 -4 0

Page 26: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Esercizi

A. Scrivere un programma che memorizza tre numeri interi in altrettante variabili e stampa 1 se uno dei tre è divisore degli altri due, 0 altrimenti

B. Scrivere un programma che memorizza tre numeri interi in altrettante variabili e li stampa in maniera ordinata

Page 27: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Operatori logici

Page 28: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Esercizi

A. Scrivere un programma che memorizza tre numeri interi in altrettante variabili e stampa “Tutti dispari o tutti pari” se sono tutti numeri pari o tutti numeri dispari, oppure “Almeno uno diverso” in caso contrario

B. Scrivere un programma che memorizza tre numeri interi in altrettante variabili e stampa “Multipli di 3 senza duplicati” se sono tutti multipli di 3 e tutti diversi tra loro

Page 29: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Comandi iterativi e cicli ‘while’

■  Un problema molto usuale negli algoritmi/programmi è la ripetizione della stessa operazione (o blocchi di operazioni) tante volte ■  Costrutto while (o do..while) permette di ripetere l’esecuzione di un blocco di comandi (detto corpo del ciclo) ■  La scelta viene fatta valutando un’ espressione booleana, chiamata guardia del ciclo $i = 1;

while ($i <= 10) { echo “ciao!\n”;

$i= $i + 1; }

Page 30: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Esecuzioni e controllo cicli while

Page 31: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Esercizi

A. Scrivere un programma PHP che stampa i primi 50 numeri interi separati da uno spazio e in ordine crescente

B. Scrivere un programma PHP che stampa i primi 50 numeri

interi separati da uno spazio ma in ordine decrescente

Page 32: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Esercizi

■  Scrivere un programma PHP che stampa i primi 50 numeri interi separati da un tabulatore, in ordine crescente e divisi su più righe, con 5 numeri per riga

Page 33: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Esercizi

■  Scrivere un programma PHP che stampa i primi 50 numeri interi separati da un tabulatore, in ordine crescente e divisi su più righe, con 5 numeri per riga. ■ Modificare il codice precedente per ottenere il seguente

risultato

Page 34: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Esercizio

A. Scrivere un programma PHP che calcola la somma dei primi $n numeri interi positivi ■  $n è memorizzato in una variabile inizializzata con un

valore arbitrario

Page 35: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Esercizio

A. Scrivere un programma PHP che calcola il fattoriale di un numero intero positivo $n ■  $n è memorizzato in una variabile inizializzata con un

valore arbitrario

Page 36: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Cicli ‘for’

■  Anche il costrutto for permette di ripetere (blocchi di) istruzioni ■  Sintassi e semantica diversi dal comando while: for ($i = 1; $i <= 10; $i++)

{

echo $i.” “;

}

Inizializzazione (prima del ciclo)

Guardia (ad ogni iterazione)

Incremento contatore (fine del blocco)

Page 37: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Cicli ‘for’ e ‘while’

for ($i = 1; $i <= 10; $i++)

{

echo $i.” “;

}

$i = 1;

while ($i <= 10)

{

echo $i.” “;

$i++;

}

Page 38: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Esercizio

A. Scrivere un programma PHP che calcola la somma dei primi $n numeri interi positivi ■  $n è memorizzato in una variabile inizializzata con un

valore arbitrario ■  Utilizzare il costrutto for e non while

Page 39: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Array in PHP■  Gli array (o vettori) sono usati per memorizzare collezioni di dati dello stesso tipo ■  I dati appartenenti all’array sono detti elementi e sono individuabili tramite una chiave ■  PHP fornisce array associativi per memorizzare coppie chiave-valore. ■  La chiave quindi può essere sia un intero che una stringa.

■  Per semplicità noi usiamo solo valori interi (indici) come chiavi ■  Esistono molte funzioni built-in in PHP per elaborare array. Non ne parliamo ma sono qui: http://php.net/manual/it/ref.array.php

Page 40: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Sintassi ■  Inizializzare vettori di interi: $interi = array(1, 4, 5, 33, 102, 82, 83); $dati = [21, 42, 3, 18, 22];

■  Accesso attraverso chiave numerica (indice): echo $interi[0]; // stampa 1 echo $interi[2]; // stampa 5 echo $dati[3]; // stampa 18 echo $dati[4]; // stampa 22 echo $interi[5]; // cosa stampa? echo $interi[8]; // cosa stampa?

■ Attenzione: il primo elemento ha indice 0 ! ■  Per conoscere le dimensioni di un vettore si possono

usare le funzioni count($a) o sizeof($a)

Page 41: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Esempio

■  Programma PHP che stampa tutti i valori contenuti in un vettore di interi (variabile $dati) separati da un tabulatore

$dati = [13, 5, 25, 6, -3, 19, 982, 13200];

for ($i = 0; $i < count($dati); $i++){

echo $dati[$i]."\t";

}

■ Utile: la funzione var_dump($dati) è utile per stampare il contenuto di una variabile di qualunque tipo, inclusi gli array

Page 42: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Esercizio

A. Scrivere un programma PHP che calcola la somma di tutti i valori contenuti in un vettore di interi e stampa a video il risultato ■  Il vettore è memorizzato nella variabile $dati e contiene

valori arbitrari

Page 43: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Esempio

A. Scrivere un programma PHP che conta quanti sono i numeri pari contenuti in un vettore di interi e stampa a video il risultato ■  Il vettore è memorizzato nella variabile $dati e contiene

valori arbitrari

Page 44: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Array di array ■  Un elemento di un array può essere di uno qualunque dei tipi PHP ■  E’ possibile quindi creare matrici (array di array)

$dati[0] = [1, 22, -3, 15]; $dati[1] = [10, 2, 44, 21]; $dati[2] = [6, 41, 42, 42]; $dati[3] = [66, 33, 1, 50]; echo $dati[1][3]; // stampa 21 echo $dati[2][2]; // stampa 42 echo $dati[3][1]; // stampa 33 echo $dati[3][3]; // stampa 50

Page 45: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Esercizio

■  Scrivere un programma PHP che memorizza la matrice di interi mostrata sotto e stampa a video: A.  la somma dei valori contenuti nella seconda riga B.  la somma dei valori contenuti nella terza colonna

12 3 4 5 18

22 2 5 11 3

4 4 1 13 27

Page 46: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Esercizio

■  Partendo dall’array di test disponibile all’indirizzo: http://diiorio.nws.cs.unibo.it/infogeo1819/php/

■  Scrivere il codice PHP per stampare a video, una per riga, tutte le località in cui si sono verificati i terremoti

Page 47: Laboratorio - Programmazionediiorio.nws.cs.unibo.it/infogeo1819/pdf/07-Programmazione-PHP.pdf · per il Web ma general-purpose Noi lo usiamo per programmi command-line ... La programmazione

ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA  

Esercizio

■  Partendo dall’array di test disponibile all’indirizzo: http://diiorio.nws.cs.unibo.it/infogeo1819/php/

■  Scrivere il codice PHP per calcolare la magnitudo minima tra tutti i terremoti registrati