1 / 240

Il Programma

Il Programma. Dalla progettazione all’esecuzione. Perché programmare?. Un programma è un insieme di istruzioni che “insegna” al computer come svolgere particolari compiti che l’uomo preferisce delegare ad una macchina, che li può eseguire in maniera più veloce o più efficiente.

kanoa
Download Presentation

Il Programma

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Il Programma Dalla progettazione all’esecuzione

  2. Perché programmare? Un programma è un insieme di istruzioni che “insegna” al computer come svolgere particolari compiti che l’uomo preferisce delegare ad una macchina, che li può eseguire in maniera più veloce o più efficiente

  3. Il programma in 6 fasi • Capire e descrivere il problema • Trovare un metodo risolutivo e formularlo in linguaggio naturale (lingua corrente) • Elaborare un “diagramma a blocchi” del metodo risolutivo • Trascrivere il diagramma in un linguaggio di programmazione • Compilare il programma • Eseguire il programma

  4. Il programma in 6 fasi • Capire e descrivere il problema

  5. 1. Descrizione del problema Problema: il signor Trinciapolli possiede una macelleria, e per fare il conto per i suoi clienti deve addizionare un certo numero di addendi.

  6. Il programma in 6 fasi • Capire e descrivere il problema • Trovare un metodo risolutivo e formularlo in linguaggio naturale (lingua corrente)

  7. 2. Ricerca algoritmo Problema: il signor Trinciapolli possiede una macelleria, e per fare il conto per i suoi clienti deve addizionare un certo numero di addendi. Metodo risolutivo (algoritmo): il signor Trinciapolli fornisce al computer il numero di acquisti che il cliente ha effettuato e poi ciascun importo parziale e il computer gli mostrerà sullo schermo il totale. Nota: il sistema di fornire prima il numero di addendi non è comodo per il signor Trinciapolli; ma è stato scelto per semplificare il procedimento per il lettore

  8. 2. Algoritmo in linguaggio naturale In blu sono state indicate le variabili, ovvero quelle parti del programma che cambiano valore durante l’esecuzione Il programma del Trinciapolli deve quindi: • Mostrare un titolo • Chiedere quanti sono gli addendi e ottenere una risposta, che memorizzerà in una cella di memoria che chiama N • Porre somma = 0 e k = 0 • Finché k < N • Chiedere l’addendo N-esimo e ottenere una risposta (num) • Sommare l’addendo N-esimo a somma • Visualizzare il risultato sullo schermo • Terminare il programma In verde trovate le costanti, che non cambiano mai Alcune osservazioni

  9. Il programma in 6 fasi • Capire e descrivere il problema • Trovare un metodo risolutivo e formularlo in linguaggio naturale (lingua corrente) • Elaborare un “diagramma a blocchi” del metodo risolutivo

  10. 3. Diagramma a blocchi INIZIO • Mostrare un titolo • Chiedere quanti sono gli addendi e ottenere una risposta, che memorizzerà in una cella di memoria che chiama N • Porre somma = 0 e k = 0 • Finché k < N • Chiedere l’addendo N-esimo e ottenere una risposta (num) • Sommare l’addendo N-esimo a somma • Visualizzare il risultato sullo schermo • Terminare il programma “Somma” “Quanti?”  N 0 somma 0  k k < N? no sì “Prossimo addendo?”  num somma + num somma k + 1  k somma FINE

  11. 3. Diagramma a blocchi Prendiamoci una piccola pausa perché il signor Trinciapolli non ha capito esattamente. Riprendiamo il diagramma e seguiamo il “flusso”, ovvero vediamo un po’ cosa succede nelle varie fasi…

  12. INIZIO “Somma” “Quanti?”  N 0 somma 0  k k < N? no sì “Prossimo addendo?”  num somma + num somma k + 1  k somma FINE 3. Diagramma a blocchi Il programma mostra sullo schermo la parola “Somma” come titolo

  13. INIZIO “Somma” “Quanti?”  N 0 somma 0  k k < N? no sì “Prossimo addendo?”  num somma + num somma k + 1  k somma FINE 3. Diagramma a blocchi Il programma mostra sullo schermo la parola “Quanti?” per chiedere al Trinciapolli quanti acquisti ha fatto la cliente

  14. INIZIO “Somma” “Quanti?”  N 0 somma 0  k k < N? no sì “Prossimo addendo?”  num somma + num somma k + 1  k N 3 somma FINE 3. Diagramma a blocchi Il programma memorizza il numero di acquisti, che il Trinciapolli digita sulla tastiera (supponiamo 3)

  15. INIZIO “Somma” “Quanti?”  N 0 somma 0  k k < N? no sì “Prossimo addendo?”  num somma + num somma k + 1  k k somma N 0 3 0 somma FINE 3. Diagramma a blocchi Il programma pone somma e k uguali a 0

  16. INIZIO “Somma” “Quanti?”  N 0 somma 0  k k < N? no sì “Prossimo addendo?”  num somma + num somma k + 1  k k somma N 0 3 0 somma FINE 3. Diagramma a blocchi Il programma si chiede se k < N.

  17. INIZIO “Somma” “Quanti?”  N 0 somma 0  k k < N? no sì “Prossimo addendo?”  num somma + num somma k + 1  k k somma N 0 3 0 somma FINE 3. Diagramma a blocchi In questo caso la risposta è sì

  18. INIZIO “Somma” “Quanti?”  N 0 somma 0  k k < N? no sì “Prossimo addendo?”  num somma + num somma k + 1  k k somma N 0 3 0 somma FINE 3. Diagramma a blocchi Il programma mostra la scritta “Prossimo addendo?”

  19. INIZIO “Somma” “Quanti?”  N 0 somma 0  k k < N? no sì “Prossimo addendo?”  num somma + num somma k + 1  k N k somma num 3 6 0 0 somma FINE 3. Diagramma a blocchi Il programma memorizza il primo addendo, che il Trinciapolli digita sulla tastiera (supponiamo 6€)

  20. INIZIO “Somma” “Quanti?”  N 0 somma 0  k k < N? no sì “Prossimo addendo?”  num somma + num somma k + 1  k N k somma num 3 6 0 0 somma FINE 3. Diagramma a blocchi Il programma incrementa somma di num e k di 1

  21. INIZIO “Somma” “Quanti?”  N 0 somma 0  k k < N? no sì “Prossimo addendo?”  num somma + num somma k + 1  k N k somma num 3 6 0 6 somma FINE 3. Diagramma a blocchi Il programma incrementa somma di num e k di 1

  22. INIZIO “Somma” “Quanti?”  N 0 somma 0  k k < N? no sì “Prossimo addendo?”  num somma + num somma k + 1  k N k somma num 3 6 0 6 somma FINE 3. Diagramma a blocchi Il programma incrementa somma di num e k di 1

  23. INIZIO “Somma” “Quanti?”  N 0 somma 0  k k < N? no sì “Prossimo addendo?”  num somma + num somma k + 1  k N k somma num 3 6 1 6 somma FINE 3. Diagramma a blocchi Il programma incrementa somma di num e k di 1

  24. INIZIO “Somma” “Quanti?”  N 0 somma 0  k k < N? no sì “Prossimo addendo?”  num somma + num somma k + 1  k N k somma num 3 6 1 6 somma FINE 3. Diagramma a blocchi Il programma si chiede se k < N. La risposta è ancora sì

  25. INIZIO “Somma” “Quanti?”  N 0 somma 0  k k < N? no sì “Prossimo addendo?”  num somma + num somma k + 1  k N k somma num 3 6 1 6 somma FINE 3. Diagramma a blocchi Il programma chiede al Trinciapolli e ottiene il secondo addendo, che mette in num (supponiamo 2€)

  26. INIZIO “Somma” “Quanti?”  N 0 somma 0  k k < N? no sì “Prossimo addendo?”  num somma + num somma k + 1  k num N k somma 3 2 6 1 somma FINE 3. Diagramma a blocchi Il programma chiede al Trinciapolli e ottiene il secondo addendo, che mette in num (supponiamo 2€)

  27. INIZIO “Somma” “Quanti?”  N 0 somma 0  k k < N? no sì “Prossimo addendo?”  num somma + num somma k + 1  k N k somma num 3 2 1 6 somma FINE 3. Diagramma a blocchi Il programma incrementa somma di num e k di 1

  28. INIZIO “Somma” “Quanti?”  N 0 somma 0  k k < N? no sì “Prossimo addendo?”  num somma + num somma k + 1  k N k somma num 3 2 1 8 somma FINE 3. Diagramma a blocchi Il programma incrementa somma di num e k di 1

  29. INIZIO “Somma” “Quanti?”  N 0 somma 0  k k < N? no sì “Prossimo addendo?”  num somma + num somma k + 1  k N k somma num 3 2 2 8 somma FINE 3. Diagramma a blocchi Il programma incrementa somma di num e k di 1

  30. INIZIO “Somma” “Quanti?”  N 0 somma 0  k k < N? no sì “Prossimo addendo?”  num somma + num somma k + 1  k N k somma num 3 2 2 8 somma FINE 3. Diagramma a blocchi Il programma si chiede se k < N. La risposta è ancora sì

  31. INIZIO “Somma” “Quanti?”  N 0 somma 0  k k < N? no sì “Prossimo addendo?”  num somma + num somma k + 1  k N k somma num 3 2 2 8 somma FINE 3. Diagramma a blocchi Il programma chiede al Trinciapolli e ottiene il secondo addendo, che mette in num (supponiamo 10€)

  32. INIZIO “Somma” “Quanti?”  N 0 somma 0  k k < N? no sì “Prossimo addendo?”  num somma + num somma k + 1  k num N k somma 3 10 8 2 somma FINE 3. Diagramma a blocchi Il programma chiede al Trinciapolli e ottiene il secondo addendo, che mette in num (supponiamo 10€)

  33. INIZIO “Somma” “Quanti?”  N 0 somma 0  k k < N? no sì “Prossimo addendo?”  num somma + num somma k + 1  k N k somma num 3 10 2 8 somma FINE 3. Diagramma a blocchi Il programma incrementa somma di num e k di 1

  34. INIZIO “Somma” “Quanti?”  N 0 somma 0  k k < N? no sì “Prossimo addendo?”  num somma + num somma k + 1  k N k somma num 3 10 2 18 somma FINE 3. Diagramma a blocchi Il programma incrementa somma di num e k di 1

  35. INIZIO “Somma” “Quanti?”  N 0 somma 0  k k < N? no sì “Prossimo addendo?”  num somma + num somma k + 1  k N k somma num 3 10 3 18 somma FINE 3. Diagramma a blocchi Il programma incrementa somma di num e k di 1

  36. INIZIO “Somma” “Quanti?”  N 0 somma 0  k k < N? no sì “Prossimo addendo?”  num somma + num somma k + 1  k N k somma num 3 10 3 18 somma FINE 3. Diagramma a blocchi Il programma si chiede ancora se k < N. La risposta è, finalmente, no

  37. INIZIO “Somma” “Quanti?”  N 0 somma 0  k k < N? no sì “Prossimo addendo?”  num somma + num somma k + 1  k N k somma num 3 10 3 18 somma FINE 3. Diagramma a blocchi Il programma mostra sullo schermo il contenuto di somma, che è il risultato del programma

  38. Il programma in 6 fasi • Capire e descrivere il problema • Trovare un metodo risolutivo e formularlo in linguaggio naturale (lingua corrente) • Elaborare un “diagramma a blocchi” del metodo risolutivo • Trascrivere il diagramma in un linguaggio di programmazione

  39. 4. Il programma in Pascal Mostreremo ora, a partire dal diagramma a blocchi, come sia facile scrivere il programma. A titolo di esempio si è scelto come linguaggio di programmazione il Pascal, ma un altro linguaggio non presenterebbe sensibili differenze.

  40. INIZIO “Somma” “Quanti?”  N 0 somma 0  k k < N? no sì “Prossimo addendo?”  num somma + num somma k + 1  k somma FINE 4. Il programma in Pascal Program Trinciapolli; Titolo del programma

  41. INIZIO “Somma” “Quanti?”  N 0 somma 0  k k < N? no sì “Prossimo addendo?”  num somma + num somma k + 1  k somma FINE 4. Il programma in Pascal Program Trinciapolli; Var N, somma, k, num: integer; Elenco delle variabili, che contengono numeri interi

  42. INIZIO “Somma” “Quanti?”  N 0 somma 0  k k < N? no sì “Prossimo addendo?”  num somma + num somma k + 1  k somma FINE 4. Il programma in Pascal Program Trinciapolli; Var N, somma, k, num: integer; Begin Writeln(‘Somma’); Writeln(‘Quanti?’); Readln(N); Somma := 0; k :=0; While k < N then Begin Writeln(‘Prossimo addendo?’); Readln(num); Inc(somma, num); Inc(k, 1); End; Writeln(somma) End.

  43. Il programma in 6 fasi • Capire e descrivere il problema • Trovare un metodo risolutivo e formularlo in linguaggio naturale (lingua corrente) • Elaborare un “diagramma a blocchi” del metodo risolutivo • Trascrivere il diagramma in un linguaggio di programmazione • Compilare il programma

  44. 5. Compilazione Una notizia buona e una cattiva. Quella buona è per il Trinciapolli: ormai lui non deve fare più niente, il programma è completo e gli basta premere il tasto “compila” del Turbo Pascal o del Free Pascal per avere direttamente il programma funzionante… Quella cattiva è invece per i lettori che hanno ancora voglia di seguirmi: inizia una fase un tantino complicata di questo corso… Ma comincia anche la parte più interessante, che ci mostra la genialità di quelle teste che hanno costruito i primi computer. Armatevi di un po’ di pazienza, e proseguiamo!

  45. 5. Compilazione La compilazione è un’operazione chiave: è quella che trasforma il programma, così come l’abbiamo scritto ora, in un insieme di simboli e numeri, detto compilato, comprensibile al computer (molto meno a noi…), in modo che possa essere eseguito.

  46. Memoria byte 5. Compilazione Dobbiamo aprire però una piccola parentesi su come è strutturata la memoria (RAM) di un computer. Essa è formata da moltissimi bytes.

  47. byte 1 0 1 1 1 0 1 1 bit bit bit bit bit bit bit bit 5. Compilazione Ogni byte, poi è formato da 8 bit (=binary digit). Ogni bit è come un “interruttore”, che può essere acceso o spento (ovvero può valere 1 o 0). Per chi conosce un po’ la matematica ad aritmetiche finite, sarà intuitivo che in un byte possiamo memorizzare un numero da 0 a 255 (28-1).

  48. string 4 C i a o 5. Compilazione Un byte può contenere anche un carattere, come una lettera, un numero o un simbolo (ad esempio di punteggiatura). Per memorizzare un testo, invece, dobbiamo usare una stringa (insieme di caratteri). Una stringa occupa quindi tanti bytes quante sono le sue lettere, più uno iniziale che esprime appunto la lunghezza. Questa stringa occupa 5 bytes

  49. 5. Compilazione Per memorizzare un numero che vada oltre il 255, dobbiamo usare più di un byte: ad esempio con 2 bytes possiamo arrivare al numero 65535 (216-1) Fatte queste premesse, torniamo al programma… Un’ultima precisazione: il computer che simuleremo nei prossimi passaggi non è un personal computer, ma una macchina immaginaria, spesso semplificata, comunque il più possibile aderente al computer “normale”

  50. INIZIO “Somma” “Quanti?”  N 0 somma 0  k k < N? no sì “Prossimo addendo?”  num somma + num somma k + 1  k somma FINE 5. Compilazione 0 W string A sinistra abbiamo indicato l’indirizzo dove si trova in memoria questa istruzione (che, essendo la prima, ha indirizzo 0)

More Related