You are on page 1of 11

Sveuilite u Zagrebu

Fakultet prometnih znanosti


Zavod za inteligentne transportne sustave
Katedra za primijenjeno raunarstvo
Vjeba:
Kolegij:
Tema:
Vjebu pripremili:

#2
Algoritmi i programiranje
Osnove rada sa razvojnim okruenjem - Visual Studio
mr. sc. Ante Gali, dipl. ing.
Juraj Fosin, dipl. ing.
Mario Bunti, mag. ing. traff.

Upute za izradu vjebi/zadataka


Vjebe je potrebno izraditi pomou razvojne okoline MS Visual Studio. Prije dolaska
na vjebu potrebno je prouiti pripremu za vjebu. Vrijeme za izradu zadanih
zadataka iznosi 60 minuta.
Cilj vjebe
Upoznavanje sa razvojnim okruenjem MS Visual Studio.
o Kreiranje i spremanje novog projekta.
o Unos izvornog kda.
o Prevoenje kda.
o Kreiranje izvrne datoteke te njezino pokretanje.
o Postavljanje toke prekida te izvravanje programa naredbu po
naredbu.
o Otklanjanje logikih i sintaksnih pogreaka
Upoznavanje sa naredbama za unos i ispis razliitih tipova podataka.
Prilagoavanje formata ispisa unutar tekstualnog suelja.

1 | stranica

Priprema vjebe
MS Visual Studio
Razvojna okolina MS Visual Studio namijenjena je razvoju aplikacija u razliitim viim
programskim jezicima ukljuujui i C# kojim emo se mi koristiti na ovom kolegiju.
Sastoji se editora za unos programskog kda i alata za prevoenje, pokretanje te
ispravljanje napravljenog programa. MS Visual Studio u sebi ima ugraenu podrku za
razliite tipove programa. Tokom prvog dijela kolegija raditi emo sa programe s
tekstualnim sueljem (Console Application), a tokom drugog programe sa grafikim
sueljem (Windows Forms Application).
Kreiranje programa
MS Visual Studio sadri ve gotove predloke za izradu aplikacija raznih vrsta
ukljuujui aplikacije sa tekstualnim sueljem. Kreiranje aplikacije sa tekstualni
sueljem radi se u nekoliko koraka:
0. Pokretanje MS Visual Studia
Start -> Microsoft Visual Studio 20XX -> Microsoft Visual Studio 20XX
1. Kreira se projekt
New Project
2. Odabire se predloak programa
Visual C# -> Windows -> Console Application (kod kreiranja aplikacija sa
grafikim sueljem odabere se predloak Windows Form Application)
3. Izabire se ime programa
Name = Naziv projekta (Naziv zadatka npr. Zadatak01)
Solution name = Naziv rjeenja (Naziv vjebe npr. Vjezba01) jedno
rjeenje moe u sebi sadravati vie od jednog projekta.
4. Pritisak na gumb OK

2
3
1
4

Slika 1. Kreiranje programa

2 | stranica

Odabirom gumba OK automatski se podesi imeniki prostor, klasa za eljeni program te


glavna metoda Main (Slika 2). Metoda Main je toka u programu koju operacijski sustav
poziva nakon pokretanja programa.

Metoda Main.
Program se poinje
izvravati ovdje
Pokretanje
programa

Popis
sintaksnih
pogreaka

Postavljanje toke
prekida lijevom
tipkom mia

Unos programskog kda


(izmeu vitiastih zagrada)

Slika 2. Inicijalni prozor nakon kreiranja novog programa

Unos programskog kda


Unutar glavne metode (Main) je pripremljen prostor omeen vitiastim zagradama za
unos programskog kda (Slika 2). Programski blokovi se odvajaju vitiastim zagradama
koje je potrebno pravilno zatvarati. Obino se program sastoji od vie ugnijeenih
programskih blokova.
Pokretanje programa
Nakon unosa programskog kda potrebno ga je prevesti u izvrnu datoteku. Prevoenje
se moe izvesti runo preko menija Bulid zatim odabirom opcije Rebuild solution.
Druga opcija je pokretanje programa (Slika 2), a sam MS Visual studio e automatski
kreirati izvrnu datoteku i pokrenuti ju.
Otklanjanje sintaksnih pogreaka
U sluaju da postoje pogreke unutar programskog kda, razvojna okolina automatski
podcrtava neispravne dijelove kda i prikazuje ih u prozoru Error list (Slika 2). Postoje
dva tipa pogreki: upozorenje (engl. warning) i greka (engl. error). Upozorenje je
mogue zanemariti, a greke je potrebno ispraviti inae se ne moe generirati izvrna
datoteka i pokrenuti program. Prozor Error list predefinirano nije ukljuen ve ga
treba dodati preko menija View -> Error list.

