SlideShare a Scribd company logo
1 of 57
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).

More Related Content

What's hot

RocksDB detail
RocksDB detailRocksDB detail
RocksDB detailMIJIN AN
 
From SDN to Cloud Networking
From SDN to Cloud NetworkingFrom SDN to Cloud Networking
From SDN to Cloud NetworkingJuniper Networks
 
Treasure Dataを支える技術 - MessagePack編
Treasure Dataを支える技術 - MessagePack編Treasure Dataを支える技術 - MessagePack編
Treasure Dataを支える技術 - MessagePack編Taro L. Saito
 
Modeling Data and Queries for Wide Column NoSQL
Modeling Data and Queries for Wide Column NoSQLModeling Data and Queries for Wide Column NoSQL
Modeling Data and Queries for Wide Column NoSQLScyllaDB
 
Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...
Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...
Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...Hadjer BENHADJ DJILALI
 
Scaling for Performance
Scaling for PerformanceScaling for Performance
Scaling for PerformanceScyllaDB
 
Using Rook to Manage Kubernetes Storage with Ceph
Using Rook to Manage Kubernetes Storage with CephUsing Rook to Manage Kubernetes Storage with Ceph
Using Rook to Manage Kubernetes Storage with CephCloudOps2005
 
From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.Taras Matyashovsky
 
Cassandra Introduction & Features
Cassandra Introduction & FeaturesCassandra Introduction & Features
Cassandra Introduction & FeaturesDataStax Academy
 
Virtualisation de Machines avec Windows Hyper V
Virtualisation de Machines avec Windows Hyper VVirtualisation de Machines avec Windows Hyper V
Virtualisation de Machines avec Windows Hyper Vfabricemeillon
 
Etsy Activity Feeds Architecture
Etsy Activity Feeds ArchitectureEtsy Activity Feeds Architecture
Etsy Activity Feeds ArchitectureDan McKinley
 
Docker presentation | Paris Docker Meetup
Docker presentation | Paris Docker MeetupDocker presentation | Paris Docker Meetup
Docker presentation | Paris Docker MeetupdotCloud
 
Microchip: CXL Use Cases and Enabling Ecosystem
Microchip: CXL Use Cases and Enabling EcosystemMicrochip: CXL Use Cases and Enabling Ecosystem
Microchip: CXL Use Cases and Enabling EcosystemMemory Fabric Forum
 
[CNCF TAG-Runtime 2022-10-06] Lima
[CNCF TAG-Runtime 2022-10-06] Lima[CNCF TAG-Runtime 2022-10-06] Lima
[CNCF TAG-Runtime 2022-10-06] LimaAkihiro Suda
 
Virtualization - Kernel Virtual Machine (KVM)
Virtualization - Kernel Virtual Machine (KVM)Virtualization - Kernel Virtual Machine (KVM)
Virtualization - Kernel Virtual Machine (KVM)Wan Leung Wong
 
Non-Fluff Software Defined Networking, Network Function Virtualization and IoT
Non-Fluff Software Defined Networking, Network Function Virtualization and IoTNon-Fluff Software Defined Networking, Network Function Virtualization and IoT
Non-Fluff Software Defined Networking, Network Function Virtualization and IoTMark Ryan Castellani
 

What's hot (20)

RocksDB detail
RocksDB detailRocksDB detail
RocksDB detail
 
From SDN to Cloud Networking
From SDN to Cloud NetworkingFrom SDN to Cloud Networking
From SDN to Cloud Networking
 
Treasure Dataを支える技術 - MessagePack編
Treasure Dataを支える技術 - MessagePack編Treasure Dataを支える技術 - MessagePack編
Treasure Dataを支える技術 - MessagePack編
 
Modeling Data and Queries for Wide Column NoSQL
Modeling Data and Queries for Wide Column NoSQLModeling Data and Queries for Wide Column NoSQL
Modeling Data and Queries for Wide Column NoSQL
 
Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...
Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...
Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...
 
