fondamenti di informatica
parte 2
appunti per il D.U. in Ingegneria
Informatica, di Telecomunicazioni
e di Meccanica, a.a. 2000-2001
di
anna maria carminelli gregori
fondamenti di informatica 1 parte
2 D.U.
1
Evoluzione dei S.O.(1970-98)
Da Sistemi a lotti (Batch) a interattivi;
mono-utente mono-programmato;
DOS
“
“
multi_programmato;
Windows 3.x

molti utenti contemporanei;

multi_programmato o
Windows-NT,

multi_tasking e
MacOs…

di rete;
Unix …VM ….
Nota !!! Altro tipo di Sistemi operativi:
S.O.“real_time”: tempo di reazione determinato da
un evento esterno (per es. l’ attivazione di un
telescopio).
fondamenti di informatica 1 parte
2 D.U.
2
S.O. mono & multiprogrammato:
I Sistemi Operativi sono mono o multi task cioe’
tali da da poter eseguire un solo (mono) o piu’
programmi in apparente contemporaneita’.
I S.O. multi task sono suddivisi in multiutenti e
monoutente.
I S.O. multi task e monoutente danno all’utente
la possibilita’ di effettuare piu’ funzioni;
Nei S.O. multi task e multiutenti il meccanismo
puo’ essere applicato a +utenti in apparente
contemporaneita’.
fondamenti di informatica 1 parte
2 D.U.
3
Significato di S.O. multiutente
& multiprogrammato:
(multiprogrammato o multiprocesso o
multitasking) =>
multiutente: piu’ utenti possono lavorare sul
medesimo computer eseguendo in apparente
contemporaneita’ piu’ programmi: apparente
perche’ in realta’ esiste un’ articolazione
temporale (=>time sharing) tra i programmi;
multiprogrammato: ogni programma puo’
eseguire piu’ funzioni in contemporaneita’
fondamenti di informatica 1 parte
apparente.
2 D.U.
4
Subito 2 esempi
Con il Personal si usa il DOS e/o +spesso
Windows in modalita’ singolo utente;
nel Laboratorio di Informatica e’ usato
Windows_NT (NT=NeTwork) ossia un S.O.
che controlla una rete locale di E.E.
Come gia’ indicato, l’ utente usa uno degli
elaboratori connessi ad un E.E. chiamato
SERVER che gestisce la rete locale e
condivide tra tutti il suo disco fisso, suddiviso
in piu’ partizioni chiamate E: , S: , H: (vedere
denominazionifondamenti
in DOS,
+oltre).
di informatica 1 parte
2 D.U.
5
Laboratorio ed uso della rete
I programmi che lo studente (=utente ) vuole
usare non sono residenti sulla macchina locale ,
o CLIENT, ma sul disco rigido condiviso dal
Server con tutti gli E.E. del Laboratorio.
La connessione al Server avviene tramite
accesso con username e password chiesti all’
avvio di ogni E.E. locale: la loro mancanza
inibisce l’ accesso ai programmi.
 … ma una volta connessi il modo di lavorare e’ simile a quello
su un E.E. non condiviso e allo studente sembra di essere l ’
fondamenti di informatica 1 parte
unico utilizzatore.
2 D.U.
6
username e password
saranno comunicati ad ogni studente del D.U.
PER ORA I LORO VALORI PROVVISORI
sono: username: fond;
password: 300999
tutto in minuscolo perche’ Windows e’
“sensitivo” ossia conosce la differenza tra
minusolo e maiuscolo !
Da oggi, 07/10/99 sono in distribuzione le
password per le matricole presso il lab.
nettuno ex aula G viola
I nuovi username & password personali
abilitano ad usare anche in scrittura H:
partizione del disco del Server per gli studenti:
qui si possono fondamenti
creare
i direttori objexe, source
di informatica 1 parte
2 D.U.
7
….
username & password
personali
abilitano ogni studente ad accedere al disco del
Server (partizioni E: S: in lettura, partizione H:
in lettura/scrittura);
lo stud. puo’ usare tutti i programmi registrati
in E: S: (per es. tc per compilare programmi in
C++ cfr. modalita’ d’uso del C++ piu’ avanti);
NON puo’ invece registrare nulla su E: S:
(SICUREZZA !) ma solo su H: partizione del
disco fisso del Server per gli studenti, dove puo’
registrare i suoi programmi in alternativa al
floppy personale o a C:\temp.
fondamenti di informatica 1 parte
2 D.U.
8
S.O. multi - utente e
multi_tasking
Funzioni:










eseguire i comandi utenti;
gestire Input/output e file;
segnalare errori;
assegnare la CPU ad ogni progr.-utente per un tempuscolo con
apparente contemporaneita’ di
esecuzione (compito Scheduler);
fornire i servizi richiesti dalla rete;
assicurare sicurezza e privatezza
informazioni del singolo utente
e del sistema ...
fondamenti di informatica 1 parte
2 D.U.
9
S.O. mono - utente e
mono_tasking (DOS)
Funzione: esecuzione dei comandi utenti;

gestione Input/output e file;

segnalazione errori.
E’ caricato all’ accensione dal BOOTSTRAP
nella parte alta (zona convenzionale) della
RAM ove resta fino alla fine sessione
(permanentemente sta nella ROM e/o
su disco).
E’ TUTTORA fondamentale: Windows vi si
“appoggia” ! =>fondamenti
seguedi informatica
una sua
sintesi.
1 parte
2 D.U.
10
Fasi di caricamento del DOS
All’ accensione: RAM e’ vergine, ROM contiene:
_ il “caricatore” (BOOTSTRAP),
_ i programmi diagnostici per la verifica dell’
Hardware e dei perferici di I/O (BIOS= Basic
Input output System).
Tutto viene subito caricato nella RAM. Da qui il
BOOTSTRAP puo’ caricare dal disco nella zona
convenzionale della RAM quei programmi del
DOS che li’ risiederanno per tutta la sessione di
lavoro.
 NOTA: un programma per essere eseguito deve stare in RAM !
