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

Size: px
Start display at page:

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

Transcription

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

2 Imenovanje Dijeli pod istim uvjetima 2.5 Hrvatska

3 Shell programiranje UNIX i LINUX shell programi su učinkovito sredstvo za rješavanje problema s kojima se sreću UNIX i LINUX programeri i administratori sustava. Osnovne principe shell programiranja bi trebali znati i «obični» korisnici za podešavanje vlastitog okruženja kao i za rješavanje nekih jednostavnijih, ponavljajučih poslova. Namjena i svrha Ova skripta je prvenstveno namijenjena polaznicima tečaja Škole otvorenog računarstva "Shell programiranje", ali može poslužiti i kao samostalna literatura. Nakon tečaja polaznici će biti osposobljeni za pisanje shell programa. Iako se tečaj prvenstveno bavi Korn shell-om, znanje stečeno na tečaju je primjenjivo i na ostale shell-ove koje možete sresti na UNIX-u i LINUX-u. Preduvjeti Preduvjeti za ovaj tečaj su poznavanje osnovnih UNIX (LINUX) naredbi kao što su ls, cp, cat, grep, wc,... Također je potrebno predznanje o nekom od tekst editora kojim će se pisati programi. Trajanje Za osnovni tečaj shell programiranja je predviđeno 20 školskih sati. Osim osnovnog tečaja, ovaj tekst donosi i neka poglavlja i vježbe koja bi mogli svrstati u naprednije programiranje. Ako se obuhvate naprednija poglavlja i vježbe, onda je za tečaj potrebno najmanje 25 školskih sati. Napomene Na tečaju "Shell programiranje" obrađuje se sadržaj ove skripte, ali tečaj sačinjava i 40-tak gotovih primjera (koji nisu u ovoj skripti). Primjeri su napisani za Korn shell, ali mogu poslužiti za razumijevanje i drugih shell-ova koje srećemo na UNIX-u (LINUX-u). Vrlo je važno da polaznici tečaja naprave i sve vježbe zadane u ovoj skripti jer se programiranje uči jedino programiranjem. i

4 Sadržaj 1. Shell 1.1 Uvod 1.2 Shell programi 1.3 Izvođenje shell programa 1.4 Temeljni programski elementi 2. Varijable i parametri 2.1 Varijable i vrijednosti 2.2 Varijable okruženja 2.3 Sistemske varijable 2.4 Pozicioni parametri 3. Napredno korištenje varijabli 3.1 Polja varijabli 3.2 Varijable i atributi 4. Izrazi i modifikatori 4.1 Definicija i upotreba izraza 4.2 Povratni kôd i uvjetno izvođenje 4.3 Različite sintakse izraza 4.4 Tipovi izraza 4.5 Obrasci 4.6 Modifikatori 5. Kontrola tijeka i ulaz/izlaz 5.1 If 5.2 While 5.3 For ii

5 5.4 Ulaz/izlaz 5.5 Case i select 6. Aritmetika i aritmetički izrazi 6.1 Cjelobrojna aritmetika 6.2 Aritmetički izrazi 6.3 Decimalna aritmetika 7. Signali i zamke 8. Funkcije 7.1 Signali 7.2 Zamke 8.1 Funkcije 8.2 Biblioteke funkcija 9. Važnije ugrađene naredbe 9.1 Set 9.2 Shift 9.3 Eval 9.4 Exec 10. Koprocesi iii

6

7 1 Shell Shell je program koji se koristi za interpretiranje korisničkih naredbi i za izvođenje shell programa. 1.1 Uvod UNIX i LINUX se sastoje od nekoliko glavnih komponenti: shell uslužni programi - aplikacije biblioteke programa jezgra sustav datoteka Shell Aplikacija Aplikacija Potprogrami Jezgra Sklopovlje Slika 1.1: Glavne komponente UNIX-a Shell (ljuska, ovojnica, školjka) je jedna od glavnih komponenti UNIX-a i LINUXa. Osnovna zadaća shell-a je da interpretira naredbe koje je upisao korisnik. Može se reći da je shell program koji se koristi kao sučelje (interface) između korisnika i računala. Shell je, dakle, program koji nam na zaslon terminala prikazuje odzivni znak (npr. $) i čeka da unesemo neku UNIX naredbu. Najčešća zadaća shell-a je da pozove uslužni program kao npr. ls ili grep i da, nakon što taj uslužni program obavi svoj posao, ponovno pokaže odzivni znak.

8 2 SHELL PROGRAMIRANJE Osim jednostavnog poziva uslužnih programa, shell ima sve što je potrebno da bi se koristio kao programski jezik: varijable, if then else, funkcije itd. pa se za shell slobodno može reći da je to (interpretirani) programski jezik. Shell je samostalni uslužni program (aplikacija) neovisan od ostalih dijelova UNIX-a. Implementiran je kao jedna jedina izvediva naredba (izvediva datoteka dobivena kompiliranjem C programa) i nije ni na koji način ugrađen u UNIX. Radi toga je na UNIX-u moguće imati istovremeno više shell-ova što se u praksi najčešće i događa. Moguće je, također, da korisnici napišu svoj vlastiti, novi shell. Na UNIXu i LINUXu najčešći su: Bourne shell (sh) C shell (csh) Korn shell (ksh) Bourne again shell (bash) Zsh (zsh) Na LINUX-u je najrašireniji Bourne again shell (bash) ili neke njegove inačice. Osim gore navedenih, u praksi se pojavljuju i drugi shell-ovi: tcsh,... U gornjem popisu u zagradi su navedena imena izvedivih programa koje možemo pokrenuti i time aktivirati neki od navedenih shell-ova. Sistem inženjer, u postupku definiranja novih korisnika, određuje uobičajeni (default) shell koji će se pokrenuti nakon prijave za rad. Za svakog korisnika se može definirati drugačiji shell jedino je važno da je navedeni shell instaliran na sistemu. Svaki korisnik može, nakon prijave za rad, eksplicitno pokrenuti neki od instaliranih shell-ova jednostavnim pozivom. Npr. Korn shell možemo pozvati sa ksh: pinus% ksh $ U gornjem primjeru je početno bio aktivan csh koji je imao odzivni znak pinus% nakon čega smo eksplicitno pokrenuli novi shell pozivom naredbe ksh. Nakon aktiviranja ksh-a dobili smo novi odzivni znak $. Početni csh je i dalje aktivan, ali on čeka da se završi onaj shell koji je pokrenut iz njega, a to je u gornjem slučaju ksh. Povratak na početni shell je s naredbom exit: $ exit pinus%

9 SHELL 3 U daljnjim primjerima odzivni znak će se prikazivati kao $ kao da koristite ksh. Treba paziti da kada isprobavate primjere ne treba tipkati $. Odzivni znak nije točan pokazatelj trenutno aktivnog shell-a. Najsigurniji način za utvrđivanje koji od njih je trenutno aktivan je naredba ps f. Npr. $ ps f UID PID PPID C STIME TTY TIME CMD tom :16:53 pts/5 0:00 ksh tom :16:34 pts/5 0:00 -csh $ Najvažniji stupci su PID, PPID i CMD. Ime pokrenutog programa je u stupcu CMD, a jedinstveni proces-identifikator procesa (PID) je u stupcu PID. PPID je "parent PID" identifikator procesa koji je pokrenuo proces u tom retku. U gornjem primjeru je vidljivo da su pokrenuta dva procesa: csh sa PID-m 5596 i ksh sa PID-om Posljednji pokrenut proces, dakle trenutno aktivan shell, je ksh jer je njega pokrenuo csh što je vidljivo iz odnosa PID i PPID (parent PID). Na nekim sistemima default shell ima u ispisu naredbe ps f ispred sebe znak kao oznaku za početni shell. Razlika među pojedinim shell-ovima nisu velike. Razlikuju se sintakse pojedinih ugrađenih shell naredbi što dolazi do izražaja jedino kod programiranja. Tako će se npr. u ksh-u varijable definirati naredbom $ x=abcd a kod csh-a koristimo sintaksu % set x=abcd Korištenje i sintaksa osnovnih UNIX naredbi kao što su ls, cp, grep je isti i neovisan o tome koji od shell-ova koristimo. Na tečaju koristimo ksh i slijedimo sintaksu ksh-a. bash i nešto stariji sh su vrlo slični ksh-u. Slijedeća tablica prikazuje usporedbu različitih svojstava za najvažnije shell-ove. sh csh ksh bash tcsh zsh rc Job control N Y Y Y Y Y N Aliases N Y Y Y Y Y N Shell functions Y(1) N Y Y N Y Y "Sensible" Input/Output redir. Y N Y Y N Y Y Directory stack N Y Y Y Y Y N Command history N Y Y Y Y Y N(7) Command line editing N N Y Y Y Y N(7) Vi Command line editing N N Y Y Y(3) Y N(7) Emacs Command line editing N N Y Y Y Y N(7) Rebindable Command line editing N N N Y Y Y N(7) User name look up N Y Y Y Y Y N(7)

10 4 SHELL PROGRAMIRANJE Login/Logout watching N N N N Y Y N Filename completion N Y(1) Y Y Y Y N(7) Username completion N Y(2) Y Y Y Y N(7) Hostname completion N Y(2) Y Y Y Y N(7) History completion N N N Y Y Y N(7) Fully programmable Completion N N N N Y Y N Mh Mailbox completion N N N N(4) N(6) N(6) N Co Processes N N Y N N Y N Builtin artithmetic evaluation N Y Y Y Y Y N Can follow symbolic links N N Y Y Y Y N Periodic command execution N N N N Y Y N Custom Prompt (easily) N N Y Y Y Y Y Sun Keyboard Hack N N N N N Y N Spelling Correction N N N N Y Y N Process Substitution N N N Y(2) N Y Y Underlying Syntax sh csh sh sh csh sh rc Freely Available N N N(5) Y Y Y Y Checks Mailbox N Y Y Y Y Y N(8) Tty Sanity Checking N N N N Y Y N Can cope with large arg. lists Y N Y Y Y Y Y Has non-interactive startup file N Y Y(9) Y(9) Y Y N Has non-login startup file N Y Y(9) Y Y Y N Can avoid user startup files N Y N Y N Y Y Can specify startup file N N Y Y N N N Notes to the table above 1. This feature was not in the orginal version, but has since become almost standard. 2. This feature is fairly new and so is often not found on many versions of the shell, it is gradually making its way into standard distribution. 3. The Vi emulation of this shell is thought by many to be incomplete. 4. This feature is not standard but unoffical patches exist to perform this. 5. A version called 'pdksh' is freely available, but does not have the full functionality of the AT&T version. 6. This can be done via the shells programmable completion mechanism. 7. A library can be linked into the shell to provide this feature. 8. This can be done via the shells prompt function. 9. Only by specifing a file via the ENV environment variable. Tablica 1.1: Usporedba shell-ova 1.2 Shell programi Shell programi su tekst datoteke s UNIX i shell naredbama. Shell programi su ekvivalent za BAT datoteke na MS-DOSu. Na IBM hostovima se takvi programi nazivaju exec-i ili job-ovi. Osnovna svrha shell programa je da pod jednim imenom spremimo više UNIX naredbi.

