Kā aizkavēt programmas izpildi C

Autors: Joan Hall
Radīšanas Datums: 28 Februāris 2021
Atjaunināšanas Datums: 1 Jūlijs 2024
Anonim
C Programming Tutorial 77, Timing Program Execution
Video: C Programming Tutorial 77, Timing Program Execution

Saturs

Vai esat kādreiz vēlējies izveidot C programmu, kas gaida noteiktu laiku? Jūs varat pielāgot veidu, kā piešķirt laiku “lidot garām”, piemēram: rādot spēles uznirstošo lapu (paziņojumu vai mājienu). ... Labi, šeit ir daži veidi, kā izveidot “nekustīgu” programmu, lasiet tālāk ...

Soļi

  1. 1 Ļaujiet procesoram kādu laiku darboties, neradot novērojamu notikumu.
  2. 2 Šīs kavēšanās laikā neveiciet nekādas citas darbības, lai radītu vienkāršu laika aizkavi.

1. metode no 2: cilpas tehnika

  1. 1 Izmantojiet tipisku cilni “par”, kam seko tukšs paziņojums, lai ieviestu aizkavi.
  2. 2 Rakstiet, piemēram:
    • par (i = 1; i100; i ++);
    • Operators, kas seko ";" liek datoram veikt cilpu 100 reizes bez pamanāma notikuma. Tas rada tikai laika aizkavēšanos.

2. metode no 2: "miega ()" tehnika

  1. 1 Izmantojiet miegu (). Funkciju sauc par miegu (int ms), kas deklarēta TIME.H>, kas programmai liek gaidīt noteiktu laiku milisekundēs.
  2. 2 Pirms int main () iekļaujiet programmā šādu rindu:
    • #ieskaitot TIME.H>
  3. 3 Ielīmējiet, kur nepieciešams, lai kavētu programmu:
    • gulēt (1000);
    • Mainiet "1000" uz gaidāmo milisekundžu skaitu (piemēram, ja vēlaties aizkavēt 2 sekundes, nomainiet to ar "2000".
    • Padoms. Dažās sistēmās vērtība var tikt norādīta sekundēs, nevis milisekundēs. Tāpēc dažreiz 1000 nav 1 sekunde, bet faktiski 1000 sekundes.

Koda paraugs

Programma, kas gaida noteiktu skaitu sekunžu:



#include stdio.h> #include dos.h> int main () {int del; // Aizkaves periods printf ("Ievadiet aizkaves laiku (sekundēs):"); scanf ("% i" ,? del); del * = 1000; // Reiziniet to ar 1000, lai pārvērstu par milisekundēm Delay (del); // Kavēšanās. printf ("Gatavs"); atgriezties 0; }


Programma, kas skaita no 10 līdz 0:


#include STDIO.H> #include TIME.H> int main () {int i; par (i = 10; i> = 0; i--) {printf ("% i n", i); // Uzrakstiet pašreizējo 'atpakaļskaitīšanas' skaitli Delay (1000); // Pagaidiet sekundi} return 0; }

Padomi

  • Milisekunde ir 1/1000 sekundes.
  • Iepriekš minēto algoritmu var īstenot, izmantojot jebkuru cilpas veidošanas struktūru, kam seko nulles operators - "; kā izmantojot ciklus vai do -while.

Brīdinājumi

  • Šī metode parasti ir bezjēdzīga citam, izņemot triviālu programmu. Lai to izdarītu, parasti izmantojiet taimeri vai uz notikumiem balstītu pieeju. Pretējā gadījumā programma aizkavēšanās laikā nereaģēs, un tas ne vienmēr ir labi. Tāpat, izvēloties cilpu N, ja tas ir atkarīgs no komandu izpildes, var būt negaidīti rezultāti. Acīmredzot sākotnējais autors nekad nav dzirdējis par optimizējošu kompilatoru ... tas var optimizēt visu cilpu, ja tas faktiski neko nedara!
  • Ņemiet vērā, ka, izmantojot "for-loop" metodi, i var paiet ļoti liels intervāls, jo tukšs paziņojums ir ļoti ātrs. Tik lieli skaitļi var neiederēties vesela skaitļa tipā.
  • Ja izmantojat for-loop, kompilators var optimizēt kodu, un, tā kā cilpa neko nedara, noņemiet to. Tas nenotiek, izmantojot aizkavi ().