Parte fondamentale del DOS
Tra i programmi fondamentali ci sono:
COMMAND.COM
la shell del DOS ;
IO.SYS, MSDOS.SYS System_file & Kernel
nel senso gia’ indicato.
La parte del DOS non residente resta
generalmente su file del disco C: Da li’ i file
con i programmi (che “eseguono” i relativi
comandi-utente) vengono caricati in
C.M. (RAM) quando sono attivati.
fondamenti di informatica 1 parte
2 D.U.
12
Dos: caratteristiche
Il DOS tradizionale non puo’ gestire memoria
oltre l’ indirizzo 65536010=640 K:
per farlo ha bisogno di programmi speciali ossia
“driver” per gestire la memoria espansa e la
memoria estesa (oltre 1M).
A caricamento avvenuto il S.O. e’ pronto per
eseguire i comandi digitati da tastiera e/o
forniti in altro modo (per es. con file batch: cfr.
+oltre). Lo segnala
col “prompt” di sistema.
fondamenti di informatica 1 parte
2 D.U.
13
prompt & comandi del DOS
Ogni S.O. ha un suo proprio prompt che
appare quando il S.O. e’ pronto a rispondere
ai comandi dell’ utente che sono anch’ essi
propri del S.O. Come esempi il prompt e’:
per il DOS il nome del disco ove si trova la
parte non residente del DOS seguito da >
ossia per esempio C:>
per Windows il menu’ grafico che usa un
modello a finestra = metafora della
fondamenti di informatica 1 parte
scrivania.
2 D.U.
14
Il DOS non e’ sensitivo
Il DOS e’ un S.O. a comandi che si possono
scrivere in maiuscolo o minuscolo.
I comandi propri del DOS si trovano nei
manuali e nell’ help in linea: il loro formato e’
molto semplice ….
es. copy mio.c tuo.c -> effetto: il
contenuto del file mio.c e’ copiato nel file
tuo.c … ricoprendo ogni eventuale contenuto
precedente !!! ATTENZIONE !
fondamenti di informatica 1 parte
2 D.U.
15
Altri comandi interessanti
Per vedere una “mappa” della memoria RAM
dopo il caricamento del DOS si puo’ utilizzare il
comando MEM da solo o con le opzioni che si
desiderano (vedi Help MEM)
Per vedere una “mappa” del disco C: si puo’
dare il comando DIR C:
Per visualizzare un file di tipo testo che si
chiama TEST.TXT c’ e’ TYPE TEST.TXT ecc.
Nota: in ogni comando sono usabili i caratteri
jolly (* e ?) perfondamenti
indicare
caratteri sconosciuti.
di informatica 1 parte
2 D.U.
16
Cfr. help.
e Windows ?
Viene caricato col DOS e si presenta con i suoi
menu’ e le sue cartelle che appaiono su una
finestra del display a simulare le pile di pratiche
allineate sul piano della scrivania. Come le pile
di pratiche sono da aprire, cosi’ le cartelle si
interrogano ponendosi con la freccia del mouse
su ciascuna di esse e facendo clik col mouse. Il
mouse si usa su qualunque altra immagine
presente: per es. su E.E. e sui dischi di E.E.
In questo modello a finestra, dove il Desk-Top
rappresenta la scrivania, i file (=pratiche) sono
rappresentati dafondamenti
icone,
i direttori da cartelle.
di informatica 1 parte
2 D.U.
17
e Windows95_NT ?
Come detto, e’ un S.O. per le reti di computer.
Il modello della rete usata nel Lab. e’ del tipo
Client-Server con un E.E. (=Server) adibito a
fornire i Servizi richiesti dagli altri E.E.(=Client).
Il modello Client-Server (con piu’ Server e tanti
Client) e’ molto diffuso ed e’ usato nella rete
Internet e nelle sue sottoreti.
Internet e’ nota per la diffusione di W.W.W.
= World Wide Web => la “ragnatela tessuta”
sulla rete per la gestione di informazioni che
stanno nei vari E.E. della rete e per comunicare
usano il protocollo
(=insieme
fondamenti
di informatica 1 partedi regole) TCP/IP.
2 D.U.
18
Informazione e Ipertesti
Con E.E. si puo’ fruire di informazioni non solo
in modo sequenziale, ma navigando tra diverse
aree di un disco, in particolare di un disco
Ottico (Compact Disk o C.D.) se si dispone del
suo lettore. Come? Per es. usando gli ipertesti.
Definizione di ipertesto: documento non lineare
in cui l’ informazione non e’ solo sequenziale,
ma sparpagliata. I concetti sono collegati tra
loro con collegamenti (=link logici) che
permettono di saltare tra le pagine seguendo il
percorso logico piu’ interessante.
RICORDARE l’ uso dei dizionari !
fondamenti di informatica 1 parte
2 D.U.
19
e l’ ipermedia ?
Dall’ ipertesto si passa all’ ipermedia quando i
collegamenti non riguardano soltanto
informazioni testuali ma immagini, grafica in
movimento, musica,... dati multimediali che
possono trovarsi anche su C.D.
Quando l’ informazione non risiede su un C.D.
ma e’ diffusa in rete ossia richiede di navigare
o passare da un E.E. ad un altro, si parla di
multimedialita’ in rete. L’ accesso a informazioni
in rete richiede software particolare per
tener conto dei link logici oltre a quelli fisici.
fondamenti di informatica 1 parte
2 D.U.
20
W.W.W. ( = Web) : un cenno
E’ software installato su appositi Server (Server
Web) che facilita sia la comunicazione tra gli
E.E. di Internet sia la gestione di documenti
ipermediali (informazioni testuali e immagini,
suoni, collegati tra loro) pubblicati in Internet.
I documenti sono scritti spesso in HTML
=Hyper Text Markup Language, che permette
una descrizione del loro formato (oggi e’ usato
anche JAVA, linguaggio O.O. come C++). La
descrizione e’ interpretata e presentata dai
browser (opportuni programmi posti nei vari
Client come per fondamenti
es. Netscape)
di informatica 1 parte detti Client_Web.
2 D.U.
21
Con HTML e’ possibile:
descrivere un documento e collegarlo ad altri
documenti locali o remoti. Il collegamento e’
realizzato con frasi del linguaggio HTML che
specificano il nome del documento e la sua
locazione indicata come URL (Uniform
Resource Locator). Nella URL sono indicati:
 il protocollo (insieme di regole) usato per accedere
