Corso Programmazione 2011-2012

Похожие документы
Corso Programmazione

Corso Programmazione

Corso Programmazione

Corso Programmazione

Fondamenti di Informatica - 9Cfu Corso di Laurea in Ingegneria Informatica (ord. 270)

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

Fondamenti di Informatica Ingegneria Clinica Lezione 15/10/2009. Prof. Raffaele Nicolussi

Le Macchine di Turing

Informatica Generale

Nozione di algoritmo. Gabriella Trucco

Università degli Studi di Padova Dipartimento di Matematica. - Corso di Laurea in Informatica

LINGUAGGI DI PROGRAMMAZIONE

ALGEBRA DELLE PROPOSIZIONI

Corso di Informatica

Laboratorio di Programmazione 2

Appunti sulla Macchina di Turing. Macchina di Turing

Funzioni in C. Violetta Lonati

Introduzione. Informatica B. Daniele Loiacono

Scopo della lezione. Informatica. Informatica - def. 1. Informatica

Laboratorio di Alfabetizzazione Informatica - Esame 20 settembre 2013.

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

Corso di INFORMATICA 2 (Matematica e Applicazioni)

Programmazione in Java e gestione della grafica (I modulo) Lezione 1: Presentazione corso

L interesse nella macchina di Turing

Descrizione di un algoritmo

Fondamenti di Informatica T1

Fasi di creazione di un programma

Dipartimento di Economia e Management

Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione

Linguaggi e Paradigmi di Programmazione

LABORATORIO DI PROGRAMMAZIONE EDIZIONE 1, TURNO B

CALCOLO COMBINATORIO

Ing. Paolo Domenici PREFAZIONE

Algoritmi e Complessità

I sistemi di numerazione

Esempi di algoritmi. Lezione III

Varianti Macchine di Turing

B+Trees. Introduzione

Laboratorio di Architettura degli Elaboratori A.A. 2015/16 Circuiti Logici

Stimare il WCET Metodo classico e applicazione di un algoritmo genetico

MANUALE ESSE3 Gestione Registro delle lezioni

Programma del Corso. Dati e DBMS SQL. Progettazione di una. Normalizzazione

INFORMATICA GENERALE. Prof Alberto Postiglione Dipartim. Scienze della Comunicazione Univ. Salerno. Università degli Studi di Salerno

Lezione 8. La macchina universale

TECNICHE DI SIMULAZIONE

CONCETTO DI LIMITE DI UNA FUNZIONE REALE

Cos è un Calcolatore?

Modulo 3 - Elaborazione Testi Presentazione del corso

Fondamenti di Informatica Ingegneria Clinica Lezione 19/10/2009. Prof. Raffaele Nicolussi

Corso di Esercitazioni di Programmazione

Introduzione. Laboratorio di Calcolo Corso di Laurea in Fisica. Università degli Studi di Roma La Sapienza

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico

Fondamenti di Informatica 1. obiettivo: introduzione a conoscenze di base dell informatica

Metodologie di programmazione in Fortran 90

Fondamenti di Informatica T-1

DAL PROBLEMA ALL'ALGORITMO AL PROGRAMMA SCRITTO IN Come. Scopo principale dell informatica è risolvere problemi con i calcolatori.

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

Proof. Dimostrazione per assurdo. Consideriamo l insieme complementare di P nell insieme

Introduzione alla programmazione in C

Problemi, Algoritmi e Programmi

ISTITUTO ISTRUZIONE SUPERIORE "L. EINAUDI" ALBA ANNO SCOLASTICO 2015/2016

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno

23/02/2014. Dalla scorsa lezione. La Macchina di Von Neumann. Uomo come esecutore di algoritmi

STUDIUM.UniCT Tutorial per gli studenti

FONDAMENTI di INFORMATICA L. Mezzalira

Le parole dell informatica: modello di calcolo, complessità e trattabilità

Guida rapida per i docenti all'uso della piattaforma di e-learning dell'istituto Giua

Guida docenti all inserimento delle informazioni sugli insegnamenti (programmi, etc.) da web

