Riassunti introduzione ai sistemi informatici PDF

Title Riassunti introduzione ai sistemi informatici
Author Francesco Alba
Course Informatica di base SC (i)
Institution Università degli Studi di Verona
Pages 44
File Size 1.6 MB
File Type PDF
Total Downloads 623
Total Views 818

Summary

INTRODUZIONE AI SISTEMI INFORMATICI 1. INTRODUZIONE nasce interesse per poter esprimere che lo circonda. Si crea quando indica un oggetto pronunciando o scrivendo parole: attraverso uso di parole ci si riferire alle cose senza che siano fisicamente presenti. ha creato molteplici strumenti in grado d...


Description

INTRODUZIONE AI SISTEMI INFORMATICI 1. INTRODUZIONE L’informazione nasce dall’ interesse dell’uomo per poter esprimere ciò che lo circonda. Si crea quando l’uomo indica un oggetto pronunciando o scrivendo parole: attraverso l’ uso di parole ci si può riferire alle cose senza che siano fisicamente presenti. L’uomo ha creato molteplici strumenti in grado di supportarlo nell’ elaborazione delle informazioni: - strumenti formali: consentono di trattare entità di informazione dotate di una carta struttura, ricavandone delle condizioni tramite la sola elaborazione (come Excel); - strumenti materiali: materializzano le entità di informazione per facilitare l’ elaborazione come i regoli. Nell’ informazione ci servono strumenti di memorizzazione, calcoli che vengono affidati ad utenti, definiti di elaborazione e scomposizione in operazioni elementari eseguite automaticamente, che devono fare passi indipendentemente da noi, noi utenti diamo solamente l’ input; chiamiamo programma questo tipo di operazioni da compiere. Come è possibile realizzare un dispositivo in grado di elaborare le informazioni in base ad un programma definito dall’ utente? (prima macchina: Von Neumann nel 1940). Ci sono 3 sottoinsiemi interconnessi: *interfaccia: sapere quali sono i dati da memorizzare (rende possibile l’interazione con il mondo esterno come tastiere, stampanti..). Input: dagli utenti ai programmi e ai dati verso il calcolatore, da persona a macchina. Output: ciò che va dalla macchina all ‘utente (chiedo di visitare un blog, e risponde con l’apertura del blog). *memorizzazione: il calcolatore deve contenere dati e istruzioni con uguale formato, dati e istruzioni devono essere ogni volta recuperati dalla memoria ed esso può eseguire programmi diversi. *elaborazione: il calcolatore deve fare il calcolo chiamato CPU (unità centrale di elaborazione) che legge l’ istruzione e i dati dalla memoria ed elabora questi eseguendo l’ istruzione. Il programma è dunque un software specificabile dall ‘utente. Gli algoritmi sono importanti perché individuano le istruzioni che portano alla soluzione. La codifica è come rappresentiamo un’informazione fisica. L’ informatica è lo studio degli algoritmi che ci consentono, data un’ informazione, di elaborarla e trasformarla. L’informazione è portata ed èd ha bisogno di essere legata ad un supporto fisico (testo, figure); può essere scritta su supporti diversi e lo stesso supporto può rappresentare diverse informazioni. E’ un’ entità extrafisica: si crea e si distrugge e non è interpretabile in termini di materia-energia (condizione necessaria perché un supporto possa portare un’ informazione è che possa assumere configurazioni differenti, a ognuna delle quali sia associata una differente entità di informazione, che deve definire come associare questi elementi). Esistono tre livelli di informazione: - informazione sintattica: il supporto fisico è adattato alle configurazioni che servono per trasmettere il messaggio (ci interroghiamo sul supporto fisico); - informazione semantica: quale significato attribuire ad ogni configurazione (ci interroghiamo sul significato); - informazione pragmatica: l’informazione era comprensibile al destinatario? E’ importante per noi il primo livello: un certo supporto può essere utilizzato per memorizzare una certa quantità di informazione? Con quale velocità e sicurezza trasmetto il messaggio? Teoria dell’ informazione: nel momento in cui guardo il supporto fisico , deve diminuire la mia ignoranza: la quantità d informazione è data dalla differenza tra tali grandezze di incertezza, prima e dopo la lettura. Per passare da un algoritmo al programma dobbiamo scrivere dati in modo che possano essere capiti dalla macchina, usando il simbolo binario (con il linguaggio naturale rimarrebbe incomprensibile per il computer). Il sistema binario indica ‘o c’è o non c’è’; il bit è la quantità di informazione che si ottiene selezionando una configurazione da un insieme che ne contiene due ( assume il ruolo di unità fondamentale o unità di misura). 8 bit formano 1 byte. Il codice binario si basa, quindi su due cifre (0,1). Con 1 bit posso rappresentare due stadi, con 2 bit posso rappresentarne 4 (01,10,11,00). Per sapere quanti dati posso formare con n bit, elevo il 2 a n bit: 2n bit=n dati (ad esempio con 8 bit posso rappresentare 256 dati, infatti 28=256). Per calcolare l’ inverso, cioè quanti bit servono per codificare n oggetti utilizzo il logaritmo. Il logaritmo di un numero b è l’ esponente ‘x’ da

