Programske strukture in kontrola toka (20 %) (doc. Zoran Bosnić) - Poskus 1

Question 1
Točke: 1/1

Podana je struktura elementa dvojnega cikličnega seznama (dva enako dolga enosmerna ciklična seznama, katerih istoležni elementi so med seboj dvosmerno povezani z lastnostjo bridge):

public class doubleCycElement {
 int data;
 doubleCycElement next;
 doubleCycElement bridge;
 
 public doubleCycElement(int x, doubleCycElement bridge) {
  next=null;
  this.bridge=bridge;
  data=x;
 }
}

V nadaljevanju je podana metoda, ki v prvem delu poskrbi za imeplementacijo strukture, v drugem delu pa za sprehod preko nje in izpis vsebine elementov:

public static void main(String[] args) {
   // kreiranje strukture
   doubleCycElement startInner = new doubleCycElement(0, null);
   doubleCycElement startOuter = new doubleCycElement(0, startInner);
   startInner.bridge = startOuter;
   doubleCycElement tempI = startInner;
   doubleCycElement tempO = startOuter;
   for (int i=0; i<100; i++) {
      tempI.next = new doubleCycElement(i+1, tempO);
      tempO.next = new doubleCycElement((int)Math.pow(-i-1,3), tempI);
      tempI = tempI.next;
      tempO = tempO.next;
   }
   tempI.next = startInner;
   tempO.next = startOuter;
 
   // izpis elementov strukture
   doubleCycElement temp = startInner;
   for(int i=0; i<3; i++) {
      System.out.print(temp.data + " " + temp.next.data + " " + temp.next.bridge.data + " ");
      temp = temp.bridge.next.next.next;
   }

Kateri od naslednjih izpisov je rezultat izvajanja zgornjega programa?

Izberite en odgovor.
Pravilno
Točke za to oddajo: 1/1.
Question 2
Točke: 1/1

Podan je razred, napisan v Javi, ki ima naslednjo vsebino:

public class Izpis {
   static int a;
   static int b;
 
    public static void main(String[] args) {
      a=4; b=2;
      operacija(a, b);
      System.out.println(a);
      System.out.println(b);
    }

    private static void operacija(int x, int y) {
      y = y + b + y;
      x = b + x + b;
      a = x + y;
    }
}

Predpostavi, da se vse spremenljivke prenašajo po vrednosti. Kaj izpiše metoda main?

Izberite en odgovor.
Pravilno
Točke za to oddajo: 1/1.
Question 3
Točke: 1/1

Podan je element, ki predstavlja vozlišče binarnega drevesa:

public class drevoNode {
 int data;
 drevoNode left, right;
 
 public drevoNode() {
   data=0;
   left=null;
   right=null;

 }
}

in rekurzivna metoda za izračun višine tega drevesa, ki ji pa manjka rekurziven klic:

 public static int visina(drevoNode root) {
   if(root==null) return 0;
   else REKURZIVNI_KLIC;
 }

Med naslednjimi možnostmi izberi pravilni rekurzivni klic.

Izberite en odgovor.
Pravilno
Točke za to oddajo: 1/1.
Question 4
Točke: 1/1

Kaj izpiše naslednja funkcija, napisana v Javi?

public static void izpis() {
      System.out.println(1++);
}

Izberite en odgovor.
Pravilno
Točke za to oddajo: 1/1.
Question 5
Točke: 0/1

Podano je zaporedje krmilnih stavkov programa:

if (Math.random() < 0.4) {
  for(int i=0; i<100; i++) {
    if (Math.random()<0.2) x++;
    x=x+0;
  }
}
else {
   if (Math.random() < 0.5) x++;
   else x=x+5;
}

Kakšna je pričakovana povprečna vrednost spremenljivke x po izvajanju tega zaporedja stavkov?

Izberite en odgovor.
Napačno
Točke za to oddajo: 0/1.
Question 6
Točke: 1/1

Kaj izpiše naslednji program v Javi?


public class ShortCircuit {

public static void main(String[] args) {
     int a=9,b=4,c=7,d=1,e=3;
     if (bool(a=0) && bool(b=3) && bool(c=4) ||
         bool(d=4) && bool(b=0) && bool(c=3) ||
         bool(e=5) && bool(b=1) && bool(a=2)) {  };
     System.out.println(a + " " + b + " " + c + " " + d + " " + e);
 }
 
 public static boolean bool(int x) {
  if(x==0) return true;
  else return false;
 }
}

Izberite en odgovor.
Pravilno
Točke za to oddajo: 1/1.
Question 7
Točke: 1/1

Denimo, da v nekem programskem jeziku nimamo na razpolago zanke tipa while(pogoj), ki preverja izpolnjenost pogoja na začetku, temveč le zanko oblike do {...} while(pogoj), ki preverja izpolnjenost pogoja ob repu zanke. S pomočjo slednje zanke želimo simulirati klasično zanko tipa while(pogoj). Katera od naslednjih možnosti predstavlja pravilno rešitev za takšno simulacijo?

Izberite en odgovor.
Napačno
Točke za to oddajo: 0/1.
Question 8
Točke: 1/1

Katerega od spodnjih izpisov bo povzročil naslednji program?
  for (int j = 1; j <= 5; j++) {
     for (int k = 1; k <= j; k++)
       System.out.print(j + k + " ");
     System.out.println();
  }

(A)
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
5 6 7 8 9
6 7 8 9 10


(B)
1 1 1 1 1
2 2 2 2
3 3 3
4 4
5

(C)
2
3 4
4 5 6
5 6 7 8
6 7 8 9 10

(D)
6 7 8 9 10
5 6 7 8
4 5 6
3 4
2

Izberite en odgovor.
Pravilno
Točke za to oddajo: 1/1.
Question 9
Točke: 1/1

Podana je podatkovna struktura, ki predstavlja element povezanega seznama:

public class Element {
    public int vrednost = 0;
    public Element naslednji;

    Element(int x) {  //konstruktor
        vrednost=x;
    }
}

in naslednji program

public static void main(String[] args) {
    Element prvi = new Element(-1);
    Element temp = prvi;
  
    for(int i=0; i<100; i++) {
       Element novi=new Element(i);
       temp.naslednji = novi;
       temp = temp.naslednji;
    }
    temp.naslednji = prvi;
  
    while (temp.naslednji.naslednji.naslednji.naslednji.vrednost != -1)
        temp=temp.naslednji;
    System.out.println(temp.naslednji.vrednost);
}

Katero vrednost izpiše gornji program?

Izberite en odgovor.
Pravilno
Točke za to oddajo: 1/1.
Question 10
Točke: 1/1

Podan je razred, napisan v Javi, ki ima naslednjo vsebino:

public class Izpis {
   static int a;
   static int b;
 
   public static void main(String[] args) {
     a=5; b=3;
     operacija(a, b);
     System.out.println(a);
     System.out.println(b);
   }

   private static void operacija(int x, int y) {
     y = y + b;
     x = b + x;
     b = x + b;
     a = y;
   }
}

Predpostavi, da se vse spremenljivke prenašajo po vrednosti. Kaj izpiše metoda main?

Izberite en odgovor.
Pravilno
Točke za to oddajo: 1/1.
Question 11
Točke: 1/1

Kaj izpiše naslednja funkcija, napisana v Javi?

public static void izpis() {
      c=0;
      System.out.println(c++ + ++c);
}

Izberite en odgovor.
Pravilno
Točke za to oddajo: 1/1.
Question 12
Točke: 1/1

Naslednji algoritem napolni vsebino spremenljivki z imenom mat. Kakšna je vsebine te spremenljivke po zaključku programa?

public static void main(String[] args) {
   int[][] mat = new int[3][4];
   for (int i = 0; i < mat.length; i++)  {
      for (int j = 0; j < mat[0].length; j++)  {
         if (i < j) mat[i][j] = 1;
         else if (i == j) mat[i][j] = 2;
         else mat[i][j] = 3;
      }
   }
}

Izberite en odgovor.
Pravilno
Točke za to oddajo: 1/1.
Question 13
Točke: 1/1

Kaj izpiše naslednji program v Javi?

public static void main(String[] args) {
  int a=9,b=4,c=7,d=1,e=3;
  while ((a=1)==1 && (b=2)==3 && (c=3)==3 || (d=4)==4 || (e=5)==7) {
   System.out.println(a + " " + b + " " + c + " " + d + " " + e);
   break;  
  }
}

Izberite en odgovor.
Pravilno
Točke za to oddajo: 1/1.
Question 14
Točke: 1/1

Točke: 1
Podana je funkcija za izračun števila:

public float calcit(float a) {
   while (a >= 1.0) {
      a *= 0.9;
   }
   return a;
}

Določi obliko rekurzivnega klica, ki je potreben v zadnji vrstici, če gornjo funkcijo prepišemo v rekurzivno obliko tako, da uporablja repno rekurzijo:

public float calc(float a) {
   if (a < 1.0) return a;
   else <<<REKURZIVNI KLIC>>>;
}

Izberite en odgovor.
Pravilno
Točke za to oddajo: 1/1.
Question 15
Točke: 1/1

Programski stavek GOTO:
1.) omogoča izvajanje takšne kontrole toka v programih, kot je z zaporedjem pogojev, iteracij in programskih stavkov sicer ni možno implementirati
2.) so odstranili iz novejših programskih jezikov, ker ovira elegantno analizo pravilnosti delovanja programov, še zlasti tistih, ki vključujejo zanke
3.) so odstranili iz novejših programskih jezikov zaradi razvoja številnih računalniških arhitektur, saj stavek ne more več pravilno načrtovati spominske lokacije, na katero mora izvesti skok

