Costruzione di Siti Web con PHP e MySQL. Lezione 5: Cicli, Funzioni, Operazioni con Stringhe e Date

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Costruzione di Siti Web con PHP e MySQL. Lezione 5: Cicli, Funzioni, Operazioni con Stringhe e Date"

Transcript

1 Costruzione di Siti Web con PHP e MySQL Lezione 5: Cicli, Funzioni, Operazioni con Stringhe e Date

2 Argomenti della lezione In questa lezione si riprenderanno le strutture di controllo, verrà introdotto l'operatore ternario e si farà un'esercitazione completa che riguarda gli argomenti fino ad ora affrontati. Invece i nuovi argomenti di questa lezione sono: I cicli: for, while, do-while; Le funzioni: definizione e passaggio di parametri; Esercitazione: creazione di una piccola libreria e meccanismi di include; Operazioni con le stringhe Operazioni con le date Esercitazione: creazione di una maschera HTML e validazione dei dati con PHP Pagina 1

3 Richiamo sulle strutture di controllo Lezione 5: Cicli, Funzioni, Operazioni con Stringhe e Date Nella corsa lezione abbiamo affrontato le strutture di controllo: if, if-else e switch. Queste ci consentono di valutare il valore delle nostre variabili e di controllare il flusso del nostro programma. Per controllare il valore delle variabili ci serve scrivere un'espressione booleana che combinando tra loro operatori di controllo ed eventualmente funzioni possiamo scrivere condizioni flessibili e articolate, ad esempio: // === Definisco due variabili $a = 'testo'; $b = 30; if(is_int($a) && $a == 20 && ($b == 50 $b <= 300 )) // --- Visualizzo risultato echo ($a + $b); funzione Operatori di controllo Pagina 2

4 Richiamo sulle strutture di controllo Vi è anche la struttura if-else dove è possibile specificare un'azione alternativa nel caso la condizione dell'espressione booleana non venga verificata, come illustrato nel codice sottostante: // === Struttura di if if(<condizione>) // --- Istruzioni se <condizione> si verifica else // --- altrimenti esegui queste istruzioni Pagina 3

5 Richiamo sulle strutture di controllo Inoltre, nel caso abbiamo l'esigenza di valutarepiù condizioni contemporaneamente possiamo usare diversi statement nidificati con if-else-if: // === Struttura di if if(<condizione1>) // --- Istruzioni se <condizione> si verifica <statement1> else if(<condizione2>) // --- altrimenti esegui queste istruzioni <statement2> else if(<condizione3>) // --- altrimenti esegui queste istruzioni <statement3> else // --- altrimenti esegui queste istruzioni <statement4> Pagina 4

6 Richiamo sulle strutture di controllo Infine abbiamo la struttura switch-case-default che ci consente di valutare agilmente un'espressione booleana: Va osservato che nel valore di case, possiamo anche mettere un range o un'espressione booleana: // === valuto il valore della variabile switch (<variabile>) case '<valore1>'; // --- <statement1> break; case '<valore2>'; // --- <statement2> break; case '<valore3>'; // --- <statement3> break; default: // --- <statement_default> break; $valore=3; switch($variabile) case ($variabile>5 $variabile<=10): echo "\n Valore tra 5 e 10"; break; case ($variabile>15 $variabile<=20): echo "\n Valore tra 15 e 20"; break; case ($variabile>30 $variabile<=50): echo "\n Valore tra 30 e 50"; break; default: echo "\n Valore non compreso in nessun range"; break; Pagina 5

