Zadania na kolokwium
Tutaj znajda sie uzupelniane sukcesywnie przykladowe pytania na kolokwium. Prosze zajrzec za jakis czas. Najblizszy termin gdy warto zajrzec: poniedzialek
Bardzo przepraszam, ale mam troche innych zadan na glowie, ktore mi sie troche spietrzaja. W weekend wyglada na to, ze bede mial wolny czas i o ile nie zostanie on skonsumowany przez dziecko i zone, to bede mogl wygenerowac pytania. Po prostu czlowiek musi spac chociaz te 5-6 godzin. Przykladowe zadania (z zakresu calego materialu). NALEZY JE KOMPILOWAC gcc 2.9.5 - w nowszych kompilatorach dawne ostrzezenie (i shadows a parameter) zmienia sie na blad (i redeclared as different kind of symbol). Dziekuje Piotrowi Kaminskiemu za zwrocenie uwagi. Note: Ustalmy jednak, ze obowiazujacy jest standard iso/ansi w takiej postaci, w jakiej implementuje je gcc 4.0 - w tym wypadku kazdy bedzie mial mozliwosc odwolania sie od punktacji, a wam odpada martwienie sie o to, czy parametr lokalny przykrywa parametr funkcji itd.

Zadania

Zadanie: Jaki bedzie wynik wykonania kodu (wartosci wszystkich podanych zmiennych)
int i=1,j=0; for (i=0;i>0;i++);
j++;

odpowiedz: i==0. j==1;

Zadanie: Jaki bedzie wynik wykonania kodu (wartosci wszystkich podanych zmiennych)
int i=1,j=0; if (i=0) j++;
odpowiedz: i==0. j==0;

Zadanie: Jaki bedzie wynik wykonania kodu (wartosci wszystkich podanych zmiennych)
int i=1,j=0; if (i==0) j++;
odpowiedz: i==1. j==0;

Zadanie: Jaki bedzie wynik wykonania kodu (wartosci wszystkich podanych zmiennych)
int i=1,j=0; if (i==0); j++;
odpowiedz: i==1. j==1;

Zadanie: Ktore z podanych zmiennych sa globalne, ktore lokalne i jakie sa ich wartosci poczatkowe?
int i,j;
int main() { int k; }

odpowiedz: i,j globalne, wartosc poczatkowa 0, k lokalne, wartosc nieznana

Zadanie: Napisz deklaracje zapowiadajaca ponizszej funckji:
int fun(int i)
{
int i; int j;
return i+fun(i);}

odpowiedz: int fun(int);

Zadanie: Jaki jest wynik wywolania x= fun(4)
int fun(int i)
{
int i; int j;
return i+fun(i);}

odpowiedz: Nie wiadomo (tzn, przepelni sie stos - brak warunku konca rekurencji

Zadanie: Jaki jest wynik wywolania x= fun(4)
int fun(int i)
{
int i; int j; if (i<=0) return 0;
return i+fun(i);}

odpowiedz: Nie wiadomo (tzn, przepelni sie stos - i nie jest zmniejszane)

Zadanie: Jaki jest wynik wywolania x= fun(4)
int fun(int i)
{
int i; int j; if (i<=0) return 0;
return i+fun(i--);}

odpowiedz: Nie wiadomo (tzn, przepelni sie stos - i jest zmniejszane w postinkrementacji)

Zadanie: Jaki jest wynik wywolania x= fun(4)
int fun(int i)
{
int i; int j; if (i<=0) return 0;
return i+fun(--i);}

odpowiedz: Nie wiadomo (tzn, przepelni sie stos - i jest zmienna lokalna o niewiadomej wartosci, a nie parametrem )

Zadanie: Jaki jest wynik wywolania x= fun(4)
int fun(int i)
{
int j; if (i<=0) return 0;
return i+fun(--i);}

odpowiedz: x = (4--)+fun(3); x= 3+(--3)+fun(2);x =3+2+(--2)+fun(1);x=3+2+1+(--1)+fun(0);x=3+2+1+0+0; Czyli x = 6;

Zadanie: Jak sie nazywa technika uzyta w ponizszym kodzie? Mamy dwie takie techniki, jedna na "R" :) druga na "i"
int fun(int i)
{
int j; if (i<=0) return 0;
return i+fun(--i);}

odpowiedz: Rekurencja

Zadanie: Ile wynosi x? Wszystkie te zmienne to zmienne globalne;
int x; int *i; int **j; x=(int) &i; i=*j;
odpowiedz: Nie wiadomo (do wartosci x przypisywana jest wartosc adresu i);

Zadanie: Ile wynosi x? Wszystkie te zmienne to zmienne globalne;
int x; int *i; int **j; i= &x; j=&i; x=4; x= (**j)+1;
odpowiedz: 5 (**j to wartosc x, a ta wynosi 4)

Zadanie: W jaki sposob realizowany jest podzial na zmienne statyczne i automatyczne w assemblerze w architekturze x86?
odpowiedz: Statyczne: sa to adresy obszarow w sekcji data, rodata lub bss (po prostu stale zadeklarowane w jakiejs sekcji). Automatyczne: z wykorzystaniem stosu badz rejestrow.