Informatica Applicata



Похожие документы
C. P. U. MEMORIA CENTRALE

Esame di INFORMATICA

Architettura del calcolatore

Informatica - A.A. 2010/11

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

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

Laboratorio di Informatica

Dispensa di Informatica I.1

Architettura dei computer

Lez. 3 L elaborazione (II parte) Prof. Pasquale De Michele Gruppo 2

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

Contenuti. Visione macroscopica Hardware Software. 1 Introduzione. 2 Rappresentazione dell informazione. 3 Architettura del calcolatore

Richiami di informatica e programmazione

CONCETTI BASE dell'informatica Cose che non si possono non sapere!

Scuola Secondaria di Primo Grado Anna Frank Nome Cognome classe anno sc. 2008/09 INFORMATICA

Architettura hardware

Vari tipi di computer

Corsi Speciali Abilitanti Indirizzo 2: Fisico-Matematico Modulo Didattico: Elementi di Informatica Classi: 48/A TEST D INGRESSO

I componenti di un Sistema di elaborazione. Memoria centrale. È costituita da una serie di CHIP disposti su una scheda elettronica

Corso di INFORMATICA 2 (Matematica e Applicazioni)

Dispensa di Fondamenti di Informatica. Architettura di un calcolatore

Programmazione Orientata agli Oggetti in Linguaggio Java

SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI

Linguaggi di programmazione

Lezione 3: Architettura del calcolatore

Il calcolatore elettronico. Parte dei lucidi sono stati gentilmente forniti dal Prof. Beraldi

Fondamenti di Informatica T-1

Informazione analogica e digitale

Corso di Informatica

Linguaggi di programmazione

PROVA INTRACORSO TRACCIA A Pagina 1 di 6

INFORMATICA 1 L. Mezzalira

Hardware, software e periferiche. Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre

FONDAMENTI di INFORMATICA L. Mezzalira

Software relazione. Software di base Software applicativo. Hardware. Bios. Sistema operativo. Programmi applicativi

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

- Algoritmi ed esecutori di algoritmi - ALGORITMI MACCHINA DI VON NEUMANN

Codifica: dal diagramma a blocchi al linguaggio C++

Sistema operativo: Gestione della memoria

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

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

PIANO DI LAVORO DEI DOCENTI

Introduzione alla programmazione in C

Ing. Paolo Domenici PREFAZIONE

Fondamenti di Informatica. Docenti: Prof. Luisa Gargano Prof. Adele Rescigno BENVENUTI!

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

All interno del computer si possono individuare 5 componenti principali: SCHEDA MADRE. MICROPROCESSORE che contiene la CPU MEMORIA RAM MEMORIA ROM

ARCHITETTURA DEL CALCOLATORE

Linguaggi per COMUNICARE. Il linguaggio è un sistema codificato di segni che consente la comunicazione, intesa come scambio di informazioni

INFORMATICA. Corso di Laurea in Scienze dell'educazione

Architettura di un calcolatore

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

NOZIONI ELEMENTARI DI HARDWARE E SOFTWARE

Linguaggi e Paradigmi di Programmazione

Introduzione all'architettura dei Calcolatori

CORSO DI LAUREA IN SCIENZE ERBORISTICHE E DEI PRODOTTI NUTRACEUTICI

Concetti fondamentali della Tecnologia Dell informazione Parte prima

ISTITUTO TECNICO ECONOMICO MOSSOTTI

CPU. Maurizio Palesi

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

IL COMPUTER APPUNTI PER LEZIONI NELLE 3 CLASSI LA MACCHINA DELLA 3 RIVOLUZIONE INDUSTRIALE. A CURA DEL Prof. Giuseppe Capuano

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

In un modello a strati il SO si pone come un guscio (shell) tra la macchina reale (HW) e le applicazioni 1 :

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

Parte II.2 Elaboratore

RETI E SISTEMI INFORMATIVI

Architettura di un computer

Lezione 2 OPERAZIONI ARITMETICHE E LOGICHE ARCHITETTURA DI UN ELABORATORE. Lez2 Informatica Sc. Giuridiche Op. aritmetiche/logiche arch.

Programmazione Orientata agli Oggetti in Linguaggio Java

Informatica. Rappresentazione dei numeri Numerazione binaria

Tecnologia dell Informazione

Sistemi di Elaborazione delle Informazioni. Corso di Laurea per "Tecnico Ortopedico" 03

Introduzione all uso del Personal Computer

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro

Memoria Secondaria o di Massa

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

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

Funzionalità di un calcolatore

Università degli Studi di Cassino Corso di Fondamenti di Informatica Codifica di dati e istruzioni. Anno Accademico 2010/2011 Francesco Tortorella