a documenti Web, http:/ (hyper text transfer
protocol) che utilizza i servizi di trasmissione
standard tipici di Internet forniti da TCP/IP;
 la locazione, indicata con:
 /nome del Server_Web/directory/nome_file
fondamenti di informatica 1 parte
2 D.U.
22
E questa specifica della URL
e’ usata anche nei vari collegamenti ai Siti
Internet lavorando col Client_Web
disponibile, per es. Netscape.
Su/con Netscape si possono fare
esperimenti, prove collegandosi a URL note.
Per es. http://home.netscape.com/
http://www.univ.trieste.it/servizi /



…ecc.
ricerca
didattica
borse
fondamenti di informatica 1 parte
2 D.U.
23
File
Concettualmente: file = archivio di dati che
varia nel tempo. E’ possibile aggregare i dati
(=informazioni) in registrazioni = Record.
Accesso informazioni: sequenziale / diretto
es. libro = successione di pagine
accesso sequenziale alle info: pagina dopo pagina
 “
diretto: occorre l’ indice inform. - pagina
Supporti: dischi (possibili accesso sequen.-diretto)
nastri ( bobine) (possibile solo accesso sequenz.)
fondamenti di informatica 1 parte
2 D.U.
24
File & programmi
I file possono contenere anche programmi: in
questo caso il contenuto e’ una particolare
successione di informazioni .Queste
concettualmente sono comandi per E.E. e
quindi devono essere lette ed interpretate una
dopo l’ altra, sequenzialmente.
In generale pero’ parlando di file si intende
un archivio di informazioni come per es.: dati
anagrafici di persone o indirizzi o classifiche
finanziarie... fondamenti di informatica 1 parte
2 D.U.
25
Dimensioni File intesi in
senso generale
…. e la C.M. ? Concettualmente: file(= archivio)
non “STA” in C.M. ma in Memoria di Massa. In
C.M. viene LETTO o CREATO e/o modificato un
record per volta e quindi REGISTRATO su
Memoria di Massa col nome scelto.
Dischi e nastri= Memoria di massa o periferica
 Es. Dimensione file: se K=1024= 210, M=1048576= 220 ,
1 pag. libro
 3 Kbyte_____________________
1 “
giornale senza foto  50 Kbyte ____________________
1 quotidiano
 2 Mbyte ____________________
1 immagine
 1 Mbyte ……...
fondamenti di informatica 1 parte
2 D.U.
26
Disco (Hard, Floppy, C.D.) e
Direttori
Concettualmente: disco = deposito di informazioni. Il
S.O. con il File System fornisce all’ utente una
visione logica dei dischi (indipendente dalla struttura
hardware) basata sui concetti di File e Cataloghi di
nomi di file = Direttori o Cartelle.
I file su ogni disco sono presentati all’ utente coi loro
nomi raggruppati in Direttori/Cartelle organizzati in
modo gerarchico con una struttura ad “albero”.
La struttura gerarchica appare nel direttorio di ogni
disco: ogni direttorio contiene l’ elenco dei file e dei
suoi (sotto)direttori (cfr. tra 2 diapositive).
fondamenti di informatica 1 parte
2 D.U.
27
Denominazioni in DOS
Nomi di disco: A: o B: (unita’ floppy); D: (Compact);
C: (hard) anche divisibile in partizioni ( E: S: H: ...),
Nomi di file: 2 stringhe prima e seconda separate
da un carattere PUNTO.
1 n.o caratteri prima  8
1 n.o caratteri seconda  3 = estensione che
caratterizza il tipo del file: es. prova.c -> prg. in C;
libro.txt -> testo; prova.exe-> prg. eseguibile ...
Nomi di Direttori: 1 stringa di 8 caratteri al piu’.
Per creare un nuovo direttorio c’e’ il comando MD
si distrugge un direttorio VUOTO col “
RD
si passa da un dirett. ad un altro col “
CD
con M=Make, R=Remove,
C=Change.
Segue esem.
fondamenti di informatica
1 parte
2 D.U.
28
Struttura logica ad albero e
md = make directory (in DOS)

“ROOT (\)”
\ e’ il diret. radice
 ____|____ in \ si possono dare i comandi
 |
|
md anna md lola
 anna
lola
in anna si puo’ scrivere:
 __|______ |
md prg md tesi md mio
|
|
| pr.c ottenendo l’ albero a
prg tesi mio
sinistra dove in lola si ha

