Πώς να καθυστερήσετε την εκτέλεση του προγράμματος στο C

Συγγραφέας: Joan Hall
Ημερομηνία Δημιουργίας: 28 Φεβρουάριος 2021
Ημερομηνία Ενημέρωσης: 1 Ιούλιος 2024
Anonim
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11 - ΡΟΗ ΠΡΟΓΡΑΜΜΑΤΟΣ - ΘΕΩΡΙΑ 3 από 4
Βίντεο: Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11 - ΡΟΗ ΠΡΟΓΡΑΜΜΑΤΟΣ - ΘΕΩΡΙΑ 3 από 4

Περιεχόμενο

Θέλατε ποτέ να δημιουργήσετε ένα πρόγραμμα C που περιμένει για ένα ορισμένο χρονικό διάστημα; Μπορείτε να προσαρμόσετε τον τρόπο για να δώσετε στο χρόνο "fly by", για παράδειγμα: όταν εμφανίζεται μια αναδυόμενη σελίδα (ειδοποίηση ή υπόδειξη) για το παιχνίδι. ... Εντάξει, εδώ είναι μερικοί τρόποι για να δημιουργήσετε ένα πρόγραμμα "stand still", διαβάστε παρακάτω ...

Βήματα

  1. 1 Αφήστε τον επεξεργαστή σας να λειτουργήσει για λίγο χωρίς να προκαλέσετε ένα παρατηρήσιμο συμβάν.
  2. 2 Μην εκτελείτε άλλες λειτουργίες κατά τη διάρκεια αυτής της καθυστέρησης για να δημιουργήσετε μια απλή χρονική καθυστέρηση.

Μέθοδος 1 από 2: Τεχνική For-loop

  1. 1 Χρησιμοποιήστε έναν τυπικό βρόχο "for" ακολουθούμενο από μια κενή πρόταση για την υλοποίηση μιας καθυστέρησης.
  2. 2 Γράψτε ως εξής, για παράδειγμα:
    • για (i = 1; i100; i ++);
    • Ο χειριστής ακολουθεί το ";" αναγκάζει τον υπολογιστή να κάνει βρόχο 100 φορές χωρίς αξιοσημείωτο συμβάν. Δημιουργεί μόνο χρονική καθυστέρηση.

Μέθοδος 2 από 2: Η τεχνική "ύπνου ()"

  1. 1 Χρησιμοποιήστε τον ύπνο (). Η συνάρτηση ονομάζεται sleep (int ms), δηλωμένη σε TIME.H>, η οποία κάνει το πρόγραμμα να περιμένει για ένα καθορισμένο χρονικό διάστημα σε χιλιοστά του δευτερολέπτου.
  2. 2 Συμπεριλάβετε την ακόλουθη γραμμή στο πρόγραμμά σας πριν από το int main ():
    • #include TIME.H>
  3. 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 ().