1. Corso di
Concetti base di programmazione
Master in Sviluppo di Applicazioni Web, Mobile e Social Media
@parallelitSalvatore Cordiano
#masem
2. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
2
Salvatore Cordiano
s.cordiano@posytron.com
salvatorecordiano
@parallelit
fb.com/salvatorecordiano
3. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
3
Sommario
• Che cos’è l’informatica?
• Architettura dei calcolatori
• Definizione di algoritmo
• Breve storia sulla programmazione
• Diagrammi di flusso
• Concetti generali dei linguaggi di programmazione
• Introduzione alla programmazione web
4. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
4
Che cos’è l’informatica?
Informatica: informazione + automatica.
Disciplina che studia l’elaborazione automatica delle informazioni.
Definizione: Scienza della rappresentazione, memorizzazione, elaborazione
e trasmissione dell’informazione.
!
!
!
!
!
L’informatica ha due anime:
• tecnologica: studia i calcolatori elettronici e i sistemi che li utilizzano;
• metodologica: studia i metodi per la soluzione di problemi e la gestione
delle informazioni.
5. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
5
Architettura dei Calcolatori
6. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
6
Architettura dei Calcolatori
• CPU: CU, ALU, registri.
• I/O: input, output.
• Memoria principale: memoria di lavoro ad accesso rapido.
• Memoria secondaria: contiene informazioni a lungo termine (memoria non
volatile, conserva informazione anche dopo lo spegnimento del computer,
es. Disco Rigido, dvd-rom, cd-rom, floppy disk).
• Bus: comunicazione tra le unita’ (dati/indirizzi/comandi).
7. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
7
La CPU
La Central Processing Unit (CPU) contiene:
• Registri: speciali locazioni di memoria
• L’unità controllo: preleva le istruzioni da eseguire dalla RAM e le
esegue, legge e scrive da/sui registri
• L’Arithmetic Logic Unit (ALU): esegue operazioni aritmetiche e logiche
!
Contiene fino a 5 miliardi di transistor che funzionano in modo sincrono,
regolati da un segnale detto clock.
!
La CPU può eseguire poche e semplici operazioni.
8. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
8
Architettura stratificata
Le istruzioni comprensibili dalla CPU sono troppo elementari per essere
utilizzate in modo semplice.
Nell’architettura stratificata ogni strato “comprende” istruzioni ottenute
combinando le istruzioni degli strati inferiori.
I diversi strati sono progettati e realizzati da figure professionali con
diverse competenze.
9. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
9
Che cos’è la programmazione?
Programmare: fare un programma. Sinonimo: pianificare.
Programma: esposizione ordinata e particolareggiata di ciò che si vuole o
deve fare.
Programmare un calcolatore: fornire al calcolare una sequenza di
istruzioni da eseguire.
Programma per calcolatore: sequenza di istruzioni, rappresentate in un
apposito linguaggio, che saranno eseguite dal calcolatore.
Perché risolverà per noi dei problemi.
Perché programmare un calcolatore?
10. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
10
Che cos’è un problema?
• Situazione difficile che deve essere superata; cosa o persona che
genera preoccupazione.
• Situazione che si frappone tra la realtà oggettiva ed un determinato
obiettivo o esigenza.
!
Problema in informatica: terna (I,S,R) dove I è l’insieme delle istanze, S
insieme delle soluzioni e R una relazione tra I ed S.
11. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
11
Problema: qualche esempio
• Calcolare la somma dei primi 5 numeri naturali.
• Calcolare il massimo comune divisore tra i numeri 4 e 14.
12. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
12
Risoluzione di un problema
Risolvere un problema significa conoscere l'intera relazione tra istanze e
soluzioni.
A tale scopo, occorre definire una sequenza di operazioni che a partire da
una qualunque istanza consente di ottenere la/e soluzione/i
corrispondente/i.
L’insieme delle istruzioni che consentono di risolvere il problema è detta
algoritmo.
13. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
13
Risoluzione di un problema: un esempio
• Calcolare la somma dei primi 5 numeri naturali.
!
Somma(5) = 1 + 2 + 3 + 4 + 5 = 15
14. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
14
Algoritmo
15. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
15
Algoritmo
Un algoritmo per la risoluzione di un problema è un insieme di istruzioni non
ambigue che eseguite su una qualunque istanza del problema produce una
sequenza finita di operazioni al termine delle quali si ottiene la soluzione
dell’istanza.
La parola “algoritmo” deriva da al-Khwarizmi, un matematico persiano che
nel IX secolo scrisse il primo libro in cui venne descritto come risolvere in
modo sistematico le equazioni di primo e secondo grado.
!
Proprietà dell’algoritmo:
• Non ambiguità: interpretazione univoca delle operazioni.
• Eseguibilità: ogni istruzione deve essere eseguibile.
• Finitezza: i passi indicati dall’algoritmo sono finiti.
16. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
16
Programma
La definizione di algoritmo prescinde dal linguaggio usato per descriverlo
e dall’entità esecutrice.
Per fare eseguire un algoritmo ad una macchina occorre descriverne le
istruzioni in un linguaggio comprensibile dalla macchina: scrivere un
programma.
Il linguaggio utilizzato è detto linguaggio di programmazione.
17. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
17
Albori della programmazione
18. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
18
Albori della programmazione
Durante la Seconda Guerra Mondiale nascono le prime macchine elettriche
programmabili.
!
!
!
!
!
!
!
!
!
ENIAC (Electronic Numerical Integrator and Computer) anno 1946, 480 k$, 18.000 valvole, 180 mq, 30
tonnellate, 200 kW.
Programmato mediante schede perforate.
19. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
19
Albori della programmazione
Il concetto di programma prescinde dalla natura elettronica della macchina.
!
!
!
!
!
!
!
!
!
!
!
Ada Lovelace, primo “programmatore” della storia. Nel 1842 scrisse un “programma” per il calcolo dei numeri
di Bernoulli con la macchina analitica di Babbage.
20. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
20
Albori della programmazione
Il concetto di programma prescinde anche dalla natura matematica del
problema.
Nel 1801 Joseph-Marie Jacquard inventò un telaio in grado di eseguire
disegni, guidato da un “programma” presente su schede perforate.
21. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
21
Rappresentazione degli algoritmi
Linguaggi informali Linguaggio naturale
Linguaggi semi-formali
Diagrammi di flusso
Pseudo-codice
Linguaggi formali Linguaggi di programmazione
22. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
22
Diagrammi di flusso
23. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
23
I diagrammi di flusso
Sono uno strumento semplice per la rappresentazione grafica degli
algoritmi.
24. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
24
Esempio: un diagramma di flusso
Calcolo del massimo comune divisore (MCD).
!
• Finchè M≠N
1. se M>N, sostituisci a M il valore di M-N
2. altrimenti sostituisci a N il valore N-M
• Il massimo comune divisore è M (oppure N), cioè il valore finale ottenuto
quando M ed N diventano uguali.
25. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
25
Esempio: un diagramma di flusso
26. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
26
Esempio: un diagramma di flusso
27. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
27
Gerarchia dei linguaggi
Livelli di astrazione dei linguaggi di programmazione (dal codice macchina
verso l’algoritmo).
Linguaggio macchina: linguaggio della CPU (dipende strettamente dal
calcolatore), le istruzioni sono codificate in binario.
Linguaggio assemblativo: linguaggio macchina tradotto in codice simbolico:
stesse istruzioni scritte in forma più comprensibile. Semplifica la
programmazione in linguaggio macchina.
Linguaggio ad alto livello: è basato su costrutti più astratti; non richiede un
conoscenza dettagliata della macchina, in larga misura indipendente dalla
macchina usata. Una istruzione di alto livello corrisponde a più istruzioni in
linguaggio macchina. Esempi: C, Fortran, Pascal, C++, Java, PHP, etc.
28. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
28
Sviluppo dei linguaggi di programmazione
• Anni ’50: FORTRAN, Algol, Lisp
• 1960: Cobol
• 1964: BASIC
• 1970: Pascal, Prolog
• 1972: C
• 1983: C++
• 1991: HTML, Visual Basic
• 1995: Java, PHP
• 1996: ASP
29. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
29
Diffusione dei linguaggi di programmazione
TIOBE Index for March 2014, http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
30. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
30
Elementi di linguaggi di programmazione
Lessico, sintassi e semantica.
• Lessico: insieme di termini appartenenti al linguaggio (parole chiave,
operatori, interpunzione).
• Sintassi: insieme di regole che determinano la correttezza grammaticale di
una frase.
• Semantica: significato di una frase.
!
Esempio:
• <frase> —> <soggetto> <predicato> <complemento>
• Marco gioca a calcio
• Per esprimere concetti sensati, le frasi devono essere corrette sia
sintatticamente che semanticamente.
31. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
31
Variabili e tipi
32. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
32
Le variabili e i tipi
Una variabile rappresenta un insieme di dati memorizzati e modificabili
durante l’esecuzione di un programma.
Una variabile ha un nome, che serve per accedere ai valori memorizzati.
Nei linguaggi tipizzati, una variabile è associata ad un tipo:
• booleano (boolean)
• intero (int)
• decimale (double)
• carattere (char)
• stringa (String)
33. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
33
Costrutti comuni ai linguaggi di programmazione
Un costrutto è una struttura sintattica.
Tutti i linguaggi di programmazione (imperativi e ad alto livello) definiscono
costrutti simili:
• Sequenza
• Alternativa
• Iterazione
• Procedura/Funzione
!
Faremo una panoramica dei principali costrutti in pseudo-codice.
34. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
34
if then else
E’ il costrutto basilare per la selezione del flusso del programma.
Consente una selezione “semplice (tra due alternative).
!
if (condizione) !
{ !
! costrutto!
} !
else !
{!
! costrutto!
}
35. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
35
if then else
Se la condizione non si verifica è possibile anche non far nulla.
!
if (condizione) !
{ !
! costrutto!
}
36. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
36
if then else: un esempio
leggi a;!
if (a<0) !
{ !
! b = -a;!
} !
else !
{!
! b = a;!
}!
scrivi b;
37. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
37
switch case
E’ il costrutto per la selezione tra più di due possibilità.
!
! ! switch (espressione) !
! ! {!
! ! ! case valore1: costrutto !
! ! ! case valore2: costrutto!
! ! ! ...!
! ! ! case valoren: costrutto!
! ! }
38. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
38
switch case: un esempio
E’ il costrutto per la selezione tra più di due possibilità.
!
switch (stato semaforo) !
{ !
! case rosso: fermati; !
! case giallo:!
! ! if (riesci a passare subito) { !
! ! ! passa;!
! ! } else {!
! ! ! fermati;!
! ! }
! case verde: passa;!
}
39. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
39
while
Consente di eseguire ripetutamente un blocco di istruzioni fintanto che è
vera una condizione.
!
while (condizione) !
{ !
! costrutto!
}
40. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
40
while: un esempio
!
leggi a; !
leggi b; !
c = 0;
while (b>0) !
{!
! c = c+a;!
! b = b-1;!
}!
scrivi c;
41. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
41
do while
E’ come il while, ma esegue sempre almeno una volta il blocco di istruzioni.
!
do !
{!
! costrutto
} while (condizione);
42. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
42
do while: un esempio
!
leggi a; !
leggi b; !
c = 0;
do !
{!
! c = c+a;!
! b = b-1;
} while (b>0); !
scrivi c;
43. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
43
for
Consente di eseguire ripetutamente un blocco di istruzioni sulla base di un
contatore.
!
for (inizializzazione; condizione; incremento) !
{ !
! costrutto!
}
44. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
44
for: un esempio
!
leggi a;
leggi b;
c=0;
for (i=1; i<=b; i++) !
{!
! c = c+a;!
}!
scrivi c;
45. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
45
Le procedure/funzioni
I programmi “reali” sono tipicamente troppo complessi e lunghi e per
essere riletti agevolmente non possono essere scritti come blocco unico
di istruzioni.
Si utilizzano le procedure/funzioni (oggi più comunemente dette metodi).
Una procedura/funzione è un sotto-programma che svolge una sequenza
di operazioni significativa (risolve un sotto-problema).
46. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
46
Le procedure/funzioni
!
function nome(parametri)!
{!
!! costrutto!
!! return valore;!
}
47. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
47
Introduzione alla programmazione Web
48. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
48
Definizione di web
Il World Wide Web, nel linguaggio comune abbreviato come “Web”, è un
servizio di Internet che permette di navigare ed usufruire di un insieme
vastissimo di contenuti (multimediali e non) collegati tra loro attraverso
legami (link), e di ulteriori servizi accessibili a tutti o ad una parte selezionata
degli utenti di Internet.
!
da Wikipedia
49. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
49
Altre definizioni
Protocollo: regole definite al fine di favorire la comunicazione tra una e più
entità.
Sistema client-server: indica un’architettura di rete nella quale
genericamente un computer client si connette ad un server per la fruizione di
un certo servizio, quale ad esempio la condivisione di una certa risorsa
hardware/software con altri client, appoggiandosi alla sottostante
architettura protocollare.
Uniform Resource Location (URL): una sequenza di caratteri che identifica
univocamente l’indirizzo di una risorsa in Internet.
!
da Wikipedia
50. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
50
Programmazione web
Lo scambio di informazioni tra i client (browser) ed i server avviene
attraverso un protocollo (http).
Il client “invoca” una risorsa (URL, Uniform Resource Location).
Il server risponde con il contenuto della risorsa (o con un errore).
51. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
51
Programmazione web
I contenuti delle risposte sono tipicamente documenti html (HyperText
Markup Language).
I contenuti possono essere statici o dinamici:
• Contenuti statici: il documento html ottenuto dal server “puntando” ad un
determinato URL è sempre lo stesso.
• Contenuti dinamici: il documento html ottenuto dal server “puntando” ad
un determinato URL viene ottenuto attraverso una elaborazione specifica,
il cui risultato può cambiare di volta in volta.
La programmazione web consiste nello scrivere programmi che vengono
eseguiti (sul server) alla ricezione di richieste attraverso il web e generano
contenuti da restituire attraverso il web (al client).
52. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
52
Esempio di pagina HTML statica
!
<html>!
! <head>!
! ! <title>Pagina HTML statica</title>!
! </head>!
! <body>!
! ! Questo è un esempio di pagina statica.!
! ! Puoi ricaricarla quante volte vuoi, ma il risultato
! ! sarà sempre lo stesso.!
! </body>!
</html>
53. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
53
Esempio di pagina HTML statica
Il contenuto di una pagina html è sempre racchiuso tra i tag<html> e </
html>.
Per ogni tag che si apre ce ne dev’essere sempre uno chesi chiude, fatta
eccezione per i tag a contenuto vuoto, per i quali è possibile usare un tag
che fa contemporaneamente da apertura e da chiusura.
Quando il client richiede il documento dell’esempio, il serverlo invia così
com’é, senza alcuna elaborazione.
54. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
54
Esempio di pagina HTML dinamica (PHP)
!
<html>!
! <head>!
! ! <title>Pagina HTML dinamica</title>!
! </head>!
! <body>!
! ! Questo è un esempio di pagina dinamica.!
! ! Ogni volta che la ricarichi aggiorna l’ora.!
! ! Sono le <?php echo date(‘H:m:s’); ?>!
! </body>!
</html>
55. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
55
Elaborazioni server-side
Quando il client richiede il documento dell’esempio il server:
• invia al client la parte di file html cos’ì com’è;
• elabora la porzione compresa tra <?php e ?> e sostituisce tutta la
porzione compresa tra <?php e ?> con il risultato dell’elaborazione (nel
caso specifico, l’ora).
L’orario è ogni volta elaborato dal server (elaborazione server-side).
Il linguaggi per la programmazione server-side sono svariati, ma il contenuto
inviato al client sarà sempre in formato html.
56. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
56
Elaborazioni client-side
In alcuni casi è necessario poter effettuare delle elaborazioni all’interno del
browser (lato client).
Ad esempio, nel caso di validazione di un modulo (form) può essere utile
effettuare una validazione della corretta compilazione dei campi sul client
prima di inviare la richiesta al server.
L’HTML non consente di effettuare elaborazione di dati, si ricorre in questi
casi al linguaggio JavaScript.
57. Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
57
Bibliografia
• Informatica di base. McGraw-Hill.
• Materiale didattico delle lezioni di Concetti base di programmazione del
prof. Giuseppe Massimiliano Mazzeo (UNICAL).