SOFTWARE
“L’hardware è la parte che si può prendere a calci; il software
quella contro cui si può solo imprecare”.
SOFTWARE
E’ l’insieme dei dati e dei programmi che rendono possibile
l’inserimento dei dati e dei comandi da parte dell’utente, volti
all’elaborazione da lui desiderata e perseguita.
I programmi si dividono in sistemi operativi (che svolgono le
funzioni di base) e programmi applicativi (nati per funzioni
specifiche) .
SISTEMI OPERATIVI E
PROGRAMMI APPLICATIVI
SISTEMI OPERATIVI
Sono quei programmi, quali MacOs, WINDOWS (95, 98, 2000,
XP, Vista), BeOs, OS2, AmigaOS, NetBSD, Linux, Unix, MS
DOS, i quali contengono i principali comandi che permettono di
rendere operativo il personal computer, coordinandone il
funzionamento dei componenti e gestendo le funzioni di base.
PROGRAMMI APPLICATIVI
Sono tutti quei programmi che svolgono funzioni specifiche in
base alla natura per cui sono nati, quali fogli di calcolo, editori di
testo, programmi di disegno, ecc..
Software: device driver
I driver di periferica (device driver) sono programmi
specializzati nella gestione di un particolare componente
hardware.
E’ il sistema operativo a caricarli in memoria durante la
procedura di avvio di un computer.
Quando si aggiungono nuove periferiche è necessario
fornire al sistema operativo i corrispondenti drivers (di solito
presenti sul CD in dotazione con la periferica) in modo che la
periferica divenga utilizzabile dal S.O. e conseguentemente
anche dai programmi applicativi che intendono gestirla.
Software: Programmi Applicativi
Sono tutti quei programmi che svolgono funzioni specifiche, e
che vengono “lanciati” dall’interno dei sistemi operativi:
1.
2.
3.
4.
5.
6.
fogli di calcolo
elaborazione testi
fotoritocco, disegno, grafica 3D
editing o riproduzione audio
editing o riproduzione video
“utilities” (compressione, antivirus, ecc.)
Elaboratore testi (Word Processor)
Foglio elettronico (SpreadSheet)
Basi di dati (Database)
Presentazioni
Impaginazione (Desktop Publishing)
Agenda, Posta, Calendario, Rubrica
PROCEDURA DI AVVIO DI UN COMPUTER
Quando si accede un computer la memoria RAM è vuota.
La memoria ROM contiene il BIOS che permette alla macchina di compiere
le prime operazioni di verifica ed enumerazione dei componenti installati
(memoria, video, dischi, tastiera,ecc…) e di comunicazione tra gli stessi.
In questa fase viene compiuta un’operazione di diagnosi del sistema
(conteggio memoria, controllo periferiche, assegnazione irq, ecc..) ed avviata
la procedura di BOOTSTRAP da disco. In una particolare traccia del disco
fisso (o, se presenti, dal floppy o dal cd-rom) è contenuto il codice di avvio
del sistema operativo installato.
Il bootstrap termina con l’avvio del caricamento dell’intero sistema operativo.
Una volta terminato il caricamento del sistema operativo, il computer è
pronto ad essere utilizzato, e possono essere avviati i programmi applicativi
per elaborare i documenti.
ALGORITMI
Un algoritmo è una sequenza finita, non ambigua, di passi eseguibili e
ripetibili un numero finito di volte per portare alla soluzione di un dato
problema.
Un algoritmo, a partire da informazioni in ingresso, produrrà un risultato in
uscita.
Esempi di algoritmi: ricette di cucina, istruzioni di montaggio di un oggetto,
calcolo dell’ipotenusa dai cateti, calcolo del Massimo Comun Divisore,
procedura per cambiare una ruota forata, ordinamento di una rubrica,
pagamento di un bollettino postale, ecc...
Il metodo più naturale per esprimere un algoritmo è descriverne i passi da
seguire nel linguaggio naturale.
Vediamo un esempio di espressione della procedura per pagare un bollettino
postale:



recarsi ad un ufficio postale
compilare il bollettino di conto corrente postale
effettuare il pagamento
NON AMBIGUITA’ DI UN ALGORITMO
La sequenza precedentemente vista non rappresenta un algoritmo in
maniera corretta in quanto non è priva di ambiguità. Infatti non indica quale
ufficio postale, che cifra indicare, non verifica che si disponga di tale
contante, ecc…
L’algoritmo andrebbe riscritto come:





