Fondamenti di Programmazione

Documenti analoghi
Introduzione al Linguaggio C Corso di Informatica Laurea in Fisica

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Programmazione C Massimo Callisto De Donato

Linguaggi di Programmazione

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Il linguaggio di programmazione Python

Il linguaggio Python

Unità Didattica 2 I Linguaggi di Programmazione

Introduzione alla programmazione. Walter Didimo

Corso Programmazione

Fondamenti VBA. Che cos è VBA

LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware

Linguaggi di Programmazione

ISTITUTO TECNICO INDUSTRIALE STATALE "G. MARCONI" Via Milano n PONTEDERA (PI) DIPARTIMENTO: Informatica

LINGUAGGI DI ALTO LIVELLO

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

Programmazione in C. Requisiti didattici

Sommario PREFAZIONE...XI CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 CAPITOLO 2: INTRODUZIONE ALLA PROGRAMMAZIONE IN C...

Indice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX

FONDAMENTI DI INFORMATICA

Corso di Fondamenti di Informatica Linguaggi di Programmazione

Indice. Prefazione. 3 Oggetti e Java 53

Informatica Generale Andrea Corradini I linguaggi di programmazione

Linguaggi di alto livello, compilatori e interpreti

Usare Python in Linux

Docente: Prof. Marco Patella Tutor: Vincenzo Lomonaco

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

Introduzione a Visual Studio Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Introduzione a Java. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni

Fasi di un Compilatore

Introduzione al Linguaggio C ed all IDE DEV-C++

TEORIE E TECNICHE PER LA COMUNICAZIONE DIGITALE

Laboratorio di Programmazione Lezione 1. Cristian Del Fabbro

Prefazione. Capitolo 1 Sistemi di elaborazione 1

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

Funzioni, Stack e Visibilità delle Variabili in C

Modulo 1. Concetti base della Tecnologia dell informazione. Prof. Nicolello Cristiano. Modulo 1

Problemi, algoritmi, calcolatore

Linguaggio C: introduzione

COMPILAZIONE. Tarsformazione di linguaggi

PROGRAMMAZIONE DISCIPLINARE LICEO SCIENTIFICO OPZIONE SCIENZE APPLICATE INFORMATICA CLASSE QUINTA

Introduzione alla Programmazione. Giselda De Vita

Linguaggi di programmazione e astrazione

Corso di Laurea in Ingegneria Informatica (L8) Anno Accademico 2015/2016 FONDAMENTI DI INFORMATICA

L hardware da solo non è sufficiente per il funzionamento dell elaboratore È necessario introdurre il software:

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio)

Concetti Introduttivi. Il Computer

Teoria dell Informazione

Dall algoritmo al programma

Programmazione di INFORMATICA e Laboratorio

Cosa è l Informatica?

Liceo Marie Curie (Meda) Scientifico Classico Linguistico PROGRAMMAZIONE DISCIPLINARE PER COMPETENZE

Linguaggi di programmazione

Fondamenti di Programmazione

LABORATORIO DI INFORMATICA

Il calcolatore. Architettura di un calcolatore (Hardware)

Perché il linguaggio C?

Esempio di Patto Formativo per la classe terza

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A

LA METAFORA DELL UFFICIO

Primi passi col linguaggio C

SISTEMI OPERATIVI, RETI, INTERNET

Linguaggi di programmazione - Principi e paradigmi 2/ed Maurizio Gabbrielli, Simone Martini Copyright The McGraw-Hill Companies srl

Fondamenti di Informatica (lettere A-I) A

Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema

Corso di Laurea in Informatica Basi di Dati a.a

Il concetto di calcolatore e di algoritmo

Lezione 1. Problemi Algoritmi Programmi

Corso di. Fondamenti di Informatica T

Transcript:

Fondamenti di Programmazione Prof. Mauro Gaspari: gaspari@cs.unibo.it Tutor: Dott. Davide Guidi: dguidi@cs.unibo.it Corso Coordinato con: Laboratorio di Linguaggi di Programmazione Prof. Angela Spighetti: angspi@libero.it

Scopo del Corso Trasmettere agli studenti la padronanza dei fondamenti di programmazione tipica di un informatico. La capacita' di formulare problemi; sviluppare soluzioni creative; realizzare tali soluzioni in modo chiaro ed accurato in un linguaggio di programmazione; NB. Corso fondamentale per poter seguire tutti i corsi su materie informatiche degli anni successivi.