Introduzione. Informatica B. Daniele Loiacono

Fasi di creazione di un programma

MODULO Il personal computer. ISIS STRINGHER Corso Serale Anno scolastico 2010/11 Classe 1 Commerciale

Informatica Generale

introduzione I MICROCONTROLLORI

La Macchina Virtuale

Il Software e Il Sistema Operativo. Prof. Francesco Accarino IIS Altiero Spinelli A.S. 09/10

Architettura dei calcolatori I parte Introduzione, CPU

4 3 4 = 4 x x x 10 0 aaa

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

La codifica delle informazioni

Struttura del calcolatore

processore case Le casse acustiche

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

Corso: Informatica+ Andrea Cremonini. Lezione del 20/10/2014

Laboratorio di Informatica

Elementi di informatica

Транскрипт:

Ing. Irina Trubitsyna Concetti Introduttivi

Programma del corso Obiettivi: Il corso di 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 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. 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 Tutor: Antonella Dimasi e-mail: dimasi@exeura.it 4

Orario gruppo 1 : gruppo 2 : Arenare Giuseppe - Marchese Fanny 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 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 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-Sommario1 Architettura del Calcolatore Architettura di Von Neumann Rappresentazione delle Informazioni 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 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 -Schermo -Audio -Stampanti Dispositivi di Ingresso -Tastiera -Mouse Unità Centrale -Processore -Memoria di lavoro (memoria RAM) Memorie di Massa -Disco Rigido -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 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) 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 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 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 Organizzazione della RAM composta di numerosi circuiti (celle) ciascuno capaci di memorizzare un bit di informazione Bit ( Binary Digit ) unità di memorizzazione per il calcolatore può valere 1 oppure 0 facilmente rappresentabile con un segnale elettrico V 3V 0.2V 1 0 t 14

Rappresentare Informazione con i Bit Con un bit due numeri (0 e 1) Con due bit quattro numeri (00, 01, 10, 11) 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: 2 10 byte (1024 byte) 1024x8 bit = 8192 bit MegaByte: 2 20 byte (1 milione di byte ca.) circa 8 milioni di bit GigaByte: 2 30 byte (1 miliardo di byte ca.) circa 8 miliardi di bit 16

Memoria RAM Struttura della RAM bit organizzati in registri Registro 16, 32 o 64 bit ogni registro ha un suo indirizzo Es: 64MByte di RAM ca. 64 milioni di byte ca.16 milioni di registri da 32 bit (2 24 registri) #0 #1 #2 #3 bit 0 bit 1 bit 31.................. #2 24-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 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 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 <12; 52> Floating point (virgola mobile): un numero razionale e rappresentato come un intero moltiplicato per una opportuna potenza di10, cioè con una coppia <mantissa, esponente> 12,52 = 1252/100 = 1252 * 10-2 <1252; -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 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 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 ) 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

Tabella dei Codici ASCII Estesi 23

Linguaggi di Programmazione Linguaggi per impartire istruzioni al processore Programma sequenza di istruzioni 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 anni 60 COBOL metà anni 50 FORTRAN metà anni 60 BASIC 1968 Pascal 1974 C 1991 VB 1990 C++ 1994 Java 2000 C#, VB.NET Linguaggi di Programmazione Procedurale Linguaggi Ibridi Linguaggi Orientati agli Oggetti 25

Linguaggi di Programmazione programmazione procedurale C clean C programmazione orientata agli oggetti linguaggio di questo corso - sostanzialmente equivalente ma più semplice del C C++ Java, C# 26

Linguaggi di Programmazione Attenzione i linguaggi della stessa famiglia sono normalmente basati sugli stessi concetti Differenze 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 ; 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 << Ciao ; Attenzione sintassi e semantica dei linguaggi di programmazione sono rigorose 28

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 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 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 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 strategia risolutiva linguaggio di 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 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) 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 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 Fase di test esecuzione ripetuta dell applicazione su dati di test per verificarne il funzionamento 36

Ciclo di Vita di Un Programma Analisi del Problema Scelta dell Algoritmo Scrittura del Programma errori nella strategia codice sorgente Compilazione e Collegamento codice eseguibile errori sintattici errori logici ATTENZIONE queste fasi non si svolgono in cascata Verifica Uso e Manutenzione 37

Compilazione e Collegamento codice sorgente es:primo.cpp Compilazione Compilatore librerie esterne precompilate es: iostream Collegamento Collegatore ( linker ) codice oggetto (ling. macchina) es: primo.obj codice eseguibile es: primo.exe 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 una lettera all indirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA 39