Sei sulla pagina 1di 12

Informatica

Varie Definizioni 1.

Fondamenti di Informatica
Introduzione Prof. Francesco Lo Presti

Scienza degli Elaboratori Elettronici

Computer Science

2. Scienza S i dellInformazione d llI f i Scienza Scienza della Rappresentazione e della

Elaborazione dellInformazione

Linformatica studia le caratteristiche dellinformazione e i modi di usarla, immagazzinarla, trasportarla e manipolarla in modo automatico
Introduzione 2

LInformatica comprende:
1. 2. 3. 4. 5 5. 6. 7. 8 8. 9. 10.

Calcolatore
Un calcolatore elettronico una macchina

Metodi per la rappresentazione dellinformazione Metodi per la rappresentazione delle soluzioni Linguaggi di programmazione Linguaggi di integrazione Architettura dei calcolatori Sistemi operativi Reti di Calcolatori Basi B si di D Dati ti Tecnologie Web Algoritmi Due Anime

programmabile bil per l la rappresentazione, t i l la memorizzazione, lelaborazione e la trasmissione delle informazioni Deve essere in grado di:

Eseguire istruzioni sui dati Controllare il flusso di esecuzione Memorizzare le istruzioni e i dati su cui operare Interagire con gli utenti e gli altri sistemi

Tecnologica: I calcolatori elettronici ed i sistemi che li Tecnologica: utilizzano Metodologica: Metodologica : I metodi per la soluzione di problemi e la gestione delle informazioni
Introduzione 3

Decomposizione Hardware Hardware: : Struttura fisica del calcolatore Software Software: : Insieme di programmi che consentono allhardware all hardware di svolgere compiti utili
Introduzione 4

Programma e Programmazione
Programma Sequenza di istruzioni istruzi ni che il c computer mputer ese esegue ue e di decisioni che il computer prende per svolgere una certa attivit Istruzioni I t i i

Algoritmo
Quale tipo di problemi possibile risolvere con un

computer? t ?

Ogni programma svolge una diversa funzione, anche complessa


9 impaginare p g testi o giocare g a scacchi

9 estrarre un numero da una posizione della memoria 9 sommare due numeri 9 inviare la lettera A alla stampante 9 se un dato negativo, proseguire il programma da una certa istruzione anzich dalla successiva (decisione)

Si dice di algoritmo l it la l descrizione d i i di un metodo t d di

soluzione di un problema che


sia eseguibile sia priva di ambiguit arrivi ad una conclusione in un tempo finito

Un computer pu risolvere soltanto quei problemi

Programmazione Lattivit di progettare e realizzare un programma


Introduzione 5

per i quali li sia i noto t un algoritmo l it

Introduzione

Cosa e un calcolatore?
A device that computes, especially a

Calcolatore Elettronico
Macchina per lesecuzione automatica di algoritmi General l Purpose: puo svolgere l qualsiasi l elaborazione l di d cui sia noto un algoritmo risolutivo Programma e e un algoritmo espresso in un

programmable bl electronic l t i machine hi that th t performs f highhigh -speed mathematical or logical operations or that assembles assembles, stores stores, correlates, correlates or otherwise processes information g Dictionary y of the -- The American Heritage English Language, 4th Edition, 2000

linguaggio di programmazione Linguaggio macchina binario binario: : linsieme l insieme delle istruzioni direttamente eseguibile dal calcolatore Istruzione Macchina

operazione logico/aritmetica su dati o di trasferimento dati codificata difi t i in bi binario i


9 Esempio 10000110010100000 istruisce il calcolatore di effettuare una somma

Programma eseguibile: eseguibile: un algoritmo espresso in


Introduzione 7

linguaggio macchina

Introduzione

Calcolatore Elettronico
Accetta in ingresso informazioni codificate in f forma di digitale it l 2. Le elabora attraverso un programma memorizzato 3. Produce P d informazioni i f i ii in uscita it
1.
Dati Programma memorizzato in esecuzione s cuzi n Computer Risultati

Modello di Von Neumann


