Evitare di ricorsione perpetua in programmazione


Quasi ogni programmatore in qualsiasi generazione linguaggio di programmazione, temeva ciclo continuo. Brividi quando una chiamata al suo posto di lavoro del regista mainframe mainframe lamentano tutti urla bloccati o propria stampante remota che è passato attraverso una foresta di carta. Non importa quanto bene un programmatore pensa fuori rondo perpetua può verificarsi.

La semplice cura per questa paura non fidarsi del proprio istinto, ma per costruire il ciclo di passi e provare ogni centimetro della strada. Il primo passo è quello di creare, senza ricorsione.




In pseudo-language:

Definire X [vale a dire un}

Per x = 1

PRINT (o DISPLAY) "X =" X

Se si torna alla dichiarazione FOR, il ciclo termina qui.

L'approccio più affidabile è quello di definire questo X prima di entrare nel ciclo.

Il passo successivo è quello di creare una linea di uscita: se x = 20, il tasto EXIT. Questo è dove la condizione specifica che deve terminare il ciclo definito. Ora si può iniziare iterazioni:

Definire X [vale a dire un}

Per x = 1 a 25

PRINT (o DISPLAY) "X =" X

X = X + 1

Se X = 20, EXIT

SPERIAMO

Fino ad ora, si sta cercando di vedere se X è in aumento e se l'istruzione è una funzione di uscita stampe. L'istruzione OUT avrebbe "saltare" per una linea o modulo specificato. Dovete essere sicuri che ci sia questa linea o una forma, anche se come un tacco, prima di procedere. E l'uscita, una stampante di Stati a garantire che si è verificato l'uscita.

Una volta che il ciclo di base definito, IF-THEN, modificare il valore di X, e altri anelli interni possono essere aggiunti, ogni volta con istruzioni e uscite stampa per garantire che il lavoro ciclo come dovrebbe. Sia che si sta utilizzando numeri, date, pesi o variabili di testo, il processo è lo stesso.

Ad esempio, se si sta cercando di separare i numeri dispari numeri pari, il codice pseudo potrebbe essere simile a questo:

Definire X [vale a dire un}

Per x = 1 a 25

PRINT (o DISPLAY) "X =" X

IF X/2 è anche, PRINT "X rimane"

PRINT ELSE "X è strano"

X = X + 1

Se X = 20, linea EXIT 2234

SPERIAMO

LINEA 2234: PRINT "loop è completo"


Tra l'istruzione FOR e la linea di volo, nulla può essere fatto, compreso passare a un modulo separato per gestire e indietro nel loop. Ad ogni passo, creare un comunicato stampa per verificare che le funzioni logiche correttamente prima di aggiungere un'altra ruga.

All'interno di questo ciclo, è possibile valutare più di una variabile, confrontando variabili, leggere i valori delle variabili in una tabella ed eseguire calcoli più prima di passare alla successiva iterazione. Ad esempio, è possibile utilizzare questo tipo di ciclo per raccogliere il clock di ingresso e l'orario di partenza di un dipendente; confrontare la data su un calendario per vedere se si verifica in un fine settimana; orologio sottrarre lavorato orario di partenza per le ore effettive. Moltiplicare questo dell'1,5 se è un Lunedi o 2 se si tratta di una Domenica, e quindi caricare quelle ore in una matrice. Aumentare il giorno successivo (assumendo che il ciclo è Domenica a Sabato) e fare lo stesso. Aggiungere tutti e sette i conteggi e avere ore di stipendio del dipendente per la settimana. A quel punto, il ciclo termina. Una volta che avete sviluppato il ciclo completo, utilizzare i dati di esempio per un dipendente ore compreso il sabato e la domenica a lavorare, così come un giorno vuoto, per essere sicuri che il vostro anello in grado di gestire questo. Il modulo finale sarà simile a questa:

X = 1

Y = Data Domenica

Z '= tempo di clock; Z '= orologio timeout

TotalTime = 0

Per x = da 1 a 7

Leggi Z 'e Z' 'per Y

daystime = Z '- Z'

Se Y = Sabato, daystime daystime * = 1.5

ELSE se Y = Domenica, daystime daystime = 2 *

totalTime = totalTime + daystime

Premere il tasto "X =" X; E la settimana, daystime, totalTime

X = X + 1

Y = Y + un giorno

daystime = 0 [questo passo può essere eliminato, ma meglio tenerlo prima di tutto è controllato]

Se X = 8, l'anello di uscita [questo probabilmente andare in una forma in cui sono memorizzati i dati per il dipendente e dei dati dei dipendenti per la prossima lettura, e poi tornare a X = 1 riga]

AVANTI X

Si noti che il recupero delle variabili si verifica fino a quando il ciclo è completo. Dopo aver confermato che la ricorsione funziona correttamente, è possibile rimuovere tutte le istruzioni di stampa di prova; eseguire nuovamente il ciclo di assicurare che nessuno si perdono.

Le cose più importanti sono da aggiungere ogni calcolo, modificare o spostare una alla volta e trattare con un comunicato stampa, e per garantire che i dati di test copre ogni evento possibile che potrebbe accadere, compresi errori tipografici. Seguendo questi consigli, non si deve creare un ciclo continuo.

(0)
(0)

Commenti - 0

Non ci sono commenti

Aggiungi un commento

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Caratteri rimanenti: 3000
captcha