1. Realizza il documento di specifica per l’operazione Ricerca() in una tabella ordinata.

bulletInterfaccia: Ricerca(IN T: TTabella; IN K: TChiave; OUT D: TDato). La tabella e la chiave primaria in ingresso, il dato in uscita.
bulletPrerequisiti: Nessuno.
bulletEffetti: Se il dato con chiave K esiste all'interno della tabella T allora viene restituito in D altrimenti ...
bulletEsempi d'uso: ...

2. A partire dalle operazioni presenti nella specifica di un ADT DATA: Giorno?(), Mese?(), Anno?() realizza le operazioni

Uguali?():

bulletInterfaccia: Uguali?(IN D1, D2: TDATA; OUT R: Logico). Nella pratica si tratterà di una funzione...
bulletPrerequisiti: Nessuno.
bulletEffetti: La risposta è "VERO" se le due date D1 e D2 sono uguali ...
bulletEsempi d'uso: Se D1 è "23 gennaio 2003" e D2 ... allora ... (la rappresentazione fisica delle date non è importante...)
bulletCodifica: (il linguaggio è a scelta...)
Function UgualiDate(D1, D2: TData): Boolean;Begin UgualiDate:=(Giorno(D1) = Giorno(D2)) And (Mese(D1) = Mese(D2)) And (Anno(D1) = Anno(D2));End;

oppure

int UgualiDate(TData D1, TData D2){ return(Giorno(D1)==Giorno(D2) && Mese(D1)==Mese(D2) && Anno(D1)==Anno(D2));}

oppure

Function UgualiDate(D1 As TData, D2 As TData) As Boolean UgualiDate = (Giorno(D1)=Giorno(D2)) And (Mese(D1)=Mese(D2)) And (Anno(D1)=Anno(D2))End Function

Precede?():

bulletInterfaccia: Precede?(IN D1, D2: TDATA; OUT R: Logico).
bulletPrerequisiti: Nessuno.
bulletEffetti: La risposta è "VERO" se D1 precede D2 ...
bulletEsempi d'uso: Se D1 ... e D2 ... allora ...
bulletCodifica:
Function PrecedeDate(D1, D2: TData): Boolean;Begin if(Anno(D1)<Anno(D2)) Then PrecedeDate:=True else if(Anno(D1)=Anno(D2)) And (Mese(D1)<Mese(D2)) Then PrecedeDate :=True else if(Anno(D1)=Anno(D2)) And (Mese(D1)=Mese(D2)) And (Giorno(D1)<Giorno(D2)) Then PrecedeDate:=True else PrecedeDate:=False;End;

oppure

int PrecedeDate(TData D1, TData D2){ if(Anno(D1)<Anno(D2)) return(1); else if(Anno(D1)==Anno(D2) && Mese(D1)<Mese(D2)) return(1); else if(Anno(D1)==Anno(D2) && Mese(D1)==Mese(D2) && Giorno(D1)<Giorno(D2)) return(1); else return(0);}

oppure

Function PrecedeDate(D1 As TData, D2 As TData) As Boolean

if(Anno(D1)<Anno(D2)) Then PrecedeDate=True else if(Anno(D1)=Anno(D2)) And (Mese(D1)<Mese(D2)) Then PrecedeDate =True else if(Anno(D1)=Anno(D2)) And (Mese(D1)=Mese(D2)) And (Giorno(D1)<Giorno(D2)) Then PrecedeDate=True else UgualiDate=FalseEnd Function

3. Indica i risultati finali attesi dopo l’esecuzione di ciascuna sequenza

I valori di X, Y e S sono (quelli a destra...)

Create(S); Push(S, X); Push(S, Y); Pop(S, X); 

X=6, X=6, X=6, X=5Y=5, Y=5, Y=5, Y=5S={}, S={6}, S={6, 5}, S={6}

Idem

Crea(C); Accoda(C, X); Accoda(C, Y); Servi(C, X);

X=50, X=50, X=50, X=50Y=60, Y=60, Y=60, Y=60C={}, C={50}, C={60, 50}, C={60}

4. Realizza un sottoprogramma che trasferisca in una coda gli elementi presenti in uno stack.

bulletInterfaccia: Trasferisci(IN/OUT S: TSTACK; IN/OUT C: TCODA).
bulletPrerequisiti: Nessuno. Se le strutture dati sono di dimensione fissa occorre che ci sia lo spazio sufficiente in C.
bulletEffetti: Lo stack viene "svuotato" e i suoi elementi vanno a "riempire" la coda.
bulletEsempi d'uso: Se S = { A, B, C } e C = { } allora dopo l'esecuzione si avrà S = { } e C = { A, B, C }
bulletCodifica:
Procedure Trasf_S_in_C(Var S: TStack; Var C: TCoda);Var E: Elemento;Begin While(Not IsEmpty(S)) do begin Pop(S, E); Accoda(C, E); end;End;

oppure

Sub Trasf_S_in_C(ByRef S As TStack, ByRef C As TCoda)Dim E As Elemento

Do While(Not IsEmpty(S)) Call Pop(S, E) Call Accoda(C, E) LoopEnd Sub

oppure

void Trasf_S_in_C(TStack *S, TCoda *C){ Elemento E;

while(!IsEmpty(S)) { Pop(S, E); Accoda(C, E); }}

- ApPuNtIdIuNiNfOrMaTiCo