Fondamenti di programmazione

Corso php a cura del prof. Pietro De Paolis

Verso programmi più complessi

Quando si incontrano programmi più complessi da scrivere occorre armarsi di molta pazienza ed essere sicuri di avere molto tempo a disposizione; tempo vuol dire a volte giorni, a volte mesi, a volte anni, in base al tipo di programma da fare. 

Affrontiamo ora un problema pratico che può essere risolto nel giro di una o due settimane di lavoro, per un esperto programmatore. Ma nessuno è nato imparato, col tempo e con la buona volontà ciascuno di noi è in grado di diventare esperto.

Nella programmazione serve sì lo studio ma serve molta esperienza; esperienza che si acquista sbagliando e correggendo gli errori. Resta vero per il programmatore l'antico proverbio: sbagliando si impara. Non preoccupiamoci, quindi di sbagliare, e proseguiamo nel tentativo di affrontare un programma più complesso tipo quello che stampa il cedolino paga di un insegnante di scuola statale, per ogni singolo mese. Vedi per esempio: Calcolo dello stipendio personale scuola. Non è che sia un programma professionale, ma il suo lavoro lo fa. 

Sorge spontanea una domanda: può un programmatore affrontare tutti i problemi?

A mio avviso la risposta è no; secondo me per scrivere un buon programma servono due doti contemporanee che il programmatore deve avere:

1 - Conoscere perfettamente il problema da risolvere ed essere in grado di risolverlo manualmente, senza l'uso del computer.

2 - Avere delle buone conoscenze del linguaggio di programmazione con il quale si vuole scrivere il programma.

Abbandoniamo, quindi, la utopia che un buon programmatore sia in grado da solo di risolvere tutti i problemi di programmazione; non si può essere esperti in tutte le discipline del genere umano; ognuno si specializza in una sua disciplina; l'ingegnere nel campo tecnico; il medico nel campo della medicina; l'avvocato nel campo delle leggi; ecc.

Poi sarà un bravo ingegnere che è insieme bravo programmatore a scrivere i programmi per l'ingegneria; sarà un bravo medico, che è anche programmatore, a scrivere i programmi per la medicina; e così via.

Stipendio degli insegnanti

E' una parola! Alcune nozioni le possiamo apprendere dalla pagina:

Retribuzione o stipendio del personale scolastico

Per evitare di perderci è meglio affrontare le cose gradatamente, cioè trascuriamo alcune condizioni, che affronteremo successivamente, e partiamo col proposito che la prima versione del nostro programma è sicuramente sbagliata, in quanto abbiamo trascurato alcune variabili che condizionano la risoluzione del problema.

Stipendio mensile di un docente

Poniamoci allora questo problema

Sapendo che lo stipendio annuo di un docente di scuola superiore è pari ad € 18.128,79 quanto sarà uguale lo stipendio per ogni singolo mese?

La risposta è semplice, da scuola elementare. Sapendo che i mesi dell'anno sono 12, basta dividere lo stipendio di un anno per 12 ed il risultato è fatto:

18.128,79/12= € 1.510,73

Quindi possiamo dire che lo stipendio mensile di un docente di scuola superiore sia di € 1.510,73. Ovviamente non è del tutto vero, in quanto abbiamo trascurato alcune condizioni. Per cui questo stipendio lo chiamiamo stipendio lordo, cioè senza tenere conto delle tasse.

Scrivere un programma che calcola lo stipendio lordo è semplice, anzi lo abbiamo fatto con programma4.php e con programma5.php delle precedenti lezioni. Basta inserire come primo numero 18.128,79 e come secondo numero 12, facendo la divisione del primo numero per il secondo si ottiene lo stipendio mensile. Ma noi ora proviamo a modificare sia programma4.php che programma5.php in modo che ci servano per il calcolo dello stipendio. Scriviamo allora un primo programma in questo modo, partendo da programma4.php e modificandolo opportunamente:

<html>

<body background="sfondo2.jpg">

Programma per il calcolo dello stipendio mensile lordo di un docente di scuola superiore.<br>

<form action="stipendio2.php" name="modulo1">

Scrivi qui lo stipendio annuo:<input type="text" name="numero1"><br><br>

Scrivi qui i mesi dell'anno (12):<input type="text" name="numero2"><br><br>

<input type="Submit" value="CALCOLA LO STIPENDIO MENSILE">

</form>

<body>

</html>

Salviamo questo programma col nome di stipendio1.php; notiamo che la istruzione <form> prevede come azione il richiamo del programma stipendio2.php che ancora non abbiamo scritto.

Se eseguiamo il programma otteniamo:

Modifichiamo, ora anche programma5.php in modo da fargli fare la divisione tra due numeri; scriviamo allora:

<html>

<body background="sfondo2.jpg">

<?php

print ("Programma per calcolare lo stipendio mensile lordo.<br><br>");

$numero1 = $_GET['numero1'];

$numero2 = $_GET['numero2'];

$rapporto=$numero1/$numero2;

$frase1="Se divido lo stipendio annuo lordo di € ";

$frase2=" per i mesi dell'anno ";

$frase3=", ottengo che lo stipendio di un mese è €";

print("$frase1 $numero1 $frase2 $numero2 $frase3 $rapporto .<br>");

?>

<body>

</html>

Salviamo il programma con il nome di stipendio2.php; eseguiamo prima stipendio1.php; diamoli come primo numero: 18128.79 e come secondo numero 12; stiamo attenti che i numeri decimali vanno scritti con il punto decimale, come nelle calcolatrici, senza mettere la virgola. Otteniamo:

Stipendio lordo

