Corso di Fondamenti di Informatica Corso di Laurea in Ingegneria Meccanica (A-K) Ing. Agnese Pinto 1 di 21
Informazioni utili Ing. Agnese Pinto: Contatti: Laboratorio di Sistemi Informativi (SisInfLab) Dipartimento di Elettrotecnica ed Elettronica (DEE) E-mail: agnese.pinto@poliba.it, Telefono: 0805963515 Web: http://sisinflab.poliba.it/pinto Ricevimento studenti: Mercoledì 11:30/13:30 2 di 21
Obiettivi formativi Il corso si propone di introdurre: architettura di un calcolatore elettronico, con alcuni cenni alla codifica dell informazione e all algebra di Boole; algoritmi; linguaggi di programmazione e codifica di programmi (linguaggio C); strutture astratte e concrete di dati; file e le operazioni di I/O; conoscenze di base sui sistemi operativi 3 di 21
Programma Lezioni teoriche: Architettura calcolatori: 4 ore; Codifica binaria ed algebra di Boole: 2 ore; Algoritmi e progettazione in piccolo : 4 ore; Codifica degli algoritmi e linguaggio C: 4 ore; Tipi di dati, strutture di controllo, funzioni e procedure, ricorsione: 8 ore; Strutture di dati: 6 ore; Gestione dei file: 4 ore; Sistemi operativi: 4 ore; Esercitazioni: Esempi di algoritmi numerici e non numerici: ricerca sequenziale e dicotomica, ordinamento Laboratorio: utilizzo di un ambiente di programmazione per la stesura ed il test di programmi 4 di 21
Modalità d esame Prova scritta: Composta di una parte teorica e di una applicativa (la prima parte prevede la risposta a quesiti e la soluzione di esercizi, la seconda richiede la progettazione di un algoritmo); Obbligatoria per il superamento dell esame (con votazione pari ad almeno 18/30); È severamente vietata la consultazione di appunti, manuali, testi in genere, nonché l'utilizzo di qualsiasi supporto elettronico, pena l'esclusione dalla prova stessa; Il risultato sarà reso noto mediante avviso pubblicato sul sito del docente prima dell'inizio della prova orale; La partecipazione alla prova scritta richiede prenotazione preventiva, effettuata attraverso il servizio di prenotazioni online del DEE o tramite il portale degli studenti (secondo prossima comunicazione) La partecipazione ad una prova scritta implica l'annullamento di un eventuale altra prova superata in uno qualsiasi degli appelli precedenti. Prova orale: Facoltativa (previo superamento della prova scritta con voto almeno pari a 18/30) e relativa ai contenuti del programma ufficiale dell'anno accademico in cui è stata superata la prova scritta. 5 di 21
Periodi di esame 1 appello: al termine del 1 semestre (inizio febbraio); 2 appello: al termine del 1 semestre (fine febbraio); 3 appello: durante la pausa di metà semestre (maggio); 4 appello: al termine del 2 semestre (inizio luglio); 5 appello: al termine del 2 semestre (fine luglio); 6 appello: al termine della pausa estiva (inizio settembre); 7 appello: al termine della pausa estiva (fine settembre); 8 appello: durante la pausa di metà semestre (novembre); 6 di 21
Libri di testo Testi di riferimento principali: D. Mandrioli, S. Ceri, L. Sbattella, P. Cremonesi, G. Cugola, Informatica: arte e mestiere, terza edizione, McGraw-Hill, 2008; Manuali di programmazione: A. Bellini, A. Guidi, Linguaggio C, guida alla programmazione, 3/ed, McGraw-Hill, 2006; 7 di 21
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 8 di 21
Algoritmo Sequenza di passi, definiti con precisione, che portano alla realizzazione di un compito E essenziale che un algoritmo sia comprensibile al suo esecutore 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ù rapido possibile e/o usando la minima quantità di risorse fisiche, compatibilmente con la sua correttezza 9 di 21
Esempi di algoritmi 1. Determinare l area di una figura piana regolare 2. Calcolo del Massimo Comun Divisore (M. C. D.) 3. Algoritmo per il prelievo al bancomat 4.. 10 di 21
Calcola l area di una figura piana regolare b A= a*b a 1. Inizio 2. Prendi il valore del primo lato a 3. Prendi il valore del secondo lato b 4. Calcola il valore dell area A 5. Restituisci il valore dell area ottenuto A 6. fine 11 di 21 A. Pinto
Algoritmo: calcolo del M. C. D. Problema: calcolo del Massimo Comun Divisore tra due numeri a e 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 e andare al passo 6 4. r = a mod b 5. sostituire a con b, b con r ed andare al passo 2 6. Fine 12 di 21
Flusso di controllo L ordine di esecuzione delle operazioni elementari è determinante per la soluzione del problema Le operazioni elementari (passi) di un algoritmo 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 possono essere considerate come un istruzione elementare Si definisce COSTRUTTO l insieme di istruzioni di controllo e istruzioni controllate: costrutto condizionale: insieme di condizione e istruzioni condizionate costrutto iterativo: insieme di istruzioni la cui esecuzione viene ripetuta previa verifica di opportune istruzioni di controllo 13 di 21
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: -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: 14 di 21
Diagrammi di flusso (flow chart) -Input (inserimento dall esterno di dati utili allo sviluppo dell algoritmo, p. es. inserimento da tastiera) con rettangoli con l angolo superiore destro smussato: - Output (recupero dall interno di dati/risultati prodotti dall algoritmo, p. es. stampa a schermo) con rettangoli con l angolo inferiore destro smussato: - Dichiarazione (menzione delle grandezze variabili o costanti da adoperare nell algoritmo, con parallelogramma posto dopo il blocco di inizio: 15 di 21
Linguaggi di programmazione Linguaggi per la codifica di algoritmi: consentono la scrittura sotto forma di codice di algoritmi (programmi) in modo che possano essere processati da un elaboratore Da linguaggio ad alto livello a linguaggio macchina: sforzo di traduzione da linguaggio naturale in istruzioni macchina uso di sintassi intermedie e di interpreti e compilatori la procedura di traduzione prevede passi intermedi gestiti in modo automatico 16 di 21
Sistema informatico Oggetto complesso,che può assumere nature molto differenti, costituito da componenti che interagiscono tra loro per eseguire algoritmi Classificazione 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 17 di 21
Hardware (HW) Insieme di elementi funzionali: Unità di elaborazione o processore: esegue i programmi Memoria centrale: mantiene dati e programmi a beneficio dell unità di elaborazione capacità ridotta volatile rapido acceso all informazione Memoria secondaria (o di massa): capacità significativa persistente accesso all informazione lento Unità periferiche: consentono la comunicazione del calcolatore con l ambiente esterno Bus di sistema: collega gli elementi funzionali consentendo lo scambio di dati 18 di 21
Personal Computer (PC) Elaboratore genericamente dedicato ad un solo utente Nasce dopo la rivoluzione dei sistemi desktop (primi anni 80) incontro tra Microsoft (ed il suo MS-DOS) e IBM (e il suo PS-2) per produrre macchine a larga diffusione e di semplice utilizzo Costituenti fondamentali: Unità centrale: unità di elaborazione (CPU) memoria centrale memoria di massa: informazione organizzata in file e directory disco fisso (hard disk): inamovibile e di elevata capacità floppy disk, dongle USB, dischi ottici (CD/DVD-ROM), dischi elettronici Tastiera, mouse e monitor collegati all unità centrale 19 di 21
Software SW di base Dedicato alla gestione dell elaboratore Opera direttamente al di sopra di HW e firmware Esempi: SISTEMA OPERATIVO SW applicativo: Dedicato alla realizzazione di specifiche esigenze applicative Utilizza linguaggi di alto livello Opera al di sopra del SW di base 20 di 21
Sistema Operativo (S.O.) Funzioni: Interpreta ed esegue comandi elementari Organizza e gestisce le risorse della macchina Gestisce multi-utenza e multi-tasking Funge da tramite d uso tra la macchina fisica e l utente con le relative applicazioni Complessità crescente con quella del sistema informatico: In sistemi multi-utente il S.O. distribuisce le risorse del calcolatore tra i vari utenti in maniera apparentemente dedicata 21 di 21