Sei sulla pagina 1di 6

Informatica - DOMANDE DI RIPASSO DEL PROGRAMMA SVOLTO NEL PRIMO QUADRIMESTRE

1. Cos’è un paradigma di programmazione?


Un paradigma di programmazione è l’insieme delle idee a cui si ispirano i programmatori quando sviluppano un
programma, secondo un determinato linguaggio di programmazione, per risolvere un dato problema.

2. Su cosa si basa il paradigma imperativo ( detto anche “ programmazione strutturata “ )?


Il paradigma imperativo si basa sulle strutture di controllo ovvero sequenza ( rappresentata in C e nei linguaggi da esso
derivati con { seq. istr. } ), selezione ( rappresentata con if … else se mi riferisco alla selezione semplice, con switch …
case se mi riferisco alla selezione multipla ) e iterazione ( rappresentata con do … while oppure while … oppure for … ).

3. Su cosa si basa la OOP?


Il principale limite della programmazione strutturata è quello di separare la struttura dati dalle funzioni che lavorano sui
dati stessi; in caso di modifica della struttura dati bisogna riscrivere le funzioni che lavorano su di essi. Questa difficoltà
viene risolta dalla Programmazione Orientata agli Oggetti (OOP) con l’introduzione del concetto di tipo di dato astratto
(Abstract Data-Type). La OOP ha preso le migliori idee della programmazione strutturata e le ha combinate con
concetti nuovi cercando di imitare il modo con cui il cervello umano crea i modelli del mondo reale ( le sue capacità di
generalizzare, classificare, astrarre ). Nella OOP i programmi sono organizzati attorno ai dati del problema (ADT) che
vengono chiamati oggetti. Ogni oggetto che descrive una parte della realtà considerata è visto come una entità
autonoma, che reagisce ad un determinato messaggio intraprendendo l’azione appropriata

4. Il C language è un linguaggio ad alto o a basso livello? In che anni è nato? Che paradigma di programmazione
segue?
Il C language è un linguaggio ad alto livello estremamente versatile, nato agli inizi degli anni ’70, che si basa sul
paradigma imperativo.

5. JavaScript (JS) che paradigma di programmazione segue? In che anni è nato?


Js è un linguaggio che segue il paradigma OOP ed è nato negli anni ’90.

6. Quali sono le caratteristiche principali di JS ?


JS è un linguaggio di programmazione case-sensitive che gira nel browser, è un linguaggio di scripting orientato agli
oggetti interpretato, ovvero la sintassi JS può essere scritta direttamente dentro la pagina HTML, senza bisogno di
produrre alcun file compilato. In altre parole è un linguaggio di scripting lato-client che viene interpretato dal browser
ed è eseguibile unicamente su browser; JS si trova incorporato nel browser di navigazione, gli script sono istruzioni
precise eseguite dal browser di navigazione che le legge e le interpreta.

7. Cosa significa che JS è un linguaggio scarsamente tipizzato?


Significa che, contrariamente ad esempio al C language, in JS le variabili non hanno un tipo all’atto della dichiarazione
ma il loro tipo corrisponde al tipo del loro valore. Inoltre è possibile modificare il tipo di dato di una variabile durante
l’esecuzione dello script senza che ciò causi problemi.

8. Che cos’è una funzione ? In generale perché la uso?


Il concetto di funzione è un elemento fondamentale per la programmazione; essa è costituita da una porzione di codice
(che può essere messa a disposizione dal linguaggio di programmazione o venire sviluppata dal programmatore) che
può essere richiamata diverse volte in un programma; pertanto quando alcune operazioni devono essere ripetute
all’interno di un programma conviene sempre creare una funzione. Una caratteristica fondamentale delle funzioni,
indipendentemente dal linguaggio di programmazione usato, è che al termine della loro esecuzione ritornano il controllo
dell’esecuzione del programma al chiamante.

9. Scrivi la sintassi di dichiarazione generale e la sintassi di chiamata generale per i diversi tipi di funzione che si
possono sviluppare in JS.
Posso creare:
- funzioni che non hanno parametri in ingresso e non restituiscono un valore in uscita

