Informatica B (Docente Vittorio Zaccaria)

Похожие документы
Introduzione. Informatica B. Daniele Loiacono

Corso di Fondamenti di Informatica e Laboratorio ato o T-AB

Elementi di Informatica e Programmazione

Algoritmi e basi del C

COMPILAZIONE. Tarsformazione di linguaggi

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

Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo

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

Introduzione al corso di Programmazione e Laboratorio

Laboratorio di Programmazione Lezione 1. Cristian Del Fabbro

Il calcolatore. Architettura di un calcolatore (Hardware)

Elementi di programmazione Algoritmi Flow Chart, Fasi della programmazione Linguaggi Elementi di programmazione ad oggetti

Laurea triennale - Comunicazione&DAMS - UNICAL. Dr. Marco Manna 1

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

Sistemi Web per il turismo - lezione 3 -

Software. Algoritmo. Algoritmo INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042)

Fondamenti di Informatica T1

Informatica Generale

(1) (2) (3) (4) 11 nessuno/a (1) (2) (3) (4) X è il minore tra A e B nessuno/a X è sempre uguale ad A X è il maggiore tra A e B

Richiami di informatica e programmazione

Le aree dell informatica

I Problemi e la loro Soluzione. Il Concetto Intuitivo di Calcolatore. Risoluzione di un Problema. Esempio

Introduzione al corso

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

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1

INFORMATICA 1 L. Mezzalira

Corso di Informatica

Corso di Fondamenti di Informatica L-A

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

Informatica Teorica. Macchine a registri

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

CLASSE III A I.T.I. (ABACUS) SISTEMI DI ELABORAZIONE E TRASMISSIONE DEI DATI VERIFICA DI RECUPERO

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

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

Fasi di creazione di un programma

Linguaggi di programmazione

FONDAMENTI di INFORMATICA L. Mezzalira

Corso di INFORMATICA 2 (Matematica e Applicazioni)

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

Grafica ed interfacce per la comunicazione. Scienze della Comunicazione A.A.2013/14

FONDAMENTI DI RETI DI TELECOMUNICAZIONI

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

Corso Programmazione

ALGORITMI e PROGRAMMI Programmazione: Lavoro che si fa per costruire sequenze di istruzioni (operazioni) adatte a svolgere un dato calcolo

NOZIONI BASE PER ESERCITAZIONI

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

Descrizione di un algoritmo

La Macchina Virtuale

Architettura degli Elaboratori e delle Reti

Laboratorio di Programmazione Strutturata

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

ToolChain: Come Generare Applicazioni in Linguaggio Macchina

Gestione delle eccezioni in Java

TECNOLOGIE INFORMATICHE DELLA COMUNICAZIONE ORE SETTIMANALI 2 TIPO DI PROVA PER GIUDIZIO SOSPESO PROVA DI LABORATORIO

Corso di Esercitazioni di Programmazione

Corso di Informatica Applicata. Lezione 3. Università degli studi di Cassino

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

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

CALENDARIO CORSI: Giugno 2015

Problemi, Algoritmi e Programmi

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Architettura del calcolatore

Fondamenti Teorici. Antonio Pescapè e Marcello Esposito Parte Seconda v2.0

CALCOLATORI ELETTRONICI II

PROGRAMMA DI SCIENZE E TECNOLOGIE APPLICATE 2015/2016 Classe 2ª Sez. C Tecnologico

CPU. Maurizio Palesi

Fondamenti di Informatica T-1

Materiale didattico. Sommario

Appunti di Sistemi Elettronici

Programmi. Algoritmi scritti in un linguaggio di programmazione

Fondamenti di Informatica II Corso (HA-ZZ) Introduzione al corso

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

Fondamenti di Informatica. Allievi Automatici A.A Nozioni di Base

Header. Unità 9. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi

1

Input/output in C e in C++

Architettura di un calcolatore: introduzione

Lezione 1 05 ottobre 2015

orario ricevimento via orario ufficio risposta entro 3 giorni

Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi.

Linguaggi di programmazione

I sistemi di elaborazione

Gli algoritmi: definizioni e proprietà

L architettura del calcolatore (Prima parte)

PROVA INTRACORSO TRACCIA A Pagina 1 di 6

Ing. Paolo Domenici PREFAZIONE

Nozione di algoritmo. Gabriella Trucco

Architettura della CPU e linguaggio assembly Corso di Abilità Informatiche Laurea in Fisica. prof. ing. Corrado Santoro

Esercitazioni di Programmazione I canale A-D. Alessio Malizia malizia@di.uniroma1.it

Corso di Calcolatori Elettronici I A.A Il processore Lezione 18

Corso di Laurea in Ingegneria Informatica e Biomedica. Sistemi Operativi A.A. ( )

Come ragiona il computer. Problemi e algoritmi

Linguaggi e Paradigmi di Programmazione

Il processore. Il processore. Il processore. Il processore. Architettura dell elaboratore

Транскрипт:

