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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Programmare in COBOL 1069<br />

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

|<br />

| LOCAL K INTEGER<br />

| LOCAL N INTEGER<br />

|<br />

| IF (Z - A) >= 1<br />

| # Ci sono almeno due elementi nel segmento di array.<br />

| THEN<br />

| FOR K := Z; K >= A; K--<br />

|<br />

| LISTA[K] :==: LISTA[Z]<br />

|<br />

| PERMUTA (LISTA, A, Z-1)<br />

|<br />

| LISTA[K] :==: LISTA[Z]<br />

|<br />

| END FOR<br />

| ELSE<br />

| scrivi LISTA<br />

| END IF<br />

|<br />

|END PERMUTA<br />

Per esercizio, l’algoritmo iterativo viene trasformato in modo ricorsivo:<br />

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

|<br />

| LOCAL K INTEGER<br />

| LOCAL N INTEGER<br />

|<br />

| SCAMBIO_CHIAMATA_SCAMBIO (LISTA, A, Z, K)<br />

| IF K >= A<br />

| THEN<br />

| LISTA[K] :==: LISTA[Z]<br />

| PERMUTA (LISTA, A, Z-1)<br />

| LISTA[K] :==: LISTA[Z]<br />

| SCAMBIO_CHIAMATA_SCAMBIO (LISTA, A, Z, K - 1)<br />

| END IF<br />

| END SCAMBIO_CHIAMATA_SCAMBIO<br />

|<br />

| IF Z > A<br />

| THEN<br />

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

| ELSE<br />

| scrivi LISTA<br />

| END IF<br />

|<br />

|END PERMUTA<br />

Segue l’adattamento della pseudocodifica appena mostrata, in modo da simulare la ricorsione,<br />

utilizzando variabili globali:

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

Saved successfully!

Ooh no, something went wrong!