pr.c = file con un progr. in C,
che si puo’ visualizzare
con type C:\lola\pr.c
fondamenti di informatica 1 parte
2 D.U.
29
Percorsi in DOS
type C:\lola\pr.c e’ un esempio di come si
puo’ visualizzare un file posto nel disco C:
Segue un’ alternativa possibile nell’ ipotesi che
il file mio.txt stia nel disco C:\uno\due\ mio.txt
Con DOS e’ opportuno controllare in quale
disco e direttorio ci si trovi e da li’ spostarsi al
direttorio due dove c’ e’ mio.txt. Come ? Prima
digitare dir poi se si e’ nel direttorio D:\pippo
digitare C: per passare al disco C: poi con dir
verificare di essere in C:\ e da qui porsi in due
con cd\uno\due Un dir indichera’ mio.txt
fondamenti di informatica 1 parte
2 D.U.
30
La struttura gerarchica del
disco
appare anche nella rappresentazione
grafica di Windows che usa finestre
collegabili tra loro anche gerarchicamente.
In ogni finestra i direttori appaiono come
cartelle di un certo colore ed i file come
icone di forme e colori diversi secondo la
loro funzione. Per es. i testi scritti col Word
processor sono rappresentati con icone
contenenti una W; i programmi in C++ con
il simbolo di Windows; e cosi’ via.
fondamenti di informatica 1 parte
2 D.U.
31
Con Windows
nella situazione precedente del disco C: basta
porsi con la freccia del mouse e fare clik su
Risorse Computer: compare una finestra con
immagini del floppy A: del disco C: del video
… Si pone la freccia del mouse sul disco C:
Con un clik “si apre” il disco e appare una
finestra con la cartella uno dell’ esempio.
Basta porsi con la freccia del mouse e fare clik
sulla cartella uno: appare un’ altra finestra con
la cartella due. Facendo clik su questa si apre
un’ altra finestra con l’ icona del file mio.txt
fondamenti di informatica 1 parte
2 D.U.
32
… e poi ? Oltre al comando
type ?
Per visualizzare e/o cambiare il file mio.txt
sia che ci si trovi in DOS che in Windows
basta attivare un programma che ne permetta
la visualizzazione e modifica per es. un editor.
In DOS basta digitare edit e seguire le sue
indicazioni;
in Windows basta fare clik col mouse sul file o
sull’ icona di un editor e alla sua apertura
seguire le sue indicazioni.
fondamenti di informatica 1 parte
2 D.U.
33
Uso di dischi floppy
(dischetti) in ambiente DOS
Inizialmente il floppy e’ vergine. In DOS col
comando FORMAT A: si ottiene di formattare il
dischetto inserito nell’ unita’ A: (drive)
La formattazione e’ un’ operazione che fa
PERDERE ogni eventuale informazione
preesistente. Per un floppy si distingue in:
formattazione FISICA che divide il dischetto
in tracce e settori di 512 bytes ciascuno;
formattazione LOGICA che crea un’ area del
dischetto riservata
al DOS.
fondamenti di informatica 1 parte
2 D.U.
34
L’ area riservata
e’ suddivisa in 3 parti a partire da traccia e settore 0:
BOOT -> contiene il bootstrap (avviamento di DOS);
FAT -> File Allocation Table (Tabella di

disposizione dei file sui settori e

tracce del dischetto. E’ il raccordo

tra contenitore e contenuto ossia

“ settori e file: quali settori sono

pertinenti ad un dato file ?
DIRETTORIO-> catalogo dei file e direttori
fondamenti di informatica 1 parte
2 D.U.
35
Situazione attuale dei floppy
La forma oggi piu’ diffusa e’ quella di 3 e 1/2
pollici (diametro);
la densita’ di registrazione e’ generalmente alta
(H.D.= High Density indicata da un forellino in
alto a sinistra) e le registrazioni possono essere
realizzate sulle due facce (D.S. = Double Side);
un altro forellino in alto a destra indica invece
che il dischetto e’ protetto da operazioni di
registrazioni indesiderate: se il foro e’ chiuso da
una tacca movibile il floppy e’ registrabile.
fondamenti di informatica 1 parte
2 D.U.
36
e il disco rigido = hard disk =
disco fisso …?
La formattazione FISICA e’ realizzata dal
costruttore, mentre il comando FORMAT puo’
effettuarne la formattazione LOGICA con
conseguente PERDITA di ogni eventuale
informazione preesistente. MAI FARLO SENZA
PENSARCI ALMENO 3 VOLTE !!!
Il tempo richiesto per accedere ad un’
informazione del Disco Rigido e’  30ms
(millisecondi); per il floppy 10-20 volte di piu’.
fondamenti di informatica 1 parte
2 D.U.
37
e i dischi ottici ? i C.D.?
Sono depositi di informazioni piu’ lenti, ma con
capacita’ molto elevata ( 5Gbyte ed oltre);
esistono di vario tipo e necessitano di un lettore
apposito (con raggio laser a bassa energia);
i piu’ comuni vengono registrati =“masterizzati”
una sola volta usando uno strumento dotato di
raggio laser ad alta energia: diventano cosi’
memorie di massa aggiuntive, ma di tipo ROM;
I file su ogni C.D. sono presentati all’ utente
organizzati ad “albero” come accade per gli altri
dischi.
fondamenti di informatica 1 parte
2 D.U.
38
Creazione di file di tipo testo
Utilizzo di Editor = programma appartenente al
Software di base per comporre testi
(EDITING = operazioni di scrittura,
visualizzazione, cancellazione, modifica …)
editor attuali: a finestra; ogni ambiente di
sviluppo programmi (+oltre) e/o il S.O. ha un
suo editor che permette di comporre testi (vedi
Editor-DOS). RICORDARE: piu’ potente dell’
editor e’ il Word-processor = applicativo (gia’
visto) che permette tutte le operazioni
1 parte
tipografiche . fondamenti di2 informatica
D.U.
39
File (e programmi) batch
Con l’ editor si possono per esempio scrivere i
file con estensione bat abbreviazione di
batch=> successione di COMANDI per DOS
=> programma ….
I COMANDI sono eseguiti uno dopo l’ altro a
partire dal primo. Tra i comandi DOS tre sono
specifici di questi file batch: REM per porre
commenti, PAUSE per sospendere il
programma fino alla pressione di un tasto,
ECHO per visualizzare messaggi.
fondamenti di informatica 1 parte
2 D.U.
40
AUTOEXEC.BAT
e’ un tipico esempio di programma batch;
e’ il file che DOS dopo il suo caricamento in
C.M. (zona convenzionale di RAM) va a cercare
sul disco attivo (per es. il C:). Appena trovato,
AUTOEXEC.BAT e’ eseguito immediatamente,
un comando dopo l’ altro e produce tutte le
inizializzazioni e personalizzazioni che i suoi
comandi prevedono. Quindi il DOS si pone in
attesa di comandi da tastiera. Esaminare il
proprio AUTOEXEC.BAT... come ? Con editor
fondamenti di informatica 1 parte
2 D.U.
41
Parametri per programmi
batch (es. cp.bat)
Usando l’ editor (edit) c’ e’ la possibilita’ di
scrivere programmi batch di tipo parametrico
con simboli sostituibili.
Es. sia da copiare il file uno.c in uno.cpp; il file
sette.c in sette.cpp; etc. Si puo’ scrivere un
progr. batch di copia cosi’ fatto: copy %1 %2 e
porlo nel file cp.bat Poi per eseguirlo occorre
attivare il programma batch di copia una volta
dando: cp uno.c uno.cpp (uno.c sostituisce
%1, uno.cpp sostituisce %2); un’ altra volta
dando: cp sette.c sette.cpp (sette.c sostituisce
fondamenti di informatica 1 parte
2 D.U.
42
%1 etc.
programma in C, o in
Fortran, o in Pascal
Con l’editor si puo’ creare sul momento
qualunque sequenza di caratteri, anche un file
batch …. quindi anche un programma vero e
proprio in un linguaggio di programmazione
come il C ??
Risposta negativa: prima occorre avere il
suo PROGETTO CONCETTUALE, poi il suo
PROGETTO LOGICO e solo dopo si puo’
scrivere il PROGRAMMA ORIGINE o source
program.
fondamenti di informatica 1 parte
2 D.U.
43
Fasi di costruzione di ogni
prodotto software
PROGETTO CONCETTUALE: qui si devono
definire gli obiettivi, con quale algoritmo si
vogliono raggiungere, le motivazioni. Ossia
COSA, COME, PERCHE’.
PROGETTO LOGICO: la sua bozza con l’
algoritmo risolutivo.
PROGRAMMA ORIGINE (source program)
scritto nel linguaggio artificiale scelto
per es. in C.
fondamenti di informatica 1 parte
2 D.U.
44
Quale linguaggio artificiale ?
Di linguaggi artificiali ce ne sono migliaia: la
scelta va a quello che appare piu’ vicino ai
problemi da risolvere.
Per problemi scientifico-tecnici e’ adatto il
FORTRAN (da FORmulas TRANslator);
per privilegiare l’ aspetto didattico si usa il
Pascal (dal nome del filosofo Blaise Pascal);
“general purpose” e’ il linguaggio C (il S.O.
Unix e’ stato scritto in C);
il C++ e’ una versione del C orientata agli
oggetti paradigma di programmazione in
voga attualmente.
C++
nasce nel 1980.
fondamenti di Il
informatica
1 parte
2 D.U.
45
Programma: tipiche funzioni
svolte
Lettura dati (input);
Elaborazione dei dati (sequenziale, ciclica,
condizionale) e costruzione dei risultati;
Visualizzazione risultati (output).
… e senza la visualizzazione ?!? ASSurdita’: i
risultati resterebbero ignoti !
Le tipiche funzioni svolte possono essere
realizzate in parti (“moduli”) a se’ stanti.
fondamenti di informatica 1 parte
2 D.U.
46
Ma i dati ?
La funzione che li legge deve poterli
memorizzare: per questo il programma deve
“prenotare” posizioni di C.M.
Lo fa usando costrutti ed entita’ del linguaggio
dette variabili semplici o composte come
vettori e matrici, (come in matematica), piu’ in
generale “strutture di dati”, per identificare,
contenere e trasferire le informazioni lette. Le
stesse entita’ potranno servire per la loro
elaborazione e quindi la loro visualizzazione.
fondamenti di informatica 1 parte
2 D.U.
47
Processo di traduzione
Una volta scritto il source program nel
linguaggio artificiale scelto (per es. il C)
occorre: registrarlo in un file (per es. uno.c) ,
e attivare il traduttore che fa la traduzione da
C a linguaggio della macchina (di cui alcuni
esempi sono in parte 5). I traduttori si
distinguono in:
INTERPRETI, COMPILATORI, ASSEMBLATORI,
tutti programmi di utilita’ del Software di base.
fondamenti di informatica 1 parte
2 D.U.
48
Tipi di Traduttori
Interprete: tipico e’ quello della shell di
ogni S.O. che interpreta e manda in
esecuzione i comandi al S.O. digitati dall’
utente: non produce alcuna traduzione
permanente in linguaggio della macchina.
Es. in DOS: Dir A:

Type miofile.txt
Dir e Type: interpretati e subito eseguiti
fondamenti di informatica 1 parte
2 D.U.
49
Software di base:
Editor, Interpreti, compilatori, assemblatori,
linker ...
Compilatore: interpreta e traduce nel
linguaggio macchina le frasi di un linguaggio
artificiale ad alto livello che compongono un
programma: produce un file binario che e’ l’
equivalente del programma origine (source),
ma nel linguaggio di E.E.
Assemblatore: analogo al Compilatore, ma
il linguaggio artificiale e’ elementare, con
struttura simile al linguaggio della macchina.
La funzione delfondamenti
linker
appare qui di seguito.
di informatica 1 parte
2 D.U.
50
Fasi del processo traduzioneesecuzione
Dopo la stesura con l’Editor del SourceProgram,
1) si attiva il compilatore (fase di compilazione)
che traduce il Source Program nel Programma
Oggetto e lo pone in un file con estensione .obj
che e’ in linguaggio della macchina ma non
ancora eseguibile (per es. non ha le librerie di
lettura_dati/scrittura tipiche del linguaggio);
2) Il Linker completa il processo di traduzione
effettuando il collegamento tra i moduli o
componenti (“fase di linkaggio”): effettua,per
es., il collegamento con le librerie tipiche del
linguaggio e produce un programma eseguibile
(con estensione .exe).
3) Dopo questo fondamenti
si passa
alla
fase di esecuzione.
di informatica
1 parte
2 D.U.
51
Ambiente amichevole
I compilatori attuali (sia del linguaggio C, C++,
che del Fortran) forniscono un ambiente “User
Friendly” dotato di Editor, compilatore, loader
ossia un caricatore, linker, interfaccia
amichevole: cio’ rende automatiche le 3 fasi :
vedere esempi in C e in C++.
Si e’ tentati di scrivere direttamente il Source
Program …
ma e’ una strategia perdente !
fondamenti di informatica 1 parte
2 D.U.
52
Strategia corretta
Il RISCHIO e’ di essere tanto coinvolti
dalle regole linguistiche (sintattiche e
grammaticali) da dimenticare gli obiettivi
desiderati.
PRIMA di usare il linguaggio si deve
prepararne il PROGETTO.
…. COME ??
fondamenti di informatica 1 parte
2 D.U.
53
Il progetto ed il suo
linguaggio: possibilita’
Il progetto deve contenere cio’ che si vuole
ottenere (gli obiettivi) e come fare ad
ottenerlo. Per esprimerlo le alternative sono:
a) si puo’ usare un linguaggio simile a quello
parlato (PSEUDO-CODICE), ma piu’ sintetico;
b) si puo’ usare un linguaggio grafico
producendo uno schema a blocchi
(diagramma di flusso, flow-chart) delle
operazioni che devono essere eseguite.
Segue esempio.
fondamenti di informatica 1 parte
2 D.U.
54
Esempio progettino per
visualizzare l’ ASCII code
 a) Si vuole ottenere il valore numerico Num (ASCII code)