Izberite en odgovor.
Pravilno
Točke za to oddajo: 1/1.
Question 16
Točke: 1/1

Kateri od spodnjih programov bo povzročil naslednji izpis?
1 1 1 1 1
2 2 2 2
3 3 3
4 4
5

(A)
for (int j = 1; j <= 5; j++) {
  for (int k = 1; k <= 5; k++)
   
System.out.print(j + " ");
  System.out.println();
}

(B)
for (int j = 1; j <= 5; j++) {
  for (int k = 1; k <= j; k++)
    System.out.print(j + " ");
  System.out.println();
}

(C)
for (int j = 1; j <= 5; j++) {
  for (int k = 5; k >= 1; k--)
    System.out.print(j + " ");
  System.out.println();
}

(D)
for (int j = 1; j <= 5; j++) {
  for (int k = 5; k >= j; k--)
    System.out.print(j + " ");
  System.out.println();
}

Izberite en odgovor.
Pravilno
Točke za to oddajo: 1/1.
Question 17
Točke: 1/1

Funkcija

int izracun(int v)
{
 if(v==1 || v==0) return 1;
 if(v%2==0) return izracun(v/2) + 2;
 else return izracun(v-1) + 3;
}

pri klicu izracun(7) vrne vrednost

Izberite en odgovor.
Pravilno
Točke za to oddajo: 1/1.
Question 18
Točke: 1/1

Koliko zvezdic izpiše naslednja zanka?

  int i = 316;
  while (i>0) {
   i--;
   if(i%2==0) continue;
   if(i%25==0) break;
   System.out.print('*');
  }

Izberite en odgovor.

Pravilno
Točke za to oddajo: 1/1.