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.