di un carattere CAR della tastiera diverso da 0; se 0
Stop.
 b) Legenda: I=Inizio; S=Stop; T=True; F=False.
I
CAR
F
CAR=0?
Num=(int)CAR
Num
T
S
55
I diagrammi di flusso
usano simboli semplici: il rettangolo e’

tipico dell’ elaborazione; il rombo di

decisioni; il parallelogramma,

di letture; l’output e’ il seguente:

altri simboli sono: cerchi, frecce ...
fondamenti di informatica 1 parte
2 D.U.
56
Dal Progetto al Programma
Come scrivere questo programma in C oC++ ?
(Il Source Program ottenuto e’ leggipri.cpp in
program1, ma prima di esaminarlo ecco qualche idea.)
Ogni prg. in C ed in C++ e’ composto da funzioni
scritte consecutivamente; ogni funzione C e C++ ha
la forma seguente dove i simboli < > racchiudono
frasi esplicative e non appartengono al C o al C++.
<intestazione della funzione>
{
 <corpo della funzione racchiuso dalle {}>
fondamenti di informatica 1 parte
}
2 D.U.
57
Il main
Tra le funzioni C e C++ esiste la funzione principe: il
main che rappresenta il “programma principale” punto
di innesco di ogni programma C e C++.
Come ogni funzione matematica ha un nome ed
argomenti racchiusi tra parentesi tonde (es. log(x))
cosi’ ogni funzione C, C++ ha un nome: se gli
argomenti mancano le parentesi restano: es. main()
Il corpo del main deve contenere l’ attivazione di tutte
quelle funzioni che portano a raggiungere gli obiettivi
posti nel progetto: i risultati desiderati.
Il corpo di ogni funzione contiene il proprio
fondamenti di informatica 1 parte
ambiente...
2 D.U.
58
Corpo delle Funzioni
Piu’ in dettaglio: il corpo di ogni funzione C ha
frasi dichiarative ed esecutive, queste ultime col
significato di istruzioni, comandi. Se
dichiarazioni e comandi mancano il corpo e’
vuoto.
Il minimo programma C e’:
main()
{
}
fondamenti di informatica 1 parte
2 D.U.
59
In C++
il minimo programma e’:
main()
{
 return (0);
}
Il corpo e’ composto dalla sola frase return
che restituisce il controllo al S.O. con lo
zero tra parentesi come segnale di fine
corretta.
fondamenti di informatica 1 parte
2 D.U.
60
Commenti
(vedere commenti.c)
Per documentare un programma sono necessari
commenti che o sono racchiusi tra /* */ o
preceduti da // (solo col compilatore C++)
Es. main()
 /*questo C_program scritto da …in data ...*/
 /* su un IBM_compatibile con MS-DOS */
 /* non fa niente !*/
 {
 }