Cuda
CudaCuda
Cuda
 
Scaling for Performance
Scaling for PerformanceScaling for Performance
Scaling for Performance
 
Using Rook to Manage Kubernetes Storage with Ceph
Using Rook to Manage Kubernetes Storage with CephUsing Rook to Manage Kubernetes Storage with Ceph
Using Rook to Manage Kubernetes Storage with Ceph
 
Breaking the Memory Wall
Breaking the Memory WallBreaking the Memory Wall
Breaking the Memory Wall
 
From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.
 
clock-pro
clock-proclock-pro
clock-pro
 
Cassandra Introduction & Features
Cassandra Introduction & FeaturesCassandra Introduction & Features
Cassandra Introduction & Features
 
Virtualisation de Machines avec Windows Hyper V
Virtualisation de Machines avec Windows Hyper VVirtualisation de Machines avec Windows Hyper V
Virtualisation de Machines avec Windows Hyper V
 
Etsy Activity Feeds Architecture
Etsy Activity Feeds ArchitectureEtsy Activity Feeds Architecture
Etsy Activity Feeds Architecture
 
RISC-V: The Open Era of Computing
RISC-V: The Open Era of ComputingRISC-V: The Open Era of Computing
RISC-V: The Open Era of Computing
 
Docker presentation | Paris Docker Meetup
Docker presentation | Paris Docker MeetupDocker presentation | Paris Docker Meetup
Docker presentation | Paris Docker Meetup
 
Microchip: CXL Use Cases and Enabling Ecosystem
Microchip: CXL Use Cases and Enabling EcosystemMicrochip: CXL Use Cases and Enabling Ecosystem
Microchip: CXL Use Cases and Enabling Ecosystem
 
[CNCF TAG-Runtime 2022-10-06] Lima
[CNCF TAG-Runtime 2022-10-06] Lima[CNCF TAG-Runtime 2022-10-06] Lima
[CNCF TAG-Runtime 2022-10-06] Lima
 
Virtualization - Kernel Virtual Machine (KVM)
Virtualization - Kernel Virtual Machine (KVM)Virtualization - Kernel Virtual Machine (KVM)
Virtualization - Kernel Virtual Machine (KVM)
 
Non-Fluff Software Defined Networking, Network Function Virtualization and IoT
Non-Fluff Software Defined Networking, Network Function Virtualization and IoTNon-Fluff Software Defined Networking, Network Function Virtualization and IoT
Non-Fluff Software Defined Networking, Network Function Virtualization and IoT
 

Viewers also liked

Algoritmi e Calcolo Parallelo 2012/2013 - Calcolo Parallelo
Algoritmi e Calcolo Parallelo 2012/2013 - Calcolo ParalleloAlgoritmi e Calcolo Parallelo 2012/2013 - Calcolo Parallelo
Algoritmi e Calcolo Parallelo 2012/2013 - Calcolo ParalleloPier Luca Lanzi
 
Prevedere il futuro con twitter?
Prevedere il futuro con twitter?Prevedere il futuro con twitter?
Prevedere il futuro con twitter?Salvatore Cordiano
 
Algoritmi e strumenti per la Terapia Anticoagulante Orale
Algoritmi e strumenti per la Terapia Anticoagulante OraleAlgoritmi e strumenti per la Terapia Anticoagulante Orale
Algoritmi e strumenti per la Terapia Anticoagulante OraleSalvatore Cordiano
 
Corso di Versioning, Configuration & Document Management
Corso di Versioning, Configuration & Document ManagementCorso di Versioning, Configuration & Document Management
Corso di Versioning, Configuration & Document ManagementSalvatore Cordiano
 
Landing Page Testing To Increase Conversions
Landing Page Testing To Increase ConversionsLanding Page Testing To Increase Conversions
Landing Page Testing To Increase ConversionsAffiliate Summit
 