Processore Unit di controllo Unit di elaborazione l b i dati Dispositivi p di I/O Memoria
Interfaccia di I/O Interfaccia di I/O

Dispositivi p di I/O

Bus

dati indirizzi controllo

Introduzione

Introduzione

10

Processore - Central Processing Unit (CPU)


Provvede allesecuzione delle istruzioni macchina Ciclo di Esecuzione 1. Prelievo Istruzione dalla Memoria 2. Decodifica D difi I Istruzione t i 3. Esecuzione Istruzione Ogni Processore e e caratterizzato da un proprio

Processore - Central Processing Unit (CPU)


Processore e composto da due sottosistemi: 1 1.

Unit U it di C Controllo t ll (C (Control) t l) Parte P t di Controllo C t ll

2. Unita di Elaborazione (Datapath) Parte

Controlla il sequenziamento e lesecuzione delle istruzioni generando i segnali g g di controllo

Operativa

linguaggio macchina

Esegue l E le istruzioni i t i i ALU

Banco di Registri (Register File)

9 Esegue g operazioni p logico g aritmetiche sui dati

9 Memoria interna CPU 9 Program Counter (PC) Indirizzo Prossima Istruzione 9 Instruction Register (IR) Codice Istruzione da eseguire
Introduzione 12

Introduzione

11

Processore - Central Processor Unit (CPU)

Il Bus
La struttura di interconnessione pi comune percorsi d di comunicazione tra d due o pi dispositivi d mezzo di trasmissione condiviso Usualmente di tipo broadcast
9 I dati sono visibili da tutte le unit connesse

ALU

Bus Intern no CPU

PC IR

Bus Contro B ollo

Bus Indiriz B zzi

Bus Dati

Unit di Elaborazione Registri

Processore Unit di controllo

Dispositivi di I/O Memoria Interfaccia di I/O

Dispositivi di I/O

Unit di Controllo
Segnali di Controllo

Unit U it di elaborazione dati

Interfaccia di I/O

Bus

dati indirizzi controllo

Introduzione

13

Introduzione

14

La Memoria
Memoria Primaria: Memoria Centrale Contiene C ntiene istruzi istruzioni/dati ni/dati dei pr programmi rammi in esecuzi esecuzione ne

La Memoria Centrale
Composta di celle celle, , o locazioni, locazioni, a loro volta

composte da un numero fisso di bit


Volatile RAM Random Access Memory

9 in formato binario