3 | stranica

Postavljanje toke prekida te otklanjanje logikih greaka


Nakon to se otklone sintaksne pogreke napisani program moe sadravati i logike
greke. Njih je tee otkriti jer alat ih sam ne detektira. Njihovo uoavanje se radi
koritenjem testnih probnih podataka i provjere dali program radi eljenu kalkulaciju
tono. U sluaju uoavanja pogreke potrebno je koritenjem toaka prekida (engl.
breakpoints) i izvoenjem aplikacije naredbu po naredbu uoiti razlog nastanka
pogreke. Zbog breg ispravljanja greaka nije potrebno cijeli program izvoditi
postepeno ve samo dio u kojem je velika vjerojatnost nastanka greke.
Postavljanje toke prekida radi se lijevom tipkom mia s lijeve strane programskog kda
(Slika 2) te to mjesto oznaava dio programa koji e se izvravati korak po korak. Nakon
pokretanja programa sa prekidnom tokom u gornjem dijelu pojaviti e se izbornik kao
na Slika 3. Sa F11 program ide korak naprijed sa ulaskom u metode, sa F10 program
ide korak naprijed bez ulaska u metode, a sa Shift F11 program ide dalje sa
izvravanjem.

Step into (F11)

Step over (F10)

Step out (shift + F11)

Slika 3. Kontroliranje izvoenja programa korak po korak

Vrijednost varijabli pri izvoenju programa korak po korak moe se vidjeti


pozicioniranjem kursora mia na tu varijablu (Slika 4). Takoer je u jednom programu
mogue postaviti vie toki prekida.

Slika 4. Provjera vrijednosti varijable

Tipova podataka i deklariranje varijabli


Varijable predstavljaju prostor za skladitenje vrijednosti. Svaka varijabla je odreenog
tipa, to znai da se u prostor koji ona predstavlja moe spremiti samo vrijednost istog
tog tipa. Neki jednostavniji tipovi varijabli prikazani su u Tablica 1.
Tablica 1. Tipovi varijabli

Tip
bool
char
float
double
int

Reprezentira
Binarnu vrijednost
16-bitni UNICODE znak
32-bitni broj sa plivajuim
zarezom
64-bitni broj sa plivajuim
zarezom veeg opsega
32-bitni cijeli broji

Raspon vrijednosti
True ili False
U +0000 do U +ffff
-3.4 x 1038 do
+ 3.4 x 1038
(+/-)5.0 x 10-324 do
(+/-)1.7 x 10308
-2,147,483,648 do 2,147,483,647

Predefinirana
vrijednost
False
'\0'
0.0F
0.0D
0

Varijable se deklariraju za koritenje na jedan od sljedeih naina:


(Tip varijable) (Naziv varijable);
(Tip varijable) (Naziv varijable) = (Vrijednost varijable) ;
4 | stranica

U prvom sluaju radi se samo o deklaraciji varijable, dok joj se u drugom primjeru u
istom trenutku dodjeljuje i vrijednost. Vrijednost mora biti istog tipa kao i tip varijable.