Flow Chart - Diagramma a blocchi
Flow Chart - Diagramma a blocchiFlow Chart - Diagramma a blocchi
Flow Chart - Diagramma a blocchidibari.92
 
Landingpage - Concetti base per la realizzazione di landingpage efficaci
Landingpage - Concetti base per la realizzazione di landingpage efficaciLandingpage - Concetti base per la realizzazione di landingpage efficaci
Landingpage - Concetti base per la realizzazione di landingpage efficaciMassimo Petrucci
 
Manuale presentazioni efficaci
Manuale presentazioni efficaciManuale presentazioni efficaci
Manuale presentazioni efficaciCristina Rigutto
 
Snapchat - Funzionalità e utilizzo per le Aziende Case Study & Best Practice
Snapchat - Funzionalità e utilizzo per le Aziende Case Study & Best PracticeSnapchat - Funzionalità e utilizzo per le Aziende Case Study & Best Practice
Snapchat - Funzionalità e utilizzo per le Aziende Case Study & Best PracticeGiuliano Ambrosio
 

Viewers also liked (15)

02 algo programmi
02 algo programmi02 algo programmi
02 algo programmi
 
Meccanismo Yes Man
Meccanismo Yes ManMeccanismo Yes Man
Meccanismo Yes Man
 
Algoritmi e Calcolo Parallelo 2012/2013 - Calcolo Parallelo
Algoritmi e Calcolo Parallelo 2012/2013 - Calcolo ParalleloAlgoritmi e Calcolo Parallelo 2012/2013 - Calcolo Parallelo
Algoritmi e Calcolo Parallelo 2012/2013 - Calcolo Parallelo
 
Prevedere il futuro con twitter?
Prevedere il futuro con twitter?Prevedere il futuro con twitter?
Prevedere il futuro con twitter?
 
Corso HTML5. Una pagina base
Corso HTML5. Una pagina baseCorso HTML5. Una pagina base
Corso HTML5. Una pagina base
 
Algoritmi e strumenti per la Terapia Anticoagulante Orale
Algoritmi e strumenti per la Terapia Anticoagulante OraleAlgoritmi e strumenti per la Terapia Anticoagulante Orale
Algoritmi e strumenti per la Terapia Anticoagulante Orale
 
Corso di Versioning, Configuration & Document Management
Corso di Versioning, Configuration & Document ManagementCorso di Versioning, Configuration & Document Management
Corso di Versioning, Configuration & Document Management
 
Introduzione ai Social Media
Introduzione ai Social MediaIntroduzione ai Social Media
Introduzione ai Social Media
 
Landing Page Testing To Increase Conversions
Landing Page Testing To Increase ConversionsLanding Page Testing To Increase Conversions
Landing Page Testing To Increase Conversions
 
Corso di HTML5 e CSS
Corso di HTML5 e CSSCorso di HTML5 e CSS
Corso di HTML5 e CSS
 
come costruire un algoritmo
come costruire un algoritmocome costruire un algoritmo
come costruire un algoritmo
 
Flow Chart - Diagramma a blocchi
Flow Chart - Diagramma a blocchiFlow Chart - Diagramma a blocchi
Flow Chart - Diagramma a blocchi
 
Landingpage - Concetti base per la realizzazione di landingpage efficaci
Landingpage - Concetti base per la realizzazione di landingpage efficaciLandingpage - Concetti base per la realizzazione di landingpage efficaci
Landingpage - Concetti base per la realizzazione di landingpage efficaci
 
Manuale presentazioni efficaci
Manuale presentazioni efficaciManuale presentazioni efficaci
Manuale presentazioni efficaci
 
Snapchat - Funzionalità e utilizzo per le Aziende Case Study & Best Practice
Snapchat - Funzionalità e utilizzo per le Aziende Case Study & Best PracticeSnapchat - Funzionalità e utilizzo per le Aziende Case Study & Best Practice
Snapchat - Funzionalità e utilizzo per le Aziende Case Study & Best Practice
 