dare alla base ‘a’ per ottenere che a x=b, in simboli: logab=x ax=b. Per calcolare quanti bit servono per codificare n oggetti, siccome il bit utilizza due cifre, 0,1, la base a sarà sempre 2; nel caso in cui il numero di bit non corrisponde al numero di dati preciso, si arrotonda per eccesso( ad esempio se ho 7 dati mi servono 3 bit: log27=x 2x=7 per trovare x lo sostituisco di volta in volta con un esponente: 21=1 22=4 23=8; 3 bit possono codificare 8 dati, quindi il numero di bit per codificare 7 dati è 3: devo arrotondare per eccesso). 8bit=1byte 1024byte=1KB 1024KB=1MB 1024MB=1GB 1024GB=1TB Per codificare dati non numerici si passa da codice ASCII a UNICODE.

2. LA CODIFICA Nella codifica il procedimento matematico da usare è il sistema di numerazione posizionale che distingue la nostra datazione da quella romana. Il valore di ogni cifra dipende dalla sua posizione, la stessa posizione può essere adottata per qualsiasi base. - Conversione da binario a decimale: 11012=1*20 + 0*21+1*22+1*23=1*1 + 1*4 + 1*8 = 1 + 4 + 8= 1310 -Conversione da decimale a binario: o si procede come prima (ma è molto lungo il procedimento), oppure si divide il numero per il valore base e si scompone l’operazione in quoziente e resto. Il risultato si ricava leggendo il resto dal basso verso l’alto. Il numero di cifre che compaiono indicano il numero di bit utilizzati (es. nel numero 1001101 la codifica è su 7 bit, nel numero 110 la codifica è su 3… se dovessi aggiungere 1 bit al numero in binario basta aggiungere uno 0 davanti il numero stesso, es. 101 ha 3 bit, se aggiungo 1 bit il risultato è 0101; questo serve per la codifica di un numero negativo – vedi sotto-).

57310=?2

573:2=286 resto 1 573 10=10001111012 (codificato su 10 bit) 256:2=143 resto 0 143:2=71 resto 1 71:2= 35 resto 1 35:2= 17 resto 1 17:2=8 resto 1 8:2= 4 resto 0 4:2= 2 resto 0 2:2=1 resto 0 1:2=0 resto 1 Con il numero negativo il procedimento è lo stesso di come se fosse positivo, pero’ dopo aver trovato il risultato leggendo dal basso verso l’ altro il resto, devo aggiungere 1 a sinistra del numero (che indica il segno meno) -5910=?2 5910=1110112 perché 59:2=29 resto 1 29:2=14 resto 1 14:2=7 resto 0 7:2=3 resto 1 3:2=1 resto1 -5910=11110112 1:2=0 resto 1 Operazioni in binario: 0 e 1 sono i valori falso, vero. AND: un valore è vero se entrambi sono veri OR: un valore è vero se almeno uno è vero NOT: nega il valore di verità dell’ operando.

OR 0 1 NOT

0 1

0 0 1

1 1 1

1 0

