Sei sulla pagina 1di 30

Introduzione all'informatica

Di Michele
INFORMATICA

● INFORMAZIONE+AUTOMATICA
● attività di progettazione e utilizzo di macchine in grado di
trattare le informazioni in modo automatico;
● oggi il concetto si è esteso anche alla COMUNICAZIONE e
si parla di ICT (Information Communication Technology)

il computer quindi oggi è una macchina per:


· Scrivere programmi (PROGRAMMAZIONE)
· Usare programmi scritti da terzi (ELABORAZIONE, OFFICE AUTOMATION)
· Trasmettere informazioni (COMUNICAZIONE: Internet, e-mail, reti…)
INFORMAZIONE

● tutto ciò che possiede un significato per l’uomo e che viene


conservato (supporti di memorizzazione) in vista di una
utilità immediata o futura per essere comunicato.
● La comunicazione delle informazioni richiede l’esistenza di
regole comuni all’emittente e al ricevente (CODICE) in base
al quale le informazioni vengono trasformate per essere
comprese dal ricevente (esempi: lingua italiana, lingua
inglese, codice morse, codice stradale…);
INFORMAZIONE

● Le regole per la comunicazione sono:


– CODICE della trasmissione: regole con cui viene
trasformato il messaggio prima di essere inviato
(es. bit)
– TECNICA di trasmissione: modi e strumenti con cui
effettuare la trasmissione (canali)
– PROTOCOLLO di trasmissione: regole che
permettono lo scambio ordinato e corretto delle
informazioni (es. passo, passo e chiudo,
ricevuto…)
ELABORAZIONE

● è il trattamento dei dati per ottenere informazioni, a cui


seguirà la comunicazione delle informazioni stesse
DATO

● descrive un aspetto elementare della realtà (l’informazione è


un insieme di dati elaborati), non ulteriormente
scomponibile; deve avere:
● IDENTIFICATORE o NOME (es. data di nascita,
cognome…)
● TIPO o FORMATO e eventuale DIMENSIONE (ES.
22/02/65 oppure 22 febb. 1965 opp. 22 febbraio 65…)
● VALORE o CONTENUTO
DATO

● Un dato può essere:


– PRIMITIVO (esiste già in questa forma)
– DERIVATO o di RIFERIMENTO (definito dal
programmatore)
● Inoltre può essere:
– SEMPLICE: non ulteriormente scomponibile (es. un
voto)
– STRUTTURATO: un insieme di valori organizzati
secondo certe regole (es. array di voti, file…)
DATO

● In base al contenuto avremo dati (primitivi o predefiniti nel


linguaggio):
– NUMERICI: reali e interi (float e int)
– ALFABETICI/ALFANUMERICI: caratteri e “stringhe”
– BOOLEANI: che possono assumere solo due stati;
acceso/spento, vero/falso; true/false, 0/1 (int)
● In base alla permanenza del contenuto (dato come
CONTENITORE) avremo:
– COSTANTI
– VARIABILI
DATO

● In base al ruolo svolto durante l'elaborazione, possono