Organizzazione del Corso Lezioni di Fondamenti di Programmazione Prof. Mauro Gaspari Corso di Laboratorio Prof. Angela Spighetti Corso Integrativo (interfacce grafiche) Dott. Davide Guidi

Programma 1 Il modo con cui si programma: il concetto di programma, debugging, tipologie di errori, linguaggi formali e naturali, un primo programma. Variabili, espressioni e comandi: valori e tipi, variabili, keywords, comandi, valutazione di espressioni, operatori e operandi, composizione, commenti. Funzioni: conversione di tipi e coercion, funzioni matematiche, definizione di nuove funzioni, flusso di esecuzione, parametri ed argomenti. Condizionali e ricorsione: espressioni booleane, esecuzioni condizionali e alternative, condizionali concatenati e innestati, ricorsione infinita.

Programma 2 Sviluppo di programmi: funzioni con risultato, composizione di funzioni, controlli sui tipi. Iterazione: assegnamenti multipli, i costrutti while e for, break e continue, tabelle. Tipi di dati strutturati: stringhe, liste, tuple, dizionari, files ed eccezioni. Alcuni concetti di Programmazione ad Oggetti. Esempi di programmazione avanzata: liste con puntatori, stack, code, alberi.

Modalità d'esame Prove scritte: Scritto (la mattina): teoria e programmazione. Prova in laboratorio (il pomeriggio): Esame di Laboratorio di Fondamenti di Programmazione (voto a se ma solo per chi passa lo scritto). Progetto obbligatorio: interfacce grafiche in python. va consegnato prima della prova orale finale. gruppi di 1, 2 o 3 persone (votazione massima rispettivamente +3, +2, +1 da sommarsi al voto dello scritto). Prova orale con discussione progetto.

Parziali Primo parziale: scritto teoria e programmazione. Secondo parziale: scritto teoria e programmazione. Prova pratica in laboratorio: (Esame di Laboratorio di Fondamenti di Programmazione). Orale e discussione progetto.

