UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Miha Anžiček UREJEVALNIK JAVANSKE KODE DIPLOMSKO DELO NA VISOKOŠOLSKEM STROKOVNEM ŠTUDI

Velikost: px
Začni prikazovanje s strani:

Download "UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Miha Anžiček UREJEVALNIK JAVANSKE KODE DIPLOMSKO DELO NA VISOKOŠOLSKEM STROKOVNEM ŠTUDI"

Transkripcija

1 UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Miha Anžiček UREJEVALNIK JAVANSKE KODE DIPLOMSKO DELO NA VISOKOŠOLSKEM STROKOVNEM ŠTUDIJU MENTOR: doc. dr. Boštjan Slivnik Ljubljana, 2011

2

3

4 I Z J A V A O A V T O R S T V U diplomskega dela Spodaj podpisani/-a z vpisno številko Miha Anžiček, , sem avtor/-ica diplomskega dela z naslovom: Urejevalnik javanske kode S svojim podpisom zagotavljam, da: sem diplomsko delo izdelal/-a samostojno pod mentorstvom (naziv, ime in priimek) doc. dr. Boštjan Slivnik in somentorstvom (naziv, ime in priimek) so elektronska oblika diplomskega dela, naslov (slov., angl.) ter povzetek (slov., angl soglašam z javno objavo elektronske oblike diplomskega dela v zbirki»dela FRI«. V Ljubljani, dne Podpis avtorja/-ice:

5 ZAHVALA Rad bi se zahvalil vsem, ki so me podpirali na moji poti do diplome. Na prvem mestu bi se zahvalil staršem, ki so mi stali ob strani ob premagovanju ovir ter seveda zahvala tudi vsem kolegom in kolegicam na fakulteti, profesorjem ter mentorju.

6 KAZALO POVZETEK... 1 KLJUČNE BESEDE... 1 ABSTRACT... 2 KEY WORDS UVOD WHITESMITH-OV STIL HORSTMANN-OV STIL BANNER-JEV STIL JAVANSKA KODERSKA KONVENCIJA KONČNICE ZAČETEK RAZREDA LOMLJENJE VRSTIC KOMENTARJI DEKLARACIJE STAVKI JINDENT ZASNOVA FUNKCIJ UREJEVALNIKA VSEBINA FUNKCIJ REALIZACIJA UREJEVALNIKA UVOD ZAGON IN PRIPRAVA RAZBIRANJE BESED IZPISOVANJE ZAKLJUČEK PRILOGE Priloga A: izvorna koda celotnega programa pred ureditvijo z diplomskim programom Priloga B: primer urejanja na izvorni kodi diplomske TABELA SLIK VIRI... 53

7 1 POVZETEK V diplomski nalogi je opisan program za urejanje sintaksno pravilne javanske kode. Program se poganja iz ukazne vrstice z dvema parametroma, ki določata datoteko, z neurejeno kodo ter zaželeno maksimalno dolžino vrstic, ki pa ni obvezna. Deluje izključno za javansko kodo ter po samem zagonu ne potrebuje več uporabnikove interakcije. Pokriva vse osnovne funkcije urejevalnika, kot so pravilno postavljanje v novo vrstico, zamiki, presledki, itd. ter tudi lomljenje predolgih vrstic glede na podano maksimalno dolžino (če ni podana, se vzame privzeta dolžina 40 znakov). Izpisana koda je sintaksno pravilna in pripravljena za nadaljnjo uporabo. KLJUČNE BESEDE Java Urejevalnik kode Lomljenje vrstic Ukazna vrstica Predolge vrstice

8 2 ABSTRACT The goal of this thesis is proper ordering of Java syntax code. The program is being run from command prompt with two parametres. First one includes Java source code in which Java syntax is in dissordered form and the second one includes maximum line length. The second parameter is not necessary. It works only for Java syntax and after being started it does not need user interaction. It covers all basic code parser functions like getting into a new line, proper spacing, etc. and it also includes line breaking of overlength lines according to the given maximum line length. If maximum line length is not given, default value is used (40 characters). Printed code is syntactically correct and is prepared for further use. KEY WORDS Java Code parser Line breaking Command prompt Overlength lines

9 3 1. UVOD V današnjem času je uporaba urejevalnikov kode postala že nekaj samoumevnega. Vsako moderno razvojno okolje in urejevalnik teksta ima že vgrajeno funkcijo, ki avtomatsko uredi izvorno kodo, da ta postane razumljiva ter da so posamezni segmenti izvorne kode jasno in nedvoumno vidni. S tem programerju npr. omogoči hiter pregled ravnokar naložene kode, ki se je po možnosti pri prenosu s spleta spremenila v nerazpoznavno obliko. To mu prihrani veliko časa, če je koda zelo obsežna (kar pogosto tudi je), ki ga lahko porabi za nujnejša opravila. Ker pa se zapisi programov različnih programerjev med sabo razlikujejo, ima večina razvojnih okolij tudi možnost prilagajanja nastavitev za urejanje izvorne kode. Ta sega od dolžine odmikov med posameznimi stavki, spuščanja ustreznega števila praznih vrstic vse do nastavljanja želene dolžine in stila lomljenja predolgih vrstic. Ravno zato so nekateri odprtokodni projekti predlagali standardizirane stile urejanja kode. Tu bi posebej izpostavil GNU stil in BSD stil. Vendar pa se kljub uvedbi standardov olepševanje kode verjetno ne bo nikoli popolnoma standardiziralo. Vedno bodo pomembnejše posamezne želje in navade posameznikov, da določen kos izvorne kode uredijo po svoje. Zaradi tega pride do pogostega problema, da se zaradi stila enega programerja na prvi pogled zdi koda nerazumljiva drugemu programerju. Prav tako se stili urejanja kode med sabo zelo razlikujejo glede na posamezni programski jezik. Posebej bi izpostavil razliko med postopkovnimi in nepostopkovnimi programskimi jeziki. V nekaj naslednjih razdelkih je prikazano, kako so se razvijali stili in predvsem v kakšnih podrobnostih se med seboj razlikujejo. Razlike niso velike in se nanašajo predvsem na postavljanje zamikov in zavitih oklepajev. V tem trenutku je najbolj razširjen Bannerjev stil, ki prevladuje v večini internetne dokumentacije in tematskih strokovnih knjigah, vendar pa se tudi tu najdejo odstopanja. En tak primer je, da je zaviti zaklepaj brez zamika in se nahaja v istem stolpcu kot deklaracija. Vendar pa je pri tem potrebno opozoriti, da noben izmed teh stilov ni obvezujoč in se jih lahko uporablja po lastnih željah in presoji. Glavni cilj teh stilov je predvsem to, da se nekako uskladi globalna oblika kodiranja, ker gre pri programiranju za proces in postopke, ki morajo saj v osnovi biti dostopni in razumljivi vsakomur, ne glede na nacionalnost in ne kot oblika omejevanja pri izražanju svoje programske logike. 1.1 WHITESMITH-OV STIL Za Whitesmithov stil je značilno, da so začetni zaviti oklepaji v novi vrstici in da so zamiki poravnani z zamiki stavkov[1]: public void compare(int x, int y) { while(x == y) { System.out.println("equal"); x++; System.out.println("finished"); Slika 1 Whitesmithov stil

10 4 1.2 HORSTMANN-OV STIL Horstmannov stil se od Whitesmihtovega razlikuje v tem, da so zaviti oklepaji poravnani z začetkom deklaracij funkcij in začetkom vejitvenih struktur ter da je prvi stavek v isti vrstici kot začetni zaviti oklepaj[2] (prikazano na naslednji strani): while(true) { int i = 0; i++; if(j > i) { j--; System.out.print("Incremented!"); Slika 2 Horstmannov stil 1.3 BANNER-JEV STIL Bannerjev stil postavi začetni zaklepaj v isto vrstico, v kateri se nahaja deklaracija funkcije ter zaklepaj ima isti zamik kot vsi pripadajoči stavki[3]: public int add (int a, int b) { int c = a + b; if (c > 10) { return c; else { return 0; Slika 3 Bannerjev stil 1.4 JAVANSKA KODERSKA KONVENCIJA S strani podjetja Sun Microsystems, ki je avtor Jave, je bila izdana tudi posebna dokumentacija, ki predpisuje uradna pravila urejanja javanske kode s strani razvijatelja samega. Razlogi za izdajo teh pravil so sledeči: redko kateri program je razvit in vzdrževan s strani samo enega avtorja; koderske konvencije izboljšajo berljivost programov in omogočijo programerjem, da razumejo novo kodo hitreje; če se izvorna koda izdaja kot produkt, mora biti dobro urejena, pregledna in ustrezno zapakirana. V njej so opredeljena pravila za vse segmente kodiranja od deklaracij spremenljivk, imenovanja spremenljivk in datotek do postavljanja komentarjev in predlog za pravilno in optimalno kodiranje določenih segmentov kode[4].

11 KONČNICE Najprej bi omenil predpise za končnice javanskih datotek z izvorno kodo. Končnica za datoteko z javansko izvorno kodo je.java, medtem ko je končnica za javansko byte kodo.class ZAČETEK RAZREDA Vsak javanski razred vsebuje en javni razred ali vmesnik. Vsak začetek razreda ali vmesnika mora po konvenciji izgledati tako in v točno takšnem zaporedju: začetni komentarji (slika 4); /* * Classname * * Version information * * Date * * Copyright notice */ Slika 4 Primer pravilnega stila začetnih komentarjev stavki, ki označujejo uvoz in pakiranje (slika 5); package diplomska; import java.io.*; Slika 5 Pravilni stil stavkov za uvoz in pakiranje deklaracija razreda ali vmesnika (slika 6). public class CodePrinter LOMLJENJE VRSTIC Slika 6 Pravilni stil deklaracije razreda ali vmesnika Predpisano je, da dolžina vrstic ne sme biti daljša od 80 znakov, veljajo pa različna pravila za lomljenje različnih izrazov: lomljenje klicev metod (slika 7); getbiggestplanet(innerplanet.getmercury(), innerplanet.getearth() outerplanet.getjupiter(), outerplanet.getsaturn(); Slika 7 Pravilni stil lomljenje klicev metod

12 6 lomljenje aritmetičnih izrazov (slika 8); sum = getmaxsize() + length + depth - getfirstheight() * secondheight() + arraynumber; lomljenje pogojnih stavkov (slika 9). Slika 8 Pravilni stil lomljenja aritmetičnega izraza if ((ch=='<') (ch=='>') (ch=='+') (ch=='-') (ch=='%') (ch=='{')) { System.out.println(ch); KOMENTARJI Slika 9 Pravilni stil lomljenja pogojnega stavka Javanski programi imajo lahko 2 vrsti komentarjev: implementacijski (/* */ in //) komentarji in dokumentacijski komentarji(/** */). Implementacijski komentarji so namenjeni komentiranju kode in komentarjev o specifični implementaciji, medtem ko dokumentacijski komentarji opisujejo specifikacije kode. Namen komentarjev je, da podrobneje razložijo kodo in dajo dodatne informacije, ki niso neposredno vidne iz same izvorne kode. Komentarji se ločijo na štiri stile: blokovni komentarji (slika 10); /* * Here is a block comment */ enovrstični komentarji (slika 11); Slika 10 Pravilni stil blokovnega komentarja if (true) { /*Handle the condition*/ start(); zaključni komentarji (slika 12); Slika 11 Pravilni stil enovrstičnega komentarja if (a == 2) { return true; /*special case*/ else { return isprime(a); /*works only for odd a*/ Slika 12 Pravilni stil zaključnega komentarja

13 7 zaključno-vrstični komentarji (slika 13). if (foo > 0) { foo = getsize(foo) //explain why here Slika 13 Pravilni stil zaključno-vrstičnega komentarja DEKLARACIJE Priporočena je ena deklaracija na vrstico(slika 14), pri tem pa se moramo izogibati deklaracijam različnih tipov v eni vrstici(slika 15). int a; //pravilno int b; Slika 14 Pravilni stil deklaracij spremenljivk v eni vrstici int c; int d; //nepravilno Slika 15 Nepravilni stil deklaracij spremenljivk Pomembno je tudi, da so lokalne spremenljivke inicializirane tam, kjer so deklarirane! Deklaracije je potrebno postavljati na začetek blokov (katerekoli kos kode, ločen z { in, slika 16). public void mymethod() { int x = 0 + getsize(); if (x > 0) { int y = start(); Slika 16 Pravilni stil inicializacije deklaracij spremenljivk Pri deklaracijah razredov in vmesnikov je potrebno upoštevati nekatera pravila (slika 17) ne sme biti presledka med imenom metode in (, ki predstavlja začetek parametrov; oklepaj { se pojavi na koncu iste vrstice, v kateri je tudi deklaracija; zaklepaj se nahaja v novi vrstici. Class MyClass extends Object { int ivar1; int ivar2; MyClass(int i, int j) { ivar1 = i; ivar2 = j; Slika 17 Pravilni stil deklaracije razreda in pripadajočih metod

14 STAVKI Za zapis in oblikovanje stavkov obstajajo naslednja pravila: vsaka vrstica more vsebovati natančno en stavek(slika 18); argv++; argv--; Slika 18 Pravilno razporejanje stavkov Povratni stavek z vrednostjo mora vračati vrednost, ki je kolikor je možno očitna in jasno razvidna(slika 19); return; return mydisk.size(); return (size? size : defaultsize); Slika 19 Pravilen stil povratnega stavka pravilen stil pogojnih in pogojno-pogojnih stavkov je prikazan na slikah 20 in 21; if ( i > 3( { i--; else if ( i < 0) { i++; else { i = 0; Slika 20 Pravilen stil pogojnega stavka if ( i > 3( { i--; else { i++; Slika 21 Pravilen stil pogojno-pogojnega stavka For stavek mora imeti obliko, kot jo prikazuje slika 22(na naslednji strani); for ( int i = 0; i < 5; i++) { i = get(len()); Slika 22 Pravilen stil for stavka predpisano obliko while stavka prikazuje slika 23

15 9 while ( i > 0 { System.out.println(i); i++; Slika 23 Pravilen stil while stavka do stavek mora imeti obliko prikazano na sliki 24 (na naslednji strani); do { i > 0 { System.out.println(i); i++; while ( i > 0); Switch stavek (slika 25); Slika 24 Pravilen stil do stavka switch ( x) { case 1: System.out.println("1"); break; case 2: System.out.println("2"); break; default: System.out.println("Error"); break; Slika 25 Pravilen stil switch stavka pravilno obliko try-catch stavka prikazuje slika 26, le-ta pa lahko vsebuje tudi ukaz finally (slika 27). try { File dat = new File("test.txt"); catch (Exception e) { e.printstacktrace(); Slika 26 Pravilen stil try-catch stavka try { File dat = new File("test.txt"); catch (Exception e) { e.printstacktrace(); finally { System.out.print("Finished"); Slika 27 Pravilen stil try-catch stavka z ukazom finally

16 JINDENT Prikazal bi primer uporabe urejevalnika javanske kode v modernem razvojnem okolju Eclipse. Uporabil sem razširitev za Eclipse, imenovano Jindent[5], ki je profesionalno orodje za urejanje, olepševanje in izpisovanje javanske kode. To orodje uporablja najzmogljivejše algoritme urejanja in deluje po najnovejših standardih javanske koderske konvencije. Koda pred ureditvijo je prikazana na sliki 28, koda po ureditvi pa na sliki 29: Slika 28 - Koda pred ureditvijo v okolju Eclipse Slika 29 Koda po ureditvi z orodjem Jindent

17 11 Na sliki 30 se lepo vidi stil, ki popolnoma ustreza najnovejšim standardom. Stil, ki je uporabljen zgoraj, je privzet, da pa se ga popolnoma prilagoditi. Lepo prikazuje zamike in prehajanja v novo vrstico, posebej pa bi izpostavil zavite oklepaje, ki se nahajajo v isti vrstici kot deklaracija strukture, kar nekako ustreza že prej omenjenemu BSD stilu. To pravilo se uporablja v veliki večini orodij in pri mnogih posameznikih, vendar pa jaz osebno uporabljam način, da je zaviti oklepaj v novi vrstici. To nekako ustreza tudi že prej omenjenemu GNU stilu. Iz tega izhaja tudi dejstvo, da moja diplomska uporablja način, ki postavlja zaviti oklepaj v novo vrstico.

18 12 2. ZASNOVA FUNKCIJ UREJEVALNIKA Urejevalnik pretvarja sintaksno pravilno javansko kodo iz neurejene oblike v urejeno, pri čemer se obdrži sintaksna pravilnost. Vsebuje samo osnovne funkcije, ki predstavljajo nekakšen minimalen standard vsakega urejevalnika. S tem se ohranja preprostost ter učinkovitost urejanja. Namenjen je programerjem in vsem tistim, ki rabijo hiter in preprost pregled strukture naključne kode v nerazumljivi obliki. Urejevalnik ne vsebuje grafičnega vmesnika, ampak se poganja iz ukazne vrstice. Kot parameter se mu poda datoteka z neurejeno kodo ter drugi želen parameter, ki določa maksimalno dovoljeno dolžino vrstice. Če ta parameter ni podan, se privzame dolžina 40 znakov. Sama urejena koda se izpiše v sami konzoli, da je uporaba orodja kar najbolj učinkovita. 2.1 VSEBINA FUNKCIJ Osnovne funkcije obsegajo: Pravilno prehajanje v nove vrstice (slika 30). Med najpomembnejše in najbolj osnovne funkcije spada postavljanje posameznih stavkov in struktur v novo vrstico. To se v osnovi izvaja nad podpičji, ki v programskem jeziku Java pomenijo konec stavka oz. strukture. S tem damo olepšani kodi osnovni izgled, ki da nekakšen osnovni pregled nad izvorno kodo. Posamezne stavke je možno v večini primerov že razbrati, vendar pa se še vedno ne vidi pravi logični pomen teh stavkov ter sama njihova pripadnost metodam in algoritmom. int a; //pravilno int b; int c; int d; //nepravilno Slika 30 Pravilno prehajanje v nove vrstice Pravilno postavljanje zamikov pripadnosti funkcijam in algoritmom (slika 31). Naslednja zelo pomembna funkcija je delanje zamikov že postavljenih vrstic in stavkov glede na njihovo pripadnost posameznih metodam oziroma njihovo gnezdenje v posameznih strukturah. Tu se že pokaže logika posameznih stavkov, njihova ugnezdena pripadnost ter njihovo natančno zaporedje. S tem dobi programer dokaj natančen pregled nad samo izvorno kodo, njeno osnovno urejenostjo ter na prvi pogled lahko da grobo oceno, kaj je neko osnovno logično bistvo te izvorne kode. To mu omogoči, da lahko na prvi pogled izlušči, kaj določena izvorna koda počne ter ugotovi, če je npr. to sploh tisto, kar on potrebuje.

19 13 try //nepravilno { breakdistance = integer.parseint(args[1]); catch (NumberFormatException e) { throw new NumberFormatException(); try //pravilno { breakdistance = integer.parseint(args[1]); catch (NumberFormatException e) { throw new NumberFormatException(); Slika 31 Pravilno postavljanje zamikov Pravilno postavljanje presledkov pri posebnih znakih (primerjave, izrazi,...). Najprej omenimo znake, ki so namenjeni primerjanju dveh vrednosti oziroma predstavljajo logične operatorje. Funkcija je zmožna ločevati posebne znake, ki predstavljajo en znak (>, <, &,...) ali so sestavljeni iz večih znakov (<=, ==, &&,...). V ustreznih pogojnih in vejitvenih stavkih se presledki med, po in pred njimi postavijo tako, da je vloga in pomen posebnega znaka jasno vidna in nedvoumna. To omogoči pregled in prikaže natančen pomen pogojev v posameznih vejitvenih stavkih in programerju jasno in nazorno pokaže zaporedje izvajanja stavkov ob določenih pogojih. Tu bi tudi omenil primer posebnega znaka!, ki v logičnem smislu pomeni negacijo pogoja. Funkcija pred omenjeni znak postavi presledek, vendar pa ga za njim ni. To spada pod standard izpisovanja tega znaka in ne predstavlja napake. Izhaja pa iz logike, da se znak nanaša samo na obstoječ klic metode oziroma logičnega pogoja, ker ga logično zanika in ne predstavlja primerjave dveh vrednosti oz. logične izbire med dvema pogojema. V tej funkcionalnosti je zajeto tudi postavljanje presledkov med aritmetičnimi izrazi. Tudi te znake je funkcija možna razločevati na enoznačne (+,,...) in tiste, ki so sestavljeni iz več znakov (++, --,...). S tem je omogočeno jasno razbiranje aritmetičnih izrazov. Tu bi rad izpostavil znaka + in *, ker imata lahko oba več pomenov. Skupno jima je, da se uporabljata kot osnovna aritmetična izraza. V tem primeru se presledek postavi pred in po posebnem znaku, * pa se lahko uporablja tudi v primeru tako imenovanih import stavkov. Sami stavki imajo pomen uvažanja in uporabe zunanjih paketov razredov in * na koncu pove, da naj uvozi vso vsebino izbranega paketa. V tem primeru presledka pred njo ni. Lahko pa se uporablja tudi pri označevanju več vrstičnih komentarjev, vendar o tem nekoliko kasneje. + pa se lahko uporablja tudi za lepljenje nizov znotraj stavkov za izpisovanje. a = 3 + 2; //pravilno if((i < 0) &&!isbollean) return false; a=3+2; //nepravilno if((i<0)&&! isbollean) return false; Slika 32 Pravilno postavljanje presledkov pri posebnih znakih

20 14 Lomljenje predolgih vrstic glede na podano največjo dovoljeno dolžino (slika 32). Maksimalna dolžina vrstice za lomljenje se nastavi že kot argument pri zagonu programa, vendar pa ni obvezna. Če je ni, se uporabi privzeta vrednost 40 znakov. Samo lomljenje poteka po pogojih, ki se nahajajo v določeni vrstici. Tu mislim predvsem logične operatorje, po potrebi pa se vrstice lomijo tudi po pikah. Logičnim operatorjem se določijo prioritete, in sicer operator z najnižjo prioriteto se uporabi najprej. Tako dosežemo, da sam izpis lomljenje vrstice ohranja uporabniku razumljiv izgled. Pri lomljenju sem moral upoštevati nekatere posebne primere kot je npr. predolgo ime spremenljivke. private boolean isarithmeticchar(string znak) //pravilno { if (znak.equals("*") znak.equals("/") znak.equals("-") znak.equals("+") znak.equals(" ") znak.equals("&&")) { return true; return false; private boolean isarithmeticchar(string znak) //nepravilno { if (znak.equals("*") znak.equals("/") znak.equals("-") znak.equals("+") znak.equals(" ") znak.equals("&&")) { return true; return false; Slika 33 Pravilno lomljenje predolge vrstice Urejevalnik pa ne vsebuje nekaterih drugih pogostih funkcij, ki jih kot standard jemljejo profesionalna orodja. Glavni razlog za to je implementacija, ki je preveč kompleksna. Glavne izmed teh funkcij so sledeče: raznovrstnih predlog za optimizacijo in»pametnejšo«rabo posameznih segmentov kode; ne označuje odvečnih spremenljivk in importov; ne barva kode; ne ustreza popolnoma standardiziranim stilom urejanja kode. Najbolj očitno odstopanje se pojavlja pri pisanju zavitih oklepajev (slika 33).

21 15 if(true) { //po standardu //do something if(true) //moj stil { //do something Slika 34 Primerjava pisanja zavitih oklepajev Omenil bi tudi komentarje, ki se tudi ne izpisujejo po konvencijah, ampak v standardnem formatu (tam kjer se pojavijo tudi so) in so brez posebne obdelave. Ravno tako pa tudi ne obstaja raba praznih vrstic med posameznimi metodami ipd..

22 16 3. REALIZACIJA UREJEVALNIKA 3.1 UVOD Urejevalnik prebere podano datoteko, ki vsebuje neurejeno javansko izvorno kodo. Nato to datoteko razbije na posamezne besede ter jim takoj določi potrebno dolžino zamika (pripadnost funkcijam, različnin vejitvenim stavkom,...) in zaporedno vrstico, v kateri se bo posamezna beseda izpisala. Kot takšna se beseda shrani v seznam besed. Nato se posamezne besede po vrsti berejo iz seznama in se ustrezno izpisujejo na mestih, ki smo jih določili prej. Po potrebi se posamezni stavki tudi lomijo. 3.2 ZAGON IN PRIPRAVA V osnovi je urejevalnik realiziran z zagonom iz ukazne vrstice. Ob zagonu lahko sprejme 2 parametra, od katerih je prvi obvezen. Prvi predstavlja datoteko, ki vsebuje neurejeno izvorno kodo, drugi pa je izbirni in predstavlja maksimalno dovoljeno dolžino vrstic. Če le-tega argumenta ni, se uporabi privzeta vrednost, in sicer 40 znakov na vrstico. Primer zagona je prikazan na sliki 34. Slika 35 Primer zagona programa Ko se program požene, se drugi parameter takoj pretvori iz argumenta v spremenljivko razreda File, ki se potem poda razredu CodeParser, le-ta pa je zadolžen za razbijanje podane vsebine datoteke na posamezne besede. Pri tem se pokliče konstruktor, v katerem se nastavi podana datoteka.

23 RAZBIRANJE BESED Sledi klic metode parse(), ki dejansko začne razčlenjevati vsebino datoteke. V grobem je logika takšna, da se iz datoteke bere vrstica za vrstico ter se pri tem ta vrstica razčlenjuje na posamezne besede. Te besede se shranjujejo v razred Beseda in se shranjujejo v ArrayList. Razred Beseda je objekt, ki določa osnovne značilnosti posamezne besede. Vsaka beseda je opredeljena s samim nizom, ki predstavlja vrednost besede, razdaljo, ki predstavlja njen odmik od začetka vrstica glede na pripadnost metodi/algoritmu/gnezdnemu stavku ter vrstico, v katero se mora ta beseda izpisati. Vsebuje tudi metode za pridobivanje ter naknadno nastavljanje vrednosti predstavljenih zgoraj.

24 18 Ko se v metodi parse() prebere posamezna vrstica, se v njej vsi tabulatorji zamenjajo s presledki. S tem preprečimo nadaljne težave pri razčlenjevanju datoteke in morebitne napake pri izpisovanju vsebine. Nato se začne razčlenjevanje posamezne prebrane vrstice. V tej vrstici se bere znak za znakom ter se sproti preverja, za kakšen znak gre. Za to uporabljam posebno metodo, ki testira posamezne znake, če ti pripadajo rezerviranim besedam v javi. To pomeni, da ti znaki s sabo nosijo nekatere specifične funkcionalnosti in se jih ne sme obravnavati kot posamezne naključne znake. Metoda, ki to preverja, je sledeča: To so predvsem znaki, ki predstavljajo začetek ali konec izrazov, konec stavka ter logične operatorje. Posebej pa jih moramo obravnavati zaradi njihovega kasnejšega pravilnega izpisovanja ali ustreznega prehoda v novo vrstico. Preden pa se dejansko preverjajo posamezni znaki, se še preveri, ali trenutna vrstica vsebuje rezervirano besedo for. Ta beseda predstavlja poseben strukturiran stavek, kateremu je specifična uporaba podpičij v njegovi glavi. Tu pa nastane težava, ker se mora na teh dvopičjih onemogočiti prehod v novo vrstico.

25 19 Tu (slika zgoraj) se mora prav tako preverjati, ali se trenutno nahajamo znotraj komentarja (!linecomment), ker izpisovanje besed znotraj komentarjev ne sme spreminjati vsebine. Šele na to dejansko sledi preverjanje posameznih znakov: Pred samim dodajanjem posebnih znakov se preverja, če se v spremenljivki string nahaja beseda. Če se je pojavil posebni znak, se ta obravnava kot nova beseda in trenutna vrednost spremenljivke se shrani v seznam prebranih besed. Sama spremenljivka string predstavlja trenutno besedo, kateri se sproti dodajajo znaki in se shrani v zgoraj omenjenem primeru. Šele na to sledi klic posebne metode, ki je namenjena shranjevanju posebnih znakov. Pred samim klicom te metode se preverja, če se slučajno posebni znaki, ki predstavljajo prehajanje v novo vrstico, pojavljajo znotraj niza ali so označeni kot znak. V tem primeru se dodajo kot normalni znaki, v nasprotnem pa kot posebni.

26 20 Posebna metoda pa je potrebna zato, ker so nekateri posebni znaki sestavljeni iz več posebnih znakov. Kot primer vzemimo znak '='. Ta znak predstavlja prirejanje vrednosti neki spremenljivki. Vendar pa lahko iz tega znaka izpeljemo še '==' in '=<', ki pa predstavljata logična operatorja enaka vrednost ter večji ali enak. V tej metodi se torej preverja še znak, ki sledi trenutnemu prebranemu znaku. Če le-tega ni, se beseda shrani kot '=', v nasprotnem primeru kot '==' oziroma '=<'. Celotna metoda izgleda takole:

27 21

28 22 Ta metoda pravilno kliče metode za preverjanje dvojnega posebnega znaka glede na podan znak, če je to seveda potrebno. Dvojne znake dodaja metoda preglej(string s, char c, int i), ki izgleda takole: Ta metoda vrača tip int(celo število), ki predstavlja naslednjo pozicijo. To je pomebmo v primeru, če je naslednji znak del večznakovnega posebnega znaka ter se v tem primeru želimo izogniti dvakratnemu primerjanju istega znaka. Ta metoda je tudi zelo važna v primeru preverjanja znakov, ki predstavljajo komentar. Tu nastane problem, ker enovrstični komentarji večinoma ne vsebujejo podpičja in se vrstica ne prelomi. Zato sem tu vpeljal boolean spremenljivko linecomment, ki nekako označuje, kdaj se nahajamo znotraj tega komentarja. Sam prelom pa je implementiran tako, da ko se v seznam besed vstavi sam komentar, se za njim doda beseda \n, ki ob izpisu naredi novo vrstico. To izvede naslednji stavek:

29 23 Na tej točki se tudi zaključi algoritem za razbijanje besed ter se začne samo izpisovanje besed.

30 IZPISOVANJE Takoj za metodo parse() se kliče nov konstruktor razreda CodePrinter. Ta razred je namenjen izpisovanju prebranih besed v pravilni obliki. Vsebuje javno metodo print(), ki vsebuje glavni algoritem za izpisovanje ter množico drugih metod, katere pa niso javne in se lahko kličejo samo znotraj razreda. Preden se dejansko kliče metoda print(), se preveri, če obstaja 2. argument, ki določa maksimalno dovoljeno dolžino vrstic pri izpisovanju. Če ga ni, je iz zgornje kode razvidno, da se uporabi privzeta vrednost 40. Ta vrednost se poda v konstruktor skupaj s tabelo vseh besed, ki jih je prebrala metoda parse(). Konstruktor izgleda tako: Sama metoda print() prebira posamezne besede iz podane tabele prebranih besed ter jih skupaj dodaja v seznam, tako da sproti sestavlja trenutno vrstico za izpis. Trenutno vrstico predstavlja seznam: Na začetku algoritma se prebere prva beseda ter se določi spremenljivka line, ki jo uporabljamo za primerjavo, katere besede pripadajo isti vrstici. Prav tako se iz te besede prebere dolžina zamika trenutne vrstice, na podlagi katere se nato sestavi odmik, ki je vstavljen na začetek seznama (na naslednji stran).

31 25 Za sestavljanje odmika se uporabi metoda setspace(int distance). Ta skupaj zlepi tolikšno število presledkov, kot je to podano v argumentu. Uporabljam privzete odmike, katere sem določil sam in znašajo 4 znake presledkov. Metoda izgleda takole: Nato sledi zanka, ki prebira besede iz tabele besed toliko časa, dokler imajo vse besede zapisano isto vrednost vrstice, kot je shranjena v spremenljivki line. Če posamezna beseda ustreza temu pogoju, se pokliče posebna metoda, ki mora ponovno preverjati, ali je ta beseda posebni znak, in ki dejansko poskrbi, da se doda v seznam. Ta metoda se imenuje buildline. Metoda buildline:

32 26 Znotraj te metode se najprej preveri, če gre za običajno enoznakovno posebno besedo. To stori metoda isspecialchar(beseda b), ki izgleda takole: Če podana beseda ustreza enoznakovnemu znaku, se ta doda v seznam, ki predstavlja vrstico za izpis. V primeru, da beseda ne ustreza omenjenemu pogoju, se izvede novi pogojni stavek, ki preveri, če je prejšnja beseda posebni znak. To izvede s klicem metode ispreviousspecial(int pos). To se nanaša na znake, kot so oklepaji in znaki, ki predstavljajo začetek komentarja. Smisel te metode pa je, da se pri izpisovanju pravilno postavljajo presledki med posebnimi znaki. Metoda:

33 27 Če pa tudi ta pogoj ne drži, se še preveri, če je beseda slučajno dvojni posebni znak ++ ali --. Tudi to se preveri zaradi pravilne postavitve presledkov pri izpisovanju. To zaporedje se ponavlja, dokler ne preberemo besede, ki se nahaja v novi vrstici. V tem primeru se zanka prekine ter se izvede pogojni stavek, ki preveri, če je vrstica predolga. To naredimo s klicem metode getcurrentlinecharsize(). Metoda se nahaja spodaj: Metoda se sprehodi skozi seznam, ki predstavlja vse besede v trenutni vrstici ter sešteje posamezne znake teh besed. Med štetjem pa se moramo izogniti presledkom, ki predstavljajo zamik glede na gnezdenje, kar storimo s klicem metode areonlyspaces(beseda b). Koda te metode se nahaja spodaj: Pri primerjanju dolžine se uporabi morebitni drugi argument, ki se določi ob klicu samega programa. V primeru, da je vrstica predolga se kliče metoda breakcurrentline(), ki

34 28 razbije vrstico na segmente, ki so manjši od maksimalne dovoljene dolžine ter izpiše vsakega posebej v novo vrstico. Če pa vrstica ni predolga, sledi takojšen izpis vrstice v metodi printcurrentline(). Po izpisu vrstice se celoten postopek ponovi, dokler se ne sprehodimo skozi celotno tabelo znakov, ki so bili prebrani iz datoteke. V primeru, da je vrstica predolga, se v metodi breakcurrentline() naprej preberejo vsi logični operatorji iz trenutne vrstice. Nato se sortirajo po prioriteti, katero računamo sproti za vsako besedo posebej. Začetek breakcurrentline() izgleda takole: Vse logične operatorje preberem v metodi getcharsfromlist(arraylist<beseda> list). V tej metodi se sprehodimo skozi celotno trenutno vrstico ter preverjamo, če je trenutna beseda logični operator. Pri tem moramo paziti, da se operator ne nahaja znotraj niza ali znaka. Zato vpeljemo 2 boolean spremenljivki isstring ter ischar, ki se nastavita na true, če se nahajamo znotraj niza ali znaka. Kot je že bilo omenjeno, je to pomembno, ker se del kode, ki se nahaja znotraj niza, ne sme spreminjati. Druga spremenljivka pa je namenjena temu, da se izognemu obravnavanju znakov znotraj znaka kot posebne znake. Del kode, ki skrbi za to:

35 29 Pogoja, ki preverjata, če je trenutna beseda oklepaj ali zaklepaj, sta del kode, ki skrbi za sprotno izračunavanje prioritete posameznega logičnega operatorja. O tem nekoliko kasneje. Če noben izmed naštetih pogojev ne drži, se izvede pogoj, ki dejansko preverja, če je beseda operator. Ta metoda se imenuje isarithmeticchar(string znak) in je sledeča: Če ta pogoj drži, se beseda doda v seznam logičnih operatorjev. Ta seznam vsebuje elemente razred Znak in je definiran na sledeč način:

36 30 Znak je objekt, ki je namenjen izključno shranjevanju informacij o logičnih operatorjih. Vsebuje naslednje podatke: sam znak (npr. '=='), prioriteta ter pozicija. Prioriteta pomeni pomembnost posameznega operatorja glede na ostale logične operatorje. Pozicija pa predstavlja mesto, na katerem se nahaja posamezni operator znotraj trenutne vrstice. Konstruktor objekta Znak izgleda takole: Objekt seveda vsebuje metode, ki določajo/vračajo vrednosti, ki se nastavljajo v konstruktorjih. Omenil bi tudi, da implementira vmesnik Comparable: To je potrebno zaradi primerjanja vrednosti, ki se uporablja pri sortiranju seznama. Posledica implementacije je, da moramo implementirati metodo compareto(znak znak), ki vrača sledeče vrednosti: 0, če sta vrednosti enaki; negativno, če je podana vrednost večja od trenutne in pozitivno, če je podana vrednost manjša od trenutne. Še sama metoda: Če je trenutna beseda logični operator, se ta doda v seznam operatorjev z naslednjio metodo: Za izračun prioritete operatorja se uporablja metoda getcharpriorityvalue(string znak). Ta metoda vrne vrednost, ki pripada določenemu operatorju, in sicer glede na to, kateri operator močneje veže dva pogoja. Poleg tega se vrnjeni vrednosti prišteje še vrednost priority, ki predstavlja dodano vrednost glede na število oklepajev znotraj katerih je vgnezden operator. Metoda izgleda takole (na naslednji strani):

37 31 Na tej točki se tudi zaključi postopek dodajanja operatorja. Ko so poiskani in dodani vsi operatorji, se njihov seznam sortira po vrsti. Izpisovanje vrstic se začne tako, da naprej preverimo, če je bil najden samo en operator. Tu se vrstica prelomi točno na tistem operatorju, ne glede na posledice, kar pomeni, da mogoče izpis ne bo pravilen v lepotnem smislu, ampak bo ohranil sintaksno pravilnost, kar je najbolj pomembno. Vrstica se prelomi na dva dela, vsakemu posebej se doda odmik ter oba se zstrezno izpišeta. Implementacija: Po tem preverjanju se začne dejanski algoritem za lomljenje vrstice. Le-ta se sprehodi po seznamu operatorjev od začetka do konca. Osnovna logika algoritma je, da lepi skupaj dele vrstice do posamezne pozicije prebranega operatorja in sproti preverja dolžino zlepljene vrstice. Pri tem si tudi zapomnimo pozicijo zadnjega izpisanega znaka. Algoritem se začne tako, da prebere trenutni znak. Nato preverimo, če je razlika med pozicijo trenutno prebranega

38 32 znaka ter pozicijo nazadnje izpisanega znaka večja od največje dovoljene dolžine. Če je, se najprej doda zamik. Za določanje dolžine zamika ponovno uporabimo metodo setspace(int distance), katero smo opisali že zgoraj. Takoj za tem se pokliče metoda printcurrentline(), ki izpiše trenutno vrstico. O tej metodi nekoliko kasneje. Sledi metoda, ki izprazni del vrstice, ki je bil pravkar izpisan, iz seznama. Ta hrani celotno predolgo vrstico. Če se zgornji pogoj ne izpolni, se preverja, če je dolžina še preostalega dela glavne vrstice manjša od najvišje dovoljene dolžine vrstice. V primeru izpolnitve pogoja se ponovno najprej vstavi presledek, nato pa preostanek vrstice izpiše ter njena vsebina izprazni in algoritem se konča. Če pa se tudi ta pogoj ne izpolni, se samo nastavi spremenljivka linelength, ki opredeljuje dolžino trenutno sestavljene vrstice. Algoritem v celoti je sledeč:

39 33 Po algoritmu sledi še en pogojni stavek, ki izpiše preostanek vrstice, če se algoritem sprehodi skozi celoten seznam operatorjev in pri tem ne izpiše celotne vsebine. Pogojni stavek je videti takole: Tukaj se metoda za lomljene vrstice tudi konča. Na koncu pa preostane samo še metoda za izpisovanje vrstic, ki je namenjena izpisovanju tekoče vrstice in tudi tekoče lomljene vrstice. Metoda kot argument sprejema seznam besed, ki predstavljajo trenutno vrstico ter jih izpisuje glede na pomen posamezne besede. Najprej definiramo tri spremenljivke, in sicer isstring, ischar ter wasstring. Spremenljivka isstring se nastavi na vrednost true, kadar se nahajamo znotraj niza. To je pomembno zaradi pravilnega izpisovanja besed znotraj nizov ter njim pripadajočih presledkov in presledkov, ki se nahajajo takoj za in pred nizom. Spremenljivka wasstring označuje, kadar se nahajamo takoj za izpisanim nizom, spremenljivka ischar pa, kadar se nahajamo v znaku. Tudi to je pomembno zaradi pravilnega izpisa presledkov. Takoj za omenjenimi deklaracijami sledi algoritem, ki se sprehodi skozi celoten seznam. Najprej se preverja, če je prebrani znak \n. Ta znak označuje prehod v novo vrstico, pomemben pa je, ker mu moramo pred izpisom določiti odmik. Primer iz kode:

40 34 Nato sledijo pogojni stavki, ki preverjajo, če se nahajamo znotraj niza ali znaka in posledično nastavljajo vrednosti zgoraj opisanih spremenljivk. Ti pogojni stavki izgledajo takole: Spremenljivke se ustrezno nastavljajo glede na pogoje, ki preverjajo, če je znak za začetek niza na začetku besede, na koncu besede in če je beseda sestavljena samo iz tega znaka ter če smo znotraj znaka ter enako za primer znaka. Za tem sledi pogojni stavek, ki preverja, če je trenutna beseda presledek. Ta pogojni stavek je namenjen izpisovanju presledkov samo v določenih primerih. To pomeni, da če je trenutna beseda presledek, ni nujno, da bo ta presledek tudi izpisan. Začetni pogoj preverja, če

41 35 predhodnji stavek ni '!'. To je pomembo, ker se pred '!' ne izpisuje presledek! Sledijo pogoji, ki določajo, kdaj se presledek izpiše. Ti pogoji so: znak pred trenutno ter po trenutni besedi ne sme biti znak za začetek in konec niza; znak pred trenutno besedo mora biti znak za začetek niza ter celotna beseda pred trenutno besedo mora vsebovati več kot en znak; znak za trenutno besedo mora biti znak za konec niza ter celotna beseda za trenutno besedo mora vsebovati več kot en znak; znak spredaj ne sme biti '!'. Z naštetimi pogoji se želimo izogniti nepravilnemu izpisovanju presledkov za in pred znaki, ki označujejo niz ali znak ter stremimo k ohranjanju pravilnega izpisa besed znotraj niza. Izsek iz kode s pogoji: Če pa prebrana beseda ni presledek, se ta normalno izpiše. Vendar pa se pred njenim izpisom nahaja še nekaj pogojnih stavkov. Prvi preverja, če je predhodni znak '+' ter če se ne nahajamo znotraj niza. Ta pogojni stavek je pomemben, ker ima sam znak '+' lahko več pomenov in v primeru da gre za navaden '+' predenj postavi presledek. Naslednji pogojni stavek pa je namenjen pravilnemu izpisovanju znakov v primeru, da se nahajamo znotraj znaka. Še vzorec kode samega izpisa (na naslednji strani):

42 36

43 37 4. ZAKLJUČEK Urejevalnik javanske kode, ki je predstavljen v mojem diplomskem delu, pokriva vse osnovne funkcije, ki naj bi jih vsak urejevalnik kode imel že kot privzete. Pri samem programiranju nisem imel večjih težav, omenil pa bi nekaj manjših, ki sem jih tekom programiranja tudi uspešno rešil. Imel sem probleme s presledki okoli znakov, ki imajo znotraj javanske sintakse več pomenov (to zadeva predvsem '+' in '*') ter tudi s presledki in besedami znotraj nizov ter komentarjev. Tu je bilo treba paziti, da sintaksna pravila za metode znotraj niza ali komentarja niso veljala za rezervirane besede, ker se format teh besedil ne sme spreminjati. Nekaj manjših težav pa se je pojavilo tudi pri programiranju lomljenja predolgih vrstic. Opozoril bi tudi še na nekatere težave, ki se pojavljajo ob uporabi. Tu mislim na občasne presledke. Ti presledki v določenih primerih niso pravilni (uporaba generikov). Prav tako so tudi mogoče težave pri nekaterih lomljenih vrsticah. Od točke, na kateri sem zaključil moje diplomsko delo, pa so možnosti za razširitve in izboljšave praktično neomejene. Pod izboljšave spada optimizacija določenih algoritmov za urejanje, razbiranje in izpisovanje besed. Od razširitev bi omenil barvanje ključnih metod, spremembe vrste pisave za določene tipe spremenljivk ali metod, samodejno označevanje pripadnosti stavkov posameznim metodam, itd., za kar pa bi bilo potrebno implementirati tudi grafični vmesnik. Omenil bi tudi nekatere pametne funkcije, kot so samodejne predloge novih metod posameznega objekta, pametno popravljanje programerjeve logike, predloge za optimalno rabo deklaracij in posameznih metod in pa seveda možnosti celotnega nastavljanja pravil urejanja (presledki, odmiki, itd.).

44 38 5. PRILOGE Priloga A: izvorna koda celotnega programa pred ureditvijo z diplomskim programom Razred Znak: public class Znak implements Comparable<Znak> {private int priority; private int position; private String znak; public Znak(int priority, int position, String znak) { this.priority = priority; this.position = position; this.znak = znak; public int getpriority() { return priority; public int getposition() { return position; public String getznak() { return znak; public int compareto(znak znak) { if(znak.getpriority() == priority) { return 0; else if(znak.getpriority() > priority) { return -1; else { return 1; Razred Main: import java.io.*; public class Main { public static void main(string[] args) { CodeParser codeparser = null; try { File dat = new File(args[0]); codeparser = new CodeParser(dat); codeparser.parse(); catch(exception e) { e.printstacktrace(); CodePrinter codeprinter; if(args.length > 1) { int breakdistance; try { breakdistance = Integer.parseInt(args[1]); catch(numberformatexception e) { throw new NumberFormatException(); codeprinter = new CodePrinter(codeParser.getWordList(), breakdistance); else { codeprinter = new CodePrinter(codeParser.getWordList(), 40); codeprinter.print(); Razred Beseda: public class Beseda { private String beseda; private int distance; private int line; public Beseda() { distance = 0; line = 0; public Beseda(String beseda) { this.beseda = beseda; distance = 0; line = 0; public Beseda(String beseda, int value, int line) { this.beseda = beseda; this.distance = value; this.line = line; public String getbeseda() { return beseda; public void setbeseda(string newbeseda) { beseda = newbeseda; public void setvalue(int newvalue) { distance = newvalue; public void setline(int newline) { line = newline; public int getdistance() { return distance; public int getline() { return line; public String tostring() { return beseda + ' ' + distance + ' ' + line; Razred CodeParser: import java.io.*; import java.util.arraylist; public class CodeParser { private File toparse; private ArrayList<Beseda> wordlist = new ArrayList<Beseda>(); private String str; private int distance = 0; private int line = 0; private String string = ""; private boolean linecomment = false; private int oklepaji = 0; private int pos; private boolean containsfor = false; public CodeParser(File toparse) { this.toparse = toparse; public void parse() { try { BufferedReader read = new BufferedReader(new FileReader(toParse)); pos = 0; boolean isstring = false; boolean ischar = false; while((str = read.readline())!= null) { pos = 0; str = str.replace(' ', ' '); while(pos < str.length()) { if(str.charat(pos) == '"' && str.charat(pos-1)!= '\'' && str.charat(pos+1)!= '\'') { if(isstring) { isstring = false; else { isstring = true; if(str.charat(pos) == '\'') { if(ischar) { ischar = false; else { ischar = true; if(string.equals("for") &&!linecomment && (str.charat(pos) == ' ' str.charat(pos) == '(')) { containsfor = true; wordlist.add(new Beseda(string, distance, line)); string = ""; if(str.charat(pos) == '(') { wordlist.add(new Beseda("(", distance, line)); oklepaji++; else if(isspecialchar(str.charat(pos))) { if(!string.equals("")) { wordlist.add(new Beseda(string, distance, line)); if(str.charat(pos) == '(' && containsfor) { oklepaji++; else if(str.charat(pos) == ')' && containsfor) { oklepaji--; string = ""; if((str.charat(pos) == ';' str.charat(pos) == '{' str.charat(pos) == '') && (pos-1 >= 0) && str.charat(pos-1)=='\'' && (pos+1 <str.length()) && str.charat(pos-1)=='\'') { wordlist.add(new Beseda(str.charAt(pos) + "", distance, line)); else { if((str.charat(pos) == ';' str.charat(pos) == '{' str.charat(pos) == '') && isstring) { wordlist.add(new Beseda(str.charAt(pos) + "", distance, line)); else { addspecialchar(str.charat(pos)); else if(str.charat(pos) == ' ') { if(!string.equals("") &&!string.equals(" ")) { wordlist.add(new Beseda(string, distance, line)); string = ""; else if(str.charat(pos)!= ' ') { string = string + str.charat(pos); pos++; if(linecomment && (pos >= str.length())) { wordlist.add(new Beseda(string, distance, line)); wordlist.add(new Beseda("\n", distance, line)); string = ""; linecomment = false; read.close(); catch(exception e) { e.printstacktrace(); private void addspecialchar(char c) { switch(c) { case ';': wordlist.add(new Beseda(";",distance,line)); if(!containsfor) { line++; break; case ':': wordlist.add(new Beseda(":",distance,line)); break; case '?': wordlist.add(new Beseda("?",distance,line)); break; case '%': wordlist.add(new Beseda("%",distance,line)); break; case '+': pos = preglej("+",c,pos); break; case '/': pos = preglej("/",'=',pos); break; case '*': pos = preglej("*",'=',pos); break; case '-': pos = preglej("- ",c,pos); break; case '&': pos = preglej("&",c,pos); break; case ' ': pos = preglej(" ",c,pos); break; case '=': pos = preglej("=",c,pos); break; case '!': pos = preglej("!",'=',pos); break; case '<': pos = preglej("<",'=',pos); break; case '>': pos = preglej(">",'=',pos); break; case '(': wordlist.add(new Beseda("(",distance,line)); break; case ')': wordlist.add(new Beseda(")",distance,line)); break; case '[': wordlist.add(new Beseda("[",distance,line)); break; case ']': wordlist.add(new Beseda("]",distance,line)); break; case ',': wordlist.add(new Beseda(",",distance,line)); break; case '{': if(!string.equals("")) { wordlist.add(new Beseda(string,distance,line)); containsfor = false; line++; wordlist.add(new Beseda("{", distance, line)); line++; distance++; break; case '': line++; distance--; wordlist.add(new Beseda("",

45 39 distance, line)); line++; break; default: break; private int preglej(string s, char c, int i) { int temp = i; temp++; Beseda best = new Beseda(s,distance,line); if(temp < str.length()) { if(str.charat(temp) == c) { best.setbeseda(best.getbeseda() + c); i = temp; wordlist.add(best); else if(str.charat(temp) == '/') { linecomment = true; best.setbeseda(best.getbeseda() + '/'); i = temp; wordlist.add(best); else wordlist.add(best); else wordlist.add(best); return i++; private boolean isspecialchar(char ch) { if((ch=='<') (ch=='>') (ch=='+') (ch=='-') (ch=='%') (ch=='{') (ch=='') (ch=='!') (ch=='*') (ch=='/') (ch==';') (ch==':') (ch=='=') (ch==',') (ch=='(') (ch==')') (ch=='[') (ch==']') (ch=='?') (ch==' ') (ch=='&')) { return true; return false; public void printwordlist() { Beseda b; int i=0; while(i < wordlist.size()) { b = (Beseda)wordList.get(i); System.out.println("beseda: "+b); i++; if(i > wordlist.size()) break; public Object[] getwordlist() { Object[] b = wordlist.toarray(); return b; Razred CodePrinter: import java.util.*; public class CodePrinter { private Object[] wordtable; private ArrayList<Beseda> currentline; private ArrayList<Znak> prioritycharlist; private int breakdistance; public CodePrinter(Object[] wordtable, int breakdistance) { this.wordtable = wordtable; this.breakdistance = breakdistance; public void print() { currentline = new ArrayList<Beseda>(); for(int i = 0; i<wordtable.length; i++) { Beseda b1 = (Beseda)wordTable[i]; int line = b1.getline(); int distance = b1.getdistance(); String disstr = setspace(distance); currentline.add(new Beseda(disStr)); currentline.add(b1); do { Beseda b2 = null; if(i+1 < wordtable.length) { b2 = (Beseda)wordTable[i+1]; if(b2.getline() == line) { i++; Beseda tmp = (Beseda)wordTable[i-1]; if(tmp.getbeseda().equals("/") tmp.getbeseda().equals("*")) { if(b2.getbeseda().equals("/") b2.getbeseda().equals("*")) { currentline.add(b2); else { buildline(2, b2, tmp); else { buildline(1, b2, tmp); else break; if(b2!= null) { if(b2.getline()!= line) break; while(true); if(getcurrentlinecharsize() > breakdistance) { breakcurrentline(); else { printcurrentline(currentline); currentline.clear(); private int getcurrentlinecharsize() { int size = 0; for(int j = 0; j < currentline.size(); j++) { Beseda b = currentline.get(j); if(!areonlyspaces(b)) { size = size + b.getbeseda().length(); return size; private boolean areonlyspaces(beseda b) { String str = b.getbeseda(); int i = 0; while(i < str.length()) { if(str.charat(i)!= ' ') { return false; i++; return true; private void buildline(int n, Beseda b2, Beseda b1) { if(isspecialchar(b2)) { currentline.add(b2); else { if(currentline.size()-2 < 0) { currentline.add(new Beseda(" ")); currentline.add(b2); else { if(ispreviousspecial(currentline.size()-n)) { currentline.add(b2); else { if(isdoublechar(b2)) { currentline.add(b2); else { currentline.add(new Beseda(" ")); currentline.add(b2); private boolean isspecialchar(beseda b2) { if(b2.getbeseda().equals(";") b2.getbeseda().equals("(") b2.getbeseda().equals(")") b2.getbeseda().equals("[") b2.getbeseda().equals("]") b2.getbeseda().equals(".") b2.getbeseda().equals("*") b2.getbeseda().equals("<") b2.getbeseda().equals(">") b2.getbeseda().equals(",")) { return true; else { return false; private String setspace(int distance) { String str = ""; int i = 0; while(i < distance) { str = str + " "; i++; return str; private void printcurrentline(list<beseda> line) { boolean isstring = false; boolean ischar = false; boolean wasstring = false; for(int i=0;i<line.size();i++) { Beseda b = (Beseda)line.get(i); if(i-1 >= 0 && line.get(i- 1).getBeseda().equals("\n")) { int j = 0; while(j < line.get(i-1).getdistance()) { System.out.print(" "); j++; if(b.getbeseda().length() > 0) { if(b.getbeseda().charat(0) == '"' b.getbeseda().charat(b.getbeseda().length()-1) == '"') { if(!(b.getbeseda().charat(0) == '"' && b.getbeseda().charat(b.getbeseda().length()-1) == '"' && b.getbeseda().length() == 2)) { { if(isstring) { isstring = false; wasstring = true; else { isstring = true; wasstring = false; if(!b.getbeseda().equals("'\\''") &&!(b.getbeseda().charat(0) == '\'') &&!(b.getbeseda().charat(b.getbeseda().length()-1) == '\'')) { if(b.getbeseda().charat(0) == '\'' b.getbeseda().equals("")) { if(ischar) { ischar = false; else { ischar = true; if((b.getbeseda().equals(">") b.getbeseda().equals("<")) &&!isstring &&!ischar) { System.out.print(" "); if(b.getbeseda().equals(" ") &&!ischar) { if(i-1 >= 0 && i+1 < line.size()) { Beseda temp1 = line.get(i-1); Beseda temp2 = line.get(i+1); if(!temp1.getbeseda().equals("!")) { if(temp2.getbeseda().length() > 0 && temp2.getbeseda().charat(0)!= '.' &&!isstring) { if(temp1.getbeseda().length() > 0 && temp1.getbeseda().charat(0)!= '"' && temp2.getbeseda().length() > 0 && temp2.getbeseda().charat(temp2.getbeseda().length()-1)!= '"') { System.out.print(b.getBeseda()); else if(temp1.getbeseda().length() > 0 && temp1.getbeseda().charat(0) == '"' && temp1.getbeseda().length() > 1) { System.out.print(b.getBeseda()); else if(temp2.getbeseda().length() > 0 && temp2.getbeseda().charat(temp2.getbeseda().length()-1) == '"' && temp2.getbeseda().length() > 1) { System.out.print(b.getBeseda()); else if(temp1.getbeseda().equals("!") && isstring) { System.out.print(b.getBeseda()); else { if(i-1>=0 && line.get(i-1).getbeseda().length()>0) { if(line.get(i).getbeseda().equals("+") &&!isstring && wasstring &&!line.get(i-1).getbeseda().equals(" ")) { System.out.print(" "); if(!b.getbeseda().equals(" ")) { System.out.print(b.getBeseda()); else if(b.getbeseda().equals(" ") && line.get(i-1).getbeseda().charat(0) == '\'' && line.get(i+1).getbeseda().charat(0) == '\'') { System.out.print(b.getBeseda()); System.out.println(); private boolean ispreviousspecial(int pos) { Beseda b = currentline.get(pos); if(b.getbeseda().equals("(") b.getbeseda().equals("[") b.getbeseda().equals(".") b.getbeseda().equals("//") currentline.get(pos).getbeseda().equals("\n")) { return true; return false; private boolean isdoublechar(beseda b) { if(b.getbeseda().equals("++") b.getbeseda().equals("--")) { return true; return false; private void breakcurrentline() { getcharsfromlist(currentline); Collections.sort(priorityCharList); int i = 0; int linelength = 0; int printedposition = 0; int spacedistance = 0; if(prioritycharlist.size() == 1) { printcurrentline(currentline.sublist( 0, prioritycharlist.get(0).getposition())); currentline.sublist(0, prioritycharlist.get(0).getposition()).clear(); currentline.add(0, new Beseda(setSpace( currentline.get(0).getdistance() + 1))); printcurrentline(currentline.sublist(0, currentline.size())); currentline.clear(); else { while(i < prioritycharlist.size() &&!currentline.isempty()) { Znak z = prioritycharlist.get(i); if(z.getposition() - printedposition >= breakdistance) { if(linelength > 0) { currentline.add(0, new Beseda(setSpace( currentline.get(0).getdistance() + spacedistance))); int tralala = linelength - printedposition; printcurrentline(currentline.sublist(0, tralala)); currentline.sublist(0, linelength+1 - printedposition).clear(); printedposition = prioritycharlist.get(i-1).getposition(); linelength = 0; spacedistance++; else { linelength = z.getposition(); else { if(currentline.size() <= breakdistance) { currentline.add(0, new Beseda(setSpace( currentline.get(0).getdistance() + spacedistance))); printcurrentline(currentline.sublist(0, currentline.size())); currentline.clear(); else { linelength = z.getposition(); i++; if(!currentline.isempty()) { currentline.add(0, new Beseda(setSpace(currentLine.get(0).getDistance() + spacedistance))); printcurrentline(currentline);

Microsoft Word - M docx

Microsoft Word - M docx Š i f r a k a n d i d a t a : Državni izpitni center *M17178111* SPOMLADANSKI IZPITNI ROK Izpitna pola 1 Četrtek, 1. junij 2017 / 90 minut Dovoljeno gradivo in pripomočki: Kandidat prinese nalivno pero

Prikaži več

Strojna oprema

Strojna oprema Asistenta: Mira Trebar, Miha Moškon UIKTNT 2 Uvod v programiranje Začeti moramo razmišljati algoritmično sestaviti recept = napisati algoritem Algoritem za uporabo poljubnega okenskega programa. UIKTNT

Prikaži več

Diapozitiv 1

Diapozitiv 1 9. Funkcije 1 9. 1. F U N K C I J A m a i n () 9.2. D E F I N I C I J A F U N K C I J E 9.3. S T A V E K r e t u r n 9.4. K L I C F U N K C I J E I N P R E N O S P A R A M E T R O V 9.5. P R E K R I V

Prikaži več

Microsoft PowerPoint - Objekti_gradnja.ppt

Microsoft PowerPoint - Objekti_gradnja.ppt Naredimo razred Katera so stanja/lastnosti Kaj hočemo o objektih te vrste vedeti Kakšne lastnosti imajo Katere so metode Kakšno je znanje objektov Na katere ukaze se odzovejo Način predstavitve lastnosti

Prikaži več

Microsoft Word - M _mod..docx

Microsoft Word - M _mod..docx Državni izpitni center *M17278113* JESENSKI IZPITNI ROK NAVODILA ZA OCENJEVANJE Ponedeljek, 28. avgust 2017 SPLOŠNA MATURA Državni izpitni center Vse pravice pridržane. M172-781-1-3 2 IZPITNA POLA 1 1

Prikaži več

Diapozitiv 1

Diapozitiv 1 Pogojni stavek Pogojni (if) stavek Tip bool Primerjanje Uranič Srečo If stavek Vsi dosedanji programi so se izvajali zaporedoma, ni bilo nobenih vejitev Program razvejimo na osnovi odločitev pogojnega

Prikaži več

Microsoft Word - UP_Lekcija04_2014.docx

Microsoft Word - UP_Lekcija04_2014.docx 4. Zanka while Zanke pri programiranju uporabljamo, kadar moramo stavek ali skupino stavkov izvršiti večkrat zaporedoma. Namesto, da iste (ali podobne) stavke pišemo n-krat, jih napišemo samo enkrat in

Prikaži več

COBISS3/Medknjižnična izposoja

COBISS3/Medknjižnična izposoja 3/Medknjižnična izposoja 2.2 KATALOG Katalog nam omogoča: iskanje gradiva prikaz izbranih bibliografskih zapisov ali pripadajočih podatkov o zalogi iz lokalne baze podatkov v formatu COMARC vpogled v stanje

Prikaži več

GHOSTBUSTERS navodila za učitelje O PROJEKTU S tem projektom se učenci sami naučijo izdelati igro. Ustvariti morajo več ikon (duhcov ali kaj drugega)

GHOSTBUSTERS navodila za učitelje O PROJEKTU S tem projektom se učenci sami naučijo izdelati igro. Ustvariti morajo več ikon (duhcov ali kaj drugega) GHOSTBUSTERS navodila za učitelje O PROJEKTU S tem projektom se učenci sami naučijo izdelati igro. Ustvariti morajo več ikon (duhcov ali kaj drugega) in za vsako napisati svojo kodo. Dve ikoni imata isto

Prikaži več

Turingov stroj in programiranje Barbara Strniša Opis in definicija Definirajmo nekaj oznak: Σ abeceda... končna neprazna množica simbolo

Turingov stroj in programiranje Barbara Strniša Opis in definicija Definirajmo nekaj oznak: Σ abeceda... končna neprazna množica simbolo Turingov stroj in programiranje Barbara Strniša 12. 4. 2010 1 Opis in definicija Definirajmo nekaj oznak: Σ abeceda... končna neprazna množica simbolov (običajno Σ 2) Σ n = {s 1 s 2... s n ; s i Σ, i =

Prikaži več

Microsoft PowerPoint - Java_spremenljivke

Microsoft PowerPoint - Java_spremenljivke Java Spremenljivke, prireditveni stavek Spremenljivke Prostor, kjer hranimo vrednosti Ime Znak, števka, _ Presledkov v imenu ne sme biti! Tip spremenljivke int (cela števila) Vse spremenljivke napovemo

Prikaži več

RAM stroj Nataša Naglič 4. junij RAM RAM - random access machine Bralno pisalni, eno akumulatorski računalnik. Sestavljajo ga bralni in pisalni

RAM stroj Nataša Naglič 4. junij RAM RAM - random access machine Bralno pisalni, eno akumulatorski računalnik. Sestavljajo ga bralni in pisalni RAM stroj Nataša Naglič 4. junij 2009 1 RAM RAM - random access machine Bralno pisalni, eno akumulatorski računalnik. Sestavljajo ga bralni in pisalni trak, pomnilnik ter program. Bralni trak- zaporedje

Prikaži več

Poročilo za 1. del seminarske naloge- igrica Kača Opis igrice Kača (Snake) je klasična igrica, pogosto prednaložena na malce starejših mobilnih telefo

Poročilo za 1. del seminarske naloge- igrica Kača Opis igrice Kača (Snake) je klasična igrica, pogosto prednaložena na malce starejših mobilnih telefo Poročilo za 1. del seminarske naloge- igrica Kača Opis igrice Kača (Snake) je klasična igrica, pogosto prednaložena na malce starejših mobilnih telefonih. Obstaja precej različic, sam pa sem sestavil meni

Prikaži več

RAČUNALNIŠKI PRAKTIKUM d o c. d r. A N D R E J T A R A N E N K O Kdo bo z vami? Predavatelj: dr. Andrej Taranenko

RAČUNALNIŠKI PRAKTIKUM d o c. d r. A N D R E J T A R A N E N K O Kdo bo z vami? Predavatelj: dr. Andrej Taranenko RAČUNALNIŠKI PRAKTIKUM d o c. d r. A N D R E J T A R A N E N K O Kdo bo z vami? Predavatelj: dr. Andrej Taranenko andrej.taranenko@uni-mb.si kabinet: 0/95 govorilne ure: http://matematika-racunalnistvo.fnm.uni-mb.si/

Prikaži več

MATLAB programiranje MATLAB... programski jezik in programersko okolje Zakaj Matlab? tipičen proceduralni jezik enostaven za uporabo hitro učenje prir

MATLAB programiranje MATLAB... programski jezik in programersko okolje Zakaj Matlab? tipičen proceduralni jezik enostaven za uporabo hitro učenje prir MATLAB programiranje MATLAB... programski jezik in programersko okolje Zakaj Matlab? tipičen proceduralni jezik enostaven za uporabo hitro učenje priročno programsko okolje tolmač interpreter (ne prevajalnik)

Prikaži več

Microsoft Word - CNC obdelava kazalo vsebine.doc

Microsoft Word - CNC obdelava kazalo vsebine.doc ŠOLSKI CENTER NOVO MESTO VIŠJA STROKOVNA ŠOLA STROJNIŠTVO DIPLOMSKA NALOGA Novo mesto, april 2008 Ime in priimek študenta ŠOLSKI CENTER NOVO MESTO VIŠJA STROKOVNA ŠOLA STROJNIŠTVO DIPLOMSKA NALOGA Novo

Prikaži več

INFORMATOR BIROKRAT 1/2011

INFORMATOR BIROKRAT 1/2011 ta Veleprodaja Maloprodaja Storitve Računovodstvo Proizvodnja Gostinstvo Turizem Hotelirstvo Ticketing CRM Internetna trgovina Izdelava internetnih strani Grafično oblikovanje NOVOSTI IN NASVETI ZA DELO

Prikaži več

ACAD-BAU-Analiza-prostorov

ACAD-BAU-Analiza-prostorov ANALIZA PROSTOROV Ko obdelujemo večje projekte, je analiza prostorov zelo pomembna v vseh fazah projektiranja. Pri idejnem snovanju moramo npr. za določeno površino trgovske namembnosti zagotoviti primerno

Prikaži več

Zbornica zdravstvene in babiške nege Slovenije Zveza strokovnih društev medicinskih sester, babic in zdravstvenih tehnikov Slovenije Stanje:

Zbornica zdravstvene in babiške nege Slovenije Zveza strokovnih društev medicinskih sester, babic in zdravstvenih tehnikov Slovenije Stanje: Zbornica zdravstvene in babiške nege Slovenije Zveza strokovnih društev medicinskih sester, babic in zdravstvenih tehnikov Slovenije Stanje: 17.07.2013 Ver. 2.9.1.2 Spletni portal članov uporabniška navodila

Prikaži več

Datum in kraj

Datum in kraj Ljubljana, 5. 4. 2017 Katalog znanj in vzorci nalog za izbirni izpit za vpis na magistrski študij Pedagoško računalništvo in informatika 2017/2018 0 KATALOG ZNANJ ZA IZBIRNI IZPIT ZA VPIS NA MAGISTRSKI

Prikaži več

Urejevalna razdalja Avtorji: Nino Cajnkar, Gregor Kikelj Mentorica: Anja Petković 1 Motivacija Tajnica v posadki MARS - a je pridna delavka, ampak se

Urejevalna razdalja Avtorji: Nino Cajnkar, Gregor Kikelj Mentorica: Anja Petković 1 Motivacija Tajnica v posadki MARS - a je pridna delavka, ampak se Urejevalna razdalja Avtorji: Nino Cajnkar, Gregor Kikelj Mentorica: Anja Petković 1 Motivacija Tajnica v posadki MARS - a je pridna delavka, ampak se velikokrat zmoti. Na srečo piše v programu Microsoft

Prikaži več

Microsoft PowerPoint - Java-rekurzija.ppt

Microsoft PowerPoint - Java-rekurzija.ppt Pesmica Živel je mož, imel je psa, lepo ga je učil. Nekoč ukradel mu je kos mesa, zato ga je ubil. Postavil mu je spomenik in nanj napisal: Živel je mož, imel je psa, lepo ga je učil. Nekoč ukradel mu

Prikaži več

Prekinitveni način delovanja PLK Glavni program (OB1; MAIN) se izvaja ciklično Prekinitev začasno ustavi izvajanje glavnega programa in zažene izvajan

Prekinitveni način delovanja PLK Glavni program (OB1; MAIN) se izvaja ciklično Prekinitev začasno ustavi izvajanje glavnega programa in zažene izvajan Prekinitveni način delovanja PLK Glavni program (OB1; MAIN) se izvaja ciklično Prekinitev začasno ustavi izvajanje glavnega programa in zažene izvajanje prekinitvene rutine Dogodek GLAVNI PROGRAM (MAIN-OB1)

Prikaži več

Microsoft PowerPoint - OAPS1- P12.ppt

Microsoft PowerPoint - OAPS1- P12.ppt Univerza v Ljubljani Fakulteta za računalništvo in informatiko Igor Rožanc Osnove algoritmov in podatkovnih struktur I (OAPS I) 2. letnik, VSP Računalništvo in informatika, vse smeri PROSOJNICE ZA 12.

Prikaži več

Orodje za izvoz podatkov

Orodje za izvoz podatkov Pomoč uporabnikom -NA-SI-200, V6.13-00 IZUM, 2018 COBISS, COMARC, COBIB, COLIB, IZUM so zaščitene znamke v lasti javnega zavoda IZUM. KAZALO VSEBINE 1 Uvod... 1 2 Predstavitev orodja za izvoz podatkov...

Prikaži več

Microsoft PowerPoint _12_15-11_predavanje(1_00)-IR-pdf

Microsoft PowerPoint _12_15-11_predavanje(1_00)-IR-pdf uporaba for zanke i iz korak > 0 oblika zanke: for i iz : korak : ik NE i ik DA stavek1 stavek2 stavekn stavek1 stavek2 stavekn end i i + korak I&: P-XI/1/17 uporaba for zanke i iz korak < 0 oblika zanke:

Prikaži več

Diapozitiv 1

Diapozitiv 1 Računalništvo in informatika Program: Mehatronika dr. Hubert Fröhlich, univ. dipl. el. Podatkovne baze 2 Podatkovne baze Podatki osnova za odločanje in izvajanje akcij tiskana oblika elektronska oblika

Prikaži več

1 MMK - Spletne tehnologije Vaja 5: Spletni obrazci Vaja 5 : Spletni obrazci 1. Element form Spletni obrazci so namenjeni zbiranju uporabniških podatk

1 MMK - Spletne tehnologije Vaja 5: Spletni obrazci Vaja 5 : Spletni obrazci 1. Element form Spletni obrazci so namenjeni zbiranju uporabniških podatk 1 MMK - Spletne tehnologije Vaja 5: Spletni obrazci Vaja 5 : Spletni obrazci 1. Element form Spletni obrazci so namenjeni zbiranju uporabniških podatkov in njihov prenos med spletnimi mesti. Obrazec v

Prikaži več

(Microsoft Word - U\350enje telegrafije po Kochovi metodi.doc)

(Microsoft Word - U\350enje telegrafije po Kochovi metodi.doc) MORSE UČENJE PO KOCHOVI METODI Računalniški program za učenje skupaj z nekaterimi dodatnimi datotekami dobite na spletni strani avtorja: http://www.g4fon.net/. Zanimive strani so tudi: - http://www.qsl.net/n1irz/finley.morse.html

Prikaži več

NEVTRIN d.o.o. Podjetje za razvoj elektronike, Podgorje 42a, 1241 Kamnik, Slovenia Telefon: Faks.: in

NEVTRIN d.o.o. Podjetje za razvoj elektronike, Podgorje 42a, 1241 Kamnik, Slovenia Telefon: Faks.: in NEVTRIN d.o.o. Podjetje za razvoj elektronike, Podgorje 42a, 1241 Kamnik, Slovenia Telefon: +386 1 729 6 460 Faks.: +386 1 729 6 466 www.nevtrin.si info@elektrina.si USB RFID READER Navodila za uporabo?

Prikaži več

Navodila Trgovina iCenter

Navodila Trgovina iCenter Napredovanja v plačne razrede javnih uslužbencev 2019 S pomočjo SAOP programa Kadrovska evidenca lahko ob dokupljeni kodi vodimo napredovanja javnih uslužbencev. Za napredovanja v letu 2019 je potrebno

Prikaži več

Navodila za uporabo programske opreme OTRS verzija Administracijska navodila Avtor navodil: Sebastijan Šilec Datum: December 2007 Center odprte

Navodila za uporabo programske opreme OTRS verzija Administracijska navodila Avtor navodil: Sebastijan Šilec Datum: December 2007 Center odprte Navodila za uporabo programske opreme OTRS verzija 2.2.3 Administracijska navodila Avtor navodil: Sebastijan Šilec Datum: December 2007 Center odprte kode Slovenije Spletna stran: http://www.coks.si/ Elektronski

Prikaži več

INFORMATOR BIROKRAT 1/2011

INFORMATOR BIROKRAT 1/2011 ta Veleprodaja Maloprodaja Storitve Računovodstvo Proizvodnja Gostinstvo Turizem Hotelirstvo Ticketing CRM Internetna trgovina Izdelava internetnih strani Grafično oblikovanje NOVOSTI IN NASVETI ZA DELO

Prikaži več

Document ID / Revision : 0519/1.3 ID Issuer System (sistem izdajatelja identifikacijskih oznak) Navodila za registracijo gospodarskih subjektov

Document ID / Revision : 0519/1.3 ID Issuer System (sistem izdajatelja identifikacijskih oznak) Navodila za registracijo gospodarskih subjektov ID Issuer System (sistem izdajatelja identifikacijskih oznak) Navodila za registracijo gospodarskih subjektov Gospodarski subjekti Definicija: V skladu z 2. členom Izvedbene uredbe Komisije (EU) 2018/574

Prikaži več

Navodila za programsko opremo FeriX Namestitev na trdi disk Avtor navodil: Martin Terbuc Datum: December 2007 Center odprte kode Slovenije Spletna str

Navodila za programsko opremo FeriX Namestitev na trdi disk Avtor navodil: Martin Terbuc Datum: December 2007 Center odprte kode Slovenije Spletna str Navodila za programsko opremo FeriX Namestitev na trdi disk Avtor navodil: Martin Terbuc Datum: December 2007 Center odprte kode Slovenije Spletna stran: http://www.coks.si/ Elektronski naslov: podpora@coks.si

Prikaži več

Microsoft Word - avd_vaje_ars1_1.doc

Microsoft Word - avd_vaje_ars1_1.doc ARS I Avditorne vaje Pri nekem programu je potrebno izvršiti N=1620 ukazov. Pogostost in trajanje posameznih vrst ukazov računalnika sta naslednja: Vrsta ukaza Štev. urinih period Pogostost Prenosi podatkov

Prikaži več

Analiza vpliva materiala, maziva in aktuatorja na dinamiko pnevmatičnega ventila

Analiza vpliva materiala, maziva in aktuatorja na dinamiko pnevmatičnega ventila Programsko orodje LabVIEW za kreiranje, zajem in obdelavo signalov (statične in dinamične karakteristike hidravličnih proporcionalnih ventilov) Marko Šimic Telefon: +386 1 4771 727 e-mail: marko.simic@fs.uni-lj.si

Prikaži več

Microsoft Word - M docx

Microsoft Word - M docx Š i f r a k a n d i d a t a : ržavni izpitni center *M15178112* SPOMLNSKI IZPITNI ROK Izpitna pola 2 Četrtek, 4. junij 2015 / 90 minut ovoljeno gradivo in pripomočki: Kandidat prinese nalivno pero ali

Prikaži več

Obračun storitev v vrtcu in šoli

Obračun storitev v vrtcu in šoli Obračun storitev v vrtcu in šoli mag. Jana Trbižan Pripravili: mag. Jana Trbižan, Nuša Peternelj, Mitja Živko Podpora uporabnikom Dnevni red 1. Pogoste napake pri obračunu v vrtcu in šoli 2. Kaj pomeni

Prikaži več

Vprašanja za 2. izpitno enoto poklicne mature Strokovni predmet NPA Vprašanja Visual C# (4. letnik) 1. Uporabniški vmesnik razvojnega okolja Visual C#

Vprašanja za 2. izpitno enoto poklicne mature Strokovni predmet NPA Vprašanja Visual C# (4. letnik) 1. Uporabniški vmesnik razvojnega okolja Visual C# Vprašanja za 2. izpitno enoto poklicne mature Strokovni predmet NPA Vprašanja Visual C# (4. letnik) 1. Uporabniški vmesnik razvojnega okolja Visual C# Pomen posameznih oken uporabniškega vmesnika, urejevalnik

Prikaži več

Kazalo 1 DVOMESTNE RELACIJE Operacije z dvomestnimi relacijami Predstavitev relacij

Kazalo 1 DVOMESTNE RELACIJE Operacije z dvomestnimi relacijami Predstavitev relacij Kazalo 1 DVOMESTNE RELACIJE 1 1.1 Operacije z dvomestnimi relacijami...................... 2 1.2 Predstavitev relacij............................... 3 1.3 Lastnosti relacij na dani množici (R X X)................

Prikaži več

BYOB Žogica v vesolju Besedilo naloge Glavna ideja igre je paziti, da žoga ne pade na tla igralne površine, pri tem pa zbrati čim več točk. Podobno ig

BYOB Žogica v vesolju Besedilo naloge Glavna ideja igre je paziti, da žoga ne pade na tla igralne površine, pri tem pa zbrati čim več točk. Podobno ig BYOB Žogica v vesolju Besedilo naloge Glavna ideja igre je paziti, da žoga ne pade na tla igralne površe, pri tem pa zbrati čim več točk. Podobno igro najdemo tudi v knjigi Scratch (Lajovic, 2011), vendar

Prikaži več

Space Invaders Opis igre: Originalna igra: Space Invaders je arkadna igra, ki so jo ustvarili leta Bila je ena izmed prvih streljaških iger, v k

Space Invaders Opis igre: Originalna igra: Space Invaders je arkadna igra, ki so jo ustvarili leta Bila je ena izmed prvih streljaških iger, v k Space Invaders Opis igre: Originalna igra: Space Invaders je arkadna igra, ki so jo ustvarili leta 1978. Bila je ena izmed prvih streljaških iger, v kateri je igralec vodil laserski top ali vesoljsko ladjo,

Prikaži več

Zadeva: Ponudba

Zadeva: Ponudba Navodila za urejanje Spletne strani CTEK.si 1. Dodajanje novega polnilnika Za dodajanje novega polnilnika nikoli ne prepisujte že objavljenih vsebin, ampak sledite tem navodilom. Ta so zagotovilo, da bodo

Prikaži več

Programska sprememba oddelka šole

Programska sprememba oddelka šole Pomoč uporabnikom Programska sprememba oddelka šole -NA-SI-355, V1.0 IZUM, 2018 COBISS, COMARC, COBIB, COLIB, IZUM so zaščitene znamke v lasti javnega zavoda IZUM. KAZALO VSEBINE 1 Navodila... 1 2 Postopek...

Prikaži več

Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Statistika Pisni izpit 6. julij 2018 Navodila Pazljivo preberite be

Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Statistika Pisni izpit 6. julij 2018 Navodila Pazljivo preberite be Ime in priimek: Vpisna št: FAKULEA ZA MAEMAIKO IN FIZIKO Oddelek za matematiko Statistika Pisni izpit 6 julij 2018 Navodila Pazljivo preberite besedilo naloge, preden se lotite reševanja Za pozitiven rezultat

Prikaži več

Upravljanje sistema COBISS Navodila za uporabo tiskalnika CITIZEN S310II V1.0 VIF-NA-27-SI

Upravljanje sistema COBISS Navodila za uporabo tiskalnika CITIZEN S310II V1.0 VIF-NA-27-SI Navodila za uporabo tiskalnika CITIZEN S310II V1.0 VIF-NA-27-SI IZUM, 2015 COBISS, COMARC, COBIB, COLIB, IZUM so zaščitene znamke v lasti javnega zavoda IZUM. KAZALO VSEBINE 1 Uvod... 1 2 Uporaba tiskalnika...

Prikaži več

Vaja04_Ver02

Vaja04_Ver02 Vaja 04 Varnost: Zaščita aplikacije, omejitev dostopa 1. Uredite prijavo in odjavo uporabnika brez uporabe menuja Special/Security. Nadgradite aplikacijo iz vaje 2. Kreirajte okno tipa Replace Začetno

Prikaži več

Navodila za pripravo oglasov na strani Med.Over.Net v 2.2 Statistično najboljši odziv uporabnikov je na oglase, ki hitro in neposredno prenesejo osnov

Navodila za pripravo oglasov na strani Med.Over.Net v 2.2 Statistično najboljši odziv uporabnikov je na oglase, ki hitro in neposredno prenesejo osnov Navodila za pripravo oglasov na strani Med.Over.Net v 2.2 Statistično najboljši odziv uporabnikov je na oglase, ki hitro in neposredno prenesejo osnovno sporočilo. Izogibajte se daljših besedil in predolgih

Prikaži več

Objektno usmerjeno programiranje

Objektno usmerjeno programiranje Objektno usmerjeno programiranje Izrazoslovje OOP Razred pomeni kategorijo stvari Ime razreda lahko v Javi uporabimo kot tip polja ali lokalne spremenljivke ali kot povratni tip funkcije (metode) Objekt

Prikaži več

Microsoft Word - NAVODILA ZA UPORABO.docx

Microsoft Word - NAVODILA ZA UPORABO.docx NAVODILA ZA UPORABO VODILO CCM-18A/N-E (K02-MODBUS) Hvala ker ste se odločili za nakup našega izdelka. Pred uporabo enote skrbno preberite ta Navodila za uporabo in jih shranite za prihodnjo rabo. Vsebina

Prikaži več

APS1

APS1 Algoritmi in podatkovne strukture 1 Visokošolski strokovni študij Računalništvo in informatika Abstraktni podatkovni tipi Jurij Mihelič, UniLj, FRI Podatkovni tipi Razvil Pascal, Oberon itd. Software is

Prikaži več

PRIPOROČILA ZA OBLIKOVANJE KATALOGOV ZNANJA ZA MODULE V PROGRAMIH VIŠJEGA STROKOVNEGA IZOBRAŽEVANJA

PRIPOROČILA ZA OBLIKOVANJE KATALOGOV ZNANJA ZA MODULE V PROGRAMIH VIŠJEGA STROKOVNEGA IZOBRAŽEVANJA KATALOG ZNANJA 1. IME PREDMETA ZBIRKE PODATKOV I ZBIRKE PODATKOV II 2. SPLOŠNI CILJI Splošni cilji predmeta so: razvijanje sposobnosti za uporabo znanstvenih metod in sredstev, razvijanje odgovornosti

Prikaži več

Učinkovita izvedba algoritma Goldberg-Tarjan Teja Peklaj 26. februar Definicije Definicija 1 Naj bo (G, u, s, t) omrežje, f : E(G) R, za katero v

Učinkovita izvedba algoritma Goldberg-Tarjan Teja Peklaj 26. februar Definicije Definicija 1 Naj bo (G, u, s, t) omrežje, f : E(G) R, za katero v Učinkovita izvedba algoritma Goldberg-Tarjan Teja Peklaj 26. februar 2009 1 Definicije Definicija 1 Naj bo (G, u, s, t) omrežje, f : E(G) R, za katero velja 0 f(e) u(e) za e E(G). Za v V (G) definiramo presežek

Prikaži več

PowerPointova predstavitev

PowerPointova predstavitev Dostopnost elektronskih virov za slepe, slabovidne in druge osebe z motnjami branja Kristina Janc ZSSML - 27. Seja TIFLO sekcije 22.3.2012 Možnost izkoriščanja elektronskih virov za slepe, slabovidne in

Prikaži več

Protokoli v računalniškem komuniciranju TCP, IP, nivojski model, paket informacij.

Protokoli v računalniškem komuniciranju TCP, IP, nivojski model, paket informacij. Protokoli v računalniškem komuniciranju TCP, IP, nivojski model, paket informacij. Protokoli - uvod Protokol je pravilo ali zbirka pravil, ki določajo načine transporta sporočil po računalniškem omrežju

Prikaži več

Elektronska pošta

Elektronska pošta Elektronska pošta ZGODOVINA Prvo sporočilo je bilo poslano leta 1971. Besedilo, ki ga je vsebovalo, je bilo QWERTYUIOP. Pošiljatelj je bil Ray Tomlinson, računalnika med katerima je bilo sporočilo poslano

Prikaži več

Microsoft Word - pravilnik diploma_1.doc

Microsoft Word - pravilnik diploma_1.doc Na podlagi Statuta Univerze v Ljubljani in 42. člena Pravil o organiziranosti in delovanju Visoke šole za zdravstvo je senat Univerze v Ljubljani Visoke šole za zdravstvo na 38. redni seji dne 16. 10.

Prikaži več

Navodila za študente

Navodila za študente Moodle UM Verzija 3.5.1 Navodila za študente RCUM, Služba za IS Maribor, 2019 Kazalo 1 Prijava v Moodle UM... 3 2 Odjava iz Moodla UM... 3 3 Seznam učnih enot... 4 4 Navigacijski trak... 4 5 Bloki... 5

Prikaži več

%

% OSNOVNA ŠOLA NARODNEGA HEROJA RAJKA HRASTNIK PODRUŽNIČNA ŠOLA DOL PRI HRASTNIKU PODRUŽNICA LOG AKTIV TJA IN NI KRITERIJ OCENJEVANJA 2018/2019 0-44 % nzd (1) 45-64 % zd (2) 65-79 % db (3) 80-89 % pdb (4)

Prikaži več

DES

DES Laboratorij za načrtovanje integriranih vezij Univerza v Ljubljani Fakulteta za elektrotehniko Digitalni Elektronski Sistemi Model vezja Računalniški model in realno vezje Model logičnega negatorja Načini

Prikaži več

Delavnica Načrtovanje digitalnih vezij

Delavnica Načrtovanje digitalnih vezij Laboratorij za načrtovanje integriranih vezij Univerza v Ljubljani Fakulteta za elektrotehniko Digitalni Elektronski Sistemi Osnove jezika VHDL Strukturno načrtovanje in testiranje Struktura vezja s komponentami

Prikaži več

TNUV Lab

TNUV Lab TNUV - VAJA 5 doc. dr. Marko Meža 2013/14 Cilji vaje Predvajanje multimedijskih vsebin MediaPlayer http://developer.android.com/training/building-multimedia.html http://developer.android.com/guide/topics/media/mediaplayer.html

Prikaži več

Microsoft Word - vaje2_ora.doc

Microsoft Word - vaje2_ora.doc II UKAZI 1. Napišite zaporedje ukazov, ki vrednost enobajtne spremenljivke STEV1 prepiše v enobajtno spremenljivko STEV2. Nalogo rešite z neposrednim naslavljanjem (zaporedje lahko vsebuje le 2 ukaza v

Prikaži več

BiokemInfo - Pregled funkcij

BiokemInfo - Pregled funkcij Navodila veljajo tako za Microsoft Excel (v slednjem so pripravljeni tudi prikazani primeri) kot tudi za OpenOffice Calc. Med obema programoma obstajajo malenkostne, a ne bistvene razlike. Celice naslavljamo

Prikaži več

Slide 1

Slide 1 Projektno vodenje PREDAVANJE 7 doc. dr. M. Zajc matej.zajc@fe.uni-lj.si Projektno vodenje z orodjem Excel Predstavitev Najbolj razširjeno orodje za delo s preglednicami Dva sklopa funkcij: Obdelava številk

Prikaži več

ARRS-BI-FR-PROTEUS-JR-Prijava/2011 Stran 1 od 7 Oznaka prijave: Javni razpis za sofinanciranje znanstvenoraziskovalnega sodelovanja med Republiko Slov

ARRS-BI-FR-PROTEUS-JR-Prijava/2011 Stran 1 od 7 Oznaka prijave: Javni razpis za sofinanciranje znanstvenoraziskovalnega sodelovanja med Republiko Slov Stran 1 od 7 Oznaka prijave: Javni razpis za sofinanciranje znanstvenoraziskovalnega sodelovanja med Republiko Slovenijo in Francosko republiko Program PROTEUS v letih 2012-2013 (Uradni list RS, št. 10/2011,

Prikaži več

11/21/2017 SQL-ODBC Povezava do podatkovne baze modul pyodbc povezovalni niz (eksplicitno, ali z uporabo DSN) In [6]: import pyodbc from future import

11/21/2017 SQL-ODBC Povezava do podatkovne baze modul pyodbc povezovalni niz (eksplicitno, ali z uporabo DSN) In [6]: import pyodbc from future import Povezava do podatkovne baze modul pyodbc povezovalni niz (eksplicitno, ali z uporabo DSN) In [6]: import pyodbc from future import print_function # Kompatibilnost s Pythonom 2.7 in 3.x # Eksplicitna prijava

Prikaži več

Microsoft Word - CNR-BTU3_Bluetooth_vmesnik

Microsoft Word - CNR-BTU3_Bluetooth_vmesnik CNR-BTU3 Bluetooth vmesnik A. Vsebina pakiranja Bluetooth USB Adapter Bluetooth programska oprema in CD z gonilniki Navodila za uporabo in CD 1. Namestitev Bluetooth programske opreme za Windowse 1. Vstavite

Prikaži več

Microsoft Word - Analiza rezultatov NPZ matematika 2018.docx

Microsoft Word - Analiza rezultatov NPZ matematika 2018.docx Analiza dosežkov pri predmetu matematika za NPZ 28 6. razred NPZ matematika 28 Dosežek šole Povprečno število točk v % Državno povprečje Povprečno število točk v % Odstopanje v % 49,55 52,52 2,97 Povprečni

Prikaži več

PMJ, XPath

PMJ, XPath Imenski prostori, poti in kazalci v XML Iztok Savnik 1 Imenski prostori v XML XML dokument lahko uporablja atribute, elemente in definicije, ki se nahajajo v drugih datotekah Modularna zasnova Ne sme priti

Prikaži več

Teorija kodiranja in kriptografija 2013/ AES

Teorija kodiranja in kriptografija 2013/ AES Teorija kodiranja in kriptografija 23/24 AES Arjana Žitnik Univerza v Ljubljani, Fakulteta za matematiko in fiziko Ljubljana, 8. 3. 24 AES - zgodovina Septembra 997 je NIST objavil natečaj za izbor nove

Prikaži več

Univerza v Ljubljani FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Tržaška c. 25, 1000 Ljubljana Realizacija n-bitnega polnega seštevalnika z uporabo kvan

Univerza v Ljubljani FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Tržaška c. 25, 1000 Ljubljana Realizacija n-bitnega polnega seštevalnika z uporabo kvan Univerza v Ljubljani FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Tržaška c. 25, 1000 Ljubljana Realizacija n-bitnega polnega seštevalnika z uporabo kvantnih celičnih avtomatov SEMINARSKA NALOGA Univerzitetna

Prikaži več

ŠTEVCI PROMETA IN NJIHOVA UPORABA ZA NAMENE STATISTIK ČRT GRAHONJA

ŠTEVCI PROMETA IN NJIHOVA UPORABA ZA NAMENE STATISTIK ČRT GRAHONJA ŠTEVCI PROMETA IN NJIHOVA UPORABA ZA NAMENE STATISTIK ČRT GRAHONJA Navdih Poizvedovanje po BD podatkovnih virih, ki imajo časovno dimenzijo in so dostopni. Večji promet pomeni večje število dobrin in močnejšo

Prikaži več

Da bo komunikacija z gluho osebo hitreje stekla

Da bo komunikacija z gluho osebo hitreje stekla Da bo komunikacija z gluho osebo hitreje stekla Komu je knjižica namenjena? Pričujoča knjižica je namenjena javnim uslužbencem, zdravstvenemu osebju, ki pri svojem delu stopa v stik z gluho osebo, in tudi

Prikaži več

Vaja 2 Virtualizacija fizičnih strežnikov in virtualni PC A. Strežnik Vmware ESX Namestitev strežnika VMware ESX 3.5 na fizični strežnik 2. Nas

Vaja 2 Virtualizacija fizičnih strežnikov in virtualni PC A. Strežnik Vmware ESX Namestitev strežnika VMware ESX 3.5 na fizični strežnik 2. Nas Vaja 2 Virtualizacija fizičnih strežnikov in virtualni PC A. Strežnik Vmware ESX 3.5 1. Namestitev strežnika VMware ESX 3.5 na fizični strežnik 2. Nastavitve strežnika ESX 3. Namestitev in nastavitve VM

Prikaži več

EndNote Basic Online navodila za uporabo Vsebina 1 Kaj je EndNote Online? Dostop in prijava Ustvarjanje računa Uporaba

EndNote Basic Online navodila za uporabo Vsebina 1 Kaj je EndNote Online? Dostop in prijava Ustvarjanje računa Uporaba EndNote Basic Online navodila za uporabo Vsebina 1 Kaj je EndNote Online?... 2 2 Dostop in prijava... 3 2.1 Ustvarjanje računa... 3 3 Uporaba... 5 3.1 Dodajanje referenc... 5 3.2 Navodila za pripravo in

Prikaži več

LABORATORIJSKE VAJE IZ FIZIKE

LABORATORIJSKE VAJE IZ FIZIKE UVOD LABORATORIJSKE VAJE IZ FIZIKE V tem šolskem letu ste se odločili za fiziko kot izbirni predmet. Laboratorijske vaje boste opravljali med poukom od začetka oktobra do konca aprila. Zunanji kandidati

Prikaži več

11. srednješolsko tekmovanje ACM v znanju računalništva Šolsko tekmovanje 22. januarja 2016 NASVETI ZA TEKMOVALCE Naloge na tem šolskem tekmovanju pok

11. srednješolsko tekmovanje ACM v znanju računalništva Šolsko tekmovanje 22. januarja 2016 NASVETI ZA TEKMOVALCE Naloge na tem šolskem tekmovanju pok 11. srednješolsko tekmovanje ACM v znanju računalništva Šolsko tekmovanje 22. januarja 2016 NASVETI ZA TEKMOVALCE Naloge na tem šolskem tekmovanju pokrivajo širok razpon težavnosti, tako da ni nič hudega,

Prikaži več

Ime in priimek

Ime in priimek Polje v osi tokovne zanke Seminar pri predmetu Osnove Elektrotehnike II, VSŠ (Uporaba programskih orodij v elektrotehniki) Ime Priimek, vpisna številka, skupina Ljubljana,.. Kratka navodila: Seminar mora

Prikaži več

Microsoft Word - 021_01_13_Pravilnik_o_zakljucnem delu

Microsoft Word - 021_01_13_Pravilnik_o_zakljucnem delu Na podlagi 64. člena Pravil o organizaciji in delovanju Fakultete za humanistične študije, št. 011-01/13 z dne 27. 6. 2013, je Senat Univerze na Primorskem Fakultete za humanistične študije na svoji 4.

Prikaži več

Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Verjetnost Pisni izpit 5. februar 2018 Navodila Pazljivo preberite

Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Verjetnost Pisni izpit 5. februar 2018 Navodila Pazljivo preberite Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Verjetnost Pisni izpit 5 februar 018 Navodila Pazljivo preberite besedilo naloge, preden se lotite reševanja Nalog je

Prikaži več

ARS1

ARS1 Nepredznačena in predznačena cela števila Dvojiški zapis Nepredznačeno Predznačeno 0000 0 0 0001 1 1 0010 2 2 0011 3 3 Pri odštevanju je stanje C obratno (posebnost ARM)! - če ne prekoračimo 0 => C=1 -

Prikaži več

DNEVNIK

DNEVNIK POROČILO PRAKTIČNEGA USPOSABLJANJA Z DELOM PRI DELODAJALCU DIJAKA / DIJAKINJE. ( IME IN PRIIMEK) Izobraževalni program FRIZER.. Letnik:.. oddelek:. PRI DELODAJALCU. (NASLOV DELODAJALCA) Šolsko leto:..

Prikaži več

EU-TPD 1 PODROBNOSTI KODIRANJA Informacije za trgovino JB za DCTA, (Final 1.2) Obveznost kodiranja izdelka, urejena s predpisom EU-TPD se n

EU-TPD 1 PODROBNOSTI KODIRANJA Informacije za trgovino JB za DCTA, (Final 1.2) Obveznost kodiranja izdelka, urejena s predpisom EU-TPD se n EU-TPD 1 PODROBNOSTI KODIRANJA Informacije za trgovino Obveznost kodiranja izdelka, urejena s predpisom EU-TPD se nanaša na tobačne izdelke na trgu EU in na tobačne izdelke, izdelane v EU, vključno s tistimi

Prikaži več

VAJE RID 1 (4), program PTI, šol

VAJE RID 1 (4), program PTI, šol VAJE INFORMATIKA, program PTI šol. leto 08/09 Za vsako vajo izdelajte kratka navodila oz. katere ukaze ste uporabili za izdelavo dokumenta. Vsak dokument stiskajte in ga vsatvite v delovno mapo. Pred izpitom

Prikaži več

Microsoft Word - A-3-Dezelak-SLO.doc

Microsoft Word - A-3-Dezelak-SLO.doc 20. posvetovanje "KOMUNALNA ENERGETIKA / POWER ENGINEERING", Maribor, 2011 1 ANALIZA OBRATOVANJA HIDROELEKTRARNE S ŠKOLJČNIM DIAGRAMOM Klemen DEŽELAK POVZETEK V prispevku je predstavljena možnost izvedbe

Prikaži več

Microsoft Word - M doc

Microsoft Word - M doc Državni izpitni center *M11145113* INFORMATIKA SPOMLADANSKI IZPITNI ROK NAVODILA ZA OCENJEVANJE Petek, 10. junij 2011 SPLOŠNA MATURA RIC 2011 2 M111-451-1-3 IZPITNA POLA 1 1. b 2. a 3. Pojem se povezuje

Prikaži več

Prodajna knjižica

Prodajna knjižica Fakturiranje Programska rešitev je namenjena fakturiranju blaga in storitev v domači in tujih denarnih enotah. Računi se lahko izdajajo tako za davčne zavezance kot končne potrošnike. Račune/predračune

Prikaži več

Microsoft Word - PRO1_2_Java_2015_12_22

Microsoft Word - PRO1_2_Java_2015_12_22 ŠOLSKI CENTER VELENJE VIŠJA STROKOVNA ŠOLA Višješolski strokovni program: Informatika PROGRAMIRANJE (1. in 2. letnik) JAVAA Gradivo za interno uporabo (delovna verzija) Sestavil: Srečko Zorman Velenje,

Prikaži več

Vprašanja za 2. izpitno enoto poklicne mature Strokovni predmet APJ Vsako izpitno vprašanje je sestavljeno iz posameznih delov, od katerih je vsak del

Vprašanja za 2. izpitno enoto poklicne mature Strokovni predmet APJ Vsako izpitno vprašanje je sestavljeno iz posameznih delov, od katerih je vsak del Vprašanja za 2. izpitno enoto poklicne mature Strokovni predmet APJ Vsako izpitno vprašanje je sestavljeno iz posameznih delov, od katerih je vsak del točkovan z določenim številom točk (odstotkov). Celotno

Prikaži več

Microsoft Word - SI_vaja1.doc

Microsoft Word - SI_vaja1.doc Univerza v Ljubljani, Zdravstvena fakulteta Sanitarno inženirstvo Statistika Inštitut za biostatistiko in medicinsko informatiko Š.l. 2011/2012, 3. letnik (1. stopnja), Vaja 1 Naloge 1. del: Opisna statistika

Prikaži več

TNUV Lab5

TNUV Lab5 TNUV - VAJA 5 doc. dr. Marko Meža Cilji vaje Predvajanje multimedijskih vsebin MediaPlayer http://developer.android.com/training/building-multimedia.html http://developer.android.com/guide/topics/media/mediaplayer.html

Prikaži več

Microsoft Word - N _moderacija.docx

Microsoft Word - N _moderacija.docx 2 N151-401-2-2 SPLOŠNA NAVODILA Prosimo, da moderirano različico navodil za vrednotenje dosledno upoštevate. Če učenec pravilno reši nalogo na svoj način (ki je matematično korekten) in je to razvidno

Prikaži več

UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Anže Pratnemer Analiza algoritmov za iskanje podnizov s pomočjo sistema ALGator DIPLOMS

UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Anže Pratnemer Analiza algoritmov za iskanje podnizov s pomočjo sistema ALGator DIPLOMS UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Anže Pratnemer Analiza algoritmov za iskanje podnizov s pomočjo sistema ALGator DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM PRVE

Prikaži več

Poročanje izdanih računov pri gotovinskem poslovanju

Poročanje izdanih računov pri gotovinskem poslovanju Poročanje izdanih računov pri gotovinskem poslovanju Vrsta dokumenta: Uporabniška navodila Pripravil/i: Za: Naviservice +386 1 548 3999 naviservice@adacta.si Adacta d.o.o. Verovškova 55a, 1000 Ljubljana

Prikaži več

Vzpostavitev več nivojske varnostne infrastrukture S pomočjo Elektro Maribor, McAfee SIEM, CISCO ISE, NGFW Zorna Varga, Sfera IT d.o.o in Klemen Bačak

Vzpostavitev več nivojske varnostne infrastrukture S pomočjo Elektro Maribor, McAfee SIEM, CISCO ISE, NGFW Zorna Varga, Sfera IT d.o.o in Klemen Bačak Vzpostavitev več nivojske varnostne infrastrukture S pomočjo Elektro Maribor, McAfee SIEM, CISCO ISE, NGFW Zorna Varga, Sfera IT d.o.o in Klemen Bačak, Sfera IT d.o.o. 1 Priprava na: Vzpostavitev več nivojske

Prikaži več

PowerPoint Presentation

PowerPoint Presentation Poslovni analitik v agilnem svetu Prenova spletne strani Uvedba podpore za mobilne naprave Ineor d.o.o. O meni poslovni analitik izkušnje s tehnologijo (programiranje, razhroščevanje, inštalacije, administracija,...)

Prikaži več

Zadeva T-317/02 Fédération des industries condimentaires de France (FICF) in drugi proti Komisiji Evropskih skupnosti Skupna trgovinska politika - Sve

Zadeva T-317/02 Fédération des industries condimentaires de France (FICF) in drugi proti Komisiji Evropskih skupnosti Skupna trgovinska politika - Sve Zadeva T-317/02 Fédération des industries condimentaires de France (FICF) in drugi proti Komisiji Evropskih skupnosti Skupna trgovinska politika - Svetovna trgovinska organizacija (STO) - Uredba (ES) št.

Prikaži več