Lo stipendio dei professori viene stabilito da un contratto nazionale per la scuola e riguarda tutto il personale scolastico; tuttavia noi ci interessiamo solo dei professori. Se guardiamo le tabelle previste dello stipendio annuo:

anni di servizioCollaboratore scolastico Collaboratore scolastico dei servizi Assistenti amministrativi Coordinatore amm.e tecnico Dir. servizi gen. ed amm. e amm. Docente sc. materna ed elem. Docente diplomato istituti sec. II° Docente scuola media Docente laureato istituti sec. II°
  da 0 a 2
 13659.90
 14010.01
 15302.38
 17495.96
 20230.62
 17582.23
 17582.23
 19082.50
 19082.50
 da 3 a 8
 13925.18
 14268.28
 15646.28
 17968.93
 20819.59
 18057.22
 18057.22
 19609.37
 20163.59
 da 9 a 14
 14896.91
 15223.27
 16874.38
 19425.88
 22664.73
 19520.02
 19520.02
 21331.19
 21893.39
 da 15 a 20
 15784.44
 16120.67
 18037.47
 21127.37
 24774.81
 21228.70
 21228.70
 23313.53
 24027.25
 da 21 a 27
 16668.09
 17031.95
 19207.56
 22778.93
 27053.50
 22887.02
 23701.35
 25238.19
 26745.11
 da 28 a 34
 17334.59
 17677.28
 20040.76
 24408.24
 29394.78
 24523.25
 25323.78
 27126.29
 28525.83
 da 35 a
 17801.67
 18159.30
 20679.35
 25621.63
 31672.27
 25741.51
 26556.37
 28525.83
 29945.29

 

notiamo alcuni particolari; innanzitutto lo stipendio cambia in base agli anni di servizio, come vediamo dalla prima colonna, secondo degli scaglioni o gradoni; inoltre, tralasciando il personale amministrativo, esso cambia a seconda che il professore insegni nella scuola elementare, oppure nella scuola media, oppure nella scuola superiore. Questo ci complica le cose; ma non ci arrendiamo; anzi cerchiamo di risolvere un problema alla volta. Intanto ci limitiamo ai docenti della scuola superiore; vi sono due tipi di docenti: 

1) - I docenti diplomati, cioè quelli che utilizzano esclusivamente il laboratorio e non possono insegnare con lezione teoriche, detti anche insegnanti tecnico pratici (ITP);

2) - Docenti laureati, cioè quelli che insegnano sia teoria da soli sia laboratorio, con la presenza del docente tecnico pratico.

Ora per semplicità supponiamo di aver scelto di calcolare lo stipendio del docente laureato; per cui della tabella utilizziamo solo la prima e ultima colonna, che nel nostro caso diventa:

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

 

Lo stipendio è sempre quello annuo lordo, da dividere per 12 mesi in modo da ottenere lo stipendio mensile; solo che notiamo che non tutti i professori laureati hanno lo stesso stipendio, ma esso varia in base agli anni di servizio. Dobbiamo trovare un modo per sapere gli anni di servizio del docente laureato di cui vogliamo calcolare lo stipendio mensile.

Comando select

Il comando select è un comando html che disegna una casella con scelta multipla, cioè un menu a discesa. A noi serve una casella del tipo:

in modo che l'utente sia in grado di scegliere facilmente gli anni di servizio in base agli scaglioni previsti. Vediamo le istruzioni per disegnare un menu a discesa.

<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>

Innanzitutto notiamo che vi è un inizio del menu con <select> ed una fine del menu con </select> come richiesto in html.

Poi vi è size="1" che indica che l'utente vede una sola riga con un menu a discesa tra cui sceglie il valore. Volendo più righe, per esempio 4 righe, vedremmo:

cioè l'utente sceglierebbe vedendo direttamente alcuni dei valori possibili.

Poi vi è name="anniservizio" ed indica il nome che diamo alla nostra variabile; questo è importante; infatti il valore scelto dall'utente verrà memorizzato nella variabile che chiamiamo anniservizio in html ed $anniservizio in php.

Infine vi è una serie di inizio <option> e fine </option>:

<option value="1">DA 0 A 2</option>

dove option sta a significare una scelta possibile che fa l'utente con il mouse; quello che scriviamo tra inizio option e fine option è quello che vede l'utente, nel nostro caso vede: DA 0 a 2; quello che mettiamo in value=" " è il valore che viene memorizzato nella variabile che abbiamo chiamato anniservizio; se l'utente sceglie questa opzione il valore di anniservizio sarà 1.

Se invece scegliesse:

<option value="2" >DA 3 A 8</option>

il valore di anniservizio sarebbe 2; e così via per le altre scelte. Se l'utente non facesse alcuna scelta:

<option value="0">SCEGLI ANNI DI SERVIZIO</option>

il valore di anniservizio sarebbe "0"; questa per noi sarebbe una condizione di errore, che tratteremo successivamente; è un errore dell'utente; infatti se non ci indica gli anni di servizio non possiamo calcolare lo stipendio.

Esercizio

Scrivere un programma che calcoli lo stipendio lordo annuo di un docente di scuola secondaria superiore.

Svolgimento

Dividiamo il programma in due moduli; un primo modulo riceve in ingresso gli anni di servizio del professore il secondo calcola e mostra all'utente lo stipendio annuo.

Primo modulo

Prensiamo il vecchio programma stipendio1.php e modifichiamolo aggiungendo la istruzione select, come visto sopra e otteniamo:

<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>

 

Salviamo il listato con il nome di stipendio3.php ed eseguiamolo. Otteniamo:

Nella seguente lezione vedremo come ricavare lo stipendio lordo di un anno.

 

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