dodatak: 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.
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žbe
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);
🏠 Zadaci za rad kod kuće
Zadatak 1: Napisati program koji na ekranu ispisuje vaše ime tri puta, koristeći tri poziva Console.WriteLine.
Zadatak 2: Napisati program koji u nizu čuva nazive tri grada (npr. Beograd, Novi Sad, Niš), a zatim ih sve ispisuje pomoću foreach petlje.
Zadatak 3: 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