Ponavljanje gradiva: , ,
1. Pokrenuti Visual Studio
2. Kreirati novi projekat
  1.  FileNewProject.
  2. U prozoru za novi projekat, prvo se bira Visual C# ispod opcije Installed Templates.
  3. Zatim se bira Console Application.
  4. U donjem delu prozora se unosi naziv projekta (npr. Primer1 ili MojaAplikacija1) i lokacija na disku gde treba da se projekat sačuva.
  5. I na kraju, klik na OK.
3. Definisati glavni kod aplikacije

Kada se otvori novi projekat, sa desne strane, u Solution Explorer-u,vidi  se projekat i sve u njemu. U okviru projekta je fajl Program.cs u kojem je osnovni kod C# aplikacije.

Kako to obično izgleda na početku:

using System;

namespace MojaAplikacija  // Naziv namespace-a se obično poklapa sa nazivom projekta!
{
    class Program
    {
        static void Main(string[] args) 
        {
            Console.WriteLine("Hello, world!");
            Console.ReadLine();
        }
    }
}
4. Pokrenuti aplikaciju na jedan od sledeća dva načina
  1. opcija: pritisnuti F5 ili u meniju odabrati DebugStart Debugging.
    • ako se na kraju programa koristi Console.ReadLine() ili Console.ReadKey()
      • konzola će se otvoriti i odradiće šta god da je u programu.
      • aplikacija će čekati unos od strane korisnika zbog Console.ReadLine() ili Console.ReadKey() komande.
    • ako se ne koriste komande koje čekaju unos korisnika, tada će program da se izvrši i automatski zatvori
  2. opcija je da se koristi CTRL+F5 ili DebugStart Without Debugging.
    • tada će da se program izvrši i da čeka sa porukom tipa: "Press any key to continue..."
    • nema potrebe za unosom komandi koje čekaju da korisnik nešto unese
5. Zatvoriti konzolu

Pritiskom na taster Enter, konzola će se zatvoriti i program će se završiti.

U konzolnoj aplikaciji u C#, za ispis teksta se koristi jedna od metoda Console.WriteLine() ili Console.Write() iz klase Console.

1. Console.WriteLine()

Metoda Console.WriteLine() ispisuje tekst u konzolu i prelazi u novi red nakon ispisa.

    Console.WriteLine("Dobar dan ");

Kako to izgleda:

using System;
namespace MojaAplikacija
{
  class Program
  {
    static void Main(string[] args)
    {
      Console.WriteLine("Dobar dan!"); // Ispisuje poruku i prelazi u novi red
    }
  }
}

2. Console.Write()

Metoda Console.Write() ispisuje tekst, ali ne prelazi u novi red nakon ispisa, što znači da će sledeći ispis biti na istoj liniji.

  Console.Write("Ovo je ispis bez prelaska u novi red.");
Console.Write(" Nastavlja na istoj liniji."); // ako se ne unese razmak na početku, onda se reči "prilepe"

Primer kombinovanja

Obe metode mogu da se koriste zajedno u cilju boljeg izgleda priikom ispisa:

using System;

namespace MyConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Ime: ");
            Console.WriteLine("Marko");  // Ispisuje ime i prelazi u novi red
            
            Console.Write("Prezime: ");
            Console.WriteLine("Marković");  // Ispisuje prezime u novom redu
        }
    }
}

Rezultat ovog koda biće:

Ime: Marko
Prezime: Marković

Tekst (ili bilo koji drugi unos) od strane korisnika se vrši korišćenjem metode Console.ReadLine() iz klase Console. Ova metoda čita ceo red teksta koji korisnik unese u konzolu i vraća ga kao string.

Primer unosa i ispisa teksta:
using System;

namespace MojaAplikacija
{
    class Program
    {
        static void Main(string[] args)
        {
            // Pitanje za korisnika
            Console.WriteLine("Unesite svoje ime:");

            // Unos korisnika
            string ime = Console.ReadLine();

            // Ispis unešenog imena
            Console.WriteLine("Zdravo, " + ime + "!");
        }
    }
}
Objašnjenje:
  1. Console.WriteLine("Unesite svoje ime:") – Ispisuje poruku u konzolu i prelazi u novi red.
  2. string ime = Console.ReadLine() – Ova linija koda čeka da korisnik unese tekst i pritisne Enter. Tekst koji korisnik unese se čuva u promenljivoj ime kao string.
  3. Console.WriteLine("Zdravo, " + ime + "!") – Ispisuje pozdrav zajedno sa unešenim imenom.

Unos brojeva:

Opet se koristi Console.ReadLine(), gde se unosi ceo red, ali je posle toga potrebno da se uradi konverzija odgovarajući numerički tip pomoću metoda poput int.Parse() ili double.Parse() ili Convert.ToInt32() ...

Primer unosa broja:
using System;