fondamenti di informatica 1 parte
2 D.U.
61
Corpo
Le frasi costituenti il corpo di ogni funzione
possono essere raggruppate per costituire
istruzioni composte. Ogni istruzione
composta e’ racchiusa in parentesi graffe e
costituisce un BLOCCO: vederne un esempio in
leggipri.c (file contenente il source ottenuto dal
progettino) e poi altri sempre in
E:/carmin/duinf2000/program1. Altri prg.
elementari da vedere subito, con le indicazioni
date di seguito, sono: commenti.c, comment1.c
hellow.c, hello.cfondamenti
… di informatica 1 parte
2 D.U.
62
C e C++
Come gia’ detto in questo corso sara’ usato il
C++ che e’ compatibile con il C “in basso”
(ossia per gli aspetti elementari). I concetti
fondamentali della Programmazione ad
Oggetti che caratterizzano il C++ (ed altri
linguaggi come il linguaggio JAVA) possono
essere introdotti successivamente. Il motivo
di cio’ sta nel fatto che l’ Oggetto puo essere
considerato come una generalizzaione di
strutture e sottoprogrammi (cfr. parte 3,4,5).
fondamenti di informatica 1 parte
2 D.U.
63
tc: compilatore del C++
Con username & password personali, dalla
shell del DOS, porsi in H: e attivare
S:\tc\bin\tc
Si apre la finestra del compilatore tc di C++.
Piu’ precisamente la finestra apre un ambiente
di sviluppo, nel senso che oltre al compilatore
del linguaggio ci sono altri strumenti come per
esempio l’ editor. Per utilizzarli occorre usare il
menu’ in alto che mostra alcune parole, tra cui
Option, File, Edit, Compile e Run.
fondamenti di informatica 1 parte
2 D.U.
64
Sul menu’ in alto
per prima cosa porsi col mouse sotto
Options, e sul menu’ che si apre fare clik
su Directories. Si apre una finestra con
le specifiche di compilazione: col mouse
controllare che:
sotto Include ci sia S:\tc\Include
sotto Library ci sia S:\tc\Lib
sotto Output ci sia C:\temp o H:
Se tali sono le specifiche poste, non
cambiarle ! fondamenti di informatica 1 parte
2 D.U.
65
Ancora :
per lavorare “meglio” si puo’ creare un
direttorio in H: chiamandolo SOURCE ove
copiare i propri file dal floppy personale con i
programmi origine da compilare. Per farlo
occorre dare in H:
md SOURCE e copiarci i programmi origine da
compilare (che pero’ a lavoro concluso devono essere
eliminati per non occupare troppo spazio su H:)
Fatto cio’ nelle specifiche di compilazione si
porra’ sotto Source
H:\SOURCE
fondamenti di informatica 1 parte
2 D.U.
66
L’ ambiente di sviluppo
Si utilizza ponendo il mouse su:
File per aprire/chiudere un file contenente un
programma origine gia’ registrato;
Edit per fare le operaz. di editing sul file
aperto;
Compile per compilare il prg. origine dal file
aperto ed eventualmente “linkarlo” con le
librerie richieste ottenendo il prg. eseguibile;
Run per fare eseguire il prg. eseguibile.
fondamenti di informatica 1 parte
2 D.U.
67
Leggipri.cpp
Aprire il programma da
E:/carmin/duinf2000/program1, esaminarlo
con l’editor, farlo compilare (Compile) e
girare (Run): questo comando provvedera’
prioritariamente (se non e’ stato gia’ fatto) al
“linkaggio” del programma oggetto con le
librerie usate (per es. di I/O ), producendo il
programma eseguibile di nome leggipri.exe.
Per eseguire +volte leggipri.exe si puo’ usare
+volte Run o passare alla Shell del Dos (dalla
finestra di File)fondamenti
e digitare
leggipri
+volte
...
di informatica 1 parte
2 D.U.
68
Iterazione
Questa ripetizione si e’ resa automatica con un
programma che la realizza, di nome ripeleg. Ma
quale sara’ il progetto di ripeleg.c ?
Mandando in esecuzione ripeleg.exe si nota la
ripetizione (=iterazione): per realizzare questo
tipo di procedimento occorre tornare a rifare le
operazioni gia’ fatte la prima volta fino a
quando e’ necessario;
per ripeleg occorre ripetere la lettura di CAR, la
sua conversione in Num e la visualizzazione di
entrambi fino a quando si introduce lo zero …
fondamenti di informatica 1 parte
ossia ...
2 D.U.
69
b) Legenda: I=Inizio; S=Stop;
T=True; F=False.

