Kolejne rozwiązania już dostępne – tym razem Lista 5 – wykorzystujące pojęcie rekurencji.
Laboratorium 5
Zadanie 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
| PROGRAM lista5_zad1(INPUT, OUTPUT);
USES
CRT;
VAR
wybor : CHAR;
liczba : INTEGER;
FUNCTION SilniaIteracyjnie(x : INTEGER) : EXTENDED;
VAR
wynik : EXTENDED;
licznik : INTEGER;
BEGIN
wynik := 1;
IF (x = 0) OR (x = 1) THEN
SilniaIteracyjnie := 1
ELSE
BEGIN
FOR licznik := x DOWNTO 1 DO
wynik := wynik * licznik;
SilniaIteracyjnie := wynik;
END;
END;
FUNCTION SilniaRekurencyjnie(x : INTEGER) : EXTENDED;
BEGIN
IF (x = 0) OR (x = 1) THEN
SilniaRekurencyjnie := 1
ELSE
SilniaRekurencyjnie := SilniaRekurencyjnie(x - 1) * x;
END;
BEGIN
CLRSCR;
WRITELN('Jaki sposób liczenia silnii wybierasz:');
WRITELN(' a) Iteracyjnie');
WRITELN(' b) Rekurencyjnie');
GOTOXY(4, 5);
WRITELN('Wybór: [ ]');
GOTOXY(12, 5);
wybor := READKEY;
WRITE(wybor);
GOTOXY(4, 7);
IF (wybor = 'a') OR (wybor = 'A') THEN
BEGIN
WRITE('Podaj liczbę: ');
READLN(liczba);
GOTOXY(4, 9);
WRITELN('Wynik: ', SilniaIteracyjnie(liczba):0:0)
END
ELSE IF (wybor = 'b') OR (wybor = 'B') THEN
BEGIN
WRITE('Podaj liczbę: ');
READLN(liczba);
GOTOXY(4, 9);
WRITELN('Wynik: ', SilniaRekurencyjnie(liczba):0:0)
END
ELSE
WRITELN('Błędny wybór!');
REPEAT UNTIL Keypressed;
END. |
Czytaj więcej…
Udostępniam rozwiązania zadań z Listy 4.
Laboratorium 4
Zadanie 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
| PROGRAM lista4_zad1(OUTPUT);
USES
CRT;
VAR
k : REAL;
x, y, z : INTEGER;
BEGIN
CLRSCR;
k := 1.5;
x := 5;
y := 6;
z := 3;
WRITELN('x + y + z = ', x + y + z);
WRITELN('x + y * z = ', x + y * z);
WRITELN('x * (y + z) = ', x * (y + z));
WRITELN('x + y - z = ', x + y - z);
WRITELN('y / z = ', (y / z):2:2);
WRITELN('x + y / z = ', (x + y / z):2:2);
WRITELN;
WRITELN('y DIV 1 = ', (y DIV 1));
WRITELN('y DIV 2 = ', (y DIV 2));
WRITELN('y DIV 3 = ', (y DIV 3));
WRITELN('y DIV 4 = ', (y DIV 4));
WRITELN('y DIV 5 = ', (y DIV 5));
WRITELN('y DIV 6 = ', (y DIV 6));
WRITELN('y DIV 7 = ', (y DIV 7));
WRITELN;
WRITELN('z MOD 1 = ', (z MOD 1));
WRITELN('z MOD 2 = ', (z MOD 2));
WRITELN('z MOD 3 = ', (z MOD 3));
WRITELN('z MOD 4 = ', (z MOD 4));
WRITELN('z MOD 5 = ', (z MOD 5));
WRITELN('z MOD 6 = ', (z MOD 6));
WRITELN;
WRITELN('k * y = ', (k * y):2:2);
END. |
Czytaj więcej…
Już za kilka dni odbędzie się, z niecierpliwością oczekiwana konferencja RuPy 2009! Organizatorzy dopracowują ostatnie szczegóły, a wszystko po to aby pewną stopą stanąć na wysokości zadania!
Ostatnie 3 tygodnie to dla nas prawdziwy sprawdzian cierpliwości, dyspozycyjności i pracy zespołowej. Jak pokazuje praktyka, zapał to nie wszystko! Czasami trzeba mieć też jaja ze stali… W dzisiejszym poście chciałbym przede wszystkim poruszyć temat agendy oraz konkursu, w którym do wygrania były darmowe wejściówki na konferencję, a także podzielić się wizją własnego konkursu, który zamierzam zrealizować w ciągu pierwszego dnia imprezy. Dorzucę do tego kilka kwestii organizacyjnych.
Tegoroczna agenda należy do najbardziej interesujących, a zarazem “upchanych agend” z jakimi RuPy miał do czynienia. Ma to swoje dobre i złe strony, o czym świadczą komentarze na IRCu czy mikroblogach. Spora ilość wystąpień daje uczestnikowi możliwość elastycznej budowy ścieżki, po której będzie się poruszał w czasie imprezy. Staraliśmy się tak dobierać do siebie talki, aby trudność wyboru prelekcji w czasie trwania obu sesji zmniejszyć do minimum. Z pewnością zauważyliście też, że osierociliśmy wystąpienia o tematyce nieściśle związanej z konkretną technologią. Do takich talków należą głównie keynotey invited speakerów.
Czytaj więcej…
Wpadł mi do głowy pewien pomysł na to, aby regularnie udostępniać rozwiązania zadań (włącznie z krótką analizą problemu) z Podstaw Programowania. Chciałbym w ten sposób zachęcić Was do prezentacji własnego kodu, a przede wszystkim zarazić bakcylem programowania.
W związku z tym, dzisiaj przerobimy listę 2 i 3.
Laboratorium 2
Zadanie 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| PROGRAM lista1_zad1(OUTPUT);
USES
CRT;
BEGIN
CLRSCR;
WRITELN(' ,., ');
WRITELN(' /"""\ /"""\ /"""\ /"""\ ');
WRITELN(' |o o| |0 0| |o o| |@ @| ');
WRITELN(' \ - / \ U / \ ~ / \ = / ');
WRITELN(' |_| |_| |_| |_| ');
WRITELN('normalny szczęśliwy zakochany po sesji');
END. |
Czytaj więcej…