II termin

Transkrypt

II termin
1. Przedstawicieli grup proszę o zebranie kart ocen osób, które pisały kolokwium i przyniesienie ich
do pokoju 3.23 w dniu 10.02.2012 (jutro) o godzinie 11:00.
2. Jako termin drugiej poprawki proponuję środę (15.02.2012), godzina 12:00. Proszę
o informacje, jeśli ten termin kolidowałby Państwu z innymi egzaminami/zaliczeniami.
3. Pod tabelkami z wynikami umieściłem komentarze, które powinny Państwu pomóc
w przygotowaniu się do kolejnego terminu. Proszę się z nimi zapoznać.
4. Ponieważ znaliście Państwo treści zdań tydzień wcześniej, to drugi termin oceniany był surowiej.
5. Wyniki poszczególnych grup (zestawów) znajdują się na kolejnych stronach.
Proszę o sprawdzenie zgodności ocen zapisanych w USOSie z wynikami w poniższych tabelach. Jeśli komuś z Państwa nie zgadzałaby się ocena lub zaistniałyby inne rozbieżności, to proszę to
natychmiast zgłosić do mnie za pomocą poczty elektronicznej.
Czas w którym możliwe są poprawki ocen uzyskanych w drugim
terminie upływa w USOS 11.02.2012 o godzinie 23:59.
1
Tabela 1: Zestaw A
Indeks Ocena
65747
2,0
65739
2,0
65836
2,0
65819
2,0
68525
2,0
65736
2,0
65706
2,0
65846
2,0
65708
2,0
65674
2,0
Komentarze:
1. Funkcja ioresults nie zwraca prawidłowych wartości jeśli wcześniej nie wyłączy się dyrektywy $I
kompilatora dla operacji I/O.
2. Program, który przegląda plik 100 (!) razy wystarczał na zaliczenie w pierwszym terminie, kiedy
Państwo nie znali treści zadań i „na świeżo” musieliście wymyślić rozwiązanie. W drugim terminie
takie coś jest niedopuszczalne. To zadanie można rozwiązać pisząc program, który przegląda plik
tylko raz.
3. Dopisywanie podprogramów, które nie są wymagane w treści zdania (np. procedury wypełniające
plik) nie podnosi oceny. Następnym razem będę ją znacznie obniżał za takie praktyki. W zadaniu
można zdefiniować co najmniej dwa podprogramy, których działanie będzie się wiązało z treścią
zadania.
2
Tabela 2: Zestaw B
Indeks Ocena
65813
4,5
63476
4,0
65861
4,0
65726
4,0
65860
4,0
65671
3,0
63103
3,0
65852
3,0
65731
3,0
65859
2,0
65767
2,0
Komentarze:
1. Funkcja ioresults nie zwraca prawidłowych wartości jeśli wcześniej nie wyłączy się dyrektywy $I
kompilatora dla operacji I/O.
2. Dopisywanie podprogramów, które nie są wymagane w treści zdania (np. procedury wypełniające
plik) nie podnosi oceny. Następnym razem będę ją znacznie obniżał za takie praktyki. W zadaniu
można zdefiniować co najmniej dwa podprogramy, których działanie będzie się wiązało z treścią
zadania.
3
Tabela 3: Zestaw C
Indeks Ocena
65717
2,0
65855
2,0
65718
2,0
65847
2,0
65794
2,0
65743
2,0
65814
2,0
65856
2,0
65495
2,0
65761
2,0
Komentarze:
1. Żaden z programów, które Państwo przedstawiliście na kolokwium nie działa zgodnie z treścią
zadania. Program nie ma za zadanie przepisania wierszy, których długość jest wielokrotnością 4,
ale zostawić w wierszach wyrazy, które spełniają ten warunek i tak przekształcone wiersze zapisać
do pliku.
2. Przekształcanie wiersza nie musi polegać na usuwaniu z niego wyrazów, które nie spełniają warunków. Prościej jest utworzyć nowy wiersz poprzez skopiowanie do niego wyrazów, których długość
jest wielokrotnością 4.
3. W rozwiązaniu tego zadania pomocne są podprogramy pos, copy i delete oraz operator dodawania
łańcuchów znaków.
4. „Tworzenie” pliku poprzez jego utworzenie (rewrite) i natychmiastowe zamknięcie (close), a potem zapis do pliku poprzez jego otwieranie do dopisywania (append) i zamykanie (close) przy
każdej takiej operacji jest złym pomysłem. Dążymy do minimalizacji liczby operacji otwierania
i zamykania pliku w programie, a nie maksymalizacji.
5. Funkcja ioresults nie zwraca prawidłowych wartości jeśli wcześniej nie wyłączy się dyrektywy $I
kompilatora dla operacji I/O.
6. Dopisywanie podprogramów, które nie są wymagane w treści zdania (np. procedury wypełniające
plik) nie podnosi oceny. Następnym razem będę ją znacznie obniżał za takie praktyki. W zadaniu
można zdefiniować co najmniej dwa podprogramy, których działanie będzie się wiązało z treścią
zadania.
7. Typu textfile nie ma w Turbo Pascalu, a więc co najmniej jeden kompilator Pascala nie poradziłby sobie z kompilacją Państwa programów (Free Pascal i Delphi posiadają taki typ).
4
Tabela 4: Zestaw D
Indeks Ocena
65703
4,0
65711
4,0
65854
3,0
65842
2,0
65789
2,0
65668
2,0
65843
2,0
65714
2,0
65755
2,0
65679
2,0
Komentarze:
1. Jeśli w 2013 roku sprawdzalibyśmy średnią temperaturę dla 2012 roku za pomocą Państwa programów, to żaden (zakładając, że wprowadzimy do nich niezbędne poprawki, tak żeby się uruchamiały)
nie podałby prawidłowej odpowiedzi.
2. Plik trzeba przeglądać za pomocą pętli for lub while, nigdy obiema na raz (chodzi o pętlę, w której
wywołujemy procedurę read). W przypadku tego zadania pętla for nie będzie przydatna.
3. W drugiej części zadania chodzi o wyznaczenie największej liczby dni w których temperatura
rosła.
4. Funkcja ioresults nie zwraca prawidłowych wartości jeśli wcześniej nie wyłączy się dyrektywy $I
kompilatora dla operacji I/O.
5. Dopisywanie podprogramów, które nie są wymagane w treści zdania (np. procedury wypełniające
plik) nie podnosi oceny. Następnym razem będę ją znacznie obniżał za takie praktyki. W zadaniu
można zdefiniować co najmniej dwa podprogramy, których działanie będzie się wiązało z treścią
zadania.
5
Tabela 5: Zestaw E
Indeks Ocena
65834
4,0
65853
4,0
65746
4,0
65770
3,0
65695
3,0
65793
3,0
65673
3,0
65684
3,0
65751
2,0
65804
2,0
Komentarze:
1. Przekształcanie wiersza nie musi polegać na usuwaniu z niego znaków, które nie spełniają warunków. Zastąpienie znaków niebędących cyframi znakami pustymi też nie jest rozwiązaniem. Prościej
jest utworzyć nowy wiersz poprzez dodawanie do niego znaków, które są cyframi dziesiętnymi.
2. Przekształcanie znaków na liczby za pomocą procedury val nie jest konieczne, tak samo nie jest
konieczne użycie funkcji chr.
3. „Tworzenie” pliku poprzez jego utworzenie (rewrite) i natychmiastowe zamknięcie (close), a potem zapis do pliku poprzez jego otwieranie do dopisywania (append) i zamykanie (close) przy
każdej takiej operacji jest złym pomysłem. Dążymy do minimalizacji liczby operacji otwierania
i zamykania pliku w programie, a nie maksymalizacji.
4. Funkcja ioresults nie zwraca prawidłowych wartości jeśli wcześniej nie wyłączy się dyrektywy $I
kompilatora dla operacji I/O.
5. Dopisywanie podprogramów, które nie są wymagane w treści zdania (np. procedury wypełniające
plik) nie podnosi oceny. Następnym razem będę ją znacznie obniżał za takie praktyki. W zadaniu
można zdefiniować co najmniej dwa podprogramy, których działanie będzie się wiązało z treścią
zadania.
6. Typu textfile nie ma w Turbo Pascalu, a więc co najmniej jeden kompilator Pascala nie poradziłby sobie z kompilacją Państwa programów (Free Pascal i Delphi posiadają taki typ).
6
Tabela 6: Zestaw F
Indeks Ocena
65811
4,5
65749
4,0
65821
4,0
65707
3,5
65805
3,5
65825
3,0
65669
3,0
65851
3,0
65692
3,0
Komentarze:
1. Warto sprawdzić rozwiązanie dla przykładowych ciągów liczby. Oto ciąg, z którym większość Państwa programów nie poradziłaby sobie: 1,3,2,4,8,7.
2. Zadanie można rozwiązać przeglądając plik tylko raz.
3. Funkcja ioresults nie zwraca prawidłowych wartości jeśli wcześniej nie wyłączy się dyrektywy $I
kompilatora dla operacji I/O.
4. Dopisywanie podprogramów, które nie są wymagane w treści zdania (np. procedury wypełniające
plik) nie podnosi oceny. Następnym razem będę ją znacznie obniżał za takie praktyki. W zadaniu
można zdefiniować co najmniej dwa podprogramy, których działanie będzie się wiązało z treścią
zadania.
7
Tabela 7: Zestaw G
Indeks Ocena
65845
3,0
65682
3,0
65784
3,0
65737
3,0
65686
2,0
65824
2,0
65799
2,0
65817
2,0
65808
2,0
65780
2,0
63087
2,0
Komentarze:
1. W tym zadaniu bardzo ważnym jest prawidłowe dobranie struktur danych (tablic, rekordów) i pętli, inaczej rozwiązanie nie zmieści się na jednej kartce. Przykładowo, zamiast kilku zmiennych
o nazwach f1, f2, f3, f4, f5, f6 można utworzyć tablicę o sześciu elementach i nazwie f.
I posłużyć się pętlą do jej przeglądania.
2. Treść zadania nie zabrania używania więcej niż jednego typu rekordu.
3. Zmienne plikowe mogą być elementami tablicy lub polami rekordu.
4. Funkcja ioresults nie zwraca prawidłowych wartości jeśli wcześniej nie wyłączy się dyrektywy $I
kompilatora dla operacji I/O.
5. Dopisywanie podprogramów, które nie są wymagane w treści zdania (np. procedury wypełniające
plik) nie podnosi oceny. Następnym razem będę ją znacznie obniżał za takie praktyki. W zadaniu
można zdefiniować co najmniej dwa podprogramy, których działanie będzie się wiązało z treścią
zadania.
8
Tabela 8: Zestaw H
Indeks Ocena
65849
3,5
63115
3,0
65857
3,0
65670
3,0
65765
3,0
65773
3,0
65840
2,0
67779
2,0
65791
2,0
65844
2,0
65801
2,0
Komentarze:
1. Samogłoski nie muszą być małymi literami.
2. Główny błąd w większości Państwa programów polegał na tym, że programy nie zliczały wystąpień
różnych samogłosek w wierszach.
3. „Tworzenie” pliku poprzez jego utworzenie (rewrite) i natychmiastowe zamknięcie (close), a potem zapis do pliku poprzez jego otwieranie do dopisywania (append) i zamykanie (close) przy
każdej takiej operacji jest złym pomysłem. Dążymy do minimalizacji liczby operacji otwierania
i zamykania pliku w programie, a nie maksymalizacji.
4. Funkcja ioresults nie zwraca prawidłowych wartości jeśli wcześniej nie wyłączy się dyrektywy $I
kompilatora dla operacji I/O.
5. Dopisywanie podprogramów, które nie są wymagane w treści zdania (np. procedury wypełniające
plik) nie podnosi oceny. Następnym razem będę ją znacznie obniżał za takie praktyki. W zadaniu
można zdefiniować co najmniej dwa podprogramy, których działanie będzie się wiązało z treścią
zadania. „Drobienie” kodu poprzez wprowadzanie dużej liczby pozornie przydatnych procedur lub
funkcji też mija się z celem - program jest dłuższy niż powinien.
6. Typu textfile nie ma w Turbo Pascalu, a więc co najmniej jeden kompilator Pascala nie poradziłby sobie z kompilacją Państwa programów (Free Pascal i Delphi posiadają taki typ).
9