›_ ebskola.lv
← 3.2 3.4 →

3.3 Loģiskie operatori un sazarojumi (If/Else)

Stundas uzdevums: Analizēt spēles stāvokli un izstrādāt algoritma sazarojumus, lai programma spētu patstāvīgi pieņemt lēmumus un reaģēt uz dažādām spēlētāja situācijām.

2.6.1. Lasa un izpilda algoritmus ar sazarojumiem; 5.2.1. Kritiskā domāšana problēmu risināšanā.

70 min darba sadalījums: 1. uzdevums (~20 min) - atjauno teorijas piemēru vai minimālo prototipu; 2. uzdevums (~25 min) - pielieto to galvenajā uzdevumā; 3. uzdevums (~25 min) - pārbaudi rezultātu, izlabo kļūdas un tikai beigās pieraksti vienu secinājumu. Papildus/4. līmeņa uzdevums ir paredzēts tikai tad, ja pamatdarbs ir pabeigts.

Pirms sāc: izmanto iepriekš apgūto un šīs lapas teorijas/koda piemērus. Ja vajadzīga jauna komanda vai rīks, vispirms atrodi tās paraugu teorijas sadaļā.

Teorija: Kā dators pieņem lēmumus?

Dators nesaprot vārdu "varbūt". Tas atpazīst tikai divus stāvokļus: true (patiess) un false (aplams). Lai spēle pati saprastu, vai spēlētājs ir uzvarējis, mēs izmantojam If/Else (Ja/Citādi) blokus un operatorus.

Kods Ko tas dara? Piemērs spēlē
=== Precīzi vienāds (Svarīgi: trīs vienādības zīmes!) dzivibas === 0 (Vai esi miris?)
!== Nav vienāds atslega !== true (Nav atslēgas?)
> un < Lielāks / Mazāks punkti > 100
&& UN (Abiem nosacījumiem jāizpildās) punkti > 50 && laiks > 0
|| VAI (Vismaz vienam jāizpildās) dzivibas === 0 || laiks === 0

Pareizais rakstības stils (Sintakse):

if (punkti >= 100) {
    console.log("Uzvara!"); // Notiks tikai tad, ja nosacījums ir TRUE
} else {
    console.log("Turpini cīnīties!"); // Notiks visos citos gadījumos (FALSE)
}

Praktiskie uzdevumi

1. uzdevums - Iesildies ar gatavu piemēru

Šis ir īss iesildīšanās uzdevums. Nokopē sagatavi, ielīmē to pareizajā koda vietā un palaid. Šeit pietiek droši izmēģināt tēmu 3.3 Loģiskie operatori un sazarojumi (If/Else); detalizētu izpratni veidosi nākamajos uzdevumos.

Kopējamais piemērs vai sagatave: izmanto šo bloku kā starta punktu, nevis kā gala risinājumu.

if (punkti >= 100) {
    console.log("Uzvara!"); // Notiks tikai tad, ja nosacījums ir TRUE
} else {
    console.log("Turpini cīnīties!"); // Notiks visos citos gadījumos (FALSE)
}
  1. Atver darba failu vai rīku. JavaScript fragmentu ievieto script.js failā vai lapas esošajā skripta daļā.
  2. Nokopē visu piemēra bloku no šī uzdevuma un ielīmē to norādītajā vietā.
  3. Palaid kodu tieši tādu, kāds tas ir, un pārliecinies, ka parādās rezultāts, izvade vai vismaz nav kļūdas paziņojuma.
  4. Atrodi vienu drošu vietu, ko drīkst mainīt: tekstu, skaitli, krāsu, mainīgā vērtību vai testa ierakstu.
  5. Maini tikai šo vienu vērtību un palaid kodu vēlreiz.
  6. Salīdzini rezultātu pirms un pēc izmaiņas. Ja parādās kļūda, atcel pēdējo izmaiņu un palaid vēlreiz.
  7. Turpini pie 2. uzdevuma tikai tad, kad šis mazais piemērs darbojas.

2. uzdevums - Ievieto algoritmu projektā