Similar to Corso di Concetti base di programmazione

Pensiero computazionale, cos'è e come formare gli studenti
Pensiero computazionale, cos'è e come formare gli studentiPensiero computazionale, cos'è e come formare gli studenti
Pensiero computazionale, cos'è e come formare gli studentiDomenico Barile
 
Coding - intro -
Coding   - intro -Coding   - intro -
Coding - intro -alexperoni
 
Coding class da scratch a python
Coding class  da scratch a pythonCoding class  da scratch a python
Coding class da scratch a pythonEnrico La Sala
 
Coding, pattern e pensiero computazionale
Coding, pattern e pensiero computazionaleCoding, pattern e pensiero computazionale
Coding, pattern e pensiero computazionaleAlessandri Giuseppe
 
PHP, non lo stesso vecchio linguaggio
PHP, non lo stesso vecchio linguaggioPHP, non lo stesso vecchio linguaggio
PHP, non lo stesso vecchio linguaggioMassimiliano Arione
 
Introduzione alla programmazione
Introduzione alla programmazioneIntroduzione alla programmazione
Introduzione alla programmazioneEnrico La Sala
 
Pillole di programmazione in C
Pillole di programmazione in CPillole di programmazione in C
Pillole di programmazione in CNicola Corti
 
Programmazione funzionale: un primo approccio attraverso F#
Programmazione funzionale: un primo approccio attraverso F#Programmazione funzionale: un primo approccio attraverso F#
Programmazione funzionale: un primo approccio attraverso F#Commit University
 
Stampa 3d open source
Stampa 3d open sourceStampa 3d open source
Stampa 3d open sourceMarco Ferrara
 
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1Daniele Falamesca
 
Lezione 4 (7 marzo 2012)
Lezione 4 (7 marzo 2012)Lezione 4 (7 marzo 2012)
Lezione 4 (7 marzo 2012)STELITANO
 
Conferenza stampa 19 marzo 2015: ad un anno dall'apertura di Faberlab
Conferenza stampa 19 marzo 2015: ad un anno dall'apertura di FaberlabConferenza stampa 19 marzo 2015: ad un anno dall'apertura di Faberlab
Conferenza stampa 19 marzo 2015: ad un anno dall'apertura di FaberlabFaberLab
 
Introduzione al coding
Introduzione al codingIntroduzione al coding
Introduzione al codingPaolo Righetto
 

Similar to Corso di Concetti base di programmazione (20)

Pensiero computazionale, cos'è e come formare gli studenti
Pensiero computazionale, cos'è e come formare gli studentiPensiero computazionale, cos'è e come formare gli studenti
Pensiero computazionale, cos'è e come formare gli studenti
 
Corso Java - Introduzione
Corso Java - IntroduzioneCorso Java - Introduzione
Corso Java - Introduzione
 
platforms
platformsplatforms
platforms
 
Coding - intro -
Coding   - intro -Coding   - intro -
Coding - intro -
 
Coding class da scratch a python
Coding class  da scratch a pythonCoding class  da scratch a python
Coding class da scratch a python
 
Coding, pattern e pensiero computazionale
Coding, pattern e pensiero computazionaleCoding, pattern e pensiero computazionale
Coding, pattern e pensiero computazionale
 
Object Oriented Programming
Object Oriented ProgrammingObject Oriented Programming
Object Oriented Programming
 
PHP, non lo stesso vecchio linguaggio
PHP, non lo stesso vecchio linguaggioPHP, non lo stesso vecchio linguaggio
PHP, non lo stesso vecchio linguaggio
 
Introduzione alla programmazione
Introduzione alla programmazioneIntroduzione alla programmazione
Introduzione alla programmazione
 
Linux a scuola
Linux a scuolaLinux a scuola
Linux a scuola
 
Pillole di programmazione in C
Pillole di programmazione in CPillole di programmazione in C
Pillole di programmazione in C
 
