I COMPARI
L'HARDWARE
Il computer è formato da Hardware e Software. L'hardware è la componentistica del computer, mentre il Software è la sua parte intangibile.
Il Modello di Von Neumann si occupa della componentistica hardware dell'elaboratore.
La struttura del computer è formata da:
- CPU (Central Process Unit);
- MEMORIE;
- BUS;
- PERIFERICHE I/O (input e output).
Nonostante siano cambiate le dimensioni e le memorie, l'architettura è rimasta la stessa.
LA CPU
La CPU si divide in tre parti:
- ALU: (Arithmetic Logic Unit) in base binaria;
- CU: (Control Unit) ha il compito di controllare i dati che entrano nell'ALU;
- REGISTER: (ultra speed memory), qualsiasi informazione dell'ALU viene controllato dal CU e poi memorizzato qui.
LE MEMORIE
Le memorie possono essere di diverso tipo:
- RAM: (Random Access Memory) è la memoria principale perché senza di questa il computer non potrebbe funzionare. E' una memoria volatile, cioè se noi non salviamo i dati, andiamo a perderli;
- ROM: (Read Only Memory) è una memoria di sola lettura e qui possiamo trovare il BIOS, il primo programma che viene eseguito nella fase di avvio del sistema di elaborazione;
- CACHE: è una memoria più veloce della RAM che si trova tra il PROCESSORE e la RAM.
- MEMORIE DI MASSA: è un tipo di memoria che raccoglie grandi quantità di dati rispetto alla memoria primaria. Degli esempi possono essere l'hard disk, le chiavette, i CD, i DVD...
IL BUS
I BUS sono dei piccoli fili elettrici che trasportano le informazioni che trasportano all'interno dell'elaboratore. I contenitori delle piste con le Schede Madri (supporto dove vengono appoggiati il bus connettori ed è in grado di mantenere tutti questi elementi) c'è l'alloggio per la RAM, per il processore. Le dimensioni variano dal dispositivo. Troviamo i socket che sono dei supporti del processore. Il bus è diviso in:
- BUS DATI: trasportano solo dati;
- BUS CONTROLLI: controllano le periferiche;
- BUS INDIRIZZI: mantiene la numerazione di tutte le celle.
LE PERIFERICHE
Ne esistono di tre tipi:
- PERIFERICHE DI INPUT (tastiera, mouse, microfono).
- PERIFERICHE DI OUTPUT (Monitor, cuffie).
- PERIFERICHE MISTE (screen touch, stampante multifunzione).
IL SISTEMA BINARIO
Il sistema binario è un sistema basato su due simboli (0,1). Come per la numerazione decimale :
le due cifre avranno significato differente in base alla posizione;
la cifra meno significativa si trova a destra;
ogni cifra in posizione i moltiplica 2^i. ( in base dieci le unità moltiplicano 10^0, le decine 10^1... ).
Per convertire da decimale a binario si usa il metodo delle divisioni successive , valido in generale per passare da una base all'altra. Consideriamo il numero N. Si divide N per la nuova base; consideriamo Q il quoziente ed R il resto. Si converte R nella corrispondente cifra della nuova base p. Si aggiunge la cifra così ottenuta a sinistra delle cifre ottenute in precedenza. Se Q=0, fine; Altrimenti poni N=Q e torna al passo 1. Se si passa in base 2 la divisione avrà sempre resto 0 o 1. Consideriamo il primo resto ottenuto come la cifra meno significativa e l'ultimo come la cifra più significativa, mettendo in fila i resti ottenuti abbiamo convertito il numero in numerazione binaria.
SOMMA
Per eseguire la somma di due numeri binari si devono sommare le cifre bit a bit tenendo conto del riporto, se chiamiamo A e B i due addendi, proviamo ad eseguire la somma 1001+1101 cioè 9+13. Come si vede, si applica lo stesso metodo del sistema numerico decimale che ci ha insegnato la maestra delle elementari.
DIFFERENZA
Nel sistema binario, quando eseguo la differenza 10-1 per eseguire 0-1 devo andare "in prestito" dalla cifra precedente e quindi valendo l'1 della seconda cifra 2=1+1 devo fare (1+1)-1 = 1, di conseguenza al posto dell'1 della seconda cifra avro' 0.
Affianco alla differenza per il sistema binario 10-1= 01 col il "prestito" indicato in verde.
L'ALGEBRA DI BOOLE
Boole, algebra di particolare struttura algebrica, introdotta originariamente da G. Boole. Permette di effettuare un calcolo algebrico che ha come oggetti non i numeri, ma i valori di verità di enunciati. Un enunciato è una proposizione che può essere vera oppure soltanto falsa e che non può mai essere contemporaneamente sia vera sia falsa. Poiché questi ultimi, nella logica classica, possono assumere soltanto due valori («vero», indicato anche con 1, oppure «falso», indicato anche con 0) l'algebra di Boole nasce come algebra binaria e le sue variabili, dette variabili booleane, possono assumere solo i due valori 0 e 1. Fra tali variabili sono definite le seguenti operazioni:
a) Prodotto logico detto anche and: è un'operazione binaria che si indica con il simbolo × e corrisponde al connettivo logico della congiunzione «e»; associa a ogni coppia di elementi a e b l'elemento a × b il cui valore è definito dalla seguente tabella.
b) Somma logica detta anche or: è un'operazione binaria che si indica con il simbolo + e corrisponde al connettivo logico della disgiunzione «o»; associa a ogni coppia di elementi a e b l'elemento a + b il cui valore è definito dalla seguente tabella.
c) Complemento detto anche not: è un'operazione unitaria che corrisponde al connettivo logico della negazione «non»; associa a ogni elemento l'elemento ā il cui valore è definito dalla seguente tabella.
IL CODICE ESADECIMALE
Il sistema numerico esadecimale (spesso abbreviato come esa o hex) è un sistema numerico posizionale in base 16, cioè che utilizza 16 simboli invece dei 10 del sistema numerico decimale tradizionale. Per l'esadecimale si usano in genere simboli da 0 a 9 per le prime dieci cifre, e poi le lettere da A a F per le successive sei cifre, per un totale di 16 simboli.
LA CODIFICA DELLE INFORMAZIONI
Le informazioni possono essere memorizzate e comunicate in diversi modi, ma sono solo due i tipi comunemente utilizzati: analogico e digitale. Analogico è quando l'informazione è memorizzata come un segnale continuo, come le onde sonore. Digitale è dove i valori discreti sono usati per rappresentare le informazioni, ad esempio il codice binario. Codificare significa convertire i dati digitali in un formato che può essere memorizzato, trasmesso o elaborato. La teoria dell'informazione studia la quantificazione e la compressione di un informazione. Lo scopo della codifica dei dati è quello di ridurre la quantità di dati utilizzati nella comunicazione o nella memorizzazione per raggiungere un obiettivo specifico.
La codifica del testo è lo schema con cui il testo vieni convertito (codificato) in un formato binario per la memorizzazione o trasmissione. Lo scopo della codifica è quello di permettere ai dati di essere rappresentati o memorizzati in un computer in uno qualsiasi dei vari modi e successivamente decodificati nella forma originale.
CODIFICA ASCII
Ascii è l'acronimo di American Standard Code for Information Interchange, un insieme di simboli usati per rappresentare lettere, numeri e segni di punteggiatura. La codifica Ascii è un modo per rappresentare tutti questi caratteri in una forma che i computer possono capire. La tabella Ascii rappresenta ogni carattere assegnandogli un numero. Quando invii dati su Internet o li memorizzi sul tuo computer, stai usando la codifica Ascii per risparmiare tempo e spazio di memorizzazione. Ascii è il codice standard per i microcomputer e consiste di 128 numeri decimali che vanno da 0 a 127.
FILE MULTIMEDIALI
IMMAGINI
Per codificare un'immagine bisogna innanzitutto dividerla tramite una griglia a linee orizzontali e verticali a distanza costante. I quadrati che verranno a formarsi vengono chiamati pixels, difatti la codifica di un'immagine consiste proprio nel codificare i pixel in essa.
Per farlo bisogna assegnare ad ogni pixel un numero apposito di bit, nel caso più semplice, ovvero in un'immagine in bianco e nero senza sfumature di grigio si assegna un bit ad ogni pixel, 1 se nel pixel il nero è più presente e 0 se nel pixel il bianco è più presente.
Assumendo che sia un triangolo sarà:
0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1
Essendo una sequenza di bit lineare, per codificare un'immagine bisogna rendere lineare anch'essa leggendola dal basso verso l'alto e da sinistra verso destra, in questo otteniamo l'immagine in numerazione binari.
1111111 0111111 0011111 0001111 0000111 0000011 0000001
Questa sequenza binaria viene chiamata bitmap.
In questa maniera però si può facilmente notare che una volta resa immagine la sequenza di bit essa non sarà identica alla foto originale ma bensì sarà solo un approssimazione, per rendere l'immagine più simile possibile a quella originale bisogna infittire l'immagine, ovvero aumentare il numero di linee presenti nella griglia creando di conseguenza più pixel.
La risoluzione è il numero di pixel in cui è suddivisa l'immagine, viene espressa tramite una coppia di numeri, di solito i monitor utilizzano risoluzioni di 640x480, 1024x768, oppure 1280x1024.
Se si assegna un solo bit per pixel è possibile codificare solo immagini in bianco e nero senza livelli di chiaroscuro, le immagini in bianco e nero hanno diverse scale di grigio. Per codificarle viene usato lo stesso metodo: viene stabilito per ogni pixel il suo livello medio di grigio e gli viene assegnato un numero di bit>1.
- se utilizziamo 4 bit, ovvero 2 alla 4 combinazioni, possiamo rappresentare 16 livelli di grigio.
- se ne utilizziamo 8, possiamo rappresentare 2 alla 8 livelli di grigio, ecc.
Esistono in totale 256 diversi livelli di grigio.
Per codificare le immagini a colori bisogna individuare il numero delle sfumature di colore differenti e di codificare ogni sfumatura. I monitor utilizzano da 256 a 16000000 di colori per pixel.
- La quantità di bit utilizzati per la codifica del colore viene chiamata profondità del colore.
-La dimensione di un'immagine si calcola moltiplicando la profondità per la risoluzione.
TECNICHE DI COMPRESSIONE
Per cercare di diminuire lo spazio occupato da un'immagine si utilizzano delle tecniche di compressione.
Esistono due tipologie di tecniche di compressione:
- LOSSY (con perdita di informazioni);
- LOSSLESS (senza perdita di informazioni).
Lossy prevede che si memorizzi solo una parte dei pixel, e che attraverso funzioni di interpretazione matematiche si ricostruiscano i pixel mancanti.
Lossless, anche chiamata RLE (Run Length Encoding), consiste nel memorizzare i pixel vicini identici, poi vengono usati per tutte le volte che sono presenti nell'immagine.
Le tecniche di compressione si basano su tre principi:
- Non tutti i pixel sono differenti, spesso i pixel vicini sono solo simili;
- Non tutti i colori sono presenti in un'immagine;
- L'occhio umano ha dei limiti, ovvero non è in grado di percepire differenze cromatiche al di sotto di una grandezza;
VIDEO
Per codificare i video bisogna innanzitutto capire come sono fatti, i video non sono altro che una certa quantità di immagini (chiamate frame) che appaiono in sequenza.
Il numero di immagini presenti in un secondo prende il nome di fps, ovvero frame per secondo.
Le immagini televisive vengono trasmesse a 25/30 fps, con una risoluzione pari a 576 x 720,
e con una profondità di 16 bit.
I formati standard:
Essendo i video formati da centinaia o migliaia di immagini, esso risulterebbe notevolmente pesante, per questo esiste una tecnica di compressione anche per i video:
Anch'essa è una tecnica lossy, infatti prevede che venga memorizzato solo il primo fotogramma, chiamato reference frame, e che vengano memorizzate solo le differenze con le altre immagini.
-è una compressione temporale.
-si applica anche una compressione spaziale: ovvero la compressione di ogni singolo frame.
- MPEG memorizza solo un fotogramma ogni dodici, degli altri solo le differenze.
- AVI (Microsoft).
- QUICK TIME (apple).
- REAL VIDEO (Real).
SUONI
Anche il suono può essere codificato ma prima bisogna sapere che:
-Il suono è un'alterazione della pressione dell'aria che, una volta percepita viene trasformata in uno stimolo auditivo del cervello.
-L'alterazione della pressione necessita le caratteristiche di vibrazione.
-Le qualità fisiche che rendono il suono diverso dagli altri sono la durata, l'intensità e la frequenza.
-grazie ad un microfono le vibrazioni nell'aria vengono trasformate in un segnale elettrico.
-L'intensità misura l'ampiezza delle variazioni delle onde e si esprime in decibel.
-L'altezza del suono dipende dalle frequenze di variazione delle onde, le frequenze vengono misurate in hertz; il nostro orecchio percepisce solo frequenze dai 20 ai 20.000 hertz.
Per rappresentare il suono in digitale si assegna un numero al valore dell'ampiezza della curva.
Per codificare un onda sonora bisogna campionarla tramite delle tecniche di campionamento, più frequentemente il suono viene campionato più precisa sarà la sua rappresentazione.
Secondo il tasso di Nyquist e Shanon per ricostruire il segnale è necessario il doppio dei campioni della frequenza dell'onda.
Per trasformare i campioni in una sequenza binaria c'è bisogno di un dispositivo detto ADC (Analog-Digital Converter), che trasforma gli impulsi elettrici in una sequenza di numeri; il numero di bit destinati alla rappresentazione dei valori numerici si basa sui livelli di tensione dentro un insieme di valori discreti: con 8 bit si rappresentano 2 alla 8 livelli di tensione, con 16 bit 2 alla 16 livelli ecc.
Per riprodurre un suono si effettua il processo inverso: il DAC (digital analog converter) trasforma i numeri in impulsi e l'impulso viene ad un dispositivo sonoro (altoparlante).
IL SISTEMA OPERATIVO
All'interno di un elaboratore c'è una parte tangibile (Hardware) e una intangibile (Software), paragonabile al pensiero nel corpo umano.
Esistono due tipi di software:
Software di base: Sono quei software senza i quali ogni dispositivo non potrebbe funzionare. Sono Sistemi Operativi Windows, Ios, Android e Linux.
Nei software di base, inoltre, all'accensione il processore va a leggere il firmware, un software particolare di piccole dimensioni realizzato dalla casa produttrice di un certo dispositivo, che assolve ad alcuni compiti specifici. Un esempio è il Bios, un processore con piccole memorie che esegue un programma situato nella Rom. Inoltre, il processore va a leggere le informazioni, ed il percorso in cui viene salvato il Sistema Operativo (Path). Dopodiché, carica il sistema operativo nella Ram, perché tutti i software sono caricati lì, attraverso il Bootstrap.
Software applicativi: Sono le applicazioni dell'elaboratore.
LA STRUTTURA DEL SISTEMA OPERATIVO
Il Sistema operativo è un software di base con la funzione di interfacciarsi con l'elaboratore, e serve per interpretare i comandi, gestire le periferiche...
Inoltre, è un sistema composto da 5 strati, con ognuno che possiede un compito definito. Questa struttura gerarchica è detta "ONION SKIN", con ciascuno strato che serve a quello inferiore. I 5 strati sono:
1. CORE (anche detto KERNEL), cioè il "nucleo".
2. GESTIONE DELLE MEMORIE, che gestisce lo scambio di informazioni tra il Core e l'IO.
3. GESTIONE IO :gestisce le periferiche (I= Input; O= Output), e anche il loro funzionamento attraverso i "Driver".
4. GESTIONE DEL FILE :composta dal File System, che gestisce, crea, modifica ed 5. Applicazione usata: i programmi d'applicazione.
Esso può eliminare i file e le cartelle all'interno dell'elaboratore.
IL CORE
Cos'è un Core?
Il Core si trova al centro del sistema operativo e controlla tutte le funzioni più importanti di un software, sia che si tratti di un sistema Linux o Windows, di uno smartphone, un server, o qualsiasi altro tipo di computer.
Kernel: il nucleo del sistema operativo
Chiunque lavori con un sistema operativo , lavora anche con un kernel. E spesso senza rendersene conto, dal momento che il kernel funziona sempre in background, supervisionando il processo e l'organizzazione dei dati di ogni computer. Praticamente, è responsabile di tutte le funzioni del sistema operativo.
Un kernel è letteralmente il nucleo di un sistema operativo e quindi l'interfaccia tra software e hardware. È la componente centrale di un sistema operativo: permanentemente necessario e costantemente in uso.
Non è però solo il nucleo del sistema, ma anche un software incaricato del controllo di tutti gli accessi al processore e alla memoria, responsabile dei driver più importanti e autorizzato ad accedere direttamente all'hardware. Un kernel è la base per l'interazione tra hardware e software e ne gestisce le risorse nel modo più efficiente possibile.
Che tipo di software è un kernel?
Per capire la funzione di un kernel, può rivelarsi utile pensare alla somiglianza fonetica di questo termine con la parola inglese (o francese) "colonel" ("colonnello"), a indicare il grado militare, dal momento che sia il colonnello che il kernel sono responsabili per la trasmissione e la mediazione dei comandi. Un programma invia "system calls" ("chiamate di sistema") al kernel, per esempio quando viene scritto un file. Questa chiamata di sistema viene tradotta dal kernel in una serie di comandi inoltrati alla CPU. Per fare questo, il kernel gestisce l'intero set di istruzioni della CPU. Spesso questo processo avviene completamente in background senza che gli utenti se ne accorgano.
Quando un computer si avvia, la prima cosa che accade dopo l'avvio è il caricamento del kernel in memoria. Questo avviene in un'area protetta, il bootloader, in modo che il kernel, in qualità di software, non possa essere modificato né cancellato.
Una volta fatto ciò, il kernel inizializza i dispositivi collegati e avvia i primi processi. I servizi di sistema vengono caricati, ulteriori processi vengono avviati o fermati, i programmi utente e l'allocazione delle posizioni di memoria vengono avviati.
GESTIONE DELLA MEMORIA
La gestione della memoria principale (anche detta RAM o primaria) è uno degli aspetti più importanti dei sistemi operativi. Come tutte le risorse di un computer, anche la RAM deve essere gestita secondo i soliti principi di equità e prestazioni.
La Gestione della Memoria, inoltre, ha anche tre funzioni principali:
Allocare: memorizzare qualcosa in memoria;
Deallocare: rimuovere qualcosa dalla memoria;
Indirizzo [di memoria]: indirizzo esadecimale che corrisponde ad un preciso punto nella memoria.
Un compito fondamentale, se non il più importante, di un SO è quindi quello di gestire la Memoria, soprattutto quando il dispositivo è progettato allo scopo di prestazioni elevate in velocità e tempi di risposta, come ad esempio quelli degli smartphones. Comunemente utilizziamo il termine "Memoria" sia per descrivere la memoria fisica (disco rigido) sia per descrivere la memoria RAM (memoria centrale). Ma un sistema operativo ha la facoltà di gestire un'altro di tipo di memoria: la memoria virtuale. Si può classificare questa memoria come "modo attraverso cui il SO mappa i processi in memoria" per agevolare lo scheduling. Il come vengono mappati dipende dalla gestione del SO.
E' dunque attraverso queste due memorie che il SO deve mediare. Per poter essere eseguito un processo deve risiedere necessariamente in memoria centrale. Il SO deve creare quindi una corrispondenza tra il processo virtuale (immagine del processo in memoria virtuale) e il processo vero e proprio (in memoria fisica, centrale o di massa). Attraverso un componente detto MMU - Memory Management Unit - il SO converte l'indirizzo logico della memoria virtuale in indirizzo fisico vero e proprio in risiede il processo.
Quando un processo deve essere eseguito, dopo essere stata creata un'immagine del processo nella memoria virtuale, nel caso non ci sia e viene interpellato il MMU per tradurre l'indirizzo logico tramite una tabella dei Processi, costantemente aggiornata sulle corrispondenze [indirizzo logico, indirizzo fisico]. Esso preleva l'indirizzo logico lo converte in indirizzo fisico, preleva il processo dalla memoria fisica o centrale. Una volta portato in memoria centrale il processo può essere eseguito.
GESTIONE DELLE PERIFERICHE I/O
Le periferiche di un computer sono dispositivi elettronici che hanno il compito di mettere in comunicazione l'unità centrale del computer con l'esterno.
Le periferiche possono esser di due tipi: Input (sono tutte le periferiche che permettono all'unità centrale ed ai sistemi operativi di acquisire dati o informazioni, come mouse, tastiera, webcam, microfono ...), ed Output, (mostrano le informazioni che l'elaboratore ha elaborato, come schermo, cuffie...).
Per gestione delle periferiche di I/O si intendono tutte quelle funzioni di Input e di Output adibite al controllo e all'esecuzione di dispositivi, quali mouse, stampanti, fax, tastiere, monitor, dispositivi USB etc. Un SO deve naturalmente anche "pensare" a come gestire eventuali dispositivi esterni che in futuro si aggregheranno alla macchina (come gli Hard Disk).
Il SO pertanto viene configurato in modo tale che veda tutti i dispositivi come se fossero semplici processi, e di conseguenza entità che sono in grado di trattare.
Questo è un compito arduo per un SO in quanto tutti i dispositivi di I/O o processi I/O devono avere una certa precedenza rispetto agli altri, dal momento che il tempo di risposta della macchina deve essere il minimo possibile (dell'ordine dei microsecondi). Il click di un mouse, la digitazione di un tasto devono essere "processi" serviti con prontezza e quindi godere di maggiore priorità rispetto a processi di altra natura.
I processi I/O, pertanto sono detti on-line, nel senso che sono processi che devono rimanere in ascolto per tutta la durata del servizio della macchina . Se così non fosse, forse non useremmo né PC, né tablet, né smartphones.
Per essere serviti in maniera veloce e senza fronzoli, i processi I/O hanno priorità assoluta, in quanto godono delle hardware interrupts, ovvero delle condizioni che bloccano il processo in corso quando un processo I/O chiede l'utilizzo del processore. Attraverso questo hardware interrupt, il processo viene servito in maniera immediata.
Il Gestore I/O del SO, detto Driver, dall'inglese "pilota", si preoccupa di interfacciare il dispositivo alla macchina in modo che sia capace di interagire con esso. Il Driver, infatti, presenta il dispositivo come un "secondo" processore e trasferisce i dati dall'uno all'altro come se fosse uno solo, attraverso un'operazione detta di buffering, ovvero di posizionamento e trasferimento.
IL FILE SYSTEM
Il File System è un componente del sistema operativo che si occupa della gestione e dell'organizzazione dei file sui dispositivi di archiviazione di massa. È la parte fondamentale di qualsiasi sistema operativo moderno. I file sono organizzati secondo un sistema di nomi gerarchici, con il compito di gestire, leggere e registrare i file, formattando le unità di memoria di massa in maniera opportuna. Ogni supporto esterno di memoria ( hard disk, DVD,...). Consente di effettuare le operazioni di lettura, di scrittura, di cancellazione e di ridenominazione dei file. Può essere anche utilizzato dall'utente come interfaccia testuale o grafica. Si tratta di due distinte tipologie di rappresentazione dei dati.
File System testuale: l'interfaccia testuale (CLI, Command Line Interface) è una rappresentazione basata sulla lista dei file in formato testuale, si basa sull'utilizzo di una Shell testuale e caratterizza i sistemi operativi di prima generazione.
File System grafico: l'interfaccia grafica (GUI, Graphic Unit Interface) è una rappresentazione basata tramite l'utilizzo di elementi grafici (cartelle, icone, finestre) che consentono di organizzare i dati in documenti, cartelle e sottocartelle.
LE APPLICAZIONI
Un esempio è il programma di scrittura Word, a pagamento, nel quale si compra una licenza d'uso, che dà la possibilità di utilizzare il software. Esistono due tipi di licenze d'uso: Licenza Life time ( si può usare per sempre), e Licenze con un tempo limitato ( a scadenza).
Ci sono anche dei software che sono offerti gratuitamente per un tempo limitato: Free Ware e Free Share, che hanno uno scopo pubblicitario.
Inoltre, sui software sono consentite solo alcune funzioni, perché non si possono fare tutte; ci sono anche dei software chiamati Open Source, cioè aperti a tutti, che si possono regalare, distruggere, e se siamo capaci anche di migliorare. Un esempio è il Software applicativo, o anche i Sistemi Operativi come Linux.
Molti documenti devono essere salvati sul nostro dispositivo, ma ce ne sono altri in cui questo non è necessario grazie al Cloud ( nuvola in inglese), uno spazio di memoria che è disponibile non sul computer bensì online. Un esempio lo sono i documenti di Google, ed il vantaggio è quello che in qualsiasi posto mi trovi, posso accedere adesso al mio account e ho a disposizione i miei file e cartelle, grazie a quello che è chiamato Web 2.0.
BIBLIOGRAFIA
COME RISOLVERE UN PROBLEMA ?
Il procedimento di soluzione di un problema dovrebbe essere caratterizzato da:
• analisi del problema e identificazione di una soluzione da parte nostra;
• descrizione della soluzione per l'esecutore;
• interpretazione della soluzione da parte dell'esecutore;
• attuazione del metodo risolutivo da parte
dell'esecutore
La SOLUZIONE deve possedere delle proprietà:
• essere descritta in una forma interpretabile dall'esecutore;
• specificare l'esecuzione di azioni che egli è effettivamente in grado di ottenere.
Ogni esecutore è caratterizzabile in base alle sue capacità di :
• interpretazione (linguaggio);
• esecuzione (istruzioni che è in grado di eseguire)
METODI DI RISOLUZIONE
I METODI DI RISOLUZIONE che bisogna utilizzare sono: L' ALGORITMO E L' APPROCCIO EURISTICO
- APPROCCIO EURISTICO La programmazione euristica è un approccio alla risoluzione dei problemi che utilizza metodi di prova ed errore per trovare una soluzione probabile a un determinato problema. È un tipo di intelligenza artificiale che utilizza l'euristica, o regole empiriche, per trovare una soluzione a un particolare problema. Viene spesso utilizzata in situazioni in cui non è possibile trovare una soluzione esatta o in cui il tempo e le risorse necessarie per trovare una soluzione esatta sono troppo costosi. La programmazione euristica è un approccio efficace alla risoluzione dei problemi perché è in grado di trovare soluzioni in modo rapido, senza dover cercare in modo esaustivo tutte le soluzioni possibili. Inoltre, consente una risoluzione flessibile e creativa dei problemi, in quanto può adattarsi ai cambiamenti dell'ambiente o alle nuove informazioni. Infine, è spesso più efficace dal punto di vista dei costi rispetto ad altri approcci alla risoluzione dei problemi, in quanto richiede meno risorse. Non è garantito che trovi la migliore soluzione possibile come l' algoritmo e non è adatta a problemi di grandi dimensioni poiché il numero di soluzioni possibile può diventare ingestibile.
Un esempio di problema dove si utilizza l' approccio euristico può essere quando uno va a scuola ed ha una strada bloccata, l'approccio non va buon fine quando la strada che scelgo è bloccata. BIBLIOGRAFIA https://comeaprire.com/definizioni/introduzione-alla-programmazione-euristica/
- L' ALGORITMO è una sequenza finita di soluzioni che mi consente di arrivare alle soluzioni del problema, esso si divide in 5 caratteristiche

Esistono due metodi di risoluzione TOP DOWN e BOTTOM UP
TOP DOWN: Divido il problema in tanti piccoli problemi

BOTTOM UP: Parto dalla soluzione, e cerco di capire com' è fatta. Dalla soluzione capisco il procedimento

I FLOWCHART
Il flowchart non è nient' altro che un diagramma di flusso. Questi diagrammi sono definiti "di flusso" perché vengono utilizzati per impartire una serie di comandi eseguiti scorrendo di blocco in blocco, fino ad arrivare alla conclusione. E' un diagramma che illustra i passaggi, le sequenze e le decisioni di un processo o flusso di lavoro. Sebbene ne esistano molti tipi diversi, un diagramma di flusso di base è la forma più semplice di una mappa di processo. È uno strumento potente, che può essere utilizzato in più campi per pianificare, rappresentare, documentare e migliorare i processi.
Nell'ambito informatico, il diagramma di flusso serve per rappresentare graficamente le operazioni da seguire per l'esecuzione di un algoritmo.

La rappresentazione del Flowchart varia in base a:
- le operazioni da compiere. Sono rappresentate mediante forme geometriche (rettangoli, rombi, esagoni, parallelogrammi), ciascuna con un preciso significato logico e all'interno delle quali un'indicazione testuale descrive l'attività da svolgere;
- la sequenza nella quale devono essere compiute. Essa viene rappresentata con frecce di collegamento . I due blocchi fondamentali sono quelli di "Inizio" e "Fine", rappresentati in genere con una forma circolare. L'Inizio viene posizionato in cima al diagramma e, seguendo le frecce che collegano le varie sagome, si delineano le azioni che dovrà compiere un algoritmo. I blocchi più utilizzati sono:
Processo, rappresentato da un rettangolo.
Input/Output, rappresentato da un parallelogramma.
Decisione, rappresentato da un rombo.
Processo
Il Processo "chiede" all'algoritmo di compiere un'azione, ad esempio un'operazione matematica o la creazione di una variabile.
Input/Output
Questi blocchi possono avere due funzioni.
L'Input richiede l'immissione di un dato da parte dell'utente.
L'Output mostra il dato scritto all'interno del blocco.
Decisione
Quando l'algoritmo arriva in un blocco a rombo si dovrà porre una domanda riguardo un dato o un'azione.
La domanda potrà avere solo due risposte: "vero" o "falso".
Per ognuna di queste risposte il diagramma può seguire una strada con dei processi specifici o, addirittura, tornare indietro e ripetere i precedenti processi, finché non si verifica la condizione opposta.
Che cosa sono i cicli?
I cicli sono delle ripetizioni di azioni che si trovano al suo interno.
I cicli in informatica e nella programmazione sono importantissimi, perché ripetono una o più operazioni, se la condizione è verificata.
non esiste solo un ciclo. Alcuni "lavorano" per condizione falsa, alcuni per condizione vera.
I cicli esistenti sono 3
Ciclo while
Procedimento del while:
- Entra nel ciclo, verificando la condizione;
- Se la condizione è vera (T), esegue i blocchi sottostanti. Una volta terminati, torna all'inizio del ciclo e verifica di nuovo la condizione;
- Se la condizione è falsa, esce dal ciclo.
Ciclo do-while
Come dice il nome, il do-while è una specie di seconda versione del ciclo while.
La differenza sta nel fatto che il ciclo do-while, prima di verificare la condizione, esegue almeno una volta il blocco di istruzioni al suo interno.
Lo scopo principale dei cicli do-while è il controllo dell'input
Il ciclo do-while lavora sempre per condizione vera.
Ciclo for
Il ciclo for è un attimo più completo degli altri due
La semantica più comune del ciclo for è la seguente: si dichiara una variabile contatore che di fatto è identificativa dell'iterazione corrente, e le si assegna un valore iniziale. Questa operazione, detta di inizializzazione del ciclo, viene eseguita solamente una volta, prima di effettuare la prima iterazione.
BIBLIOGRAFIA https://www.tagmanageritalia.it/glossario-flowchart/#gref https://informaticasi.altervista.org/cicli-flow-chart/
Alcuni esempi
TRACCIA
Una società di trasporti effettua degli sconti rispetto alla tariffa piena: per gli studenti 10%, per i disoccupati il 15% e per i pensionati il 20%. Il programma associa ad ogni tipologia una lettera: S (studenti), D (Disoccupati), P (Pensionati); nel caso non ricada in una di queste tipologie (A: altro) non si applica sconto. Scrivere un programma che, richiesto il costo di un biglietto e l'eventuale condizione particolare dell'utente, visualizzi l'importo da pagare.
Ragionamento:
1) inserire il tipo di macchina, l'orario di entrata e di uscita
1.2) scrivere in input l'ora di ingresso
1.3) controllare se l'ora è compresa tra le 6 e le 24 attraverso il ciclo post condizionale
1.4) scrivere in input i minuti di ingresso
1.5) controllare se i minuti sono compresi tra 0 e 59 attraverso il ciclo post condizionale
1.6) scrivere in input l'ora di uscita
1.7) controllare se l'ora è compresa tra 6 e 24 attraverso il ciclo post condizionale
1.8) scrivere in input i minuti di uscita
1.9) controllare se i minuti sono compresi tra 0 e 59 attraverso il ciclo post condizionale
1.10) inserire in input il tipo di veicolo
1.11) controllare che sia autPic, autMed, suv o furg attraverso un ciclo pre condizionale
2) associare la tariffa al tipo di veicolo
2.1) se ora=0 e i minuti< di 60 ora=1
2.2) se ora>0 e i minuti>0 ora= ora+1
2.3) se autPic, prezzo= 2*ora
2.4) se autMed, prezzo= 2*(ora-1)+3
2.5) se suv, prezzo= 3*ora
2.6) se furg, prezzo= 3*(ora-1)+4
3) mostra tariffa in output

