Funkcionalna specifikacija

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

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET

Programiranje III razred

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

PREDMET. Osnove Java Programiranja. Čas JAVADOC

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

Uputstvo za korišćenje logrotate funkcije

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

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

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

Vežbe - XII nedelja PHP Doc

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

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

NIZOVI.

Izrada VI laboratorijske vježbe

PROGRAMIRANJE. Amir Hajdar

PRINCIPI SOFTVERSKOG INŽENJERSTVA TIM NAZIV_TIMA

VHDLPrimeri Poglavlje5.doc

Uputstvo za podešavanje mail klijenta

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

Programske paradigme Funkcionalna paradigma

Jezik Baze Podataka SQL. Jennifer Widom

.html. HTML stranice imaju ekstenziju.html ili.htm, a nalaze se u određenom direktorijumu servera vezanog na Internet, što ih čini dostupnim na web-u.

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

Dežurni nastavnik: Kolokvijum traje 1.5 sat, prvih sat vremena nije dozvoljeno napuštanje kolokvijuma. Upotreba literature nije dozvoljena.

VRIJEDNOSTI ATRIBUTA

JavaScript i HTML DOM

Programiranje Internet aplikacija (IR4PIA)

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

Uvod u relacione baze podataka

VB komande. Programiranje 1

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

12. Uskladištene procedure (Stored Procedures)

UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a

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

Programiranje III razred

PITANJA ZA II KOLOKVIJUM KLASE I OBJEKTI

Računarske osnove Interneta (SI3ROI, IR4ROI)

Modbus TCP i dva PLC S7 1200

VHDLPrimeri Poglavlje3.doc. end process seq; Slika 3.1: Anatomija osnovne definicije test bench-a

x y = z Zadaci - procedure

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

Prva recenica. Druga recenica.

Programiranje Internet aplikacija

OBJEKTNO ORIJENTISANO PROGRAMIRANJE

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

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

Sberbank Business Online na Mozilla FireFox

HTML & CSS PRAKTIKUM PRIMENA TCP/IP TEHNOLOGIJA U NAMENSKIM SISTEMIMA MARIJA JANKOVIĆ

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

Informacioni sistemi i baze podataka

Programiranje Internet aplikacija

Algoritmi i strukture podataka 2. Čas, Uvod u C++

APLIKATIVNI SOFTVER Front End: HTML, CSS, JavaScript

KLASIFIKACIJA JELENA JOVANOVIĆ. Web:

Vidljivost TipPovratneVrednosti ImeFunkcije (NizParametara) { TeloFunkcije }

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

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.

VDSL modem Zyxel VMG1312-B10A/B30A

Ovde će se raditi na funkcijama konverzija: konverzija tipa datuma u znak tip i obrnuto, konverzija broja u karakter tip i obrnuto

HTML, CSS i JavaScript

Operativni sistemi 2

Programski jezik JAVA PREDAVANJE

Ispit iz Programiranja 1

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

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

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

Java Server Pages. 31-Dec-12

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

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

2. Linijska algoritamska struktura

Osnovne strukture podataka

Internet programiranje

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

f2() f6() main() f3() f7() f4()

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

PARALELNO PROGRAMIRANJE

operativni sistem part 2

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.

Internet programiranje JavaScript - školska 2017/2018

Treći kolokvijum iz Operativnih sistema 1. Kandidat: Elektrotehnički fakultet u Beogradu Katedra za računarsku tehniku i informatiku

Dežurni nastavnik: Ispit traje 3 sata, prvih sat vremena nije dozvoljeno napuštanje ispita. Upotreba literature nije dozvoljena.

24/03/2018. Deklaracija promenljivih. Inicijalizacija promenljivih. Deklaracija i inicijalizacija promenljivih

Praktikum iz Operativnih sistema - rešenja za godinu -

Numeričke metode i praktikum

Internet pretraživač