Informatica B (Docente Vittorio Zaccaria) Informatica B - Codice Corso: 081369 - A.A. 2011/2012 INGEGNERIA MECCANICA (BV) - INGEGNERIA IV (1 liv.) - Scaglione S - Z INGEGNERIA ENERGETICA (BV) - INGEGNERIA IV (1 liv.) - Scaglione S - Z

Contatti E-mail: zaccaria@elet.polimi.it Ufficio: Dip. di Elettronica e Informazione (DEI) Tel: 3642 (dall esterno: +39 02 2399 3642) Ricevimento: Martedì, 14.15 16.15. E comunque preferibile prendere appuntamento via mail.

Contatti Piazza Piola Dipartimento di Elettronica e Informazione Sede Centrale Politecnico di Milano (c) Google Maps

Orario Lezione ed esercitazioni MERCOLEDI 08.15-11.15, aula CT33 GIOVEDI 08.15-10.15, aula L06 Laboratorio LUNEDI 15.15-19.15 totale 21 ore 1^ laboratorio LUNEDI 3 Ottobre - aula LM1 (4 ore)

Organizzazione del corso Argomenti Fondamenti di programmazione e introduzione ad alcune tecniche di programmazione avanzata Linguaggio C - Prima parte del corso Linguaggio Matlab - Seconda parte del corso Nozioni base sull architettura dei calcolatori, sul sistema operativo e sulle reti di calcolatori

Modalità di verifica 2 prove in itinere scritte Ciascuna prova copre circa una metà del programma Massimo 17 punti per prova Condizioni per passare l esame: 18 punti totali almeno 8 in ciascuna prova 1 appello regolare per sessione di esame Scritto su tutto il programma e orale obbligatorio Soglia: 18 punti Laboratorio Non è prevista un prova di laboratorio ma la partecipazione attiva sarà elemento di valutazione

Accesso al materiale del corso http://home.dei.polimi.it/zaccaria Seguire il link Informatica-B Troverete: Materiale didattico usato a lezione, esercitazione e laboratorio Temi d esame (quando disponibili) Calendario laboratorio Avvisi

Bibliografia (I parte) I lucidi sono SOLO un supporto didattico Bibliografia Dino Mandrioli, Stefano Ceri, Licia Sbattella, Paolo Cremonesi, Gianpaolo Cugola, "Informatica. arte e mestiere", Terza Edizione, McGraw-Hill Libri Italia, 2008. A. Kelley e I. Pohl, C: didattica e programmazione, Addison/Wesley, 1998. H. Schildt, C - Guida completa, McGraw-Hill Libri Italia, 1995. H. M. Deitel e P. J. Deitel, C corso completo di programmazione, Apogeo, 2000. P. Tosoratti, Introduzione all informatica, seconda edizione, Casa Editrice Ambrosiana, 1998. altri testi di introduzione alla programmazione e al C possono andare bene

Introduzione - aspetti generali dell informatica Vittorio Zaccaria, Daniele Loiacono Informatica B - Codice Corso: 081369 - A.A. 2011/2012 INGEGNERIA MECCANICA (BV) - INGEGNERIA IV (1 liv.) - Scaglione S - Z INGEGNERIA ENERGETICA (BV) - INGEGNERIA IV (1 liv.) - Scaglione S - Z

Cos è l Informatica? E una scienza, ovvero una conoscenza sistematica di tecniche/metodi per: Rappresentare dell informazione Elaborare l informazione L informazione e costituita da una collezione di dati (osservazioni, fatti, entità fisiche o concettuali)

Cosa è un calcolatore Nell epoca moderna, è uno strumento elettronico che elabora informazione. Informazione in ingresso Calcolatore Informazione in uscita Il calcolatore esegue un algoritmo ed utilizza elementi di memoria per elaborare l informazione

Cosa è un calcolatore Uscita informazione Calcolatore Ingresso informazione

Cos è un algoritmo? Es. IKEA Una sequenza finita di operazioni elementari tali che: siano comprensibili ad uno specifico esecutore possano essere eseguite senza ambiguità permettano di risolvere uno specifico problema

Esempio: gestione biblioteca Scaffali Posizione Autore: Mark Twain Titolo: The advent... Scaffale: 31 Posizione: 4 Schedario

Algoritmo di prelevamento di un libro 1. Cerca la scheda del libro richiesto nello schedario 2. Leggi scaffale (s) e posizione (p) dalla scheda 3. Vai allo scaffale s 4. Preleva libro dalla posizione p La funzione Cerca è un sotto-algoritmo

Sotto-algoritmo Cerca 1. Leggi la prima scheda dallo schedario 2. Se titolo e autore/i corrispondono a quelli cercati allora concludi la ricerca con esito positivo, altrimenti passa la scheda successiva 3. Se le schede sono esaurite allora concludi la ricerca con esito negativo, altrimenti ricomincia dal punto 2 L algoritmo può essere ulteriormente migliorato, rendendo la ricerca più furba!

Sotto-algoritmo Cerca migliorato Intero schedario (15 elementi) passo 1 passo 2 passo 3 passo 4 Ricerca binaria