Veloce (~10(~10-100ns) Costosa Dimensioni contenute (fino a qualche Gigabyte) E organizzata come una gerarchia di memorie
9 Cache di primo e secondo livello

9 Memoria ad accesso casuale empo di d accesso costante Tempo 9 SRAM, DRAM, etc.

Ogni locazione e associata ad un indirizzo

Cella elementare di memoria pu memorizzare solo due valori: valori: 0 o 1, cifra binaria (binary digit -> bit) Tipicamente cella cella=1 =1 1 byte (8 bit)

byte M-1 byte M-2

nellintervallo [0,1,,M [0,1,,M-1]


La CPU (ma non solo) accede alle informazioni in

M dimensione della memoria La memoria e vista come un vettore di byte

Memoria

scrittura/ scrittura /lettura tramite indirizzo della cella

Indirizzi a m bit: spazio di indirizzamento 2m


9 Non necessariamente M= 2m

byte 1 byte 0

Memoria Secondaria: Dischi, CD, etc.. Memoria di lungo periodo - non volatile Tempo di accesso maggiori (~ms e piu piu) ), economica
Introduzione 15

Operazioni O Operazioni: i i: Lettura L tt Lettura/ /Scrittura S itt


Lettura: Prelevare il contenuto di una cella di memoria Lettura: Scrittura: Scrittura : Sostituire il contenuto di ina cella di memoria

8 bit

Introduzione

16

Software
Programmi che vengono eseguiti dal sistema Software f d di base
9 Sistema Operativo

Il Sistema Operativo
Strato software che opera sopra lhardware e

gestisce lelaboratore l elaboratore

Windows, Linux, MacOs X, Symbian, etc.

Software Applicativo
9 Word Processor

Hardware d Software di Base S ft Software A Applicativo li ti

Funzioni Gestione delle risorse disponibili


Insieme (complesso) di programmi

Organizzato a strati Ciascuno con funzionalit di livello pi alto rispetto a quelli sottostanti

Processore: Sistema Multiutente Memoria Centrale: Memoria Virtuale Memoria Secondaria: File System

9 Processore, P ss Memoria, M i Dischi, Dis hi etc, t

Concetto di Macchina Virtuale


Introduzione 17

Gli utenti vedono l lelaboratore elaboratore solo tramite il

Sistema Operativo

Il SO realizza una macchina virtuale


Introduzione 18

Programmi Applicativi
Risolvono problemi specifici degli utenti: Word d processor Fogli elettronici Database Giochi Etc.
9 Scritti in linguaggi di programmazione di alto livello

Alcune Domande Fondamentali


Quali istruzioni esegue un eleboratore? Quali problemi puo risolvere un eleboratore? Esistono problemi che un elaboratore non puo

risolvere? i l ? Che ruolo ha il linguaggio di programmazione?

Ambiente A bi t di P Programmazione i Linsieme dei programmi che consentono la scrittura, la verifica ver f ca e lesecuzione l esecuz one di d nuovi nuov programmi programm
9 Fase di sviluppo

Introduzione

19

Introduzione

20

Problemi da Risolvere
I problemi che siamo interessati a risolvere sono di natura molto varia: 1. Trovare il maggiore fra due numeri 2. Dato un elenco di nomi e numeri di telefono, trovare il numero di una data persona 3. Problema del lupo, della capra e del cavolo 4 4. Dati a e b, b risolvere l lequazione equazione ax+b=0 ax+b 0 5. Stabilire se una parola precede alfabeticamente unaltra 6. Ordinare una lista di elementi 7. Creare, alterare suoni 8. Analizzare e riconoscere immagini 9. Salvare e recuperare delle informazioni 10. Trasmettere informazioni

Introduzione 21

Risoluzione di Problemi
La descrizione di un problema non fornisce (in

generale) l ) un metodo t d per risolverlo i l l

Non N t tutti tti i problemi bl i sono risolvibili i l ibili attraverso tt l luso

del calcolatore: Esistono classi di problemi per le quali la soluzione automatica non proponibile. proponibile As esempio:

Se il p problema ammette infinite soluzioni

Noi considereremo problemi che ammettono un

metodo risolutivo ovvero Problemi per i quali esiste un algoritmo risolutivo


Introduzione 22

Algoritmo
Un algoritmo una sequenza finita di mosse/azioni

Esempio di Problema
Problema: Come si cucina un uovo al burro? Soluzione 1. 2. 3. 4 4. 5.

che h risolve i l in i un t tempo fi finito it una classe l di problemi

L'esecuzione delle azioni nell'ordine specificato

dall'algoritmo g consente di ottenere, , a partire p dai dati di ingresso, i risultati che risolvono il problema

Esecutore una

macchina astratta capace di eseguire le azioni specificate dall dallalgoritmo dallalgoritmo


Il calcolatore un caso particolare di esecutore

Far sciogliere in un tegamino 20g. di burro Quando il burro assume un colore dorato rompere il guscio delluovo Far F scivolare l delicatamente d l nel l tegamino albume lb e tuorlo R Rosolare l Quando lalbume ben rappreso spegnere il fuoco

Introduzione

23

Introduzione

24

Esempio di Problema
Problema: Risolvere lequazione ax+b=0 Soluzione

Algoritmi e Programmi
Passi per la risoluzione di un problema:

leggi i valori di a e b 2. calcola b 3. dividi quello che hai ottenuto per a e chiama x il risultato l 4. stampa x
1.