11 SHELL 5 Evo jednog jednostavnog primjera. Najprije u datoteku prvi nekim tekst editorom upišemo slijedeće retke date who Nakon toga pokrenemo $ chmod a+x prvi što će toj datoteci dati "executable" dozvolu. Zatim je moguće niz UNIX naredbi upisanih u datoteku prvi pokrenuti kao naredbu prvi: $ prvi Tue Feb 18 14:37:24 MET 2003 root console Feb 12 09:15 root pts/1 Feb 13 14:47 (cheetah.cc.fer.hr) db38517 pts/2 Feb 18 13:14 (gnjilux.srk.fer.hr) tb37062 pts/4 Feb 18 09:21 (gnjilux.srk.fer.hr) damir pts/6 Feb 17 13:31 (damir.cc.fer.hr) bsram pts/8 Feb 18 10:34 (pr.zemris.fer.hr) bsram pts/9 Feb 18 09:14 (pr.zemris.fer.hr) logadm pts/10 Feb 17 12:07 (damir.cc.fer.hr) tk37714 pts/11 Feb 18 14:30 (cm7.cmu.carnet.hr) $ Na zaslon ćemo dobiti izlaze iz standardnih UNIX naredbi date i who. Ako slučajno dobijete poruku "ksh: prvi: not found", to znači da vaše trenutno kazalo nije u popisu kazala varijable PATH. Potrebno je napraviti: export PATH=$PATH: što će omogučiti pronalaženje naredbi u trenutnom kazalu jer PATH završava sa znakom ":". Zašto učimo shell programiranje? Evo najprije pregleda osnovnih razloga za učenje shell programiranja, a zatim slijedi opis: - Skraćujemo repetitivne poslove - Sistemske i korisničke pokretačke procedure. - Brzo i učinkovito napravimo veliki posao. - Izrada programskih prototipova i programa omotača.

12 6 SHELL PROGRAMIRANJE Sve sistemske pokretačke procedure, koje se aktiviraju kod podizanja UNIX-a, pisane su kao shell programi. Radi toga, svaki ozbiljniji sistem inženjer mora poznavati shell programiranje. Ovisno o tipu UNIX-a, pokretačke procedure su smještene u /etc/rc2.d i/ili u nekim drugim kazalima. Korisničke pokretačke procedure se izvode svaki puta kada se korisnik prijavi za rad. Ako je standardni shell csh, onda se koriste.login i.cshrc datoteke, a ako se koristi ksh ili sh pokretačka procedura je definirana sa.profile datotekom. Zato i obični korisnici trebaju znati barem najosnovnije o shell programiranju. Shell programi nam omogućuju obavljanje velikih poslova na UNIXu vrlo učinkovito i brzo. Za takve programe bi nam trebalo puno više vremena da ih isprogramiramo u nekom od programskih jezika kao što su C++ ili Java. Shell programi se mogu koristiti za izradu programskih prototipova. Nakon što smo provjerili program-prototip, možemo ga prepisati u neki drugi programski jezik. U praksi se događa da se takovi programski prototipovi pokažu dovoljno dobrima i da se prepisivanje u druge programske jezike potpuno ispusti. Shell programe koristimo kao programe-omotače oko već postojećih programa. Tako npr. kratki primjer koji slijedi prikazuje kako se postojeći program za sortiranje može iskoristiti za sortiranje po bilo kojoj kodnoj stranici odnosno abecedi. #!/bin/ksh # abeceda1=... abeceda2=... tr $abcededa1 $abeceda2 sort tr $abeceda2 $abeceda1 Bez ulaženja u suvišne detalje u gornjem primjeru se najprije definiraju dvije varijable abeceda1 i abeceda2. Zatim se poziva standardna UNIX naredba tr koja svaki ulazni znak iz abecede1 pretvara na izlazu u ekvivalenti znak iz abecede2. Varijabla abeceda2 mora definirati jednak broj znakova kao i abeceda1 tako da svaki znak iz abecede1 ima svoj par u abeceda2. Također se abeceda2 mora tako napraviti da to bude niz znakova po točnom ASCII redosljedu jer se nakon toga poziva standardni UNIX sort koji sortira po ASCII znakovima. Na kraju je još samo potrebno zamijeniti sortirane retke sa prvobitnim znakovima što radi druga naredba tr sa obrnutim redosljedom varijabli. Čitav ovaj program čita podatke sa standardnog ulaza, a sortirani izlaz šalje na standarnu izlaz. Ako se ovaj shell program nazove hrsort, onda bi njegovo pokretanje moglo izgledati ovako: $ hrsort < ulazna_datoteka > izlazna_datoteka Shell programi imaju i nedostatke: - relativna sporost (u odnosu na npr. C programe) - previsoka razina naredbi

13 SHELL 7 - složena sintaksa: z=$(print scale=3;print ${x[a+1]}*3.14 bc) Shell programe, dakle, upisujemo nekim od editora u tekstualnu datoteku kao što bismo pisali izvorni kod za bilo koji programski jezik. Obzirom da je shell interpreter, nije potrebno (niti je moguće) kompilirati shell programe. 1.3 Izvođenje shell programa Izvođenje shell programa je moguće na 4 načina: 1. ksh prog.ksh, 2.. prog.ksh, 3. chmod a+x prog.ksh; prog.ksh, 4. exec prog.ksh Najčešće se koristi 3. način. Uočite da je prije pokretanja samog programa, u ovom slučaju se datoteka zove prog.ksh, potrebno dodati execute dozvolu na toj datoteci. U prvom načinu se najprije eksplicitno poziva sam shell (u gornjem primjeru je to ksh), kojem se kao argument prosljeđuje ime datoteke s programom. U drugom slučaju se koristi posebna ugrađena naredba. (točka) iza koje slijedi ime datoteke s programom. Za razliku od prvog načina, ovaj način se koristi kada shell program želimo pokrenuti s istim okruženjem (environment) i u istom procesu koji se koristi u trenutno aktivnom shell-u a iz kojeg pokrećemo shell program. U prvom načinu izvođenja se stvara potpuno nov proces i okruženje za izvođenje shell programa. O okruženju shell-a će biti više riječi kasnije.!!! Za csh se umijesto točke koristi naredba source. Četvrti način izvođenja se razlikuje od ostalih po tome što se trenutno aktivni shell potpuno zamijenjuje shell programom završetkom tog novog shell programa izvesti će se logout. Na UNIX-u je obično instalirano više shell-ova pa bi moglo doći do zbrke oko toga koji će shell interpretirati shell program kojeg želimo pokrenuti. Da bi se izbjegla zbrka na početku shell programa moguće je eksplicitno definirati ime interpretra kojeg želimo koristiti: #! /usr/bin/ksh

14 8 SHELL PROGRAMIRANJE Na ovaj način moguće je definirati i programe za neki drugi interpreter kao što je perl ili tcl. U tom slučaju moramo navesti puno ime interpretera za koji želimo da interpretira ostatak datoteke: npr. #! /usr/local/bin/perl ili #! /bin/nawk. 1.4 Temeljni programski elementi Slijedeći primjer će prikazati temeljne programske elemente kao što su parametri, varijable, izrazi i kontrola tijeka. Program će se koristiti kao jednostavno pomagalo za pregled našeg osobnog telefonskog imenika. Podaci o imenima osoba, telefonski brojevi i odjelima zapisani su u tektualnu datoteku s koju smo nazvali "imenik". Ta bi datoteka mogla izgledati ovako: Ana 123 CIP Davor 421 VNE Mario 117 APR Tomislav 133 CIP... Naš shell program koji će pretraživati gornju datoteku će se zvati tel, a njegova upotreba bi mogla izgledati ovako: $ tel ana Ana 123 CIP $ U slučaju da se kod pokretanja ne navede niti jedno ime (parametar), ispisati će se cijela datoteka "imenik". Ako korisnik navede više imena, za svako ime će se napraviti pretraga u imeniku, a ako se navede ime koje ne postoji u imeniku neće se ispisati ništa. Program će raditi i ako navedemo ime odjela. Npr. za $ tel CIP Ana 123 CIP Tomislav 133 CIP $ Ovako bi mogao izgledati program tel.

15 SHELL 9 1 #! /usr/bin/ksh p 2 imenik="imenik" 3 if (( $# == 0 )) 4 then 5 more $imenik 6 fi 7 for ime 8 do 9 grep i $ime $imenik 10 done 11 exit 0 Primjer 1.1: Pretraga telefonskog imenika Retci programa su označeni brojevima koji nisu sastavni dio programa). Program započinje sa eksplicitnom definicijom interpretera (shell-a) koji želimo da se pokrene i da interpretira retke ovog programa. U drugom retku je definirana varijabla imenik čija je vrijednost ime datoteke koja će se pretraživati. Iako to nije nužno za ovaj program, dobro je da se takve stvari definiraju na jednom mjestu, tako da se eventualna promjena imena te datoteke može napraviti samo na jednom mjestu. Retci 3-6 su jedna if naredba za kontrolu tijeka kojom ispitujemo da li je broj navedenih imena, odnosno broj ulaznih parametara, jednak 0. To ispitivanja se obavlja s aritmetičkim izrazom (( $# == 0 )). Ako je broj ulaznih parametara 0, prikazuje se sadržaj datoteke definirane varijablom imenik pomoću naredbe more. U reku 7 započinje for petlja kojom ćemo za svako navedeno ime pokrenuti naredbu grep koja će pretražiti imenik. Koristimo i opciju koja znači da se ignoriraju razlike između velikih i malih slova. Naredba for se izvodi tako da vrijednost varijable navedene iza for ("ime") poprima redom sve vrijednosti parametara navedenih kod poziva programa tel. Obratite pažnju da će se, ako nije naveden ni jedan parametar, preskočiti izvođenje naredbe for. je je popis parametara prazan. Program završava pozivom naredbe exit. Svi programski elementi koji su ovdje samo kratko spomenuti biti će detaljnije obrađeni u slijedećim poglavljima.

16 10 SHELL PROGRAMIRANJE Vježbe: 1.1 Napišite shell program tko koji na zaslon prikazuje prvo izlaz iz naredbe finger, a zatim trenutni datum i sat. 1.2 Napišite shell program aktivni koji na zaslon prikazuje broj trenutno aktivnih korisnika (pomoć: pokušajte spojiti naredbe who i wc).

17 2 Varijable i parametri 2.1 Varijable i vrijednosti Varijable su osnovno programersko pomagalo. Varijable možemo definirati kao vrijednosti koje imaju ime. Treba, dakle, razlikovati ime varijable i vrijednost varijable. Imena varijabli gradimo iz slijedeće abecede: a-z A-Z 0-9.-_. Ime varijable ne smije započinjati sa brojkom (dok npr. ime datoteke možemo započeti brojkom). Primjeri za definiranje varijabli: x=abcde y= abc def U gornjim primjerima smo definirali dvije varijable x i y kao i njihove vrijednosti. Ono što je u gornjim primjerima s desne strane jednakosti su znakovne konstante.!!! S lijeve i desne strane jednakosti ne smije biti razmak. Vrijednost varijable dobivamo sa $x. Moguća je i sintaksa ${x}. Vrijednost varijable se na zaslon može prikazati naredbom print ili echo: print $x abcde Ako želimi definirati varijablu, ali joj još ne želimo pridružiti nikakvu vrijednost, možemo koristiti naredbu typeset: typeset var1 Vrijednost varijable možemo definirati na više načina. U nastavku ovog odjeljka će se prikazati više različitih načina za definiranje vrijednosti varijable. U gornjim primjerima s desne strane jednakosti je bila znakovna konstanta. Umjesto znakovnih konstanti s desne strane jednakosti može se pojaviti i nešto drugo: x=$y x=${y}abc U gornjem promjeru smo u prvom retku varijabli x pridjelili vrijednost varijable y, a zatim, u drugom retku smo varijabli x pridjelili vrijednost varijable y i niz abc koji će se priljepiti na kraj vrijednosti varijable y. Uočite da sa x=y