Manuale python
Manuale pythonManuale python
Manuale python
 
Programmazione funzionale: un primo approccio attraverso F#
Programmazione funzionale: un primo approccio attraverso F#Programmazione funzionale: un primo approccio attraverso F#
Programmazione funzionale: un primo approccio attraverso F#
 
01 1 introduzione_a_ges
01 1 introduzione_a_ges01 1 introduzione_a_ges
01 1 introduzione_a_ges
 
Stampa 3d open source
Stampa 3d open sourceStampa 3d open source
Stampa 3d open source
 
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1
 
Lezione 4 (7 marzo 2012)
Lezione 4 (7 marzo 2012)Lezione 4 (7 marzo 2012)
Lezione 4 (7 marzo 2012)
 
Coding
CodingCoding
Coding
 
Conferenza stampa 19 marzo 2015: ad un anno dall'apertura di Faberlab
Conferenza stampa 19 marzo 2015: ad un anno dall'apertura di FaberlabConferenza stampa 19 marzo 2015: ad un anno dall'apertura di Faberlab
Conferenza stampa 19 marzo 2015: ad un anno dall'apertura di Faberlab
 
Introduzione al coding
Introduzione al codingIntroduzione al coding
Introduzione al coding
 

More from Salvatore Cordiano

Transformed: Moving to the Product Operating Model
Transformed: Moving to the Product Operating ModelTransformed: Moving to the Product Operating Model
Transformed: Moving to the Product Operating ModelSalvatore Cordiano
 
Executive Master in Business Administration
Executive Master in Business AdministrationExecutive Master in Business Administration
Executive Master in Business AdministrationSalvatore Cordiano
 
Facile.it Partner 🚀 Hackathon 2023 - What we learned
Facile.it Partner 🚀 Hackathon 2023 - What we learnedFacile.it Partner 🚀 Hackathon 2023 - What we learned
Facile.it Partner 🚀 Hackathon 2023 - What we learnedSalvatore Cordiano
 
Accrescere la motivazione per raggiungere gli obiettivi
Accrescere la motivazione per raggiungere gli obiettiviAccrescere la motivazione per raggiungere gli obiettivi
Accrescere la motivazione per raggiungere gli obiettiviSalvatore Cordiano
 
Migliora le prestazioni dei tuoi collaboratori
Migliora le prestazioni dei tuoi collaboratoriMigliora le prestazioni dei tuoi collaboratori
Migliora le prestazioni dei tuoi collaboratoriSalvatore Cordiano
 
Delivering Effective Feedback - FP Talks
Delivering Effective Feedback - FP TalksDelivering Effective Feedback - FP Talks
Delivering Effective Feedback - FP TalksSalvatore Cordiano
 
No Silver Bullet - Essence and Accident in Software Engineering
No Silver Bullet - Essence and Accident in Software EngineeringNo Silver Bullet - Essence and Accident in Software Engineering
No Silver Bullet - Essence and Accident in Software EngineeringSalvatore Cordiano
 
Facile.it Partner Hackathon - What we learned
Facile.it Partner Hackathon - What we learnedFacile.it Partner Hackathon - What we learned
Facile.it Partner Hackathon - What we learnedSalvatore Cordiano
 
FP Hackathon - Closing, remarks and awards ceremony
FP Hackathon - Closing, remarks and awards ceremonyFP Hackathon - Closing, remarks and awards ceremony
FP Hackathon - Closing, remarks and awards ceremonySalvatore Cordiano
 
Facile.it Partner Hackathon 2022
Facile.it Partner Hackathon 2022Facile.it Partner Hackathon 2022
Facile.it Partner Hackathon 2022Salvatore Cordiano
 
The Blake Mouton Managerial Grid
The Blake Mouton Managerial GridThe Blake Mouton Managerial Grid
The Blake Mouton Managerial GridSalvatore Cordiano
 
