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 ApplicataProgramma 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
2Materiale 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/
3Altre 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
4Orario
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
5Prerequisiti
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.
6Lezione 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
7Prerequisiti - 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
8Architettura 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
9Macchina 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
10Processore
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
11Memoria 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
12Architettura 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
13Memoria 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
14Rappresentare 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
15Unità 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
16Memoria 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 ...
17Rappresentazione 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
18Rappresentazione 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 →
19Alcune 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
20Rappresentazione 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
21Rappresentazione 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)
22Informatica Applicata Tabella dei Codici ASCII Estesi
23Linguaggi 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
24Evoluzione 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
25Linguaggi 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
26Linguaggi 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”
27Sintassi 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++: coutSintassi 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
29Ciclo 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à
30Ciclo 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
31Ciclo 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
32Ciclo 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)
33Linguaggi 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)
34Compilatore
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
35Ciclo 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
36Ciclo 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”
37Compilazione 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”)
38Termini 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
39Puoi anche leggere