|  Startsida |  Hårdvara |  Nätverk |  Programmering |  Programvara |  Felsökning |  System |   
Programmering
  • C /C + + -programmering
  • Computer Programspråk
  • Delphi Programmering
  • Java Programming
  • JavaScript programmering
  • PHP /MySQL Programmering
  • perl Programmering
  • python Programming
  • Ruby programmering
  • Visual Basics Programmering
  • * Dator Kunskap >> Programmering >> C /C + + -programmering >> Content

    Vad är syftet med ett villkorat hopp i programmering och hur påverkar det Flow Execution -programmet?

    Syftet med ett villkorat hopp i programmering

    Ett villkorat hopp (även känt som en villkorad gren) är en grundläggande kontrollflödesmekanism vid programmering som gör det möjligt att ändra ett program som gör det möjligt att förändras baserat på om ett specifikt tillstånd är sant eller falskt. Det är grunden för att genomföra beslutslogik inom ett program.

    Syfte:

    * Beslutsfattande: Det primära syftet är att göra det möjligt för programmet att fatta beslut och utföra olika kodblock baserat på dataläget eller resultatet av beräkningarna.

    * villkorad exekvering: För att utföra ett specifikt kodblock endast när ett visst tillstånd uppfylls.

    * Implementering Logic: För att implementera komplex programlogik genom att skapa grenar i exekveringsflödet.

    * Implementeringslingor: Villkorliga hopp är avgörande för att skapa slingor (som "medan" och "för" slingor). Loopen fortsätter att iterera så länge tillståndet utvärderat av det villkorade hoppet förblir sant.

    * Felhantering: För att hantera potentiella fel eller undantag genom att kontrollera för specifika felförhållanden och hoppa till en felhanteringsrutin om det behövs.

    * algoritmkontroll: För att kontrollera flödet av algoritmer genom att välja olika vägar baserat på det aktuella tillståndet i algoritmens exekvering.

    hur det påverkar flödesutförande

    Ett villkorat hopp påverkar avsevärt flödet av exekvering i ett program. Istället för att utföra instruktioner i följd kan programmet "hoppa" till en annan plats i koden, effektivt hoppa över vissa instruktioner eller utföra andra som annars skulle förbikopplas.

    Så här fungerar det:

    1. Utvärdering av tillstånd:

    * Den villkorade hoppinstruktionen innebär att utvärdera ett tillstånd. Detta tillstånd uttrycks vanligtvis som ett booleskt uttryck (något som kan vara antingen sant eller falskt). Tillståndet innebär ofta att jämföra två värden eller kontrollera statusen för en flagga.

    2. Hoppbeslut:

    * Om villkoret är sant: Programmets kontrollflöde omdirigeras till en specifik minnesadress ("mål" eller "destination" -adressen) associerad med hoppinstruktionen. Detta innebär att CPU börjar utföra instruktioner från den måladressen och framåt.

    * Om tillståndet är falskt: Programmet fortsätter att utföra nästa instruktion i sekventiell ordning och ignorerar effektivt hoppet. Exekveringsflödet följer den normala, linjära vägen.

    Exempel (konceptuell):

    Föreställ dig att du har det här kodavsnittet (i en förenklad pseudo-monteringsstil):

    `` `

    ; ... lite kod ...

    CMP X, 10; Jämför värdet på variabel x med 10

    JGE Label_Greater_or_Equal; Hoppa till label_greater_or_equal om x> =10

    ; ... kod för att köra om x <10 ...

    Mov y, 1; Ställ y till 1

    Jmp label_end; Hoppa till slut för att hoppa över det "större eller lika" blocket

    label_greater_or_equal:

    ; ... kod för att köra om x> =10 ...

    Mov y, 2; Ställ y på 2

    label_end:

    ; ... mer kod ...

    `` `

    Förklaring:

    1. `CMP x, 10 'jämför värdet på` x' med 10. CPU sätter inre flaggor baserat på resultatet av jämförelsen (t.ex. en "större än eller lika" flagga).

    2. `JGE Label_Greater_or_Equal` är den villkorade hoppinstruktionen. `JGE 'står för" hoppa om större eller lika ".

    * om `x` är större än eller lika med 10 (tillståndet är sant): CPU * hoppar omedelbart * till instruktionen märkt `label_greater_or_equal`. Instruktionen `MOV Y, 1 'hoppas över.

    * om `x` är mindre än 10 (tillståndet är falskt): CPU kör * nästa * instruktionen efter "jge", som är "mov y, 1".

    3. `jmp label_end` är ett * ovillkorligt * hopp. Det * alltid * hoppar till `label_end ', förhindrar koden för det" större eller lika "tillståndet från att springa när x <10.

    Hög nivå språkanalogi (C/C ++, Java, Python):

    Samma logik uttrycks på språk på hög nivå med "om" uttalanden:

    `` `C ++

    int x =5;

    int y;

    if (x> =10) {

    y =2; // körs endast om X är större än eller lika med 10

    } annat {

    y =1; // körs endast om X är mindre än 10

    }

    // ... mer kod ...

    `` `

    I det här exemplet använder uttalandet "if" effektivt villkorade hopp "under huven" (på den sammanställda maskinkodnivån) för att bestämma vilken kodgren som ska köras.

    typer av villkorade hopp:

    Villkorade hopp finns vanligtvis i olika former, baserat på det specifika tillståndet som testas:

    * hoppa om lika (je/jz): Hoppar om resultatet av föregående jämförelse var lika med noll (ofta används för att kontrollera om två värden är lika). JZ är ett alias för JE, som används särskilt efter aritmetiska operationer för att kontrollera om ett nollresultat.

    * hoppa om inte lika (JNE/JNZ): Hoppar om resultatet av föregående jämförelse inte var lika med noll. JNZ är ett alias för JNE, som används särskilt efter aritmetiska operationer för att kontrollera om ett resultat utan noll.

    * hoppa om större (jg/jnle): Hoppar om den första operanden var större än den andra operanden (vanligtvis efter en jämförelse).

    * hoppa om mindre (jl/jnge): Hoppar om den första operanden var mindre än den andra operanden (vanligtvis efter en jämförelse).

    * hoppa om större eller lika (jge/jnl): Hoppar om den första operanden var större än eller lika med den andra operanden.

    * hoppa om mindre eller lika (JLE/JNG): Hoppar om den första operanden var mindre än eller lika med den andra operanden.

    * Hoppa om överflödet (JO): Hoppar om översvämningsflaggan är inställd (indikerar ett aritmetiskt överflöde).

    * Hoppa om inget överflöde (JNO): Hoppar om översvämningsflaggan är klar.

    * hoppa om bär (JC): Hoppar om bärflaggan är inställd (indikerar en bär eller lån i en aritmetisk operation).

    * hoppa om ingen bär (JNC): Hoppar om bärflaggan är klar.

    * hoppa om tecken (js): Hoppar om skyltflaggan är inställd (indikerar ett negativt resultat).

    * Hoppa om inget tecken (JNS): Hoppar om skyltflaggan är klar (indikerar ett icke-negativt resultat).

    Sammanfattningsvis:

    Villkorade hopp är viktiga för att skapa program som kan reagera på olika situationer och utföra olika instruktioner beroende på förhållanden. De möjliggör beslutsfattande, looping och felhantering, gör program mer flexibla och kraftfulla. De förändrar det sekventiella flödet av exekvering genom att potentiellt "hoppa" till en annan plats i koden baserad på utvärderingen av ett tillstånd.

    Tidigare:

    nästa:
    relaterade artiklar
    ·Vad är en procedur i programmering och hur det brukade…
    ·Hur man använder Two - Dimensional Karaktär arrayer i…
    ·Hur man tar Pekare till heltal i C + +
    ·Hur man skriver flera rader till filen i C
    ·Hur man ansluter VB6.0 & VC + +
    ·Hur Debug C + + Tags
    ·Hur man kompilerar kod på en Mac
    ·Hur ta isär en dll
    ·Hur du registrerar ett SIS Nokia Application fil
    ·Vad är skillnaden mellan en analog ingång Control & e…
    Utvalda artiklarna
    ·Hur man installerar Vcvarsall.Bat
    ·Hur man skapar en dubbelt - länkad lista i C-programme…
    ·Hur man börjar en Google Maps Med PHP
    ·Hur konvertera binär till ett heltal i C-programmering…
    ·Hur man skapar Implicit Structures i ColdFusion
    ·Process för att bli en iPhone Developer
    ·Vilka är de olika MIP:s Alu -opcoder som används för…
    ·Hjälp med PHP och kompilering misslyckades
    ·Hur flytta objekt med en konstant hastighet i Unity
    ·Hur man installerar en Java Startförbikopplingen Admin…
    Copyright © Dator Kunskap https://www.dator.xyz