Distribuirani procesi Vježbe 01 Uvod i. threadovi

Similar documents
Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi

Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj list.

Vežbe - XII nedelja PHP Doc

PARALELNO PROGRAMIRANJE

Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo

VRIJEDNOSTI ATRIBUTA

Programiranje Programski jezik C. Sadržaj. Datoteke. prof.dr.sc. Ivo Ipšić 2009/2010

Učitati cio broj n i štampati njegovu recipročnu vrijednost. Ako je učitan broj 0, štampati 1/0.

Programiranje III razred

CSS CSS. selector { property: value; } 3/20/2018. CSS: Cascading Style Sheets

PROGRAMIRANJE. Amir Hajdar

Prva recenica. Druga recenica.

pojedinačnom elementu niza se pristupa imeniza[indeks] indeks od 0 do n-1

Introduction to C# Applications

Sveučilište u Zagrebu PMF Matematički odsjek. Mreže računala. Vježbe 08. Zvonimir Bujanović Slaven Kožić Vinko Petričević

PREDMET. Osnove Java Programiranja. Čas JAVADOC

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET

Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući Java konstrukt

Uvod u programiranje - vežbe. Kontrola toka izvršavanja programa

VB komande. Programiranje 1

JavaScript i HTML DOM

Računarske osnove Interneta (SI3ROI, IR4ROI)

Naredbe za kontrolu toka

Chapter 1 Getting Started

Uputstvo za korišćenje logrotate funkcije

DAD Lab. 1 Introduc7on to C#

b) program deljiv3; uses wincrt; var i:integer; begin i:=3; while i<100 do begin write(i:5); i:=i+3; end; end.

