Najveći i najmanji
U prvom redu je broj n, a u drugom n celih brojeva razdvojenih razmakom. Ispisati najveći i najmanji broj.
Primer
Ulaz
5
3 -8 12 7 0Izlaz
Najveci: 12
Najmanji: -8Program ne mora da izvršava naredbe uvek istim redom. Grananje bira koji deo koda će se izvršiti u zavisnosti od uslova, a petlje ponavljaju isti deo koda više puta. Sintaksa je skoro ista kao u jezicima C, C++ i Java, a C# dodaje i switch izraz i petlju foreach.
Uslov u zagradi mora biti tipa bool. Više uslova se nadovezuje sa else if; proverava se redom i izvršava se samo prva grana čiji je uslov tačan.
using System;
class Program
{
static void Main()
{
int poeni = int.Parse(Console.ReadLine());
int ocena;
if (poeni >= 90)
ocena = 5;
else if (poeni >= 75)
ocena = 4;
else if (poeni >= 60)
ocena = 3;
else if (poeni >= 45)
ocena = 2;
else
ocena = 1;
Console.WriteLine($"Ocena: {ocena}");
}
}
Kada grana ima više naredbi, piše se blok u vitičastim zagradama { … }. Za izbor između dve vrednosti postoji kraći uslovni operator: uslov ? vrednost1 : vrednost2.
Kada se jedna vrednost poredi sa više konstanti, pregledniji je switch. Svaka grana se završava naredbom break; više oznaka case može deliti istu granu, a od C# 9 dozvoljeni su i uslovi poput case >= 1 and <= 5.
using System;
class Program
{
static void Main()
{
int dan = int.Parse(Console.ReadLine());
switch (dan)
{
case 6:
case 7:
Console.WriteLine("Vikend");
break;
case >= 1 and <= 5: // relacioni obrazac (C# 9)
Console.WriteLine("Radni dan");
break;
default: // nijedan slučaj nije odgovarao
Console.WriteLine("Pogresan unos");
break;
}
}
}
switch izraz vraća vrednost: svaki slučaj je oblika obrazac => vrednost, a _ označava „sve ostalo“.
using System;
class Program
{
static void Main()
{
int mesec = int.Parse(Console.ReadLine());
string godisnjeDoba = mesec switch
{
12 or 1 or 2 => "zima",
3 or 4 or 5 => "prolece",
6 or 7 or 8 => "leto",
9 or 10 or 11 => "jesen",
_ => "nepostojeci mesec"
};
Console.WriteLine(godisnjeDoba);
string parnost = mesec % 2 == 0 ? "paran" : "neparan"; // uslovni operator
Console.WriteLine($"Broj {mesec} je {parnost}.");
}
}
for se koristi kada se unapred zna broj ponavljanja. while ponavlja dok je uslov tačan i uslov proverava pre svakog prolaza. do-while uslov proverava posle prolaza, pa se telo izvrši bar jednom.
using System;
class Program
{
static void Main()
{
// for: početak; uslov; korak
for (int i = 1; i <= 5; i++)
Console.Write(i * i + " ");
Console.WriteLine();
// while: broj cifara broja
int n = 90210, cifara = 0;
while (n > 0)
{
n /= 10;
cifara++;
}
Console.WriteLine($"Broj cifara: {cifara}");
// do-while: telo se izvrši bar jednom
int k = 0;
do
{
Console.Write(k + " ");
k += 3;
} while (k < 10);
Console.WriteLine();
}
}
Petlje se mogu ugnježdavati: unutrašnja petlja se izvrši cela za svaki prolaz spoljašnje.
using System;
class Program
{
static void Main()
{
for (int i = 1; i <= 4; i++)
{
for (int j = 1; j <= 4; j++)
Console.Write($"{i * j,4}"); // svaki broj zauzima 4 mesta
Console.WriteLine();
}
}
}
foreach prolazi kroz sve elemente niza ili kolekcije, bez brojača. Naredba continue preskače ostatak tekućeg prolaza, a break odmah prekida petlju.
using System;
class Program
{
static void Main()
{
int[] brojevi = { 4, -2, 7, 0, 9, 12, -5 };
int zbir = 0;
foreach (int x in brojevi)
{
if (x < 0) continue; // preskoči negativne
if (x > 10) break; // prekini kod prvog broja većeg od 10
zbir += x;
}
Console.WriteLine($"Zbir: {zbir}");
}
}
Sabrani su 4, 7, 0 i 9; broj −2 je preskočen, a kod broja 12 petlja je prekinuta, pa se −5 ni ne proverava. Nizovi su detaljno objašnjeni u sledećoj lekciji.
Za svaki zadatak postoji primer, uputstvo i rešenje. Rešenja su provereno tačna na primerima iz teksta.
U prvom redu je broj n, a u drugom n celih brojeva razdvojenih razmakom. Ispisati najveći i najmanji broj.
5
3 -8 12 7 0Najveci: 12
Najmanji: -8Učitati n (n ≥ 2) i ispisati sve proste brojeve od 2 do n, razdvojene razmakom.
302 3 5 7 11 13 17 19 23 29==; jedno = je dodela i u uslovu je greška.switch naredbi svaka grana mora da se završi sa break (ili return).while petlje nekad menja – inače petlja nema kraja.foreach petlji promenljiva je samo za čitanje; za izmenu elemenata niza koristi for.1. Koliko puta se izvrši telo petlje for (int i = 0; i < 5; i++)?
2. Koja petlja sigurno izvrši telo bar jednom?
3. Šta radi naredba continue?
4. Šta znači _ u switch izrazu?