Uitavanje vrijednosti
Prilikom unosa podataka u raunalo sve se prvo prikazuje podatkom tipa string
odnosno nizom znakova ili podatkom tipa int odnosno cijelim brojem ako se radi o
uitavanju samo jednog znaka. Za uitavanje podataka je tako mogue koristiti sljedee
metode (sastavni dijelovi sistemske metode Console namijenjene za rad sa tekstualnim
sueljem odnosno konzolom):
Console.Read() - ita znak po znak i vraa podatak tipa int koji predstavlja znak
iz UNICODE standarda (npr. ako upiete znak A dobiti e te vrijednost int-a
65). Ako uitana vrijednost vrati -1 znai da vie nema podataka za proitati.
Console.ReadLine() - ita niz znakova i vraa podatak tipa string.
Za pretvorbu uitanog podatka u eljeni format podatka potrebno je koristiti metodu
Convert za pretvorbu podataka. Radi se o sistemskoj klasi iz imenikog prostora
System. Metoda Convert podrava sljedee bitne pretvorbe formata podataka
(poetni tip podatka je string):
Convert.ToBoolean() -> u logiku varijablu;
Convert.ToInt32() -> u cijeli broj duljine 8 byte;
Convert.ToDouble() -> u broj sa plivajuim zarezom;
Convert.ToChar() -> u znak;
Kao ulaznu varijablu za metodu Convert mogue je iskoristiti rezultat koji vraaju
metode za itanje sa konzole. Situacija je vidljiva u sluaju kda za itanje podatka tipa
int:
// koristenje metode ReadLine
int cijeliBroj;
cijeliBroj = Convert.ToInt32(Console.ReadLine());

Metoda Console.ReadLine dohvaa niz znakova sa konzole i prosljeuje ga dok metoda


Convert.ToInt32 prihvaeni uitani niz znakova pretvori u cijeli broj. Ako uneseni niz
znakova sa konzole nije mogue pretvoriti u cijeli broj dolazi do greke.

Prilagoavanje formata ispisa unutar tekstualnog suelja


Za prikaz rezultata izvravanja aplikacije na zaslonu monitora potrebno je napraviti
ispis podataka. U tu svrhu je mogue koristiti metode (sastavni dijelovi sistemske klase
Console namijenjene za rad sa tekstualnim sueljem odnosno konzolom):
Console.Write()-> ispisuje proslijeeni niz znakova;
Console.WriteLine()-> ispisuje proslijeeni niz znakova uz automatski ispis
znaka za novi redak;
Mogue je napraviti neformatirani i formatirani ispis. Neformatirani ispis izravno
konzoli prosljeuje dani niz znakova bez zadavanja opcija ispisa dok je u sluaju
formatiranog ispisa mogue zadati opcije izgleda ispisa. Primjer neformatiranog ispisa
uitanog cijelog broja dan je sljedeim kdom:
// ispis podataka
Console.WriteLine("Uitani cijeli broj je " + cijeliBroj);

Potrebno je primijetiti da je cijeli broj (cijeliBroj) potrebno pretvoriti u niz znakova pri
emu dananji prevodioci to rade automatski. Kod formatiranog ispisa podataka mogue
5 | stranica

je dodavati opcije izgleda ispisa. Opcije ukljuuju broj decimala za ispis, poravnanja u
tekstu, razmak prema prethodnom tekstu i sl. Primjer formatiranog ispisa broja PI na tri
decimale dan je sljedeim kodom:
// ispis podataka
Console.WriteLine("Broj PI: {0,0:#.###}", Math.PI);

Grananje - if naredba
Prilikom izrade programskog kda za rjeavanje razliitih problema esto je potrebno
donositi odluke radi odabira niza potrebnih naredbi za ispravno rjeavanje problema.
Potrebna odluka odnosno grananje u programskom kdu mogue je rijeiti koritenjem
if naredbe i pripadnih opcija.
if (uvjet)
{
//Ovaj dio kda e se izvriti ako je uvjet True
}
//Ako je uvjet False program se samo nastavlja izvravati u ovoj toci

