24
Univerzitet u Tuzli Mašinski fakultet RAČUNARI I PROGRAMIRANJE OOP, C#, - elementarne osnove Dr. Salko Ćosić Školska 2014/2015

programiranje 12

  • Upload
    karbon1

  • View
    26

  • Download
    3

Embed Size (px)

DESCRIPTION

Teoretska osnova proceduralnog i OO koncepta, fortran i primjeri

Citation preview

  • Univerzitet u Tuzli Mainski fakultet

    RAUNARI I PROGRAMIRANJE

    OOP, C#, - elementarne osnove

    Dr. Salko osi

    kolska 2014/2015

  • C# jezik i NET okruenje

    .NET okruenje: okruenje za razvoj i izvoenje programa na razliitim operativnim sistemima i

    hardverskim platformama, nezavisno od programskog jezika u kojem su ti programi pisani

    (portabilnost)

    C# je razvijen od strane Microsoft-a (Jun 2000), razvoj

    optih i internet aplikacija (web servisa)

    Language and platform- independence - jezik

    nezavisan od platforme

    izvorni kd iz C# ne prevodi se mainski jezik, ve u tzv.

    meukod (Common Intermediate Language, CIL,

    zajedniki meujezik)

    C# programi se kompajliraju u Microsoft Intermediate

    Language (MSIL)

    MSIL code se pomou CLR prevode u mainski code prije

    izvravanja

    Program se izvodi (izvrava) pomou Common Language

    Runtime (CLR) -modul ukljuen u operativni sistem (OS)

    koji isporuuje proizvoa operativnog sistema

  • C# je osnovni jezik ".net" platforme, (C++,VB, JScript .NET), prvi put se pojavljuje 2000 god.

    70% Java, 10% C++, 5% Visual Basic, 15% new

  • Kljune rijei: Kljune rijei su rezervisane oznake koje imaju posebno znaenje u jeziku C#, te se ne

    mogu koristiti za identifikatore (imenovanje objekata)

    Komentari

    Jednolinijski komentari: // Izvoenje uvijek poinje od Main metode

    Blok komentari: /* ispis bloka teksta koji objanjava rad programa */

    Dokumentacijski komentari (s XML oznakama): Omoguavaju automatsko generisanje

    dokumentacije iz teksta komentara u izvornom kodu

    ///

    /// Ova metoda rauna zbir parnih brojeva od 2 100 ///

    abstract event new struct

    as explicit null switch

    base extern object this

    bool false operator throw

    break finally out true

    byte fixed override try

    case float params typeof

    catch for private uint

    char foreach protected ulong

    checked goto public unchecked

    class if readonly unsafe

    const implicit ref ushort

    continue in return using

    decimal int sbyte virtual

    default interface sealed void

    delegate internal short volatile

    do is sizeof while

    double lock stackalloc

    else long static

    enum namespace string

  • Imenski prostor, Imenici (namespaces)

    using System; // upotreba namespace-a System (prostor imena)

    Zajedniki naziv za kolekcije gotovih klasa, olakavaju izgradnju i organizaciju programa,

    Mogu postojati dvije klase s istim imenima ako su definisane u razliitim imenicima, tada se

    moe izbjei problem imenovanja klasa (name clash)

    Na primjer, klasa Button je definisana u imeniku System.Windows.Forms,

    (tipka koja se koristi u Windows GUI aplikacijama)

    Takoe, tip (klasa) Button je definisana i u imenicima

    System.Web.UI.WebControls

    System.Windows.Controls

    Prvi C# program:

    using System; // upotreba namespace-a System (kolekcija sistemskih klasa)

    public class HELLO_WORLD program HELLO_WORLD

    { print*,'OVO JE MOJ PRVI FOR. PROGR'

    // Main metod poinje izvravanje C# aplikacije end public static void Main( string[] args )

    {

    Console.Write( "OVO JE MOJ PRVI C# PROGRAM" );

    // ispis na ekran

    } // end metod Main

    } // end class HELLO_WORLD

  • definicija klase:

    class Ime_Klase : Ime_prethodno_definisane_klase

    { definisanje lanova

    }

    Class Student // PRIMJER

    {

    String ime, prezime;

    int godina_studija, skolska_godina;

    DateTime datum_rodjenja;

    int [] ocjene;

    double prosjek;

    Char odsjek; definisanje lanova podaci (atributi)

    {

    void Priprema_Ispit (a,b,c)

    definisanje lanova metodi

    }

    } // zavretak definicije klase

  • Poziv metoda - opti oblik: povratni_tip Ime_metoda (lista parametara) {tijelo metoda}

    using System;

    //... pristup metodu klase

    Console.WriteLine(/*...*/); System.Console.WriteLine(/*...*/);

    Main metoda: predstavlja ulaznu taku u izvoenje programa

    Mora biti deklarisana unutar klase

    Mora biti statika (ne pamti vrijednosti iz prethodnih poziva)

    Ne mora biti javna (public)

    Moe biti tipa void ili tipa int

    Moe imati praznu listu argumenata ili primati niz znakovnih nizova (string[]) kao argumente

    Unutar jedne klase moe biti samo jedna Main metoda

    Oblici metoda main: static void Main() { ... }; static void Main(string[] args) { ... }

    static int Main() { ... }; static int Main(string[] args) { ... }

  • C# matematika:

  • PROSTI TIPOVI (NUMERIKI)

    Cjelobrojni brojevi - integer

    Tip Raspon vrijednosti Opis

    sbyte 128 do 127 8-bitni cijeli broj s predznakom

    byte 0 do 255 8-bitni cijeli broj bez predznaka

    char U+0000 do U+ffff 16-bitni Unicode znak

    short 32,768 do 32,767 16-bitni cijeli broj s predznakom

    ushort 0 do 65,535 16-bitni cijeli broj bez predznaka

    int 2,147,483,648 do 2,147,483,647 32-bitni cijeli broj s predznakom

    uint 0 do 4,294,967,295 32-bitni cijeli broj bez predznaka

    long 9,223,372,036,854,775,808 do 9,223,372,036,854,775,807

    64-bitni cijeli broj s predznakom

    ulong 0 do 18,446,744,073,709,551,615 64-bitni cijeli broj bez predznaka

  • Realni brojevi (float)

    Tip Raspon vrijednosti Tanost (cifara) Veliina u memoriji

    float 1,510-45 do 3,41038 7 32 bita

    double 5,010-324 do 1,710308 15-16 64 bita

    decimal 1,010-28 do 7,91028 28-29 128 bitova

  • OPERATORI

    Vrsta Operator

    Aritmetiki + - * / %

    Logiki & | ^ ! && || true, false

    Bitovni & | ^ ~

    Inkrementiranja, dekrementiranja ++ -- (uveati ili umanjiti za inkrement)

    Poreenje == != < > =

    Pridruivanja = += -= *= /= %= &= |= ^= =

    Pristupa lanu . (dot operator)

    Indeksiranja []

    Pridruivanja tipa ()

    Uslovni operator ?:

    Dodavanje i uklanjanje delegata + -

    Kreiranja objekta new

    Informacije o tipu is sizeof typeof

  • OPERATORI POREENJA (logiki)

    jednakosti: ==

    int broj = 9;

    bool jednakoJe = broj = = 9;

    nejednakosti: !=

    bool razliito = broj != 7;

    manje / vee (ili jednako): < >=

    bool vee = broj > 5;

    bool manjeIliJednako = broj

  • -= oduzimanje

    = posmak udesno

    &= i

    |= ili

    ^= iskljuivo ili

  • PRIMJER KONZOLNE APLIKACIJE - // ZBIR_Cijelih_Brojeva.cs

    // Ovaj program racuna sumu dva cijela broja unesena sa tastature /* komentar */

    using System; // upotreba namespace-a System (prostor imena)

    public class SUMA_BROJEVA

    {

    // Main metod poinje izvravanje C# aplikacije

    public static void Main( string[] args )

    {

    int broj_1; // deklaracije tipa brojeva

    int broj_2; //

    int zbir ; // deklaracija rezultata

    Console.Write( "unesi prvi broj: " );

    // unos sa tastature

    broj_1 = Convert.ToInt32( Console.ReadLine() );

    Console.Write( " unesi drugi broj: " );

    // // unos sa tastature

    broj_2 = Convert.ToInt32( Console.ReadLine() );

    // konverzija tipa "string u integer"

    zbir = broj_1 + broj_2; // racunanje zbira

    Console.WriteLine( "Sum is {0}", zbir ); // prikazuje zbir

    } // end metod Main

    } // end class SUMA_BROJEVA

    Svaki klasa se obino definie unutar nekog imenika i vidljiva je samo unutar njega

    elimo li koristiti tu klasu, moramo ukljuiti taj imenik: using

  • KREIRANJE (INSTANCIRANJE) OBJEKTA - KONSTRUKTOR

    Student salko; //referenca na objekat klase Student (deklaracija sloene projenljive)

    salko=new Student (''IME'', ''Prezime'', godina_studija,)

    metoda koja kreira objekt je ''konstruktor'' i ima ime isto kao klasa ije objekte insancira

    Student salko=new Student (''IME'', ''Prezime'', godina_studija,) // kompaktni zapis

    Blokovi naredbi

    Dijelovi programa koji se uslovno izvode ili ije se izvoenje ponavlja grupiu se u blokove

    naredbi jednu ili vie naredbi koje su omeene parom vitiastih zagrada { }

    static void Main() { // poetak bloka

    // ... naredbe unutar bloka

    } // kraj bloka

    Doseg (scope) : Varijabla, atribut, objekt definisan u bloku bit e vidljiv samo unutar tog bloka:

    {

    int i = 91;

    }

    Console.WriteLine(i); // greka, i je izvan dosega

  • LOGIKO GRANANJE - tri naina

    Grananje toka naredbom if (1)

    if ( logiki_izraz ) {

    // blok naredbi

    }

    if (a > 0) {

    Console.WriteLine("Broj je vei od nule");

    }

    IF-ELSE BLOK (2)

    if ( logiki_izraz )

    // prvi blok naredbi

    else

    // drugi blok naredbi

    if (a > 0) {

    Console.WriteLine("Broj je vei od nule");

    }

    else {

  • Console.WriteLine("Broj nije vei od nule");

    }

    IF ELSE BLOK (3)

    if ( logiki_izraz1 )

    // prvi blok naredbi

    else if (logiki_izraz2 )

    // drugi blok naredbi

    else if (logiki_izraz3 )

    // drugi blok naredbi

    ...

    else

    // zadnji blok naredbi

    LOGIKO GRANANJE NAREDBOM SWITCH

    switch ( cjelobrojni_izraz_ili_string ) {

    case 1 :

    // prvi blok naredbi

    break;

    case 2 :

  • // drugi blok naredbi

    break;

    case 3 :

    case literal4 :

    // trei blok naredbi

    break;

    default:

    // zadnji blok naredbi

    break;

    }

    PRIMJER SWITCH BLOKA

    int month = DateTime.Now.Month;

    switch (month) {

    case 1:

    Console.WriteLine("januar");

    break;

    case 2:

    Console.WriteLine("februar");

    break;

  • default:

    Console.WriteLine("niti jedan od navedenih");

    break;

    }

    PETLJE (iterativne, cikline strukture), 3 petlje

    while ( uslov za izvravanje )

    // blok naredbi

    PRIMJER WHILE PETLJE

    int n = 9;

    Console.Write("{0}! = ", n);

    int faktorijel = 1;

    while (n > 0) {

    faktorijel *= n;

    n--; // dekrementiranje

    }

    Console.WriteLine(faktorijel);

  • DO WHILE PETLJA

    do

    // blok naredbi

    while ( uslov_ponavljanja ); PRIMJER - pogaanje prethodno uneenog broja

    int trazeniBroj = 14;

    int brojPokusaja = 0;

    int uneseniBroj;

    do {

    Console.WriteLine("{0}. pokuaj: ", ++brojPokusaja);

    uneseniBroj = Convert.ToInt32(Console.ReadLine());

    if (uneseniBroj > trazeniBroj)

    Console.WriteLine(" MANJE !");

    else if (uneseniBroj < trazeniBroj)

    Console.WriteLine(" VIE ! ");

    }

    while (uneseniBroj != trazeniBroj);

    Console.WriteLine("POGODAK");

  • PETLJA FOR

    for ( poetni_izraz ; uslov_izvoenja ; izraz_prirasta )

    // blok naredbi

    PRIMJER PETLJE FOR:

    int n = 17;

    Console.Write("Zbir brojeva od 1 do {0} = ", n);

    int zbir = 0;

    for (int i = 1; i

  • PRVI windows c# program

    using System; using System.Windows.Forms; // koritenje gotovih klasa iz namespace-a // Suma.cs // Ovaj program vri sumiranje parnih clanova niza (0-100) i rezultat prikazuje na // posebnoj formi (message box) class Suma { static void Main( string[] args ) { int suma = 0; // deklaracija i inicijalizacija for ( int number = 2; number

  • ZA VJEBU:

    Napisati jednostavan CS projekat u kome dva objekta (osobe) razmjenjuju pozdrave preko MessageBox

    prozora.