Parte ii - IIS Marconi Latina - Area didattica
Parte ii - IIS Marconi Latina - Area didattica Parte ii - IIS Marconi Latina - Area didattica
1060 volume V Programmazione |001900 |002000 01 RECORD-STACKS. |002100 02 SAVEN OCCURS 100 TIMES PIC 99. |002200 02 SAVEP1 OCCURS 100 TIMES PIC 9. |002300 02 SAVEP2 OCCURS 100 TIMES PIC 9. |002400 |002500 01 STACK-POINTER. |002600 02 SP PIC 99 VALUE 0. |002700 |002800 01 VARIABILI-SCALARI. |002900 02 N PIC 99. |003000 02 P1 PIC 9. |003100 02 P2 PIC 9. |003200 |003300 |003400 PROCEDURE DIVISION. |003500 |003600 MAIN. |003700 |003800 DISPLAY "INSERISCI LA DIMENSIONE DELLA TORRE". |003900 DISPLAY "(DUE CARATTERI)". |004000 ACCEPT N. |004100 |004200 DISPLAY "INSERISCI LA POSIZIONE INIZIALE DELLA TORRE". |004300 DISPLAY "(UN CARATTERE)". |004400 ACCEPT P1. |004500 |004600 DISPLAY "INSERISCI LA DESTINAZIONE DELLA TORRE". |004700 DISPLAY "(UN CARATTERE)". |004800 ACCEPT P2. |004900 |005000 PERFORM HANOI. |005100 |005200 STOP RUN. |005300 |005400 HANOI. |005500 |005600 IF N > 0 |005700 THEN |005800* |005900* push per conservare le variabili di scambio |006000* |006100 COMPUTE SP = SP + 1, |006200 COMPUTE SAVEN(SP) = N, |006300 COMPUTE SAVEP2(SP) = P2, |006400* |006500* cambiamenti alle variabili di scambio prima della |006600* chiamata |006700* |006800 COMPUTE N = N - 1, |006900 COMPUTE P2 = 6 - P1 - P2, |007000* |007100* chiamata della procedura
Programmare in COBOL 1061 |007200* |007300 PERFORM HANOI, |007400* |007500* pop per recuperare i valori delle variabili di scambio |007600* |007700 COMPUTE P2 = SAVEP2(SP), |007800 COMPUTE N = SAVEN(SP), |007900 COMPUTE SP = SP - 1, |008000 |008100 DISPLAY "MUOVI L’ANELLO ", N, " DAL PIOLO ", P1, |008200 " AL PIOLO ", P2, |008300 |008400* |008500* push per conservare le variabili di scambio |008600* |008700 COMPUTE SP = SP + 1, |008800 COMPUTE SAVEN(SP) = N, |008900 COMPUTE SAVEP1(SP) = P1, |009000* |009100* modifica dei valori delle variabili di scambio |009200* |009300 COMPUTE N = N - 1, |009400 COMPUTE P1 = 6 - P1 - P2, |009500* |009600* chiamata della procedura |009700* |009800 PERFORM HANOI, |009900* |010000* pop per recuperare i valori delle variabili di scambio |010100* |010200 COMPUTE P1 = SAVEP1(SP), |010300 COMPUTE N = SAVEN(SP), |010400 COMPUTE SP = SP - 1. |010500 83.4.6 Quicksort (ordinamento non decrescente) Segue la descrizione dell’algoritmo attraverso la pseudocodifica in forma ricorsiva; si ricorda che l’algoritmo del Quicksort si risolve con due subroutine: una serve a suddividere il vettore; l’altra esegue le chiamate ricorsive. Nella sezione 72.5.4 viene descritto il problema del Quicksort in modo dettagliato. Variabile Descrizione | LISTA L’array da ordinare in modo crescente. | A L’indice inferiore del segmento di array da ordinare. | Z L’indice superiore del segmento di array da ordinare. | CF Sta per «collocazione finale» ed è l’indice che cerca e trova la posizione giusta di un elemento nell’array. «
- Page 163 and 164: Programmare in COBOL 1009 Descrizio
- Page 165 and 166: Programmare in COBOL 1011 Viene ese
- Page 167 and 168: Programmare in COBOL 1013 Paragrafo
- Page 169 and 170: Programmare in COBOL 1015 |000900*
- Page 171 and 172: Programmare in COBOL 1017 |002500*-
- Page 173 and 174: Programmare in COBOL 1019 |002800 P
- Page 175 and 176: Programmare in COBOL 1021 |001900*-
- Page 177 and 178: Programmare in COBOL 1023 |001000 W
- Page 179 and 180: Programmare in COBOL 1025 |001400*
- Page 181 and 182: Programmare in COBOL 1027 |002500 0
- Page 183 and 184: Programmare in COBOL 1029 |003500 C
- Page 185 and 186: Programmare in COBOL 1031 |004300 T
- Page 187 and 188: Programmare in COBOL 1033 |002500*
- Page 189 and 190: Programmare in COBOL 1035 |000400 D
- Page 191 and 192: Programmare in COBOL 1037 |004300 S
- Page 193 and 194: Programmare in COBOL 1039 |007500 T
- Page 195 and 196: Programmare in COBOL 1041 83.3.9 AG
- Page 197 and 198: Programmare in COBOL 1043 83.3.10 A
- Page 199 and 200: Programmare in COBOL 1045 |003500 0
- Page 201 and 202: Programmare in COBOL 1047 |005300 E
- Page 203 and 204: Programmare in COBOL 1049 |009400 D
- Page 205 and 206: Programmare in COBOL 1051 83.3.15 A
- Page 207 and 208: Programmare in COBOL 1053 |009600 P
- Page 209 and 210: Programmare in COBOL 1055 |020200 I
- Page 211 and 212: Programmare in COBOL 1057 83.4.3 Pr
- Page 213: Programmare in COBOL 1059 | SAVEN
- Page 217 and 218: Programmare in COBOL 1063 | END WHI
- Page 219 and 220: Programmare in COBOL 1065 |QSORT |
- Page 221 and 222: Programmare in COBOL 1067 |008900 O
- Page 223 and 224: Programmare in COBOL 1069 |PERMUTA
- Page 225 and 226: Programmare in COBOL 1071 |001100 |
- Page 227 and 228: Programmare in COBOL 1073 |011700 M
- Page 229 and 230: Programmare in COBOL 1075 83.5 Rife
Programmare in COBOL 1061<br />
|007200*<br />
|007300 PERFORM HANOI,<br />
|007400*<br />
|007500* pop per recuperare i valori delle variabili di scambio<br />
|007600*<br />
|007700 COMPUTE P2 = SAVEP2(SP),<br />
|007800 COMPUTE N = SAVEN(SP),<br />
|007900 COMPUTE SP = SP - 1,<br />
|008000<br />
|008100 DISPLAY "MUOVI L’ANELLO ", N, " DAL PIOLO ", P1,<br />
|008200 " AL PIOLO ", P2,<br />
|008300<br />
|008400*<br />
|008500* push per conservare le variabili di scambio<br />
|008600*<br />
|008700 COMPUTE SP = SP + 1,<br />
|008800 COMPUTE SAVEN(SP) = N,<br />
|008900 COMPUTE SAVEP1(SP) = P1,<br />
|009000*<br />
|009100* modifica dei valori delle variabili di scambio<br />
|009200*<br />
|009300 COMPUTE N = N - 1,<br />
|009400 COMPUTE P1 = 6 - P1 - P2,<br />
|009500*<br />
|009600* chiamata della procedura<br />
|009700*<br />
|009800 PERFORM HANOI,<br />
|009900*<br />
|010000* pop per recuperare i valori delle variabili di scambio<br />
|010100*<br />
|010200 COMPUTE P1 = SAVEP1(SP),<br />
|010300 COMPUTE N = SAVEN(SP),<br />
|010400 COMPUTE SP = SP - 1.<br />
|010500<br />
83.4.6 Quicksort (ordinamento non decrescente)<br />
Segue la descrizione dell’algoritmo attraverso la pseudocodifica in forma ricorsiva; si ricorda<br />
che l’algoritmo del Quicksort si risolve con due subroutine: una serve a suddividere il vettore;<br />
l’altra esegue le chiamate ricorsive. Nella sezione 72.5.4 viene descritto il problema del<br />
Quicksort in modo dettagliato.<br />
Variabile<br />
Descrizione<br />
| LISTA L’array da ordinare in modo crescente.<br />
| A L’indice inferiore del segmento di array da ordinare.<br />
| Z L’indice superiore del segmento di array da ordinare.<br />
| CF Sta per «collocazione finale» ed è l’indice che cerca e trova la posizione giusta<br />
di un elemento nell’array.<br />
«