7 Gli operatori di incremento, pre e post [Parte1] Lezione 5: Cicli, Funzioni, Operazioni con Stringhe e Date In PHP (come anche in Java, Javascript, C# e tutti gli altri linguaggi sintatticamente derivati da C), è possibile utilizzare degli operatori veloci che ci consentono di effettuare operazioni aritmetiche molto velocemente. // === Imposto un valore iniziale $i=0; // === Incrementa di una unità il valore di $i $i++; // --- equivale a scrivere $i = $i + 1; // === Decrementa il valore di $i di una unità $i--; // --- Equivale a scrivere $i = $i - 1; Pagina 6

8 Gli operatori di incremento, pre e post [Parte1] Lezione 5: Cicli, Funzioni, Operazioni con Stringhe e Date Posso anche effettuare delle somme, sottrazioni, moltiplicazioni e divisioni in modo incrementale dove al valore attuale di una variabile effettuo l'operatore aritmetico // === Imposto il valore iniziale $i = 10; // === Somma incrementale: sommo 3 al valore "attuale" di $i $i += 3; // --- equivale a scrivere: $i = $i + 3; // === Sottrazione incrementale: sottraggo 6 al valore "attuale" di $i $i -= 6; // --- equivale a $i = $i - 6; // === Moltiplicazione incrementale: moltiplico il valore "attuale" per 4; $i *= 4; // --- equivale a $i = $i * 4; // === Divisione incrementale: divido il valore "attuale" per 2 $i /= 2; // --- equivale a $i = $i / 2; Pagina 7

9 I cicli (o strutture iterative): for, do-while, while Lezione 5: Cicli, Funzioni, Operazioni con Stringhe e Date Spesso nella nostra elaborazione abbiamo la necessità di operare ciclicamente sui nostri dati, oppure creare un output ciclico della nostra pagina. Un ciclo è formato da una condizione iniziale, elaborazione e verifica del cambiamento della nostra condizione iniziale; questo ci consente di creare cicli molto flessibili dove possiamo anche saltare l'elaborazione di qualche ciclo nal verificarsi di determinate condizioni. Condizione iniziale NO È cambiata la condizione? SI Elaborazione Condizione FINALE PHP offre i seguenti comandi per creare cicli con modalità diverse: for: crea un'elaborazione ciclicla con un numero ben determinato di cicli, che si conosce a priori; do-while: esegue ciclicmamente il nostro codice, anche se la nostra condizione non si verifica, eseguendo almeno un ciclo; while: esegue un ciclo, fino a quando non si arriva alla condizione finale, non eseguendo neanche un ciclo se la condizione non si verifica Pagina 8

10 Cicli: for Come abbiamo già detto, il ciclo for esegue un numero ben preciso di iterazioni, fino al raggiungimento del nostro limite; ha la seguente struttura: for(<condizione iniziale>; <controllo limite>; <incremento condizione>) // === Blocco di istruzioni /** * Eseguo un ciclo for da 0 a 10, * incrementando la * nostra condizione di una unità */ for($i=0; $i<=10; $i++) echo "\n".$i; Risultato: Pagina 9

11 Cicli: for Adesso facciamo tre esercizi che affrontano buona parte degli argomenti fino ad ora trattati: Esercizio 1 Creare un programma che visualizza la somma degli indici di un ciclo for che va da UNO a VENTI. Esercizio 2 Creare un programma che scorre su un'array creato arbitrariamente da noi, e se trova degli numeri interi li inserisce in un array di interi, se trova delle stringhe lo inserisce in un array di stringhe; per ogni elemento che trovo, dopo averlo esaminato lo elimino dall'array di partenza; il risultato finale deve essere di tre array: quello di partenza VUOTO, e due array, uno di interi e uno di stringhe. Esercizio 3 Creare un programma che visualizza il fattoriale e la sommatoria di 30 numeri interi Pagina 10

12 Cicli: while Il ciclo while ha la seguente struttura: while(<condizione>) // === blocco comandi // === (o statement) Viene eseguito il nostro blocco SE E SOLO SE la nostra <condizione> è valida; <condizione> è un'espressione booleana, quindi possiamo anche dire che il ciclo esegue il blocco comandi un numero indefinito di volte fino a quando la nostra <condizione> è VERA. Poiché siamo in un programma fatto di variabili che determinano il valore delle nostre <condizioni>, anche se arrivati prima del while la nostra <condizione> è FALSA, lo statement non verrà eseguito e non vi sarà alcuna iterazione. Quindi se ancora prima di entrare nel while la nostra <condizione> e FALSA non eseguiremo lo statement del while. Pagina 11

13 Cicli: while Ad esempio possiamo avere: // === Assegno un valore a $i $i=5; // === In questo caso entro ed eseguo il ciclo while( $i>=5 && $i<=10 ) $i++; echo "\n".$i; // === Assegno un valore a $i $i=0; Viene eseguito il nostro blocco SE E SOLO SE la nostra <condizione> è valida; <condizione> è un'espressione booleana, quindi possiamo anche dire che il ciclo esegue il blocco comandi un numero indefinito di volte fino a quando la nostra <condizione> è VERA. // === In questo caso il ciclo non verrà mai eseguito while( $i>=5 && $i<=10 ) $i++; echo "\n".$i; Pagina 12

14 Cicli: do-while Il ciclo do-while ha la seguente struttura: do // === blocco comandi // === (o statement) while(<condizione>) Viene eseguito il nostro blocco comandi finchè la nostra <condizione> è valida; <condizione> è un'espressione booleana, quindi possiamo anche dire che il ciclo viene eseguito il blocco comandi un numero indefinito di volte fino a quando la nostra <condizione> è VERA. Poiché siamo in un programma fatto di variabili che determinano il valore delle nostre <condizioni>, anche se arrivati a do la nostra <condizione> è FALSA, ugualmente verrà eseguito lo statement, ma non ci sarà iterazione se non si riporta la condizione a VERA. Pagina 13

15 Cicli: do-while Ad esempio possiamo avere // === Assegno un valore a $i $i=3; // === In questo caso entro ed eseguo il ciclo do In questo caso avremo cmq UN SOLO CICLO anche se il valore di $i non è compreso tra 5 e 10 $i++; echo "\n".$i; while( $i>=5 && $i<=10 ) Pagina 14

16 Le funzioni Abbiamo già avuto modo di utilizzare le funzioni nel corso delle precedenti lezioni, ma non abbiamo fino ad ora illustrato il loro utilizzo. Le funzioni sono una divisione logica del nostro programma che utilizzeremo più volte, o dove semplicemente racchiudiamo una funzionalità alla nostra applicazione. Le funzioni si definiscono con la parola chiave function, posso ricevere in ingresso uno o più argomenti, e posso restituire un valore. function <nome_funzione>(<par1>, <par2>, <parn>) // === blocco delle nostre istruzioni return <valore_uscita>; Pagina 15

17 Le funzioni: esempio Abbiamo ad esempio /** * Effettua la somma di due numeri interi * int $numero1 int $numero2 int $somma */ function sommanumeri($numero1, $numero2) if(is_int($numero1) && is_int($numero2)) $somma = $numero1 + $numero2; return $somma; else return 0; Pagina 16

18 Le funzioni: visibilità delle funzioni (scope) Nella nostra elaborazione possiamo avere l'esigenza di attingere da alcune variabili esterne alla nostra funzione, oltre a quelle gli passiamo come parametri, ad esempio una variabile comune a più funzioni. In questo caso usiamo le variabili global che sono definite e visibili a tutte le funzioni del nostro programma. Facciamo un' esempio: // === Imposto un valore alla variabile $a = 'Sono la variabile GLOBALE'; /** * Esempio di utilizzo delle variabili global * string $nome string $cognome string $a */ function testvariabiliglobali($nome, $cognome) global $a; return 'Variabile GLOBAL='.$a. '<br/>'.strtoupper($nome). '<br/>'.strtoupper($cognome); // === MAIN === echo testvariabiliglobali('gianfranco', 'Castro'); Pagina 17

19 Operazioni con le stringhe Adesso che abbiamo visto come agiscono le funzioni, passiamo una carrellata sulle funzioni più comuni che si adoperano sulle stringhe; per un elenco completo basta consultare la documentazione disponibile online sul sito ufficiale di PHP. Funzione strlen(stringa) trim(stringa), ltrim(stringa), rtrim(stringa) substr(stringa, intero [, intero]) str_replace( $search, $replace, $stringa ) Significato verifica la lunghezza della stringa, cioè il numero di caratteri che la compongono. Restituisce un numero intero. elimina gli spazi all'inizio e alla fine della stringa. Restituisce la stringa modificata. l left r right rispettivamente a partire da sinistra o destra restituisce una porzione della stringa, in base al secondo parametro (che indica l'inizio della porzione da estrarre), e all'eventuale terzo parametro, che indica quanti caratteri devono essere estratti. Se il terzo parametro non viene indicato, viene restituita tutta la parte finale della stringa a partire dal carattere indicato. effettua una sostituzione della prima stringa con la seconda all'interno della terza. Ad esempio: str_replace('p', 't', 'pippo') sostituisce le 'p' con le 't' all'interno di 'pippo', e quindi restituisce 'titto'. Restituisce la terza stringa modificata. Esiste anche la funzione str_ireplace(), che è equivalente ma che cerca la prima stringa nella terza senza tener conto della differenza fra maiuscole e minuscole. Pagina 18

