![Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11 - ΡΟΗ ΠΡΟΓΡΑΜΜΑΤΟΣ - ΘΕΩΡΙΑ 3 από 4](https://i.ytimg.com/vi/K_uD4IoHhJA/hqdefault.jpg)
Περιεχόμενο
- Βήματα
- Μέθοδος 1 από 2: Τεχνική For-loop
- Μέθοδος 2 από 2: Η τεχνική "ύπνου ()"
- Δείγμα κώδικα
- Συμβουλές
- Προειδοποιήσεις
Θέλατε ποτέ να δημιουργήσετε ένα πρόγραμμα C που περιμένει για ένα ορισμένο χρονικό διάστημα; Μπορείτε να προσαρμόσετε τον τρόπο για να δώσετε στο χρόνο "fly by", για παράδειγμα: όταν εμφανίζεται μια αναδυόμενη σελίδα (ειδοποίηση ή υπόδειξη) για το παιχνίδι. ... Εντάξει, εδώ είναι μερικοί τρόποι για να δημιουργήσετε ένα πρόγραμμα "stand still", διαβάστε παρακάτω ...
Βήματα
1 Αφήστε τον επεξεργαστή σας να λειτουργήσει για λίγο χωρίς να προκαλέσετε ένα παρατηρήσιμο συμβάν.
2 Μην εκτελείτε άλλες λειτουργίες κατά τη διάρκεια αυτής της καθυστέρησης για να δημιουργήσετε μια απλή χρονική καθυστέρηση.
Μέθοδος 1 από 2: Τεχνική For-loop
1 Χρησιμοποιήστε έναν τυπικό βρόχο "for" ακολουθούμενο από μια κενή πρόταση για την υλοποίηση μιας καθυστέρησης.
2 Γράψτε ως εξής, για παράδειγμα:
- για (i = 1; i100; i ++);
- Ο χειριστής ακολουθεί το ";" αναγκάζει τον υπολογιστή να κάνει βρόχο 100 φορές χωρίς αξιοσημείωτο συμβάν. Δημιουργεί μόνο χρονική καθυστέρηση.
Μέθοδος 2 από 2: Η τεχνική "ύπνου ()"
1 Χρησιμοποιήστε τον ύπνο (). Η συνάρτηση ονομάζεται sleep (int ms), δηλωμένη σε TIME.H>, η οποία κάνει το πρόγραμμα να περιμένει για ένα καθορισμένο χρονικό διάστημα σε χιλιοστά του δευτερολέπτου.
2 Συμπεριλάβετε την ακόλουθη γραμμή στο πρόγραμμά σας πριν από το int main ():
- #include TIME.H>
3 Επικολλήστε όπου είναι απαραίτητο για να καθυστερήσετε το πρόγραμμά σας:
- ύπνος (1000)?
- Αλλάξτε το "1000" στον αριθμό των χιλιοστών του δευτερολέπτου που θέλετε να περιμένετε (για παράδειγμα, εάν θέλετε να καθυστερήσετε 2 δευτερόλεπτα, αντικαταστήστε το με "2000".
- Συμβουλή: Σε ορισμένα συστήματα, η τιμή μπορεί να καθοριστεί σε δευτερόλεπτα αντί για χιλιοστά του δευτερολέπτου. Επομένως, μερικές φορές το 1000 δεν είναι 1 δευτερόλεπτο, αλλά στην πραγματικότητα 1000 δευτερόλεπτα.
Δείγμα κώδικα
Ένα πρόγραμμα που περιμένει για συγκεκριμένο αριθμό δευτερολέπτων:
#include stdio.h> #include dos.h> int main () {int del; // Περίοδος καθυστέρησης printf ("Εισαγάγετε τον χρόνο καθυστέρησης (σε δευτερόλεπτα):"); scanf ("% i",? del); del * = 1000; // Πολλαπλασιάστε το με 1000 για μετατροπή σε χιλιοστά του δευτερολέπτου Καθυστέρηση (del). // Καθυστέρηση. printf ("Τέλος."); επιστροφή 0? }
Ένα πρόγραμμα που μετρά αντίστροφα από 10 σε 0:
#include STDIO.H> #include TIME.H> int main () {int i; για (i = 10; i> = 0; i--) {printf ("% i n", i); // Γράψτε τον τρέχοντα αριθμό «αντίστροφης μέτρησης» Καθυστέρηση (1000). // Περιμένετε ένα δεύτερο} επιστροφή 0; }
Συμβουλές
- Ένα χιλιοστό του δευτερολέπτου είναι 1/1000 του δευτερολέπτου.
- Ο παραπάνω αλγόριθμος μπορεί να εφαρμοστεί χρησιμοποιώντας οποιαδήποτε δομή looping ακολουθούμενη από τον μηδενικό τελεστή - "; όπως χρησιμοποιώντας βρόχους while ή do -while.
Προειδοποιήσεις
- Αυτή η μέθοδος είναι γενικά άχρηστη για οτιδήποτε άλλο εκτός από ένα ασήμαντο πρόγραμμα. Σε γενικές γραμμές, χρησιμοποιήστε χρονοδιακόπτες ή μια προσέγγιση βάσει γεγονότων για να το επιτύχετε. Διαφορετικά, το πρόγραμμα δεν θα ανταποκρίνεται κατά τη διάρκεια του χρόνου καθυστέρησης και αυτό δεν είναι πάντα καλό. Επίσης, η επιλογή του N σε έναν βρόχο, εάν εξαρτάται από την εκτέλεση των εντολών, μπορεί να έχει απροσδόκητα αποτελέσματα. Προφανώς ο αρχικός συγγραφέας δεν έχει ακούσει ποτέ για έναν βελτιστοποιητή μεταγλωττιστή ... μπορεί να βελτιστοποιήσει έναν ολόκληρο βρόχο αν δεν κάνει τίποτα στην πραγματικότητα!
- Σημειώστε ότι όταν χρησιμοποιείτε τη μέθοδο "for-loop", μπορεί να χρειαστεί ένα πολύ μεγάλο διάστημα για το i, καθώς μια κενή πρόταση είναι πολύ γρήγορη. Τέτοιοι μεγάλοι αριθμοί μπορεί να μην ταιριάζουν σε έναν ακέραιο τύπο.
- Εάν χρησιμοποιείτε έναν βρόχο for, ο μεταγλωττιστής μπορεί να βελτιστοποιήσει τον κώδικα και επειδή ο βρόχος δεν κάνει τίποτα, αφαιρέστε τον. Αυτό δεν συμβαίνει όταν χρησιμοποιείτε Delay ().