L’ addizione tra due numeri binari è molto semplice: 1 +1 =0 e riporto 1 nella cifra a sx; nel caso superassi il numero di bit disponibili vado in overflow. 10101+ 1101= overflow 100010 La lunghezza di bit è il numero massimo rappresentabile; le lunghezze sono fissate: sono multipli di 8 bit (da 0 a 2n-1). La notazione esadecimale lavora in base 16 cioè 24. Utilizza un alfabeto da 0 a 9 e da A a F, per questo tale codifica ha il vantaggio di essere più sintetica impiegando un alfabeto di 16 cifre. 0000=0 0101=5 1010=A Es. EC 16=11101100 (si divide in gruppi di 4 cifre da dx 0001=1 0110=6 1011=B per risalire al numero in base16) 0010=2 0111=7 1100=C 0011=3 1000=8 1101=D 0100=4 1001=9 1110=E 1111=F Modulo e segno: 1 bit 0 positivo 1 negativo La codifica in modulo e segno ha il difetto di duplicare la rappresentazione del numero 0, riducendo di 1 il numero di valori rappresentabili. Se un numero in binario voglio trasformarlo in negativo basta che trasformi l’ ultima cifra di sx: se questa è 1 la sostituisco con un segno- (es. 110010= -10010).

Quando si hanno a disposizione n bit, la codifica può rappresentare i numeri interi tra -2 n-1+1 e 2n-1-1 ( quindi ad esempio con 4 bit posso rappresentare i numeri da -7 a +7). Un altro metodo per la conversione è la codifica di un complemento a 2. In tal caso mi viene dato il numero di bit su cui calcolare la codifica (o me lo calcolo) e procedo nel seguente modo: 2b+x= numero da codificare, dove b è in numero di bit e x il numero dato da codificare. Es. codifica in complemento a 2 su 8 bit il numero +19 2b+x=28+19=256+19=27510 . procedendo con la scomposizione del numero ottenuto (275) in 2, e leggendo il resto da basso al’ alto, si troverà il numero equivalente in base2. 275 10=1000100112 Con la codifica posso calcolare il numero equivalente al numero dato in qualsiasi altra base,scomponendo il numero in 3 (se codificato in base 3), in 4 (se codificato in base 4) e così via. Il linguaggio di programmazione , in codifica di numeri naturali, è in successione 32bit. La codifica è un ‘operazione, quindi, con cui l’ informazione viene scritta su un supporto fisico: l’ entità di informazione viene convertita in una seconda entità di informazione e l’entità ottenuta viene scritta sul supposto fisico. Una codifica può essere realizzata in modo analogo se ha un rapporto d’ analogia (diretto) tra struttura della configurazione e struttura dell ‘entità di informazione (mente e strumento); la meta-informazione è il supporto, cioè un’ informazione di informazione). Una codifica è realizzata in modo digitale quando non preserva la struttura, cioè la meta- informazione è rappresentata solo implicitamente nella codifica. confronto analogica Digitale Modalità di definizione della intensionale Estensionale codifica Ridefinizione della codifica al variare del’ insieme delle entità di Nessuna ridefinizione Occorre estendere il processo informazione Applicabilità per cardinalità Non finita Entità note a priori, finita Applicabilità della struttura d’ insieme delle entità di Solo con struttura In ogni caso informazione Condizione del supporto Solo con supporto con struttura In ogni caso La codifica digitale ha successo perché l’ informazione viene scritta su un supporto isolato e perché ha una minore quantità di informazione che è in grado di portare ed è utilizzabile in sistemi con notevoli capacità di replica e gestione dei supporti. . Quando si quantizza un ‘informazione si ha una perdità di informazione nel senso che l’ informazione si divide in più sottoinsiemi: si perde informazione perché si hanno minori classificazioni; il numero di bit è correlato ai sottoinsiemi. Per campionamento s’ intende il valore preso in certi istanti di riferimento. Questo porta ad una divisione in sottointervalli, ogni quando abbiamo un campionamento (frequenza di campionamento, ovvero numero di campioni che vengono acquisiti nell ‘unità di tempo; se è maggiore la frequenza, si aumenta la precisione).Questo accade anche nelle immagini: la quantizzazione rappresenta come varia il colore e il campionamento rappresenta lo spazio, cioè il numero di pixel. La digitalizzazione è quindi il procedimento di approssimazione con uno dei valori compresi nell’ insieme di quelli previsti. Con la quantizzazione , il parametro è il numero di bit, si discretezza il valore della grandezza; con il campionamento, il cui parametro è il numero di campioni, si discretezza il tempo in cui la grandezza viene osservata. Per compressione dei dati s’ intende quel procedimento che a parità di informazione riduce il numero di bit richiesti; si hanno così vantaggi dal punto di vista dei costi di memorizzazione e di trasmissione dei dati. Le tecniche di compressione sono: - Lossless (senza perdita) che mantengono l’ informazione originaria e vi è un rapporto di compressione in funzione del file. - Lossy (con perdita) conta di un uso appropriato dell’ informazione, si può perdere parte dell’ informazione che sarebbe non fruibile (comprensione è direttamente proporzionale alla perdita). Il sistema binario consuma più bit perché la scala è ridotta.

