Programski jeziki in notacija (20 %) (doc. Zoran Bosnić)
Pregled poskusa 1
Začeto dne | ponedeljek, 1. november 2010, 20:21 |
---|---|
Dokončano dne | ponedeljek, 1. november 2010, 20:42 |
Porabljeni čas | 21 min 30 s |
Točke | 17/20 |
Ocena | 8.5 od možne ocene 10 (85%) |
V programskem jeziku Java obstaja posebna vrsta razreda (angl. class), čigar primerka (angl. instance) nei možno narediti. Ta razred običajno vsebuje le deklaracije metod, od katerih so lahko nekatere implementirane, druge pa ne (njihova deklaracija torej le zahteva njihovo nadaljnjo implementacijo). Običajno je namenjen temu, da te metode implementiramo v razredih, ki od njega dedujejo.
# | Dejanje | Odgovor | Čas | Čisto število točk | Ocena |
---|---|---|---|---|---|
1 | Ocena | abstraktni razred (angl. abstract class) | 20:22:08 dne 1/11/10 | 1 | 1 |
2 | Zapri in oceni | abstraktni razred (angl. abstract class) | 20:42:51 dne 1/11/10 | 1 | 1 |
# | Dejanje | Odgovor | Čas | Čisto število točk | Ocena |
---|---|---|---|---|---|
1 | Ocena | množenja z 2 | 20:22:22 dne 1/11/10 | 1 | 1 |
2 | Zapri in oceni | množenja z 2 | 20:42:51 dne 1/11/10 | 1 | 1 |
Denimo, da so v programskem jeziku Java podani razredi Animal, Dog in Cow ter da zadnja dva dedujeta od razreda Animal. Torej:
public class Animal { /* vsebina */ }
public class Dog extends Animal { /* vsebina */ }
public class Cow extends Animal { /* vsebina */ }
Denimo, da imamo na razpolago tri spremenljivke in tri primerke gornjih razredov:
Animal animal1;
Animal animal2 = new Animal();
Dog dog1;
Dog dog2 = new Dog();
Cow cow1;
Cow cow2 = new Cow();
Kateri od naslednjih primerov prirejanj nujno potrebujejo uporabo eksplicitne pretvorbe podatkovnih tipov (casting)? Predpostavi, da so podani primeri prirejanj med seboj neodvisni (pri vsakem je začetno stanje enako).
1.) animal1 = dog2;
2.) dog1 = animal2;
3.) (zaporedje prirejanj) animal1 = dog2; dog1 = animal1;
4.) cow1 = dog2;
# | Dejanje | Odgovor | Čas | Čisto število točk | Ocena |
---|---|---|---|---|---|
1 | Ocena | 1, 2 in 4 | 20:29:13 dne 1/11/10 | 0 | 0 |
2 | Zapri in oceni | 1, 2 in 4 | 20:42:51 dne 1/11/10 | 0 | 0 |
# | Dejanje | Odgovor | Čas | Čisto število točk | Ocena |
---|---|---|---|---|---|
1 | Ocena | Prolog | 20:31:09 dne 1/11/10 | 1 | 1 |
2 | Zapri in oceni | Prolog | 20:42:51 dne 1/11/10 | 1 | 1 |
# | Dejanje | Odgovor | Čas | Čisto število točk | Ocena |
---|---|---|---|---|---|
1 | Ocena | napako med izvajanjem (run-time error) | 20:31:19 dne 1/11/10 | 1 | 1 |
2 | Zapri in oceni | napako med izvajanjem (run-time error) | 20:42:51 dne 1/11/10 | 1 | 1 |
# | Dejanje | Odgovor | Čas | Čisto število točk | Ocena |
---|---|---|---|---|---|
1 | Ocena | z velikostjo sklada (stack) | 20:31:54 dne 1/11/10 | 1 | 1 |
2 | Zapri in oceni | z velikostjo sklada (stack) | 20:42:51 dne 1/11/10 | 1 | 1 |
Podano je polje (tabela, array) x sode dolžine in dve različici zanke, ki opravita enako inicializacijo polja, t. j. nastavita vrednost vseh elementov na 0:
1.) Prva različica
for(int i=0; i< x.length; i++) {
x[i] = 0;
}
2.) Druga različica
for(int i=0; i< x.length; i += 2) {
x[i] = 0;
x[i+1] = 0;
}
Katera od izjav glede optimalnosti različic (v smislu krajšega prevoda v zaporedje strojnih ukazov in s tem porabljenega časa) je smiselna?
# | Dejanje | Odgovor | Čas | Čisto število točk | Ocena |
---|---|---|---|---|---|
1 | Ocena | hitrejša je različica 2, ker porabi manj iteracij za upravljanje s števcem in pogoji zanke | 20:32:49 dne 1/11/10 | 1 | 1 |
2 | Zapri in oceni | hitrejša je različica 2, ker porabi manj iteracij za upravljanje s števcem in pogoji zanke | 20:42:51 dne 1/11/10 | 1 | 1 |
Katera od naslednjih lastnosti je značilna za interpreter?
# | Dejanje | Odgovor | Čas | Čisto število točk | Ocena |
---|---|---|---|---|---|
1 | Ocena | pred izvajanjem se program analizira in predprocesira | 20:34:35 dne 1/11/10 | 0 | 0 |
2 | Zapri in oceni | pred izvajanjem se program analizira in predprocesira | 20:42:51 dne 1/11/10 | 0 | 0 |
# | Dejanje | Odgovor | Čas | Čisto število točk | Ocena |
---|---|---|---|---|---|
1 | Ocena | močno (strogo) tipiziran | 20:36:26 dne 1/11/10 | 0 | 0 |
2 | Zapri in oceni | močno (strogo) tipiziran | 20:42:51 dne 1/11/10 | 0 | 0 |
Pri katerih izmed naslednjih opravil nam lahko pomaga razhroščevalnik (angl. debugger)?
1.) pregledovanje vrednosti lokalnih spremenljivk,
2.) zaustavitev izvajanja programa na želenem mestu,
3.) iskanje semantičnih napak,
4.) izvedba časovnih meritev izvajanja programa,
5.) izklop vhodno/izhodnih operacij,
6.) iskanje sintaktičnih napak
# | Dejanje | Odgovor | Čas | Čisto število točk | Ocena |
---|---|---|---|---|---|
1 | Ocena | 1, 2 in 3 | 20:37:11 dne 1/11/10 | 1 | 1 |
2 | Zapri in oceni | 1, 2 in 3 | 20:42:51 dne 1/11/10 | 1 | 1 |
Kadar želimo v programskem jeziku C++ dostopiti do naslova nekega objekta in ne do njegove vrednosti, uporabimo operator
# | Dejanje | Odgovor | Čas | Čisto število točk | Ocena |
---|---|---|---|---|---|
1 | Ocena | & | 20:37:22 dne 1/11/10 | 1 | 1 |
2 | Zapri in oceni | & | 20:42:51 dne 1/11/10 | 1 | 1 |
Denimo, da imamo v Javi podana dva razreda (angl. class) z imenom Base1 in Base2 ter dva vmesnika (angl. interface) z imenom Line1 in Line2. Kateri od naslednjih vzorcev predstavljajo pravilno deklaracijo novega razreda, ki pravilno deduje oziroma uporablja kombinacijo navedenih razredov in vmesnikov?
1.) class Dete extends Base1, Base2 overrides Line1 {...}
2.) class Dete extends Base2 implements Line1, Line2 {...}
3.) class Dete extends Base1, Base2, Line1, Line {...}
4.) class Dete implements Line1, Line2 {...}
5.) class Dete extends Base1, Base2 {...}
6.) class Dete implements Base1, Base2 {...}
# | Dejanje | Odgovor | Čas | Čisto število točk | Ocena |
---|---|---|---|---|---|
1 | Ocena | 2 in 4 | 20:38:08 dne 1/11/10 | 1 | 1 |
2 | Zapri in oceni | 2 in 4 | 20:42:51 dne 1/11/10 | 1 | 1 |
V Javi je podana naslednja definicija razreda:
public class NamedPoint extends Point {
private String myName;
public NamedPoint(int d1, int d2, String name) {
super(d1, d2);
myName = name;
}
}
Stavek super(d1, d2) pomeni
# | Dejanje | Odgovor | Čas | Čisto število točk | Ocena |
---|---|---|---|---|---|
1 | Ocena | klic konstruktorja nadrejenega razreda Point s parametroma d1 in d2 | 20:38:39 dne 1/11/10 | 1 | 1 |
2 | Zapri in oceni | klic konstruktorja nadrejenega razreda Point s parametroma d1 in d2 | 20:42:51 dne 1/11/10 | 1 | 1 |
# | Dejanje | Odgovor | Čas | Čisto število točk | Ocena |
---|---|---|---|---|---|
1 | Ocena | interpretiranje programov je časovno manj učinkovito kot uporaba prevedenega programa | 20:39:49 dne 1/11/10 | 1 | 1 |
2 | Zapri in oceni | interpretiranje programov je časovno manj učinkovito kot uporaba prevedenega programa | 20:42:51 dne 1/11/10 | 1 | 1 |
Rekurzivne funkcije so napisane tako, da pri svojem izvajanju ponovno kličejo same sebe. Katera od naslednjih trditev drži?
# | Dejanje | Odgovor | Čas | Čisto število točk | Ocena |
---|---|---|---|---|---|
1 | Ocena | vsak rekurziven program lahko spremenimo v iterativnega | 20:40:05 dne 1/11/10 | 1 | 1 |
2 | Zapri in oceni | vsak rekurziven program lahko spremenimo v iterativnega | 20:42:51 dne 1/11/10 | 1 | 1 |
1.) BNF gramatikami
2.) kontekstno-neodvisnimi gramatikami
3.) sintaksnimi grafi
4.) regularnimi izrazi
# | Dejanje | Odgovor | Čas | Čisto število točk | Ocena |
---|---|---|---|---|---|
1 | Ocena | odkrivanje sintaktičnih napak pri prevajanju | 20:41:22 dne 1/11/10 | 1 | 1 |
2 | Zapri in oceni | odkrivanje sintaktičnih napak pri prevajanju | 20:42:51 dne 1/11/10 | 1 | 1 |
V Programskem jeziku Java je podan spodnji program, ki pa ne deluje zaradi napake v programu.
public class Izpis {
public static void main(String[] args) {
double stevilo;
stevilo = nakljucno();
System.out.println("Nakljucno stevilo od 1 do 100 je: " + stevilo);
}
private final double nakljucno() {
return (Math.random()*100)+1;
}
}
# | Dejanje | Odgovor | Čas | Čisto število točk | Ocena |
---|---|---|---|---|---|
1 | Ocena | metoda nakljucno() ni dostopna, ker ni klicana na primerku razreda Izpis | 20:42:15 dne 1/11/10 | 1 | 1 |
2 | Zapri in oceni | metoda nakljucno() ni dostopna, ker ni klicana na primerku razreda Izpis | 20:42:51 dne 1/11/10 | 1 | 1 |
Katere od naslednjih trditev veljajo za programski jezik C++?
I) je dinamično tipiziran programski jezik
II) je šibko tipiziran programski jezik