essere:
● DATI DI INPUT: necessari in ingresso per ottenere nuove
informazioni attraverso una elaborazione (es. i coefficienti di
una equazione
● DATI OUTPUT: risultati dell’elaborazione (es. radici
dell’equazione)
● DATI DI LAVORO: dati intermedi dell’elaborazione non
comunicati in uscita (es. discriminante dell’equazione di
secondo grado)
SISTEMA

● insieme di elementi anche diversi che interagiscono tra loro


in modo dinamico per raggiungere un fine;
● ad esempio:
● SISTEMA DI ELABORAZIONE (costituito da HW+SW di
base e applicativo)
● SISTEMA DI NUMERAZIONE
● SISTEMA OPERATIVO…
PROCESSO

● insieme di operazioni da svolgere in sequenza e dati da


elaborare per ottenere un risultato;
● avviene nel tempo, in modo dinamico (svolgimento di una
verifica, processo di lavaggio, processo di elaborazione)
PROCESSO

● insieme di operazioni da svolgere in sequenza e dati da


elaborare per ottenere un risultato;
● avviene nel tempo, in modo dinamico (svolgimento di una
verifica, processo di lavaggio, processo di elaborazione)
PROCESSORE

● esecutore del processo, che causa l’evoluzione del


processo
– studente che svolge la verifica
– il motore della lavatrice
– la CPU
PROGRAMMA

● insieme di istruzioni da svolgere in un processo di


elaborazione;
● è una descrizione statica delle operazioni da svolgere in un
processo
– fasi del compito
– istruzioni da impostare sulla lavatrice
– righe di codice di un programma…
SOFTWARE

● insieme di programmi che fanno funzionare il computer e


che permettono di svolgere attività specifiche; si divide in:
– SW DI BASE: SISTEMA OPERATIVO (a linea di comando
come DOS, o GUI o WIMP o USER FRIENDLY come
Windows…) e PROGRAMMI DI UTILITA’ (editor di test,
format, scandisk, defrag…)
– SW APPLICATIVO:
APPLICATIVO APPLICAZIONI (di ufficio, gestionali,
industriali…) e TOOLS (CALCOLATRICE…) per svolgere
compiti particolari
– Tra i due si collocano i LINGUAGGI DI PROGRAMMAZIONE,
che consentono di scrivere i programmi
PROGRAMMATORE

● è colui che scrive i programmi, attraverso i quali consente


alla macchina di compire delle operazioni
UTENTE

● è colui che utilizza i programmi scritti dal programmatore


PROGRAMMARE: LA METODOLOGIA DI LAVORO
DAL PROBLEMA AL PROGRAMMA

1) analisi del problema: si considera il problema in esame e si


individuano i DATI DI INPUT, DI OUTPUT e di LAVORO (eventuali),
eventuali controlli e situazioni critiche di cui tenere conto
2) stesura dell’algoritmo che può essere scritto con diagramma a blocchi
o pseudo-codice
3) implementazione del corrispondente programma con un linguaggio di
programmazione (editazione, compilazione, link, run): l'algoritmo viene
"tradotto" usando un opportuno linguaggio
4) esecuzione e testing (debug) per individuare ERRORI GRAMMATICO-
SINTATTICI o LOGICI; eventuale rilascio della versione beta del
programma
5) documentazione (durante tutto il lavoro): consiste nel tenere traccia del
lavoro svolto per porter apportare modifiche e/o miglioramenti al
sotfware realizzato
PROGRAMMA E CATENA DI PROGRAMMAZIONE
PROGRAMMAZIONE STRUTTURATA

● è la progettazione, realizzazione e collaudo di un programma costituito


da istruzioni organizzate in strutture di controllo:
– istruzioni in SEQUENZA, che vengono eseguite una di seguito
all’altra
– istruzioni in ALTERNATIVA, in cui al verificarsi di una
condizione viene eseguita una istruzione oppure un’altra
– istruzioni in RIPETIZIONE (o cicliche o iterative), che vengono
eseguite più volte in base al valore di verità della condizione
di controllo del ciclo
● Le strutture di controllo servono a controllare il precorso all’interno del
procedimento risolutivo per ottenere i risultati desiderati.
TEOREMA DI BHOM-JACOPINI

● Ogni algoritmo può essere scritto usando solo tre strutture di


controllo, senza salti di istruzione:
– SEQUENZA
– SELEZIONE
– ITERAZIONE (CICLO)
● Cioè non devono esistere i cosiddetti salti di istruzione
(goto).
LINGUAGGI DI PROGRAMMAZIONE

● L'elaboratore puo' eseguire solo programmi in linguaggio


macchina (binario)
● e' necessario tradurre l'algoritmo in una forma comprensibile
all'elaboratore
● Si usa un linguaggio di programmazione (simile al
linguaggio naturale, ma con precise regole sintattiche da
rispettare), che deve a sua volta contenere un apposito
programma che "traduce" le istruzioni del linguaggio in
istruzioni in linguaggio macchina.
● I programmi che effettuano questa "traduzione" possono
infatti essere ASSEMBLATORI, TRADUTTORI,
COMPILATORI e INTERPRETI.
LINGUAGGI DI PROGRAMMAZIONE

● I linguaggi di programmazione si dividono in:


● A)- LINGUAGGI DI BASSO LIVELLO (o ASSEMBLER):
sono linguaggi piu' vicini all'elaboratore e al suo
funzionamento; rendono piu' veloce l'esecuzione del
programma, ma sono piu' difficili da usare
● B) LINGUAGGI DI ALTO LIVELLO (o EVOLUTI): sono piu'
vicini al problema e permettono di descrivere la soluzione in
termini piu' vicini alla descrizione verbale; sono piu' facili da
usare anche se rendono piu' lenta l'esecuzione del
programma.
LINGUAGGI DI PROGRAMMAZIONE

● Il programma "traduttore" (che traduce il programma


sorgente, scritto dal programmatore, in programma
eseguibile) si chiama ASSEMBLATORE o TRADUTTORE
nel caso dei linguaggi assembler, e COMPILATORE o
INTERPRETE nel caso dei linguaggi evoluti.
COMPILATORE

● e' un programma che traduce il programma sorgente in linguaggio


macchina (cioe' in programma oggetto, il risultato della compilazione); la
compilazione puo' avvenire solo se il sorgente non presenta errori
formali (cioe' ortografici, sintattici o lessicali).
● La compilazione deve essere seguita dall'operazione di linking
(collegamento) attraverso un programma detto linker (collegatore). Tale
operazione consiste nell'aggiungere al programma le istruzioni relative
alle procedure esterne usate (es. programmi di sistema, di libreria, uso
di periferiche ecc.); il risultato di tale operazione e' il programma
eseguibile.
● Normalmente la compilazione non e' in grado di rilevare errori logici,
cioe' riguardante la correttezza dell'algoritmo, ne' errori che possono
verificarsi nel corso dell'esecuzione del programma (Runtime erors);
questi vanno rilevati attraverso opportune prove di esecuzione.
INTERPRETE

● trasforma il programma sorgente in linguaggio macchina una istruzione


per volta, facendola eseguire subito dopo; eventuali errori lessicali e
sintattici vengono rilevati e segnalati solo quando l'istruzione errata
viene tradotta e causano l'interruzione dell'esecuzione; cioe' l'interprete
esamina frase per frase il programma in linguaggio simbolico.
● Lo svantaggio e' la maggior lentezza nell'esecuzione del programma
rispetto al compilatore, perche' ogni volta che si esegue il programma le
istruzioni devono essere ritradotte e cio' causa un rallentamento
nell'esecuzione rispetto al caso in cui il programma fosse stato
compilato.
● Il vantaggio è la “portabilità” del programma che può essere eseguito su
macchine diverse con sistemi operativi diversi, in quanto il codice
macchina viene generato ogni volta.
ASSEMBLATORE

● programma, praticamente con le stesse funzioni del


compilatore, che permette di tradurre in linguaggio
macchina un programma scritto con linguaggio assembler
CENNI ALL’EVOLUZIONE DEI LINGUAGGI DI
PROGRAMMAZIONE

● 1ª GENERAZIONE: linguaggi macchina. La programmazione avviene in


codice binario ed e' estremamente complessa a causa sia della
difficolta' di traduzione, con una grande facilita' di errore, sia della
necessita' di esprimere ogni operando come indirizzo effettivo di
memoria.
● 2ª GENERAZIONE: linguaggi assemblativi. Sostituiscono ai codici
operativi in cifre binarie dei simboli mnemonici e traducono le variabili in
modo simbolico, lasciando al programma assemblatore il compito di
stabilire gli indirizzi affettivi di memoria; rimane comunque la
corrispondenza biunivoca tra le istruzioni in linguaggio macchina e
assembler: ogni operazione deve essere descritta in termini di
operazioni elementari eseguibili dal computer, quindi e' necessaria una
buona conoscenza del processore utilizzato.
● 3ª GENERAZIONE: linguaggi ad alto livello. Offrono
istruzioni complesse che permettono di descrivere la
soluzione del problema in termini piu' vicini al linguaggio
naturale (di questi alcuni sono orientati ad applicazioni
scientifiche e generali, come il C, Pascal, Visual Basic, altri
alle applicazioni gestionali, come il COBOL e il Clipper).
● 4ª GENERAZIONE: linguaggi orientati a problemi particolari.
Ad esempio i linguaggi per la gestione e l’interrogazione di
database.
● 5ª GENERAZIONE: linguaggi orientati agli oggetti e agli
eventi. (Java, Visual basic, C++, ecc.)

Potrebbero piacerti anche