20 Operazioni con le stringhe Funzione strpos(stringa, stringa) strstr(stringa, stringa) strtolower(stringa) strtoupper(stringa) ucfirst(stringa) ucwords(stringa) Significato cerca la posizione della seconda stringa all'interno della prima. Ad esempio: strpos('lorenzo', 're') restituisce 2, ad indicare la terza posizione. Restituisce un intero che rappresenta la posizione a partire da 0 della stringa cercata. Se la seconda stringa non è presente nella prima, restituisce il valore booleano FALSE. La funzione stripos() fa la stessa ricerca senza tenere conto della differenza fra maiuscole e minuscole. cerca la seconda stringa all'interno della prima, e restituisce la prima stringa a partire dal punto in cui ha trovato la seconda. strstr('lorenzo', 're') restituisce 'renzo'. Restituisce una stringa se la ricerca va a buon fine, altrimenti il valore booleano FALSE. La funzione stristr() funziona allo stesso modo ma non tiene conto della differenza fra maiuscole e minuscole. converte tutti i caratteri alfabetici nelle corrispondenti lettere minuscole. Restituisce la stringa modificata. converte tutti i caratteri alfabetici nelle corrispondenti lettere maiuscole. Restituisce la stringa modificata. trasforma in maiuscolo il primo carattere della stringa. Restituisce la stringa modificata. trasforma in maiuscolo il primo carattere di ogni parola della stringa, intendendo come parola una serie di caratteri che segue uno spazio. Restituisce la stringa modificata. Pagina 19