Sintassi di dichiarazione generale: Sintassi di chiamata generale:

function nomefunzione ( ) nomefunzione ( );


{
… istruzioni …
}
- Funzioni che non hanno parametri in ingresso e restituiscono un valore in uscita

Sintassi di dichiarazione generale: Sintassi di chiamata generale:

function nomefunzione ( ) nomevariabile = nomefunzione ( );


{
… istruzioni …
return (valore_da_ritornare);
}

- Funzioni che hanno parametri in ingresso e non restituiscono un valore in uscita

Sintassi di dichiarazione generale: Sintassi di chiamata generale:

function nomefunzione ( parametro1, parametro2, … , parametroN) nomefunzione (variabile1,variabile2, … , variabileN );


{
… istruzioni …
}

- Funzioni che hanno parametri in ingresso e restituiscono un valore in uscita

Sintassi di dichiarazione generale:


function nomefunzione ( parametro1, parametro2, … , parametroN)
{
… istruzioni … Sintassi di chiamata generale:
return (valore_da_ritornare);
} nomevariabile = nomefunzione (variabile1,variabile2, … , variabileN );

10. Concettualmente che cos’è un array (vettore) ? Per JS che cos’è un array e come si dichiara ?
Un array (vettore) è un tipo strutturato che si usa in un programma per dichiarare un insieme di variabili omogenee fra
loro. Per JS un vettore è un oggetto appartenente alla classe Array ed è sempre e solo ad una dimensione. La sintassi
generale per dichiarare l’istanza di un oggetto appartenente alla classe Array è :
var nome_array = new Array (dimensione);
La parola riservata new indica che l’espressione deve restituire un nuovo oggetto appartenente alla classe Array.

11. Definire cosa si intende per “ variabile globale “ e “ variabile locale “.


Una variabile globale esiste per tutta la durata del programma, è visibile ed utilizzabile in ogni punto del programma.
Una variabile locale esiste, è visibile ed utilizzabile solo nel blocco sequenza in cui viene dichiarata, alla } del blocco
sequenza viene deallocata.

12. Dal punto di vista dell’allocazione in memoria qual è la differenza tra allocare variabili globali o locali?
Una variabile globale rimane allocata in modo statico per tutta la durata dell’esecuzione del programma; una variabile
locale viene allocata in modo dinamico durante l’esecuzione del blocco sequenza in cui è stata dichiarata e deallocata
quando l’esecuzione giunge alla } del blocco sequenza in cui è stata dichiarata ( si pensi ad esempio ad una variabile
locale ad una function che viene allocata ogni volta che si chiama la funzione e deallocata alla sua } ).

13. Spiega cosa si intende in JS con “ vettori paralleli” .


In JS gli array possono essere solo ad una dimensione e questo rappresenta un limite quando il programma deve gestire
informazione di tipo tabellare. In questi casi si ricorre ai vettori paralleli: si crea un vettore per ogni colonna della
tabella e si lavora in contemporanea sui diversi vettori ( utilizzando il medesimo indice di posizione è come se gestissi
la riga della tabella ).

14. Definisci la struttura dati in JS che ritieni più adeguata per memorizzare di un campione di N città ( N deciso
dall’utente in esecuzione ) le seguenti informazioni:
il nome della città, la concentrazione media di nitriti e di solfati rilevata nell’acqua potabile erogata.
JS permette di creare array in modo dinamico durante l’esecuzione del programma; quindi la struttura dati più adeguata
è rappresentata da tre array paralleli ognuno costituito da N variabili. Il codice all’interno di un ipotetico script per
definire la struttura richiesta è il seguente
var N;
do {
N = parseInt ( prompt (“Inserire numero città”,” “));
} while ( N <= 0 );
var nome = new Array ( N ) , nitriti = new Array ( N ) , solfati = new Array ( N );

15. Potresti usare la stessa struttura dati che hai definito nella precedente domanda, ovviamente apportando le
adeguate correzioni sintattiche, anche in C language? Motivare la risposta.
No, non potrei perché il C considera un array come un tipo di dato statico quindi il compilatore deve conoscere in fase
di compilazione quanta RAM allocare per l’array. In altri termini in C non posso consentire all’utente di decidere la
numerosità del campione durante l’esecuzione del programma, questo dato deve essere stabilito dal programmatore in
fase di codifica del programma.