Facile.it Partner Hackathon (kick-off)
Facile.it Partner Hackathon (kick-off)Facile.it Partner Hackathon (kick-off)
Facile.it Partner Hackathon (kick-off)Salvatore Cordiano
 

More from Salvatore Cordiano (20)

Transformed: Moving to the Product Operating Model
Transformed: Moving to the Product Operating ModelTransformed: Moving to the Product Operating Model
Transformed: Moving to the Product Operating Model
 
Executive Master in Business Administration
Executive Master in Business AdministrationExecutive Master in Business Administration
Executive Master in Business Administration
 
Facile.it Partner 🚀 Hackathon 2023 - What we learned
Facile.it Partner 🚀 Hackathon 2023 - What we learnedFacile.it Partner 🚀 Hackathon 2023 - What we learned
Facile.it Partner 🚀 Hackathon 2023 - What we learned
 
Accrescere la motivazione per raggiungere gli obiettivi
Accrescere la motivazione per raggiungere gli obiettiviAccrescere la motivazione per raggiungere gli obiettivi
Accrescere la motivazione per raggiungere gli obiettivi
 
Il potere delle domande
Il potere delle domandeIl potere delle domande
Il potere delle domande
 
Impara a delegare
Impara a delegareImpara a delegare
Impara a delegare
 
Migliora il tuo ascolto
Migliora il tuo ascoltoMigliora il tuo ascolto
Migliora il tuo ascolto
 
Negoziazione organizzativa
Negoziazione organizzativaNegoziazione organizzativa
Negoziazione organizzativa
 
Migliora le prestazioni dei tuoi collaboratori
Migliora le prestazioni dei tuoi collaboratoriMigliora le prestazioni dei tuoi collaboratori
Migliora le prestazioni dei tuoi collaboratori
 
Charles Péguy - Il denaro
Charles Péguy - Il denaroCharles Péguy - Il denaro
Charles Péguy - Il denaro
 
Delivering Effective Feedback - FP Talks
Delivering Effective Feedback - FP TalksDelivering Effective Feedback - FP Talks
Delivering Effective Feedback - FP Talks
 
No Silver Bullet - Essence and Accident in Software Engineering
No Silver Bullet - Essence and Accident in Software EngineeringNo Silver Bullet - Essence and Accident in Software Engineering
No Silver Bullet - Essence and Accident in Software Engineering
 
Facile.it Partner Hackathon - What we learned
Facile.it Partner Hackathon - What we learnedFacile.it Partner Hackathon - What we learned
Facile.it Partner Hackathon - What we learned
 
FP Hackathon - Closing, remarks and awards ceremony
FP Hackathon - Closing, remarks and awards ceremonyFP Hackathon - Closing, remarks and awards ceremony
FP Hackathon - Closing, remarks and awards ceremony
 
Facile.it Partner Hackathon 2022
Facile.it Partner Hackathon 2022Facile.it Partner Hackathon 2022
Facile.it Partner Hackathon 2022
 
Remarks about Ownership
Remarks about OwnershipRemarks about Ownership
Remarks about Ownership
 
Introducing Kaizen
Introducing KaizenIntroducing Kaizen
Introducing Kaizen
 
Introducing Eisenhower Matrix
Introducing Eisenhower MatrixIntroducing Eisenhower Matrix
Introducing Eisenhower Matrix
 
The Blake Mouton Managerial Grid
The Blake Mouton Managerial GridThe Blake Mouton Managerial Grid
The Blake Mouton Managerial Grid
 
Facile.it Partner Hackathon (kick-off)
Facile.it Partner Hackathon (kick-off)Facile.it Partner Hackathon (kick-off)
Facile.it Partner Hackathon (kick-off)
 

Corso di Concetti base di programmazione

  • 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 &egrave; un esempio di pagina statica.! ! ! Puoi ricaricarla quante volte vuoi, ma il risultato ! ! sar&agrave; 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 &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, 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).