21 Operazioni con le date Lezione 5: Cicli, Funzioni, Operazioni con Stringhe e Date In PHP vi sono diverse funzioni per lavorare con le date. In PHP5.3 vi è l'obbligo di specificare in php.ini il timezone di appartenenza, mentre in PHP4 e PHP5 è impostato di default il formato inglese, sia per gli orari che per le date. Il formato nativo delle date in PHP è lo UNIX Timestamp, ovvero quanti secondi sono trascorsi dal 1 gennaio :00:00 (la cosiddetta Unix Epoch) all'istante attuale o specificato. Adesso vediamo in rassegna le funzioni più usate per la gestione delle date: Funzione time() date(formato [,timestamp]) checkdate(mese, giorno, anno) getdate([,timestamp] ) Significato fornisce il timestamp relativo al momento in cui viene eseguita; restituisce un intero (timestamp). Considera il timestamp in input (se non è indicato, prende quello attuale) e fornisce una data formattata secondo le specifiche indicate nel primo parametro. Rimando al link sul sito ufficiale di PHP per descrivere il formato della data Verifica se i valori passati costituiscono una data valida. Restituisce un valore booleano. Scompone un timestamp e restituisce un array associativo con tutti gli elementi che lo compongono: seconds, minutes, hours, mday, wday, mon, year, yday, weekday, month Pagina 20

Costruzione di Siti Web con PHP e MySQL. Lezione 4: Operatori, Array, Controlli e Cicli

Costruzione di Siti Web con PHP e MySQL. Lezione 4: Operatori, Array, Controlli e Cicli Costruzione di Siti Web con PHP e MySQL Lezione 4: Operatori, Array, Controlli e Cicli Argomenti della lezione In questa lezione si riprenderà il concetto di Array, nel suo aspetto basilare, ed in particolare

Dettagli

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Università di Roma Tre Facoltà di Scienze M.F.N. Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del

Dettagli

Richiesta pagina PHP (es: index.php)

Richiesta pagina PHP (es: index.php) PHP PHP = personal home page SERVER Richiesta pagina PHP (es: index.php) Server Web (Apache) in ascolto sulla porta 80, si accorge che la pagina richiesta è una pagina PHP in base all'estensione o con

Dettagli

Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione

Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione basata sul campo d utilizzo. I principali package sono:

Dettagli

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment Obiettivi d esame PHP Developer Fundamentals on MySQL Environment 1.0 Ambiente di sviluppo 1.1 Web server e database MySQL Comprendere la definizione dei processi che si occupano di fornire i servizi web

Dettagli

Corso di Esercitazioni di Programmazione