16. Scrivi la funzione JS che memorizza nella struttura dati (che hai sviluppato alla domanda 14) le informazioni
inserite dall’utente in esecuzione e poi quella che scrive sulla web page corrente i dati memorizzati .
function memorizza ( vet , dim ) //questa funzione memorizza informazioni inserite dall’utente in un array
{
var i ;
for ( i = 0 ; i < dim ; i + + )
vet [ i ] = prompt ( Ins value “, “ “ );
}
function stampa ( v1 , v2 , v3 , dim ) //questa funzione scrive sulla web page le informazioni memorizzate
{
var i ;
for ( i = 0 ; i < dim ; i + + )
document.write ( “ nome città: “ + v1 [ i ] + “ nitriti: “ + v2 [ i ] + “ solfati: “ + v3 [ i ] + “ <BR> <BR> ” );
}
function principale ( ) // funzione principale: chiama le altre per realizzare la richiesta della domanda
{
memorizza ( nome , N );
memorizza ( nitriti , N );
memorizza ( solfati , N );
stampa ( nome , nitriti , solfati , N );
}

17. Che cosa studia il Calcolo Numerico? Quali sono i metodi di risoluzione del Calcolo Numerico? Cita almeno un
esempio di applicazione s/w che hai sviluppato per ogni metodo indicato.
Il Calcolo Numerico è un ramo della matematica che si propone di studiare le procedure di risoluzione dei problemi
ricorrendo alla computazione, ovvero dato un problema si sviluppa il programma (l’algoritmo) che ne calcola la
soluzione. I metodi di risoluzione propri del Calcolo Numerico sono il metodo diretto ed il metodo iterativo.
Metodo diretto: abbiamo sviluppato un programma che determina i numeri primi implementando il crivello di Eratostene.
Metodo iterativo: abbiamo sviluppato un programma che calcola il valore approssimato del seno di un angolo mediante
l’implementazione del relativo sviluppo in serie di Taylor-Maclaurin.

18. Spiega per quale scopo è nato modello ISO/OSI e sintetizza come avviene la comunicazione tra due nodi che
implementano tale architettura.
OSI (Open System Interconnection) è uno standard, emanato dall’ISO (International Standards Organization) negli anni
’80, che descrive la modalità con cui i PC della rete devono elaborare i dati che vengono scambiati al fine di consentire
l’interconnessione e l’interoperabilità tra sistemi finali diversi tra loro. In sintesi il modello definisce solo il formato che
devono avere i dati per essere scambiati ed il metodo logico di scambio (non definisce l’h/w o il s/w necessari per
comunicare in rete ).
Tra due sistemi che seguono il modello ISO/OSI avviene
- comunicazione fisica: il messaggio parte dal livello 7 del mittente, passa attraverso i vari livelli fino al livello 1 (ogni
livello aggiunge le informazioni che gli competono secondo le regole dettate dal protocollo di livello), quindi il
messaggio viaggia sul mezzo trasmissivo e, giunto al destinatario risale dal livello 1 fino al livello 7 (ogni livello toglie
le informazioni che gli competono secondo le regole dettate dal protocollo di livello);
- comunicazione logica: i livelli paritari nei due nodi comunicano seguendo le regole dettate dal protocollo di livello.

