SciÄ…ga z Pascalu + test z rozwiÄ…zaniami.
Gotowa do druku książeczka w formacie A5. Zawiera teorię, zadania i test z rozwiązaniami.Oto przykład testu:
1.Która z poniższych konstrukcji jest niepoprawna, przy założeniu, że zmienna jest_zero jest typu boolean?
a) if jest_zero then...
b) if jest_zero=true then...
c) if jest_zero=1 then...
- - bo zmiennej logicznej nie można porównać z liczbą; natomiast obie wersje a) i b) są poprawne i znaczą to samo.
2. Gdzie należy wpisać dane do programu:
a) W oknie, które się otworzy, gdy program zacznie się wykonywać.
b) Na końcu programu, za słowem end z kropką.
c) Po słowie const znajdującym się na początku programu.
- – dane wpisujemy przecież dopiero, gdy program siÄ™ uruchomi, nigdy zaÅ› w tekÅ›cie programu!!! StaÅ‚e wpisywane w programie nie sÄ… danymi. Dane to coÅ›, co wczytujemy instrukcjÄ… read lub readln.
3. Jak sprawdzić, czy x jest zawarte w przedziale <a,b>:
a) if a<=x<=b then...
b) if (x>=a) and (x<=b) then...
c) if x>=a and x<=b then...
b) – nawiasy sÄ… konieczne, gdyż inaczej najpierw zadziaÅ‚aÅ‚by operator „and” na argumentach sÄ…siednich, i wynikÅ‚by z tego błąd kompilacji.
4. Która z podanych pętli jest równoważna (jeśli chodzi o drukowane wyniki) podanej konstrukcji:
x:=0; repeat x:=x+1; writeln(x); until x > 10;
a) for x:=1 to 10 do writeln(x);
b) for x:=0 to 10 do writeln(x);
c) for x:=1 to 11 do writeln(x);
- – bo z pÄ™tli repeat wyjdziemy dopiero, gdy x bÄ™dzie wiÄ™ksze od 10, wiÄ™c ostatniÄ… drukowanÄ… wartoÅ›ciÄ… jest 11.
5. Która konstrukcja nie jest równoważna następującej: writeln(a,b,c,d)
a) write(a,b); write©; writeln(d);
b) write(a,b,c,d); writeln;
c) writeln(a,b); writeln(c,d);
- – bo po wydrukowaniu wartoÅ›ci a i b nastÄ…pi przejÅ›cie do nowej linii; natomiast w przypadkach a) i b) przejÅ›cie do nowej linii nastÄ™puje dopiero po wydrukowaniu wszystkich czterech wartoÅ›ci a,b,c,d.
6. Co wydrukuje następująca pętla: for i:=1 to n do writeln(a[i,i+1]) w przypadku tablicy a[1..n,1..n]
a) główną przekątną tablicy a.
b) linię ukośną tuż nad główną przekątną tablicy a.
c) linię ukośną tuż nad główną przekątną tablicy a, ale potem nastąpi błąd wykonania.
- – dla i=n nie da siÄ™ wyznaczyć a[i,i+1], bo nie ma takiego elementu, wiÄ™c tu siÄ™ program „wyÅ‚oży”.
7. Chcemy wypełnić tablicę A[1..n] liczbami >10 wczytywanymi z klawiatury, pomijając pozostałe. Która konstrukcja jest niepoprawna?
a) for I:=1 to n do begin readln(x); if x>10 then A[I]:=x end;
b) for I:=1 to n do repeat readln(A[I]) until A[I]>10;
c) I:=1; repeat readln(x); if x>10 then begin A[I]:=x; I:=I+1 end; until I>n;
- – w takim przypadku niektóre miejsca w tablicy pozostaÅ‚yby niewypeÅ‚nione!!!; trzeba zastosować tu konstrukcjÄ™ b) lub c).
8. Co można wczytać z pliku tekstowego:
a) tylko teksty (napisy), czyli kolejne wiersze pliku
b) liczby, znaki lub teksty – to zależy od instrukcji wczytywania.
c) tylko znaki.
b) – oczywiÅ›cie można wczytać różne dane, typ zmiennej wczytywanej okreÅ›la, co wczytujemy.
9. Który nagłówek funkcji jest prawidłowy?:
a) function wynik(A,B:Tab; nazwa:string);
b) function wynik(A,B:Tab; nazwa:string): integer;
c) function wynik(A,B:Tab, nazwa:string): integer;
b) – w nagłówku a) brak typu wyniku funkcji, zaÅ› w nagłówku c) jest przecinek zamiast Å›rednika.
10. Co możemy powiedzieć o instrukcji readln(pwe, a, b, c);
a) wczytuje cztery zmienne pwe,a,b,c z klawiatury.
b) wczytuje zmienne a,b,c z pliku określonego przez zmienną plikową pwe.
c) nic takiego nie możemy powiedzieć, jeśli nie wiemy, jakiego typu jest zmienna pwe.
- – jeÅ›li pwe jest zmiennÄ… plikowÄ…, to znaczy, że czytamy z pliku pwe, a jeÅ›li pwe nie jest zmiennÄ… plikowÄ…, to znaczy, że z klawiatury wczytujemy cztery zmienne(nazwy nie sÄ… istotne).
11. Co oznacza poniższe odwołanie: (zmienna glowa jest początkiem listy, pole a elementu listy jest wektorem [1..10]):
glowa^.a[3]
a) Adres trzeciego elementu listy.
b) Trzeci element wektora a znajdujÄ…cego siÄ™ w pierwszym elemencie listy.
c) Odwołanie to jest nieprawidłowe.
b) – pod adresem glowa (czyli w pierwszym elemencie listy) jest rekord, którego polem jest wektor a, zaÅ› a[3] oznacza trzeci element tego wektora (o ile oczywiÅ›cie jest on indeksowany od 1).
12. Które odwołanie się do pola rekordu znajdującego się w tablicy A (o deklaracji jak niżej) jest prawidłowe:
type Tosoba = record imie: string; end;
var A: array[1..20] of Tosoba;
a) A[5].imie := Halina;
b) A[5].imie := ‘Halina’;
c) A.imie[5] := ‘Halina’;
b) – indeks musi stać przy nazwie tablicy (czyli przy A), zaÅ› Å‚aÅ„cuch musi być napisany w apostrofach.
13. Co się stanie, jeśli w treści funkcji nie będzie podstawienia wyniku pod nazwę funkcji:
d) Program z tak zadeklarowanÄ… funkcjÄ… siÄ™ nie skompiluje.
e) Program się skompiluje, ale nie da się wykonać.
f) Program da się wykonać, ale funkcja nie będzie zwracała wyniku przez swoją nazwę.
- – aby funkcja przekazywaÅ‚a (zwracaÅ‚a) wynik poprzez nazwÄ™, w treÅ›ci funkcji musi być podstawienie wyniku pod nazwÄ™ funkcji; brak takiego podstawienia jest wyłącznie błędem logicznym.
14. Która deklaracja podprogramu nie pozwoli zwrócić (przekazać wyniku) sumy elementów wektora A typu Twekt?
a) procedure (A: Twekt; suma: real);
b) procedure (A: Twekt; var suma: real);
c) function suma (A: Twekt): real;
- – parametr suma nie jest tu przekazywany przez zmiennÄ…, wiÄ™c nie dostaniemy wyniku za pomocÄ… tego parametru. Natomiast rozwiÄ…zania b) i c) sÄ… poprawne, można zastosować jedno z nich.
15. Czy da się uruchomić taki program, w którym procedura Proszę wywołuje funkcję F, a funkcja F wywołuje procedurę Proszę:
a) Taki program siÄ™ nie skompiluje.
b) Taki program da się uruchomić, ale jeśli nie będzie warunku końca, będzie chodził w kółko aż do przepełnienia.
c) Taki program się skompiluje, ale nie da się uruchomić.
b) – to jest przykÅ‚ad rekurencji poÅ›redniej; program bÄ™dzie dziaÅ‚aÅ‚, ale procedura powinna mieć warunek koÅ„ca.