I
Ripeti=TRUE
S
Ripeti
F
T
CAR
CAR=0?
F
T
Num=(int)CAR
Num
Ripeti = FALSE
fondamenti di informatica 1 parte
2 D.U.
70
Visualizzazioni
All’ interno dei prgogrammi leggipri.c e
ripeleg.c e’ usata la frase di
scrittura/visualizzazione “printf”.
E’ l’ attivazione della funzione C per la
scrittura/visualizzazione resa disponibile
includendo l’ header file <stdio.h> che
contiene i prototipi delle funzioni di libreria
tipiche del linguaggio C per l’ Input/Output.
…e in C++ ?
fondamenti di informatica 1 parte
2 D.U.
71
Esempio in C++: Ciao.cpp
In C++ lo stesso risultato si ottiene:
con l’uso delle istruzioni di I/O del C++ ossia
per la visualizzazione (qui di una stringa di caratteri)
cout << “Buonasera” ;
e includendo l’ header file <iostream.h> della
libreria di I/O tipica di C++: vedere ciao.cpp
NOTA: l’ uso di ogni libreria e’ reso possibile
con la frase #include seguita dal nome del file
con le definizioni che il compilatore deve
conoscere perche’
la libreria sia utilizzabile.
fondamenti di informatica 1 parte
2 D.U.
72
Precompilatore
Le frasi come #include che iniziano col
simbolo # a colonna 1, non appartengono
al linguaggio C ne’ al C++: esse sono
direttive per il “precompilatore” o
“prepocessore” ossia un programma che
fa parte dei sistemi C e C++ e viene
attivato automaticamente prima della
compilazione.
 PERCHE’ ?