Valutazione delle Prestazioni. Valutazione delle Prestazioni. Architetture dei Calcolatori (Lettere. Tempo di risposta e throughput

L informatica INTRODUZIONE. L informatica. Tassonomia: criteri. È la disciplina scientifica che studia

Dispensa di Informatica I.1

GUIDA STUDENTI HOMEPAGE DEI CORSI ON-LINE

Istruzioni (1): L elaborato verrà letto, compilato e fatto girare per verificare la correttezza della sintassi e delle operazioni svolte

Conoscenza obbligatoria della lingua inglese

Dipartimenti di Fisica, Matematica Ingegneria e Scienza dell Informazione CIBIO - Centro di Biologia Integrata

Architetture Applicative

Fondamenti di Informatica e Laboratorio T-AB Fondamenti di Informatica T1"

Informazione analogica e digitale

Guida alla compilazione on-line della domanda di Dote Scuola

Guida Studenti per i servizi online: compilazione dei questionari per la valutazione della didattica Iscrizione agli appelli

Dropbox di classe. É un servizio internet fornito gratuitamente (funzioni base).

Manuale del Docente - Scienze Politiche

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

Elementi di Informatica e Programmazione

INFORMATICA 1 L. Mezzalira

Statistica Aziendale Avanzata

A cura del Prof. Pasquale Vastola. Iscrizione alla piattaforma virtuale MOODLE FASE 1. 1) Accedere al seguente indirizzo internet :

3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

Informatica 3. Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati. Lezione 10 - Modulo 1. Importanza delle strutture dati

Транскрипт:

Corso Programmazione 2011-2012 (docente) Fabio Aiolli E-mail: aiolli@math.unipd.it Web: www.math.unipd.it/~aiolli (docenti laboratorio) E. Caniato, A. Ceccato Dipartimento di Matematica Pura ed Applicata Torre Archimede, Via Trieste 63

Orario delle lezioni e esercitazioni ~32 ore di lezioni in aula P200 Mercoledi Ore 12:30-13:15 Giovedi,Venerdi Ore 11:30 13:15 ~32 ore di esercitazioni in laboratorio ISCRIVERSI ALLA LISTA UNIWEB ASAP! Fabio Aiolli PROGRAMMAZIONE 2

Risorse per il corso A.Bellini, A.Guidi. Linguaggio C, Guida alla programmazione, McGraw-Hill, 2006. A.Kelley, I. Pohl. "C Didattica e programmazione", Pearson, 2004. H.M.Deitel, P.J.Deitel. C Corso completo di Programmazione, Apogeo, 2007. Altro materiale sara disponibile sul sito web del corso: http://www.math.unipd.it/~aiolli/corsi/1011/prgxmat/prg.html Il GOOGLE GROUP del corso: http://groups.google.it/group/prxmat12atunipd 3

Il GOOGLE GROUP del corso: http://groups.google.it/group/prxmat12atunipd ISTRUZIONI x l iscrizione Nickname: <Nome><InizialeCognome> (per esempio, FabioA) Inserire indirizzo di posta elettronica 4

Esame Scritto Prima Parte (vale molti punti malus) Domande riguardanti la sintassi del linguaggio C e semplici programmi Seconda Parte (vale pochi punti bonus) Analisi e implementazione di algoritmi in C Colloquio (per esame da 8 crediti, vecchio ord.) Contenuti di Introduzione alla Programmazione 5

Esercizi a Punti REGOLE (provvisorie) Bisogna iscriversi alla lista!!! Comunicherò presto la modalità. Ogni settimana: Vengono proposti uno o più esercizi Lo studente può sottomettere una soluzione (programma) entro una certa scadenza Un sottoinsieme delle consegne verranno corrette (circa il 25%) Valutazione: I progetti corretti ricevono una valutazione x>0 (x dipende dalla difficoltà degli esercizi) I progetti consegnati ma non corretti ricevono y punti, dove y è la media dei punti ottenuti dai progetti corretti Gli altri studenti ricevono 0 punti 6

Contenuti del corso Panoramica sul linguaggio C Strutture dati ed algoritmi Programmi x il calcolo scientifico 7

Iniziamo.. 8

PARTE 1 Definizioni Fondamentali 9

Algoritmo DEFINIZIONE Insieme completo delle regole che permettono la soluzione di un determinato problema DEFINIZIONE OPERATIVA Procedura effettiva che indica le istruzioni (passi) da eseguire per ottenere i risultati voluti a partire dai dati di cui si dispone 10

Algoritmo: Esempi Esempio Culinario: Ricetta x cucinare gli spaghetti Esempio Turistico: Indicazioni per raggiungere un albergo Esempi sui numeri: Insieme di passi per verificare se un numero è dispari, pari, primo, ecc. Altri esempi (piu difficili) : MCD(a,b), mcm(a,b) Per esempio l algoritmo di Euclide per il calcolo del MCD (che può essere usato anche per il calcolo del mcm!) -> mcm(a,b)=(ab)/mcd(a,b) 11