19. Definisci il significato dei termini “commutazione” e “multiplazione”; definisci quali sono le tecniche di
commutazione e di multiplazione possibili sintetizzando come funzionano ed i rispettivi vantaggi/svantaggi.
Commutazione: come trovo il cammino nel grafo di rete per portare l’informazione dal mittente al destinatario.
Multiplazione: tecnica che consente a più utenti di condividere lo stesso canale di trasmissione. Sono disponibili
- la commutazione di circuito: adatta alla comunicazione telefonica tra due utenti, prevede che all’atto della chiamata
vengano attivate le tratte del circuito virtuale per creare un canale privato e diretto tra i due interlocutori, al termine
della chiamata le tratte vengono liberate. In termini di costi visto che pago le tre fasi di creazione, uso ed abbattimento
del circuito questa commutazione conviene se la fase di utilizzo è di lunga durata, perchè in questo caso il peso del
costo delle altre due fasi diventa ininfluente, viceversa non conviene per comunicazioni di breve durata. Questa
commutazione è da preferire anche nei casi in cui ho bisogno di riservatezza/sicurezza nelle comunicazioni.
- la commutazione di pacchetto: il messaggio viene diviso in frame (pacchetti), ad ogni pacchetto viene aggiunto
l’indirizzo del mittente, quello del destinatario ed il numero d’ordine del pacchetto nella sequenza messaggio; i
pacchetti vengono poi instradati in rete e giungono a destinazione anche facendo strade diverse, il ricevitore ricostruisce
il messaggio in base al numero d’ordine dei pacchetti. Questa commutazione è adatta per le trasmissioni digitali, specie
in caso di elevato traffico di rete e/o di un elevato numero di utenti. Non garantisce riservatezza nelle comunicazioni
perché i nodi spesso fanno una copia dei pacchetti in transito.
- la multiplazione a frequenza (FDM): la banda di trasmissione del canale è suddivisa in sottobande e ad ogni utente
viene assegnata la propria sottobanda di frequenze; questa multiplazione è adatta a trasmissioni analogiche.
- la multiplazione a tempo (TDM): l’intera banda di trasmissione del canale è assegnata a rotazione ai diversi utenti che
la richiedono solo per un intervallo di tempo prefissato, al termine del quale il canale passa all’utente successivo; questa
multiplazione è adatta a trasmissioni digitali.

20. Spiega analogie e differenze tra il modello ISO/OSI e l’architettura di un host di Internet.

Internet Protocol Suite


Entrambi i modelli presentano
Application - una architettura a livelli in cui ogni livello svolge le sue funzioni
fornendo servizi al livello superiore,
- comunicazione logica tra i due host interlocutori che avviene
TCP e UDP seguendo
IP e protocolli di routing
le regole dettate dai protocolli di livello.

Non specificati
(Ethernet, PPP, X.25, Come si evince dai due schemi riportati il modello
Frame Relay, ATM, ...)
ISO/OSI presenta un numero di livelli maggiore e,
conseguentemente, risulta una architettura più pesante di quella adottata per Internet.

Il fatto che l’host di Internet può adottare diversi protocolli per il livello Data Link e Physical consente di installare
questa architettura di host anche su nodi appartenenti a reti locali diverse e preesistenti.
Le frecce che collegano i due schemi indicano le corrispondenze tra i livelli nelle due architetture.

21. Cos’è Internet? Qual è la sua struttura fisica? E quella logica?


Internet viene definita “la rete delle reti” perché interconnette tra loro reti locali, metropolitane, geografiche, singoli
host, … . Dal punto di vista fisico Internet è una rete geografica che interconnette milioni di apparati di comunicazione
sparsi sul pianeta (reti, singoli nodi, telefoni, tablet, navigatori satellitari, televisori, … ); dal punto di vista logico si può
considerare come un insieme di applicazioni, prevalentemente di tipo client/server, che forniscono/usano i diversi
servizi.

22. Quali sono i diversi tipi di connessione ad Internet possibili?


I principali modi con cui posso connettermi ad Internet sono
mediante cavo con il doppino telefonico, mediante fibra ottica, via radio, tramite rete cellulare, mediante rete WiFi.

23. Parlando di Internet, cosa si intende con “packet switch” ?


Si intendono quegli apparati di rete, come ad esempio i router, che contribuiscono ad instradare i pacchetti in rete dal
mittente al destinatario.

24. Quale tecnologia consente di connettersi ad Internet mediante la linea telefonica?


La tecnologia DSL permette di trasportare segnali digitali sul doppino telefonico (nato per il trasporto di segnali
analogici) mediante l’uso di un modem e di uno splitter. In trasmissione il modem modula il segnale per trasformarlo in
analogico e lo splitter lo invia sul doppino telefonico separandolo dalla telefonia vocale, in ricezione il modem estrae
dal segnale analogico il corrispondente segnale digitale. Per migliorare le prestazioni si è pensato di differenziare la
velocità in upstream (all’utente interessa poco con che velocità trasmette i suoi dati agli altri host quindi si è deciso che
fosse più bassa) da quella in downstream (più elevata visto che sicuramente l’utente apprezza la velocità mentre riceve
dati) e si è sviluppata l’ADSL.