Dal problema alla soluzione automatica - Correttezza - Efficienza Definizione problema Specifica (semi-formale o formale) dell algoritmo Scrittura dell algoritmo in un linguaggio artificiale comprensibile dal calcolatore Passo più difficile - Concentrarsi sugli aspetti fondamentali - Raffinamenti successivi - Esperienza

Come si specifica un algoritmo? Un opzione è chiamata pseudo-codice: se A > 0 allora A = A + 1 altrimenti A = 0 Un altra opzione è quella dei diagrammi di flusso (schemi a blocchi) inizio fine assegnamento test scrivi leggi

Esempio di pseudo-codice Calcolo del massimo comune divisore Leggi N ed M MIN = il minimo tra N ed M X = 1 MCD = 1 Finchè X < MIN X = X + 1 se X divide sia N che M, allora MCD = X Stampa MCD

Esempio di diagramma a blocchi inizio leggi N ed M MIN = min(n,m) X=1 MCD=1 Stampa MCD no X<MIN? X=X+1 si X divide M ed N? no fine si MCD=X

Scrittura algoritmo interpretabile dal calcolatore Il calcolatore (in particolare la Central Processing Unit - CPU) può eseguire solo operazioni semplici. CPU leggi istruzione ed eventualmente operandi Scrivi risultato in memoria Memoria 0: 10100101 1: 01101111 2: 11100100 3: 00000101...

Scrittura algoritmo interpretabile dal calcolatore Le operazioni semplici sono codificate in memoria Memoria 0: 10100101 1: 01101111 2: 11100100 Corrisponde a load add branch 3: 00000101... Programma in linguaggio macchina... Programma in linguaggio assembly

Linguaggi di alto livello E impensabile scrivere programmi di media complessita in linguaggio macchina. Linguaggio di alto livello (C, C++, Java, matlab) Assembly Conversione automatica (compilatore/interprete) Conversione automatica (assemblatore) Linguaggio macchina

I linguaggi artificiali Caratterizzati da sintassi e semantica La sintassi definisce come si scrive il programma (forma e struttura) <variabile> = <espressione>; istruzione di alto livello La semantica definisce le istruzioni macchina associate agli elementi sintattici X = 3+1; load 3 in reg1 load 1 in reg 2 add reg1, reg2 in reg3 store reg3, @X

Sintassi e semantica Un programma sintatticamente corretto non e necessariamente semanticamente corretto: A = 0; X = 3; C = X/A; La traduzione, quando viene eseguita dal calcolatore, genera un errore (chiamato eccezione)! La correttezza semantica e legata anche alla specifica del problema che volete risolvere.

Compilatori ed interpreti Compilatore: traduce un programma di alto livello (chiamato sorgente) di alto livello in codice macchina. Interprete: programma che legge una istruzione di alto livello e determina, di volta in volta, quale istruzioni macchina eseguire per realizzarne il significato. Sono due modalita alternative per scrivere ed eseguire programmi su un calcolatore. Noi ci focalizzeremo sulla prima alternativa, ed in particolare sul linguaggio di alto livello C.

Catena di programmazione C - scrittura del programma Scrittura del programma in uno o piu file di testo con estensione.c Tali file sorgenti sono memorizzati all interno del calcolatore.

Catena di programmazione C - traduzione del programma Il compilatore e un programma che deve essere invocato (a seconda della piattaforma) per tradurre ciascun file sorgente in linguaggio macchina (chiamato file oggetto). int f(int a) { printf( Hi! ); } Compilatore C 0: 10100101 1: 01101111 2: 11100100 3: 00000101... file.c file.o Si riconoscono i costrutti, le parole chiave e i simboli del linguaggio. Si generano eventuali errori.

Catena di programmazione- Fase di link (o collegamento) int f(int a) { printf( Hi! ); } Compilatore C 0: 10100101 1: 01101111 2:???????? 3: 01101111 4: 00000101... salto a dove? file.c file.o 0: 10100101 1: 01101111 2: 11100100 3: 00000101... file.o contenente il codice della printf (libreria di I/O) Linker 0: 10100101 1: 01101111 2: 11100100 3: 00000101... File eseguibile completo

Catena di programmazione C - Caricamento Caricamento ed esecuzione avvengono per richiesta dell utente. Il caricatore (loader) individua delle zone di memoria libere per: Caricare l eseguibile Allocare e inizializzare la memoria dati del programma (variabili globali inizializzate e non, stack, heap). Eventuali messaggi rivolti all utente possono segnalare che non c'è abbastanza spazio in memoria

Catena di programmazione C - Esecuzione Al termine del caricamento, la CPU inizia ad eseguire la prima istruzione del programma. Ovviamente per eseguire il programma occorre fornire in ingresso i dati richiesti e in uscita riceveremo i risultati (su video o file o stampante o rete) Durante l esecuzione possono verificarsi degli errori (detti errori di run-time ), quali: calcoli con risultati scorretti (per esempio un overflow) calcoli impossibili (divisioni per zero, logaritmo di un numero negativo, radice quadrata di un numero negativo,.) errori nella concezione dell algoritmo (l algoritmo non risolve il problema dato)