namespace spojneice { public partial class Form1 : Form { public Form1() { InitializeComponent(); }

GUI - događaji (Events) i izuzeci. Bojan Tomić

/*#include <iostream> // Prvi zadatak sa integralnomg ispita

Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak...

Binarne hrpe. Strukture podataka i algoritmi VJEŽBE 26. siječnja / 133

Uvod u relacione baze podataka

Programiranje III razred

Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb,

C#.Net. Course Contents. Course contents VT BizTalk. No exam, but laborations

RAČUNARSKI PRAKTIKUM II

Uvod, varijable, naredbe, petlje

Objectives. Introduce the core C# language features class Main types variables basic input and output operators arrays control constructs comments

Izrada VI laboratorijske vježbe

modifier returnvaluetype methodname(list of parameters) { // Method body; }

ARDUINO KROZ JEDNOSTAVNE PRIMJERE - pripreme za natjecanja -

Operacijski sustavi. Laboratorijska vježba 2. Petra Lončar, mag. ing. el., asistent FESB, 2016.

KLASIFIKACIJA JELENA JOVANOVIĆ. Web:

Windows Server 2012, VDI Licenciranje najprodavanijeg servera, što je novo, VDI licenciranje. Office 2013 / Office 365

Zadaci za Tutorijal 2.

Događaj koji se javlja u toku izvršenja programa i kvari normalno izvršenje. Kada se desi izuzetak, sistem pokušava da pronađe način da ga obradi.

Primjer ispisuje rečenicu "Dobro dosli na brzi tecaj C-a" na ekranu

SVEUČILIŠTE U Z GRE U Fakultet prometnih znanosti Zavod za inteligentne transportne sustave Vukelićeva 4, Zagreb, HRV TSK.

Sberbank Business Online na Mozilla FireFox

.Net Technologies. Components of.net Framework

UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a

Jezik Baze Podataka SQL. Jennifer Widom

C# Fundamentals. built in data types. built in data types. C# is a strongly typed language

C#: framework overview and in-the-small features

VEŽBA 5 do while petlja, switch case

PITANJA ZA II KOLOKVIJUM NASLJEĐIVANJE, VIRTUELNE FUNKCIJE I POLIMORFIZAM

Što ćete naučiti. Internet općenito HTML CSS XML XHTML Javascript DOM DHTML PHP, ASP.NET

VHDLPrimeri Poglavlje5.doc

Duhok Polytechnic University Amedi Technical Institute/ IT Dept. Halkawt Rajab Hussain

C++\CLI. Jim Fawcett CSE687-OnLine Object Oriented Design Summer 2017

Shell programiranje. Damir Kirasić Škola otvorenog računarstva FER Zagreb

var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.LoadFromFile('d:\brojevi.

JAVA PROGRAMIRANJE 1

For. 1) program ispis; {ispisuje brojeve od 1 do 5 jedan ispod drugog} uses wincrt; var s,i:integer; begin for i:=1 to 5do writeln(i); end.

... ; ako je a n parno. ; ako je a n neparno

Vjež ba 3-3: Ražvoj ASP.NET MVC 4 Pogleda s Ražor sintaksom

String. String. Kreiranje string objekta pomoću string literala (konstanti) Kreiranje string objekta

8. NIZOVI. // deklaracija niza od 10 elemenata: data[0], data[1],..data[9] int data[10] ; S elementima niza se operira kao s prostim varijablama

9. RAD S DATOTEKAMA PODATAKA

Sveučilište u Zagrebu Fakultet strojarstva i brodogradnje. WEB programiranje HTML & CSS

Mašinska vizija. Dr Nenad Jovičić tnt.etf.rs/~mv

16. Sigurnije programiranje

Programski jezik JAVA PREDAVANJE

Iskočni okviri (eng. popup boxes)

OSNOVE PROGRAMIRANJA

ILM implementacija DWH baza u T-mobile

Uputa za instaliranje programske potpore za operativni sustav WINDOWS

This tutorial has been prepared for the beginners to help them understand basics of c# Programming.

32-Bit-Digital Signal Controller TMS320F2833x. Texas Instruments Incorporated

for i:=2 to n do if glasovi[i]>max then begin max:=glasovi[i]; k:=i {*promenljiva k ce cuvati indeks takmicara sa najvise glasova *} end;

NAPREDNO I OBJEKTNO ORIJENTIRANO PROGRAMIRANJE

Visual Studio.NET.NET Framework. Web Services Web Forms Windows Forms. Data and XML classes. Framework Base Classes. Common Language Runtime

Računarski praktikum 4

PROGRAMIRANJE. Objekt-orjentirano programiranje (OOP)

Rad sa MySQL bazom podataka

Uvod u Javu. Programski jezik Java Izvršavanje Java programa BlueJ razvojno okruženje Elementi Jave Tipovi podataka Prvi programi

PKI Applet Desktop Application Uputa za instalaciju programske potpore

Uvod u programski jezik

204111: Computer and Programming

Programske paradigme Funkcionalna paradigma

dr. sc.. Josip Musić Originalne slideove izradio:

11. Iznimke i tokovi (exceptions and streams)

Numeričke metode i praktikum

Introduce C# as Object Oriented programming language. Explain, tokens,

Prirodno-matematički fakultet u Nišu Departman za fiziku. dr Dejan S. Aleksić Programiranje u fizici

NIZOVI.

Question And Answer.

Vidljivost TipPovratneVrednosti ImeFunkcije (NizParametara) { TeloFunkcije }

Sveučililište J.J. Strossmayera u Osijeku Odjel za matematiku. Davor Kolarević JavaScript na poslužiteljskoj strani. Diplomski rad

Transcription:

Distribuirani procesi Vježbe 01 Uvod i threadovi Vinko Petričević

Gradivo i način polaganja gradivo: osnove jezika C# potrebne za razumijevanje distribuiranog programiranja način vježbi svaki 3. tjedan 3 sata u komadu Na praktikumu 3 će se detaljnije raditi C#

Sintaksa Vrlo slična C++-u, case sensitive.net framework identičan za sve.net alate Gotovo svi tipovi podataka su GC pokazivači (class GC pokazivač, zauzima prostor na heapu, nemora se uništiti odmah na završetku programskog bloka; struct kao C++ klasa, zauzima prostor na stogu) klasa se može naslijediti samo iz jedne klase, ali može implementirati više sučelja struktura ne može naslijediti klasu, niti se iz nje može nasljeñivati, ali može implementirati sučelje

Osnove jezika Programi su organizirani kao projekti Svaki projekt sadrži neke obavezne datoteke, ali možemo dodati proizvoljan broj datoteka i poddirektorija (dobro je svaki klasu pisati u zasebnoj datoteci) Kompajliranjem iz svih datoteka projekta nastaje jedan assembly (.dll ili.exe), koji je osnovna jedinica za ponovnu uporabu na.net platformi

Osnove jezika C# je dio.net platforme, može koristiti Framework Class Library (FCL) Programi napisani u C# se izvršavaju u Common Language Runtime-u (CLR), što omogućuje korištenje kasa implementiranih u bilo kojem.net programskom jeziku

Jednostavan program class Hello static void Main() // ispis teksta na ekran System.Console.WriteLine( Hello World ); Možemo koristiti bilo koji tekst-editor i csc.exe ili VS: File -> New -> Project Project Types: Visual C# -> Windows Templates: Console Application Odabrati ime (npr: Hello)

Zadatak 1 Koristeći Vusal Studio, napišite program koji ispisuje pozdravnu poruku Uočite razlike u programu kojeg je definirao wizzard

Osnove jezika C# je strogo tipizirani jezik Imamo ugrañene i korisnički definirane tipove Prema načinu spremanja u memoriji se dijele na vrijednosne (stog) i referentne (heap, GC)

Vrijednostni tipovi Tip Veličina (u bajtovima).net tip Opis bool 1 Boolean true ili false byte 1 Byte od 0 do 255 (od 0 do 2 8-1) char 2 Char pojedinačniunicode znak ( A ili \u0041 ili \\ ili \n ) sbyte 1 SByte od -128 do 127 (od -2 7 do 2 7-1) short 2 Int16 od -32 768 do 32 767 (od -2 15 do 2 15-1) ushort 2 UInt16 od 0 do 65 535 (od 0 do 2 16-1) int 4 Int32 od -2 147 483 648 do 2 147 483 647 (od -2 31 do 2 31-1) uint 4 UInt32 od 0 do 4 294 967 295 (od 0 do 2 32-1) float 4 Single 7 decimala, od±1,5 x 10-45 do±3,4 x 10 38 double 8 Double 15-16 decimala, od±5,0 x 10-324 do±3,4 x 10 308 decimal 16 Decimal 28-29 decimala, od±1,0 x 10-28 do±3,4 x 10 28 long 8 Int64 od -9 223 372 036 854 775 808 do 9 223 372 036 854 775 807 (od -2 63 do 2 63-1) ulong 8 UInt64 od 0 do 18 446 744 073 709 551 615 (od 0 do 2 64-1) Enum i struct

Osnove jezika Implicitne pretvorbe rade, ako se ne gube podaci int x=5; double y = x; Za obrnuto moramo navesti da znamo šta radimo double x=5; int y = (int)x;

Jednostavan program using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 class Program static void Main() string s = Console.ReadLine(); int x = Convert.ToInt32(s); for(int i=0; i<x; ++i) Console.WriteLine(i);

Jednostavan program int x; try x = Convert.ToInt32(s); catch x = 10;

Varijable Prije korištenja, svaku varijablu moramo inicijalizirati int x=5, y; y = 10; WriteLine( x=0, y=1, x, y); Možemo im mijenjati vrijednost Konstante moramo odmah inicijalizirati, i kasnije im se vrijednost ne može mijenjati const int z=15;

string string je niz znakova. Razmaci se ne zanemaruju string s = abc def ; s = abc\ndef ; s = @ abc\ndef ; s = Console.ReadLine();

Operatori i tijek programa Operatori su isti kao u C++-u Kontrola tijeka vrlo slična: foreach prolazi kroz sve elemente nekog spremnika switch ne mora biti cijelobrojni tip i možemo koristiti goto case slučaj switch(i) case 1: Console.Write(1); goto case 3; case 2: Console.Write(2); break; case 3: Console.Write(3); break; default: Console.Write( nesto drugo ); break;

Zadatak 2 Napišite program koji za unešeni broj provjerava je li prost Napišite program koji unešeni broj rastavlja na proste faktore

Slanje parametara funkciji Svaka funkcija može imati proizvoljan broj parametara proizvoljnog tipa Svaki parametar se može slati po vrijednosti, ili po referenci (ref), a može biti i čisto izlazni parametar (out). Tada se prije korištenja u funkciji treba inicijalizirati.

Slanje parametara funkciji static void f1(int x) ++x; static void f2(ref int x) ++x; static void f3(out int x) // ++x; ovo bi bila greska x = 0; ++x; static void Main(string[] args) int x = 10; f1(x); Console.WriteLine(x); // 10 f2(ref x); Console.WriteLine(x); // 11 f3(out x); Console.WriteLine(x); // 1

Zadatak 3 Napišite funkciju koja vraća najmanji prosti broj veći od danog broja Napišite naredbu koja ispisuje sve proste brojeve manje od danog broja Napišite naredbu koja od dobivenog stringa napravi palindrom

Enumeracije enum imeenumeracije [:osnovnitip = int] const1 = vrijednost1, // ako ne stavimo podrazumijeva se 0 const2 = vrijednost2, // ako ne stavimo, bit ce prethodna+1... enum Temperature ledistevode = 0, vrelištevode = 100, static void Main(string[] args) Console.WriteLine("Ledište vode: 0", (int)temperature.ledistevode); Console.WriteLine("Vrelište vode: 0", (int)temperature.vrelištevode);

Klase class automobil public int gorivo = 100; public automobil() Console.WriteLine(gorivo); ~automobil() Console.WriteLine(gorivo); class Program static void Main() automobil a = new automobil(); ++a.gorivo;

Nasljeñivanje class kupe : automobil public kupe() Console.Write("Kupe\t"); ~kupe() Console.Write(@"Kupe\t"); class Program static void Main() automobil a = new kupe(); ++a.gorivo; Console.WriteLine("kraj\n");

Threadovi programi koje smo do sada susretali izvršavali su se uglavnom u jednom threadu (na jednoj jezgri procesora) ukoliko bi željeli upotrijebiti više, ili zbog drugih stvari, potrebno je kreirati više threadova svaki thread ima svoj stog (lokalne varijable, parametri) i svoju početnu rutinu

Threadovi Postoji više načina kreiranja threadova: void pocetak() Thread t = new Thread(new ThreadStart(pocetak)); t.start(); void radi(object o) ThreadPool.QueueUserWorkItem(new WaitCallback(radi), parametar);

Kreiranje threada using System.Threading; int threadno = 0; Program(int no) threadno = no; void drugithread() for (int i = 0; i < 10; ++i) Thread.Sleep(100); Console.WriteLine("Thread: 0:D, i=1:d", threadno, i); static void Main() Program p1 = new Program(1); Thread t = new Thread(new ThreadStart(p1.drugiThread)); t.start(); // Program p = new Program(0); p.drugithread();

Thread objekt Sleep(int milisec) čeka, procesor nije opterećen SpinWait(int vrijeme) vrti petlju odreñeno vrijeme. Ovisi o procesoru koliko, procesor je opterećen VolatileRead(obj) čita podatak iz memorije VolatileWrite(obj) piše podatak u memorije

Thread klasa Start() pokreće thread Abort() prekida izvršavanje threada Suspend() pauzira thread Resume() pokreće pauzirani thread Join(int milisec) čeka završetak threada Interrupt() prekida čekanje threada.

Primjeri Primjere startamo tako da u VS-u kreiramo novi projekt, odaberemo C# i Console Application, te kopiramo kôd primjera u glavnu.cs datoteku

Lock primjer 1.1 globalne i statičke varijable (a i drugi resursi mogu biti) zajednički threadovima, pa je ponekad potrebno osigurati da samo jedan thread pristupa varijabli lock(obj) zaključava kritični dio kôda. Ako je objekt zaključan, drugi thread nemože ući u taj dio kôda. obj je bilo koji objekt izveden iz Object (dakle svaka klasa)

AutoResetEvent primjer 1.2, 1.3 Wait(int milisec) čeka sve dok ne istekne vrijeme ili objekt ne bude signaliziran naredbom Set. Samo jedan thread može nastaviti s radom, te objekt odmah prelazi u nesignalizirano stanje Set() signalizira da jedan thread može nastaviti sa radom (ako čeka) Reset() ako je objekt u signaliziranom stanju, prelazi u nesignalizirano ManualResetEvent nakon Set, svi čekajući threadovi mogu nastaviti s radom, sve dok se ne pozove Reset.

Ostale sinhronizacijske rutine Postoje i brojni drugi načini za kreiranje threada, te za asinhrono pozivanje funkcija (neki su navedeni u primjerima) System.Threading sadrži još mnoštvo sinhronizacijskih mehanizama, poput Semafora, Mutexa, za detalje pogledati help od System.Threading