25. Come funziona la connessione ad Internet con la fibra ottica?


Posso avere
- una connessione FTTS: la fibra ottica arriva ai cabinet (distributori locali) da cui parte il doppino telefonico che
collega l’utente finale ad una distanza < 250 m;
- una connessione FTTH: la fibra ottica collega direttamente l’utente finale alla centrale mediante convertitori ONT.

26. La maggior parte degli switch trasmette in modalità “store and forward”; spiega cosa significa.
In questa modalità lo switch deve ricevere l’intero pacchetto in entrata prima di iniziare a trasmettere il primo bit del
pacchetto stesso in uscita. In altre termini lo switch aspetta che tutti i bit del pacchetto siano accumulati nel suo buffer
prima di iniziare e trasmetterlo, quindi tra l’inizio della ricezione e l’inizio della trasmissione si genera un ritardo.

27. Cos’è il throughput di una trasmissione ?


Il throughput di una trasmissione è la quantità di bit ricevuta con successo alla fine di un canale di comunicazione in
rapporto al tempo di trasmissione (è paragonabile alla portata di una conduttura di tipo idraulico).

28. Quali sono i paradigmi (architetture/configurazioni) che possono usare gli host per comunicare in Internet?
Possono adottare
- l’architettuta client-server: i nodi assumono o il ruolo di server, host sempre attivo e in ascolto che offre servizi, o il ruolo
di client, l’host che richiede il servizio; i ruoli solitamente non sono intercambiabili.
- l’architettura peer-to-peer: gli host possono assumere in modo intercambiabile il ruolo di server ( quando offrono un
servizio) e quello di client ( quando richiedono un servizio).

29. Cos’è un processo?


Un processo è un programma che gira su un host; i processi comunicano tra loro seguendo le regole dettate dal S.O. se
sono in esecuzione sulla stessa macchina, o seguendo le regole dettate dall’architettura di rete adottata se sono processi che
girano su host diversi.

30. Perché i protocolli del livello applicazione possono essere definiti senza tener conto di quale protocollo del livello
trasporto viene utilizzato?
I protocolli del livello applicazione possono essere definiti senza tener conto di quale protocollo del livello trasporto viene
utilizzato perché essi si interfacciano con il socket e non direttamente con il protocollo del livello trasporto.
Questi protocolli sono indipendenti dalla rete sottostante perché la loro interfaccia per comunicare è il socket.

31. In quali termini possono essere analizzati i diversi protocolli di comunicazione? Sintetizza il significato di ogni
parametro citato.
I diversi protocolli di comunicazione possono essere analizzati in termini di
- affidabilità: un protocollo è affidabile se garantisce che i dati trasmessi siano ricevuti dal destinatario in modo completo e
corretto;
- throughput: rappresenta il ritmo con cui il processo mittente può consegnare dati al processo ricevente;
- ritardo: un protocollo di livello trasporto può fornire garanzie sul ritardo con cui consegna i dati in rete;
- sicurezza: un protocollo di livello trasporto può fornire servizi di sicurezza come ad esempio la crittografia del messaggio.

32. In generale, cosa definisce un protocollo del livello applicazione?


Questi protocolli in generale definiscono
- la tipologia dei messaggi scambiati (es. msg di richiesta, msg di risposta );
- la sintassi dei vari tipi di msg (es. i campi in cui è diviso il msg, come sono delimitati i campi, …);
- la semantica dei campi, ovvero il significato dell’informazione che contengono;
- le regole che stabiliscono i tempi ed i modi che un processo deve adottare per inviare/ricevere msg.