3. L’ ELABORAZIONE Le azioni dell’ uomo sono finalizzate alla soluzione di problemi. Per risolvere un problema: analisi del problema e identificazione di una soluzione, descrizione della soluzione in termini comprensibili, interpretazione della soluzione, attuazione della soluzione. La strategia prevede che, per giungere alla descrizione della soluzione di un programma che sia accettabile per un esecutore, si scomponga il problema in sottoproblemi, e questi in sottosottoproblemi, fino a giungere a problemi elementari o primitivi, a ciascuno dei quali corrisponde un’ istruzione elementare. Le azioni elementari vengono interpretate in termini funzionali come delle entità che trasformano i dati che ricevono in ingresso (input) in risultati (output), prescindendo dalle modalità con cui tale trasformazione viene effettuata, cioè assumendo un modello a scatola nera (black box). Si dice Procedura effettiva di un esecutore una successione di azioni tali che: - tutte le azioni della successione sono elementari per l’ esecutore, che è in grado di eseguire ciascuna di esse in tempo finito e in modo domestico, cioè ottenendo sempre gli stessi risultati a parità di input. - è fissato l’ ordine di esecuzione delle azioni. - è esplicitamente specificato il modo in cui un’ azione utilizza i risultati delle azioni che la precedono . Si definisce Soluzione effettiva del problema per l’ esecutore una successione di istruzioni elementari tali che:

- l’ esecutore è in grado di interpretare le istruzioni nella successione e di associare a ciascuna di esse l’ azione che deve compiere per seguirla. - la successione di azioni risultante dall’ interpretazione delle istruzioni costituisce una procedura effettiva per l’ esecutore stesso. Gli elementi linguistici che caratterizzano un esecutore sono: A. Il linguaggio che l’ esecutore in grado di interpretare deve essere definito in modo completo e non ambiguo: una caratteristica sintattica. B. L’ insieme di azioni che l’ esecutore è in grado di compiere deve essere definito, e tali azioni devono essere elementari per l’ esecutore: è una caratteristica pragmatica. C. L’ insieme delle regole di associazione tra costrutti del linguaggio e azioni deve essere definito in modo completo e non ambiguo: è una caratteristica semantica. Un algoritmo è una descrizione della soluzione di un problema espressa nella forma di un insieme di istruzioni che operano su dati iniziali, consentono di ottenere dei risultati che costituiscono la soluzione del problema. Tali istruzioni vengono determinate tramite la scomposizione dl problema di partenza in sottoproblemi elementari , la soluzione di ognuno dei quali è detto step o passo del’ algoritmo. Gli algoritmi sono le soluzioni effettive per gli esecutori caratterizzati in accordo ai punti A-C. Quando come esecutore si impiega un calcolatore, è necessario che l’ algoritmo sia descritto in linguaggio formale, chiamato linguaggio di programmazione, che sia interpretabile dal calcolatore stesso: in tali casi l’ algoritmo viene perciò tradotto in programma. Gli algoritmi sono generalmente parametrici (producono un risultato che dipende dall’ insieme di partenza). Un algoritmo descrive la soluzione non di un singolo problema , ma di un’ intera classe di problemi strutturalmente equivalenti, in cui cambiano solo i dati di partenza. Le istruzioni da cui l’ algoritmo è costituito fanno riferimento a variabili il cui valore può cambiare a seconda della situazione elaborativa in cui l’ esecutore si trova. Le variabili possono essere intese come dei ‘contenitori per dati’: ogni variabile ha un nome e un valore, che in ogni istante corrisponde al dato che contenuto nella variabile. Le istruzioni sono eseguite in maniera sequenziale e non parallela (MODELLO DI COMPUTAZIONE). L’esecuzione di un algoritmo prevede la soluzione di un insieme di problemi terminali: per risolvere ogni problema terminale non elementare ( se fosse elementare verrebbe risolto direttamente, eseguendo la corrispondente azione elementare) occorre dapprima rendere esplicita una sua scomposizione in sottoproblemi elementari, le cui azioni elementari vengono quindi eseguite. Algoritmi + strutture dati= programmi. Le strutture dati si dividono in: - Strutture dati statiche: aggregano una o più variabili dello stesso tipo in una successione costituendo un vettore. La sua posizione nella successione è indicata con un numero intero progressivo dato indice. Il numero di elementi di un vettore ne definisce la dimensione. La loro composizione è fissata nel momento della loro definizione e non può essere modificata durante l’uso. (matrici: tabelle di elementi identificata da una coppia ordinata di indici, oppure struttura record con campi). - Strutture dati dinamiche: il vincolo della non modificabilità viene rimosso e di conseguenza diventa possibile per esempio ridimensionare la successione che costituisce la struttura, aggiungendone o eliminandone gli elementi, che sono collegati l’ uno con l’ altro attraverso riferimenti appunto modificabili. Rappresentazioni degli algoritmi mediante diagrammi di flusso: i