Komentari
Komentari slui pojanjavanju dijelova kda. Njih prevoditelj tokom kreiranja izvrne
verzije programa ignorira. Komentari se u programskom jeziku C# piu na dva naina:
Komentari u jednom retku (//) -> sve iza dvije kose crte u istom retku je
komentar
Komentari za blok naredbi (/* */) sve unutar kosih crta i zvjezdica je
komentar
Primjeri komentiranja prikazani su ispod:
//Ovo je komentar
/*
Ovo je komentar
i ovo
...
*/

Korisne napomene za rad na vjebi

Vitiaste zagrade se dobivaju na HR tipkovnici kombinacijama tipki Alt Gr + b


(lijeva vitiasta zagrada -> {) te Alt Gr + n (desna vitiasta zagrada -> }).
Uglate zagrade se dobivaju na HR tipkovnici kombinacijama tipki Alt Gr + f
(lijeva uglata zagrada -> [) te Alt Gr + g (desna vitiasta zagrada -> ]).
Tipkom Delete ili Del se brie znak ispred kursora.
Tipkom Backspace se brie znak iza kursora.
Tipkom Ins ili Insert se aktivira opcija pisanja preko postojeeg teksta tako novi
znak prebrie postojei znak. Aktivira se pritiskom na tipku, a deaktivira ponovnim
pritiskom.
Potvrda unosa podatka u tekstualnom suelje je pritisak na tipku Enter.
Znak | se dobiva na HR tipkovnici kombinacijom tipki Alt Gr + w.
Znakovi manje i vee se dobivaju na hrvatskoj tipkovnici kombinacijama tipki Alt
Gr + , za znak < te Alt Gr + . za znak >.

6 | stranica

Zadaci za vjebu
1. Zadatak
Napiite program koji ispisuju poruku Pozdrav iz programskog jezika C#! i u novom
retku Dobro doli na Algoritme i programiranje! i pokrenite program.
Rjeenje:
using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;

namespace Vjezba01_Zadatak01
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Pozdrav iz programskog jezika C#!");
Console.WriteLine("Dobro doli na Algoritme i programiranje!");
Console.ReadKey(); //Zadrava konzolu otvorenom nakon izvravanja programa
}
}
}

7 | stranica

2. zadatak
Napiite program koji za dva uitana broja (broj1 i broj 2) ispisuje njihovu sumu,
umnoak, razliku te kvocijent. Ispis formatirati tako da svaki ispis bude u svom retku, te
se ispisuju i operandi i operator. Npr. za razliku je potrebno ispisati 16 - 10 = 6.
Dijagram toka za rjeavanja zadatka prikazan je na Slika 5.

Slika 5. Dijagram toka za rjeavanje 2. Zadatka

Nakon ispravno napisanog programa i njegovog pokretanja potrebno je postaviti toku


prekida kod izrauna sume te pokrenuti program. Zatim je potrebno izvravati program
naredbu po naredbu do samog kraja.

8 | stranica

Rjeenje:
using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;

namespace Vjezba01_Zadatak02
{
class Program
{
static void Main(string[] args)
{
int broj1;
int broj2;
Console.Write("Unesite vrijednosti 1. broja: " );
string s1 = Console.ReadLine();
Console.Write("Unesite vrijednosti 2. broja: " );
string s2 = Console.ReadLine();
broj1 = Convert.ToInt32(s1);
broj2 = Convert.ToInt32(s2);
int
int
int
int

suma = broj1 + broj2; //Postavljanje toke prekida


razlika = broj1 - broj2;
umnozak = broj1 * broj2;
kvocijent = broj1 / broj2;

Console.WriteLine(broj1
Console.WriteLine(broj1
Console.WriteLine(broj1
Console.WriteLine(broj1

+
+
+
+

"
"
"
"

+
*
/

"
"
"
"

+
+
+
+

broj2
broj2
broj2
broj2

+
+
+
+

"
"
"
"

=
=
=
=

"
"
"
"

+
+
+
+

suma);
razlika);
umnozak);
kvocijent);

Console.ReadKey();
}
}
}

9 | stranica

3. zadatak
Sastavite konzolni program Telefon za izraunavanje mjesenih trokova telefoniranja,
ako su poznati broj potroenih telefonskih impulsa, cijena impulsa i iznos telefonske
pretplate. U iznos telefonske pretplate uraunato je 100 besplatnih impulsa. Dijagram
toka za rjeenje ovog zadatka prikazan je na Slika 6.

Slika 6. Dijagram toka 3. zadatka

10 | stranica

Rjeenje:
using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;

namespace Vjezba01_Zadatak03
{
class Program
{
static void Main(string[] args)
{
Console.Write("Upiite broj potrenih impulsa: ");
int impulsi = Convert.ToInt32(Console.ReadLine());
Console.Write("Upiite cijenu impulsa: ");
double cijena = Convert.ToDouble(Console.ReadLine());
Console.Write("Upiite iznos pretplate: ");
double iznosPretplate = Convert.ToDouble(Console.ReadLine());
int visak = 0;
if (impulsi > 100)
{
visak = impulsi - 100;
}
double trosak = iznosPretplate + visak * cijena;
Console.Write("Potroeni iznos je " + trosak + " Hrk.");
Console.ReadKey();
}
}
}

11 | stranica

You might also like