Video: How "Crash Safari" Reboots Your Phone 2024
Wanneer u programmeerlussen in de C-taal instelt, ontdekt u de vreugden en dreadlocks van eindeloze of oneindige -lussen. Deze lussen gaan voor altijd door omdat de programmeur vergat een manier op te nemen om de lus te verlaten of de exit-voorwaarde gewoon nooit wordt gehaald. Hoe dan ook, eindeloze loops zijn lastig.
Maar soms bevat een C-programma expres een eindeloze lus. Dit type constructie lijkt misschien vreemd, maar de basis van veel moderne programma's is dat ze zitten en ronddraaien terwijl ze wachten tot er iets gebeurt. De lus kan er als volgt uitzien:
voor (;;) {check_toetsenbord (); check_Mouse (); check_Events (); check_System ();}
Merk op dat de voorwaarden binnen de haakjes na het voor-sleutelwoord ontbreken, wat in orde is. Het resultaat is een eindeloze lus waarin de uitspraken herhaaldelijk worden gecontroleerd, de ene na de andere: het programma zoekt ergens naar activiteit. Wanneer activiteit wordt gevonden, gaat het programma uit en doet iets interessants. Maar meestal zit het programma gewoon in dit soort lussen, wachtend tot er iets gebeurt. (De typische tekstverwerker kan duizenden van deze lussen uitvoeren terwijl het wacht tussen de toetsaanslagen terwijl u typt.)
Voer deze broncode in en sla deze op schijf op. Compileer en voer vervolgens het programma uit:
# include int main () {char ch; puts ("Typprogramma"); puts ("Type weg:"); voor (;;) {ch = getchar ();} return (0);}
Ja, u kunt typen. En je kunt je tekst op het scherm zien. Maar hoe stop je?
Om te stoppen, moet je de eindeloze lus doorbreken, wat je kunt doen door op Ctrl + C te drukken. Maar dat is niet de manier waarop u wilt dat uw programma's werken. In plaats daarvan moet er een exitvoorwaarde worden gedefinieerd voor de lus, waarbij het onderbrekingsleutelwoord een rol speelt.
De C-taalontwikkelaars wisten dat in sommige gevallen een lus moet worden verbroken op basis van omstandigheden die niet konden worden voorspeld of ingesteld binnen de for-instructie. Dus, in hun wijsheid, introduceerden ze het breekwoord.
Wat de onderbreking is, is om onmiddellijk een lus te sluiten (elke C-taallus, niet alleen voor loops). Wanneer de computer een breuk ziet, wordt ervan uitgegaan dat de lus is voltooid en wordt voortgezet alsof aan de eindvoorwaarde van de lus is voldaan:
# include int main () {char ch; puts ("Typprogramma"); puts ("Type away; druk op ~ ~ 'om te stoppen:"); voor (;;) {ch = getchar (); if (ch == '~') {break;}} return (0);}
Nu is een exit-voorwaarde gedefinieerd. De if-vergelijking in regel 12 controleert of een ~ (tilde) teken is ingevoerd. Als dat het geval is, wordt de lus gestopt door de break-instructie.
Wijzig uw broncode zodat deze overeenkomt met de afbeelding die zojuist is weergegeven. Compileer en ren. Nu kunt u het programma stoppen door het teken ~ te typen.
Merk op dat de if-instructie ook zonder de accolades kan worden geschreven:
if (ch == '~') break;
Deze regel is mogelijk beter leesbaar dan het gebruik van accolades.