12.09. (čas 3) Definisanje podataka na nivou bloka (foreach ciklus, vidljivost promenljivih)
Teorija
U jeziku C promenljive se definišu na početku funkcije. Ako to zaboravimo, dobijemo grešku. U C# stvari su malo prirodnije: promenljivu možemo da napravimo baš tamo gde nam treba. Ako je koristimo samo u jednom if bloku, nema potrebe da je pišemo na početku. Ukratko: jeziku C# promenljive se mogu definisati u okviru svakog bloka koda (npr. unutar for, if, {
} zagrada) i vidljive su samo u tom bloku.
Bitno je da znamo da promenljiva „živi“ samo u onom delu koda u kojem je napravljena. Ako je napravimo u for petlji, ona van te petlje ne postoji. To se zove vidljivost promenljivih.
Primer:
if (true)
{
int x = 5; // ova promenljiva postoji samo unutar ovog if bloka
}
Još jedna stvar koja razlikuje C# od C jezika je foreach petlja. Dok smo u C jeziku za prolazak kroz niz morali ručno da koristimo indekse (for (i=0;
i<n; i++)), u C# možemo da kažemo: „Prođi kroz svaki element niza i uradi nešto sa njim.“
Sintaksa je vrlo jednostavna:
foreach (var element in kolekcija)
{
// koristi element
}
Na ovaj način ne brinemo o indeksima, dužini niza i slično — petlja foreach to sama rešava. To je i sigurnije, jer smanjuje mogućnost greške.
Praktični primer
using System;
class Program
{
static void Main()
{
int[] brojevi = { 1, 2, 3, 4, 5 };
foreach (int broj in brojevi)
{
Console.WriteLine("Sledeći broj je: " + broj);
}
}
}
Vežba za učenike
Zadatak 3: Napraviti niz imena (najmanje 4 imena) i koristiti foreach da se ispiše svako ime u posebnom redu.
Rešenje:
using System;
class Program
{
static void Main()
{
string[] imena = { "Ana", "Marko", "Jelena", "Petar" };
foreach (string ime in imena)
{
Console.WriteLine("Ime: " + ime);
}
}
}
Pitanja za proveru znanja
-
Šta znači da promenljiva ima vidljivost samo u okviru bloka?
-
U čemu je prednost
foreachu odnosu nafor? -
Napišite primer niza i
foreachciklusa koji ga prolazi.
Odgovori:
-
To znači da promenljiva postoji i može se koristiti samo unutar
{ }u kojima je definisana. -
foreachje jednostavniji i automatski prolazi kroz sve elemente kolekcije bez potrebe da ručno radimo sa indeksima. -
foreach (int broj in new int[] {1,2,3}) Console.WriteLine(broj);
Pitanja za proveru gradiva (za sve tri lekcije)
-
Koja je osnovna razlika između proceduralnog i objektno-orijentisanog programiranja?
-
Koje vrednosti može da ima tip
boolu C# jeziku? -
Šta znači da promenljiva ima „vidljivost“ samo unutar bloka?
-
U čemu je prednost
foreachpetlje u odnosu na klasičnuforpetlju? -
Napisati kratak primer programa koji koristi
booliifuslov.
Odgovori:
-
Proceduralno programiranje koristi funkcije i naredbe, dok objektno-orijentisano koristi klase i objekte sa metodama i osobinama.
-
trueifalse. -
To znači da promenljiva postoji i može se koristiti samo unutar zagrada
{ }gde je definisana. -
foreachje jednostavniji i automatski prolazi kroz sve elemente niza ili kolekcije, bez indeksa. -
Primer:
bool imaNovca = true; if (imaNovca) Console.WriteLine("Idemo u kupovinu!"); else Console.WriteLine("Nema kupovine.");
🏠 Domaći zadaci
Zadatak 1:
Napisati program koji na ekranu ispisuje vaše ime tri puta, koristeći tri poziva Console.WriteLine.
Zadatak 2:
Napisati program koji od korisnika traži broj, i proverava da li je broj paran ili ne.
-
Ako je paran, ispisati: „Broj je paran“.
-
Ako nije, ispisati: „Broj je neparan“.
Zadatak 3:
Napisati program koji u nizu čuva nazive tri grada (npr. Beograd, Novi Sad, Niš), a zatim ih sve ispisuje pomoću foreach petlje.
Zadatak 4:
Napisati program koji u nizu čuva 5 brojeva. Program treba da:
-
Prođe kroz sve brojeve pomoću
foreachpetlje. -
Za svaki broj proveri da li je paran (
boolprovera). -
Ako je broj paran – ispisati: „Broj X je paran“.
-
Ako je broj neparan – ispisati: „Broj X je neparan“.
Primer ulaza
Niz: { 3, 10, 7, 8, 15 }
Očekivani izlaz
Broj 3 je neparan
Broj 10 je paran
Broj 7 je neparan
Broj 8 je paran
Broj 15 je neparan
Mini-test za kraj ?
Pitanja:
-
Objasni glavnu razliku između jezika C i C#.
-
Šta znači da je C# objektno-orijentisan jezik?
-
Koje dve vrednosti može da ima tip
bool? -
Napiši primer koda u C# koji koristi
boolpromenljivu iifnaredbu. -
Šta znači da promenljiva „živi“ samo u okviru bloka koda?
-
Napiši kratak primer
foreachpetlje koja prolazi kroz niz brojeva.