FANDOM


Il candidato illustri analogie e differenze della programmazione ad oggetti rispetto alla programmazione strutturata. Opzionalmente, ne discuta i vantaggi in termini di maggiore ingegnerizzazione ottenibile in fase di modellazione di un sistema software.

Bis - Il candidato introduca la programmazione ad oggetti e ne discuta i principali aspetti caratterizzanti.


  • Programmazione ad oggetti: è un paradigma di programmazione che prevede di raggruppare in un unica entità (classe) sia le strutture dati che le procedure che operano su di essi, creando un oggetto software dotato di proprietà (dati) e metodi (procedure). La modularizzazione di un programma viene realizzata progettando il codice sottoforma di classi che interagiscono tra loro.

    • Classi: strumento per costruire strutture dati che contengano non solo i dati ma anche il codice per gestirli. Definendo così un nuovo tipo di dato.

    • Oggetti: istanze delle classi.

    • Ereditarietà: permette di derivare nuove classi a partire da classi già definite. Una sottoclasse eredita tutti i metodi e gli attributi della classe genitrice e può aggiungere membri della classe (attributi, metodi, ridefinizione dei metodi ereditati).

    • Polimorfismo: i metodi ridefiniti in una sottoclasse sono detti polimorfi in quanto lo stesso metodo si comporta diversamente a seconda del tipo di oggetto su cui viene invocato.

  • Programmazione strutturata: la programmazione strutturata è un paradigma di programmazione emerso nel contesto della programmazione procedurale. Le strutture di controllo annesse e le regole sintattiche e semantiche possono variare ma devono rispettare tre requisiti fondamentali:

    • Completezza: un linguaggio strutturato deve fornire la sequenza, almeno una struttura di tipo alternativo e una di tipo iterazione.

    • Singolo punto di ingresso e di uscita: ogni struttura di controllo deve poter essere considerata come una singola macro istruzione con un ben identificato punto di ingresso e d'uscita.

    • Componibilità: ogni struttura di controllo può avere fra le sue istruzioni controllate, ricorsivamente, altre strutture di controllo.

Ciascuna struttura di controllo definisce quindi un ambito completamente isolato dalle altre;

Progr strutt sequenza

Sequenza

Progr strutt alternative

Alternative


Progr strutt iterazioni

Iterazioni

Con la programmazione ad oggetti, rispetto a quella strutturata, cambia il punto di vista della programmazione: non ci si concentra più sul particolare algoritmo che dato un input genera l'output desiderato, ma si astrae il concetto di dato come struttura che incapsula informazioni sul suo stato, unite alle funzionalità di trasformazione, manipolazione e creazione per la modifica delle informazioni dello stato stesso. Nella strutturata le funzioni non sono legate alla struttura dati se non per il tipo di dati che riscono a manipolare.



Il candidato risponda al seguente quesito: qual è l’intervallo dei numeri interi rappresentabili in complemento a 2 avendo a disposizione n bit di codifica? Si dica inoltre quale intervallo è esprimibile con una rappresentazione in modulo e segno ed in binario puro. Quale formato presenta configurazioni ridondanti?


In generale con n bit, nella rappresentazione in complemento a due, si potranno rappresentare 2n numeri compresi tra -2n-1 e +2n-1-1. In questa notazione il bit più significativo (MSB) rappresenta il segno ed è ‘1’ se il numero è negativo, ‘0’ altrimenti. Tuttavia lo ‘0’ è rappresentabile solo come sequenza di soli zeri, mentre il numero ‘100...0’ rappresenta -2n-1. Nel caso della rappresentazione in modulo e segno, il MSB identifica ancora il segno (0 positivo e 1 negativo) però in questo caso si potranno rappresentare 2n-1 numeri compresi tra -2n-1-1 e +2n-1-1, in quanto lo ‘0’ può essere rppresentato anche come ‘100...0’ (‘-0’). Nella rappresentazione in binario puro invece non essendo specificata alcuna notazione i numeri rappresentabili con n bit sono compresi tra 0 e +2n-1. Quindi tra queste solo la notazione in modulo e segno presenta una configurazione ridondante (‘0’).




Si definiscano e si confrontino i modelli client-server nelle diverse caratteristiche.


Un'applicazione client-server è un tipo di applicazione di rete nella quale un computer (client) istanzia l'interfaccia utente di un'applicazione connettendosi ad una server application o ad un sistema di database. La presenza di un server permette ad un certo numero di client di condividere le risorse, lasciando che sia il server a gestire gli accessi a queste per evitare i conflitti. Il software client è solitamente semplice visto che si limita ad operare come interfaccia verso il server (come ad esempio un programma per la gestione della posta elettronica). Vi è quindi una divisione tra i due componenti di questo modello, sul pc-client risiedono le interfacce e i software utilizzati per accedere ai servizi del server, dal lato server invece troviamo oltre alla gestione logica del sistema anche l'implementazione delle tecniche di gestione degli accessi e rilascio delle risorse, condivisione e sicurezza dei dati.




