Sei sulla pagina 1di 8

Riassunto

Teoria Informatica
Esistonoduegrandiclassidielaboratori:
Elaboratori dedicati (specialpurpose computer): Un elaboratore dedicato (embedded system) un
elaboratoreprogrammatopersvolgerefunzionispecifichedefiniteaprioriinfasediprogetto/produzione
Elaboratoridiusogenerale(generalpurposecomputer):
o PersonalComputer:unqualsiasicomputerdiusogenericolecuidimensioni,prestazionieprezzo
diacquistolorendonoadattoalleesigenzedelsingoloindividuonell'usoquotidiano;
o Server:unelaboratorecheforniscedeiserviziaaltrielaboratori(chiamaticlients)attraversouna
rete (computer network); Server Farm: un insieme di elaboratori server collocati in un apposito
locale(centrodicalcolo)pressounamediaograndeazienda;
o Workstation: si contraddistingue dall'essere destinato principalmente a un utilizzo produttivo, e
dall'averealteprestazioniperpoterassolverecompitialtamenteprofessionalidivariogenere;
o Mainframe:sonoelaboratoricheoffronograndiprestazioni,usatiprincipalmentedagrandiimprese
perrilevantiapplicazionisoftware(missioncriticalapplication).

Algoritmo:unasequenzafinitadiazionichedevonoessereseguitemeccanicamentepergiungereallasoluzionedi
unproblema.Ilcomputerseguequestotipodiprocessi.

Stadidisviluppodiunprogramma
1. Problema
2. IdeaSoluzione
3. AlgoritmoRappresentatodaunaSoluzioneformale:
Pseudocodice
Diagrammidiflusso**
4. ProgrammaTraduzionedellalgoritmoinunaformacomprensibileadunelaboratoreelettronico
5. Test
6. Documentazione

Traduzionediunprogramma:
Scritturadiunfilesorgente(main.c)utilizzandounEditorditesti*(Codeblocks);
Elaborazionedelfilesorgentenelcompilatore(GCC);
Creazionedelfileoggetto,ciolatraduzionedelfilesorgenteinlinguaggiomacchina(binario);
File oggetto viene passato al linker che vi aggiunge delle componenti da librerie, che permettono luso di
funzioniqualilastampa,laletturaecc.;
Creazionedelfileeseguibile(.exe).

*Ambiente integrato (IDE, Integrated Development Environment): unapplicazione software che contiene al suo
internouneditorditestiperprogrammatori,uncompilatoreC,unambientediverificadeiprogrammi.

**Diagrammi di flusso (flowchart): Sono strumenti grafici che rappresentano levoluzione logica dellalgoritmo,
dettostrutturatosecontienesolouninsiemepredefinitodistruttureelementari:
UnbloccoStarteunoStop
Sequenzadiblocchi(dielaborazionee/odiinputoutput)
If/Else
While/Do

Teorema di Bhm Jacopini: Qualunque diagramma di flusso sempre trasformabile in un diagramma di flusso
strutturato equivalente a quello dato. Quindi, qualunque flusso logico pu essere realizzato utilizzando solamente
duestrutturedicontrollo:
Meccanismodidecisione(If/Else)
Meccanismodiripetizione(loopWhile/Do)

Elementidellelaboratore:

Memoria Centrale: memoria veloce, contiene i dati che devono essere elaborati; interagisce frequentemente con
lunitdielaborazione.
compostada:
RAM(RandomAccessMemory):memoriavolatile,nonpermanente.Moltoveloce,comunicazionifrequenti
conlunitdielaborazione.Iltempodiaccessoaqualunquecelladimemoriasemprecostante;
ROM(ReadOnlyMemory):memoriainsolaletturachecontienedatiutiliallavvio,scrittaunasolavoltae
nonmodificabile.

Memoria di Massa (memoria secondaria): Molto pi lenta, ma capace di contenere i dati che vogliamo
immagazzinareperuntempoindefinito(Harddisk,Cd,floppy).