Algoritmo MCD 1) a= a, b= b 2) ordina a e b in modo tale che a > b 3) Finche b rimane diverso da 0 1) t=b 2) b=a mod b 3) a=t 4) MCD(a,b)=a Fabio Aiolli PROGRAMMAZIONE 12

Algoritmo: Caratteristiche Esprimibile con un numero finito di istruzioni Istruzioni eseguibili da un elaboratore Insieme di istruzioni di cardinalità finita Tempo di esecuzione di ogni istruzione finito Elaboratore ha una memoria Calcolo per passi discreti Non esiste limite alla lunghezza dei dati di ingresso Non c e un limite alla memoria disponibile Numero di passi esecuzione eventualmente illimitato (vedere Macchina di Turing it.wikipedia.org/wiki/macchina_di_turing) 13

Macchina di Turing La macchina può agire sopra un nastro che si presenta come una sequenza di caselle nelle quali possono essere registrati simboli di un ben determinato alfabeto finito; essa è dotata di una testina di lettura e scrittura (I/O) con cui è in grado di effettuare operazioni di lettura e scrittura su una casella del nastro Dati iniziali sul nastro La macchina ha uno stato interno Ad ogni passo, dipendentemente dallo stato in cui si trova e dal carattere letto, la macchina Modifica il contenuto della casella Si sposta a destra o sinistra di una posizione Cambia il suo stato interno Si dimostra che essa è equivalente, ossia in grado di effettuare le stesse elaborazioni, a tutti gli altri modelli di calcolo piu complessi!!! Fabio Aiolli PROGRAMMAZIONE 14

Linguaggi LINGUAGGI NON FORMALI (ambigui) Linguaggio Naturale Linguaggio della musica e della pittura Linguaggio del corpo Ecc. LINGUAGGI FORMALI (di programmazione) Linguaggi NON ambigui, regolati da regole grammaticali precise Possono essere classificati in base al loro livello di astrazione 15

Linguaggi di Alto Livello (LAL) ESEMPI FAMOSI Imperativi: PASCAL, FORTRAN,COBOL, C Ad oggetti: CPP, JAVA Appositi software (compilatori) si occupano di tradurre le istruzioni scritte in questi linguaggi (cosiddetto codice sorgente, un file di testo), nell equivalente codice eseguibile dalla macchina (cosiddetto codice eseguibile, binario) 16

Caratteristiche LAL strutturati SEQUENZA Le istruzioni vengono eseguite in sequenza nell ordine in cui compaiono in un blocco di istruzioni SELEZIONE Strutture di controllo decisionali: P.e. Se <espressione> esegui <BloccoIstruzioniV> altrimenti esegui <BloccoIstruzioniF> ITERAZIONE Strutture di controllo iterative: P.e. Fintanto che <espressione> esegui <BloccoIstruzioni> Oppure, Esegui <BloccoIstruzioni> fintanto che <espressione> 17

Complessita degli Algoritmi Complessita Polinomial (P) : Il numero di passi e proporzionale in modo polinomiale alla cardinalita dell input Complessita Non-Deterministic Polinomial (NP) : Sono noti algoritmi che terminano in un numero di passi polinomiale usando un numero indeterminato di macchine in parallelo, oppure utilizzando l algoritmo di Gastone 18

Complessita degli Algoritmi (2) Casi: Ottimo: I dati presentati sono i migliori possibili per l algoritmo Pessimo: I dati presentati sono i piu sfavorevoli per l algoritmo Medio: Comportamento in media al variare dei dati possibili in ingresso Notazione: O(f(n)) : valutazione caso pessimo La quantita di risorse richiesta cresce NON PIU di f(n) Ω(g(n)) : valutazione caso ottimo La quantita di risorse richiesta cresce NON MENO di g(n) θ(h(n)) : casi ottimo e pessimo hanno simili prestazioni La quantita di risorse richiesta cresce COME h(n) 19

Algoritmi di Ricerca Ricerca MIN e MAX Ricerca di un valore in una collezione Ricerca di un valore in una collezione ordinata Ricerca degli zeri di una funzione 20

Algoritmi di Ordinamento Ordinamento degli elementi in una generica collezione Fondere due collezioni ognuna di esse gia ordinata Ordinare senza usare confronti 21

Algoritmi di Ottimizzazione Problema del Commesso Viaggiatore (TSP) Problema dei Cammini Minimi (SP) Problemi IA 22