namespace MojaAplikacija
{
    class Program
    {
        static void Main(string[] args)
        {
            // Pitanje za korisnika
            Console.WriteLine("Unesite broj:");

            // Unos korisnika
            string unos = Console.ReadLine();

            // Pretvaranje stringa u ceo broj (int)
            int broj = int.Parse(unos);

// Uvećanje broja za 1
broj++; // Ispis uvećanog broja Console.WriteLine("Uvećani broj: " + broj); } } }
Zapamtite: Za unos bilo čega u konzoli se koristi Console.ReadLine() koji unosi ceo red slova, dokle god se ne pritisne Enter. Ako nam treba broj onda taj dobijeni string treba da se konvertuje u odgovarajući tip !

Uvod u generičke tipove

Generički tipovi su koncept u programiranju koji omogućava kreiranje funkcija, klasa ili struktura podataka koje mogu raditi sa različitim tipovima podataka. Umesto da se piše kôd za svaki konkretan tip, generički tipovi omogućavaju pisanje opšteg koda koji može raditi sa bilo kojim tipom podataka. Ovaj pristup povećava ponovnu upotrebljivost koda i smanjuje potrebu za dupliranjem koda.

Ključni pojmovi:
  • Generički tip: Tip koji je definisan sa parametrom tipa, koji se specificira kada se koristi u kodu.
  • Sigurnost tipova: Osigurava da se podaci određenog tipa koriste na odgovarajući način, smanjujući mogućnost grešaka.
  • Ponovna upotrebljivost koda: Mogućnost da se isti kod koristi sa različitim tipovima podataka bez potrebe za njegovim prilagođavanjem.

Primeri upotrebe generičkih tipova:

  1. Generičke funkcije:

    • Generičke funkcije omogućavaju kreiranje funkcija koje mogu raditi sa različitim tipovima podataka.
    • Na primer, može se kreirati funkcija koja poredi dve vrednosti i vraća veću od njih, bez obzira na tip (broj, tekst, itd.).
  2. Generičke kolekcije:

    • Generičke kolekcije, poput lista ili nizova, mogu čuvati objekte bilo kog tipa, a tip podataka se specificira kada se kolekcija kreira.
    • Na primer, može se kreirati lista celih brojeva, lista tekstova ili čak lista objekata drugih klasa.
  3. Generičke klase:

    • Generičke klase su šabloni koji se mogu koristiti za rad sa različitim tipovima podataka.
    • Na primer, može se kreirati klasa koja predstavlja kutiju za čuvanje vrednosti bilo kog tipa.

Prednosti generičkih tipova:

  • Fleksibilnost: Omogućavaju rad sa različitim tipovima podataka koristeći isti kod.
  • Ponovna upotrebljivost: Smanjuju potrebu za pisanjem duplog koda za različite tipove podataka.
  • Sigurnost tipova: Generički tipovi omogućavaju kompajleru da proveri ispravnost tipova podataka tokom kompajliranja, smanjujući mogućnost grešaka tokom izvršavanja programa.

Uvođenje generičkih tipova:

  1. Zašto generički tipovi?

    • Bez generičkih tipova, moraeo bi se kreirati posebne verzije istih klasa ili metoda za svaki tip podataka sa kojim treba da se radi.
    • Na primer, ako treba kreirati klasu Box koja može čuvati vrednosti različitih tipova, morale bi se kreirati posebne klase za svaki tip (BoxInt, BoxString, itd.). Generički tipovi rešavaju ovaj problem omogućavajući korišćenje jednog koda za sve tipove.

Definisanje generičke metode:

  • Generičke metode omogućavaju kreiranje metoda koje mogu raditi sa različitim tipovima podataka, a tipovi se specificiraju kada se metoda poziva.
  • Sintaksa:
public void Print<T>(T item)
{
Console.WriteLine(item);
}

U ovom primeru, Print<T> je generička metoda koja može raditi sa bilo kojim tipom podataka, gde T predstavlja generički tip.

Definisanje generičke klase:

public class Box<T>
{
public T Value { get; set; }

public Box(T value)
{
Value = value;
}

public void Display()
{
Console.WriteLine("The value is: " + Value);
}
}
U ovom primeru, Box<T> je generička klasa koja može raditi sa bilo kojim tipom podataka, gde T predstavlja generički tip.

Korišćenje generičkih tipova:

  • Prilikom kreiranja objekta generičke klase, treba da se specificira tip podataka koji će se koristiti:
Box<int> intBox = new Box<int>(123);
intBox.Display(); // Output: The value is: 123

Box<string> strBox = new Box<string>("Hello");
strBox.Display(); // Output: The value is: Hello

Vežbe za učenike:

  1. Kreiranje generičke metode: Kreirati generičku metodu koja vraća veći od dva broja bilo kog tipa (int, float, double).
  2. Kreiranje generičke klase: Kreirati generičku klasu Pair<T1, T2> koja može čuvati par vrednosti različitih tipova podataka i implementirati metodu za prikaz ovih vrednosti.

Pitanja za diskusiju:

  1. Zašto su generički tipovi korisni u poređenju sa običnim tipovima?
  2. Kada biste koristili generičke klase, a kada generičke metode?
  3. Kako generički tipovi pomažu u povećanju sigurnosti tipova u vašem kodu?

 

Last modified: Tuesday, 2 December 2025, 4:50 AM