›_ ebskola.lv
← 3.3 3.5 →

3.4 Masīvi (Arrays) un datu strukturēšana

Stundas uzdevums: Pielietot masīvus, lai organizētu, saglabātu un atjauninātu vairākus saistītus spēles elementus (inventāru un rezultātus) vienuviet, veidojot interaktīvu datu bāzi.

2.6.1. Izmanto atbilstošas vienkāršas datu struktūras; 2.4.2. Strukturē datus, izvēloties racionālākos paņēmienus.
SR 2.4.3. Datu attēlošanas veidi

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: Datu vilciens (Masīvi)

Mainīgais ir kā viena kaste. Bet ko darīt, ja klasei ir projekta materiālu saraksts ar 10 lietām? Mēs izmantojam masīvu (Array) – tas ir kā vilciens, kur katrā vagonā ir savs saturs. Programmēšanā vagonus (indeksus) sāk skaitīt no 0!

Darbība Kods (Sintakse) Skaidrojums
Izveidot let soma = ["Koks", "Akmens"]; Izmanto kvadrātiekavas [ ] un komatus.
Izlasīt (Indekss) console.log( materiali[0] ); Dabū pirmo elementu ("Marķieris").
Pievienot materiali.push("Uzlīmes"); Pieliek jaunu vagonu vilciena beigās.
Saskaitīt materiali.length Pasaka, cik elementu kopā ir masīvā.

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.4 Masīvi (Arrays) un datu strukturēšana; detalizētu izpratni veidosi nākamajos uzdevumos.

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

<section class="iesildisanas-demo">
  <h2>3.4 Masīvi (Arrays) un datu strukturēšana</h2>
  <p id="rezultats">Sākuma teksts</p>
  <button id="poga">Pārbaudīt</button>
</section>
.iesildisanas-demo {
  padding: 16px;
  border: 2px solid #FFB142;
  border-radius: 6px;
}

.iesildisanas-demo button {
  cursor: pointer;
}
const rezultats = document.querySelector("#rezultats");
const poga = document.querySelector("#poga");

poga.addEventListener("click", () => {
  rezultats.textContent = "Kods darbojas: 3.4 Masīvi (Arrays) un datu strukturēšana";
});
  1. Atver darba failu vai rīku. Sagataves ievieto atbilstošajos projekta failos: index.html, style.css un script.js.
  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 izveido masīvu: let rezultati = [];
  2. Pievieno index.html saraksta elementu <ul id="rezultatu-saraksts"></ul>.
  3. Pievieno script.js funkciju paradītRezultatus(), kas ar innerHTML izveido <li> elementu katram rezultātam.
  4. Pievieno funkciju pierakstitRezultatu(p), kas izsauc rezultati.push(p) un tad paradītRezultatus().
  5. Pievieno pogu "Iesniegt rezultātu" un izsauc pierakstitRezultatu(punkti) no tās.
  6. Saglabā un atver pārlūkā - iesniegt dažus rezultātus un pārbaudi, ka saraksts pieaug.
  7. Salabo, ja saraksts netiek atjaunots - pārbaudi, vai innerHTML tiek notīrīts pirms jauna satura.
  8. Veic git commit -m "Add highscore array and display".

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 rezultati - pārbaudi, ka redzams masīvs ar iepriekš ievadītajiem datiem.
  2. Ieraksti rezultati.push(999) - pārbaudi, ka saraksts ekrānā atjaunojas ar jaunu elementu.
  3. Ieraksti rezultati[0] - pārbaudi, ka izvadās pirmais (ne otrais) elements.
  4. Ieraksti rezultati.length - pārbaudi, ka tas sakrīt ar reālo elementu skaitu lapā.
  5. Salabo, ja saraksts rāda nepareizu skaitu vai secību.
  6. Pievieno pogu "Notīrīt", kas izsauc rezultati = []; paradītRezultatus();.
  7. Pieraksti vienu secinājumu: kāpēc masīvs ir ērtāks nekā daudzi atsevišķi mainīgie.

Papildu uzdevums - Pievieno mazu funkciju

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

  1. Atrodi lielāko rezultātu masīvā: let labakais = Math.max(...rezultati);
  2. Pievieno elementu <p id="labakais"></p> un atjauno to pēc katras iesniegšanas.
  3. Atver pārlūkā, ievadi vairākus dažādus rezultātus - pārbaudi, ka "Labākais" atjaunojas.
  4. Pārbaudi tukšu masīvu (rezultati = []) - vai Math.max() neatgriež -Infinity?
  5. Nodrošini, ka tukšā gadījumā ekrānā parādās "Vēl nav rezultātu" nevis kļūda.
  6. Veic git commit -m "Track and display best score".
  7. Demonstrē klasesbiedram - vai labākais rezultāts redzami izceļas starp pārējiem?

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

Koda piemērs

// 1. Masīva definēšana
let spelesLimeni = ["Vienkāršs", "Vidējs", "Sarežģīts"];
let iegutiePunkti = [10, 50, 100];

// 2. Elementa nolasīšana (izvada: Vidējs)
console.log("Izvēlētais līmenis: " + spelesLimeni[1]);

// 3. Masīva papildināšana un garuma noskaidrošana
spelesLimeni.push("Eksperts"); // Pievienojam 4. līmeni
console.log("Kopējais līmeņu skaits: " + spelesLimeni.length);

// 4. Integrācija HTML
document.getElementById("nakamais-limenis").innerText = spelesLimeni[spelesLimeni.length - 1];
// length - 1 vienmēr atgriezīs pašu pēdējo elementu!
Konsolē:
Izvēlētais līmenis: Vidējs
Kopējais līmeņu skaits: 4

HTML elementā (#nakamais-limenis) parādīsies: Eksperts
⬅ Iepriekšējā stunda Nākamā stunda ➡