Introduzione alla programmazione
Prof. Daniele Contarino
❑Introduzione
❑Dal problema all’algoritmo
❑Implementazione degli algoritmi
❑ I compilatori e gli ambienti di sviluppo integrato
Indice degli argomenti
Cosa significa per te la parola
INFORMATICA ?
Domanda
INFORMATICA è l’unione di due parole
INFORMAZIONE AUTOMAZIONE
+
Introduzione
Con il termine Informatica si intende la scienza che studia il trattamento automatico delle
informazioni tramite gli elaboratori
Introduzione
Informatica in inglese viene tradotto in Computer Science
ICT (Information and
Communication Technology) descrive l’industria e i servizi
legati all’informatica e
Introduzione
Dati in ingresso
INPUT
Elaboratore
Dati in uscita OUTPUTIMPOSTAZIONI INTERNE
Struttura di un elaboratore
Nastro infinito
PROGRAMMA
Unità di elaborazione
Sinistra Destra
Testina di
lettura/scrittura
DATI
Macchina di Turing (1936)
Macchina di Turing (1936)
Per iferica di Input
CPU
Memoria Centrale
ALU
UC
Periferica d i output
Registri
Cache
Architettura di Von Neumann (1945)
Esercizio Macchina di Turing con Doodle di Google
https://www.google.com/doodles/
alan-turings-100th-birthday
Macchina di Turing
✓ Introduzione
❑Dal problema all’algoritmo
❑Implementazione degli algoritmi
❑ I compilatori e gli ambienti di sviluppo integrato
Indice degli argomenti
Introduzione alla programmazione 13 di 47 Daniele Contarino
il termine Algoritmo deriva dalla
latinizzazione del nome di uno dei più importanti matematici di sempre, l’arabo Mohammed ibn Musà al-Khuwarizmi
(Corasmia, ~ 780 d.c. – ~ 850 d.c.).
Esso diffuse in occidente il sistema di numerazione indo-arabico ed
introdusse la notazione posizionale e il numero zero.
Algoritmo: storia e significato
Con Algoritmo intendiamo una sequenza di due o più operazioni elementari che conduce a un ben determinato risultato in un tempo finito.
Un algoritmo per essere definito tale deve possedere le seguenti proprietà:
1. Finitezza: le istruzioni non possono essere infinite.
2. Non ambiguità: si raggiunge un solo risultato con più passaggi, non più risultati con un solo algoritmo.
3. Generalità: un algoritmo non risolve un singolo problema, ma una gamma di problemi.
4. Correttezza: le istruzione devono portare alla soluzione giusta
Definizione di Algoritmo
Introduzione alla programmazione 15 di 47 Daniele Contarino
Benché gli algoritmi vengono eseguiti dai computer, la loro
realizzazione è una prerogativa (fino ad ora) esclusiva dell’essere umano.
Il programmatore e l’analista sono quei professionisti che, tramite:
• La conoscenza (del problema, del contesto e dei strumenti a sua disposizione);
• I processi creativi;
• L’esperienza;
• I metodi di studio e di lavoro;
riescono a sviluppare l’algoritmo per la risoluzione del problema.
Definizione di Algoritmo
NO!
Esiste un metodo uguale per tutti, sempre valido ed automatico per
definire un algoritmo?
Introduzione alla programmazione 17 di 47 Daniele Contarino
Benché non esista un metodo sempre valido per la realizzazione degli algoritmi, esistono delle "buone pratiche" che possono indicare la
strada da seguire per l’analisi del problema e la stesura del relativo algoritmo
Realizzare un algoritmo
"Dividi e comanda" è una locuzione latina che descrive una strategia politica adottata dai tiranni che, per
controllare il popolo, risulta utile dividerlo e mettere in rivalità le varie fazioni.
Per la risoluzione dei problemi si usa lo stesso stratagemma, ovvero si cerca di dividere il problema principale in sotto problemi più semplice, fino ad rendere elementari le operazioni da svolgere.
Divide et impera
Introduzione alla programmazione 19 di 47 Daniele Contarino
Nello studio di un determinato problema può essere utile (se non fondamentale) porsi tre domande:
• Quali dati riceve in ingresso il mio algoritmo?
• Qual è il risultato atteso?
• Qual è la correlazione tra i
dati in ingresso e quelli in uscita?
Analizzare i dati
Realizziamo il nostro primo algoritmo, ovvero cuciniamo una torta!
L’algoritmo della torta
Introduzione alla programmazione 21 di 47 Daniele Contarino
Dati in ingresso:
Farina, zucchero semolato,
zucchero a velo, latte, uova, cioccolato
Dati in uscita attesi:
Una torta (ma va?!)
L’algoritmo della torta
Inizio;
Prendere la farina, lo zucchero, il latte, le uova e il cioccolato;
Prendere una terrina;
Versare nella terrina la farina, lo zucchero e il latte;
Mescolare;
Versare nell’impasto le uova;
Mescolare;
Dividere in due l’impasto;
L’algoritmo della torta
Introduzione alla programmazione 23 di 47 Daniele Contarino
Nel secondo impasto aggiungere il cioccolato;
Mescolare;
Prendere una teglia da forno;
Versare il primo impasto;
Versare il secondo impasto;
Cuocere la torta a 180 gradi Celsius fino a quando non sarà cotta;
Spolverare la torta con lo zucchero a velo;
Servire;
Fine.
L’algoritmo della torta
Oltre al metalinguaggio (la tecnica con cui abbiamo descritto l’algoritmo della torta) esiste un metodo grafico molto usato che è quello del Flow Chart
(diagramma di flusso)
Flow Chart
Introduzione alla programmazione 25 di 47 Daniele Contarino
Flow Chart
Inizio o fine operazione
Operazione in input o output Operazione interna
Scelta
Flusso dell'algoritmo
Flow Chart
Prendere la farina, lo zucchero, il latte, le uova e il cioccolato
INIZIO
Versare nella terrina la farina, lo zucchero e il latte
Prendere la terrina
Mescolare
IN
IN
Introduzione alla programmazione 27 di 47 Daniele Contarino
Flow Chart
Mescolare
Dividere in due l’impasto
Versare il cioccolato nel secondo impasto
Mescolare Versare le uova
Flow Chart
La torta è cotta?
Versare il primo impasto
Inserire nel forno a 180 °C
Aspetta Versare il secondo impasto
NO
SI
Introduzione alla programmazione 29 di 47 Daniele Contarino
Flow Chart
Spolverare la torta con lo zucchero a velo
Servire la torta
FINE
Prendere lo zucchero a velo
IN
OUT
✓ Introduzione
✓ Dal problema all’algoritmo
❑Implementazione degli algoritmi
❑ I compilatori e gli ambienti di sviluppo integrato
Indice degli argomenti
Introduzione alla programmazione 31 di 47 Daniele Contarino
Una volta definito l’algoritmo, il programmatore tramite l’uso di un linguaggio di programmazione
(e tutti gli annessi e connessi) riesce ad implementare l’algoritmo ed
a realizzare il programma che potrà essere eseguito dal
computer.
Dall’algoritmo al programma
Un linguaggio di programmazione, similmente a un linguaggio umano, è un insieme formato da regole
sintattiche e lessicali che possono essere sia comprese dalle persone che essere convertite in codice macchina.
Il linguaggio di programmazione
Introduzione alla programmazione 33 di 47 Daniele Contarino
La scelta di un linguaggio dipende da diversi fattori, tra cui:
• Caratteristiche intrinseche dell’algoritmo;
• Piattaforma di destinazione;
• Eventuali costi di licenza/IDE;
• Conoscenza più o meno approfondita del programmatore.
Quale linguaggio scegliere?
Classificazione di alcuni linguaggi per paradigma
• Programmazione strutturata (C, Pascal);
• Programmazione orientata agli oggetti (C++, Java, C#, .NET);
• Programmazione funzionale (Haskell, Schema, LISP);
• Programmazione procedurale (Fortran);
Quale linguaggio scegliere?
Introduzione alla programmazione 35 di 47 Daniele Contarino
Attualmente ci sono alcune centinaia di linguaggi di
programmazione differenti.
Ecco la top 10 dei linguaggi più usati al mondo.
Fonte: https://www.tiobe.com/tiobe-index/
Quale linguaggio scegliere?
Pos. Programming Language 1 Java
2 C
3 C++
4 C#
5 Python 6 JavaScript
7 PHP
8 Visual Basic .NET 9 Assembly language 10 Ruby
✓ Introduzione
✓ Dal problema all’algoritmo
✓ Implementazione degli algoritmi
❑ I compilatori e gli ambienti di sviluppo integrato
Indice degli argomenti
Introduzione alla programmazione 37 di 47 Daniele Contarino
Una volta scritto il programma in un linguaggio di programmazione, esso deve essere tradotto nel codice
comprensibile al computer.
Questa traduzione avviene in due fasi:
1. Compilazione 2. Linkaggio
Il processo di generazione del programma
Una volta scritto il programma nel linguaggio di programmazione
desiderato (codice sorgente), esso verrà "dato in pasto" ad un
compilatore capace di leggere quel specifico linguaggio e
genererà un file in un linguaggio intermedio chiamato file oggetto
La compilazione
Introduzione alla programmazione 39 di 47 Daniele Contarino
Per realizzare il file oggetto, il compilatore prima deve effettuare due analisi:
1. Analisi lessicale (scanner)
Il compilatore verifica che le tutte le parole del codice (token) sorgente siano compatibili con linguaggio di
programmazione;
2. Analisi sintattica e semantica (parser)
Il compilatore controlla se la concatenazione dei token rispetti le regole del compilatore
La compilazione
Dopo la fase di compilazione verrà
prodotto il file oggetto, ovvero un file intermedio.
Ora, per realizzare il programma eseguibile, è necessario unire il file oggetto con le librerie (frammenti di
codice comuni già scritti che permettono di usare il video, la tastiera, etc).
Questa fase si chiama fase di linkaggio e viene svolta dal linker
Il linkaggio
Introduzione alla programmazione 41 di 47 Daniele Contarino
Il processo di compilazione linkaggio
Codice sorgente File oggetto
File eseguibile
Librerie Compilazione
Analisi lessicale Analisi semantica
Linkaggio
L’attività di sviluppo di un software è un’attività piuttosto complessa.
Benché per realizzare un programma potrebbe bastare il blocco note e il compilatore + linker, per programmi medio – grandi c’è bisogno di altri strumenti per facilitare il lavoro di analisi e per lavorare in team.
Gli ambienti di sviluppo integrato
Introduzione alla programmazione 43 di 47 Daniele Contarino
Gli ambienti di sviluppo integrato (Integrated development
environment – IDE) sono dei software specializzati per lo
sviluppo dei programmi, integrati con altri strumenti accessori che agevolano l’attività di correzione degli errori (debug) e la
manutenzione nel tempo
Gli ambienti di sviluppo
IDE
Scrivi
Debug
Compila
Esegui
Documenta
Negli ambienti di sviluppo integrati solitamente troviamo:
• L’editor
• Uno o più compilatori
• Il debugger
• Strumenti di deploy
• Gestione dei Unit test
• Strumenti per il controllo di versione
• Piccoli strumenti per l’amministrazione di database
Gli ambienti di sviluppo
Introduzione alla programmazione 45 di 47 Daniele Contarino
Ecco alcuni dei più noti ambienti di sviluppo
Gli ambienti di sviluppo
Introduzione alla programmazione
Prof. Daniele Contarino
Questa presentazione è disponibile su danielecontarino.it
Tutti i marchi riportati appartengono ai legittimi proprietari; marchi di