Microprocessore:unchipcherealizzalefunzionidiCPU(CentralProcessingUnit)inuncomputeroinunsistema
digitale.unelementocomplesso,ilcervellodellelaboratore.

UnaCPUgenericacontiene:
Unit di controllo (CU): un componente delle CPU che ha il compito di coordinare tutte le azioni
necessarieperl'esecuzionediunaistruzioneediinsiemidiistruzioni.ilcomponentechedlapossibilital
microprocessoredieseguireistruzionidiverse;
Unit aritmetica e logica (ALU): si occupa di eseguire le operazioni logiche e aritmetiche. Solitamente
composta da circuiti combinatori. Ogni unit ha un dato compito non flessibile, ma comunque molto
veloce;
Registri:specialilocazionidimemoriainterneallaCPU,moltoveloci,usatiperconservare
temporaneamente dei dati (es. risultati parziali), a cui possibile accedere molto pi rapidamente della
memoriacentrale.Iregistrisonopochiinnumeroediridottedimensioni.Treregistrisemprepresentisono:
o IR(IstructionRegister):cheimmagazzinal'istruzioneinfasedielaborazione;
o PC(ProgramCounter):checontienel'indirizzoinmemoriadellaprossimaistruzionedaeseguire(eda
cuifareilfetch);
o Flag: questo registro non contiene valori numerici convenzionali, ma piuttosto un insieme di bit,
detti appunto flag, che segnalano stati particolari della CPU e alcune informazioni sul risultato
dell'ultimaoperazioneeseguita.
Unitdidecodifica:sioccupadiricevereleistruzioniiningressoediattivareleopportuneunitinternedel
processorepereseguirel'istruzionecaricata;
Unit di gestione della memoria ("MMU" Memory Management Unit) una classe di componenti
hardware che gestisce le richieste di accesso alla memoria generate dalla CPU. La MMU pu avere vari
compiti tra cui la traslazione (o traduzione) degli indirizzi virtuali in indirizzi fisici, la protezione della
memoria,ilcontrollodellacachedellaCPU,l'arbitraggiodelbus,lacommutazionedibanchidimemoria;
UnitdicontrollodeiBus:gestisceibusdellaCPU.

Bus (sistema circolatorio del computer): sono componenti hardware che interfacciano le diverse unit
dellelaboratore.Semaldimensionato,potrebbeesserecausadiuncollodibottiglia.Caratteristichediunbussono:
Trasportodiunsolodatopervolta;
Frequenza,ossiainumerididatitrasportatialsecondo;
Ampiezza,ilnumerodibitdicuicostituitoilsingolodato.

TipidiBusunsingoloBussuddivisointresottobus:
BusDati(DBUS),lasuadimensioneindicaladimensionediunacelladimemoria;
BusdegliIndirizzi(ABUS),lasuadimensionedeterminailmassimonumerodicelledimemoriaindirizzabili;
BusdiControllo(CBUS),trasportaidatidicontrollo(ancheversoleperiferiche);

PigrandelAbus,picellepossonoessererappresentate,piindirizzivengonotrasportaticonmaggiorepossibilit
dicombinazione;pigrandeilDbustantopigrandeladimensionediunasingolacella.

LecaratteristichedelBussonocorrelateallaquantitmassimadimemoriacentralechesipufisicamenteinstallare
sullelaboratore,secondolaformula:

MAX MEM 2 | |
| |

Bus di Input/Output: mettono in comunicazione il computer con le periferiche, attraverso specifiche interfacce,
permettendoilcontattoconilmondoumano.EsempidibusdiI/O(oesterni)sonogliUsb,universaliedorientati
allememoriedimassa(tipoPenDriveesimili).LamassimaquantitdimemoriaesternadipendedalbusdiI/Oenon
dipendedallaABUS.