individuazione di un procedimento risolutivo scomposizione del procedimento in un insieme ordinato di azioni Algoritmo rappresentazione dei dati e dellalgoritmo attraverso un formalismo comprensibile dal calcolatore (linguaggio di programmazione) Programma
Metodo di Risoluzione Linguaggio di Programmazione main() { /* prodotto C */ unsigned int a, b; int w, z; scanf("%d %d",&a,&b); z = 0; w = a; while (w > 0) w ){ z = z + b; w = w 1; } printf("%d", p f( , z); );

Inizio Dichiarazione: a, b, w, z contengono numeri interi Leggi a e b w a; z 0; S zz+b ww 1 w>0? No Scrivi Fine

Prodotto di due numeri naturali

} Introduzione 25

Problema

Algoritmo

Programma Introduzione

26

Dati e istruzioni
Tipi di dati

Algoritmi e Variabili
(1 -2, (1, 2 0 0.34) 34) (A, B, ..) (Vero, ( , Falso) ) ({1,2,3})

Numeri N i naturali li o interi i i o reali li Caratteri alfanumerici Dati logici g o booleani Array o vettore di n elementi

Gli algoritmi sono parametrici: producono un risultato che dipende da un insieme di dati di partenza; descrivono la soluzione non di un singolo problema, ma di una intera classe di problemi strutturalmente equivalenti. Esempi:
9 lalgoritmo per la moltiplicazione di due numeri specifica come effettuare il p prodotto di tutte le p possibili coppie pp di numeri; i 9 lalgoritmo per la ricerca di un libro nello schedario della biblioteca vale per tutti i possibili libri; 9

Istruzioni

Operazioni di Input/Output Operazioni AritmeticoAritmetico-logiche Strutture di Controllo

(es. leggi, scrivi) (es. max = A + B) (es. SE, RIPETI )

Introduzione

27

Introduzione

28

Algoritmi e Variabili
Le istruzioni dellalgoritmo

Uso delle Variabili


Allinterno di espressioni, lesecutore l esecutore usa il valore contenuto nelle variabili per calcolare il risultato dellespressione, per esempio var1 + var2 var3 oppure var1 / var2 var3, in istruzioni di assegnamento/assegnazione introdurre nel contenitore identificato dal nome della variabile il valore specificato a destra dellassegnamento; dell assegnamento; Esempi: r 35 (assegna 35 alla variabile il cui nome r), pi 3,14 3 14

fanno riferimento a variabili

Variabile Variabile: :N Nome me ass associato ciat ad

Somma x ad y Se a>o allora Come in matematica una variabile un sinonimo per indicare un dato Contenitore per dati x y a totale

Memoria M m

una locazione di memoria

8 4 3 6

Astrazione delle cella di

memoria

Introduzione

29

Introduzione

30

Uso delle Variabili


in istruzioni di assegnamento combinate con

Rappresentazione degli algoritmi


Linguaggio naturale Diagramma a blocchi Pseudo codice Linguaggio di programmazione

espressioni

assegna a una variabile il risultato ottenuto dalla valutazione di unespressione circ 2 r pi

la stessa variabile pu comparire in entrambi i lati dellistruzione di assegnamento

9 il risultato dellespressione 2 r pi viene calcolato utilizzando i valori contenuti nelle variabili r e pi e il risultato i lt t viene i poi i assegnato t alla ll variabile i bil circ; i

9k k + 1 9 il valore contenuto in k viene utilizzato per trovare il valore dellespressione k + 1 che viene memorizzato come nuovo valore l di k. k

Introduzione

31

Introduzione

32

Rappresentazione degli algoritmi


Linguaggio Naturale

Diagrammi di flusso

Diagramma di flusso
Inizio Leggi L i xey d x y

Sollevare il ricevitore Attendere il segnale di li linea lib libera Comporre il numero

START

END

I/O

PROCESS

Inizio

Fine

Operazioni di g ingresso/uscita

Elaborazione

d>0?

No

S
Scrivi max x Scrivi max y

Predicato

No

SUB-PROCESS

Fine
Introduzione 33

Selezione a d due vie i

Sottoprogramma p g mm
Introduzione 34