TRACCIA
L'associazione "Tal dei Tali" a fronte di una quota mensile di 6 euro garantisce l'accesso allo stadio ad un prezzo scontato di 22 euro a persona. Ogni socio può portare fino 10 persone allo stesso prezzo scontato. Calcola il prezzo per l'ingresso allo stadio di un numero di persone a tua scelta, compreso della quota associativa annuale. Realizzare un documento di sintesi utilizzando la tecnica Top-Down ed il diagramma di flusso relativo.
RAGIONAMENTO
1)il prezzo è di 22 euro
1.1)se il numero di persone supera 10, il prezzo scontato si moltiplica per 10, e per le restanti persone si moltiplica il prezzo intero
2)se le persone sono<= a 10, si moltiplica il numero di persone per il prezzo scontato
3) al prezzo scontato e intero va aggiunto il prezzo del biglietto scontato del socio della associazione
4)al prezzo scontato e intero va aggiunto la quota annuale

TRACCIA
Dati n1 e n2, calcolarne la media e, se è maggiore di 20, dire maggiore, se è minore, dire minore

Traccia
Calcolare l'angolo esterno di un triangolo il cui angolo interno è alfa
Procedimento:
1) Inserire l'angolo alfa
1.1)Mettere in Input alfa
2)Calcolare beta
2.1) Sottrarre alfa da 360 e ottenere beta
3)Mettere beta in output

Traccia
Marco e Luigi sono dipendenti di una ditta di trasporti. Luigi porta i pasti alle mense per £35 al giorno. Marco consegna i giornali alle edicole e viene pagato £50 al giorno, inoltre ha diritto ad un rimborso giornaliero di £4.60 per lavoro notturno. Sapendo che il mese scorso Luigi e Marco hanno lavorato lo stesso numero di giorni e che Luigi ha guadagnato £490 in meno di Marco, quanti giorni ciascuno hanno lavorato?
Procedimento
1.1)Sommare £4.60 ai soldi giornalieri di Marco
2)Calcolare il numero di giorni 2.1) Impostare l'equazione 2.2)Sottrarre il guadagno di Marco a quello di Luigi
2.3)Dividere la differenza per il numero ottenuto
3)Inserire in output il numero di giorni

Traccia
Procedimento
4)Calcolare l'affitto dell'anno scorso 4.1)Ottenere il risultato
I COMPARI