inizio

si

fine

operazione in ingr/usc

no

soluzione a 2 vie

azione

sottoprogramma

4. I LINGUAGGI PER LA FORMALIZZAZIONE DELL’ INFORMAZIONE Un algoritmo non è utilizzabile effettivamente da un esecutore, di principio, ma deve avere l’ ausilio di calcolatori che devono essere analizzati in funzione delle caratteristiche fisiche del calcolatore stesso. Il linguaggio di un programma è caratterizzato da due componenti complementari: - Sintassi: insieme di regole che specificano come comporre le istruzioni; - Semantica: di ogni istruzione ben formata specifica il significato, quindi la successione delle operazioni compiute. I linguaggi di programmazione sono di: * basso livello (linguaggio macchina): insieme delle istruzioni dei singoli processori, composte da successioni numeriche che rappresentano i codici operativi del processore e i dati su cui essi operano; direttamente eseguibile dal processore ed è efficiente per i tempi di esecuzione brevi e la ridotta occupazione di memoria. * di alto livello: scrivono soluzioni in una logica più vicina alla descrizione del problema da risolvere che non alle caratteristiche fisiche del calcolatore impiegato; offrono istruzioni elementari più e più vicine al pensiero del progettista. La CPU è l’ esecutore delle istruzioni che compongono i programmi (il linguaggio è di interpretazione ed esecuzione). Il linguaggio macchina è un linguaggio complesso, in cui è difficile individuare errori e il suo uso diretto è inefficiente, in quanto il linguaggio compone di costrutti tanto elementari da comportare grandi tempi di sviluppo. Per risolvere questi problemi si impiegano linguaggi di programmazione ad alto livello come il C, il Java o il Basic. La macchina è in grado di interpretare il linguaggio in cui le istruzioni sono descritte, eseguire le azioni elementari associate all’ istruzione del linguaggio; per ogni istruzione è, inoltre, in grado di determinare la successiva istruzione da eseguire. Un’ interpretazione può essere eseguita direttamente nell’ hardware o nella forma di software. - Interprete via hardware: si tratta di costruire una macchina fisica in grado di interpretare ed eseguire direttamente le istruzioni scritte nel linguaggio: CPU di un calcolatore è dunque un interprete hardware per il suo linguaggio macchina è molto efficiente. - Interprete via software(di un linguaggio scritto in un dato linguaggio): richiede invece la sua traduzione in un corrispondente programma nel linguaggio macchina della CPU , operazione che può essere realizzata secondo due modalità, interpretazione e compilazione. E’ più facile da realizzare; consente di

lavorare direttamente con linguaggi di alto livello. L’interprete preleva un’ istruzione del programma, la decodifica, la traduce in istruzioni nel linguaggio macchina e manda in esecuzione tali istruzioni. Nella compilazione il programma sorgente viene fornito in ingresso a un programma di traduzione (chiamato compilatore) che genera un nuovo programma, esegu...


Similar Free PDFs