Materiale Didattico TESTO ADOTTATO:How to Think Like a Computer Scientist: Learning with Python, by Allen Downey, Jeff Elkner and Chris Meyers. Gree Tea Press (disponibile in rete: http://thinkpython.com/ e in italiano: http://www.python.it/doc/howtothink/howtothink html it/index.htm). DA CONSULTARE: Python how to program. Deitel, Deitel, Liperi, Wiedermann, PRENTICE HALL 2002. Materiale in rete: Sito ufficiale di Python: http://www.python.org/ Sito italiano di Python: http://www.python.it/ Sito web del corso: http://www.cs.unibo.it/~gaspari/www/teaching

Cosa è Python

Linguaggi di Programmazione Python e' un esempio di linguaggio ad alto livello come C, C++, Perl, Java. Significa che esistono anche linguaggi a basso livello linguaggio macchina assembler

Alto livello e basso livello Linguaggi ad alto livello... print b*h/2... Linguaggi a aasso livello LOAD r1,b LOAD r2,h MUL r1,r2 DIV r1,#2 RET 000100100100010 100100100111011 0010101101001.. Assembler Linguaggio macchina

Programmi I linguaggi di programmazione servono per scrivere programmi. Il codice di un programma si dice anche codice sorgente (source code) Un programma P scritto nel linguaggio L P L Si tratta di codice sorgente di P e' scritto nel linguaggio L che in genere e' memorizzato su un file............

Il linguaggio macchina Solo il linguaggio macchina e' eseguibile direttamente da un computer Ogni computer ha un suo linguaggio macchina Un computer con linguaggio macchina M M

Esecuzione Ogni computer e' in grado di eseguire programmi solo nel suo linguaggio macchina P M M

Problematiche Difficile e dispendioso scrivere programmi in linguaggio macchina e in generale con i linguaggi a basso livello. Accadeva una volta con i primi computer. Ora i linguaggi a basso livello si usano solo in poche applicazioni molto specializzate.

Vantaggi dei linguaggi ad alto livello E' piu' semplice programmare con i linguaggi ad alto livello. I programmi si scrivono piu' velocemente. I programmi scritti con linguaggi ad alto livello sono portabili (eseguibili su computer diversi con poche o nessuna modifica). Mentre un programma in linguaggio macchina gira solo sul un certo tipo di computer.

Pero' I programmi scritti nei linguaggi ad alto livello non si possono eseguire direttamente sui computer. Un programma P scritto nel linguaggio ad alto livello L non può essere eseguito su un computer con linguaggio macchina M. P L M

Esecutori per linguaggi di programmazione Sono necessari dei programmi di supporto per eseguire il linguaggi ad alto livello: Interpreti. Compilatori.

Interpreti Un interprete per un linguaggio L permette di eseguire programmi scritti nel linguaggio L. Un interprete per un linguaggio L e' un programma che prende come ingresso un programma sorgente scritto nel linguaggio L e lo esegue istruzioni dopo istruzione. Un interprete per il linguaggio L scritto in M. L M Un interprete può essere scritto in linguaggio macchina.

Esecuzione di programmi python L'interprete python permette di eseguire un programma P scritto in python in una macchina M. NB. Python e' un linguaggio interpretato, in altre parole un linguaggio eseguito con un interprete. P Python Python M M

I complilatori L'alternativa all'interprete è tradurre i programmi sorgenti in linguaggio macchina. Questo è il ruolo del compilatore. Anche il compilatore è un programma che traduce codice sorgente di un linguaggio ad alto livello in un linguaggio a basso livello (in genere linguaggio macchina). Un compilatore che traduce codice sorgente scritto nel linguaggio L in codice oggetto del linguaggio macchina M. L > M M

Un programma scritto in un linguaggio ad alto livello L una volta tradotto da un compilatore diventa eseguibile. Codice sorgente P L L > M P M Codice oggetto eseguibile NB. anche il compilatore deve essere eseguito (in questo caso) sulla macchina M per poter effettuare la traduzione. M M M

L'interprete python Funzionamento interattivo. interprete esempio di comandi Invocazione di un programma scritto su file Il file termina con.py editare il file name.py eseguire python name.py

Ma cosa è un programma? Un programma è una sequenza di istruzioni che specifica come eseguire un certo calcolo detto anche computazione. Una computazione può essere di tipo matematico ma puo' essere anche di tipo simbolico. Ad esempio cercare e rimpiazzare alcune frasi in un documento di testo.

Alcune tipologie di istruzioni di base comuni a più linguaggi di programmazione Input Output Matematiche Esecuzioni condizionali Ripetizioni (cicli) La programmazione si può vedere come un processo che scompone i problemi da risolvere in tanti sotto problemi fino a quando questi sono risolvibili con una di queste istruzioni di base.

Bugs e Debugging! Bug (o baco in italiano) Debugging (o debuggare! in italiano) Si tratta di una capacita' necessaria per poter programmare. NB. Non esistono mai programmi senza errori! Se un programma non funziona...si parte con il debugging!

Tipologie di bugs (errori) Errori sintattici > syntax error il programma e' scritto male e non puo' essere eseguito. Se c'e' un errore sintattico l'interprete python termina immediatamente. Errori a tempo di esecuzione (runtime) sono spesso chiamati eccezioni (exceptions). Rari nei programmi piccoli. Errori semantici: il programma viene eseguito con successo e termina ma non fa' quello per cui era stato scritto. Questo vuol dire che il significato del programma, la semantica, e' sbagliato.

Debugging Task creativo come quello di un investigatore. Come mai un programma non funziona? In genere si procede per ipotesi e si prova... il programma corretto. Se l'ipotesi era sbagliata bisogna cercarne un altra fino ad escludere tutte le possibilita'.

Linguaggi formali e naturali Linguaggi naturali: sono le lingue normalmente parlate nelle varie nazioni. Linguaggi formali: linguaggi progettati per applicazioni specifiche. Per esempio i linguaggi della matematica o della logica. I linguaggi di programmazione sono linguaggi formali progettati per esprimere calcoli (computazioni)

Linguaggi Formali: la sintassi Regole strette rispetto alla sintassi. Sintassi organizzata a due livelli: token: singoli elementi che costituiscono un programma ad esempio: l'istruzione print, il numero 1, l'operatore +, l'operatore =, etc etc... strutture di frase: regole grammaticali che dicono come comporre i token per realizzare un programma. Il parsing e' quel processo che ci permette date le regole grammaticali di comprendere la struttura di una frase.

Differenze tra linguaggi formali e naturali Ambiguità: Il linguaggio naturale e' pieno di ambiguita', mentre i linguaggi formali sono stati progettati per essere quasi o completamente non ambigui. Ridondanza: tipicamente i linguaggi naturali sono molto ridondanti, ci sono molti modi per dire le stesse cose. I linguaggi formali sono meno ridondanti e più concisi. Nonletteralita': I linguaggi naturali hanno molti idiomi e metafore che non sono presenti nei linguaggi formali.

Un primo programma In genere il primo programma che si presenta quando si introduce un nuovo linguaggio e' chiamato Hello, World! perche' e' il programma che stampa questa frase. in python: print Hello, World!