1. Introduzione al corso Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A. 2013-2014 Informazioni utili Ing. Simona Colucci: • Contatti: Dipartimento Dipartimento di Scienze Umanistiche, della Comunicazione e del Turismo (DISUCOM) Indirizzo: Via S. M. Gradi, 4 - 01100 Viterbo Tel: + 39 0761357664 email: [email protected] • Ricevimento studenti: – Giovedì 10:00/11 :00(in aula docenti) – Durante i laboratori Informatica - CDL in Ingegneria Industriale- A.A. 2013-2014 Libri di testo Testi di riferimento: • Dino Mandrioli, Stefano Ceri, Licia Sbattella, Paolo Cremonesi, Gianpaolo Cugola. Informatica: arte e mestiere 3/ed. Mc-Graw-Hill. ISBN: 9788838664298 • Alessandro Bellini, Andrea Guidi. Linguaggio C - Guida alla programmazione 4/ed. Mc-Graw-Hill. ISBN: 9788838665790 • Manuale operativo – Kerningham, Ritchie. Linguaggio C. Jackson Libri, 1989 – Manuali online dei programmi usati per lo sviluppo di codice: Dev-C++4 open source scaricabile da http://www.bloodshed.net/dev/devcpp.html Informatica - CDL in Ingegneria Industriale- A.A. 2013-2014 , Composizione del corso • Argomenti teorici di base - oggetto delle lezioni in aula - verificati tramite quesiti ed esercizi della prova scritta - verificati tramite la prova orale • Programmazione in linguaggio C - oggetto delle lezioni in aula e delle esercitazioni in laboratorio - verificata tramite problemi della prova scritta Informatica - CDL in Ingegneria Industriale- A.A. 2013-2014 Modalità d’esame • Prova scritta (al PC): – Contiene una parte applicativa mirata alla risoluzione di un problema tramite Programmazione in Linguaggio C. – Contiene quesiti ed esercizi sugli Argomenti Teorici di Base – Contenuto obbligatorio per il superamento dell’esame • Prova orale – Verte su tutto il programma (Argomenti teorici di Base e Programmazione in Linguaggio C) – Integra la verifica della conoscenza oggetto della prova scritta (obbligatoria in caso di svolgimento parziale della prova scritta) Informatica - CDL in Ingegneria Industriale- A.A. 2013-2014 Attività didattica • Lezioni Frontali: – in aula • Esercitazioni: – In laboratorio – Inizio comunicato in seguito Informatica - CDL in Ingegneria Industriale- A.A. 2013-2014 Programma del corso Lezioni in aula: • Architettura dei calcolatori – Codifica binaria delle informazioni – Algebra di Boole – Architettura dei calcolatori • Algoritmi e strutture dati – – – – – – • Programmazione strutturata Programmazione in Linguaggio C Funzioni e Procedure Programmazione Ricorsiva Allocazione Dinamica Strutture dati Esercitazioni: – – – – – Uso di un elaboratore Uso di un ambiente di sviluppo integrato Progettazione di Algoritmi Codifica di Algoritmi in Linguaggio C Progettazione e Codifica Algoritmi di Ordinamento e Ricerca – Uso di funzioni e procedure e gestione dei file Architettura dei sistemi informatici – Le reti di calcolatori – Archivi e basi di dati – Il sistema Operativo Informatica - CDL in Ingegneria Industriale- A.A. 2013-2014 Informatica • Definizione Scienza della rappresentazione e dell’elaborazione dell’informazione • Definizione Association of Computing Machinery(ACM) Studio sistematico degli algoritmi(sequenze precise di operazioni comprensibili e perciò eseguibili da uno strumento automatico) che descrivono e trasformano l’informazione: la loro teoria, analisi, progetto, efficienza, realizzazione e applicazione Informatica - CDL in Ingegneria Industriale- A.A. 2013-2014 Concetto di algoritmo • Sequenza di passi, definiti con precisione, che portano alla realizzazione di un compito. • E’ essenziale che un algoritmo sia comprensibile al suo esecutore:es. il calcolatore (privo di buon senso) esegue algoritmi prodotti e codificati dagli informatici in programmi • Proprietà degli algoritmi: - correttezza: capacità di arrivare alla soluzione del compito cui è preposto, senza difettare di alcun passo fondamentale - efficienza: capacità di arrivare alla soluzione del compito cui è preposto nel modo più veloce possibile e/o usando la minima quantità di risorse fisiche, compatibilmente con la sua correttezza Informatica - CDL in Ingegneria Industriale- A.A. 2013-2014 Esempi di algoritmi 1. Lavaggio di capi resistenti in lavatrice 2. Calcolo dell’imposta IRPEF relativa a un contribuente, dato il reddito lordo e la tabella delle aliquote 3. Calcolo della somma algebrica tra due numeri relativi utilizzando le operazioni di somma e differenza tra numeri senza segno 4. Calcolo del Massimo Comun Divisore(M.C.D.) Informatica - CDL in Ingegneria Industriale- A.A. 2013-2014 Esempio 1 Problema: Lavaggio di capi resistenti in lavatrice Soluzione informale: lavatrice + programma “cotone 90” Algoritmo: Esecuzione in stretta sequenza dei seguenti passi: -lavatrice -ammollo -prelavaggio -lavaggio -candeggio -risciacquo -ammorbidente -centrifuga Informatica - CDL in Ingegneria Industriale- A.A. 2013-2014 Esempio 2 Problema: Calcolo dell’imposta IRPEF relativa a un contribuente, dato il reddito lordo e la tabella delle aliquote Soluzione informale: data la tabella delle aliquote relative alle fasce di reddito e dato il reddito lordo, si applicano progressivamente le aliquote al reddito Algoritmo: - acquisire reddito lordo Inizio-fascia(€) Fine_fascia (€) Aliquota (%) - I=10% di R O 3600 10 - Se R>3600 I=I+12%(R-3600) 3600.01 7200 22 - Se R>7200 I=I+5%(R-7200) 7200.01 15000 27 - Se R>15000 I=I+7%(R-15000) 15000.01 30000 34 - Se R>30000 I=I+7%(R-30000) 30000.01 75.000 41 - Se R>75000 I=I+5%(R-75000) 75000.01 150000 46 - Se R>150000 I=I+5%(R-150000) 150000 51 - I è l’imposta risultante Informatica - CDL in Ingegneria Industriale- A.A. 2013-2014 Esempio 3 Problema: Calcolo della somma algebrica tra due numeri relativi utilizzando le operazioni di somma e differenza tra numeri senza segno Soluzione informale: si confrontano i segni dei due operandi; nel caso di numeri concordi si effettua la somma dei moduli e il risultato è concorde con gli addendi; nel caso di numeri discordi si effettua la differenza tra modulo maggiore e minore e il risultato è concorde con l’addendo di modulo maggiore. Algoritmo: - acquisizione dei due numeri a,b - se a,b sono concordi |s|=|a|+|b| - se a,b sono discordi - se |a|<|b| si scambiano i valori di a e b - |s|=|a|-|b| - la somma ha il segno di a e modulo |s| Informatica - CDL in Ingegneria Industriale- A.A. 2013-2014 Esempio 4 Problema: Calcolo del Massimo Comun Divisore tra due numeri a,b : MCD(a,b) Soluzione di Euclide: “ogni divisore comune di a e b è divisore di a, b e del resto r della divisione tra a e b (a mod b), se questo non è nullo” Algoritmo: 1. acquisire due numeri a,b 2. se b>a scambiare a con b 3. se b= 0 MCD(a,b)=a a andare al passo 6 4. r= a mod b 5. sostituire a con b, b con r ed andare al passo 2 6. Fine Informatica - CDL in Ingegneria Industriale- A.A. 2013-2014 Flusso di controllo • L’ordine di esecuzione delle operazioni elementari è determinante per la soluzione del problema • Le operazioni elementari(passi di algoritmi) vengono chiamate istruzioni nel linguaggio dei calcolatori e possono essere classificate in : - istruzioni non condizionate - istruzioni condizionate: l’esecuzione dipende da una condizione - istruzioni di controllo: esprimono le condizioni da cui dipende l’esecuzione delle istruzioni condizionate(dette pseudo-istruzioni perché controllano solo il flusso delle operazioni) • Le istruzioni possono essere composte in blocchi o sequenze che risolvono sottoproblemi del problema principale e sono viste come un’istruzione elementare Informatica - CDL in Ingegneria Industriale- A.A. 2013-2014 Costrutto • Insieme di istruzioni di controllo e controllate: - costrutto condizionale: insieme di condizione e istruzioni condizionate - costrutto iterativo: insieme di istruzioni la cui esecuzione viene ripetuta sotto il controllo di opportune istruzioni di controllo Informatica - CDL in Ingegneria Industriale- A.A. 2013-2014 Diagrammi di flusso FLOW CHART: Formalismo grafico per rappresentare la sequenza(flusso)di istruzioni o operazioni elementari di un algoritmo: -operazioni(semplici o composte, condizionate o non condizionate) con rettangoli input -condizioni(scelta tra due possibilità) con rombi vero Condizione? falso -flusso (sequenza di esecuzione o controllo) con segmenti orientati che uniscono i blocchi -inizio e fine dell’esecuzione con ellissi Informatica - CDL in Ingegneria Industriale- A.A. 2013-2014 Linguaggi di Programmazione • Linguaggi per la codifica di algoritmi: scrittura sotto forma di programmi che possano essere compresi da un elaboratore • Dal linguaggio della macchina ai linguaggi di alto livello: sforzo di traduzione da linguaggio naturale a linguaggio macchina sempre più affidato alla macchina stessa Informatica - CDL in Ingegneria Industriale- A.A. 2013-2014 Sistema Informatico • Oggetto complesso,che può assumere nature molto differenti, costituito da molte parti che interagiscono tra loro per eseguire algoritmi • Classificazione a livello generico delle componenti: – Hardware: componenti fisici del sistema – Software: programmi eseguiti dal sistema Il confine tra HW e SW è piuttosto sfumato se si pensa che le stesse funzioni possono essere svolte a seconda dei casi da circuiti e dispositivi HW o da particolari microprogrammi(firmware) definiti dal costruttore del calcolatore Informatica - CDL in Ingegneria Industriale- A.A. 2013-2014 Hardware Insieme di elementi funzionali: • Unità di elaborazione o processore: – esegue i programmi • Memoria centrale: • Memoria secondaria (o di massa): • Bus di sistema: • Unità periferiche: – – – – memorizza dati e programmi per il funzionamento dell’elaboratore capacità limitata volatile rapido acceso all’informazione – capacità significativa – persistente – accesso all’informazione lento – collega gli elementi funzionali consentendo lo scambio di dati – fanno comunicare il calcolatore con l’ambiente esterno Informatica - CDL in Ingegneria Industriale- A.A. 2013-2014 Esempio di HW di sistema informatico Personal computer: elaboratore dedicato ad un solo utente • Corpo contenente: – unità di elaborazione – memoria centrale – memoria di massa: informazione organizzata in file • Disco fisso(hard disk): inamovibile e di elevata capacità • Floppy disk, chiavi USB, dischi ottici(compact disk o CD-ROM o DVD) • Tastiera mouse e video collegati col corpo centrale Informatica - CDL in Ingegneria Industriale- A.A. 2013-2014 Software • SW di base – dedicato alla gestione dell’elaboratore – opera direttamente al di sopra di HW e firmware – Esempi: • SISTEMA OPERATIVO • Sistema di gestione di basi di dati • Protocolli di comunicazione: garantiscono la corretta comunicazione sui canali di trasmissione che trasportano segnali(tipicamente elettrici), garantendo la trasmissione dei dati tra elaboratore e terminali o tra elaboratori collegati in rete • SW applicativo: – – – – dedicato alla realizzazione di specifiche esigenze applicative utilizza linguaggi di alto livello opera al di sopra del SW di base non risente delle caratteristiche architetturali del sistema informatico:trasportabile Informatica - CDL in Ingegneria Industriale- A.A. 2013-2014 Sistema Operativo • Funzioni: – Interpreta ed esegue comandi elementari – Organizza le risorse della macchina – Gestisce l’accesso alla rete • Sia che sia venduto dal costruttore del sistema informatico che realizzato da ditte di SW, il SO non può essere modificato dall’utente nelle sue istruzioni ed è necessario come tramite d’uso tra la macchina fisica e l’utente • Complessità crescente con quella del sistema informatico: – In sistemi multi-utente il SO distribuisce le parti del calcolatore tra i vari utenti in maniera apparentemente “dedicata” Informatica - CDL in Ingegneria Industriale- A.A. 2013-2014