είναι μια ενότητα ενός προγράμματος που μπορεί να καλείται από οποιαδήποτε θέση του προγράμματος. Όταν ολοκληρωθεί η υπορουτίνα, ο έλεγχος του προγράμματος μεταπηδά ξανά στη θέση από την οποία κλήθηκε η υπορουτίνα. Οι υπορουτίνες είναι χρήσιμες επειδή σας επιτρέπουν να διαχωρίζετε μεγάλα τμήματα του προγράμματός σας από τον κύριο βρόχο του προγράμματος, γεγονός που απλοποιεί τον κύριο βρόχο του προγράμματος για να γίνει ευκολότερη η κατανόησή του. Ένα άλλο πλεονέκτημα των υπορουτίνων είναι ότι μπορούν να κάνουν το πρόγραμμά σας μικρότερο.
Για να δημιουργήσετε και να χρησιμοποιήσετε υπορουτίνες, πρέπει να χρησιμοποιήσετε δύο εντολές PBASIC. Το πρώτο είναι το GOSUB, το οποίο καλεί την υπορουτίνα. Συνήθως χρησιμοποιείτε την εντολή GOSUB στο κύριο βρόχο του προγράμματος σας κάθε φορά που θέλετε να καλέσετε την υπορουτίνα. Η δεύτερη εντολή είναι RETURN, η οποία είναι πάντα η τελευταία εντολή στην υπορουτίνα.
Ακολουθεί ένα παράδειγμα υπορουτίνας που δημιουργεί έναν τυχαίο αριθμό μεταξύ 1 και 999 και το αποθηκεύει σε μια μεταβλητή που ονομάζεται Rnd:
GetRandom: RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN
Για να καλέσετε αυτήν την υπορουτίνα, θα χρησιμοποιούσατε απλά μια εντολή GOSUB όπως αυτή:
Αυτή η εντολή GOSUB μεταβιβάζει τον έλεγχο στην ετικέτα GetRandom. Στη συνέχεια, όταν η υπορουτίνα GetRandom φτάσει στην εντολή RETURN, ο έλεγχος μεταβαίνει ξανά στην εντολή αμέσως μετά την εντολή GOSUB.
Εδώ είναι ένα πλήρες πρόγραμμα που χρησιμοποιεί μια υπορουτίνα για να πάρει έναν τυχαίο αριθμό μεταξύ 1 και 1, 000 και χρησιμοποιεί τον τυχαίο αριθμό για να αναβοσβήνει η LED στην ακίδα 0 σε τυχαία χρονικά διαστήματα. Μπορείτε να εκτελέσετε αυτό το πρόγραμμα σε οποιοδήποτε κύκλωμα βασικής γραμματοσήμανσης που έχει μια ενδεικτική λυχνία στην ακίδα 0.
'Πρόγραμμα αναβοσβήσεων LED' Doug Lowe '10 Ιουλίου 2011 «Αυτό το πρόγραμμα αναβοσβήνει τυχαία την ενδεικτική λυχνία LED στο pin 0.» {$ STAMP BS2} '{$ PBASIC 2. 5} Rnd VAR Word Led1 PIN 0 DO GOSUB GetRandom ΥΨΗΛΗ Led1 PAUSE REND ΧΑΜΗΛΗ Led1 PAUSE 100 LOOP GetRandom: RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN
Όταν χρησιμοποιείτε μια υπορουτίνα, είναι ζωτικής σημασίας ότι εμποδίζετε το πρόγραμμα να "πέσει" σε υπορουτίνα σας και να το εκτελέσει όταν δεν προτίθεστε να εκτελεστεί.Για παράδειγμα, ας υποθέσουμε ότι το πρόγραμμα στην καταχώριση 3-5 χρησιμοποίησε έναν βρόχο FOR-NEXT αντί για ένα βρόχο DO γιατί θέλετε να αναβοσβήνει το LED μόνο 100 φορές. Εδώ είναι ένα παράδειγμα για το πώς
δεν να γράψει αυτό το πρόγραμμα: ΓΙΑ Counter = 1 έως 100 GOSUB GetRandom ΥΨΗΛΗ Led1 PAUSE REND ΧΑΜΗΛΗ Led1 PAUSE 100 ΕΠΟΜΕΝΟ GetRandom: RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN
Γνωρίζετε γιατί; Αφού ο βρόχος FOR-NEXT αναβοσβήνει το LED 100 φορές, το πρόγραμμα θα συνεχίσει με την επόμενη εντολή μετά τον βρόχο FOR-NEXT, που είναι η υπορουτίνα!
Για να αποφύγετε κάτι τέτοιο, μπορείτε να χρησιμοποιήσετε μια άλλη εντολή PBASIC END, η οποία απλά λέει στη ΒΑΣΗ ΣΦΑΙΜΑ ότι έχετε φτάσει στο τέλος του προγράμματος σας, οπότε θα πρέπει να σταματήσει να εκτελεί εντολές. Θα τοποθετούσατε την εντολή END μετά την εντολή NEXT, όπως αυτή:
FOR COUNTER = 1 έως 100 GOSUB GetRandom ΥΨΗΛΗ Led1 PAUSE REND ΧΑΜΗΛΗ Led1 PAUSE 100 ΕΠΟΜΕΝΟ ΤΕΛΟΥ GetRandom: RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN > Στη συνέχεια, το πρόγραμμα θα σταματήσει μετά την ολοκλήρωση του βρόχου FOR-NEXT.