Stundas uzdevums: Izstrādāt ciklisku algoritmu, lai automātiski apstrādātu datu masīvus un ģenerētu HTML saturu, izvairoties no manuālas koda pārrakstīšanas.
2.6.1. Pieraksta, lasa un izpilda algoritmus ar cikliskām darbībām; 5.2.1. Problēmrisināšana un optimizācija.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ļā.
Vai gribi lapā parādīt 100 ienaidniekus? Tev nav jāraksta 100 koda rindiņas! Lai liktu datoram atkārtot darbību, mēs izmantojam for ciklu. Tas sastāv no trim svarīgām daļām iekavās, kas atdalītas ar semikolu (;):
| Daļa | Kods (Sintakse) | Ko tas nozīmē? |
|---|---|---|
| 1. Sākums | let i = 0; |
Kur sākam skaitīt? Parasti no 0, jo masīvi sākas ar 0. |
| 2. Nosacījums | i < 5; |
Cik ilgi atkārtosim? (Kamēr i ir mazāks par 5). |
| 3. Solis | i++ |
Ko darām pēc katra apļa? Palielinām i par 1. |
Kā tas izskatās kopā:
for (let i = 0; i < 5; i++) {
console.log("Šis teksts parādīsies 5 reizes!");
}
Lai JavaScript varētu dinamiski mainīt to, ko lietotājs redz ekrānā, tam ir jāatrod konkrēts HTML elements. Programmēšanā mēs to panākam ar document.getElementById(), kas sameklē elementu pēc tā unikālā id atribūta. Kad elements ir atrasts, varam mainīt tā saturu, izmantojot .innerHTML (ja satur HTML tagus) vai .innerText (tikai tekstam).
1. HTML sagatave:
<!-- Izveidojam elementu ar unikālu identifikatoru (id) -->
<div id="rezultats">Sākotnējais teksts</div>
2. JavaScript rīcība:
// Atrodam elementu un pārrakstām tā saturu
document.getElementById("rezultats").innerHTML = "Sistēma veiksmīgi ielādēta!";
// Apvienojumā ar 'for' ciklu, lai pakāpeniski papildinātu saturu
document.getElementById("rezultats").innerHTML = ""; // Vispirms iztukšojam saturu
for (let i = 1; i <= 3; i++) {
// Izmantojam += , lai pievienotu jaunu informāciju klāt esošajai
document.getElementById("rezultats").innerHTML += "Ielādēts modulis " + i + "<br>";
}
Š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.5 Cikli (Loops) un atkārtošanās loģika; detalizētu izpratni veidosi nākamajos uzdevumos.
Kopējamais piemērs vai sagatave: izmanto šo bloku kā starta punktu, nevis kā gala risinājumu.
// Atrodam elementu un pārrakstām tā saturu
document.getElementById("rezultats").innerHTML = "Sistēma veiksmīgi ielādēta!";
// Apvienojumā ar 'for' ciklu, lai pakāpeniski papildinātu saturu
document.getElementById("rezultats").innerHTML = ""; // Vispirms iztukšojam saturu
for (let i = 1; i <= 3; i++) {
// Izmantojam += , lai pievienotu jaunu informāciju klāt esošajai
document.getElementById("rezultats").innerHTML += "Ielādēts modulis " + i + "<br>";
}
script.js failā vai lapas esošajā skripta daļā.Pievieno šīs stundas paņēmienu kā nelielu, lietotājam redzamu projekta daļu.
index.html un pievieno elementu <div id="ienaidnieki"></div>.script.js un pievieno funkciju radītIenaidniekus(skaits).document.getElementById("ienaidnieki").innerHTML = "";for ciklu, kas pievieno skaits reižu <div class='ienaidnieks'>E[i+1]</div>.style.css klasi .ienaidnieks { display: inline-block; margin: 4px; padding: 8px; background: #FF5733; color: white; border-radius: 4px; }.radītIenaidniekus(5) un atver pārlūkā - pārbaudi, ka redzami 5 sarkani bloki.innerHTML sintaksi un klases nosaukumu.git commit -m "Generate enemies with for loop".Pārbaudi, vai algoritms darbojas paredzami vairākās situācijās.
radītIenaidniekus(3) - pārbaudi, ka tagad redzami tikai 3 ienaidnieki.radītIenaidniekus(0) - pārbaudi, ka nav redzams neviens bloks.#ienaidnieki - pārbaudi, cik <div> elementu ir iekšā.(i + 1) daļu ciklā.for ciklā aizmirstu i++?Ja pamatdarbs ir pabeigts, paplašini projektu ar vienu nelielu programmētu uzlabojumu.
let skala = [10, 20, 50, 100, 200];<ul id="punktu-skala"></ul> index.html.for ciklu izveido <li> katrai vērtībai masīvā.style="color: gold;".git commit -m "Display score scale with loop".i-- (samazināt) vietā i++ (palielināt), nosacījums vienmēr būs patiess. Pārlūks uzkārsies un "iesaldēs" lapu. Rūpīgi pārbaudi cikla soli!for (let i = 0, i < 5, i++) izmetīs kļūdu.i <= masivs.length (mazāks vai vienāds), cikls mēģinās nolasīt neeksistējošu elementu. Indeksi beidzas pirms garuma, tāpēc izmanto tikai < (mazāks).let labakieSpeletaji = ["Jānis", "Anna", "Pēteris", "Līga"];
// Atrodam HTML elementu (tukšu <ul> sarakstu)
let sarakstaElements = document.getElementById("top-saraksts");
// Cikls izies cauri visiem 4 spēlētājiem (indeksi 0, 1, 2, 3)
for (let i = 0; i < labakieSpeletaji.length; i++) {
// Katru apmācāmo pievienojam kā jaunu <li> elementu
sarakstaElements.innerHTML += "<li>" + (i+1) + ". vieta: " + labakieSpeletaji[i] + "</li>";
}