33. Come avviene la comunicazione tra due processi in modalità persistente? Ed in modalità non persistente?
In modalità persistente tutte le coppie richiesta-risposta transitano sulla stessa connessione TCP (è la modalità di default
per http); il client invia le richieste una dopo l’altra senza attendere la risposta, il server invia le risposte una dopo l’altra
(pipelining) e chiude la connessione se non utilizzata.
In modalità non persistente ogni coppia richiesta-risposta transita su una connessione TCP separata, ovvero per una nuova
richiesta l’http client deve richiedere una nuova connessione.

34. Cosa sono i cookies ?


I cookies sono righe di testo che il server inserisce in una determinata posizione nella risposta da inviare al client, il
browser (cliente) aprendo la pagina web appende la riga di testo come codice in un file specifico. Solitamente vengono
utilizzati dai server per raccogliere informazioni sulle preferenze degli utenti.

35. Definisci a cosa serve il protocollo: HTTP - FTP – SMTP – POP3 – IMAP
- HTTP è il protocollo usato per la comunicazione tra browser (client) e server web;
- FTP è il protocollo usato per trasferire file tra elaboratori diversi connessi in rete;
- SMTP è un protocollo usato per gestire l’invio di messaggi di posta elettronica;
- POP3 è un protocollo usato da un client per scaricare la propria posta elettronica da un mail server;
- IMAP è un protocollo usato per gestire la propria posta elettronica, volendo, solo sul server.

36. HTTP è un protocollo pull o push? Cosa significa?


HTTP è un protocollo pull perché l’utente “tira fuori” l’informazione dal server secondo le proprie necessità, infatti
tipicamente è il client HTTP che chiede di iniziare una sessione di colloquio per ricevere l’informazione richiesta, ovvero il
destinatario.

37. SMTP è un protocollo pull o push? Cosa significa?


SMTP è un protocollo push perché il mittente carica l’informazione sul server del destinatario, infatti tipicamente chiede di
iniziare una sessione di colloquio il mittente.

38. Elenca i campi di un URL e definisci cosa indica ogni campo.


Un URL ha il seguente formato generale protocollo://nome di dominio/risorsa
Il primo campo indica quale protocollo usare per accedere alla risorsa (cioè quale server contattare),
il secondo campo indica il nome del server e la porta presso cui è disponibile il servizio (campo gestito dal client DNS),
il terzo campo indica l’eventuale path della risorsa seguito dal nome della risorsa richiesta.

39. Spiega cosa succede quando il tuo browser cerca l’indirizzo che hai messo nella barra degli indirizzi (nella web page
in alto).
Il mio browser estrae il nome di dominio dall’URL e lo passa al client DNS che gira sul mio host; il client DNS invia la
query al server DNS locale ( solitamente installato presso il mio ISP ) che, se è in grado, risolve il nome e restituisce al
client DNS l’indirizzo IP associato, altrimenti trasferisce la richiesta ad un altro server DNS (Authoritative Server, Top
Level Domain Server, Root Server ); tra questi il primo che è in grado risolve il nome e restituisce al server DNS locale
l’indirizzo IP associato, che lo passa al mio client DNS, che infine passa l’IP al mio browser.
Si chiama risoluzione il processo che trasforma i nomi di dominio nei corrispondenti indirizzi IP.

40. Per quale motivo il DB DNS è un DB distribuito?


Il DB DNS deve essere distribuito su un elevato numero di server e non centralizzato in un’unica struttura altrimenti
- in caso di guasto al sistema Internet si bloccherebbe,
- i tempi di risposta per gestire contemporaneamente milioni di richieste si allungherebbero in modo inaccettabile,
- inoltre il DB dovrebbe gestire un flusso enorme di aggiornamenti e di registrazioni di nuovi utenti.
Per meglio gestire le problematiche sopra elencate ogni server su cui è distribuito contiene solo una piccola parte del DB.

41. Come sono organizzati i diversi server in rete che contengono le parti del DB DNS ?
I server sono organizzati in una struttura gerarchica ad albero, al livello più alto ci sono i Root Server (circa 13 nel mondo),
a livello sottostante troviamo i Top Level Domain Server (domini .org .com .it .uk … ), infine ci sono Authoritative
Server. I root server contengono i DB dei server TLD che a loro volta contengono i DB dei server autorevoli.

Potrebbero piacerti anche