24.01.2014 Views

Parte ii - IIS Marconi Latina - Area didattica

Parte ii - IIS Marconi Latina - Area didattica

Parte ii - IIS Marconi Latina - Area didattica

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Programmare in COBOL 1063<br />

| END WHILE<br />

|<br />

| # a questo punto LISTA[A:Z] è stata ripartita e CF è la collocazione<br />

| # di LISTA[A]<br />

|<br />

| LISTA[CF] :==: LISTA[A]<br />

|<br />

| # a questo punto, LISTA[CF] è un elemento (un valore) nella giusta<br />

| # posizione<br />

|<br />

| RETURN CF<br />

|<br />

|END PART<br />

|QSORT (LISTA, A, Z)<br />

|<br />

| LOCAL CF INTEGER<br />

|<br />

| IF Z > A<br />

| THEN<br />

| CF := PART (@LISTA, A, Z)<br />

| QSORT (@LISTA, A, CF-1)<br />

| QSORT (@LISTA, CF+1, Z)<br />

| END IF<br />

|END QSORT<br />

Vale la pena di osservare che l’array viene indicato nelle chiamate in modo che alla subroutine<br />

sia inviato un riferimento a quello originale, perché le variazioni fatte all’interno delle<br />

subroutine devono riflettersi sull’array originale.<br />

La subroutine ‘QSORT’ è quella che richiede la trasformazione per la simulazione della ricorsione;<br />

tuttavia, anche la subroutine deve essere adattata in modo tale da gestire la variabile<br />

‘CF’ come variabile globale (non potendo gestire variabili di ‘output’). Segue la descrizione<br />

di tali adattamenti.<br />

Variabile<br />

Descrizione<br />

| SAVEA È il vettore utilizzato per conservare il valore di ‘A’.<br />

| SAVEZ È il vettore utilizzato per conservare il valore di ‘Z’.<br />

| SP È l’indice dei vettori usati per salvare i valori (stack pointer).<br />

|PART (LISTA, A, Z)<br />

|<br />

| LOCAL I INTEGER<br />

|<br />

| # si assume che A < U<br />

|<br />

| I := A + 1

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!