Descrivere i principali stadi di una pipeline.


Una pipeline è una tecnica utilizzata nei computer e in altri dispositivi digitali per incrementare l'instruction throughput (numero di istruzioni eseguite nell'unità di tempo). L'elaborazione di un istruzione da parte di un processore si compone di cinque passaggi fondamentali:

  • IF (instruction fetch): lettura dell'istruzione dalla memoria.

  • ID (instruction decode): decodifica dell'istruzione e lettura degli operandi dai registri.

  • EX (execution): esecuzione dell'istruzione.

  • MEM (memory): attivazione della memoria (solo per certe istruzioni).

  • WB (write back): scrittura del risultato nel registro opportuno.

Praticamente ogni CPU in commercio è gestita da un clock centrale e ogni operazione elementare richiede almeno un ciclo di clock per poter esere eseguita. L'elaborazione di un'istruzione richiederebbe quindi cinque cicli di clock per essere completata. Per aumentare il numero di operazioni eseguite è stata introdotta la CPU con pipeline: questa è composta da cinque stadi specializzati, capaci di eseguire ciascuno una operazione elementare di quelle sopra descritte.

800px-Nopipeline

CPU senza pipeline


800px-Fivestagespipeline

CPU con pipeline

Vantaggi del Pipelining:

  • Incremento del instruction throughput.

  • Alcuni circuiti combinatori con sommatori e moltiplicatori possono lavorare più velocemente a patto di aggiungere ulteriori componenti. L'utilizzo della pipelining invece permette di risparmiare la componentistica (a discapito però della semplicità circuitale).

Svantaggi del Pipelining:

  • I processori non dotati di pipeline sono di più semplice realizzazione e più economici.

  • La latenza di ogni istruzione in un processore senza pipeline è minore.

  • Le performance di una CPU con pipeline dipendono fortemente dal tipo di programma.




Il candidato descriva le metodologie di progetto top-down e bottom-up, mettendo in evidenza le differenze ed i relativi vantaggi e svantaggi.


I modelli top-down e bottom-up (ing. dall'alto verso il basso e dal basso verso l'alto, rispettivamente) sono strategie di elaborazione dell'informazione e di gestione delle conoscenze, riguardanti principalmente il software e, per estensione, altre teorie umanistiche e teorie dei sistemi. Nel modello top-down è formulata una visione generale del sistema senza scendere nel dettaglio di alcuna delle sue parti. Ogni parte del sistema è successivamente rifinita (decomposizione, specializzazione e specificazione o identificazione) aggiungendo maggiori dettagli alla progettazione. Ogni nuova parte così ottenuta può quindi essere nuovamente rifinita, specificando ulteriori dettagli finché la specifica completa è sufficientemente dettagliata da validare il modello. Il modello top-down è spesso progettato con l'ausilio di scatole nere che semplificano il riempimento ma non consentono di capirne il meccanismo elementare. In contrasto con il modello top-down c'è la progettazione bottom-up, nella quale parti individuali del sistema sono specificate in dettaglio. Queste parti vengono poi connesse tra loro in modo da formare componenti più grandi, che vengono a loro volta interconnessi fino a realizzare un sistema completo. Le strategie basate sul flusso informativo bottom-up sembrano potenzialmente necessarie e sufficienti dato che sono basate sulla conoscenza di tutte le variabili che possono condizionare gli elementi del sistema.

  • Il top-down parte dall'obiettivo e da esso fa scaturire la strategia direttamente adatta a determinare l'obiettivo stesso, quindi valorizza il perché e da esso fa dipendere il come, ovvero la strategia; individua, quindi, le risorse necessarie, precisa quelle disponibili e identifica quelle mancanti, propone successivamente ogni risorsa mancante come sub-obiettivo ovvero come sotto-problema in cui ciascun sub-obiettivo richiede una sub-strategia ad esso correlata. Il top-down struttura e sistematizza la riflessione, motiva ogni passaggio in modo logico e ripulisce il metodo di lavoro da tentativi casuali, intreccia strettamente analisi ed elaborazione, dà alla strategia complessiva un carattere di eleganza sostanziale e formale che si estrinseca come trasparenza e sistematicità. È soprattutto adatto, ma non solo, a situazioni complesse, inedite, di differenti tipologie.

  • Il bottom-up prende corpo dal punto di partenza (bottom) ovvero dalla situazione iniziale; considera l'obiettivo finale, induce a costruire un percorso sequenziale organizzato in passaggi successivi in cui l'ancoraggio tra traguardi intermedi e obiettivo finale è ricercato con metodo generalmente improntato a tentativo ed errore quindi di tipo casuale, nei casi migliori intuitivo. È per lo più adatto a situazioni problematiche lineari, semplici, delle quali la dinamica è generalmente nota.



Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

Inoltre su FANDOM

Wiki casuale