JavaScript: prvi koraci

Lekcija 9 od 17 · HTML, CSS i JavaScript

JavaScript je programski jezik pregledača: on čini stranice interaktivnim. Ako već znaš C++ ili Python, većina pojmova ti je poznata – ova lekcija pokazuje kako se oni pišu u JavaScript-u: promenljive, tipovi, grananje, petlje, nizovi, objekti i funkcije.

Pre nego što počneš: potrebno predznanje – CSS, osnove jednog programskog jezika (Python ili C++).
Kako da učiš: zadatke na kraju prvo uradi sam/a u svom editoru; uputstvo i rešenje otvori tek posle toga. Svaki primer ima kod i živi rezultat ispod njega; kod prekucaj u svoj fajl i menjaj ga.

Gde se piše i pokreće JavaScript

NačinKako
konzola pregledačaF12 → Console; kucaš naredbu i odmah vidiš rezultat – idealno za probu
u stranici<script> ... </script> na kraju body
poseban fajl (najbolje)<script src="js/skripta.js" defer></script> u head; defer – izvrši tek kad se učita ceo HTML
van pregledačaNode.js: node program.js u komandnoj liniji
<p>Otvori F12 → Console pa klikni dugme.</p>
<button onclick="console.log('Zdravo iz konzole!'); this.textContent = 'Kliknuto!';">Klikni</button>
<p id="izlaz"></p>
<script>
  // ispis na stranicu
  document.getElementById("izlaz").textContent = "2 + 3 = " + (2 + 3);
</script>

Rezultat:

console.log(...) je kao cout / print – ispisuje u konzolu. Tu se vide i greške u kodu (crveno).

Promenljive i tipovi

let ime = "Ana";          // tekst (string)
let razred = 7;           // broj (number) – nema posebnih int i double
let prosek = 4.75;
let takmicar = true;      // logička vrednost (boolean)
const PI = 3.14159;       // konstanta – ne može da se promeni

razred = razred + 1;      // let može da se menja
console.log(ime, razred); // Ana 8
console.log(typeof prosek);                    // "number"
console.log(`${ime} ide u ${razred}. razred`);  // šablon string sa ` (backtick)
C++PythonJavaScript
promenljivaint x = 5;x = 5let x = 5;
konstantaconst int N = 10;N = 10 (dogovor)const N = 10;
ispiscout << x;print(x)console.log(x);
celobrojno deljenje7 / 2 → 37 // 2 → 3Math.floor(7 / 2) → 3 (7 / 2 je 3.5)
jednakost======= (strogo, bez pretvaranja tipova)
Pazi: "5" + 3 daje "53" (tekst), a "5" * 3 daje 15. Brojeve iz polja forme pretvori sa Number(...). Uvek koristi === umesto ==, jer je "5" == 5 tačno, a "5" === 5 nije. Ne koristi staru reč var.

Grananje i petlje

let bodovi = 72;
if (bodovi >= 90) {
  console.log("odlično");
} else if (bodovi >= 60) {
  console.log("prošao/la");
} else {
  console.log("vežbaj još");
}

// for petlja – ista kao u C++
let zbir = 0;
for (let i = 1; i <= 10; i++) {
  zbir += i;
}
console.log("zbir 1..10 =", zbir);    // 55

// while
let n = 1234, cifre = 0;
while (n > 0) {
  n = Math.floor(n / 10);
  cifre++;
}
console.log("broj cifara:", cifre);   // 4

Logički operatori su kao u C++: && (i), || (ili), ! (ne).

Nizovi i objekti

let ocene = [5, 4, 5, 3];
ocene.push(5);                          // dodaj na kraj
console.log(ocene.length);              // 5
console.log(ocene[0]);                  // 5 – indeksi od 0

for (const o of ocene) {                // prolaz kroz sve elemente
  console.log(o);
}

// korisne metode nizova
let dvojke = ocene.map(o => o * 2);           // [10, 8, 10, 6, 10]
let petice = ocene.filter(o => o === 5);      // [5, 5, 5]
let suma = ocene.reduce((s, o) => s + o, 0);  // 22
ocene.sort((a, b) => a - b);                  // sortiranje brojeva rastuće

// objekat: grupa podataka pod imenima (kao struct / rečnik)
let ucenik = { ime: "Ana", razred: 7, ocene: [5, 4, 5] };
console.log(ucenik.ime);                // Ana
ucenik.grad = "Pančevo";                // novo svojstvo

Pazi: [10, 9, 1].sort() daje [1, 10, 9], jer bez funkcije poredi kao tekst. Za brojeve uvek piši sort((a, b) => a - b).

Funkcije

function povrsinaPravougaonika(a, b) {
  return a * b;
}

// isto, kraći zapis – "streličasta" funkcija
const kvadrat = x => x * x;

function prost(n) {
  if (n < 2) return false;
  for (let d = 2; d * d <= n; d++) {
    if (n % d === 0) return false;
  }
  return true;
}

console.log(povrsinaPravougaonika(3, 4));   // 12
console.log(kvadrat(9));                    // 81
let prosti = [];
for (let i = 1; i <= 30; i++) if (prost(i)) prosti.push(i);
console.log(prosti.join(" "));              // 2 3 5 7 11 13 17 19 23 29

Funkcija prost je ista kao u lekcijama iz C++-a – algoritmi se ne menjaju, samo zapis. Funkcije su u JavaScript-u posebno važne jer se pozivaju kao odgovor na događaje (klik, unos) – tema sledeće lekcije.

Zadaci za vežbu

Za svaki zadatak postoji primer, uputstvo i rešenje. Rešenja su provereno ispravna u pregledaču.

ZADATAK 01Težina: lako

Prosek i najbolja ocena

Napiši funkciju statistika(niz) koja za niz ocena vraća objekat sa prosekom (zaokruženim na dve decimale), najvećom i najmanjom ocenom. Isprobaj je u konzoli za [5, 4, 3, 5, 5, 2].

ZADATAK 02Težina: lako

Igra „Bum“

Ispiši brojeve od 1 do 20, ali umesto broja deljivog sa 3 ispiši „Bum“, deljivog sa 5 „Tras“, a deljivog i sa 3 i sa 5 „BumTras“. Rezultat ispiši u jednom redu, odvojen razmacima.

Česte greške i saveti
  • "5" + 3 je "53" – vrednosti iz forme pretvori u broj sa Number().
  • Poređenje sa ===, ne ==.
  • 7 / 2 je 3.5; za celobrojno deljenje Math.floor(7 / 2).
  • Greške se vide u F12 → Console – crvena poruka kaže fajl i red.

Proveri znanje

Otvori kviz

JavaScript osnove

1. Kako se deklariše promenljiva čija se vrednost menja?




2. Koliko je "2" + 2 u JavaScript-u?




3. Koji operator poredi bez pretvaranja tipova?




4. Šta vraća [3, 1, 2].map(x => x * 10)?