ОО2/Јун 2021 — разлика између измена
м (→7. zadatak: Označeno objašnjenje kao objašnjenje) |
|||
(Нису приказане 3 међуизмене 2 корисника) | |||
Ред 126: | Ред 126: | ||
# Programski kod se uspešno prevodi, ali se prilikom izvršavanja emituje izuzetak ''InterruptedException''. | # Programski kod se uspešno prevodi, ali se prilikom izvršavanja emituje izuzetak ''InterruptedException''. | ||
</div> | </div> | ||
Objašnjenje: <span class="spoiler">Metodi klase <code>Brojac</code> nisu sinhronizovani, tako da je tehnički moguće da <code>br++</code> zapravo prvo dohvati vrednost <code>br</code>, onda bude prekinuta od strane neke druge niti, pa pri povratku uveća pročitanu vrednost za 1 i upiše u <code>br</code>, time gazeći vrednost koje su prethodne niti posle prekida upisale.</span> | Objašnjenje: <span class="spoiler" data-solution="explanation">Metodi klase <code>Brojac</code> nisu sinhronizovani, tako da je tehnički moguće da <code>br++</code> zapravo prvo dohvati vrednost <code>br</code>, onda bude prekinuta od strane neke druge niti, pa pri povratku uveća pročitanu vrednost za 1 i upiše u <code>br</code>, time gazeći vrednost koje su prethodne niti posle prekida upisale.</span> | ||
=== 8. zadatak === | === 8. zadatak === | ||
Ред 207: | Ред 207: | ||
# <span class="solution">Naredba <code>package imePaketa</code> mora biti prva naredba u fajlu.</span> | # <span class="solution">Naredba <code>package imePaketa</code> mora biti prva naredba u fajlu.</span> | ||
# Jedan fajl može biti sadržan u više paketa. | # Jedan fajl može biti sadržan u više paketa. | ||
</div> | </div> | ||
Objašnjenje: <span class="spoiler" data-solution="explanation">Odgovor pod b je inicijalno označen kao tačan, međutim, u slučaju podrazumevanog paketa ovo ne važi, tako da odgovor nije tačan.</span> | |||
=== 4. zadatak === | === 4. zadatak === |
Тренутна верзија на датум 5. јун 2023. у 20:47
- За питања са више одговора, тачни одговори су подебљани и уоквирени
- За питања за које се одговори уносе, тачни одговори су подвучени и сакривени, тако да се прикажу када изаберете тај текст (пример: овако)
- Притисните лево дугме испод за сакривање и откривање свих одговора, или десно дугме за укључивање и искључивање интерактивног режима:
G1/G2
1. zadatak
Koja od sledećih tvrđenja su tačna za programski jezik Java?
- Moguće je imenovati promenljive u izvornom kodu napisanom na jeziku Java koristeći srpsko ćirilično pismo.
- Veličina primitivnog podatka tipa
char
u programskom jeziku Java je tačno 8 bita. - Izvorni kod napisan na programskom jeziku Java koristeći ASCII način kodiranja translira se pre prevođenja koristeći UTF-16 način kodiranja.
- Java koristi UTF-16 način kodiranja za kodiranje znaka (
char
). - Java koristi isključivo ASCII način kodiranja za kodiranje znaka (
char
).
2. zadatak
Koja od sledećih tvrđenja su tačna za glavni metod (funkciju main
koja predstavlja ulaznu tačku programa) na programskom jeziku Java?
- Glavni metod mora biti javno dostupan.
- Glavni metod mora biti statički metod.
- Glavni metod može da ima proizvoljan broj parametara proizvoljnog tipa.
- Povratna vrednost glavnog metoda mora biti tipa
void
. - Svaka od više klasa koje obrazuju program može da definiše metod
main
, sa odgovarajućom deklaracijom glavnog metoda i različitim telom, od kojih svaki može da bude glavni metod u različitim pokretanjima programa.
3. zadatak
Koja od sledećih tvrđenja su tačna na programskom jeziku Java?
- Paketi rešavaju problem konflikta imena tipova.
- Paketi ostvaruju koncept prostora imena sličan konceptu
namespace
u jeziku C++. - Po konvenciji, imena paketa se pišu isključivo velikim slovima.
- Paket predstavlja skup logički povezanih tipova objekata (na primer, klasa, interfejsa).
- Paketi utiču na pravo pristupa sadržanim tipovima i članovima tipova.
4. zadatak
Šta ispisuje sledeći program na programskom jeziku Java? Upisati simbol x
ukoliko se program ne prevodi.
interface I {
static void m() {
System.out.print(1);
}
}
class B {
public static void m() {
System.out.print(2);
}
}
class D extends B implements I {
public D() {
m();
B.m();
}
}
public class Test {
public static void main(String args[]) {
new D();
}
}
Odgovor: 22
Objašnjenje: Poziv m()
poziva nasleđeni metod klase B
jer se statički metod interfejsa mora pozvati eksplicitno preko naziva interfejsa.
5. zadatak
Šta može da stoji umesto #### da bi se sledeći izvorni kod napisan na programskom jeziku Java uspešno preveo?
public class Test {
public static void main(String[] args) {
try {
####
} catch (Exception e) {}
}
}
throw 1;
throw new Throwable();
throw new Exception();
throw;
throw new Object();
Objašnjenje: Izuzetak koji se baca kroz throw
na programskom jeziku Java mora biti izveden iz Throwable
. Bacanje Throwable
se ovde neće prevesti jer metoda ne hvata niti deklariše u throws
klauzuli Throwable
.
6. zadatak
Koja od sledećih tvrđenja su tačna za programski jezik Java?
- Lokalnu klasu moguće je definisati unutar metoda klase.
- Lokalnu klasu moguće je definisati unutar konstruktora klase.
- Lokalnu klasu moguče je definisati unutar inicijalizacionog bloka klase.
- Lokalnu klasu moguće je definisati unutar definicije klase, van bilo kog bloka koda.
- Lokalnu klasu moguće je definisati unutar main funkcije.
7. zadatak
Dat je sledeći programski kod napisan na programskom jeziku Java.
class Brojac {
private int br = 0;
public void inkrement() { br++; }
public int dajBroj() { return br; }
}
public class Test {
public static void main(String args[]) throws InterruptedException {
Brojac brojac = new Brojac();
Thread[] niti = new Thread[10];
for (int i = 0; i < niti.length; i++) niti[i] = new Thread(() -> { brojac.inkrement(); });
for (int i = 0; i < niti.length; i++) niti[i].start();
for (int i = 0; i < niti.length; i++) niti[i].join();
System.out.print(brojac.dajBroj());
}
}
Koje od sledećih tvrdnji su tačne za prikazani kod?
(Izaberite jedan odgovor)
- Programski kod se uspešno prevodi i izvršava. Prilikom izvršavanja programa na standardnom izlazu uvek se ispisuje vrednost 10.
- Programski kod se uspešno prevodi i izvršava. Prilikom izvršavanja programa na standardnom izlazu može se, ali ne mora, ispisati vrednost 10.
- Programski kod se ne prevodi uspešno.
- Programski kod se uspešno prevodi i izvršava. Prilikom izvršavanja programa na standardnom izlazu uvek se ispisuje vrednost 0.
- Programski kod se uspešno prevodi, ali se prilikom izvršavanja emituje izuzetak InterruptedException.
Objašnjenje: Metodi klase Brojac
nisu sinhronizovani, tako da je tehnički moguće da br++
zapravo prvo dohvati vrednost br
, onda bude prekinuta od strane neke druge niti, pa pri povratku uveća pročitanu vrednost za 1 i upiše u br
, time gazeći vrednost koje su prethodne niti posle prekida upisale.
8. zadatak
Klasa Menu
izvedena je direktno iz klase:
MenuContainer
MenuComponent
MenuBar
Component
MenuItem
9. zadatak
Koja od sledećih tvrdnji je tačna?
(Izabrati više odgovora)
- Programi pisani za izvršenje na platformi .NET se prevode u međukod MSIL.
- Jedna od ciljnih karakteristika radnog okvira .NET je integracija sistema korišćenjem otvorenih standarda za razmenu podataka kakav je XML.
- Izvršni sklop (assembly) za .NET može biti u samo jednom ili više fajlova.
- Izvršno okruženje (CLR) radnog okvira .NET izvršava program iz fajla koji sadrži prevedeni C++ program na mašinski jezik računara domaćina.
- Jezik Java je standard međunarodne organizacije za standardizaciju ISO, za razliku od jezika C# koji nije standardizovan.
10. zadatak
Šta ispisuje sledeći program na jeziku C#?
class Program {
static void M1(ref int i) { System.Console.Write(i++ + " "); }
static void M2(ref int i) { System.Console.Write(i/2 + " "); }
static void M3(ref int i) { System.Console.Write(i-- + " "); }
public delegate void Delegat(ref int i);
public static void Main(string[] args) {
Delegat d1 = new Delegat(M1);
Delegat d2 = new Delegat(M2);
Delegat da = d1 + d2;
Delegat d = da + d1;
d += new Delegat(M3) + da;
d -= d1;
d -= d2;
d -= new Delegat(M3);
int i = 3;
d(ref i);
}
}
Odgovor: 3 2 4
Objašnjenje: U d
se pri stvaranju dodaju M1
i M2
(iz da
) pa ponovo M1
. Zatim se dodaju M3
i ponovo M1
i M2
(iz da
). Onda se uklanjaju M1
, M2
i M3
sa kraja liste poziva pa ostaju samo M1
, M2
i M1
u delegatu. Posle izvršavanja prvog M1
ispis je 3 a vrednost je 4, posle M2
ispis je 2 a vrednost ostaje ista, i posle drugog M1
ispis je 4 i vrednost je 3.
G3/G4
1. zadatak
Koje od sledećih tvrđenja je tačno na programskom jeziku Java?
- Veličina tipa
double
je zavisna od implementacije. - Veličina tipa
double
je uvek ista i iznosi 32 bita. - Veličina tipa
double
je uvek ista i iznosi 64 bita. - Veličina tipa
double
je uvek ista i iznosti 128 bita. - ...
2. zadatak
Koja od sledećih tvrđenja su tačna na programskom jeziku Java?
- Potpis funkcije se sastoji iz imena, broja argumenata i njihovih tipova.
- Deklaracija sadrži potpis, tip rezultata i
throws
klauzulu. - U jednoj klasi može postojati više metoda sa istim potpisom.
- Ako se u klasi nađe više metoda sa istom deklaracijom, njihova implementacija se u vreme prevođenja spaja u jednu metodu.
- ...
3. zadatak
Koja od sledećih tvrđenja su tačna na programskom jeziku Java?
- Jedan paket se može prostirati na više fajlova.
- Svaki fajl sa izvornim kodom koji je deo nekog paketa mora sadržati naredbu
package imePaketa;
. - Različite metode sa istom deklaracijom se mogu nalaziti u dva različita paketa.
- Naredba
package imePaketa
mora biti prva naredba u fajlu. - Jedan fajl može biti sadržan u više paketa.
Objašnjenje: Odgovor pod b je inicijalno označen kao tačan, međutim, u slučaju podrazumevanog paketa ovo ne važi, tako da odgovor nije tačan.
4. zadatak
Šta ispisuje sledeći program na programskom jeziku Java? Upisati simbol x
ukoliko se program ne prevodi.
interface I {
static void m() {
System.out.print(1);
}
}
class B {
public static void m() {
System.out.print(2);
}
}
class D extends B implements I {
public D() {
I.m();
B.m();
}
}
public class Test {
public static void main(String args[]) {
new D();
}
}
Odgovor: 12
5. zadatak
Šta može da stoji umesto #### da bi se sledeći izvorni kod napisan na programskom jeziku Java uspešno preveo?
class Izuzetak extends Exception {}
class Klasa {
public void m() throws Izuzetak {
####
}
}
throw;
throw 1;
throw new RuntimeException();
throw new Exception();
throw new Izuzetak();
Objašnjenje: Moguće je baciti Izuzetak
jer je naznačen u throws
klauzuli i RuntimeException
jer je neproveren.
6. zadatak
Navesti koja su tvrđenja tačna za lokalne klase:
- Lokalne klase definisane u nestatičkom okruženju okružujuće klase sadrže pokazivač na objekat okružujuće klase.
- Referenca na lokalnu klasu se može koristiti van bloka u kome je lokalna klasa definisana.
- Referenca na lokalnu klasu se može proslediti kao povratna vrednost metoda.
- Referenca na lokalnu klasu se može proslediti kao argument metodu.
7. zadatak
Isti kao za G1/G2.
8. zadatak
Koje klase su izvedene iz Component
?
BorderLayout
Panel
Graphics
MenuBar
TextField
Checkbox
Choice
Button
9. zadatak
Koje od sledećih tvrdnji su tačne u vezi sa izvršnim okruženjem u .NET (CLR)?
- CLR je odgovoran za sigurnost i zaštitu.
- CLR ne podržava više jezika.
- CLR podržava višenitno izvršavanje.
- CLR ne podržava JIT prevođenje.
- CLR upravlja memorijom programa.
10. zadatak
Neki kod sa delegatima. (Nedostaje tekst zadatka.)