UnElaboratoreesegueleistruzionibasandosisuunciclostandard:
1. Prelievodiunistruzionedellamemoriacentrale;
2. IstruzionecaricatasullaCPUcheattivalezoneaddetteconlegiustetempistiche;
3. LindirizzodellistruzionedaeseguirevienepassatodalPCallIR;
4. InterpretalistruzioneLogicadiControllo;
5. EseguelistruzioneilcomandovienepassatodallaLogicadiControlloallesecutore;
6. Incasodiavvenutadiesecuzione,ilcicloricomincia,incasocontrariovienesegnalatounerrore.

Clock:ognielaboratorecontieneunelementoditemporizzazione,ilclock,unsegnaledigitalesincrono,chegenera
unriferimentotemporalecomunepertuttiglielementicostituentiilsistemadielaborazione.
Unciclomacchinaunintervalloditempoincuivienesvoltaunoperazioneelementare,edunmultiplointerodel
periodo(T)delClock.Lesecuzionediunistruzionerichiedeunnumerointerodiciclimacchina.


Sistemadinumerazioneposizionale(decimale,binario..)
OccorredefinirelabaseBdacuidiscendonovariecaratteristiche:
Cifre(a)={0,1,2,...,B1}
pesodellacifraiesima=Bi


SistemaBinario:in base2,lecifresono1 e0(1=True e0 =False).Laprimacifradel numerobinarioprendeil
nome di MSB (Most Significant Bit), mentre lultima LSB (Least Significant Bit). Ogni cifra rappresentata nel
calcolatoreda1bit(8bit=1byte).Quindiattraversoillinguaggiobinariosipossonorappresentarenumerilimitati
dalnumerodibit(N)disponibili:possonoesserecreate2Ncombinazioni(doveilminimo0eilmassimo2N1).

Comeconvertire(DecimaleBinario):
BinarioDecimale:sieffettualasommapesatadellecifrebinarie.
ESEMPIO:1101(2)=1*23+1*22+0*21+1*20=8+4+0+1=13(10)
DecimaleBinario:siprocedecondivisionisuccessiveper2,riportandoilresto(chepuessere1o0);al
terminedelloperazionesiricopianoirestiinordineinverso.
ESEMPIO:13(10)=1101(2)
13 6 3 1 0

1 0 1 1 1101

Operazioniconinumeribinari:
SOMMAregolebase: Es:110(2)+111(2)=1101(2)

0 + 0 = 0 1 1
0 + 1 = 1 0 1 1 0 +
1 + 0 = 1 0 1 1 1 =
1 + 1 = 0 (overflow* = 1) 1 1 0 1

DIFFERENZAregolebase: Es:101(2)11(2)=10(2)

0 0 = 0 1

0 1 = 1 (borrow = 1) 0 1 0 1

1 0 = 1 0 0 1 1 =

1 1 = 0 0 0 1 0

*Overflow:indicalerrorechesiverificainunsistemadicalcoloautomaticoquandoilrisultatodiunoperazionenon
rappresentabileconlamedesimacodificaenumerodibitdeglioperandi(silavoraconnumerofissodibit).Quindi
quandoilnumero(risultanteono)eccedeilnumeromassimodibitdisponibileperquelnumero.

CodificaHEX(Esadecimale): CodificaOCT(Ottale):
base=16(H) base=8(Q)
cifre={0,1,...,9,A,B,C,D,E,F} cifre={0,1,2,3,4,5,6,7}
usatopercompattareinumeribinari(4:1) usatopercompattareinumeribinari(3:1)
Es:10111001(2)=B9(16) Es:10111001(2)=271(8)

Numericolsegnoinbinarioesistonovariecodifiche:
Modulo e segno: lMSB assumer valore 0 per segno positivo, 1 se il segno negativo; verranno quindi
occupatiunBitdalsegnoeN1Bitdalmodulo.
Glisvantaggisonoildoppiozero(lozerorappresentabilecome00=+0e10=0),operazionicomplesse.
ConNnumerodiBit,rappresentabilelintervallo:[(2 11),+(2 11)](siparladirangesimmetrico)