Esempio
Esempio: dati in ingresso due numeri x e y, si calcoli e stampi il maggiore.

Somma dei primi N numeri naturali


Inizio
Inizio

Inizio

Leggi n
Leggi L i xey d x y

Leggi n

ris 0 i0

ris n

d>0?

No

No

i>n?

S Scrivi ris

No

n<1?

S Scrivi ris

Scrivi max x

Scrivi max y

ris ris + i i i +1

n n 1 ris ris + n

Fine
Fine
Introduzione 35

Fine
Introduzione 36

Somma dei primi N numeri naturali


Inizio
1 Leggi n 2

Somma dei primi N numeri naturali


note
Variabili non ancora definite Letto il valore 4 e inserito in n i < n posiz. 4 i < n posiz. 4 i < n posiz. 4 i < n posiz. posiz 4 i = n posiz. 4 i > n posiz. 5 Stampato risultato (10)
Introduzione 37 Introduzione 38

ris 0 i 0
3 4 No

i>n?

5 Scrivi ris 6 Fine

ris ris + i i i +1

T posiz. n ?? t01 c 4 t02 d 4 t03 e 4 t04 f 4 t05 e 4 t06 f 4 t07 e 4 t08 f 4 t09 e 4 t10 f 4 t11 e 4 t12 f 4 t13 e 4 t14 g 4 t15 h

i ?? ?? 0 0 1 1 2 2 3 3 4 4 5 5 5

ris ?? ?? 0 0 0 0 1 1 3 3 6 6 10 10 10

Esiste infatti una soluzione analitica:

n (n + 1) / 2 Lalgoritmo molto pi semplice (il numero di istruzioni da eseguire costante e non dipende dal valore di n). )

Inizio 1 Leggi n 2 ris n (n + 1) / 2

T posiz. i t01 c t02 d t03 e t04 f

N ?? 4 4 4

ris i ?? ?? 10 10

note t
Variabili non ancora definite Letto il valore 4 e inserito in n Calcolato il risultato 10=45/2 Stampato risultato (10)

3 Scrivi ris 4 Fine

Prodotto di due numeri naturali


Dati a, b interi positivi w, z interi Risoluzione gg a e b leggi z 0 w a p finch w > 0 ripeti z z + b w w 1 fine ciclo scrivi z fine
Inizio Dichiarazione : a, b, w, z contengono numeri interi Leggia e b w a; z 0; S z z + b w w 1 w > 0? No Scrivi z Fine
Introduzione 39

Programmi e Programmazione
Programma Programma: : la descrizione di un algoritmo in un

particolare ti l linguaggio li i di programmazione. i

Quali Q li parole l chiave hi ? Quali dati ? Quali Q l operazioni elementari l ? Quali meccanismi di combinazione ? Un linguaggio di programmazione una notazione

formale per descrivere algoritmi che comprensibile ad un calcolatore. calcolatore

Introduzione

40

Linguaggi di Programmazione
Ogni linguaggio caratterizzato da:

Linguaggi di Programmazione
Esistono diversi tipi di Linguaggi di Programmazione Linguaggi Lin im macchina hin e lin linguaggi i assembler ss mbl

sintassi: linsieme di regole formali per la sintassi: scrittura di programmi in quel linguaggio, che dettano le modalit per costruire frasi corrette nel linguaggio stesso. 2 semantica 2. semantica: :l linsieme insieme dei significati da attribuire alle frasi (sintatticamente corrette) costruite nel g gg linguaggio.
1. Una frase pu essere sintatticamente corretta e

ogni azione indicata in codice binario o con operazioni molto semplici e rudimentali : ADD X, Y oppure STORE A

Linguaggi imperativi (PASCAL, FORTRAN, C, BASIC, )

le azioni da compiere sono indicate in una sequenza che partendo dai dati si completa calcolando i risultati : if a > 0 print (valore positivo) else print (valore negativo);

