Fondamenti di programmazione
Corso php a cura del prof. Pietro De Paolis
Calcolo dello stipendio lordo
Ora che conosciamo come leggere i file, come usare le matrici, come usare i contatori, come usare la istruzione for, cerchiamo di leggere i file in modo professionale.
Nella lezione n. 5 avevamo salvato un programma col nome di stipendi3.php
che ci permetteva di scegliere in base agli anni di servizio lo stipendio annuo. Esso però non utilizzava i file; vediamo ora come modificarlo in modo da utilizzare i file.
Se guardiamo il listato di programmi3.php che era il seguente:
<html> <body background="sfondo2.jpg"> Programma per il calcolo dello stipendio mensile lordo di un docente laureato di scuola superiore.<br> <form action="stipendio4.php" name="modulo1"> <select size="1" name="anniservizio" > <option value="0">SCEGLI ANNI DI SERVIZIO</option> <option value="1">DA 0 A 2</option> <option value="2" >DA 3 A 8</option> <option value="3">DA 9 A 14</option> <option value="4">DA 15 A 20</option> <option value="5">DA 21 A 27</option> <option value="6">DA 28 A 34</option> <option value="7">DA 35 IN POI</option> </select> <input type="Submit" value="CALCOLA LO STIPENDIO MENSILE"> </form> <body> </html>
|
Listato di stipendi3.php |
vediamo che nella istruzione:
<select size="1" name="anniservizio" >
noi abbiamo creato un menu a tendina che memorizzava la scelta dell'utente in una variabile che abbiamo chiamato anniservizio in html e che diventerà $anniservizio in php.
Ora dobbiamo modificare stipendio4.php
il cui listato era:
<html> <body background="sfondo2.jpg"> <?php print ("Programma per calcolare lo stipendio annuo lordo.<br><br>"); $anniservizio = $_GET['anniservizio']; if ($anniservizio == 1) print ("Lo stipendio annuo lordo è € 19.082,50 <br>"); if ($anniservizio == 2) print ("Lo stipendio annuo lordo è € 20.163,59 <br>"); if ($anniservizio == 3) print ("Lo stipendio annuo lordo è € 21.893,39 <br>"); if ($anniservizio == 4) print ("Lo stipendio annuo lordo è € 24.027,25 <br>"); if ($anniservizio == 5) print ("Lo stipendio annuo lordo è € 26.745,11 <br>"); if ($anniservizio == 6) print ("Lo stipendio annuo lordo è € 28.525,83 <br>"); if ($anniservizio == 7) print ("Lo stipendio annuo lordo è € 29.945,29 <br>"); if ($anniservizio == 0) print ("Non hai indicato gli anni di servizio. Torna indietro! <br>"); ?> <body> </html>
|
Listato di stipendio4.php |
in un altro più semplice che utilizza i file e le matrici. Il listato diventa il seguente:
<html> <body background="sfondo2.jpg"> <?php print ("Programma per calcolare lo stipendio annuo lordo.<br><br>"); $anniservizio = $_GET['anniservizio'];
// leggo il file stipendi.txt $nomefile = "stipendi.txt"; $fp = fopen($nomefile, "r"); for ($t=1; $t<8; $t++) { $matrice1[$t] = fgets ($fp, 4096); $matrice2[$t] = fgets ($fp, 4096); }; fclose($fp);
// stampo i risultati print ("Lo stipendio annuo lordo è € $matrice2[$anniservizio] <br>"); if ($anniservizio == 0) print ("Non hai indicato gli anni di servizio. Torna indietro! <br>"); ?> <body> </html>
|
Listato di stipendio5.php |
Notiamo alcune cose. Innanzitutto vediamo che il programma comincia a diventare più lungo; quindi occorre mettere dei commenti nel listato facendoli precedere dalla doppia sbarra //
Infatti abbiamo scritto:
// leggo il file stipendi.txt
è una istruzione che non viene eseguita in quanto inizia con //. Queste istruzioni ci aiutano un domani quando riprendiamo lo stesso programma dopo diverso tempo, in modo da ricordare meglio il lavoro che si è fatto.
Analogamente anche la istruzione:
// stampo i risultati
è una istruzione di commento.
Nel programma, che salviamo come stipendio5.php, notiamo che la lettura del file stipendi.txt viene fatta al solito modo come abbiamo visto nella lezione n. 8 ; in particolare in $matrice2 [$t] viene salvato l'importo dello stipendio annuo relativo ad ogni riga della tabella.
Analizziamo ora la print:
print ("Lo stipendio annuo lordo è € $matrice2[$anniservizio] <br>");
qui vediamo come abbiamo evitato tutte le print che sarebbero dovute essere molte di più, sfruttando il numero memorizzato nella variabile $anniservizio. Infatti in $anniservizio avevamo memorizzato proprio il numero di riga della tabella:
anni di servizio | Docente laureato istituti sec. II° |
da 0 a 2 |
19082.50 |
da 3 a 8 |
20163.59 |
da 9 a 14 |
21893.39 |
da 15 a 20 |
24027.25 |
da 21 a 27 |
26745.11 |
da 28 a 34 |
28525.83 |
da 35 a |
29945.29 |
per cui non occorrono delle istruzioni if in quanto sappiamo già la riga da prendere dalla tabella.
Modifichiamo ora stipendio3.php nella istruzione:
<form action="stipendio4.php" name="modulo1">
che la modifichiamo nella seguente:
<form action="stipendio5.php" name="modulo1">
in modo che mi richiamo stipendio5.php e non stipendio4.php.
Eseguiamo ora la nuova versione di stipendio3.php; Otterremo il risultato che ottenevamo con stipendio4.php
ma ora abbiamo usato i file e la istruzione for, rendendo il programma più semplice e più veloce.
Esercizio
Modificare stipendio5.php in modo che calcoli lo stipendio mensile lordo oltre che quello annuo.
Certo siamo ancora molto lontani da un programma professionale come: Calcolo dello stipendio personale scuola ma con il tempo diventeremo più bravi.
Corso di programmazione in PHP
prof. Pietro De Paolis
Indice di tutte le pagine del sito