Complementoa2:inquestacodificaperunnumeroaNbit,ilMSBhapesonegativo,paria2 1.Mentregli
altribithannotuttipesopositivo.DiconseguenzailMSBindicasempreilsegno:0=+1=Esempi:
o 1000CA2=23=810
o 1111CA2=23+22+21+20=8+4+2+1=110
o 0111CA2=22+21+20=710
Perquantoriguardaleoperazioni,questesieffettuanodirettamente,senzabadareaisegnideglioperandi.
Conoperandiaventisegnodiscorde,nonsipumaiverificareoverflow,mentre,incasodisegnoconcorde,
loverflowsiverificaquandoilrisultatohasegnodiscorde;nelcasoincuisiverificauncarrysullultimacifra,
essononsiconsidera.

Convertire da Decimale in CA2: se il numero positivo allora CA2 = M&S; se il numero negativo, si calcola il
corrispondentepositivoinM&S,dopodichsiricopiadadestraversosinistrafinoalprimonumero1,quindisicopia
invertendogliuniconglizeri.
Esempio:10|10|=01010M&S10110CA2

RappresentazioneVirgolaMobile(FloatingPoint):
Utileperrappresentarenumerireali,oinnotazionescientificaallinternodelcalcolatore,N=M2E
Nellamemoriavengonosalvati:
Segno()
Esponente(E,labase2)
Mantissa(M,nellaforma1,..max<2)

Formati:
IEEE754SP(SingolaPrecisione32bit):

IEEE754DP(DoppiaPrecisione64bit):

Intervallovalori:

CodificaASCII(AmericanStandardCodeforInformationInterchange):
Codificastandardpericaratteri,lapiusatanelletelecomunicazioni,lecaratteristichepiimportantisono:
Usa8bit(originariamente7bitperUSASCII)perrappresentareisimboli;
52caratterialfabetici(a...zA...Z);
10cifre(0...9);
segnidiinterpunzione(,;!?...);
caratteridicontrollo,nonstampabili(e.g.CR(13)CarriageReturn;NL(10)NewLine).

Unicode:esprimetuttiicaratteridituttelelinguedelmondo(pidiunmilione).
UTF8:lacodificadiUnicodepiusata:
1bytepercaratteriUSASCII(MSB=0);
2bytepercaratteriLatiniconsimbolidiacritici,Greco,Cirillico,Armeno,Ebraico,Arabo,SirianoeMaldiviano;
3byteperaltrelinguediusocomune;
4bytepercaratterirarissimi;

LogicaBooleana:
Lalogicasucuisibasailcomputer,lalogicaBooleana,basatasuvariabilichesonoingradodiassumeresolodue
valori, Vero (1) o Falso (0). Gli operatori si dividono tra operatori Unari (es. NOT) e Binari (es. AND) che vengono
descritti tramite una tavola delle verit: per N operandi la tabella avr 2N righe che elencano tutte le possibili
combinazionidivalorichedellevariabiliindipendentiedilvaloreassuntodallavariabiledipendente.
Unafunzionebooleanaunacombinazionedivariabilieoperatoribooleanicheassociapivariabiliindipendentie
restituisceunavariabile.NellefunzionivannoeseguitiprimagliANDepoigliOR.

GlioperatoriBooleani:

OperatoreNOT(!negazione):

OperatoreAND
(&&xmoltiplicazione):

OperatoreOR(||+somma):