Corso di Esercitazioni di Programmazione Corso di Esercitazioni di Programmazione Introduzione Dott.ssa Sabina Rossi Informazioni Pagina web del corso: News Orari Mailing list Lezioni Esercitazioni Date esami Risultati esami.. http://www.dsi.unive.it/~prog1

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA1 1.3 - Le strutture di controllo 1 Prerequisiti Istruzioni semplici Strutture di controllo Scittura di semplici applicazioni Java 2 1 Introduzione In molti casi le

Dettagli

Breve riepilogo della puntata precedente:

Breve riepilogo della puntata precedente: Breve riepilogo della puntata precedente: 1. In C, il passaggio dei parametri alle funzioni avviene sempre per copia, ovvero il valore del parametro viene copiato all'interno della variabile che rappresenta

Dettagli

Elementi di Informatica

Elementi di Informatica Università degli Studi di Udine Facoltà di Ingegneria CORSO DI LAUREA IN SCIENZE dell ARCHITETTURA Elementi di Informatica Algoritmi, e Programmi D. Gubiani 29 marzo 2010 D. Gubiani Algoritmi, e Programmi

Dettagli

RenderCAD S.r.l. Formazione

RenderCAD S.r.l. Formazione Corso Descrizione La durata di questo corso è complessivamente di ore 150 di cui 85 ore di teoria, 35 ore di pratica e 30 ore di stage in azienda. Nel nostro territorio esiste una richiesta di tale figura,

Dettagli

Web Programming. Lezione 4: Cookie e Sessioni. Giulio Rossetti 14/04/2011. Guru@Work

Web Programming. Lezione 4: Cookie e Sessioni. Giulio Rossetti 14/04/2011. Guru@Work Web Programming Lezione 4: Cookie e Sessioni Giulio Rossetti Guru@Work 14/04/2011 Contatti Materiale Tutto il materiale del corso sarà reso disponibile sul sito: www.guruatwork.com (e su blog.giuliorossetti.net)

Dettagli

Indice. 1.13 Configurazione di PHP 26 1.14 Test dell ambiente di sviluppo 28

Indice. 1.13 Configurazione di PHP 26 1.14 Test dell ambiente di sviluppo 28 Indice 25 184 Introduzione XI Capitolo 1 Impostazione dell ambiente di sviluppo 2 1.1 Introduzione ai siti Web dinamici 2 1.2 Impostazione dell ambiente di sviluppo 4 1.3 Scaricamento di Apache 6 1.4 Installazione

Dettagli

Arduino: Programmazione

Arduino: Programmazione Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite

Dettagli

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

Dettagli

Dove die( stringa ) è una funzione di utilità del php che stampa la stringa e fa terminare lo script.

Dove die( stringa ) è una funzione di utilità del php che stampa la stringa e fa terminare lo script. I file in PHP Un file è un archivio elettronico contenente informazioni (dati) memorizzate su memoria di massa. Il file ha la caratteristica di consentire la lettura, la scrittura e la modifica dei dati

Dettagli

1 introdurre le monete per l importo necessario. 2 selezionare la quantità di zucchero. 3 selezionare la bevanda desiderata

1 introdurre le monete per l importo necessario. 2 selezionare la quantità di zucchero. 3 selezionare la bevanda desiderata Esempi di Problema: Prendere un Caffè al Distributore Università degli Studi di Udine Facoltà di Ingegneria CORSO DI LAUREA IN SCIENZE dell ARCHITETTURA Elementi di Informatica, e Programmi D. Gubiani

Dettagli

Matlab: Strutture di Controllo. Informatica B

Matlab: Strutture di Controllo. Informatica B Matlab: Strutture di Controllo Informatica B Tipo di dato logico È un tipo di dato che può avere solo due valori true (vero) 1 false (falso) 0 I valori di questo tipo possono essere generati direttamente

Dettagli

Gli Array (2) Gli Array. Gli Array (4) Gli Array (3)

Gli Array (2) Gli Array. Gli Array (4) Gli Array (3) Gli Array! Gli Array sono una delle funzioni più interessanti e flessibili.! A differenza degli altri linguaggi.! Gli array di PHP possono archiviare dati di vari tipi.! Possono organizzarli automaticamente

Dettagli

JAVASCRIPT. Tale file è associato alla pagina web mediante il tag