fondamenti di informatica 1 parte
2 D.U.
73
Caratteristica base di C e C++
e’ la velocita’ di compilazione: per questo i 2
compilatori devono essere brevi; per questo il
precompilatore li esenta da compiti pesanti
come:
definizione di costanti: #define tre 3
inclusione di testo sorgente che si trova nel file
chiamato mio.h (h sta per header):
#include <mio.h>
altro
fondamenti di informatica 1 parte
2 D.U.
74
Velocita’
Proprio per rendere il compilatore piu’ veloce il
C non ha funzioni prefabbricate al suo interno,
ma ha librerie, biblioteche di funzioni gia’ in
binario che stanno in S:\tc\Lib. Si tratta di
tanti tipi di funzioni: matematiche, grafiche, di
I/O … E’ compito del programmatore indicare
al precompilatore quali librerie intende usare. A
ogni tipo di libreria e’ associato un file header
contenente tutte le definizioni che il
compilatore deve conoscere per rendere usabile
la libreria stessa.fondamenti di informatica 1 parte
2 D.U.
75
Uno dei compiti del
precompilatore
e’ quello di inserire i file indicati con #include
all’ interno del source program prima della
compilazione: cosi’ il compilatore riconosce le
funzioni usate all’ interno del source program
(per es. printf) perche’ trova il loro prototipo
incluso precedentemente col file header e le
collega al loro codice in binario che sta in
S:\tc\Lib. (Questo tipo di meccanismo si puo’
anche usare per concatenare librerie scritte
eventualmente dall’ utente e poste in altri file.)
fondamenti di informatica 1 parte
2 D.U.
76
#include <nomefile.h> oppure:
#include “nomefile.h” ?
La prima, se nomefile.h sta nel direttorio
del sistema C o C++; la seconda, se
nomefile.h sta altrove.
L’ estensione .h indica che si tratta di un
file “header” che puo’ contenere, per
esempio, i prototipi delle funzioni della
libreria usata.
fondamenti di informatica 1 parte
2 D.U.
77
I file: stdio.h iostream.h
piu’ in dettaglio, cosa contengono ?
Esaminarli ! Controllare il direttorio:
S:\tc\Include
In questo direttorio c’ e’ stdio.h dove sta il
prototipo di printf
e li’ si trova anche iostream.h dove sta cout
fondamenti di informatica 1 parte
2 D.U.
78
Flussi (stream)
Il C++ ha un proprio sistema di I/O che usa il
concetto (tipico del S.O. Unix) di “flusso di
informazioni” (stream) ossia sequenza continua
di byte. Ogni flusso puo’ essere connesso a una
unita’ di I/O: i flussi di Output saranno collegati
al video o alla stampante, di Input alla tastiera.
Per usare il sistema di I/O del C++ occorre
includere il file <iostream.h> dove sono
dichiarate le funzioni e gli operatori usabili per
gestire operazioni di I/O e flussi di informazioni.
fondamenti di informatica 1 parte
2 D.U.
79
cin, cout, cerr.
Nel file <iostream.h> sono definite le
operazioni di I/O e sono aperti i seguenti
flussi delle informazioni:
ingresso standard connesso alla tastiera: cin
uscita standard connesso al video:
cout
uscita “
di errori conn. al video: cerr
fondamenti di informatica 1 parte
2 D.U.
80
Operatori (funzioni) << >>
L’ operatore << invia le informazioni indicate alla
sua destra sul flusso standard di output (cout)
posto alla sua sinistra dopo averle convertite dal
binario alla forma testuale; volendo inserire
anche il carattere di fine riga si puo’ porre dopo
un ulteriore << endl ; (end of line)
L’ operatore >> estrae le informazioni indicate
alla sua destra dal flusso di entrata cin (digitate
sulla tastiera) e le converte dalla forma testuale
in binario.
fondamenti di informatica 1 parte
2 D.U.
81
Informazioni, quali ? Come ?
Per usare e trasferire le informazioni (per
es. in C.M.) occorre un formalismo. Tutti i
linguaggi di programmazione (Pascal, C,
C++, Fortran …) usano le variabili come
veicolo di transito e di identificazione delle
informazioni = dati.
Le variabili hanno un nome ed un tipo cosi’
come i dati identificati sono di un cero tipo:
interi, caratterifondamenti
... di informatica 1 parte
2 D.U.
82
Esempi d’ uso gia’ intravisti
nei programmi ...
Cosi’ scrivendo una tipica frase di Input in C++
cin >> a >> b >> c;
si indicano con a b c i nomi delle variabili
che (in fase di esecuzione) acquisiranno i valori
inseriti in ingresso (digitati nella tastiera dall’ utente
e intervallati tra loro da almeno 1 spazio bianco).
Per le visualizzazioni si possono usare ancora i
nomi delle variabili e/o loro “combinazioni”
(espressioni algebra), e costanti e funzioni e...
cout << “la somma
a+b =“ << a+b <<endl;
fondamenti di informatica 1 parte
2 D.U.
83
Esempi e considerazioni
Confrontare i programmi in C ed in C++ in
E:/carmin/duinf2000/program1 di nome
commenti
hello hellw ciao
unostamp duestamp
leggipri
ripeleg
Si notera’ che il cout << e’ piu’ semplice della
printf (che richiede specifiche di controllo del
formato in cui si desiderano i valori da visualizzare ) e
cosi’ pure il cin>>
fondamenti di informatica 1 parte
2 D.U.
84
printf e scanf
Analoga alla printf e’ la scanf che si usa in C per
leggere valori da assegnare alle variabili;
entrambe richiedono specifiche di controllo del
formato in cui si desiderano i valori da visualizzare o
da leggere;
le specifiche di controllo piu’ usate sono:
%d per leggere/visualizzare interi in base 10;
%f “
“
“
valori float in base 10;
%c - %s per legg./visual. Caratteri - Stringhe di car.
Inoltre alla scanf le variabili devono essere passate
per indirizzo (cfr. parte 3) per es. premettendo al
nome della var. da leggere l’ operatore &
85
Assegnazione semplice
Le frasi di I/O servono per assegnare alle
variabili i valori immessi per es. da tastiera.
Il costrutto linguistico base usato allo scopo di
assegnare a variabili valori, per es. calcolati, e’
la frase tipica di assegnazione, per esempio:
z = b ; Significato: il valore di b e’ trasferito alla
zona di memoria identificata dalla variabile di
nome z; in breve: il valore di b e’ assegnato a z
NOTA: b puo’ essere… tutto da una costante ad
un’ espressione complicata…. cfr. avanti !
fondamenti di informatica 1 parte
2 D.U.
86
Assegnazione multipla
Oltre l’ assegnazione semplice c’ e’ in C e C++
quella multipla che (con variabili intere) e’ del
tipo seguente:
a = r = b = pippo = lei111 = 3;
e viene cosi’ interpretata ed eseguita:
(a = (r =(b=(pippo=(lei111=3)))))
ossia 3 e’ assegnato a lei111, quindi a pippo,
poi a b, quindi a r e infine ad a: valutazione
da destra a sinistra o iniziando dalla parentesi
piu’ internamente
annidata.
fondamenti
di informatica 1 parte
2 D.U.
87
Remember ed esercizi
ogni frase del corpo di una funzione C o C++
termina con un punto e virgola;
nelle espressioni si possono usare parentesi
tonde anche annidate, un po’ come nella
assegnazione multipla dell’ esempio precedente.
Con tutto questo in mente scrivere:
un source_prg. C++ che presenti un menu’ di
cibi; un altro che presenti un menu’ di comandi
DOS con sintetica spiegazione; un altro che
legga 3 numeri di 2 cifre dec. ciascuno e ne
faccia il prodotto la somma, la diff. e visualizzi
tutto ….
fondamenti di informatica 1 parte
2 D.U.
88
Scarica

fondinf1.2