OperatoreXOR( :

ProprietCommutativa:AB=BA
ABC=(AB)C=A(BC)=(AC)B

ProprietAssociativa:A+B=B+A
A+B+C=(A+B)+C=A+(B+C)=(A+C)+B

ProprietDistributiva:A(B+C)=AB+AC
A+(BC)=(A+B)(A+C)

TeoremadiDeMorgan:A+B=!(!A!B)
AB=!(!A+!B)


Unesempiodidimostrazione:

A+(BC)=(A+B)(A+C)?

A B C A + B x C R (A + B) x (A + C) R
0 0 0 0 + 0 x 0 = 0 0 + 0 x 0 + 0 = 0
0 0 1 0 + 0 x 1 = 0 0 + 0 x 0 + 1 = 0
0 1 0 0 + 1 x 0 = 0 0 + 1 x 0 + 0 = 0
0 1 1 0 + 1 x 1 = 1 0 + 1 x 0 + 1 = 1
1 0 0 1 + 0 x 0 = 1 1 + 0 x 1 + 0 = 1
1 0 1 1 + 0 x 1 = 1 1 + 0 x 1 + 1 = 1
1 1 0 1 + 1 x 0 = 1 1 + 1 x 1 + 0 = 1
1 1 1 1 + 1 x 1 = 1 1 + 1 x 1 + 1 = 1

Seguendo questa logica, si passa dal Transistor al Chip. Il Chip, attraverso delle porte logiche, elabora il segnale
ricevuto,applicandolalogicabooleana,trasformandoloinunsegnaleelettricodiI/O.

Quando ci viene sottoposto un problema di logica


booleanabisogna:

1.IndividuarelevariabiliBooleane;
2.Crearelatabelladiverit;
3.Scriverelespressionealgebrica;
4.Operareeventualisemplificazioni;
5.Disegnareilcircuitoutilizzandoleportelogichepartendodallespressionetrovata.

ApproccioTopDown:
Unprogrammarealisticopuconsisteredimigliaiadiistruzioni
Sebbenefattibile,unasoluzionemonoliticadelproblemanonmoltoproduttiva(perquantoriguardailriusodel
codiceelacomprensionedelcodice),enonintuitiva.
QuindisipreferisceusareunapproccioTopDownalproblema:
Decomposizionedelproblemainsottoproblemipisemplici;
Organizzazionestrutturata;
Strutturagerarchicaapartiredalproblemacomplessofinoasottoproblemisemprepisemplici;
Ripetibilesupilivelli.

Spaziooccupatodallevariabili(INGENERALE,senondiversamentespecificato)(1byte=8bit):
Char:1byte=8bit;
Int:2byte=16bit(dipendedallastrutturadellelaboratore);
Long:4byte=32bit(dipendedallastrutturadellelaboratore);
Float:4byte=32bit;
Double:8byte=64bit(dipendedallastrutturadellelaboratore);
Longdouble:12byte=96bit(dipendedallastrutturadellelaboratore).


MultiplidelByte
PrefissiSI Prefissibinari
Nome Simbolo Multiplo Nome Simbolo Multiplo
kilobyte kB =103byte kibibyte KiB =210bit
megabyte MB =106byte mebibyte MiB =220bit
gigabyte GB =109byte gibibyte GiB =230bit

FlagPrintf: FlagScanf:
%[flags][mindim][.precisione][dimensione]<carattere> %[*][maxdim][dimensione]<carattere>
Flags:
giustificazionedellastampaasinistra [*]:ignoralelemento
+premettesempreilsegno [maxdim]:dimensionemassimaincaratteridelcampo
Mindim:dimensioneminimadistampaincaratteri Dimensione:
.precisione:numerodicifrefrazionarie(pernumerireali) hshort
Dimensione: llong
hshort
llong

Carattere: FlagsaperturaFile
%dintero FILE*fopen(char*<nomefile>,char*<modo>);
%uunsigned
%sstringa Tipodiaccessoalfile<modo>:
%ccarattere r:solalettura
%xesadecimale w:solascrittura(cancellailfileseesiste)
%oottale a:append(aggiungeincodaadunfile)
%ffloat r+:lettura/scritturasufileesistente
%gdouble w+:lettura/scritturasunuovofile
a+:lettura/scritturaincodaosunuovofile
Ritorna:
Ilpuntatorealfileincasodisuccesso
NULLincasodierrore

Parametrilineadicomando: Struct:
main(intargc,char*argv[]){} typedefstructstud{
charnome[40];
argc:Numerodiargomentispecificati.Esiste unsignedintmatricola;
semprealmenounargomento(ilnomedel unsignedintvoto;
programma) }studente;
argv:Vettoredistringhe: .
argv[0]=primoargomento studentestudente1;
argv[i]=genericoargomento .
argv[argc1]=ultimoargomento Studente1.matricola=NNNNN;