Programske paradigme Programska paradigma je osnovni stil računalnog  programiranja Paradigme se razlikuju u konceptu i ...
Programske paradigme Programski jezik može podržavati više paradigmi npr. C++ može biti proceduralni ili objektno-orijent...
Usporedba – borilačke vještine Programerska paradigma se može usporediti sa borilačkim vještinama (stil i oružje sa kojim...
Povijest računalnog programiranja Inicijalno računala su se strojno programirala Programiranje binarnim kodom Programir...
Programske paradigme Proceduralna paradigma Objektno orijentirana paradigma                      te Funkcijska paradigm...
Proceduralna paradigma Program se sastoji od niza deklaracija, naredbi  pridruživanja te poziva predefiniranih kao i vlas...
Objektno-orijentirana paradigma Kod objektno orijentiranog programiranja (OOP) program  se sastoji od skupa objekata koji...
Objektno-orijentirana paradigma Razvoj OOP-a započet je 60 godina prošlog stoljeda, a  popularnost objektno orijentirane ...
Osnovni temelji OOP-a Osnovni temelji objektno orijentirane paradigme su prije  svega objekt i klasa (razred) te metode, ...
Osnovni temelji OOP-a Konceptom objektnog programiranja uvodi se mogudnosti  definiranja novih korisničkih tipova – klasa...
PrimjerKlasa: AutomobilBroj objekata: 10Atributi(svojstva):Boja, težina, brojkonja...Metode: Otvorivrata, upaliautomobil, ...
klasa i objekt Klasa - zamišljena svojstva automobila Objekt - stvarni automobili na slici
Osnovni temelji OOP-a Objekti međusobno razmjenjuju informacije i traže  jedan od drugoga usluge. Pritom okolina objekta ...
Osnovni temelji OOP-a Funkcija koja inicijalizira objekt naziva se konstruktor Kada objekt više nije potreban posebna fu...
Apstrakcija Apstrakcija je određivanje bitnih osobina i funkcionalnosti  bez uvođenja nepotrebnih detalja ili objašnjenja...
Primjer
Primjer
Enkapsulacija (učahurivanje) Enkapsulacija je povezivanje bitnih informacija i elemenata  nekog objekta te njegovog ponaš...
Primjer
Nasljeđivanje Nasljeđivanje(eng. inheritance) je tehnika kojom se  definiranje neke klase vrši korištenjem definicije  po...
Primjer Kada bi imali klasu vozilo, koji bi sve njegovi atributi  bili? Kada bi imali klasu vozilo, koje bi sve njegove ...
Primjerusing System;public class Pravokutnik{    public Pravokutnik()    {              Console.WriteLine("Pravokutnik kon...
Primjerpublic class Kvadrat : Pravokutnik{  public Kvadrat()  {        Console.WriteLine("Kvadrat konstruktor");  }  publi...
Nasljeđivanje i konstruktor Konstruktor služi da bi kreirirali objekt nekog klasa Svaka klasa bi trebala imati svoj kons...
Polimorfizam Polimorfizam je, uz enkapsulaciju, apstrakciju i  nasljeđivanje trede važno svojstvo koje objektno  orijenti...
Primjer Neka je bazna klasa Geometrijski_lik, a izvedeni klasi  su Krug i Pravokutnik Svaki Geometrijski_lik ima svoju p...
Sučelje Objekt definira svoju interakciju s vanjskim svijetom kroz  funkcije koje podržava Npr. gumbi na televizoru čine...
Primjer
Primjer
Neno Dodig
Osnove C# programskog jezika C# je dizajniran da bude:    Jednostavan    Siguran    Objektno-orijentiran    Internet-...
C# jednostavnost i sigurnost C# je jednostavan programski jezik sa samo 80  ključnih riječi i desetak tipova Siguran je ...
Hello Worldnamespace HelloWorld{  class HelloWorld  {       static void Main()       {               // Korištenje objekta...
Metodavoid mojaMetoda(int param1, string param2){  //kod ide ovdje}
Poziv metodeint x = 5;string mojString = “Hello”;mojaMetoda(x, mojsString);
Komentari C komentari /* */ C++ komentari // XML dokumentacijski komentari ///
Deklaracija varijabli int prva, druga, treca; ili int prva=10, druga, treca=0;
Console.WriteLine(printf) Console.WriteLine(“Pozdrav!”); int godine=56; Console.WriteLine(“Broj godina je {0}”, godine)...
Console.ReadLine(gets) string godine_string = Console.ReadLine(); int godine_integer = Convert.ToInt32(godine_string);
Konstante const int brojdana = 7;
Tipovi podataka
if uvijetif ( broj > 40 ){   Console.WriteLine(“Broj je veci od 40”);}else{   Console.WriteLine(“Broj je manji ili jednako...
for petljafor ( int x = 5; x < 10; x++ ){  Console.WriteLine(“x: {0}”, x);}
While petljawhile (i < 10){  Console.Write("{0} ", i);  i++;}
Do-while petljado{  Console.Write("{0} ", i);  i++;} while (i < 10);
Operatori C# podržava: Relacijske operatore (>, <, ==) Operatore dodjele (=) Matematičke operatore(*,/,-,+) Logičke o...
Relacijski operatori Jednako (==) Nije jednako (!=) Veće (>) Veće ili jednako (>=) Manje (<) Manje ili jednako (<=)
Matematički operator + string tekst1 = “hello”; string tekst2 = “ world”; string s3 = s1 + s2;
Kratko pisanje matematičkihoperatora a += b; a -= b; a *= b; a /= b; a %= b;
Logički operatori && (Logičko I) || (Logičko ILI) ! (Logičko NE)
Web stranica http://www.microsoft.com/visualstudio/en-  us/products/2010-editions/visual-csharp-express www.google.hr
Podržani operacijski sustavi Windows XP (x86) with Service Pack 3 - all editions    except Starter Edition   Windows Vis...
Minimalna konfiguracija Computer that has a 1.6GHz or faster processor 1 GB (32 Bit) or 2 GB (64 Bit) RAM (Add 512 MB if...
Podržani proizvodi u Express verziji Visual Basic Express Visual Web Developer Express Visual C++ Express Visual C# Ex...
Sintaksa tip[] identifikator; Primjer: int[] mojNizIntegera = new int[5];
Nizovi kao objektint[] mojePoljeIntegera = new int[50];       mojePoljeIntegera[0] = 10;       mojePoljeIntegera[1] = 20; ...
Foreach petljaforeach (int i in mojePoljeIntegera){  Console.WriteLine("{0}", i);}foreach(int i in mojePoljeIntegera){  Co...
.NET framework Jednostavnost razvoja aplikacija Brzina razvoja aplikacija Sigurnije aplikacije Višejezično programiranje
Slojeviti model .NET Frameworka
CLR CLR = Common Language Runtime Aplikacija koja se “vrti” na Windowsima Najvažniji dio .NET-a
Što radi CLR? Provjerava sigurnost Učitava program Kešira program – svako novo pokretanje je puno brže  od inicijalnog!...
Što radi CLR? Provodi JIT (just in time compilation) kompilaciju  1.   Program (npr. napisan u C#) kompilira u MSIL      ...
Što radi CLR? Pruža višejezično okruženje    CTS – Common Type System (Dio CLR-a)    Nasljedivanje kroz više jezika (np...
BCL (Base Class Library) Sastoji se od stotina klasa koje developeru stoje na  raspolaganju klasi su grupirani u prostor...
Prostori imena (namespace) “Pretinci” u koje se smještaju klasi Imaju hijerarhijsku strukturu    Na vrhu je System
Programski jezici u .NETu Odabir jezika u kojem se programira je stvar stila! Program napisan u bilo kojem jeziku na kra...
Razvoj aplikacija u .NET-u Visual Studio IDE Notepad + komandna linija Alternativna razvojna okruženja
Slojevi više razine – ADO.NET U njega spadaju klasi iz System.Data prostora imena Glavno pitanje na koje odgovara: kako ...
Slojevi više razine – ASP.NET klasi za razvoj Web aplikacija Koristi ADO.NET i BCL kako bi stvorio vlastite klase Njime...
Slojevi više razine – WindowsForms klasi za razvoj MS Windows aplikacija (tzv. rich    Windows application)   Jako dobra...
Slojevi više razine – Web servisi Nova i obecavajuća tehnologija Web servis je komponenta (komad kôda)   Pokrece se pre...
Uvod u C#
Pokretanje Visual studio-a Pokrenite Visual Studio Imate ikonu na radnoj površini ili idete na start-  >programs->Micros...
Pokretanje projekta Kada se upali Visual Studio Odaberite padajući izbornik File->New->Project Nakon otvaranja prozora ...
Pokretanje projekta Kada se upali Visual Studio
Pokretanje projekta Odaberite padajući izbornik File->New->Project
Odabir projekta U ovom prozoru možete odabrati vrstu, naziv i lokaciju  projekta
Pokretanje projekta Nakon otvaranja prozora za odabir novog projekta – odaberite C# windows projekt s lijeve strane i oda...
Izgled otvorenog projekta
using using je najsličniji #include naredbi iz C prog.jezika.
namespace “Pretinci” u koje se smještaju klase(class ili klasi)
Naziv klase(klasa ili class) Klasa Program
static void Main(string[] args) static void Main(string[] args) Kao funkcija Main u C programskom jeziku void znači da ...
static void Main(string[] args) Mi u pravilu nećemo slati argumente svojim  programima, ali to možemo napraviti Pravi pr...
Hello World! Prvi program Umjesto naredbe printf(); mi ćemo koristiti metodu    konzole pod nazivom WriteLine   Upišite...
Console Prvo polugodište ćemo raditi aplikacije u konzoli Kada nakon naziva objekta(u našem slučaju Console)  pritisnemo...
WriteLine Da bi ispisali nešto u konzolu možemo koristiti metodu    npr. WriteLine kao i neke druge   Nakon odabira Cons...
Pokrenite izvršavanje tipkom F5 Ili pritiskom na zeleni gumb start
Atributi i metode Metode će biti označeni ljubičastom kockicom kao npr. SetWindowSize, dok su atributi označeni malim pro...
Razlika u korištenju Uglavnom metode se koriste tako da se pozovu Npr. Console.WriteLine(); One mogu i ne moraju(zavisn...
Pazite!!!! Na tip podataka koje metode primaju kao atribute Na tip podataka koju metoda vraća Na tip podataka argumenta...
Zadatci Ispišite neki drugi tekst Saznajte i isprobajte zašto nam služe metode konzole:    Console.Clear();    Console...
Zadatci Saznajte i isprobajte zašto nam služe atributi konzole:    Console.Title    Console.BackgroundColor    Console...
Što je debuggiranje? Pronalaženje grešaka i nedostataka u programskom  kodu Naziv potječe od stvarnog događaja – kod jed...
Vrste pogrešaka kod programiranja Sintaksne    Visual Studio će u gotovo svim situacijama pronaći     pogrešku    forma...
Sintaksne pogreške osnovna vrsta grešaka, nastaje pogreškom u jeziku, tj.  u pogrešno upisanom programskom kodu (npr.  Ne...
Semantičke pogreške Kod njih su naredbe formalno ispravno napisane, pa ih  je teže pronaći od sintaksnih grešaka (ne vide...
Greške izuzetaka Javljaju se, kao i semantičke greške, tek prilikom  izvršavanja programa Izuzeci (eng. exceptions) će n...
Zašto koristiti debugger? I najbolji programer na svijetu radi pogreške prilikom pisanja koda
Uvod u klase Ugrađene klase npr. Console Vlastite klase npr. Tocka, Trokut, Pravokutink
Što je tip u objektnomprogramiranju? Bit objektnog programiranja je kreiranje novih  tipova. Ako smo kreirali tri dugmet...
Nasljeđivanje Ta se karakteristika objektnog programiranja zove  NASLJEĐIVANJE. NASLJEĐIVANJE je mogućnost da objekti pr...
Klase KLASA je neki tip promatranih objekata. Klasa je adekvatna skupini ili vrsti kod bioloških bića,  npr. skupina pas...
Kreiranje klase Kada kreiramo neku vlastitu klasu, potrebno je  definirati: njezina svojstva (properties) ili varijable ...
Kreiranje klase Naredba za kreiranje nove klase počinje ključnom riječi class, zatim dolazi naziv klase, zatim deklaracij...
Kreiranje klaseclass mojaKlasa{  //ovdje definicija svojstava ili varijabli,  npr.  int mojaVarijabla;} Gornjim naredbama...
Kreiranje objekta iz klaseclass Student{  // ovdje definiramo svojstva koja pripadaju toj klasi:  int Ocjena;}public void ...
Konstruktor Naredba kojom se definira instanca neke klase izgleda  ovako: (npr. Za kreiranje instance Pero klase Student)...
Konstruktor Zadatak konstruktora je kreirati instancu (objekt)  neke klase i omogućiti da se toj instanci dodijeli  vrije...
Konstruktor - nastavak Ukoliko se želi koristiti neki vlastiti određeni konstruktor, tada  se on mora deklarirati u progr...
Metode Metoda je neka funkcija koja se nalazi unutar  klase. Ona je član (eng. member) klase. Metode definiraju što klas...
Kreiranje metoda Kada se kreira neka metoda, ona također ima svoju  deklaraciju. U deklaraciji se definira tip podatka ko...
Kreiranje metoda Neke metode uopće ne vraćaju nikakve vrijednosti.  Takve metode samo nešto izvode, i tada je tip metode ...
Operator točka (.) Operator . koristi se: Za pristup metodi ili atributu unutar neke klase Primjer: Student.Pero.Visin...
Statični članovi Pri korištenju metode Main() vidjeli smo da naredba  sadrži ključnu riječ “static”: static void Main()...
Statični članovi Svojstva i metode neke klase mogu biti instance ili statični    članovi.   Ako su instance, moraju se p...
Ključna riječ this Ključna riječ “this” odnosi se na trenutnu instancu  neke klase (ili drugog objekta). “this” je skriv...
Izrada klase točka class Tocka {      //ovdje dolazi deklaracija atributa i metoda }
Atributi klase točka class Tocka {    public int x, y; }
Konstruktor klase točka class Tocka {    public int x, y;     public Tocka(int x_os, int y_os)     {       x = x_os;      ...
Poziv konstruktora Tocka a = new Tocka(10, 10);
Metoda Opis()     public string Opis()     {       return "Točka ima kordinate: " + x + " i " + y;     } Ako je x = 10 i ...
Klasa Math Klasa sa matematičkim metodama i atributima Slična biblioteci math.h iz c programskog jezika
Metoda udaljenostOdIshodista() public double udaljenostOdIshodista() {     double udaljenost;     udaljenost = Math.Sqrt(M...
Metoda udaljenostDoTocke(Tockatocka) public double udaljenostDoTocke(Tocka tocka) {      double udaljenost;      udaljenos...
System.IO prostor imena Ulaz i izlaz (Input/Output tj. I/O) odnosi se na postupke    čitanja i pisanja podatka u i iz tok...
Directory, DirectoryInfo, File, FileInfo Služe za stvaranje, kopiranje, brisanje, premještanje i  preimenovanje datoteka ...
FileSystemInfo
Dodatni atributi datoteka Archive Compressed Directory Encrypted Hidden Normal ReadOnly System
klas DirectoryInfo klas DirectoryInfo uključuje postupke za stvaranje, premještanje (preimenovanje) i iteraciju (enumerac...
klas FileInfo
klas File
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
Upcoming SlideShare
Loading in …5
×

C# predavanja

1,138 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,138
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
45
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

C# predavanja

  1. 1. Programske paradigme Programska paradigma je osnovni stil računalnog programiranja Paradigme se razlikuju u konceptu i razini apstrakcije reprezentiranja elemenata programa (kao što su funkcije, varijable, konstante, objekti...) i koracima sastavljanja proračuna (kao što su zadaci, evaluacije, tokovi podataka...)
  2. 2. Programske paradigme Programski jezik može podržavati više paradigmi npr. C++ može biti proceduralni ili objektno-orijentirani
  3. 3. Usporedba – borilačke vještine Programerska paradigma se može usporediti sa borilačkim vještinama (stil i oružje sa kojim se borac bori, može se usporediti sa stilom i alatom koji programer koristi)
  4. 4. Povijest računalnog programiranja Inicijalno računala su se strojno programirala Programiranje binarnim kodom Programiranje putem asemblerskog jezika Programiranje putem proceduralnih jezika - C, Basic... Programiranje putem objektno-orijentiranih jezika – Java, C#.............................................................................
  5. 5. Programske paradigme Proceduralna paradigma Objektno orijentirana paradigma te Funkcijska paradigma Konceptualno orijentirana paradigma Logička paradigma....................................................................
  6. 6. Proceduralna paradigma Program se sastoji od niza deklaracija, naredbi pridruživanja te poziva predefiniranih kao i vlastitih potprograma Potprogrami omogućuju smisleno strukturiranje programa Primjeri: Basic ili C Problem sa ovakvim pristupom programiranju su sve veća kompleksnost današnjih programa: što je program veći - teže ga je održavati.
  7. 7. Objektno-orijentirana paradigma Kod objektno orijentiranog programiranja (OOP) program se sastoji od skupa objekata koji međusobno komuniciraju Objekt je programski entitet koji je sposoban primati, obrađivati i slati poruke Objektno orijentirani model je izuzetno pogodan za opisivanje današnjih sustava koji se najčešde sastoje od jasno odvojenih, samostalnih cjelina koje međusobno komuniciraju i razmjenjuju obrađene podatke Jedan od takvih primjera koji se najčešde navodi je grafičko korisničko sučelje (GUI).
  8. 8. Objektno-orijentirana paradigma Razvoj OOP-a započet je 60 godina prošlog stoljeda, a popularnost objektno orijentirane paradigme porasla je naglo s razvojem grafičkih korisničkih sučelja, te razvojem programskog jezika C++ Dodatan rast popularnosti dogodio se u 90-tima pri razvoju računalnih igara Primjeri igara su: Doom III, Starcraft, Diablo, Warcraft III i World of Warcraft
  9. 9. Osnovni temelji OOP-a Osnovni temelji objektno orijentirane paradigme su prije svega objekt i klasa (razred) te metode, nasljeđivanje, enkapsulacija, polimorfizam, apstrakcija i sučelja. Objekt je naziv za skup svojstava koja možemo objediniti u smislenu cjelinu. Klasa je skup pravila koja propisuju od čega je pojedini objekt sagrađen te kakva su njegova svojstva.
  10. 10. Osnovni temelji OOP-a Konceptom objektnog programiranja uvodi se mogudnosti definiranja novih korisničkih tipova – klasa. Klase su temelj objektno orijentiranog programiranja. Ideja uvođenja objekata u programiranje došla je analiziranjem načina na koji funkcionira stvarni svijet. Promatanjem svijeta oko sebe dodi demo do zaključka da se mnoge stvari mogu vrlo jednostavno modellirati pomodu objekata.
  11. 11. PrimjerKlasa: AutomobilBroj objekata: 10Atributi(svojstva):Boja, težina, brojkonja...Metode: Otvorivrata, upaliautomobil, otvoriprozor, uključibrisače...
  12. 12. klasa i objekt Klasa - zamišljena svojstva automobila Objekt - stvarni automobili na slici
  13. 13. Osnovni temelji OOP-a Objekti međusobno razmjenjuju informacije i traže jedan od drugoga usluge. Pritom okolina objekta ništa ne mora znati o njegovom unutarnjem ustrojstvu. Svaki objekt ima javno sučelje kojim se definira njegova suradnja s okolinom. Ono određuje koje informacije objekt može dati, te u kojem formatu. Također su definirane i sve usluge koje objekt može pružiti.
  14. 14. Osnovni temelji OOP-a Funkcija koja inicijalizira objekt naziva se konstruktor Kada objekt više nije potreban posebna funkcija klasa pod nazivom destruktor uredno će uništiti objekt
  15. 15. Apstrakcija Apstrakcija je određivanje bitnih osobina i funkcionalnosti bez uvođenja nepotrebnih detalja ili objašnjenja. Pomoću ovog procesa modeliraju se najvažniji elementi (atributi) i opis pripadnog ponašanja (metode) neke klase.
  16. 16. Primjer
  17. 17. Primjer
  18. 18. Enkapsulacija (učahurivanje) Enkapsulacija je povezivanje bitnih informacija i elemenata nekog objekta te njegovog ponašanja (metoda) u povezane, izolirane cjeline na način da unutrašnji ustroj nije vidljiv vanjskom svijetu1. public: elementi su dio javnog sučelja klase i dostupni su svim drugim klasama2. private: elementi su dostupni samo klasi u kojoj su deklarirani.3. protected: elementi su dostupni klasi u kojem su deklarirani i podklasama.
  19. 19. Primjer
  20. 20. Nasljeđivanje Nasljeđivanje(eng. inheritance) je tehnika kojom se definiranje neke klase vrši korištenjem definicije postojeće klase (koja se naziva bazna klasa) Tako dobivena klasa naziva se izvedena klasa Kada se pomoću izvedenih klasa deklarira neki objekt, njegove članske funkcije i varijable postaju funkcije i varijable koje su kreirane u baznoj klasi
  21. 21. Primjer Kada bi imali klasu vozilo, koji bi sve njegovi atributi bili? Kada bi imali klasu vozilo, koje bi sve njegove funkcije(metode) bile?
  22. 22. Primjerusing System;public class Pravokutnik{ public Pravokutnik() { Console.WriteLine("Pravokutnik konstruktor."); } public void povrsina(float a, float b) { float P = a*b; Console.WriteLine(P); } public void opseg (float a, float b) { float O= 2*a+2*b Console.WriteLine(O) }}
  23. 23. Primjerpublic class Kvadrat : Pravokutnik{ public Kvadrat() { Console.WriteLine("Kvadrat konstruktor"); } public static void Main() { Kvadrat kvadrat = new Kvadrat(); kvadrat.povrsina(4,4) kvadrat.opseg (2,2) }}
  24. 24. Nasljeđivanje i konstruktor Konstruktor služi da bi kreirirali objekt nekog klasa Svaka klasa bi trebala imati svoj konstrutor
  25. 25. Polimorfizam Polimorfizam je, uz enkapsulaciju, apstrakciju i nasljeđivanje trede važno svojstvo koje objektno orijentiran jezik mora podržavati Bez nasljeđivanja nema polimorfizma, a nasljeđivanje bez polimorfizma gotovo da i nema smisla poli – mnogo, form - oblici => više oblika
  26. 26. Primjer Neka je bazna klasa Geometrijski_lik, a izvedeni klasi su Krug i Pravokutnik Svaki Geometrijski_lik ima svoju povrsinu, ali se ona za Krug izračunava na drugačiji način nego za Pravokutnik Za krug je radijus * radijus * PI, a za pravokutnik je duljina*širina, ali općenito svojstvo svakog geometrijskog lika je njegova površina kao što je prikazano na slici
  27. 27. Sučelje Objekt definira svoju interakciju s vanjskim svijetom kroz funkcije koje podržava Npr. gumbi na televizoru čine njegovo sučelje koje odvaja elektroniku i način na koji je izvedena od krajnjeg korisnika (nas), koji želimo gledati neki program Bez obzira na proizvođača televizora i način na koji je elektronika organizirana mi očekujemo da demo svaki televizor modi upaliti, ugasiti, promijeniti kanal, smanjiti ili povedati glasnodu itd
  28. 28. Primjer
  29. 29. Primjer
  30. 30. Neno Dodig
  31. 31. Osnove C# programskog jezika C# je dizajniran da bude:  Jednostavan  Siguran  Objektno-orijentiran  Internet-centriran  Brz
  32. 32. C# jednostavnost i sigurnost C# je jednostavan programski jezik sa samo 80 ključnih riječi i desetak tipova Siguran je za upis koda jer debuger traži greške direktno pri upisu koda, a ne samo nakon pokretanja
  33. 33. Hello Worldnamespace HelloWorld{ class HelloWorld { static void Main() { // Korištenje objekta Console System.Console.WriteLine("Hello world"); } }}
  34. 34. Metodavoid mojaMetoda(int param1, string param2){ //kod ide ovdje}
  35. 35. Poziv metodeint x = 5;string mojString = “Hello”;mojaMetoda(x, mojsString);
  36. 36. Komentari C komentari /* */ C++ komentari // XML dokumentacijski komentari ///
  37. 37. Deklaracija varijabli int prva, druga, treca; ili int prva=10, druga, treca=0;
  38. 38. Console.WriteLine(printf) Console.WriteLine(“Pozdrav!”); int godine=56; Console.WriteLine(“Broj godina je {0}”, godine); int broj1 = 5, broj2 = 7, broj3=9; Console.WriteLine(“prvi: {0}, drugi: {1}, treci: {2}, opet prvi: {0}", broj1, broj2, broj3);
  39. 39. Console.ReadLine(gets) string godine_string = Console.ReadLine(); int godine_integer = Convert.ToInt32(godine_string);
  40. 40. Konstante const int brojdana = 7;
  41. 41. Tipovi podataka
  42. 42. if uvijetif ( broj > 40 ){ Console.WriteLine(“Broj je veci od 40”);}else{ Console.WriteLine(“Broj je manji ili jednako 40”);}
  43. 43. for petljafor ( int x = 5; x < 10; x++ ){ Console.WriteLine(“x: {0}”, x);}
  44. 44. While petljawhile (i < 10){ Console.Write("{0} ", i); i++;}
  45. 45. Do-while petljado{ Console.Write("{0} ", i); i++;} while (i < 10);
  46. 46. Operatori C# podržava: Relacijske operatore (>, <, ==) Operatore dodjele (=) Matematičke operatore(*,/,-,+) Logičke operatore (&&, ||, !)
  47. 47. Relacijski operatori Jednako (==) Nije jednako (!=) Veće (>) Veće ili jednako (>=) Manje (<) Manje ili jednako (<=)
  48. 48. Matematički operator + string tekst1 = “hello”; string tekst2 = “ world”; string s3 = s1 + s2;
  49. 49. Kratko pisanje matematičkihoperatora a += b; a -= b; a *= b; a /= b; a %= b;
  50. 50. Logički operatori && (Logičko I) || (Logičko ILI) ! (Logičko NE)
  51. 51. Web stranica http://www.microsoft.com/visualstudio/en- us/products/2010-editions/visual-csharp-express www.google.hr
  52. 52. Podržani operacijski sustavi Windows XP (x86) with Service Pack 3 - all editions except Starter Edition Windows Vista (x86 & x64) with Service Pack 2 - all editions except Starter Edition Windows 7 (x86 & x64) Windows Server 2003 (x86 & x64) with Service Pack 2 Windows Server 2003 R2 (x86 & x64) Windows Server 2008 (x86 & x64) with Service Pack 2 Windows Server 2008 R2 (x64)
  53. 53. Minimalna konfiguracija Computer that has a 1.6GHz or faster processor 1 GB (32 Bit) or 2 GB (64 Bit) RAM (Add 512 MB if running in a virtual machine) 3GB of available hard disk space 5400 RPM hard disk drive DirectX 9 capable video card running at 1024 x 768 or higher-resolution display DVD-ROM Drive
  54. 54. Podržani proizvodi u Express verziji Visual Basic Express Visual Web Developer Express Visual C++ Express Visual C# Express SQL Server Express Express for Windows Phone
  55. 55. Sintaksa tip[] identifikator; Primjer: int[] mojNizIntegera = new int[5];
  56. 56. Nizovi kao objektint[] mojePoljeIntegera = new int[50]; mojePoljeIntegera[0] = 10; mojePoljeIntegera[1] = 20; mojePoljeIntegera[2] = 15; mojePoljeIntegera[3] = 90; mojePoljeIntegera[4] = 50; mojePoljeIntegera[5] = 60; Console.WriteLine(mojePoljeIntegera.Max().ToString()); Console.WriteLine(mojePoljeIntegera.Min().ToString()); Console.WriteLine(mojePoljeIntegera.Average().ToString()); foreach(int i in mojePoljeIntegera) { Console.WriteLine(i.ToString()); } Console.ReadLine();
  57. 57. Foreach petljaforeach (int i in mojePoljeIntegera){ Console.WriteLine("{0}", i);}foreach(int i in mojePoljeIntegera){ Console.WriteLine(i.ToString());}
  58. 58. .NET framework Jednostavnost razvoja aplikacija Brzina razvoja aplikacija Sigurnije aplikacije Višejezično programiranje
  59. 59. Slojeviti model .NET Frameworka
  60. 60. CLR CLR = Common Language Runtime Aplikacija koja se “vrti” na Windowsima Najvažniji dio .NET-a
  61. 61. Što radi CLR? Provjerava sigurnost Učitava program Kešira program – svako novo pokretanje je puno brže od inicijalnog! Oslobađa resurse Koristi se sakupljac smeca (engl. Garbage collector) – briše objekte koji se više ne koriste Sprjecava se pojava “curenja memorije” (engl. memory leaks) – česta pojava u C++-u
  62. 62. Što radi CLR? Provodi JIT (just in time compilation) kompilaciju 1. Program (npr. napisan u C#) kompilira u MSIL (Microsoft Intermediate Language) 2. Prilikom prvog izvršavanja programa, kôd u - MSIL se prevodi u strojni kod platforme – to je zapravo JIT kompilacija 3. Svako slijedece izvršavanje aplikacije uzima strojni kôd iz keša (cachea) – ubrzanje
  63. 63. Što radi CLR? Pruža višejezično okruženje  CTS – Common Type System (Dio CLR-a)  Nasljedivanje kroz više jezika (npr. u C# se naslijedi klasa napravljena u VB.NET)
  64. 64. BCL (Base Class Library) Sastoji se od stotina klasa koje developeru stoje na raspolaganju klasi su grupirani u prostore imena (engl. namespace) – npr:  System.Data – rad s podacima  System.Collections – rad s kolekcijama (skupovima objekata)  System.IO – rad s datotekama i mapama Zamjena za Windows API
  65. 65. Prostori imena (namespace) “Pretinci” u koje se smještaju klasi Imaju hijerarhijsku strukturu  Na vrhu je System
  66. 66. Programski jezici u .NETu Odabir jezika u kojem se programira je stvar stila! Program napisan u bilo kojem jeziku na kraju postaje program u MSIL-u Bitno je da kompajler za željeni jezik podržava CTS, tj. da napisan po CLS – Common Language Specification Danas postoji podrška za:  C#  VB  Eiffel  Fortran  Cobol  JScript  J#  I još mnogo drugih …
  67. 67. Razvoj aplikacija u .NET-u Visual Studio IDE Notepad + komandna linija Alternativna razvojna okruženja
  68. 68. Slojevi više razine – ADO.NET U njega spadaju klasi iz System.Data prostora imena Glavno pitanje na koje odgovara: kako dohvatiti podatke i raditi s njima? Dva glavna pružatelja podataka (engl. data provider):  SQL Server pružatelj podataka  OLEDB pružatelj podataka
  69. 69. Slojevi više razine – ASP.NET klasi za razvoj Web aplikacija Koristi ADO.NET i BCL kako bi stvorio vlastite klase Njime se stvaraju tzv. Web Form stranice  Svaka Web Form stranica sastoji se od:  aspx datoteke (u njoj je HTML)  Datoteke s kôdom (npr .cs ili .vb) – tzv. code behind U VS IDE-u se koristi tzv. drag & drop za stvaranje stranica  Npr. dovuci gumb
  70. 70. Slojevi više razine – WindowsForms klasi za razvoj MS Windows aplikacija (tzv. rich Windows application) Jako dobra podrška za razvoj korisničkih sučelja Glavni prostor imena je System.Windows.Forms U VS IDE-u se koristi tzv. drag & drop za stvaranje formi Windows Forme su moćnije od Web Formi  Web Forme su ograničene na ono što pruža standardni HTML  Windows Forme pružaju sve ono što i Windowsi
  71. 71. Slojevi više razine – Web servisi Nova i obecavajuća tehnologija Web servis je komponenta (komad kôda)  Pokrece se preko Interneta (preko HTTP-a) Web servis se piše u bilo kojem jeziku (npr. C#) Web servisi se obavezno pokrece pomocu XML – SOAP-a  To znači da web servis napisanu u .NET-u na Windows serveru može bez problema pokrenuti neki klijent napisan u PHP-u s UNIX-a
  72. 72. Uvod u C#
  73. 73. Pokretanje Visual studio-a Pokrenite Visual Studio Imate ikonu na radnoj površini ili idete na start- >programs->Microsoft Visual Studio
  74. 74. Pokretanje projekta Kada se upali Visual Studio Odaberite padajući izbornik File->New->Project Nakon otvaranja prozora za odabir novog projekta – odaberite C# windows projekt s lijeve strane i odaberite console application sa desne strane te gumb OK
  75. 75. Pokretanje projekta Kada se upali Visual Studio
  76. 76. Pokretanje projekta Odaberite padajući izbornik File->New->Project
  77. 77. Odabir projekta U ovom prozoru možete odabrati vrstu, naziv i lokaciju projekta
  78. 78. Pokretanje projekta Nakon otvaranja prozora za odabir novog projekta – odaberite C# windows projekt s lijeve strane i odaberite console application sa desne strane, na dnu upišite naziv projekta: vjezba1
  79. 79. Izgled otvorenog projekta
  80. 80. using using je najsličniji #include naredbi iz C prog.jezika.
  81. 81. namespace “Pretinci” u koje se smještaju klase(class ili klasi)
  82. 82. Naziv klase(klasa ili class) Klasa Program
  83. 83. static void Main(string[] args) static void Main(string[] args) Kao funkcija Main u C programskom jeziku void znači da funkcija nema povratnu vrijednost tj. povratna vrijednost je NULL static ćemo obrađivati kasnije u predavanjima string[] args – pošto je konzolna aplikacija, preko command prompta može primiti ulazne argumente i staviti ih u polje args koje je tipa string PRIMJER: naredba format c: /q  Naredba koja služi za formatiranje  Poziva program format sa argumentima c: i /q  argument c: znači da program formatira particiju c:  argument /q znači da se napravi brzo formatiranje
  84. 84. static void Main(string[] args) Mi u pravilu nećemo slati argumente svojim programima, ali to možemo napraviti Pravi primjer ćete dobiti pri kraju drugog sata!!! foreach (string tekst in args) { Console.WriteLine(tekst); } Console.ReadLine();
  85. 85. Hello World! Prvi program Umjesto naredbe printf(); mi ćemo koristiti metodu konzole pod nazivom WriteLine Upišite unutar main-a: Console Primjetiti ćete da Visual Studio predlaže što možete upisati i ako je odabrano ono što želite možete dovršiti bez pisanja pritiščući tipku tab(tabulator) Nakon upisivanja Console upišite točku Console.
  86. 86. Console Prvo polugodište ćemo raditi aplikacije u konzoli Kada nakon naziva objekta(u našem slučaju Console) pritisnemo točku, dobiti ćemo popis mogućih metoda i atributa tog objekta Prođite malo po njima te pogledajte koje sve metode i atribute ima objekt Console
  87. 87. WriteLine Da bi ispisali nešto u konzolu možemo koristiti metodu npr. WriteLine kao i neke druge Nakon odabira Console.WriteLine otvorite zagradu ( Tu ćemo vidjeti da metoda WriteLine ima 19 overload mogučnosti ( o tome kasnije na predavanjima) Nakon otvaranja zagrade upišite navodnike i tekst: Hello World! te zatvorite navodnike, zatvorite zagradu i stavite točku-zarez Console.WriteLine("Hello World"); Nakon toga dodajte liniju Console.ReadLine(); Ta naredba će nam zadržati ekran kao naredba getch() u C programskom jeziku
  88. 88. Pokrenite izvršavanje tipkom F5 Ili pritiskom na zeleni gumb start
  89. 89. Atributi i metode Metode će biti označeni ljubičastom kockicom kao npr. SetWindowSize, dok su atributi označeni malim prozorom kao npr. Title
  90. 90. Razlika u korištenju Uglavnom metode se koriste tako da se pozovu Npr. Console.WriteLine(); One mogu i ne moraju(zavisno o metode) primati argumente npr. Console.WriteLine(“Tekst”); U prethodnoj liniji argument je string “Tekst” Dok se atributi postavljaju uglavnom tako da: Console.Title = "Naslov prozora"; Postavimo vrijednost atributa kao što je npr. Title Nekim atributima možemo samo pogledati vrijednost Npr. Console.WriteLine(Console.CapsLock); Tako bi doznali da li je pritisnuta tipka CapsLock
  91. 91. Pazite!!!! Na tip podataka koje metode primaju kao atribute Na tip podataka koju metoda vraća Na tip podataka argumenta Ako je argument int onda moze npr. biti  Console.WindowWidth = 30; Ali kao je argument tipa ConsoleColor onda moze npr. biti  Console.BackgroundColor = ConsoleColor.DarkCyan;
  92. 92. Zadatci Ispišite neki drugi tekst Saznajte i isprobajte zašto nam služe metode konzole:  Console.Clear();  Console.Write();  Console.Beep();  Console.ReadLine();  Console.ResetColor();  Console.SetCursorPosition(int left, int top);  Console.SetWindowSize(int width, int height);
  93. 93. Zadatci Saznajte i isprobajte zašto nam služe atributi konzole:  Console.Title  Console.BackgroundColor  Console.CapsLock  Console.ForegroundColor  Console.NumberLock  Console.WindowHeight  Console.WindowWidth
  94. 94. Što je debuggiranje? Pronalaženje grešaka i nedostataka u programskom kodu Naziv potječe od stvarnog događaja – kod jednog od prvih računala “Mark I” dogodio se kvar u radu. Nakon dugotrajne potrage za greškom programeri su otkrili da je kvar izazvala jedna buba koja se uvukla u računalo. Otada se svaka greška ili nedostatak u radu računala zove “bug”.
  95. 95. Vrste pogrešaka kod programiranja Sintaksne  Visual Studio će u gotovo svim situacijama pronaći pogrešku  formalne greške u jeziku Semantičke  Ako je program sintaksno dobar, može doći do pogreške prilikom pokretanja programa  program ne radi ono za što je namijenjen Greške izuzetka  pojavljuju se prilikom korištenja programa, neizbježne su, a uzroci mogu biti različiti
  96. 96. Sintaksne pogreške osnovna vrsta grešaka, nastaje pogreškom u jeziku, tj. u pogrešno upisanom programskom kodu (npr. Nedostatak neke zagrade, nepravilno upisana ključna riječ naredbe ili dr.) Ove greške prilikom debug-iranja budu prikazane u prozoru s popisom grešaka (Error list)
  97. 97. Semantičke pogreške Kod njih su naredbe formalno ispravno napisane, pa ih je teže pronaći od sintaksnih grešaka (ne vide se u prozoru Error list prilikom debug-iranja) To su greške značenja – program ne radi ono što bi trebao raditi, nego nešto drugo Mogu biti uzrokovane logičkim pogreškama u programskom kodu ili podacima koje unese korisnik One se vide tek prilikom izvršavanja programa (kada otkrijemo da program ne radi što bi trebao raditi, ali još uvijek nije jasno što treba ispraviti u programskom kodu)
  98. 98. Greške izuzetaka Javljaju se, kao i semantičke greške, tek prilikom izvršavanja programa Izuzeci (eng. exceptions) će nastati bez obzira što programer poduzme da ih spriječi (neizbježne su) Uzrok može biti različit, ponekad je u semantičkim greškama, jer se logika programa ne uspije ostvariti zbog nekih specifičnih podataka koje korisnik unese Rukovanje ovim greškama (eng. Exception handling) biti će posebno obrađeno
  99. 99. Zašto koristiti debugger? I najbolji programer na svijetu radi pogreške prilikom pisanja koda
  100. 100. Uvod u klase Ugrađene klase npr. Console Vlastite klase npr. Tocka, Trokut, Pravokutink
  101. 101. Što je tip u objektnomprogramiranju? Bit objektnog programiranja je kreiranje novih tipova. Ako smo kreirali tri dugmeta (OK, Cancel i Help), sva tri nasljeđuju svojstva koja ima tip “button”:  svojstvo visine, širine  text koji će pisati na dugmetu  položaj dugmeta na formi,  i druga svojstva zajednička svim instancama koje pripadaju tipu “button”
  102. 102. Nasljeđivanje Ta se karakteristika objektnog programiranja zove NASLJEĐIVANJE. NASLJEĐIVANJE je mogućnost da objekti preuzimaju sva svojstva tipa kojem pripadaju.
  103. 103. Klase KLASA je neki tip promatranih objekata. Klasa je adekvatna skupini ili vrsti kod bioloških bića, npr. skupina pasa, mačaka, studenata, radnika, artikala, itd. Objekt je instanca nek  1. Pas = klasa (ili skupina objekata)  Rex = instanca klase Pas (konkretan pas izklase Pas)  2. Student = klasa  Pero Perić = instanca klase Student  3. Button = klasa  OK button koji napravimo u aplikaciji = instanca klase buttone klase, npr.
  104. 104. Kreiranje klase Kada kreiramo neku vlastitu klasu, potrebno je definirati: njezina svojstva (properties) ili varijable kojima će dodjeljivati vrijednosti (ako se radi o javnim svojstvima, tada se koristi izraz “svojstvo” (eng. property), a ako se radi o privatnim varijablama koje će se koristiti samo u toj klasi, tada govorimo koristimo izraz “varijabla” metode koje određuju njezino ponašanje.
  105. 105. Kreiranje klase Naredba za kreiranje nove klase počinje ključnom riječi class, zatim dolazi naziv klase, zatim deklaracija svojstava (properties) koje se definiraju za tu klasu, te metode koje pripadaju klasi.
  106. 106. Kreiranje klaseclass mojaKlasa{ //ovdje definicija svojstava ili varijabli, npr. int mojaVarijabla;} Gornjim naredbama kreirali smo klasu pod nazivom mojaKlasa, i njoj pripadajuću cjelobrojnu varijablu pod nazivom mojaVarijabla kojoj će se unutar klase mojaKlasa moći dodjeljivati vrijednosti.
  107. 107. Kreiranje objekta iz klaseclass Student{ // ovdje definiramo svojstva koja pripadaju toj klasi: int Ocjena;}public void Main(){ Student Pero = new Student(); Pero.Ocjena= 3;}
  108. 108. Konstruktor Naredba kojom se definira instanca neke klase izgleda ovako: (npr. Za kreiranje instance Pero klase Student) Student Pero = new Student(); Naredba sadrži na kraju zagrade (), pa izgled kao da poziva metodu. Zapravo, pri kreiranju nove instance poziva se jedna metoda koja se zove konstruktor (eng. constructor).
  109. 109. Konstruktor Zadatak konstruktora je kreirati instancu (objekt) neke klase i omogućiti da se toj instanci dodijeli vrijednost kasnije u programu. Nakon što se konstruktorom kreira nova instanca, u memoriji se ostavlja prostor za vrijednosnu instancu. Ako ne specificiramo koji konstruktor pozivamo, CLR poziva standardni (default) konstruktor kojim se definira nova instanca klase i ne prosljeđuju mu se nikakve vrijednosti. Zato u zagradama kod ovog standardnog konstruktora ne pišemo ništa.
  110. 110. Konstruktor - nastavak Ukoliko se želi koristiti neki vlastiti određeni konstruktor, tada se on mora deklarirati u programu prije samog korištenja.// konstruktorpublic Vrijeme(System.DateTime dt){ godina = dt.Year; mjesec = dt.Month; dan = dt.Day; sat = dt.Hour; minuta = dt.Minute; sekunda = dt.Second;}
  111. 111. Metode Metoda je neka funkcija koja se nalazi unutar klase. Ona je član (eng. member) klase. Metode definiraju što klase rade i kako se klase ponašaju. Metodama koje sami kreiramo možemo dati proizvoljne naziv, npr. Ispis(), Racunanje(), itd.
  112. 112. Kreiranje metoda Kada se kreira neka metoda, ona također ima svoju deklaraciju. U deklaraciji se definira tip podatka koji de metoda vradati, zatim naziv metode i u zagradi parametre koji de se prosljeđivati metodi. Npr. ovako: Int mojaMetoda(int velicina);
  113. 113. Kreiranje metoda Neke metode uopće ne vraćaju nikakve vrijednosti. Takve metode samo nešto izvode, i tada je tip metode void, a u zagradi se ne piše ništa, npr. ovako: void mojaMetoda( );
  114. 114. Operator točka (.) Operator . koristi se: Za pristup metodi ili atributu unutar neke klase Primjer: Student.Pero.Visina=175; koristi instancu Pero klase Student, i njegovom svojstvu Visina dodjeljuje vrijednost 175.
  115. 115. Statični članovi Pri korištenju metode Main() vidjeli smo da naredba sadrži ključnu riječ “static”: static void Main() Riječ “static” znači da se ta metoda može pozvati samostalno bez prethodnog pozivanja klase tj. Možete je koristiti bez da u imate objekt te klase
  116. 116. Statični članovi Svojstva i metode neke klase mogu biti instance ili statični članovi. Ako su instance, moraju se pozivati preko operatora “.” tako da se najprije navede klasa kojoj pripadaju, npr. ako definiramo klasu Student, i u okviru nje instancu Pero, a zatim neku metodu Upisi() (kojom će se studenti upisivati na fakultet), tada se ta metoda poziva: a) ako prethodno nije definirana kao statična: Student.Pero.Upisi(); b) ako je prethodno definirana kao statična: Student.Upisi();
  117. 117. Ključna riječ this Ključna riječ “this” odnosi se na trenutnu instancu neke klase (ili drugog objekta). “this” je skriveni pokazivač (pointer) na svaku nestatičnu metodu neke klase
  118. 118. Izrada klase točka class Tocka { //ovdje dolazi deklaracija atributa i metoda }
  119. 119. Atributi klase točka class Tocka { public int x, y; }
  120. 120. Konstruktor klase točka class Tocka { public int x, y; public Tocka(int x_os, int y_os) { x = x_os; y = y_os; } }
  121. 121. Poziv konstruktora Tocka a = new Tocka(10, 10);
  122. 122. Metoda Opis() public string Opis() { return "Točka ima kordinate: " + x + " i " + y; } Ako je x = 10 i y = 10 onda će string koji se vraća izgledati: “Točka ima kordinate: 10 i 10”
  123. 123. Klasa Math Klasa sa matematičkim metodama i atributima Slična biblioteci math.h iz c programskog jezika
  124. 124. Metoda udaljenostOdIshodista() public double udaljenostOdIshodista() { double udaljenost; udaljenost = Math.Sqrt(Math.Pow(x, 2) + Math.Pow(y, 2)); return udaljenost; }
  125. 125. Metoda udaljenostDoTocke(Tockatocka) public double udaljenostDoTocke(Tocka tocka) { double udaljenost; udaljenost = Math.Sqrt(Math.Pow(x - tocka.x, 2) + Math.Pow(y - tocka.y, 2)); return udaljenost; }
  126. 126. System.IO prostor imena Ulaz i izlaz (Input/Output tj. I/O) odnosi se na postupke čitanja i pisanja podatka u i iz tokova (streams) i datoteka npr. datoteka, U/I jedinica, TCP/IP utičnica, međuprocesni komunikacijski cjevovod, ... Tri osnovna klasa: klasi za čitanje i pisanje okteta (bytes) klasi za čitanje i pisanje znakova (character) klasi za čitanje i pisanje binarnih podataka
  127. 127. Directory, DirectoryInfo, File, FileInfo Služe za stvaranje, kopiranje, brisanje, premještanje i preimenovanje datoteka i direktorija, otvaranje datoteka te za iteraciju kroz direktorije
  128. 128. FileSystemInfo
  129. 129. Dodatni atributi datoteka Archive Compressed Directory Encrypted Hidden Normal ReadOnly System
  130. 130. klas DirectoryInfo klas DirectoryInfo uključuje postupke za stvaranje, premještanje (preimenovanje) i iteraciju (enumeraciju) kroz direktorije i poddirektorije
  131. 131. klas FileInfo
  132. 132. klas File

×