18 12 SHELL PROGRAMIRANJE varijabli x pridjeljujemo kao vrijednost znak y, a ne vrijednost varijable y. Vrijednost varijable var, dakle, dobivamo sa $var ili ${var}. Supstitucija naredbi Ako želimo izlaz iz neke UNIX naredbe spremiti kao vrijednost varijable, koristimo sintaksu: x=`date` ili za ksh: x=$(date) Ovakvo izvođenje UNIX naredbi koristimo kada je potrebno izlaz iz naredbe spremiti u varijablu ili poslati na zaslon. Taj mehanizam se zove supstitucija naredbi (eng. command supstitution). To je vrlo moćno oruđe koje se može fleksibilno koristiti. Za njega postoje dvije sintakse koje su i prikazane u gornjim primjerima. Sintaksa s obrnutim jednostrukim navodnikom "`" se koristi u Bourne shell-u. Ksh prepoznaje tu staru sintaksu ali podržava i novu $( ) sintaksu. Nova sintaksa dozvoljava i ugnježđivanje: $( $( ) ). Read naredba Kod definiranja vrijednosti varijable moguće je neki proizvoljni redak utipkan sa tastature spremiti kao vrijednost varijable: read x Kada shell program naiđe na naredbu read izvođenje će se zaustaviti i program će čekati dok ne utipkamo nešto na tastaturi što će se spremiti u varijablu x. Moguće je koristiti read naredbu bez varijable: read U tom slučaju se vrijednost utipkana na tastaturi sprema u uobičajenu varijablu REPLY. Sadržaj datoteke Slijedeći načina za definiranje vrijednosti varijable koristimo kada želimo sadržaj čitave datoteke spremiti u varijablu:

19 VARIJABLE I PARAMETRI 13 x=$(< file) Tipovi Gotovo svi programski jezici razlikuju različite tipove varijabli. Ksh razlikuje dva tipa varijabli: znakovne (string) varijable koje smo do sada koristili i cjelobrojne varijable. Npr. slijedeća naredba definira varijablu var1 kao cjelobrojnu varijablu i pridjeljuje joj vrijednost 5. integer var1=5 Nakon što smo neku varijablu definirali kao integer, u nju više ne možemo spremati običan tekst. U varijablu možemo spremiti i vrijednost nekog aritmetičkog izraza. Aritmetika sa cjelobrojnim varijablama se koristi unutar dvostrukih zagrada. Npr. izraz: x=$(( var + 1 )) će varijabli x pridružiti vrijednost varijable var uvećane za 1. Detaljno o aritmetici će biti riječi kasnije. Za prikaz varijabli i nekog teksta koristimo naredbe: print ili echo:!!! Vrijednost print 1234 $x 1234 abcde varijable dobivamo sa $var (a ne samo var). Brisanje varijabli Brisanje varijable se može napraviti naredbom unset: unset x Nakon gornje naredbe varijabla x više neće biti definirana. Još jednom se napominje da se ksh ne buni kada pokušamo prikazati nedefiniranu varijablu shell jednostavno kao vrijednost te varijable daje prazan niz. Slijedeći primjer prikazuje korištenje varijabli. Redak ili dio retka koji započinje sa # je komentarski dio.

20 14 SHELL PROGRAMIRANJE #! /usr/bin/ksh # var.ksh # Ilustrira: Koristenje varijabli. # Pridruzivanje vrijednosti: var1=abcd var1="unix \232kola" # oktalni zapis znakova var2=$var1 # vrijednost druge varijable var2="$var1" # vrijednost druge varijable var2=${var1} # druga sintaksa var3=abc${var2}xyz # varijabla i dodatni tekst # Dohvacanje i ispis varijabli: print $var1 ${var3} print "var1="$var1 print "var3="${var1}" dodatni tekst" echo $var1 $var3 # Cesta greska - ispusten '$': print var1 # Varijabli var2 pridruzi izlaz iz naredbe 'date': var2=$(date) var2=`date` print $var2 # Interakcija s korisnikom: print -n "Unesite jedan redak: " read var3 print "U var3 varijablu je spremljeno: $var3" # Sadrzaj datoteke spremamo u varijablu: var3=$(< /etc/group) # metaznak \ ili ' iskljucuje ime kao varijablu: print \$var1 print '$var1' Primjer 2.1: Upotreba varijabli

21 VARIJABLE I PARAMETRI 15 Vježbe: 2.1 Modificirajte program aktivni iz prethodnog poglavlja tako da na zaslon dobijete: Trenutno je prijavljeno X korisnika. gdje će X biti broj trenutno prijavljenih UNIX korisnika. 2.2 Varijable okruženja Neke od varijable, bilo da ih je napravio UNIX bilo da smo ih napravili sami, mogu se definirati kao varijable okruženja (eng. environment variables). Varijable okruženja se automatski prenose u svaki pokrenuti program, dok se "obične" varijable ne prenose u pokrenute programe. Prikaz environment varijabli i njihovih vrijednosti možemo dobiti naredbama export ili env. Npr. u mom okruženju dobivam: $ env _=/usr/bin/env MANPATH=/usr/share/man:/opt/local/man:/usr/openwin/man SSH_TTY=/dev/pts/4 PATH=/home/damir/bin:/home/damir/j2sdk1.4.1_01/bin:/usr/bin:/usr/ sbin:/opt/local/bin:/usr/local/sbin:/usr/local/bin:/usr/openwin/b in:/usr/ccs/bin: CLASSPATH=.:/home/damir/j2sdk1.4.1_01/jre/lib/rt.jar LOGNAME=damir MAIL=/var/mail//damir USER=damir SHELL=/usr/bin/ksh HOME=/home/damir SSH_CLIENT= LD_LIBRARY_PATH=/usr/local/lib TERM=vt100 PWD=/home/damir TZ=MET... Kod definiranja varijabli možemo ih odmah definirati kao varijable okruženja: export z= abc Važi i sintaksa: typeset x z=abc

22 16 SHELL PROGRAMIRANJE Već definiranu varijablu z možemo naknadno proglasiti varijablom okruženja sa: export z ili typeset x z. Naredba typeset postavlja, u stvari, poseban atribut za neku varijablu. Osim export atributa mogući su i neki drugi atributi o čemu će biti riječ kasnije. Za ilustraciju varijabli okruženja pogledajmo jedan kratak primjer koji pojašnjava "prenošenje varijabli u drugi program" kako je spomenuto u definiciji varijabli okruženja. $ x=abcd varijabla je definirana u početnom shell-u $ ksh pokrenuli smo novi shell $ print $x $ varijabla x nije poznata u novom shell-u Sada pogledajmo isti primjer za exportiranu varijablu: $ export x=abcd $ ksh pokrenuli smo novi shell $ print $x abcd $ varijabla x postaje poznata u novom shell-u Ista logika važi i za ostale programe. Bilo koji program da pokrenemo iz aktivnog shell-a, on će dobiti na raspolaganje sve varijable okruženja. Ovo je naročito važno za shell programe. Vježbe: 2.2 Napišite kratki shell program prog1 koji će na zaslon prikazivati vrijednosti nekoliko varijabli. Prije nego što pokrenete taj program definirajte nekoliko varijabli u trenutnom shell-u i to tako da su neke definirane kao varijable okruženja. 2.3 Sistemske varijable Osim varijabli koje sami definiramo, UNIX sam definira neke svoje varijable koje možemo gledati i po potrebi mijenjati. Te varijable koje je UNIX sam definirao nazivamo sistemske varijable.

23 VARIJABLE I PARAMETRI 17 Popis varijabli i njihove vrijednosti, bez obzira da li smo ih definirali mi ili UNIX, možemo dobiti s naredbom set. Na različitim UNIX-ima različiti korisnici će dobiti drugačije varijable i vrijednosti. Popis varijabli ovisi i o shell-u kojeg koristite. Djelomičan popis varijabli na mom UNIX-u: $ set CLASSPATH=.:/home/damir/j2sdk1.4.1_01/jre/lib/rt.jar DEF_UMASK='' ERRNO=2 FCEDIT=/bin/ed HOME=/home/damir IFS=' ' LD_LIBRARY_PATH=/usr/local/lib LOGNAME=damir MAIL=/var/mail//damir MAILCHECK=600 MANPATH=/usr/share/man:/opt/local/man:/usr/openwin/man OPTIND=1 PATH=/home/damir/bin:/home/damir/j2sdk1.4.1_01/bin:/usr/bin:/usr/ sbin:/opt/local/bin:/usr/local/sbin:/usr/local/bin:/usr/openwin/b in:/usr/ccs/bin: PPID=14637 PS1='$ ' PS2='> ' PS3='#? ' PS4='+ ' PWD=/home/damir RANDOM=22556 TERM=vt100 U gornjm ispisu smo dobili puno varijabli. Neke od tih varijabli nikada ne koristimo, a neke sistemske varijable su naročito važne: TERM - vrijednost te varijable određuje koji tip terminala imate. Ako je ta varijabla krivo postavljena, neki programi uopće neće moći normalno raditit. Npr. vi. Isprobajte. PATH vrijednost te varijable daje popis kazala koja će se pretraživati da bi se našle UNIX naredbe. Ako je npr. vrijednost te varijable /usr/bin:/etc/:. onda će se redom pretraživati kazala: /usr/bin, pa /etc, pa. (trenutno kazalo). Isprobajte poremetiti PATH varijablu i pozvati neke standardne UNIX naredbe. Interesantna je i varijabla PS1. Ta varijabla definira odzivni znak shell-a. Isprobajte. Koja je razlika između PS1='$PWD> ' i PS1= $PWD>? Isprobajte