Linguaggi Li i dichiarativi di hi ti i (l (logici i i - PROLOG, PROLOG funzionali f i li - LISP)

tuttavia non aver alcun significato! Lo stesso pu accadere per una istruzione.

un programma la definizione di una funzione o lelenco delle regole logiche che portano a verificare una condizione.

Introduzione

41

Introduzione

42

Linguaggi di Programmazione
Linguaggi orientati agli oggetti (C++, Java,

Linguaggi di Programmazione e Astrazione


Esistono linguaggi a vari livelli di astrazione Linguaggio Macchina

Smalltalk, S llt lk .) )

Sono basati sul concetto di oggetto software che rappresenta un oggetto del mondo reale (un numero, un archivio, un testo, una matrice). I dati sono rappresentati come oggetti e le azioni da compiere come operazioni da effettuare sugli su li oggetti. o etti Di solito sono realizzati come estensione dei linguaggi p imperativi. Un programma modella un problema reale come una collezione di oggetti software che interagiscono.

0100 0000 0000 1000 0100 0000 0000 1001 0000 0000 0000 1000
Linguaggio Assembler

Sequenze di istruzioni macchina in binario direttamente eseguibili dal processore Istruzioni hanno corrispondenza 1 a 1 con quelle macchina, ma vengono espresse con nomi simbolici

LOAD X ADD Y STORE Z


Linguaggio g gg di Alto Livello

main ( ) { int a=0; cout << a+5; return 0; }

Indipendente dalla macchina. Astrazione dati

Introduzione

43

Introduzione

44

Da un linguaggio di programmazione ad alto livello al linguaggio macchina


Un linguaggio di programmazione ad alto livello Offre ff astrazioni notevoli l
9 Variabili, tipizzazione dei dati 9 Procedure, funzioni 9 Programmazione ad oggetti 9 Gestione di eccezioni

Il processo di traduzione completo


swap(int v[], int k) { i t t int temp; temp = v[k]; v[k] = v[k+1]; v[k+1] [k 1] = temp; } swap: muli $2, $5, 4 add $2 $2, $4 $4, $2 lw $15, 0($2) lw $16, 4($2) sw $16 $16, 0($2) sw $15, 4($2) jr $31

compilatore

Programma compilatore traduce da un linguaggio di programmazione ad alto livello al linguaggio assembler Talvolta traduce direttamente da linguaggio di programmazione ad alto livello a linguaggio macchina
Introduzione 45

A Aumenta t l la produttivit d tti it d del l programmatore t Permette al programma di essere indipendente dal computer p sul quale q viene sviluppato pp

Programma in linguaggio ad alto livello

Programma in linguaggio assembler (MIPS) Programma in linguaggio macchina binario (MIPS)

assemblatore

00000000101000010000000000011000 00000000100011100001100000100001 10001100011000100000000000000000 10001100111100100000000000000100 10101100111100100000000000000000 10101100011000100000000000000100 00000011111000000000000000001000


Introduzione 46

Compilazione ed Interpretazione
La compilazione e un processo di traduzione che, a

Il Compilatore
Il Compilatore sostituisce a ogni istruzione del

partire da un programma scritto in linguaggio simbolico, ne genera una versione equivalente in assembler/linguaggio macchina

L Linterpretazione interpretazione e un processo di esecuzione

Il programma che effettua la traduzione prende il nome di compilatore Il programma risultante puo puo essere eseguito direttamente sul calcolatore

programma PL1, PL1 scritto itt nel l linguaggio li i L1, L1 una sequenza di istruzioni scritte nel linguaggio macchina LM P ProgrammaC++

Il programma risultante PLM equivalente q a PL1 ma scritto nel linguaggio LM


Dati

Compilatore C++/Assembler Computer

P ProgrammaLM

indiretta di un programma ad opera di un programma detto interprete


Linterprete p legge gg il codice del programma p g da eseguire g e ne simula lesecuzione, lesecuzione, generando i relativi risultati Linterprete e, in sostanza, un simulatore di un calcolatore ca co ator virtuale rtua il cu cui linguaggio nguagg o macchina macch na e il linguaggio interpretato
Introduzione 47

ProgrammaLM Computer

Risultati

Introduzione

48