Unità Date

Analisi … Unità Unit LeDate; Interface Type    TData = Record        Giorno,        Mese,        Anno: Integer;    End;    DataErrore = Byte; { 0..1 } Procedure DataInit (Var  D: TData; G, M, A: Integer; Var E: DataErrore); Procedure DataSplit(     D: TData; Var G, M, A: … Leggi tutto

Unità Logici

Analisi Elementi: VERO, FALSO Struttura: semplice Dominio: VERO, FALSO Operazioni: Leggi(), Scrivi(), MyAnd(), MyOr(), MyNot(), MyXor() Specifica delle operazioni LEGGI() Interfaccia: Procedure LEGGI(A: LOGICO); Effetti: inserimento del valore logico VERO(1) o FALSO (0) in A Prerequisiti: input controllato di una stringa di tipo ‘Vero’/’Falso’ Esempio: Leggi(A); SCRIVI() Interfaccia: Procedure SCRIVI(A: LOGICO); Effetti: stampa il valore logico associato alla variabile … Leggi tutto

Lista multipla

Una possibile combinazione di lista multipla è la seguente lista primaria (A-B-C): a doppi puntatori con puntatore di testa e puntatore di coda liste secondarie (p, q-r-s, …): semplici con puntatore di testa e puntatore di coda Dichiarazioni Type   tInfoP = “qualsiasi”; {le informazioni nel nodo principale}   tInfoS = “qualsiasi”; {le informazioni nel nodo secondario} … Leggi tutto

Lista bidirezionale

Puntatore di testa, puntatore di coda e tre nodi con puntatori nelle due direzioni Dichiarazioni Type   tInfo   = “qualsiasi”; {le informazioni nel nodo}   pNodoDP = ^NodoDP;   NodoDP  = Record     Info: tInfo;     Succ,                {puntatori nelle due direzioni}     Prec: pNodoDP; … Leggi tutto

Lista circolare

Puntatore di testa e tre nodi con informazioni A-B-C o meglio, con puntatore di coda… Dichiarazioni Type   tInfo = “qualsiasi”;  {le informazioni nel nodo}   … Operazioni Aggiungere un nodo in Testa … Aggiungere un nodo in Coda … Aggiungere un nodo in Ordine …

Lista con testa e coda

Puntatore di testa, puntatore di coda e tre nodi con informazioni A-B-C Dichiarazioni Type tInfo   = “qualsiasi”; {le informazioni nel nodo} pNodoTC = ^NodoTC; NodoTC  = Record Info: tInfo; Succ: pNodoTC; End; ListaTC = Record       {puntatori di testa e di coda} Testa, Coda: pNodoTC; End; Operazioni Aggiungere un nodo in Testa … Leggi tutto

Lista semplice

Puntatore di testa e tre nodi con informazioni A-B-C Dichiarazioni Type   tInfo = “qualsiasi”;  { le informazioni nel nodo }   pNodo = ^Nodo;   Nodo  = Record     Info: tInfo;     Succ: pNodo;    ( puntatore in avanti )   End;   Lista = pNodo;    { puntatore di testa } … Leggi tutto

Insertion sort

Algoritmo alternativo al bubble sort ma più complesso… A ogni passata l’elemento i-esimo viene parcheggiato in X. Gli elementi più grandi, che lo precedono, vengono spostati in avanti di una posizione e X viene posizionato al posto giusto. In questo modo il sottovettore da 1 a i è sicuramente ordinato. Procedure INSERTSORT(var V: Vettore; N: … Leggi tutto

Shaker sort

Si tratta di un bubble sort nei due sensi. Si tenta di ridurre la lunghezza delle passate partendo dai due lati alternativamente. Procedure SHAKERSORT(Var V: Vettore; N: Integer); Var    Inizio, Fine, Ultimo, i: Integer; Begin    Inizio:=1;    Fine:=N-1;    Ultimo:=N-1;    While(Inizio V[i+1]) then                Begin   … Leggi tutto

Bubble Sort

Algoritmo molto diffuso perché intuitivo ma con prestazioni scadenti. Una passata Una passata con ordinamenti di due elementi su tutte le n-1 coppie, all’interno di un array, provoca lo spostamento in alto della bolla più grande. Sia V=(20, 15, 10, 3) alla fine della passata l’elemento più grande 20 si trova in ultima posizione V=(15, … Leggi tutto