![](https://8f0605c278.cbaul-cdnwnd.com/09db08af8e93854dda85f58a770f3a20/200000101-7522c7522f/3.jpg?ph=8f0605c278)
Lezioni di Informatica
Architettura di Von-Neumann
Un elaboratore è strutturato secondo un tipo particolare di architettura.
Essa si divide in hardware e software: l' hardware è tutta la parte dell'elaboratore che si può toccare ed è composto da: periferiche (I/O e/o miste), memorie, CPU e BUS.
Il software invece può essere considerato come il pensiero che viaggia all'interno di esso.
Le periferiche possono essere di 3 tipi:
Input: le periferiche input servono a inserire dati dentro l'elaboratore. Alcuni esempi di periferiche input sono le tastiere, gli scanner, i microfoni e i mouse.
Output: le periferiche output sono quelle periferiche che estraggono le informazioni dall'elaboratore. Degli esempi di periferiche output sono: schermi e casse.
Miste: le periferiche miste sono quelle periferiche che hanno elementi sia di input che di output come ad esempio le cuffie.
La differenza tra dato e informazione è essenziale per capire il funzionamento delle varie periferiche. Un dato può essere considerato semplicemente come un numero, l'informazione è un dato elaborato. Quindi si aggiunge una specifica al dato. Un altro componente dell'hardware è la CPU (Central Processing Unit/ Unità di Processamento centrale). Essa è il processore ed è formata da:
ALU: (Unità Aritmetico Logica), l'ALU si occupa di eseguire tutte le operazioni aritmetiche che avvengono nell'elaboratore, tranne le sottrazioni che non possono essere eseguite dalla ALU, ma vengono comunque eseguite tramite la complementazione A1 e A2.
CU: (Unità di controllo), legge le istruzioni presenti nella memoria centrale (RAM) e memorizza il risultato delle operazioni.
Register: (Registri) i Register sono delle memorie situate sopra al processore, sono delle memorie molto veloci, appunto perché si trovano sul processore.
Memorie
Per contenere dati, non utilizziamo solamente delle memorie statiche, vi troviamo memorie esterne ed interne, come una delle più utilizzate, l' Hard disk, memoria esterna, utilizzata per immagazzinare file, è fatta di metallo e legge le informazione tramite un sistema che si basa sull'elettromagnetismo. Le sue celle di memoria sono disposte come cerchi concentrici (i cerchi sono detti settori), è sono più precisamente chiamate cluster. Altre memorie esterne sono CD e DVD, memorie statiche fatte di un materiale facilmente consumabile e ciò comporta una ridotta riscrivibilità. Prima si potevano solo leggere ma, nel corso del tempo, si è riuscito a renderle riscrivibili. I CD hanno minore capienza rispetto ai DVD e utilizzano un sistema ottico per salvare le informazioni. Oltre a queste ci sono altri tipi di memorie come ad esempio le memorie ( SSD sta per Solid State Drive), è una memoria simile agli hard disk che però a differenza di questi usa un sistema di immagazzinamento delle informazioni diverso. Un'altra memoria è la EPROM è una memoria simile alla ROM, ed è utilizzata dalle Pen Drive, cioè dispositivi esterni che si collegano tramite le porte USB.
Bus
I Bus sono particolari connettori impressi sulla scheda madre del dispositivo, collegano le memorie, le periferiche e la CPU. I Bus si dividono in Bus indirizzi, Bus dati e Bus controllo
Modello di Harvard
Il modello di Harvard, è simile al modello (o struttura) di Neumann, ma si distingue da esso per la memoria perché in esso, la memoria è separata. Viene utilizzato per i microcontrollori ad esempio la lavatrice, quindi per sistemi che eseguono specifici comandi e hanno solo quelle informazioni.
Numeri Binari e Algebra Booleana
Il sistema binario è il sistema utilizzato da tutti gli elaboratori, a differenza del nostro sistema decimale, è basato su 2 cifre 0 e 1 (mentre il sistema decimale è basato su 10 cifre 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9). Questo è molto importante per il funzionamento dell'elaboratore perché in questo modo 1 rappresenta la presenza di corrente e 0 l'assenza di quest'ultima.
Conversione di un numero binario in decimale e viceversa
Un numero binario è un numero formato da cifre del sistema binario. Un esempio di numero binario è 1001. Essendo il sistema binario un sistema posizionale come quello decimale esiste un modo per convertire un numero da binario a decimale: sappiamo che nel sistema decimale un numero ha un valore in base alla posizione delle sue cifre, per capire il valore di un numero decimale quindi dobbiamo moltiplicare ogni cifra per 10 ( numero di cifre nel sistema decimale) elevato alla n dove n è la posizione partendo da destra della cifra e poi dobbiamo solo sommare i risultati del della moltiplicazione e otterremo il valore del numero. Per i numeri binari è praticamente la stessa cosa solo che essendo le cifre nel sistema binario 2 il numero che verrà elevato alla n sarà 2. Ovviamente si può anche convertire un numero decimale in binario, questo effettuando una divisione col resto dove sarà proprio quest'ultimo la parte importate. Prima di tutto mettiamo in colonna il numero che vogliamo convertire in binario e lo dividiamo per 2, se il numero non è divisibile per 2 consideriamo il resto di 1, e continuiamo così finché il risultato della divisione non sarà 1 e allora considereremo 1 come resto. Fatto questo bisogna considerare il resto dal basso verso l'alto e quello sarà il numero binario.
Esempio conversione numero binario in decimale:
1001
1x20 =1
0x21 =0
0x22 = 0
1x23 = 8
8+1= 9
Esempio di conversione di numero decimale in binario
10
2
10
0
5
1
2
0
1
1
1010
Codice ASCII
ASCII (American Standard Code for Information Interchange), è un insieme di simboli utilizzati per rappresentare le lettere, i numeri e i segni di punteggiatura. Questo particolare tipo di codifica viene utilizzato in modo tale da rappresentare tutti questi caratteri in una forma comprensibile dai computer. Permette di avere 32 combinazioni e tramite la tabella ASCII rappresenta ogni carattere associando a quest'ultimo un numero. Si utilizza la codifica ASCII quando si inviano dati su internet o li memorizzi sul computer. Per avere più combinazioni si è deciso di creare l'ASCII esteso, un codice con le stesse caratteristiche di quello ASCII ma che permette di avere 64 combinazioni. A causa di caratteri particolari presenti nei vari alfabeti, tutte queste combinazioni risultano insufficienti perciò si è creato l' UniCode
un codice che presenta all' incirca dalle 4 mila alle 4 milioni di combinazioni.
Sistema esadecimale
Oltre al sistema binario esiste anche un altro tipo di sistema detto sistema esadecimale che si basa su 16 cifre, quindi una volta finite le cifre normali si usano le lettere( 0, 1, 2, 3, 4, 5, 6. 7. 8, 9, A, B, C, D, E, F) quindi la A= 10 la B=11 e così via fino al 15. Anche qui come nel sistema binario è possibile attuare una conversione da numero esadecimale a decimale e viceversa. Le tecniche usate sono quelle analizzate in precedenza solo che al posto del 2 il numero che verrà elevato alla n e moltiplicato per la cifra sarà 16. Nella conversione da numero decimale a esadecimale il numero per cui il numero decimale sarà diviso per 16.
Algebra Booleana
Di norma si opera in algebra con i numeri decimali. Ma esiste un'algebra in cui possiamo operare con i numeri binari. Prima di tutto l'algebra è un insieme di teoremi, regole e enunciati (l'enunciato è una proposizione della quale è possibile dire il vero e/o il falso) che mettono in relazione diversi elementi. Nell'algebra Booleana gli elementi che vengono messi in relazione sono appunto 0 e 1 considerando 1 come vero e 0 come falso. Mentre nell'algebra normale si opera con + e - nell'algebra booleana si opera con i connettivi logici. Esistono 3 connettivi logici: and, or e not, and è la congiunzione, or è la disgiunzione e not è la negazione ( i simboli di and, or e not sono rispettivamente ∧ ∨ ¬). Questi 3 connettivi logici servono a mettere in relazione gli enunciati. Per mettere in relazione gli enunciati vengono usate le tabelle di verità.
Esempio tabella di verità
A∨B
A
B
A∨B
1
0
0
0
1
0
1
1
0
0
0
0
In questo caso viene applicata la disgiunzione, in pratica A∨B è uguale a 1 (quindi è vero) se o A o B è uguale a 1 ed è uguale a 0 (quindi falso) se sia A che B sono falsi (ovviamente A e B sono 2 enunciati).
A∧ B
A
B
A∧B
1
0
0
0
1
0
0
0
0
1
1
1
In quest'altro caso viene applicata la congiunzione quindi A∧B è vero solo se sono veri sia A che B
A not ( ¬) A
A
NOT (¬) A
1
0
0
1
in quest'ultimo caso c'è una negazione: se A è vero not A è per forza falso e viceversa.
CODIFICA DI: immagini, audio e video in codice binario
Immagini
Oltre a codificare le lettere e i simboli tramite il codice ASCII è anche possibile trasformare in codice binario le immagini: questo processo si chiama digitalizzazione di un'immagine. La digitalizzazione avviene tramite una griglia che viene sovrapposta all'immagine, la griglia è formata da pixel: in ogni spazio della griglia andiamo a assegnare un valore che può essere 0 o 1, 0 per il nero e 1 per il bianco, in questo modo avremmo rappresentato l'immagine. Più pixel useremo nella nostra griglia, più l'immagine sarà precisa, il problema rimane solo il colore, infatti con solo 0 e 1 quindi 1 bit possiamo rappresentare solo bianco o nero ma aggiungendo più bit fino ad arrivare a 8 possiamo rappresentare una vera e propria scala di 28 che equivale a 256 grigi, di norma non si usano ulteriori bit perchè l'occhio umano riesce a percepire fino a massimo 256 grigi. Ora anche la scala di grigio può venir rappresentata dal computer ma mancano i colori: i colori che noi vediamo sono tutti derivanti dai 3 colori primari rosso verde blu: possiamo considerare per ognuno di essi 8 quindi 28 bit che sommati fanno 224 che sono 16777216 possibili colori per pixel. Per utilizzare i colori nelle immagini ci sono 2 logiche: la logica additiva e sottrattiva: nella logica additiva si aggiungono bit al bianco per ottenere i colori mentre nella logica sottrattiva si sottraggono bit al nero per lo stesso risultato.
Audio
I suoni sono delle onde e anche un segnale continuo che varia nel tempo. Se si vuole digitalizzare questo segnale, dobbiamo trasformare la deformazione della membrana del microfono (o del timpano) in un insieme di numeri, così da poterli trattare attraverso un computer. Quindi è necessario effettuare le attività di campionamento e discretizzazione.
Si considerano innanzitutto come parametri fisici: frequenza tempo, lunghezza e ampiezza onda. Il campionamento consiste nell'estrarre campioni da un segnale variabile, in corrispondenza di istanti di tempo successivi. Dopo il campionamento, la conversione analogico-digitale viene completata con la discretizzazione, che consiste nell'associare ad ogni campione un valore discreto (0 e 1). Dopo ogni periodo di campionamento: si preleva un campione, si discretizza il segnale analogico in quell'istante (discretizzazione), si produce una sequenza di parole binarie che corrispondono all'andamento del segnale (codifica). Per capire quanti campioni prendere, è essenziale il teorema di Nyquist-Shannon.
Video
I video sono formati da delle immagini e una parte audio. Queste immagini vengono mostrate molto velocemente per creare l'illusione di movimento: ogni immagine che viene mostrata si dice frame e in un secondo ne vengono mostrate massimo 25-30(frame per secondo/FPS) perché l'occhio umano non ne percepisce di più. Chiaramente più frame ci sono, più il video sarà fluido e di conseguenza anche più pesante
IL SISTEMA OPERATIVO
Il sistema operativo è un software di base adibito a gestire le risorse hardware e software di un computer. Consente di dialogare e di interfacciarsi con l'elaboratore. Il suo compito è quello di coordinare le risorse necessarie, controllando e gestendo sia l'hardware che il software, quindi permette a chi usa il computer di ottenere ciò di cui ha bisogno. Il sistema operativo è contenuto nella memoria di massa, che può essere un hard disk o un SSD. Da lì potrà essere caricato nella RAM durante il bootstrap cioè la prima procedura che avviene in un elaboratore in cui la CPU carica il software nella Ram e capisce dove si trovano tutte le periferiche leggendo le informazioni situate nel BIOS contenuto nella ROM. Volendo su un solo computer si possono installare più sistemi operativi e decidere quale usare, quando si acquista un computer su esso è spesso già installato un sistema operativo in modo da poter subito utilizzare il computer dopo l'acquisto. Alcuni dei sistemi operativi più diffusi per i computer sono: linux, Mac Os e microsoft mentre per i dispositivi mobili i software di base più diffusi sono Android e Ios. il sistema operativo. E strutturato tramite un sistema a strati detto "Onion Skin".
Lo strato più interno è chiamato Core (o Kernel): è la parte più importante del sistema operativo perchè è la parte più a contatto con la CPU con un linguaggio chiamato "assembly" e si può dire che corrisponda al nucleo del sistema operativo.
Il secondo strato è la gestione delle memorie: serve a gestire la memoria RAM del computer.
Il terzo strato del sistema operativo è la gestione delle periferiche: si occupa di gestire le periferiche di input e di output del computer, lo fa tramite alcuni software particolari chiamati driver, ogni periferica ha il suo driver che viene creato dal creatore della periferica. Esistono delle periferiche che si chiamano plug and play che quando vengono installate nell'hardware e vengono subito riconosciute subito dal sistema operativo e vengo subito messe in funzione.
Il quarto strato è il File system: ci consente di creare, modificare ed eliminare cartelle o Directory, che sono delle specie di contenitori di file video, audio e/o testo. Possono contenere altre cartelle e vengono depositate sulle memorie di massa e file. Ci dice il percorso del file; quest'ultimo è chiamato Path. Aggiunge un'estensione al file, perché il file è composto dal nome che noi ( o il computer ) assegniamo, e l'estensione che ci indica il tipo di software con cui è stato creato il file e con quale software bisogna aprirlo. Nella stessa cartella non possono esserci 2 file con stesso nome e estensione
Il quinto strato è l'interprete dei comandi: ci permette di creare delle interfacce grafiche che ci permettono di utilizzare il File System senza vederlo.
Le GUI (Graphic Unit Interface) : sono quelle interfacce grafiche che ci permettono di accedere al dispositivo tramite il software e ci permettono di creare, modificare e/o eliminare. Semplicemente con un click di mouse possiamo svolgere operazioni molto complesse.
CI (Console Interface) o CLI ( Command Line Interface): grazie ad essa potevi creare e visualizzare una stringa testuale senza avere alcune grafiche.
È un'interfaccia caratterizzata da un interazione testuale tra utente e elaboratore: l'utente scrive comandi input testuali e se i comandi sono scritti correttamente e l'elaboratore li esegue.
L'ultimo strato sono i software applicativi: sono programmi informatici (software) utilizzati per l'automatizzazione di ufficio (Office Automation) o per varie utilità. Si distinguono dai software di base (sistemi operativi) in quanto gli applicativi possono essere utilizzati soltanto se nel computer è già presente un S.O. Corrispondono allo shell, cioè il guscio del sistema operativo e bisogna avere dei privilegi per usarli. Questi privilegi sono le licenze, le licenze sono un contratto tra l'autore e l'utilizzatore del programma. Per utilizzare il software serve anche acconsentire a una serie di termini e condizioni. In aggiunta si definiscono i termini di durata e il territorio di applicazione della licenza.
GLI ALGORITMI
Esistono due tipi di modalità per un algoritmo: la prima è quella EURISTICA che si basa sul fare dei tentativi per arrivare alla risoluzione del problema però non essendo sicuri del risultato che si trova all' interno di un certo dominio di soluzioni possibili. Questa modalità è usata per trovare una soluzione che però essa non è efficiente ovvero rapida. Come seconda modalità troviamo quella ALGORITMICA questa invece consiste nel applicare una serie di elementi e di passi per ottenere la mia soluzione e questi passi sono di un numero finito, un esempio può essere una ricetta di una torta.
CARATTERISTICHE DI UN ALGORITMO
1 DEVE ESSERE NON AMBIGUO:I passi che lo compongono devono essere interpretabili in modo univoco, ovvero non deve contenere passi che possono essere interpretati in modi diversi da diversi esecutori.
2 COMPLETO: Deve risolvere tutti i problemi di un dato dominio.
3 DETERMINISTICO: A fronte degli stessi input deve produrre gli stessi risultati.
4 FINITO: Composto da un numero finito di passi che devono essere eseguiti un numero finito di volte.
5 GENERALE: Deve fornire la soluzione per tutti i problemi appartenenti ad una classe, ovvero deve essere applicabile a qualunque valore dei dati di input appartenenti a quella classe.
GLI APPROCCI
Esistono due tipi di approcci che sono quello TOP-DOWN questo approccio divide il problema in piccoli problemi che si risolvono uno per volta. Successivamente abbiamo quello BUTTON-UP che consiste nel partire stavolta da una soluzione e il problema è trovare il motivo per cui si è arrivati alla soluzione
I MODELLI
I modelli sono una astrazione della realtà che ci consente di visualizzare gli elementi in una modalità diversa. Per risolvere un problema bisogna astrarlo per trovare una soluzione per risolverlo, guardandolo da un altro punto di vista
DIAGRAMMA DI FLUSSO-FLOW CHART
Il flow chart è un modello che ci consente di risolvere un problema. Esso utilizza dei simboli grafici ed ogni algoritmo ha uno START e un END
ESERCIZI SUI FLOWCHART
![](https://8f0605c278.cbaul-cdnwnd.com/09db08af8e93854dda85f58a770f3a20/200000529-e91bbe91bd/algoritmo%20while%20-9.png?ph=8f0605c278)
![](https://8f0605c278.cbaul-cdnwnd.com/09db08af8e93854dda85f58a770f3a20/200000539-6132361325/algoritmo%20do-while.png?ph=8f0605c278)
Traccia: data una spesa applicare il 15% di sconto se la spesa è inferiore di 150 euro altrimenti applicare il 30%
![](https://8f0605c278.cbaul-cdnwnd.com/09db08af8e93854dda85f58a770f3a20/200000557-f2553f2556/Cattura-7.png?ph=8f0605c278)
Traccia: il biglietto di un pullman costa 0.20 euro più un costo chilometrico di 0.15 euro. impostare un viaggio a scelta dell'utente tenendo in conto che i bambini con meno di 6 anni non pagano, che da i 6 ai 21 anni viene applicato uno sconto del 20% e che gli over 70 ricevono uno sconto del 20%.
![](https://8f0605c278.cbaul-cdnwnd.com/09db08af8e93854dda85f58a770f3a20/200000559-b2d6db2d6f/Cattura.PNG3.png?ph=8f0605c278)
Algoritmo per verificare il calcolo della media.
![](https://8f0605c278.cbaul-cdnwnd.com/09db08af8e93854dda85f58a770f3a20/200000569-6e2336e235/algoritmo%20promosso%20o%20bocciato%20.png?ph=8f0605c278)