Pievieno šīs stundas paņēmienu kā nelielu, lietotājam redzamu projekta daļu.

  1. Atver script.js un pārliecinies, ka mainīgie let punkti = 0; let dzivibas = 3; ir definēti faila augšā.
  2. Pievieno elementu <p id="statuss"></p> index.html.
  3. Pievieno funkciju parbauditStavokli() ar if/else if/else blokiem: uzvara pie 100 punktiem, beigas pie 0 dzīvībām, citādi "Turpinās".
  4. Izsauc parbauditStavokli() pēc katras izmaiņas punktos vai dzīvībās.
  5. Saglabā un atver pārlūkā - mainī punktus un pārbaudi, ka statusa teksts mainās atbilstoši.
  6. Manuāli nomainī punkti = 100 konsolē - pārbaudi, ka parādās "Uzvara!".
  7. Salabo pirmo kļūdu, piemēram, ja === ir rakstīts kā =.
  8. Veic git commit -m "Add game state check with if/else".

3. uzdevums - Testē kodu un izdari secinājumu

Pārbaudi, vai algoritms darbojas paredzami vairākās situācijās.

  1. Atver Console un ieraksti punkti = 0; parbauditStavokli(); - pārbaudi, ka rāda "Turpinās".
  2. Ieraksti punkti = 100; parbauditStavokli(); - pārbaudi, ka rāda "Uzvara!".
  3. Ieraksti punkti = 0; dzivibas = 0; parbauditStavokli(); - pārbaudi, ka rāda beigu ziņojumu.
  4. Pievieno vēl vienu nosacījumu: ja dzivibas === 1, rāda "Pēdējā dzīvība!".
  5. Pārbaudi jauno nosacījumu ar dzivibas = 1; parbauditStavokli();.
  6. Salabo, ja nosacījumi pārklājas vai parādās nepareizs teksts.
  7. Pieraksti vienu secinājumu: kāpēc labāk pārbaudīt dzivibas <= 0, nevis tieši === 0.

Papildu uzdevums - Pievieno mazu funkciju

Ja pamatdarbs ir pabeigts, paplašini projektu ar vienu nelielu programmētu uzlabojumu.

  1. Pievieno mainīgo let laiks = 60; un elementu <p id="taimeris">60</p>.
  2. Pievieno pogu "Pagāja sekunde" un funkciju notikums(), kas samazina laiku un atjauno ekrānu.
  3. Paplašini parbauditStavokli() ar nosacījumu: ja laiks <= 0, rāda "Laiks beidzies!".
  4. Manuāli iestati laiks = 1 un nospied pogu - pārbaudi, ka parādās pareizais ziņojums.
  5. Pārbaudi, ka neviens cits nosacījums ("Uzvara!", "Turpinās") neaizklāj laika beigu ziņojumu.
  6. Veic git commit -m "Add timer-based game over condition".
  7. Demonstrē klasesbiedram - vai viņš saprot, kāpēc rāda "Laiks beidzies!" un ne citu tekstu?

Biežākās kļūdas (un kā tās labot):

Koda piemērs

let spelesPunkti = 850;
let irAtslega = true;

// 1. Vienkāršs If/Else
if (spelesPunkti >= 1000) {
    console.log("Uzvara! Izcils sniegums.");
} else {
    console.log("Spēle turpinās. Krāj punktus!");
}

// 2. Else If un Loģiskais operators (&&)
if (spelesPunkti >= 500 && irAtslega === true) {
    document.getElementById("rezultats").innerText = "Tu atbloķēsi klases bonusa uzdevumu!";
} else if (spelesPunkti >= 500 && irAtslega === false) {
    document.getElementById("rezultats").innerText = "Tev vajag atslēgu!";
} else {
    document.getElementById("rezultats").innerText = "Bīstama teritorija...";
}
Konsoles izvade: Spēle turpinās. Krāj punktus!
HTML elementa izvade: Tu atbloķēsi klases bonusa uzdevumu!
⬅ Iepriekšējā stunda Nākamā stunda ➡