24 18 SHELL PROGRAMIRANJE obadvije varijante i nakon toga napravite promjenu kazala npr. cd /tmp. Objasnite razliku. Osim gore navedenih sistemskih varijabli, koje vidimo sa set, možemo koristiti još neke sistemske varijable. Npr. trenutni proces identifikator (PID) shell programa, ili trenutno aktivnog shell-a, se sprema u sistemsku varijablu pod imenom $. Dakle, vrijednost PID-a dobivamo sa $$. Ova sistemska varijabl se često koristi kada želimo imati neki jedinstveni identifikator, a to je automatski osigurano jer je svaki PID jedinstven. Vježbe: 2.3 Napišite shell program priv koji će otvoriti privremenu datoteku jedinstvenog imena. Datoteku treba napraviti u kazalu /tmp. Smisao ovoga je da više korisnika istovremeno može pokrenuti program priv, ali želimo postići da svaki od njih ima svoju vlastitu privremenu datoteku. Pomoć: koristite UNIX naredbu touch, a PID je jedinstven za svako pokretanje programa priv. 2.4 Napišite program conv1 za konverziju kodnih stranica koji će čitati sa stdin i slati izlaz na stdout. Ulazne znakove u CRO7 kodu: ČčĆćĐ𩹮ž zapisane kao ^~]}\ [{@` odnosno oktalno: \136\176\135\175\134 \174\133\173 \100\140 na izlazu treba pretvoriti u CP 1250: \310\350\306\346\320\360 \212\232\216\236. Koristite varijable i UNIX naredbu tr. Naredba tr raspoznaje posebne znakove kao što je to gore zapisano: umjesto znaka ^ treba upisati oktalni ekvivalent \136 itd. 2.4 Pozicioni parametri Svaki UNIX program možemo pozvati s dodatnim parametrima (argumentima) koji mogu modificirati osnovno izvođenje naredbe. Npr. opcija l je dodatni argument koji mijenja izlaz iz naredbe ls. Kao i sve UNIX naredbe, tako i shell programi mogu dohvaćati parametre koji se koriste kod poziva samog programa. Uobičajeno je da se ti parametri nazivaju pozicioni parametri jer je važna i njihov redoslijed. Unutar shell programa pozicione parametre dohvaćamo kao $1,$2,... Npr. ako neki shell program prog1 pozovemo s tri parametra: prog1 abcd klm xyz onda će unutar tog programa prvi parametar (abcd) biti dohvatljiv kao $1, drugi parametar (klm) kao $2, a treći parametar (xyz) biti dohvatljiv kao $3.

25 VARIJABLE I PARAMETRI 19 # Pozicioni parametri za shell program print "Prvi parametar: " $1 print "Drugi parametar: " $2 print "Treci parametar: " $3 Primjer 2.2: Parametri za shell program Osim pozicionih parametara, UNIX omogućuje korištenje i nekih drugih varijabli koje su povezane s njima: $0 ime shell programa $# broj pozicionih parametara $@ svi pozicioni parametri (kao $1 $2 $3 ) $* svi pozicioni parametri (kao $1 $2 $3 ) Vježbe: 2.5 Napišite shell program telv1 koji će pregledavati telefonski imenik spremljen u datoteku imenik Program treba učitati jedan parametar i za njega ispisati odgovarajući redak iz imenik. Imenik je u formatu: ime prezime telefonski_broj. Npr. korištenje programa bi moglo izgledati ovako: $ telv1 ana ana 123 $

26 3 Napredno korištenje varijabli 3.1 Polja varijabli Ksh dozvoljava definiranje polja varijabli: set A p1 aaaa bbbb cccc ddddd U gornjem primjeru je definirano polje pod imenom p1 i istovremeno je pridruženo nekoliko vrijednosti za prve elemenate (članove). Elementi polja su indeksirani od indeksa 0 (nula), a najveći mogući indeks je 4095, što može varirati od UNIX-a do UNIX-a. Ispis prvog elementa polja koji ima indeks 0 dobivamo sa slijedećom naredbom: print ${p1[0]} aaaa Indeks se može definirati i nekim brojevnim izrazom. Npr. print ${p1[x+1]} Može se definirati samo jedan član polja iako polje ranije nije definirano: a[3]= abc Ovime je a je definirano kao polje sa samo jednim (četvrtim) definiranim članom. Ostali članovi polja su nedefinirani. Moguće je definirati polje i "rezervirati" određeni broj članova: typeset a[200] Ispis svih članova polja, npr. polja p1 dobivamo sa: print ${p1[*]} Broj definiranih članova polja dobivamo sa izrazom: ${#p1[*]} Slijedeći primjer definira dva polja: polje za boje karata i polje za karte. Zatim se na zaslon ispisuje jedna slučajno "izvučena" karta. Za generiranje slučajnih brojeva koristi se sistemska varijabla RANDOM koja kod svakog očitanja ima drugačiju vrijednost. Za sužavanje slučajnog broja koristimo modulo operaciju % koja kao rezultat mora vratiti ostatak dijeljenja broj između 0 i maksimalnog broja.

27 NAPREDNO KORIŠTENJE VARIJABLI 21 #! /usr/bin/ksh set A boja pik karo herc tref set A karta decko dama kralj as integer x1=$((random % 4)) integer x2=$((random % 13)) print ${boja[x1]} ${karta[x2]} Primjer 3.1: Polja varijabli Vježbe: 3.1 Napišite program koji definira cjelobrojno polje arr1 s 2-3 vrijednosti. Na zaslon ispišite zbroj prvog i trećeg člana. 3.2 Varijable i atributi Varijabla može biti definirana kao "read-only" varijabla: typeset r var1=abcd To su varijable kojima vrijednost možemo pridjeliti samo jednom. Gotovo svi programski jezici imaju takav tip varijabli u C++ one se nazivaju const, u Javi final. To su, u stvari, konstante s imenom. Ako takvoj varijabli ponovo pokušamo pridjeliti vrijednost, dobivamo poruku o grešci: $ typeset -r var1=abcd $ var1=xyz ksh: var1: is read only $ echo $var1 abcd $ Naredba typeset se koristi za postavljanje raznih atributa na varijablama. Npr. sa

28 22 SHEL PROGRAMIRANJE typeset i8 var1=11 smo definirali cjelobrojnu varijablu var1, ali smo dodali i atribut koji označava da će se u ispisu vrijednosti te varijable na zaslonu dobivati oktalna vrijednost varijable: print $var1 8#13 Općenito, sve brojevne konstante u ksh-u možemo pisati u brojevnim bazama različitim od 10. Ispred broja treba prvo napisati bazu pa znak # pa broj. Npr. za binarne brojeve: 2#1010 ili za heksadecimalne: 16#A0. Evo još nekih važnijih atributa koje upisujemo iza typeset naredbe: Atribut ib u l LN RN ZN x Značenje integer i brojevna baza B pretvori u uppercase - velika slova pretvori u lowercase - mala slova lijevo pomaknuto sa max. N mjesta desno pomaknuto sa max. N mjesta popuni s vodećim nulama, max. N mjesta exportiraj varijablu Tablica 3.1: Atributi varijabli Još neki primjeri: typeset Z5 a=123 typeset R10 b=ivan typeset R10 c=ivankovic typeset R10 d=ana typeset R10 e=anic print $a $b $c print $a $d $e ivan ivankovic ana anic U gornjim primjeru kod ispisivanja vrijednosti varijable je jako važno da se koriste navodnici, bez navodnika neće dobro raditi.

29 NAPREDNO KORIŠTENJE VARIJABLI 23 Atributi L i R sa maksimalnim brojem znakova se koriste za ispise izvještaja kada želimo ispravno formirane stupce. Ako broj znakova u vrijednosti varijable mani od maksimalnog broja znakova, onda se preostali znakovi popunjavaju s prazninama.

30 4 Izrazi, obrasci i modifikatori 4.1 Definicija i upotreba izraza Izrazi (eng. expressions) su programski elementi kojima definiramo logičke ili brojevne vrijednosti. Vrijednost logičkih izraza može biti true ili false, a brojevne vrijednosti mogu poprimiti cjelobrojne veličine. Logičke izraze najčešće srećemo nakon naredbi kontrole tijeka kao što su npr. if ili while. Npr. iza if imamo logički izraz: if logički_izraz then... done Izvođenje bilo koje UNIX naredbe ili nekog shell programa također se smatra logičkim izrazom. U slučaju da se neka naredba promatra kao izraz, vrijednost izraza je definiran povratnim kodom te naredbe. Brojevne izraze najčešće susrećemo u indeksima polja ili kod aritmetike i aritmetičkih izraza o čemu će biti riječi kasnije. 4.2 Povratni kôd i uvjetno izvođenje Povratni kod naredbe je broj koji UNIX postavlja nakon svakog izvođenja neke naredbe. Povratni kod zadnje naredbe automatski se sprema u sistemsku varijablu $?. Pogledajte sa man npr. povratne kodove za naredbu grep. U man stranicama povratni kod se objašnjava u odjelku "Exit status". U slučaju da je grep našao traženi obrazac, povratni kod se postavlja u 0. Ako grep nije našao obrazac, povratni kod je 1, a ako je grep detektirao neku grešku onda se povratni kod postavlja u 2. Greška kod grep-a može nastati kada npr. tražimo neki obrazac u datoteci, a datoteka ne postoji. Uobičajeno je u UNIX-u i LINUX-u da ispravno izvođenje naredbi, pa tako i shell programa, kao povratni kôd daje vrijednost 0. UNIX programerima se preporučuje da se drže tog pravila jer se time omogućuje jednostavnije i uniformno povezivanje nezavisno napisanih programa. Svaka UNIX naredba u man stranicama specificira koji su mogući povratni kodovi i što oni znače. Povratni kôd naredbi omogućuje novi način izvođenja - uvjetno izvođenje: comm1 && comm2

31 IZRAZI, OBRASCI I MODIFIKATORI 25 Koristimo operator && koji se stavlja između dvije naredbe. Gornji izraz definira slijedeći način izvođenja: najprije se izvede UNIX naredba comm1 ako ta naredba kao povratni kod vrati 0 onda se izvodi i naredba comm2 ako comm1 ne vrati 0 onda se naredba comm2 ne izvodi. Ovakvo uvjetno izvođenje je u biti skraćeni zapis za if naredbu: if comm1 then comm2 fi Ako nam je u shell progamu potrebna obrnuta logika, možemo koristiti operator: comm1 comm2 Izvede se comm1. Ako je comm1 vratio povratni kod različit od nule, izvodi se i naredba comm2. Evo nekoliko konkretnih primjera: rm f f1 && print "f1 removed" who grep joe print "joe loged off" Iz shell programa možemo izaći s narebom exit. Ako želimo iz shell programa postaviti povratni kod, možemo koristiti exit N gdje će N biti željeni povratni kod. Npr. exit 0 će završiti izvođenje shell programa i postaviti povratni kod u 0. Na ovaj način slijedimo konvenciju koja vrijedi za sve UNIX naredbe. 4.3 Različite sintakse izraza Izrazi se mogu zapisati različitim sintaksama. U slijedećem odjeljku će se prikazati 5 različitih sintaksi za logičke izraze: 1) naredba npr. grep $1 imenik (exit status 0 = true) 2) test npr. test $# -eq 0 3) unutar [ npr. [ $var1 = abc ] 4) unutar [[ npr. [[ $var1 = *.c ]] 5) unutar (( npr. (( x < 10 ))

32 26 SHELL PROGRAMIRANJE 1) UNIX naredba (navedena pod točkom 1) nije izraz u smislu ranije definicije, ali logika je slijedeća: izvede se UNIX naredba i pogleda njezin povratni kôd. Ako je on 0 onda se "izraz" smatra istinitim. 2) Standardna naredba test koristi se za ispitivanje raznih uvjeta. Sintaksa te naredbe je prilagođena upravo ispitivanju uvjeta. U gornjem primjeru "test $# -eq 0" će vratiti 0 (dakle izraz je isitinit) ako je broj pozicionih parametara ($#) jednak ( eq) 0. U praksi se ova naredba susreće jedino u starim skriptama koje moraju biti kompatibilne s Bourne shell-om. Korisnici ksh-a koriste ugrađeno testiranje koje dobivamo uglatim ili okruglim zagradama (i zato se ovdje naredba test neće detalno obrađivati).. Korištenjem ugrađenog testiranja ujedno izbjegavamo pokretanje novog procesa kojeg ne možemo izbjeći u slučaju naredbe test. 3) Jednostruke uglate zagrade se koriste i u Bourne shell-u i u Korn shell-u. Najčešće se koriste za ispitivanje da li je varijabla jednaka nekoj vrijednosti ili slično. U gornjem primjeru ispitujema da li je vrijednost varijable var1 jednaka "abc". Za detaljniji pregled mogućeg sadržaj unutar zagrada pogledajte slijedeći odjeljak 4) Unutar dvostrukih uglatih zagrada [[... ]] možemo ispitivati da li je vrijednost neke varijable jednaka nekom obrascu, što nije moguće s jednostrukim uglatim zagradama. U gornjem primjeru [[ $var1 = *.c ]] je izraz kojim ispitujemo da li je vrijednost varijable var1 završava na ".c". Ukratko, dvostruke uglare zagrade daju više mogućnosti nego jednostruke ali se mogu koristiti jedino unutar ksh-a. Za detaljniji pregled mogućeg sadržaj unutar zagrada pogledajte slijedeći odjeljak. 5. Dvostruke okrugle zagrade (( )) koristimo za aritmetičke izraze i za samu aritmetiku. Npr. izraz (( x < 10 )) radio ono što i očekujemo, ispituje da li je vrijednost varijable x manja od 10. Unutar [[ ]] i ((... )) možemo koristiti && i za kompoziciju više jednostavnih izraza. Kada koristiti koji tip izraza? Najbolje za ksh je [[... ]] ako koristimo uspoređivanje varijabli, a ((... )) za aritmetiku i aritmetičke izraze. (U sistemskim pokretačkim procedurama koje su pisane za sh sintaksu srećemo jedino [... ]). Često možemo jednu te istu stvar ispitati na više različitih načina: if [ $# -eq 0 ]; then if [ $# = 0 ]; then if [[ $# = 0 ]]; then if (( $# == 0 )); then

33 IZRAZI, OBRASCI I MODIFIKATORI 27 Nije toliko važno koji način koristimo već da smo konzistentni i da slijedimo uvijek istu sintaksu. Vježbe: 4.1 Napišite shell program brisi koji će obrisati rekurzivno sve što je ispod kazala /tmp/priv. Prije nego što se obavi brisanje, program nas mora pitati da li stvarno želimo sve obrisati. Kao pozitivan odgovor uvažite "d", dok su svi ostali odgovori smatraju negativnim. 4.4 Tipovi izraza Logičke izraze možemo podijeliti prema različitim kriterijima. Izraze možemo npr. podijeliti na jednostavne i složene. Složene izraze gradimo od jednostavnih pomoću operatora: &&,,!, i () unutar dvostrukih zagrada. && operator koristimo za logičku AND operaciju, za logičku OR operaciju. Okrugle zagrade koristimo za grupiranje izraza, a uskličnik za negaciju. Izraze možemo podjeliti i prema području uporabe: 1. Uspoređivanje nizova 2. Aritmetički izrazi 3. Uspoređivanje svojstava datoteka Slijedi pregled najvažnijih tipova izraza prema gornjoj podjeli, a koje koristimo unutar zagrada: [ ], [[ ]] i (( )). 1) Za uspoređivanje nizova (stringova): string = string; string!= string (umjesto "string" može naravno $var) string = pattern; string!= pattern samo unutar [[ ]] Npr. [ $var1 = abc ] [[ $var1 = *.c ]] 2) Za uspoređivanje brojeva i brojevnih izraza koristimo binarne operatore koji s lijeve i desne strane mogu imati broj ili u najopćentijem slučaju kompletan izraz. exp1 eq exp2 exp1 ne exp2 da li je exp1 jednako exp2 da li je exp1 različito od exp2

34 28 SHELL PROGRAMIRANJE Npr. exp1 gt exp2 da li je exp1 veći od exp2 exp1 ge exp2 da li je exp1 veći ili jednako exp2 exp1 lt exp2 da li je exp1 manji od exp2 exp1 le exp2 da li je exp1 manji ili jednako exp2 [[ $x gt 7 && $x lt 70 ]] Unutar dvostrukih okruglih zagrada možemo koristiti operatore koji su uobičajeni u programskim jezicima C/C++, Java,. Također je dozvoljena sintaksa u kojoj ne koristimo $var nego samo var za vrijednosti varijabli. (( x == y )) da li je x jednako y (( x >= y )) da li je x veće ili jednako y... Npr. (( x > 7 && x < 70 )) Slijedi manji, kompletan primjer: #!/bin/ksh -p # # uglate.ksh if [[ $1 -gt 70 ]] then print "umirovljenik." elif [[ $1 -gt 7 ]] then print "Odrasli - Morate platiti kartu". else print "Dijete." fi Primjer 4.1: Upotreba izraza 3) Za pronalaženje raznih svojstava datoteka kao i za uspoređivanje datoteka koristimo niz binarnih i unarnih operatora. Evo jednog primjera if [[ $# = 2 && $1 = -f && -r $2 ]] then

35 IZRAZI, OBRASCI I MODIFIKATORI 29 print "We have f option and file that exists and is readable" fi Obratite pažnju na "-r $2" to je izraz kojim ispitujemo da li je u $2 spremljeno ime datoteke koja postoji i koja je čitljiva. Slijedi kratki opis još nekih važnijih operatora za ispitivanje datoteka: -d file istinito ako je file kazalo -r file istinito ako datoteka postoji i čitljiva je -w file istinito ako datoteka postoji i može se u nju pisati -x file istinito ako datoteka postoji i izvediva je -s file istinito ako datoteka postoji i ima veličinu veću od 0... Binarni operatori se koriste za uspoređivanje dvije datoteke: file1 nt file2 f1 ot f2 file1 noviji od file2 file1 stariji od file2 Vježbe 4.2 Modificirajte program telv1 i napišite telv2 tako da se dozvoljava da korisnik ne upiše parametar kojim definiramo ime. U tom slučaju na zaslon treba prikazati sadržaj čitave datoteke imenik. 4.5 Obrasci Prilikom uspoređivanja nizova, ili kod drugih poslova, često se upotrebljavaju obrasci (eng. patterns). Obrascima, u stvari, iz svih mogućih nizova znakova odabiremo samo neke. Obrasci su skraćeni zapis za odabir nekih nizova. Slijedi sintaksa za najvažnije obrasce. [abcd] bilo koji (jedan) od navedenih znakova? bilo koji znak * nula ili više pojava bilo kojih znakova?(patt1 patt2...) nula ili jedan od obrazaca unutar ( ) *(patt1 patt2...) nula ili više obrazaca unutar ( )

36 30 SHELL PROGRAMIRANJE +(patt1 patt2...) jedan od obrazaca unutar ( )!(patt1 patt2...) svi osim bilo kojeg obrasca unutar ( ) Evo nekoliko primjera za upotrebu obrazaca: prog[123] odabire riječi prog1, prog2 i prog3 pogl? odabire pogl1 pogl2, ali ne odabire pogl11 x*y odabire riječi koje počinju sa x i završavaju s y para?([345] 99)1 odabire para1, para31, para991 U praksi Vam npr. može zatrebati da iz jednog kazala obrišete sve datoteke osim datoteke s izvornim kodom. Ako bi sve datoteke s izvornim kodom završavala sa ".chill", onda bi to brisanje mogli obaviti sa rm!(*.chill)!!! Oprez Vježbe: kod isprobavanja naredbe rm *. 4.3 Modificirajte program brisi tako da koristite obrasce i dozvolite "d" i "D". Pokušajte to još proširiti sa "da" i "DA". 4.6 Modifikatori Modifikatori su izrazi kojima dobivamo sadržaj povezan s varijablom. Modifikatore koristimo za dobivanje default vrijednosti, za dobivanje dijelova varijabli ili za neke druge informacije vezane za varijable. Primjeri za modifikatore: ${1-root} ${1=root} ${1?poruka) ${var1-abcd} vrijednost $1 ili "root" ako $1 nije definiran; može i npr. ${d-$(date)} vrijednost $1 ili root ako $1 nije definiran a $1 postaje root vrijednost $1 ili poruka na stderr ako nije definiran može i bilo koja varijabla, ne samo pozicioni parametri Modifikatori: #, ##, %, %% brišu dio varijable i kao rezultat vraćaju ono što ostaje nakon brisanja. Dio koji želimo obrisati definiramo sa obrascem, a

37 IZRAZI, OBRASCI I MODIFIKATORI 31 moguće je brisati s lijeve ili desne strane varijable. Također je moguće definirati da li se briše najmanji dio koji je definiran sa obrascem ili pak najveći mogući dio koji zadovoljava obrazac. Uzmimo kao primjer slijedeći niz naredbi koje pojašnjavaju što znači "najmanji dio" i "najveći mogući dio" u prethodnoj rečenici. x=/jedan/dva/tri print ${x##*/} tri print ${x#*/} jedan/dva/tri Najprije je definirana varijabla x, a zatim se iz nje briše "najveći mogući dio" s lijeve strane (operator ##). Ono što brišemo je definirano obrascem "*/". Međutim, taj obrazac definira niz "/" najmanji mogući niz koji zadovoljava obrazac "*/", ali i niz "/jedan/dva/" najveći mogući niz. Operatorom ## definiramo najveći mogući, a sa # definiramo najmanji mogući niz za brisanje. Pregled svih %, # modifikatora varijabli: ${parametar#pattern} ${parametar##pattern} ${parametar%pattern} ${parametar%%pattern} obriši mali lijevi dio obriši veliki lijevi dio obriši mali desni dio obriši veliki desni dio Slijedeći primjer mvall.ksh ilustrira upotrebu modifikatora. Svrha ovog programa je da npr. promijeni imena datoteka koje završavaju sa ".C" u imena koja završavaju s ".cpp". Stari završetak datoteka (npr. ".C") i novi završetak (npr. ".cpp") su ulazni parametri za taj program. Ako bismo naredbu pokrenuli npr. sa mvall.ksh.awk.nawk onda bi program sve datoteke koje zvršavaju s ".awk" preimenovao tako da završavaju s "nawk".

38 32 SHELL PROGRAMIRANJE #! /usr/bin/ksh # # Mijenja imena datoteka koje zavrsavaju na $1 # u datoteke tako da zvrsavaju na $2 for filename in *${1} do mv $f ${filename%%${1}}${2} done Primjer 4.2: Upotreba modifikatora Najvažniji dio gornjeg programa je izraz ${filename%%${1}} i upotreba modifikatora %% koji briše desni dio iz varijable filename i to onaj dio koji je specificiran sa $1. Vježbe: 4.4 Isprobajte slijedeći niz naredbi: x=/jedan/dva/tri print ${x##*/} print ${x%/*} print ${x#/jedan/} x=jedan/dva/tri print ${x%%/*} U praksi se pokazuju korisni i slijedeći modifikatori: ${#parametar} dužina stringa ${#arr[*]} broj definiranih članova u polju Slijedeći primjer ilustrira upotrebu modifikatora za dužinu niza: x=abcdefg print ${#x} 7

39 IZRAZI, OBRASCI I MODIFIKATORI Početni substring od varijable možete dobiti sa ${x%???}, a krajnji dio kao ${x#???}. Broj upitnika označava broj znakova koje želimo obrisati. Probajte za x= s različitim brojem upitnika.

40 5 Kontrola tijeka i ulaz/izlaz Ksh podržava slijedeće naredbe kojima definiramo redoslijed izvođenja: if... then...fi while, until for case select 5.1 If Sintaksa za naredbu if: if izraz then... [elif izraz...then...else...] fi elif i else dijelovi su opcionalni ne moraju biti prisutni. Ono što moramo imati kod korištenja je if izraz then fi. Iza if i elif slijedi neki logički izraz. then MORA biti iza if i elif, a NE SMIJE biti iza else. Kao što je već napomenuto u uvodu, shell sintaksa nije baš najbolji primjer za jednostavnost i konzistentnost programskog jezika. Slijedeći primjer je modifikacija već prikazanog primjera. Ovdje koristiom sve dijelove if sintakse. #! /usr/bin/ksh if (( $1 > 70 )) then print umirovljenik elif (( $1 < 7 )) then print dijete else print odrasli fi Primjer 5.1: Upotreba if naredbe sa svim dijelovima Izrazi su objašnjeni u prethodnom poglavlju.

41 KONTROLA TIJEKA I ULAZ/IZLAZ While While je petlja koja omogućuje repetitivno izvođenje skupa naredbi. Sintaksa za while: while izraz do... done U slijedećem primjeru ispisujemo 15 redaka s rastućim brojevima: integer x=1 while (( x <= 15 )) do print $x (( x = x + 1 )) done Primjer 5.2: while petlja U praksi se vrlo često koristi petlje kojom čitamo redak po redak iz ulazne datoteke, nešto napravima s njima i eventualno rezultat pošaljemo na zaslon: while read do # ovdje nešto napravi s retkom # redak je sadržan u varijabli $REPLY print $REPLY done Primjer 5.3: Obrada redak-po-redak U primjeru 5.3 čitaju se ulazni podaci redak po redak sa standardnog ulaza jer to radi naredba read. Shell program koji bi sadržavao taj odsječak bi koristili ovako: prog < input_file

42 36 SHELL PROGRAMIRANJE!!! Obrazac prikazan u prethodnom primjeru se vrlo često koristi u praksi. Ako trebamo beskonačnu petlju: while true do done # ove naredbe se beskonačno izvode Osim while koristi se i naredba: until izraz do... done Izvedi naredbe dok izraz nije istina (rijetko se koristi). Unutar petlji možemo korisiti naredbe break i continue. Naredba break uzrokuje izlaz iz while (ili neke druge) petlje dok continue uzrokuje skok na početak petlje. Vježbe: 5.1Napišite shell program koji će čitati redak po redak sa standardnog ulaza i ispisivati te retke ispred kojih će ubaciti redni broj retka. Isprobajte za neku datoteku. Npr. za datoteku imenik: prog < imenik 5.2 Napišite shell program shead koji će kao parametar pročitati broj N. Ako nema tog parametra default vrijednost je 10. Zatim treba čitati retke sa standardnog ulaza i prikazati točno N (ili 10) početnih redaka. 5.3 For for je vrlo korisna i močna. Nešto se razlikuje od for petlji koje nalazimo u programskim jezicima kao što su C++, C# ili Java.

Naredbe za kontrolu toka

Naredbe za kontrolu toka Naredbe za kontrolu toka Naredbe za kontrolu toka Nakon odslušanog bit ćete u stanju: objasniti semantiku naredbi za kontrolu postupaka navesti sintaksu naredbi if, if-else i case u programskom jeziku

More information

VRIJEDNOSTI ATRIBUTA

VRIJEDNOSTI ATRIBUTA VRIJEDNOSTI ATRIBUTA Svaki atribut (bilo da je primarni ključ, vanjski ključ ili običan atribut) može i ne mora imati ograničenja na svojim vrijednostima. Neka od ograničenja nad atributima: Null / Not

More information

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

Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb, Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb, 13.04.2017. Podešavanje Hyper-V Servera 2016 za RSAT upravljanje Dario Štefek Lokacije za preuzimanje: Microsoft Hyper-V Server 2016 https://www.microsoft.com/en-us/evalcenter/evaluate-hyper-v-server-2016

More information

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

Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj list. Ime i prezime: Asistent: Predava : Programiranje (C) 1. kolokvij 14. 4. 2003. 1. 2. 3. 4. 5. 6. 7. Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj

More information

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

CSS CSS. selector { property: value; } 3/20/2018. CSS: Cascading Style Sheets CSS CSS CSS: Cascading Style Sheets - Opisuje izgled (appearance) i raspored (layout) stranice - Sastoji se od CSS pravila, koji defini[u skup stilova selector { property: value; 1 Font face: font-family

More information

Prva recenica. Druga recenica.

Prva recenica. Druga recenica. Algoritmi i programiranje Predavanje 4 METODE LOKALNE, GLOBALNE VARIJABLE I KONSTANTE METODA je imenovani izdvojeni slijed naredbi koji rješava određeni zadatak i po potrebi se poziva jednom ili više puta

More information

PREDMET. Osnove Java Programiranja. Čas JAVADOC

PREDMET. Osnove Java Programiranja. Čas JAVADOC PREDMET Osnove Java Programiranja JAVADOC Copyright 2010 UNIVERZITET METROPOLITAN, Beograd. Sva prava zadržana. Bez prethodne pismene dozvole od strane Univerziteta METROPOLITAN zabranjena je reprodukcija,

More information

Sberbank Business Online na Mozilla FireFox

Sberbank Business Online na Mozilla FireFox Sberbank Business Online na Mozilla FireFox Verzija 1.6 Srpanj 2016. Sberbank d.d. Stranica 1 SADRŽAJ 1 INSTALACIJA... 2 2 POKRETANJE MOZILLE FIREFOX... 3 2.1 IMPORT SECURITY MODULA... 4 2.2 AUTOMATSKI

More information

Uputstvo za korišćenje logrotate funkcije

Uputstvo za korišćenje logrotate funkcije Copyright AMRES Sadržaj Uvod 3 Podešavanja logrotate konfiguracionog fajla 4 Strana 2 od 5 Uvod Ukoliko je aktivirano logovanje za RADIUS proces, može se desiti da posle određenog vremena server bude preopterećen

More information

Uputstvo za podešavanje mail klijenta

Uputstvo za podešavanje mail klijenta Uputstvo za podešavanje mail klijenta 1. Podešavanje Thunderbird mail klijenta 1.1 Dodavanje mail naloga Da biste podesili Vaš mail klijent (u ovom slučaju Thunderbird) da prima i šalje mail-ove potrebno

More information

PARALELNO PROGRAMIRANJE

PARALELNO PROGRAMIRANJE Predavanje 09 Odjel za matematiku 1 PARALELNO PROGRAMIRANJE POSIX threadovi za C++ Predavanje 09 Odjel za matematiku 2 Programske niti (thread) unutar procesa Danas ćemo se upoznati s POSIX thread bibliotekom

More information

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

Učitati cio broj n i štampati njegovu recipročnu vrijednost. Ako je učitan broj 0, štampati 1/0. Kontrolne naredbe Primjeri: Opšti oblik razgranate strukture (if sa ) if (uslov) Naredba 1 ili blok naredbi1 Naredba 2 ili blok naredbi2 Učitati broj x i štampati vrijednost double x, z; Scanner in=new

More information

Programiranje III razred

Programiranje III razred Tehnička škola 9. maj Bačka Palanka Programiranje III razred Naredbe ciklusa for petlja Naredbe ciklusa Veoma često se ukazuje potreba za ponavljanjem nekih naredbi više puta tj. za ponavljanjem nekog

More information

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

Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo Nasledjivanje klasa Modifikator new class A { public virtual void F() { Console.WriteLine("I am A"); } } class B : A { public override void F()

More information

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

b) program deljiv3; uses wincrt; var i:integer; begin i:=3; while i<100 do begin write(i:5); i:=i+3; end; end. NAREDBA CIKLUSA SA PREDUSLOVOM WHILE 1.Odrediti vrednosti s i p nakon izvrsenja sledecih naredbi za dato a=43, a=34, a=105 program p1; var a,s,p:integer; write('unesite a:');readln(a); p:=a; s:=0; while

More information

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

Sveučilište u Zagrebu PMF Matematički odsjek. Mreže računala. Vježbe 08. Zvonimir Bujanović Slaven Kožić Vinko Petričević Sveučilište u Zagrebu PMF Matematički odsjek Mreže računala Vježbe 08 Zvonimir Bujanović Slaven Kožić Vinko Petričević Uvod: (X)HTML i CSS Na ovim i idućim vježbama naučit ćemo osnove jezika za opisivanje

More information

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

Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak... Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak... Prof. dr. sc. Tomislav Pribanić Izv. prof. dr. sc. Vedran Podobnik Doc. dr. sc. Marija Seder Sveučilište u Zagrebu Fakultet elektrotehnike

More information

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

Programiranje Programski jezik C. Sadržaj. Datoteke. prof.dr.sc. Ivo Ipšić 2009/2010 Programiranje Programski jezik C prof.dr.sc. Ivo Ipšić 2009/2010 Sadržaj Ulazno-izlazne funkcije Datoteke Formatirane datoteke Funkcije za rad s datotekama Primjeri Datoteke komunikacija između programa

More information

Upute za postavljanje Outlook Expressa

Upute za postavljanje Outlook Expressa Upute za postavljanje Outlook Expressa Prije postavljanja klijenata morate obavezno obaviti prvu prijavu na web mail kako bi aktivirali vaš račun na novom sustavu. Ukoliko niste obavili prvu prijavu, nećete

More information

Push(3,&S) 3 1 S Uvijek trebamo paziti da ne zovemo Pop nad praznim stogom.

Push(3,&S) 3 1 S Uvijek trebamo paziti da ne zovemo Pop nad praznim stogom. tog (tack) tog je posebna vrsta liste: od svih operacija dozvoljeno je ubacivanje, brisanje i gledanje sadržaja elementa samo na jednom kraju liste koji zovemo vrh stoga. tog zovemo i lifo last in first

More information

Uvod, varijable, naredbe, petlje

Uvod, varijable, naredbe, petlje 8. JavaScript Uvod, varijable, naredbe, petlje M. Zekić-Sušac 1 Što je JavaScript? JavaScript je najpopularniji skriptni jezik na Internetu kojeg podržavaju svi poznatiji preglednici (Internet Explorer,

More information

ARDUINO KROZ JEDNOSTAVNE PRIMJERE - pripreme za natjecanja -

ARDUINO KROZ JEDNOSTAVNE PRIMJERE - pripreme za natjecanja - ARDUINO KROZ JEDNOSTAVNE PRIMJERE - pripreme za natjecanja - PRIPREMA 5-2015 DVOSMJERNA SERIJSKA KOMUNIKACIJA Paolo Zenzerović, mag. ing. el. Zagreb, 2015. 2 ARDUINO KROZ JEDNOSTAVNE PRIMJERE DVOSMJERNA

More information

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

Uvod u programiranje - vežbe. Kontrola toka izvršavanja programa Uvod u programiranje - vežbe Kontrola toka izvršavanja programa Naredbe za kontrolu toka if, if-else, switch uslovni operator (?:) for, while, do-while break, continue, return if if (uslov) naredba; if

More information

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

Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi DELEGATI Bezbedni pokazivači na funkcije Jer garantuju vrednost deklarisanog tipa. Prevodilac prijavljuje grešku ako pokušate da povežete

More information

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

Primjer ispisuje rečenicu Dobro dosli na brzi tecaj C-a na ekranu Osnove programiranja p. 1/27 Brzi tečaj C-a Primjer ispisuje rečenicu "Dobro dosli na brzi tecaj C-a" na ekranu Programiranje se sastoji od nekoliko koraka - pisanje programa u tekstualnom editoru (joe,

More information

JavaScript i HTML DOM

JavaScript i HTML DOM 4. vježbe iz WEB programiranja četvrtak, 22. ožujka 2012. JavaScript 1. dio JavaScript i Što je DOM? Kako JS koristi DOM? Pristup elementima dokumenta Promjena i učitavanje vrijednosti tagova Primjer 1.

More information

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET Katedra za elektroniku Računarska elektronika Grupa br. 11 Projekat br. 8 Studenti: Stefan Vukašinović 466/2013 Jelena Urošević 99/2013 Tekst projekta :

More information

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

Binarne hrpe. Strukture podataka i algoritmi VJEŽBE 26. siječnja / 133 Binarne hrpe Potpuno binarno stablo binarno stablo u kojem svaki čvor koji nije list ima točno 2 nasljednika. Binarna hrpa potpuno binarno stablo u kojem svaki čvor koji nije list ima veću ključnu vrijednost

More information

Programske paradigme Funkcionalna paradigma

Programske paradigme Funkcionalna paradigma Programske paradigme Funkcionalna paradigma 1. čas: Uvod u funkcionalno programiranje. Programski jezik Haskel. Upoznavanje sa razvojnim okruženjem. Tipovi podataka. Funkcionalno programiranje Stil u programiranju

More information

PKI Applet Desktop Application Uputa za instalaciju programske potpore

PKI Applet Desktop Application Uputa za instalaciju programske potpore 1 SADRŽAJ 1. UVOD 3 2. PODRŽANI OPERATIVNI SUSTAVI 3 3. PROGRAMSKI PREDUVJETI ZA INSTALACIJU PROGRAMSKE POTPORE 3 4. INSTALACIJA PROGRAMSKE POTPORE 3 5. DEINSTALACIJA PROGRAMSKE POTPORE 6 2 1. Uvod PKI

More information

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

Sveučilište u Zagrebu Fakultet strojarstva i brodogradnje. WEB programiranje HTML & CSS Sveučilište u Zagrebu Fakultet strojarstva i brodogradnje WEB programiranje HTML & CSS Autor/i: Juraj Benić 2018 1. Zadatak Kreirati stranicu kojoj će naslov biti Zadatak 1. i veličina teksta 20px te staviti

More information

Uputa za instaliranje programske potpore za operativni sustav WINDOWS

Uputa za instaliranje programske potpore za operativni sustav WINDOWS ZABA SignErgy Desktop aplikacija Uputa za instaliranje programske potpore za operativni sustav WINDOWS SADRŽAJ 1. UVOD 3 2. PODRŽANI OPERATIVNI SUSTAVI 3 3. PROGRAMSKI PREDUVJETI ZA INSTALACIJU PROGRAMSKE

More information

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

pojedinačnom elementu niza se pristupa imeniza[indeks] indeks od 0 do n-1 NIZOVI Niz deklarišemo navođenjemtipa elemenata za kojim sledi par srednjih zagrada[] i naziv niza. Ako je niz višedimenzionalni između zagrada[] se navode zarezi, čiji je broj za jedan manji od dimenzija

More information

Izrada VI laboratorijske vježbe

Izrada VI laboratorijske vježbe Izrada VI laboratorijske vježbe 1. Programirati proceduru koja se aktivira sa Standard palete alatki klikom na button Fajlovi. Prilikom startovanja procedure prikazuje se forma koja sadrži jedan list box

More information

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

Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući Java konstrukt Funkcionalno programiranje Interoperabilnost jezika Scala i Java Prevođenje u Java bajt kod Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući

More information

Nizovi. Programiranje 1

Nizovi. Programiranje 1 Nizovi Programiranje 1 VB Nizovi Zamislite da imate 10,000 šešira i da morate svakome od njih dati jedinstvenu oznaku. Kako biste to napravili? Bilo bi razumno svakom šeširu dati njegov broj. Sada možete

More information

PROGRAMIRANJE. Amir Hajdar

PROGRAMIRANJE. Amir Hajdar PROGRAMIRANJE Amir Hajdar Teme 2 Klase i objekti u Javi Primjer kroz klasu Krug Atributi i metode Inicijalizacija objekata (konstruktori) Polymorphism Statičke varijable i metode This Klase i objekti u

More information

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

GUI - događaji (Events) i izuzeci. Bojan Tomić GUI - događaji (Events) i izuzeci Bojan Tomić Događaji GUI reaguje na događaje (events) Događaj je neka akcija koju korisnik programa ili neko drugi izvrši korišćenjem perifernih uređaja (uglavnom miša

More information

VB komande. Programiranje 1

VB komande. Programiranje 1 VB komande Programiranje 1 Zadatak 1: Sastaviti program koji se sastoji iz jedne ListBox kontrole, jedne Textbox kontrole i dva komandna dugmeta. Klikom na prvo komandno dugme umeće se u ListBox sadržaj

More information

Vidljivost TipPovratneVrednosti ImeFunkcije (NizParametara) { TeloFunkcije }

Vidljivost TipPovratneVrednosti ImeFunkcije (NizParametara) { TeloFunkcije } 1. FUNKCIJE I STRUKTRUE PROGRAMA Složeni problemi lakše se rašavaju ako se podele na manje celine koje mogu nezavisno da se rešavaju. Rešenje celokupnog složenog problema dobija se kombinovanjem rešenja

More information

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

Operacijski sustavi. Laboratorijska vježba 2. Petra Lončar, mag. ing. el., asistent FESB, 2016. Operacijski sustavi Laboratorijska vježba 2 Petra Lončar, mag. ing. el., asistent ploncar@fesb.hr FESB, 2016. Linux procesi procesi su programi koji se izvršavaju i pritom zauzimaju sredstva sustava (spremnik,

More information

SVEUČILIŠTE U MOSTARU FAKULTET PRIRODOSLOVNO-MATEMATIČKIH I ODGOJNIH ZNANOSTI BAZE PODATAKA 2. Doc.dr.sc. GORAN KRALJEVIĆ BAZE PODATAKA 2 1

SVEUČILIŠTE U MOSTARU FAKULTET PRIRODOSLOVNO-MATEMATIČKIH I ODGOJNIH ZNANOSTI BAZE PODATAKA 2. Doc.dr.sc. GORAN KRALJEVIĆ BAZE PODATAKA 2 1 SVEUČILIŠTE U MOSTARU FAKULTET PRIRODOSLOVNO-MATEMATIČKIH I ODGOJNIH ZNANOSTI BAZE PODATAKA 2 Doc.dr.sc. GORAN KRALJEVIĆ BAZE PODATAKA 2 1 Baze podataka 2 Web: http://www.fpmoz.ba/gkraljevic Pitanja, primjedbe,

More information

Uvod u relacione baze podataka

Uvod u relacione baze podataka Uvod u relacione baze podataka Ana Spasić 5. čas 1 Podupiti, operatori exists i in 1. Izdvojiti imena i prezimena studenata koji su položili predmet čiji je identifikator 2001. Rešenje korišćenjem spajanja

More information

NIZOVI.

NIZOVI. NIZOVI LINKOVI ZA KONZOLNI C# OSNOVNO http://www.mycity.rs/net/programiranje-u-c-za-osnovce-i-srednjoskolce.html http://milan.milanovic.org/skola/csharp-00.htm Niz deklarišemo navođenjem tipa elemenata

More information

VDSL modem Zyxel VMG1312-B10A/B30A

VDSL modem Zyxel VMG1312-B10A/B30A VDSL modem Zyxel VMG1312-B10A/B30A Default Login Details LAN IP Address http://192.168.2.1 User Name user Password 1234 Funkcionalnost lampica Power lampica treperi kratko vrijeme nakon uključivanja modema,

More information

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

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

More information

Rad sa MySQL bazom podataka

Rad sa MySQL bazom podataka 13. PHP 4.dio Rad sa MySQL bazom podataka M. Zekić-Sušac 1 Što je MySQL? MySQL je relacijska baza podataka. Relacijski model podrazumijeva određenu strukturu podataka, pohranjenu u tablice. Jedna baza

More information

Sadržaj predavanja 02. Cjelobrojni tip podataka(1/3) Cjelobrojni tip podataka(2/3) Cjelobrojni tip podataka(3/3) prec(short) prec(int) prec(long) int

Sadržaj predavanja 02. Cjelobrojni tip podataka(1/3) Cjelobrojni tip podataka(2/3) Cjelobrojni tip podataka(3/3) prec(short) prec(int) prec(long) int Sadržaj predavanja 02 Cjelobrojni tip podataka(1/3) Cjelobrojni tip podataka Realni tip podataka Aritmetički operatori Izrazi Operatori inkrement i dekrement Kontrola toka programa Naredba za jednostruki

More information

UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a

UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a Webmail sistem ima podršku za SSL (HTTPS). Korištenjem ovog protokola sva komunikacija između Webmail sistema i vašeg Web čitača je kriptovana. Prilikom pristupa

More information

SELECT CASE i FOR NEXT. Programiranje 1

SELECT CASE i FOR NEXT. Programiranje 1 SELECT CASE i FOR NEXT Programiranje 1 VISUAL BASIC SELECT SELECT komanda služi umjesto višestrukih IF THEN naredbi u slučaju grananja programa, zavisno o vrijednosti ispitivanog izraza početak v1 var

More information

Vežbe - XII nedelja PHP Doc

Vežbe - XII nedelja PHP Doc Vežbe - XII nedelja PHP Doc Dražen Drašković, asistent Elektrotehnički fakultet Univerziteta u Beogradu Verzija alata JavaDoc za programski jezik PHP Standard za komentarisanje PHP koda Omogućava generisanje

More information

Jezik Baze Podataka SQL. Jennifer Widom

Jezik Baze Podataka SQL. Jennifer Widom Jezik Baze Podataka SQL SQL o Jezik koji se koristi u radu sa relacionim bazama podataka o Nije programski jezik i manje je kompleksan. o Koristi se isključivo u radu za bazama podataka. o SQL nije case

More information

Backup i Restore C particije ili Windowsa sa NORTON-om

Backup i Restore C particije ili Windowsa sa NORTON-om BRZO KOPIRANJE I RESTAURIRANJE DISKOVA (programski paket Norton SystemWorks) OBJAŠNJENJE Backup i Restore C particije ili Windowsa sa NORTON-om Je li vam se nekada srušio operativni sustav ili pokvario

More information

Iskočni okviri (eng. popup boxes)

Iskočni okviri (eng. popup boxes) 9. JavaScript 2.dio Iskočni okviri, funkcije, petlje, događaji M. Zekić-Sušac 1 Iskočni okviri (eng. popup boxes) U JavaScriptu mogu se koristiti 3 vrste iskočnih okvira: Upozoravajući okviri (eng. alert

More information

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

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

More information

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

Windows Server 2012, VDI Licenciranje najprodavanijeg servera, što je novo, VDI licenciranje. Office 2013 / Office 365 Windows 8 Licenciranje, razlike u verzijama Windows Server 2012, VDI Licenciranje najprodavanijeg servera, što je novo, VDI licenciranje Serverski proizvodi Server 2012, System centar 2012, SQL 2012, Sharepoint

More information

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

for i:=2 to n do if glasovi[i]>max then begin max:=glasovi[i]; k:=i {*promenljiva k ce cuvati indeks takmicara sa najvise glasova *} end; {*Na Evroviziji je ucestvovalo n izvodjaca. Koji od njih je osvojio najvise glasova publike?*} program Evrovizija; glasovi:array[1..50] of integer; max,k:integer; writeln('unosi se broj izvodjaca:'); writeln('unose

More information

9. RAD S DATOTEKAMA PODATAKA

9. RAD S DATOTEKAMA PODATAKA Rad s datotekama 7-1 9. RAD S DATOTEKAMA PODATAKA U programiranju se često radi sa skupovima podataka koji se čuvaju na jedinicama perfernih memorija, a koji se organizuju u posebne cjeline koje nazivamo

More information

Programiranje 1 Programski jezik C 2. čas. Mirko Spasić

Programiranje 1 Programski jezik C 2. čas. Mirko Spasić Programiranje 1 Programski jezik C 2. čas Mirko Spasić Operatori U C-u postoji veliki broj operatora. Mogu biti unarni (imaju jedan argument) i binarni (dva argumenta). Unarni operatori mogu biti prefiksni

More information

RAČUNARSKI PRAKTIKUM II

RAČUNARSKI PRAKTIKUM II Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM II Predavanje 07 - Uvod u PHP 4. svibnja 2015. Sastavio: Zvonimir Bujanović PHP PHP Interpretirani skriptni

More information

Rekurzivne metode. Posmatrajmo rekurzivan metod kojim u objektu listbox1 klase ListBox upisujemo sve prirodne brojeve od 1 do datog n.

Rekurzivne metode. Posmatrajmo rekurzivan metod kojim u objektu listbox1 klase ListBox upisujemo sve prirodne brojeve od 1 do datog n. Rekurzivne metode Rekurzivan metod je onaj metod koji u nekoj svojoj instrukciji sadrži poziv samog sebe. Svakako prilikom kreiranja rekurzivnog metoda moramo voditi računa da ne dodje do beskonačne rekurzije

More information

Numeričke metode i praktikum

Numeričke metode i praktikum Numeričke metode i praktikum Aleksandar Maksimović IRB / 23/03/2006 / Str. 1 vektori Vektor u 3D prostoru. C: int v1[3]; v1[0]=a;v1[1]=b;v1[2]=c; Fortran: INTEGER V1(3) V1(1)=a V1(2)=b V1(3)=c Skalarni

More information

operativni sistem part 2

operativni sistem part 2 operativni sistem part 2 zagrevanje... update komandna linija, nastavak... mnoštvo programa (jezik se zaboravlja ako se ne govori) scripting, bash, sh malo uvoda u Python, IDLE, idle malo C (ni)malo IDE,

More information

VEŽBA 5 do while petlja, switch case

VEŽBA 5 do while petlja, switch case VEŽBA do while petlja, switch case Petlja sa ulaznim uslovom do while U slučaju do while petlje obavezno izvršavanje bar jedne iteracije se postiže tako što je upravljački izraz petlje na samom dnu petlje.

More information

KURSORI BAZE PODATAKA U ORACLE 11g

KURSORI BAZE PODATAKA U ORACLE 11g KURSORI BAZE PODATAKA U ORACLE 11g SAŽETAK Kursor baze podataka je privatno SQL područje u kojem se čuvaju informacije za procesiranje određene SQL naredbe. Oracle PLSQL jezik koristi implicitne i eksplicitne

More information

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

String. String. Kreiranje string objekta pomoću string literala (konstanti) Kreiranje string objekta String string ili znakovni niz (string) nije niz znakova u Javi su stringovi klase String paketa java.lang!!! Usporedba: char gf = G ; Niz znakova String char [] gf = { G, e, o, d, e, t, s, k, i ; String

More information

Programiranje III razred

Programiranje III razred Tehnička škola 9. maj Bačka Palanka Programiranje III razred Konverzija tipova Konverzija tipova Prilikom komunikacije aplikacije sa korisnikom, korisnik najčešće unosi ulazne podatke koristeći tastaturu.

More information

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA Sustavi za praćenje i vođenje procesa Seminarski rad LOGIČKI ANALIZATOR (PC kao instrument) 26. svibnja 2007. Ivan Grubišić 0036404380 1. Logički analizator Logički

More information

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

namespace spojneice { public partial class Form1 : Form { public Form1() { InitializeComponent(); } Spojnice using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO;

More information

<A rel="stylesheet" B="mystylesheet.css" C="text/css" />

<A rel=stylesheet B=mystylesheet.css C=text/css /> 1 od 9 9.4.2013 7:18 EFOS_kol1_2011 - RJEŠENJA 16.4.2011. Uključivanje vanjske mystylesheet.css datoteke sa određenim stilovima, postiže se zadavanjem naredbe unutar HTML koda, koja izgleda ovako:

More information

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

dr. sc.. Josip Musić Originalne slideove izradio: Uvod u programiranje Programiranje 1 (450) Poglavlje 1 Uvod u računala, Microsoft.NET i VB.NET (dio 2 od 2): Pregled.NET platforme dr. sc.. Josip Musić jmusic@fesb.hr 1 Originalne slideove izradio: Teo

More information

Assignment clarifications

Assignment clarifications Assignment clarifications How many errors to print? at most 1 per token. Interpretation of white space in { } treat as a valid extension, involving white space characters. Assignment FAQs have been updated.

More information

Lab. vježba PROGRAMIRANJE ZA INTERNET. Upute za laboratorijske vježbe. (izradio: Marin Bugarić) CSS3

Lab. vježba PROGRAMIRANJE ZA INTERNET. Upute za laboratorijske vježbe. (izradio: Marin Bugarić) CSS3 Lab. vježba 6 PROGRAMIRANJE ZA INTERNET Upute za laboratorijske vježbe (izradio: Marin Bugarić) CSS3 P R O G R A M I R A N J E Z A I N T E R N E T Općenito Posljednja verzija Cascading Style Sheetsa, verzija

More information

RAČUNARSKI PRAKTIKUM II

RAČUNARSKI PRAKTIKUM II Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM II Predavanje 04 - Uvod u PHP 14. ožujka 2016. Sastavio: Zvonimir Bujanović PHP PHP Interpretirani skriptni

More information

Vi & Shell Scripting

Vi & Shell Scripting Vi & Shell Scripting Comp-206 : Introduction to Week 3 Joseph Vybihal Computer Science McGill University Announcements Sina Meraji's office hours Trottier 3rd floor open area Tuesday 1:30 2:30 PM Thursday

More information

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

... ; ako je a n parno. ; ako je a n neparno Zadaci vezani za ciklus sa preduslovom (WHILE) Zad. Napisati program za izračunavanje n_tog stepena broja a. Zad2. Napisati program za izračunavanje sume S kvadrata parnih i kubova neparnih prirodnih brojeva

More information

Veliki računski zadaci mogu se razbiti u manje delove i time se omogućava ljudima da iskoriste ono što su neki drugi već uradili, umesto da počinju

Veliki računski zadaci mogu se razbiti u manje delove i time se omogućava ljudima da iskoriste ono što su neki drugi već uradili, umesto da počinju Staša Vujičić Čas 9 Veliki računski zadaci mogu se razbiti u manje delove i time se omogućava ljudima da iskoriste ono što su neki drugi već uradili, umesto da počinju sve od početka. Odgovarajuće funkcije

More information

Uvod u programski jezik

Uvod u programski jezik 2016 Uvod u programski jezik EDIN PAŠIĆ BIHAĆ sejjidin Muhammedin ve âlih lihî ve sellem Sallallâhu 'alâ sejjidinâ Neka je salavat i selam na prvaka Muhammeda a.s. i na njegovu porodicu ii Predgovor Ovo

More information

Shells and Shell Programming

Shells and Shell Programming Shells and Shell Programming 1 Shells A shell is a command line interpreter that is the interface between the user and the OS. The shell: analyzes each command determines what actions are to be performed

More information

2. Linijska algoritamska struktura

2. Linijska algoritamska struktura Univerzitet u Nišu Građevinsko-arhitektonski fakultet Informatika 2 2. Linijska algoritamska struktura Milica Ćirić Blokovi za prikaz algoritma Algoritam se vizuelno može prikazati pomoću blok dijagrama,

More information

Scheme je funkcionalni jezik moderna varijanta jezika LISP-a, s dodacima iz Algola (lokalni doseg identifikatora).

Scheme je funkcionalni jezik moderna varijanta jezika LISP-a, s dodacima iz Algola (lokalni doseg identifikatora). SCHEME Scheme je funkcionalni jezik moderna varijanta jezika LISP-a, s dodacima iz Algola (lokalni doseg identifikatora). Sheme se uglavnom koristi kao intepreter. Koristit ćemo Petit Chez Scheme. Petite

More information

Računarske osnove Interneta (SI3ROI, IR4ROI)

Računarske osnove Interneta (SI3ROI, IR4ROI) Računarske osnove terneta (SI3ROI, IR4ROI) Vežbe MPLS Predavač: 08.11.2011. Dražen Drašković, drazen.draskovic@etf.rs Autori: Dražen Drašković Naučili ste na predavanjima MPLS (Multi-Protocol Label Switching)

More information

Useful Unix Commands Cheat Sheet

Useful Unix Commands Cheat Sheet Useful Unix Commands Cheat Sheet The Chinese University of Hong Kong SIGSC Training (Fall 2016) FILE AND DIRECTORY pwd Return path to current directory. ls List directories and files here. ls dir List

More information

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

Prirodno-matematički fakultet u Nišu Departman za fiziku. dr Dejan S. Aleksić Programiranje u fizici Programiranje u fizici Prirodno-matematički fakultet u Nišu Departman za fiziku dr Dejan S. Aleksić Programiranje u fizici 7-8 Definicija, inicijalizacija promenljivih 2/21 u C-u Program napisan u programskog

More information

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

modifier returnvaluetype methodname(list of parameters) { // Method body; } Početna grupa, 28.11.2015. Metodi 1. Metodi opšti oblik metoda: modifier returnvaluetype methodname(list of parameters) // Method body; 2. Ime metoda: početno slovo je malo, a zatim slijede slova, cifre

More information

Lab. vježba PROGRAMIRANJE ZA INTERNET. Upute za laboratorijske vježbe. (izradio: Marin Bugarić) HTML5

Lab. vježba PROGRAMIRANJE ZA INTERNET. Upute za laboratorijske vježbe. (izradio: Marin Bugarić) HTML5 Lab. vježba 5 PROGRAMIRANJE ZA INTERNET Upute za laboratorijske vježbe (izradio: Marin Bugarić) HTML5 P R O G R A M I R A N J E Z A I N T E R N E T Općenito HTML5 je posljednja verzija HyperText Markup

More information

OSNOVE PROGRAMIRANJA

OSNOVE PROGRAMIRANJA OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica Za svaku formu u aplikaciji postoji pripadajuci modul forme (.frm) koji sadrži njen programski kod Modul forme sadži event procedure - dijelovi koda

More information

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

/*#include <iostream> // Prvi zadatak sa integralnomg ispita /*#include // Prvi zadatak sa integralnomg ispita 27.01.2015 #include using std::setw; using std::cout; const int red(5), kolona(4); void unos(int[]); void ispis(int[][kolona]); float

More information

COMP 4/6262: Programming UNIX

COMP 4/6262: Programming UNIX COMP 4/6262: Programming UNIX Lecture 12 shells, shell programming: passing arguments, if, debug March 13, 2006 Outline shells shell programming passing arguments (KW Ch.7) exit status if (KW Ch.8) test

More information

KLASIFIKACIJA JELENA JOVANOVIĆ. Web:

KLASIFIKACIJA JELENA JOVANOVIĆ.   Web: KLASIFIKACIJA JELENA JOVANOVIĆ Email: jeljov@gmail.com Web: http://jelenajovanovic.net PREGLED PREDAVANJA Šta je klasifikacija? Binarna i više-klasna klasifikacija Algoritmi klasifikacije Mere uspešnosti

More information

NASLOV SEMINARSKOG RADA (16 pt, Bold) Seminarski rad. (16 pt, Bold)

NASLOV SEMINARSKOG RADA (16 pt, Bold) Seminarski rad. (16 pt, Bold) Sveučilište u Zagrebu (12 pt, Bold) Ekonomski fakultet (12 pt, Bold) Naziv diplomskog studija (12 pt, Bold) NASLOV SEMINARSKOG RADA (16 pt, Bold) Seminarski rad (16 pt, Bold) Ime i prezime studenta/studentice,

More information

Uputstva za instaliranje čitača Datalogic Skorpio u operativnom sistemu Windows 7 i višim POM-NA-XX-46, V3.0

Uputstva za instaliranje čitača Datalogic Skorpio u operativnom sistemu Windows 7 i višim POM-NA-XX-46, V3.0 POM - Pomoć korisnicima Uputstva za instaliranje čitača Datalogic Skorpio u operativnom sistemu Windows 7 i višim POM-NA-XX-46, V3.0 IZUM, 2016 COBISS, COMARC, COBIB, COLIB, IZUM su zaštićeni znaci u posedu

More information

Numerical Computation

Numerical Computation GNU Octave Numerical Computation vrlo često u tehnici retko stvarni problemi imaju closed-form solution čak i kad imaju, pitanje upotrebljivosti mnogo detalja numerički pristup u početku tretirano kao

More information

Oracle Proprietary Joins Za upite nad više od jedne tabele korišćenjem Oracle proprietary sintakse koristiti join uslov u WHERE izrazu:

Oracle Proprietary Joins Za upite nad više od jedne tabele korišćenjem Oracle proprietary sintakse koristiti join uslov u WHERE izrazu: Database Programming with SQL kurs 2017 database design and programming with sql students slajdovi 7-1 Oracle Equijoin and Cartesian Product Prethodna sekcija se bavila upitima preko više od jedne tabele

More information

Shells and Shell Programming

Shells and Shell Programming Shells and Shell Programming Shells A shell is a command line interpreter that is the interface between the user and the OS. The shell: analyzes each command determines what actions are to be performed

More information

Sveučilište Jurja Dobrile u Puli Fakultet za ekonomiju i turizam "Dr. Mijo Mirković" Marino Pereša. JavaScript. Završni rad. Pula, 2015.

Sveučilište Jurja Dobrile u Puli Fakultet za ekonomiju i turizam Dr. Mijo Mirković Marino Pereša. JavaScript. Završni rad. Pula, 2015. Sveučilište Jurja Dobrile u Puli Fakultet za ekonomiju i turizam "Dr. Mijo Mirković" Marino Pereša JavaScript Završni rad Pula, 2015. Sveučilište Jurja Dobrile u Puli Fakultet za ekonomiju i turizam "Dr.

More information

A shell can be used in one of two ways:

A shell can be used in one of two ways: Shell Scripting 1 A shell can be used in one of two ways: A command interpreter, used interactively A programming language, to write shell scripts (your own custom commands) 2 If we have a set of commands

More information

VHDLPrimeri Poglavlje5.doc

VHDLPrimeri Poglavlje5.doc 5. VHDL opis kola koja obavljaju osnovne aritmetičke funkcije Sabirači Jednobitni potpuni sabirač definisan je tablicom istinitosti iz Tabele 5.1. Tabela 5.1. cin a b sum cout 0 0 0 0 0 0 0 1 1 0 0 1 0

More information

Case Study Hrvatska pošta: Korisničko iskustvo iz snova. Tomislav Turk Samostalni sistem inženjer, Combis d.o.o. Zagreb,

Case Study Hrvatska pošta: Korisničko iskustvo iz snova. Tomislav Turk Samostalni sistem inženjer, Combis d.o.o. Zagreb, Case Study Hrvatska pošta: Korisničko iskustvo iz snova Tomislav Turk Samostalni sistem inženjer, Combis d.o.o. Zagreb, 27.12.2018. Sadržaj Hrvatska pošta prije projekta Izazovi projekta Tehnologije korištene

More information

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

dr. sc.. Josip Musić Originalne slideove izradio: Uvod u programiranje Programiranje 1 (550) Poglavlje 3 Strukture odluka i ponavljanja dr. sc.. Josip Musić jmusic@fesb.hr 1 Originalne slideove izradio: Teo Žuljević, dipl.. ing. teo.zuljevic@fesb.hr Pregled

More information