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

Dizionario php

 

prof. Pietro De Paolis

Indice Scuola Elettrica - generico


Scuola Elettrica



 

Altre applicazioni


Mappa per tipo di scuola

 

Indice di tutte le pagine del sito


Guida per navigare


Richiesta informazioni


Scuola Elettrica