Kontrolstrukturer og løkker
Behersk betingede sætninger (if/else) og forskellige løkkekonstruktioner (for, while) til dynamisk kontraktadfærd.
Kontrolstrukturer og løkker er en gratis Blockchain-smart contracts med Solidity-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Blockchain-smart contracts med Solidity, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Blockchain-smart contracts med Solidity-kurset indeholder 4 lektioner i alt.
Introduktion til kontrolstrukturer
Velkommen til lektion 2! I dag lærer du om kontrolstrukturer i Solidity. De er afgørende for at gøre dine smarte kontrakter dynamiske og reaktionsdygtige.
Kontrolstrukturer gør det muligt for din kontrakt at:
- Træffe beslutninger baseret på betingelser.
- Gentage handlinger flere gange.
- Udføre forskellige kodeforløb.
Tænk på dem som kontraktens »hjerne«, der styrer dens adfærd.
Betingede »if«-sætninger
Den enkleste kontrolstruktur er if-sætningen. Den udfører kun en kodeblok, hvis en angivet betingelse er sand.
Betingelsen skal evalueres til en bool (sand eller falsk). Hvis den er sand, køres koden i de krøllede parenteser {}; ellers springes den over.
'if-else' til alternativer
Ofte vil du udføre én handling, hvis en betingelse er sand, og en anden handling, hvis den er falsk. Det er her, if-else-sætningen kommer ind i billedet.
Hvis if-betingelsen er sand, udføres dens blok. Hvis den er falsk, udføres koden i else-blokken i stedet. Kun én af de to blokke bliver nogensinde kørt.
'else if' til flere valgmuligheder
Hvad gør du, hvis der er mere end to mulige resultater? Brug else if til at kontrollere flere betingelser efter hinanden.
Kontrakten kontrollerer hver betingelse i rækkefølge. Den første, der evalueres til sand, får udført sin kodeblok, og alle efterfølgende else if- og else-blokke springes over.
Eksempel på betinget logik
Lad os se if-else if-else i praksis. Denne kontrakt kontrollerer, om et tal er positivt, negativt eller nul.
Prøv at kalde checkNumber med forskellige heltalsværdier som 5, -3 eller 0.
pragma solidity ^0.8.0;
contract ConditionalChecker {
function checkNumber(int _number) public pure returns (string memory) {
if (_number > 0) {
return "Positive";
} else if (_number < 0) {
return "Negative";
} else {
return "Zero";
}
}
}Introduktion til løkker
Nogle gange har du brug for at gentage en kodeblok flere gange. Det kaldes løkkeudførelse, og det er meget effektivt!
Løkker er nyttige til:
- At gennemløbe arrays eller lister.
- At udføre beregninger flere gange.
- At vente på, at en betingelse bliver opfyldt.
Solidity indeholder for- og while-løkker.
'<code>for</code>'-løkken
for-løkken er perfekt, når du ved præcis, hvor mange gange du vil gentage en handling. Den består af tre dele:
- Initialisering: Opretter en tæller (f.eks.
uint i = 0). - Betingelse: Løkken fortsætter, så længe dette er sandt (f.eks.
i < 10). - Inkrementering/dekrementering: Ændrer tælleren efter hver gentagelse (f.eks.
i++).
Kørbar '<code>for</code>'-løkke
Her er et eksempel på en for-løkke, der beregner summen af tal op til en angivet grænse. Det viser, hvordan du kan akkumulere en værdi over flere gentagelser.
Prøv at kalde calculateSum med et lille tal som 5.
pragma solidity ^0.8.0;
contract ForLoopDemo {
// Calculates the sum of numbers from 1 up to _limit
function calculateSum(uint _limit) public pure returns (uint) {
uint total = 0;
for (uint i = 1; i <= _limit; i++) {
total += i;
}
return total;
}
}'<code>while</code>'-løkken
while-løkken er ideel, når du ikke ved præcis, hvor mange gange løkken skal køre, men har en bestemt betingelse, der skal være opfyldt for at stoppe.
Løkken fortsætter, så længe dens betingelse er sand. Sørg for, at betingelsen på et tidspunkt bliver falsk, så du undgår uendelige løkker!
Kørbar '<code>while</code>'-løkke
Dette eksempel viser en simpel nedtælling med en while-løkke. Løkken fortsætter, så længe currentCount er større end nul.
Kald simpleCountdown med en værdi som 3. Den returnerer 0, når nedtællingen er færdig.
pragma solidity ^0.8.0;
contract WhileLoopDemo {
// Counts down from a starting number to zero
function simpleCountdown(uint _start) public pure returns (uint) {
uint currentCount = _start;
while (currentCount > 0) {
currentCount--; // Decrement counter
}
return currentCount; // Will be 0 when loop finishes
}
}Test din forståelse
Se på følgende Solidity-kontraktfunktion:
pragma solidity ^0.8.0;
contract ScoreChecker {
function getStatus(uint _score) public pure returns (string memory) {
if (_score >= 90) {
return "Excellent";
} else if (_score >= 70) {
return "Good";
} else if (_score >= 50) {
return "Pass";
} else {
return "Fail";
}
}
}Opsummering: Kontrolstrukturer og løkker
Godt gået! Du har lært det grundlæggende om kontrolstrukturer og løkker i Solidity.
- Betingelsessætninger (
if,else if,else) lader din kontrakt træffe beslutninger. - Løkker (
for,while) gør det muligt at udføre kodeblokke gentagne gange.
Disse værktøjer er afgørende, når du bygger smartkontrakter, der kan reagere dynamisk og udføre komplekse handlinger. Nu ser vi nærmere på funktioner og synlighedsmodifikatorer!
Lær Blockchain-smart contracts med Solidity med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 12
- Lektioner
- 48
Ofte stillede spørgsmål
Er lektionen “Kontrolstrukturer og løkker” gratis?
Ja — hele teksten til “Kontrolstrukturer og løkker” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Blockchain-smart contracts med Solidity-kurset, skal du opgradere til CoddyKit PRO. Blockchain-smart contracts med Solidity-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Kontrolstrukturer og løkker”?
Behersk betingede sætninger (if/else) og forskellige løkkekonstruktioner (for, while) til dynamisk kontraktadfærd. Du øver dig i Blockchain-smart contracts med Solidity med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Blockchain-smart contracts med Solidity?
Der kræves ingen tidligere erfaring. Blockchain-smart contracts med Solidity på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “Kontrolstrukturer og løkker”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Blockchain-smart contracts med Solidity-lektion?
Ja. Alle Blockchain-smart contracts med Solidity-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Solidity-datatyper og variabler
- Kontrolstrukturer og løkker
- Funktioner og synlighedsmodifikatorer
- Structs og enums