recarsi al più vicino ufficio postale
consultare la tabella degli importi da pagare
compilare il bollettino di ccp
assicurarsi di avere la cifra necessaria al pagamento
effettuare il pagamento
Tale descrizione è più dettagliata, ma non è ancora del tutto priva di
ambiguità. Ciò è dovuto alla natura stessa del linguaggio naturale. Sono stati
pertanto definiti dei linguaggi specifici per la definizione degli algoritmi,
chiamati linguaggi di programmazione.
RAPPRESENTAZIONE DI UN ALGORITMO
Per rappresentare il flusso di esecuzione di un algoritmo può
essere utile ricorrere ai diagrammi a blocchi che indicano
graficamente la sequenza di operazioni da eseguire. Vediamo
due modi equivalenti di esprimere lo stesso algoritmo (di
Euclide) per il calcolo del M.C.D.
inizio
1. Prendi i valori da tastiera VAL1 e VAL2
finchè
RESTO<>0
INPUT:
VAL1, VAL2
Falso
se
VAL1 < VAL2
Vero
Vero
scambia
VAL1 e
VAL2
RESTO:=
VAL1 MOD VAL2
VAL1:=VAL2
VAL2:=RESTO
RESTO:=
VAL1 MOD VAL2
OUTPUT:
“MCD:” VAL2
fine
Falso
2. Se VAL1<VAL2 allora scambiali
3. Metti in RESTO il resto tra VAL1 e VAL2
4. Ripeti finchè RESTO<>0
5.
Metti in VAL1 il contenuto di VAL2
6.
Metti in VAL2 il contenuto di RESTO
7.
Metti in RESTO il resto tra VAL1 e VAL2
8. Fine Ripeti
9. Mostra il MCD che è pari a VAL2
LINGUAGGI DI BASSO LIVELLO
Come esprimere un algoritmo affinché un computer possa
interpretarlo ed eseguirlo?
In realtà la CPU è in grado di eseguire un numero molto ristretto
di operazioni estremamente semplici. E tali istruzioni sono
espresse in termini numerici, cioè ad ogni istruzione
corrisponde un numero.
Il linguaggio di programmazione le cui istruzioni hanno una
corrispondenza biunivoca con le operazioni svolte dal
microprocessore si chiama LINGUAGGIO MACCHINA.
Questo linguaggio si dice di BASSO LIVELLO in quanto è
strettamente legati alle istruzioni della CPU, quindi poco
naturale per l’uomo.
LINGUAGGI DI ALTO LIVELLO
Fortunatamente, per facilitare l’implementazione degli algoritmi,
a partire dalla metà degli anni ’50, sono stati creati anche dei
linguaggi di programmazione più evoluti, più simili al linguaggio
umano, e non legati all’architettura dell’elaboratore sul quale
vengono utilizzati. Tali linguaggi si dicono di alto livello.
Tali linguaggi devono essere convertiti in linguaggio macchina
affinché la cpu possa eseguirli. Tuttavia, essendo le istruzioni di
questi linguaggi molto potenti e simili al linguaggio umano, a
ognuna corrispondono molte istruzioni in linguaggio
macchina.
CALCOLO DEL MCD IN PASCAL
Questo programma, scritto nel linguaggio ad alto livello Pascal viene
trasformato, grazie al COMPILATORE, in linguaggio macchina.
Si ottiene così un FILE ESEGUIBILE (estensione .EXE nei sistemi windows)
formato da migliaia di istruzioni direttamente comprensibili per la CPU.
program CalcoloMCD(input,output);
var VAL1,VAL2,RESTO:long;
function Scambia(var V1, V2:long);
var VTMP: long;
begin
VTMP:=V1;
V1:=V2;
V2:=VTMP
end;
begin (* main *)
readln(V1);
readln(V2);
if (V1<V2) then Scambia(V1,V2);
RESTO:= V1 mod V2;
while RESTO<>0 do
begin
V1:=V2;
V2:=RESTO;
RESTO:=V1 mod V2
end;
writeln(‘Il MCD è ‘,V2)
end.
Filosofie di utilizzo del Software (1)

Proprietario – È software messo a disposizione a pagamento. Al
momento dell’acquisto NON si dispone della proprietà software
acquistato, ma solo della licenza ad usarlo, sotto le condizioni
indicate dal produttore. La licenza più diffusa per questo tipo di
sofware è la EULA (End User License Agreement)

Demoware: È una versione dimostrativa del software a pagamento:
permette di valutare il software ma non di usarlo in modo proficuo e
continuativo, infatti normalmente prevede la disabilitazione delle
funzioni di stampa e salvataggio, un numero massimo di utilizzi, o un
tempo massimo di utilizzo giornaliero (es. 10 minuti).

Shareware - È software reso disponibile gratuitamente per un breve
periodo (per consentire delle valutazioni). A conclusione di tale lasso
temporale, sarà necessario corrispondere una somma in denaro per
proseguirne l’utilizzo. Una volta pagato e registrato, sono spesso
rese disponibili funzionalità aggiuntive non incluse nella versione di
valutazione.
Filosofie di utilizzo del Software (2)




Adware: È software che prevede delle sezioni pubblicitarie
inamovibili. In tal modo è gratuito per l’utilizzatore, ma lo sviluppatore
è pagato dallo sponsor.
Freeware - È software reso disponibile l’utilizzo gratuitamente dal
produttore, ma non è liberamente riutilizzabile, e non sono resi
disponibili i codici sorgenti.
Pubblico Dominio – È un software gratuito che non prevede alcun
tipo di licenza, pertanto, mancando chi può difenderlo, chiunque può
riuscire ad accamparvi dei diritti, e qualsiasi copia o variante
potrebbe non essere più gratuita.
CopyLeft – È software gratutito, ma protetto da una licenza che
difende il diritto d’autore e la sua volontà di mantenere libera la sua
opera. Il copyleft impedisce che chi ridistribuisce il software (originale
o
modificato) possa aggiungere delle restrizioni ulteriori. Un
esempio di questo tipo di licenza è GNU-GPL.
Scarica

il_software