Java. Ugnježdeni tipovi IMI PMF KG OOP 09 AKM. najveći deo teksta je preuzet sa slajdova Prof. Dragana Milićeva (ETF Bg) namenjenih pedmetu OOP2

I PISMENI ZADATAK III6 I GRUPA IME I PREZIME

TEHNIKA I INFORMATIKA U OBRAZOVANJU

Aktuelna verzija Matlaba je 7, koja ima dosta poboljšanja u odnosu na prethodne.

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

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;

Cascading Style Sheets (CSS)

public static void main(string []args) { System.out.println("Hello World"); /* prints Hello World */

Programski jezici. leto

Z1. Dati RDF graf predstavljen u JSON-LD sintaksi potrebno je grafički predstaviti u skladu sa RDF notacijom. (5 poena)

Variable Neighborhood Descent - VND (Metoda promenljivog spusta)

Objektno orijentisano programiranje

Kodiranje GUI aplikacija u Visual C#

Marko Milošević.

Transcription:

OOP (OE, OF, OS, OT) DZ2 Rok za predaju rešenja: 11.12.2012. OBJEKTNO ORIJENTISANO PROGRAMIRANJE - domaći zadatak broj 2 - Funkcionalna specifikacija Postojeće klase koncepata iz prvog domaćeg zadatka potrebno je dopuniti operatorskim funkcijama na način koji je opisan u nastavku teksta. Postojeće funkcionalnosti klasa treba isključivo pozivati u izrazima sa preklopljenim operatorima (na primer, umesto poziva metoda prilikom čitanja zaglavlja i pravljenja objektne strukture, potrebno je koristiti odgovarajuće operatore). Na jeziku C++ nadograditi postojeći program za automatsku verifikaciju ispravnosti komentara u C/C++ zaglavljima, tako da se od njih generiše HTML tehnička dokumentacija. Program se pokreće kao konzolna aplikacija, bez grafičkog korisničkog interfejsa. Za ispis aktivnosti koristiti fajl zapisnika (log fajl). Na kraju potrebno je ispisati izmereno vreme izvršavanja programa. Glavni program kao prvi ulazni argument dobija putanju do tekstualnog fajla, koji u svakom redu sadrži po jednu putanju do fajla zaglavlja (.h) koji treba obraditi, a kao drugi argument dobija putanju do direktorijuma u koji treba da sačuva rezultat obrade. Program učitava i proverava fajlove zaglavlja na identičan način kao u prvom domaćem zadatku. Dodatno, nakon provere zaglavlja generiše se tehnička HTML dokumentacija. Za svaki.h fajl generiše se istoimeni.html fajl koji sadrži podatke o svim ispravnim deklaracijama. Na kraju se generiše i jedan sumarni index.html fajl koji sadrži listu hiperlinkova ka pojedinačnim.html fajlovima. Program čita/obrađuje jedan po jedan.h fajl na sledeći način: učitaju se deklaracije sa komentarima iz fajla zaglavlja (kao kolekcija objekata!), objekti se predaju komponenti checker, koja vrši proveru učitanih objekata: o ako se naiđe na nekompletne komentare deklaracija, odnosno one kod kojih nisu svi delove deklaracije adekvatno pokriveni sekcijama komentara, u log fajl se u jednom redu ispiše poruka koja ima sledeći format: WARNING at line <broj linije teksta> - <deklaracija funkcije> o takve deklaracije se označe kao nekompletne. Provereni objekti deklaracija se zatim ispisuju u HTML fajl. Nekompletne deklaracije se ispisuju crvenim slovima. Ukoliko program u toku obrade ne može da otvori neki.h fajl treba da prijavi grešku i da nastavi izvršavanje. U nastavku teksta zadatka dat je opis semantike operatora za korisničke tipove tehnički zahtevi i napomene za izradu rešenja. U prilogu je navedeni primeri ulaznih i izlaznih fajlova. Preklapanje operatora Preklapanjem operatora += omogućiti: dodavanje objekta klase Param objektu klase Declaration dodavanje objekta klase Declaration objektu klase Header dodavanje objekta klase ParamDescription objektu klase Comment Preklapanjem operatora = omogućiti dodelu vrednosti za instance klasa: Header, Declaration, Param, Comment, ParamDescription Preklapanjem operatora == i!= omogućiti poređenje po jednakosti: poređenje objekata klase Param (imaju isto ime i tip), poređenje objekata klase Declaration (funkcija ima isto ime i svi parametri su im jednaki i u istom redosledu), poređenje objekata klase Header (sadrže isti broj funkcija i za svaku funkciju iz jednog fajla postoji tačno jedna funkcija koja je sa njom jednaka). 1

Preklapanjem unarnog operatora! omogućiti sledeću proveru: za objekat klase Header vraća true, ako ne sadrži nijednu deklaraciju za objekat klase Declaration vraća true, ako nema nijedan parametar Preklapanjem operatora () omogućiti: za objekat klase Header vraća broj deklaracija za objekat klase Declaration vraća broj formalnih parametara Preklapanjem binarnog operatora + omogućiti: uniju dva objekta klase Header. Rezultat je novi objekat iste klase, koji sadrži uniju (kopija) deklaracija iz prva dva. Operator ne menja stanje svojim operandima. Preklapanjem operatora -- omogućiti eliminisanje duplikata deklaracija funkcija u objektu klase Header (primer: aheader--;). prefiksna varijanta operatora menja stanje operanda i rezultat je sam objekat operand. postfiksna varijanta operatora menja stanje operanda, a vraća kopiju operanda sa stanjem neposredno pre sažimanja duplikata funkcija. Preklapanjem operatora % omogućiti: proveru da li objekat klase Header sadrži zadati objekat klase Declaration (poređenjem po jednakosti). Rezultat je logičkog tipa. primer: aheader % adeclaration proveru da li objekat klase Declaration sadrži parametar koji je identičan zadatom objektu klase Param. Rezultat je logičkog tipa Preklapanjem binarnog operatora - omogućiti: nalaženje razlike dva objekta klase Header. Rezultat je novi objekat klase Header koji sadrži samo one objekte (kopije) klase Declaration koji postoje u prvom i ne postoje u drugom zaglavlju. Operator ne menja stanje svojim operandima. Preklapanjem operatora za indeksiranje [] omogućiti: dohvatanje deklaracije funkcije (Declaration) iz zaglavlja (objekat klase Header) na osnovu imena. Ukoliko se ne pronađe deklaracija funkcije sa zadatim imenom, vraća se null vrednost. Preklapanjem operatora za ispis << omogućiti ispis stanja objekata u HTML formatu za sledeće klase: Header, Declaration, Param, Comment, ParamDescription ispis treba uraditi preme šablonu i primerima iz priloga uz datu postavku zadatka, obezbediti ulančavanje poziva operatora, ispis složenih objekata treba svesti na ispise jednostavnijih objekata koje sadrže. Na primer, ispis objekta klase Header treba da se osloni na ispis deklaracija funkcija i td. 2

Tehnički zahtevi i smernice za izradu rešenja Opisane koncepte implementirati u vidu odgovarajućih klasa. Ukoliko je potrebno pristupati poljima klase zaštićenim od direktnog pristupa, to se radi isključivo pomoću odgovarajućih metoda za čitanje i pisanje vrednosti polja. Za smešanje tekstualnih vrednosti upotrebiti tačno onoliko mesta u memoriji koliko je neophodno. Svaka klasa koja koristi dinamičku memoriju mora imati korektno napisan destruktor, konstruktor kopije i preklopljen operator za dodelu vrednosti. Glavni program treba da poziva metode/operacije koje obavljaju opisane radnje. Sve metode smestiti u odgovarajuće klase. Programski kod klasa rasporediti u istoimene.h i.cpp fajlove. Nije dozvoljeno korišćenje globalnih promenljivih za razmenu podataka. Sva razmena podataka između funkcija mora ići preko povratne vrednosti i/ili liste argumenata. U slučaju bilo kakve greške (poziv programa sa neodgovarajućim brojem argumenata komandne linije, neuspešna dodela dinamičke memorije, greška pri radu sa datotekom ili bilo koja druga greška koja se može pojaviti u toku izvršavanja programa), ispisati odgovarajuću poruku i prekinuti izvršavanje. Sve poruke o grešci treba da budu u posebnoj tekstualnoj datoteci. Za svaku grešku je namenjen tačno jedan red teksta proizvoljne dužine. Na početku reda se nalazi celi broj sa rednim brojem greške, nakon koga sledi tačno jedan beli znak, posle koga je sve do kraja reda tekst poruke o grešci koji može sadržati proizvoljno mnogo belih znakova. Napraviti klasu koja će sadržati podatke o svim parovima redni broj-tekst greške. Pri ispisu greške, ispisati samo tekst poruke u log fajl. Osim poruke da je nemoguće pronaći fajl sa porukama, sve ostale poruke ne smeju biti u tekstu programa, već u fajlu sa porukama. Napomena: nije dozvoljeno praviti listu sa smeštanje poruka. Napomene: 1. Ukoliko u zadatku nešto nije dovoljno jasno definisano, treba usvojiti razumnu pretpostavku i na temeljima te pretpostavke nastaviti izgrađivanje svog rešenja. 2. Za uspešno odbranjen domaći zadatak potrebno je na odbrani pokazati kod podeljen na odgovarajuće projekte,.h i.cpp fajlove: klase koje definišu strukturu, ponašanje i obradu deklaracija funkcija i komentara treba smestiti u poseban projekat rešenja koji se prevodi kao statička biblioteka (concepts.lib), klase za obradu i manipulisanje porukama grešaka takođe treba smestiti u poseban projekat rešenja koji se prevodi kao druga statička biblioteka (errors.lib), glavni program napisati u posebnom projektu koji se prevodi kao Win32 Console Application (commentchecker.exe) fajl i koji treba povezati sa statičkim bibliotekama. NIJE DOZVOLJENO SMESTITI CEO KOD U JEDAN PROJEKAT ILI CPP fajl! 26.11.2012. godine sa predmeta 3

Format i struktura HTML fajla PRILOG HTML je deklarativni jezik osmišljen za pravljenje veb stranica koje se mogu pregledati pomocu internet pretraživaca. Svaka veb stranica mora imati tacno definisanu strukturu, kako bi internet pretraživac mogao da je procita i korektno prikaže sadržaj korisniku. Sastoji se od odgovarajucih elemenata ome9enih tagovima. Tagovi se pišu u uglastim zagradama (npr. <ime-taga>). Svaki element ima svoj pocetni i završni tag i sadržaj unutar njih. Pocetni i završni tag imaju isto ime, s tim sto ime se zagrade razlikuju u jednom detalju završni tag ima dodatni / znak (npr. <body> </body>). HTML jezik ima veliki broj tagova, međutim za potrebe izrade rešenja za domaci zadatak koristice se samo najuži skup najcešce korišcenih tagova koji su dovoljni za navedene potrebe. Elementi HTML stranice se hijerarhijski ugneždavaju i pocetni i završni tag svakog elementa morajubiti upareni. HTML stranica ili dokument sadrži jedan element na najvišem nivou hijerarhije i on je oznacen tagom HTML (mogu se pisati ili mala ili velika slova za tagove, ali je dobro ne mešati ih). HTML element se sastoji od dva glavna elementa stranice: zaglavlja (HEAD) i tela (BODY) <HTML> <HEAD> </HEAD> <BODY> </BODY> </HTML> Unutar taga HEAD najcešce se navodi naslov stranice koji se ispisuje na jezicku taba internet pretraživaca. Naslov stranice se piše unutar taga TITLE koji se piše unutar taga HEAD. Unutar taga BODY navode se elementi u okviru kojih se piše sadržaj koji ce se prikazivati na veb stranici. Ukoliko se na veb stranici prikazuje tekst, onda se tekst obicno stavlja unutar tagova <P> I </P> koji oznacavaju paragraf teksta. Ukoliko se želi dodati novi paragraf, samo se doda još jedan element omeđen <P> i </P> tagovima. Ukoliko se na stranici prikazuje tabela, koristi se tag TABLE. Tabela se sastoji od redova. Redovi se nalaze unutar tela tabele koje se definiše unutar taga TBODY. Svaki red se definiše unutar taga TR unutar tela. Jedan red tabele se sastoji od celija. Svaka celija se definiše unutar taga TD. Svaki tag HTML dokumenta može imati i attribute koji definišu pozicioniranje i stil prikaza na ekranu. Tako i tag TR me9u brojnim atributima ima i atribut colspan. Taj atribut se koristi u slucajevima kada jedan red treba da odstupi od šablona ostalih redova i da sadrži samo jednu celiju. Tada se za ovaj atribut navede vrednost broja celija koje jedna velika celija treba da obuhvati (videti primer). Pretraživac podrazumevano prikazuje elemente na beloj površini. Ukoliko je potrebno promeniti boju pozadine nekog elementa, za to se koristi atribut bgcolor. U datom primeru, može se primetiti tag TR koji ima definisanu boju (u RGB format) za red tabele. Ukoliko je potrebno manipulisati formatiranjem teksta i definisanjem fontova, za to se koristi tag FONT sa pratecim atributima. U datom primeru korišcen je atribut size. Ukoliko je potrebno deo teksta prikazati podebljano, koristit se tag <b> </b>. HTML je tekstualni format koji koristi znakove za opis izgleda stranice, tako da određeni znakovi imaju specijalno znacenje. Na primer, znak > ili < se koriste za pisanje tagova. Ako potrebno u tekstu koristit ove znakove za prikaz, na primer, matematickih izraza, koriste se specijalni kodovi. Znak vece (<), znak manje (&rt;), razmak ( ) i td. Ukoliko je na stranici potrebno prikazaci fragmente programa sa pratecim formatiranjem, koristi se tag <CODE> </CODE>. Kada je potrebno tekst hijerarhijski uvlaciti koristi se tag <DL> </DL> (engl: definition list). Lista definicija se sastoji od parova termin-opis termina. U ovom kontekstu se koristi za prikazivanje listi parametara i opis povratnih vrednosti. Termin se navodi unutar taga <DT> </DT>, a opis termina unutar taga <DD> </DD>. Kraj reda teksta se ostvaruje tagom <BR/> 4

Primer ulaznog fajla glavnog programa C:\files\dz1\headers\header1.h C:\files\dz1\headers\header2.h... Primer ulaznog fajla zaglavlja sa komentarima (header1.h, ignorisati brojeve linija): 1 #include "SomeOtherHeader.h" 2 3 /** 4 * @brief Adds a number to the collection. 5 * @param col Collection containing numbers 6 * @param number A number to be added to the collection 7 */ 8 void add(collecton col, int number); 9 10 /** 11 * @brief Removes the number from the collection col. 12 * @param col Collection containing numbers 13 * @returns Size of the collection after removing the number. 14 */ 15 int remove(collection col, int number); 5

Primer izlaza programa (HTML stranica). <html> <head><title>header1.h</title></head> <body bgcolor="white"> <h2><center>content of header file <code>header1.h</code></center></h2> <table border="1" cellpadding="3" cellspacing="0" width="100%"> <tbody> <tr bgcolor="#ccccff"> <td colspan="2"><font size="+2"><b>function Summary</b></font></td> </tr> <tr bgcolor="white"> <td align="right" valign="top" width="1%"> <font size="-1"><code>void</code></font> </td> <td> <code> <b><a href="primer.html#add(int)">add</a></b> (Collection& col, int number) </code><br> Adds the number to the collection. </td> </tr> <tr bgcolor="white"> <td align="right" valign="top" width="1%"> <font size="-1"><code>int</code></font> </td> <td> <code> <b><a href="primer.html#remove(int)">remove</a></b> (Collection& col, int number) </code><br> Removes the number from the collection </td> </tr> </tbody> </table> <hr> <a name="add(int)"/> <h3>add</h3> <code>void <b>add</b>(collection& col, int number)</code> <dl> <dd>adds a number to the collection.</dd> <dd> <dl> <dt><b>parameters:</b></dt> <dd><code>col</code> - collection containing numbers</dd> <dd><code>number</code> - a number to be added to the collection</dd> </dl> </dd> </dl> <hr> <a name="remove(int)"/> <h3>remove</h3> <code>int <b>remove</b>(collection& col, int number)</code> <dl> <dd>removes the number from the collection.</dd> <dd> <dl> <dt><b>parameters:</b></dt> <dd><code>col</code> - collection containing numbers</dd> <dd><code>number</code> - a number that is to be removed</dd> <dt><b>returns:</b></dt> <dd>size of the collection after removing the number.</dd> </dl> </dd> </dl> <hr> </body> </html> 6

Kad se otvori ova stranica u internet pretraživaču, izgleda kao na sledećoj slici. 7

Sumarna HTML stranica <html> <head> <title>solution #123 documentation</title> </head> <body bgcolor="white"> <h2><center>solution documentation: <code>solution #123</code></center></h2> <p> The solution documentation consists of the following documentation files: <p> <ul> <li><a href="header1.html"><code>header1.h</code></a> <li><a href="header2.html"><code>header2.h</code></a> <li><a href="header3.html"><code>header3.h</code></a> </ul> </body> </html> Tagom <a>... </a> definiše se link na drugoj HTML stranici. Ukoliko se klikne na takav link, pretraživač otvara HTML stranicu čija je adresa navedena pomoću atributa href datog taga. Prikaz sumarne stranice: 8

Funkcije programskog jezika C/C++ za rad sa vremenom Operativni sistem vodi evidenciju o utrošenom procesorskom vremenu za svaki od trenutno aktivnih procesa. U programskom jeziku C/C++, ovo vreme se može dobiti pozivom funkcije clock() i izraženo je u otkucajima sistemskog časovnika (engl. clock ticks). Svaka implementacija jezika C/C++ podrazumeva sopstvenu vrednost simboličke konstante CLOKS_PER_SEC (u ranijim verzijama standarda CLK_TCK), koja predstavlja broj otkucaja sistemskog časovnika u toku jedne sekunde. Sa druge strane, u svakom trenutku je moguće od operativnog sistema dobiti informaciju o vremenu u sistemskom časovniku, kako i o datumu i vremenskoj zoni gde se dati računar nalazi. Jednom kada tačno vreme bude očitano, ne postoji nikakava prepreka da se ono pretvori u odgovarajuću strukturu, odnosno prikaže na željeni način preko proizvoljnog znakovnog niza. Priloženi programski segment ilustruje prikaz tačnog vremena bez prikaza datuma: #include <ctime>... time_t pinttime = time(null); struct tm* currentlocaltime = localtime(&pinttime); char* datetimestring = calloc(100+1, sizeof(char)); /* if time setting and memory allocation was succesfull, create complete message */ if (currentlocaltime && datetimestring) /* format the time as needed */ strftime(datetimestring, 100, "%H:%M:%S", currentlocaltime); Dodatne informacije o ovde navedenim funkcijama (i svim ostalim koje se nalaze u zaglavlju time.h, odnosno ctime) su dostupne u zbirci prof. Krausa i na raznim dokumentacionim stranicama (kako onima koje dolaze uz razvojno okruženje, tako onima dostupnim na Internetu). 9