วิธีชะลอการทำงานของโปรแกรมใน C

ผู้เขียน: Joan Hall
วันที่สร้าง: 28 กุมภาพันธ์ 2021
วันที่อัปเดต: 28 มิถุนายน 2024
Anonim
เนื้อหาการเรียน ระบบควบคุมอิเล็กทรอนิกส์ Electronic Control System ตอนที่ 3
วิดีโอ: เนื้อหาการเรียน ระบบควบคุมอิเล็กทรอนิกส์ Electronic Control System ตอนที่ 3

เนื้อหา

คุณเคยต้องการสร้างโปรแกรม C ที่รอเป็นระยะเวลาหนึ่งหรือไม่? คุณสามารถปรับแต่งวิธีการให้เวลา "ผ่านไป" ได้ ตัวอย่างเช่น เมื่อแสดงหน้าป๊อปอัป (การแจ้งเตือนหรือคำใบ้) สำหรับเกม ... ตกลง ต่อไปนี้เป็นวิธีสร้างโปรแกรม "หยุดนิ่ง" อ่านต่อ ...

ขั้นตอน

  1. 1 ปล่อยให้โปรเซสเซอร์ของคุณทำงานชั่วขณะหนึ่งโดยไม่ทำให้เกิดเหตุการณ์ที่สังเกตได้
  2. 2 อย่าดำเนินการอื่นใดในระหว่างการหน่วงเวลานี้เพื่อสร้างการหน่วงเวลาอย่างง่าย

วิธีที่ 1 จาก 2: เทคนิค For-loop

  1. 1 ใช้ลูป "for" ทั่วไปตามด้วยคำสั่งว่างเพื่อใช้การหน่วงเวลา
  2. 2 เขียนดังนี้ เช่น
    • สำหรับ (i = 1; i100; i ++);
    • โอเปอเรเตอร์ที่ตามหลัง ";" บังคับให้คอมพิวเตอร์วนซ้ำ 100 ครั้งโดยไม่มีเหตุการณ์ที่สังเกตได้ มันสร้างการหน่วงเวลาเท่านั้น

วิธีที่ 2 จาก 2: เทคนิค "sleep ()"

  1. 1 ใช้โหมดสลีป () ฟังก์ชันนี้เรียกว่า sleep (int ms) ซึ่งประกาศใน TIME.H> ซึ่งทำให้โปรแกรมรอตามระยะเวลาที่กำหนดในหน่วยมิลลิวินาที
  2. 2 รวมบรรทัดต่อไปนี้ในโปรแกรมของคุณก่อน int main ():
    • #รวม TIME.H>
  3. 3 วางที่จำเป็นเพื่อให้โปรแกรมของคุณล่าช้า:
    • นอนหลับ (1,000);
    • เปลี่ยน "1000" เป็นจำนวนมิลลิวินาทีที่คุณต้องการรอ (เช่น หากคุณต้องการหน่วงเวลา 2 วินาที ให้แทนที่ด้วย "2000"
    • เคล็ดลับ: ในบางระบบ ค่าอาจระบุเป็นวินาทีแทนที่จะเป็นมิลลิวินาที ดังนั้น บางครั้ง 1,000 ไม่ใช่ 1 วินาที แต่จริงๆ แล้ว 1,000 วินาที

โค้ดตัวอย่าง

โปรแกรมที่รอเป็นจำนวนวินาทีที่กำหนด:



#include stdio.h> #include dos.h> int main () {int del; // ช่วงเวลาหน่วง printf ("ป้อนเวลาหน่วง (เป็นวินาที):"); scanf ("% ฉัน",? del); เดล * = 1,000; // คูณด้วย 1,000 เพื่อแปลงเป็นมิลลิวินาที Delay (del); // ล่าช้า. printf ("เสร็จสิ้น"); กลับ 0; }


โปรแกรมที่นับถอยหลังจาก 10 ถึง 0:


#include STDIO.H> #include TIME.H> int main () {int i; สำหรับ (i = 10; i> = 0; i--) {printf ("% i n", i); // เขียนหมายเลข 'นับถอยหลัง' ปัจจุบันล่าช้า (1,000); // รอสักครู่} คืนค่า 0; }

เคล็ดลับ

  • มิลลิวินาทีคือ 1/1000 วินาที
  • อัลกอริธึมข้างต้นสามารถนำไปใช้ได้โดยใช้โครงสร้างการวนซ้ำใดๆ ตามด้วยตัวดำเนินการ null - "; เช่น การใช้ลูป while หรือ do-while

คำเตือน

  • วิธีนี้โดยทั่วไปไม่มีประโยชน์สำหรับสิ่งอื่นนอกเหนือจากโปรแกรมเล็กน้อย โดยทั่วไป ให้ใช้ตัวจับเวลาหรือวิธีการที่ขับเคลื่อนด้วยเหตุการณ์เพื่อทำสิ่งนี้ให้สำเร็จ มิฉะนั้น โปรแกรมจะไม่ตอบสนองในช่วงเวลาที่ล่าช้า และนี่ไม่ใช่สิ่งที่ดีเสมอไป นอกจากนี้ การเลือก N ในลูป หากขึ้นอยู่กับการดำเนินการของคำสั่ง อาจมีผลลัพธ์ที่ไม่คาดคิด เห็นได้ชัดว่าผู้เขียนดั้งเดิมไม่เคยได้ยินเกี่ยวกับคอมไพเลอร์ที่เพิ่มประสิทธิภาพ ... มันสามารถเพิ่มประสิทธิภาพลูปทั้งหมดได้หากไม่ได้ทำอะไรเลย!
  • โปรดทราบว่าเมื่อใช้เมธอด "for-loop" อาจใช้เวลามากสำหรับ i เนื่องจากคำสั่งว่างจะเร็วมาก ตัวเลขจำนวนมากดังกล่าวอาจไม่เหมาะกับประเภทจำนวนเต็ม
  • หากคุณใช้ for-loop คอมไพเลอร์สามารถเพิ่มประสิทธิภาพโค้ดได้ และเนื่องจากลูปไม่ทำอะไรเลย ให้ลบออก สิ่งนี้จะไม่เกิดขึ้นเมื่อใช้การหน่วงเวลา ()