Corso di
Concetti base di programmazione
Master in Sviluppo di Applicazioni Web, Mobile e Social Media
@parallelitSalvatore Cordiano
#masem
Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
2
Salvatore Cordiano
s.cordiano@posytron.com
salvatorecordiano
@parallelit
fb.com/salvatorecordiano
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
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.
Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
5
Architettura dei Calcolatori
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).
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.
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.
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?
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.
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.
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.
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
Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
14
Algoritmo
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.
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.
Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
17
Albori della programmazione
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.
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.
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.
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
Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
22
Diagrammi di flusso
Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
23
I diagrammi di flusso
Sono uno strumento semplice per la rappresentazione grafica degli
algoritmi.
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.
Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
25
Esempio: un diagramma di flusso
Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
26
Esempio: un diagramma di flusso
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.
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
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
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.
Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
31
Variabili e tipi
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)
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.
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!
}
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!
}
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;
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!
! ! }
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;!
}
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!
}
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;
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);
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;
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!
}
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;
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).
Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
46
Le procedure/funzioni
!
function nome(parametri)!
{!
!! costrutto!
!! return valore;!
}
Reggio Calabria, 4 aprile 2014
Concetti base di programmazione
47
Introduzione alla programmazione Web
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
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
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).
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).
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 &egrave; un esempio di pagina statica.!
! ! Puoi ricaricarla quante volte vuoi, ma il risultato
! ! sar&agrave; sempre lo stesso.!
! </body>!
</html>
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.
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 &egrave; un esempio di pagina dinamica.!
! ! Ogni volta che la ricarichi aggiorna l’ora.!
! ! Sono le <?php echo date(‘H:m:s’); ?>!
! </body>!
</html>
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.
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.
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).

Corso di Concetti base di programmazione

  • 1.
    Corso di Concetti basedi programmazione Master in Sviluppo di Applicazioni Web, Mobile e Social Media @parallelitSalvatore Cordiano #masem
  • 2.
    Reggio Calabria, 4aprile 2014 Concetti base di programmazione 2 Salvatore Cordiano s.cordiano@posytron.com salvatorecordiano @parallelit fb.com/salvatorecordiano
  • 3.
    Reggio Calabria, 4aprile 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, 4aprile 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, 4aprile 2014 Concetti base di programmazione 5 Architettura dei Calcolatori
  • 6.
    Reggio Calabria, 4aprile 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, 4aprile 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, 4aprile 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, 4aprile 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, 4aprile 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, 4aprile 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, 4aprile 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, 4aprile 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, 4aprile 2014 Concetti base di programmazione 14 Algoritmo
  • 15.
    Reggio Calabria, 4aprile 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, 4aprile 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, 4aprile 2014 Concetti base di programmazione 17 Albori della programmazione
  • 18.
    Reggio Calabria, 4aprile 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, 4aprile 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, 4aprile 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, 4aprile 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, 4aprile 2014 Concetti base di programmazione 22 Diagrammi di flusso
  • 23.
    Reggio Calabria, 4aprile 2014 Concetti base di programmazione 23 I diagrammi di flusso Sono uno strumento semplice per la rappresentazione grafica degli algoritmi.
  • 24.
    Reggio Calabria, 4aprile 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, 4aprile 2014 Concetti base di programmazione 25 Esempio: un diagramma di flusso
  • 26.
    Reggio Calabria, 4aprile 2014 Concetti base di programmazione 26 Esempio: un diagramma di flusso
  • 27.
    Reggio Calabria, 4aprile 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, 4aprile 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, 4aprile 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, 4aprile 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, 4aprile 2014 Concetti base di programmazione 31 Variabili e tipi
  • 32.
    Reggio Calabria, 4aprile 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, 4aprile 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, 4aprile 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, 4aprile 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, 4aprile 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, 4aprile 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, 4aprile 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, 4aprile 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, 4aprile 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, 4aprile 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, 4aprile 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, 4aprile 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, 4aprile 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, 4aprile 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, 4aprile 2014 Concetti base di programmazione 46 Le procedure/funzioni ! function nome(parametri)! {! !! costrutto! !! return valore;! }
  • 47.
    Reggio Calabria, 4aprile 2014 Concetti base di programmazione 47 Introduzione alla programmazione Web
  • 48.
    Reggio Calabria, 4aprile 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, 4aprile 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, 4aprile 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, 4aprile 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, 4aprile 2014 Concetti base di programmazione 52 Esempio di pagina HTML statica ! <html>! ! <head>! ! ! <title>Pagina HTML statica</title>! ! </head>! ! <body>! ! ! Questo &egrave; un esempio di pagina statica.! ! ! Puoi ricaricarla quante volte vuoi, ma il risultato ! ! sar&agrave; sempre lo stesso.! ! </body>! </html>
  • 53.
    Reggio Calabria, 4aprile 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, 4aprile 2014 Concetti base di programmazione 54 Esempio di pagina HTML dinamica (PHP) ! <html>! ! <head>! ! ! <title>Pagina HTML dinamica</title>! ! </head>! ! <body>! ! ! Questo &egrave; 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, 4aprile 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, 4aprile 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, 4aprile 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).