Informatica Applicata - Concetti Introduttivi
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
Informatica Applicata Ing. Irina Trubitsyna Concetti Introduttivi Informatica Applicata
Programma del corso Obiettivi: Il corso di Informatica Applicata illustra i principi fondamentali della programmazione con riferimento al linguaggio C. In particolare privilegia gli aspetti relativi alla rappresentazione dei dati e alla realizzazione di strutture dati elementari, alla definizione e all'utilizzo di funzioni e di librerie. Il corso intende porre l'enfasi più sulle tecniche di programmazione e tratterà alcuni algoritmi fondamentali. Al termine del modulo lo studente sarà in grado di sviluppare e verificare programmi Informatica Applicata C di media complessita'. Il linguaggio C Tipi di dato, operatori ed espressioni Flussi del controllo Funzioni e struttura dei programmi Vettori, Puntatori, Aritmetica dei Puntatori Strutture Input e Output 2
Materiale Didattico Libri di testo: Brian W. Kernighan, Dennis M. Ritchie, “Il Linguaggio C”,seconda edizione, Pearson Education, 2004. Informatica Applicata Lucidi ed altro materiale: http://wwwinfo.deis.unical.it/~irina/ Oppure sul sito di iCampus: http://icampus.deis.unical.it/ 3
Altre informazioni Docente: Irina Trubitsyna, DEIS, cubo 41C, V° piano e-mail: irina@deis.unical.it riceve venerdì, dalle 15:00 alle 17:00 Informatica Applicata Tutor: Antonella Dimasi e-mail: dimasi@exeura.it 4
Orario gruppo 1 : Arenare Giuseppe - Marchese Fanny gruppo 2 : Martino Gabriele - Viola Leonardo LUNEDI' MARTEDI' MERCOLEDI' GIOVEDI' VENERDI' 8.30 Lab gruppo1 9.30 Esercitazione Lab gruppo2 10.30 (Aula DS4) 11.30 Lezione Informatica Applicata 12.30 (Aula M1 ) 14.30 15.30 16.30 17.30 18.30 5
Prerequisiti Obiettivo lo studio della programmazione dei calcolatori elettronici. In particolare, scrivere programmi in C per risolvere problemi di calcolo Informatica Applicata Prerequisiti architettura del calcolatore rappresentazione delle informazioni D. Sciuto, G. Buonanno, L. Mari, “Introduzione ai sistemi informatici”, terza edizione, McGraw-Hill, 2005. 6
Lezione 1-Sommario Architettura del Calcolatore Architettura di Von Neumann Rappresentazione delle Informazioni Informatica Applicata Rappresentazione dei numeri Rappresentazione dei caratteri Programmazione dei calcolatori Linguaggi di programmazione Ciclo di vita di un programma 7
Prerequisiti - Introduzione In questo corso ci occuperemo di “software”, ovvero applicazioni E’ necessario però avere un’idea dell’ Informatica Applicata “hardware”, ovvero dei dispositivi fisici che compongono il calcolatore Infatti il software specifica operazioni che vengono eseguiti dall’hardware 8
Architettura del Calcolatore Hardware Dispositivi di Uscita Unità Centrale Informatica Applicata -Schermo -Processore -Audio -Memoria di lavoro -Stampanti (memoria RAM) Dispositivi di Ingresso Memorie di Massa -Tastiera -Disco Rigido -Mouse -Dischi Floppy -CD/DVD 9
Macchina di Von Neumann La macchina di Von Neumann è un modello semplificato dei calcolatori moderni ed è composta da 4 tipi di componenti funzionali: unità centrale di elaborazione (CPU – Central Processing Unit) esegue istruzioni per l’elaborazione dei dati svolge anche funzioni di controllo Informatica Applicata memoria centrale memorizza e fornisce l’accesso a dati e programmi in esecuzione interfacce di ingresso e uscita componenti di collegamento con le periferiche del calcolatore bus svolge funzioni di trasferimento di dati e di informazioni di controllo tra le varie componenti funzionali 10
Processore CPU (“Central Processing Unit”) è il circuito integrato che effettua i calcoli responsabile di tutte le operazioni es: Pentium IV (a 1.8 GigaHertz) Informatica Applicata In sostanza legge e scrive dati dalla memoria RAM effettua operazioni aritmetiche è in grado di pilotare le periferiche 11
Memoria RAM “Random Access Memory” memoria di lavoro per la CPU circuito elettronico capace di mantenere uno stato in presenza di alimentazione Informatica Applicata memorizza lo stato di segnali elettrici volatile: perde lo stato in assenza di tensione Attenzione le elaborazioni del processore avvengono esclusivamente su dati nella RAM 12
Architettura di Von Neumann Schema di funzionamento il processore acquisisce dati dalle periferiche di ingresso o da una memoria di massa li memorizza nella memoria RAM accede alla RAM ed effettua operazioni scrive i risultati nella RAM Informatica Applicata invia i risultati alle periferiche di uscita trasferisce i dati permanentemente sulle memorie di massa Esempio: elaborazione di un documento il documento è salvato su disco viene “aperto” e caricato nella RAM vengono effettuate modifiche il contenuto della RAM e quello del disco sono disallineati al termine delle modifiche è necessario “salvare” la nuova versione sul disco 13
Memoria RAM V 3V Organizzazione della RAM 1 0 0.2V composta di numerosi circuiti (celle) ciascuno capaci di memorizzare un bit di informazione t Informatica Applicata Bit (“Binary Digit”) unità di memorizzazione per il calcolatore può valere 1 oppure 0 facilmente rappresentabile con un segnale elettrico 14
Rappresentare Informazione con i Bit Con un bit due numeri (0 e 1) Con due bit quattro numeri (00, 01, 10, 11) Informatica Applicata Con tre bit otto numeri (000, 001, 010, ..., 110, 111) Per rappresentare 1.000.000 di numeri servono 20 bit 15
Unità di Misura della Memoria Bit: 0/1 Byte: 8 bit unità convenzionale di riferim. KiloByte: 210 byte (1024 byte) Informatica Applicata 1024x8 bit = 8192 bit MegaByte: 220 byte (1 milione di byte ca.) circa 8 milioni di bit GigaByte: 230 byte (1 miliardo di byte ca.) circa 8 miliardi di bit 16
Memoria RAM Struttura della RAM bit organizzati in registri bit 0 bit 1 bit 31 Registro ... 16, 32 o 64 bit #0 ... #1 Informatica Applicata ogni registro ha un suo ... indirizzo #2 ... #3 Es: 64MByte di RAM ... ca. 64 milioni di byte ca.16 milioni di registri da ... 32 bit (224 registri) #224-1 ... 17
Rappresentazione delle Informazioni Tutte le informazioni sono rappresentate attraverso sequenze di bit Esempio: numero -57 su 16 bit 1111111111000111 carattere ‘A’ su 8 bit Informatica Applicata 10000001 Codifica (o Codice) insieme di regole per rappresentare oggetti con altri oggetti in questo caso: lettere, numeri, immagini ecc. attraverso sequenze di bit Interazione con il calcolatore l’utente ha l’impressione di lavorare con oggetti familiari (parole, cifre, ecc.) rappresentazione interna in forma di bit 18
Rappresentazione dei Numeri Rappresentazione dei num. naturali rappresentazione posizionale in base 2 semplice (simile a quella dei numeri decimali): ogni bit è una cifra Rappresentazione dei num. interi codifica in “complemento a 2” Informatica Applicata regole complesse Rappresentazione dei num.reali: Fixed point (virgola fissa): un numero razionale è rappresentato come una coppia di numeri interi: la parte intera e la parte decimale 12,52 → Floating point (virgola mobile): un numero razionale e’ rappresentato come un intero moltiplicato per una opportuna potenza di10, cioè con una coppia 12,52 = 1252/100 = 1252 * 10-2 → 19
Alcune Interessanti Considerazioni I Considerazione numeri di tipo diverso vengono rappresentati in modo completamente diverso II Considerazione la rappresentazione in virgola mobile è esponenziale (i valori crescono rapidamente) III Considerazione Informatica Applicata alcuni numeri reali non possono essere rappresentati in modo esatto In particolare: la rappresentazione in virgola mobile consente di rappresentare solo un numero fissato di cifre decimali alcuni numeri (es: 1/3) devono essere approssimati “troncando” le cifre decimali questo introduce errori nella rappresentazione e quindi nei calcoli 20
Rappresentazione dei Caratteri Codice ASCII a 7 bit al carattere è associato un num. tra 0 e 127 la rappr. del carattere coincide con quella del numero Informatica Applicata nota: vale anche per le cifre (0-9) ed i caratteri speciali (es: +) ‘A’ 65 1000001 ‘0’ 48 0011000 21
Rappresentazione dei Caratteri Limiti del codice ASCII a 7 bit numero di caratteri rappresentabili molto basso (non include lettere accentate) Codice ASCII a 8 bit (“Extended ASCII”) Informatica Applicata al carattere è associato un num. tra 0 e 255 maggior numero di caratteri rappresentabili Al giorno d’oggi codice UNICODE (16 bit o superiore) 22
Informatica Applicata Tabella dei Codici ASCII Estesi 23
Linguaggi di Programmazione Linguaggi per impartire istruzioni al processore Programma sequenza di istruzioni Informatica Applicata normalmente pensato per risolvere un problema di calcolo al programma vengono forniti dei dati il programma calcola eseguendo le istruzioni il programma restituisce i risultati 24
Evoluzione dei Linguaggi Esistono numerosi linguaggi differenti per funzionalità e tecnologia Informatica Applicata anni ‘60 metà anni ’60 1974 1991 1994 COBOL BASIC C VB Java metà anni ’50 1968 1990 2000 FORTRAN Pascal C++ C#, VB.NET Linguaggi di Linguaggi Linguaggi Programmazione Ibridi Orientati Procedurale agli Oggetti 25
Linguaggi di Programmazione programmazione C procedurale “clean C” Informatica Applicata C++ programmazione linguaggio di questo Java, orientata agli corso - C# oggetti sostanzialmente equivalente ma più semplice del C 26
Linguaggi di Programmazione Attenzione i linguaggi della stessa famiglia sono normalmente basati sugli stessi concetti Differenze Informatica Applicata alcuni linguaggi forniscono funzionalità che altri non hanno “sintassi” “semantica” 27
Sintassi e Semantica Sintassi “grammatica” del linguaggio insieme delle regole che stabiliscono quali frasi (programmi) sono corretti Esempio: in Italiano: “maiuscola dopo il punto” in C++: “le istruzioni si concludono con ;” Informatica Applicata Semantica “significato” del linguaggio insieme delle regole che stabiliscono come il calcolatore esegue i programmi corretti Esempio: in italiano: “andrò è un’azione nel futuro” in C++: cout
Sintassi e Semantica Attenzione: ci sono due diverse nozioni di correttezza Correttezza Sintattica assenza di errori sintattici il programma è eseguibile Correttezza Semantica (o Logica) implica la correttezza sintattica Informatica Applicata il prog. risolve correttamente il problema Verifica della correttezza sintattica viene verificata dal compilatore consente di eliminare gli errori sintattici Verifica della correttezza semantica esecuzione e “test” del programma prove di funzionamento per controllare che il programma si comporti correttamente processo più complesso e delicato 29
Ciclo di Vita di un Programma Per programmare è necessario conoscere almeno un linguaggio (sintassi e semantica) Ma questo non basta Informatica Applicata il processo di sviluppo del software è complesso è necessario un metodo (ovvero una “metodologia”) per affrontare questa complessità 30
Ciclo di Vita di un Programma Il punto di partenza la descrizione del problema, normalmente fornita in linguaggio naturale è opportuno analizzarla accuratamente Informatica Applicata Il punto di arrivo l’applicazione correttamente funzionante Un passo intermedio fondamentale concepire una strategia per la soluzione del problema 31
Ciclo di Vita di un Programma Algoritmo: sequenza finita di passi, elementari e non ambigui, che risolve un problema in un tempo finito PROBLEMA ALGORITMO PROGRAMMA Informatica Applicata strategia linguaggio di risolutiva programmazione Efficienza: algoritmo deve risolvere il problema utilizzando al meglio le risorse a disposizione 32
Ciclo di Vita di un Programma Avendo concepito l’algoritmo è possibile procedere alla scrittura del codice Codice sorgente Informatica Applicata istruzioni del linguaggio di programmazione non è direttamente eseguibile dal processore Linguaggio macchina linguaggio di comandi eseguibili dal processore (molto semplici) 33
Linguaggi ad alto livello Conviene impostare la soluzione di un problema a partire dalle “mosse elementari” del linguaggio macchina? SI, per risolvere il problema con efficienza NO, se la macchina di partenza ha mosse di livello troppo basso (difficile progettare un algoritmo) Informatica Applicata Linguaggi di Programmazione ad Alto Livello Alto livello di astrazione: le istruzioni corrispondono ad operazioni più complesse esempi: Pascal, Basic, C, C++, Java E’ necessario tradurre il programma nel linguaggio macchina mediante opportuni programmi (interprete o compilatore) 34
Compilatore Processo di compilazione verifica della correttezza sintattica trasforma il codice sorgente in codice “oggetto” Informatica Applicata Processo di collegamento collega il codice oggetto a quello delle “librerie” esterne (es: op. matematiche) produce il codice eseguibile completo dell’applicazione 35
Ciclo di Vita di un Programma A questo punto l’applicazione è eseguibile è necessario verificarne la correttezza logica Informatica Applicata Fase di test esecuzione ripetuta dell’applicazione su dati di test per verificarne il funzionamento 36
Ciclo di Vita di Un Programma Analisi del Scelta dell’ Scrittura del Problema Algoritmo Programma codice Informatica Applicata sorgente Compilazione errori e errori errori nella Collegamento sintattici logici strategia codice eseguibile ATTENZIONE queste fasi non si Uso e Verifica Manutenzione svolgono “in cascata” 37
Compilazione e Collegamento codice codice sorgente Compilazione oggetto es:primo.cpp (ling. macchina) Compilatore es: primo.obj Informatica Applicata librerie codice esterne Collegamento eseguibile precompilate es: primo.exe es: iostream Collegatore (“linker”) 38
Termini della licenza Questo lavoro si basa sul lavoro di G. Mecca “Programmazione Procedurale in Linguaggio C++”. Questo lavoro viene concesso in uso secondo i termini della licenza “Attribution-ShareAlike” di Creative Commons. Per ottenere una copia della licenza, è possibile visitare http://creativecommons.org/licenses/by-sa/1.0/ oppure inviare Informatica Applicata una lettera all’indirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA 39
Puoi anche leggere