Kurs języka Ruby Lista 1.



Podobne dokumenty
Kurs języka Python. Lista 1.

Kurs języka Python. Lista 1.

Kurs języka Python. Lista 1.

Wprowadzenie do projektu QualitySpy

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

Przewodnik korzystania z Biblioteki kursów na platformach e-learningowych RON

Funkcje i instrukcje języka JavaScript

Scenariusz zajęć. Moduł VI. Projekt Gra logiczna zgadywanie liczby

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Podstawy technologii WWW

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób.

Instytut Fizyki Politechniki Łódzkiej Laboratorium Metod Analizy Danych Doświadczalnych Ćwiczenie 3 Generator liczb losowych o rozkładzie Rayleigha.

Programowanie obiektowe - zadania

Numer zadania. Treść zadania

Zadania semestralne. Programowanie obiektowe sem. II, lato 2014/2015

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Dziedziczenie. Zadanie 1

REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i realizacja serwisu ogłoszeń z inteligentną wyszukiwarką

Sposoby przedstawiania algorytmów

1. Informatyka - dyscyplina naukowa i techniczna zajmująca się przetwarzaniem informacji.

Program testujący powinien testować możliwości wszystkich klas posiadających minimum jedną metodę, zastosowania STL-a i obsługę sytuacji wyjątkowych.

Generator CABRILLO program Marka SP7DQR (Instrukcja obsługi)

Korzystanie z podstawowych rozkładów prawdopodobieństwa (tablice i arkusze kalkulacyjne)

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

Podręcznik użytkownika Wprowadzający aplikacji Wykaz2

lekcja 8a Gry komputerowe MasterMind

a) 7 b) 19 c) 21 d) 34

Zadanie 1. Suma silni (11 pkt)

UNIFON podręcznik użytkownika

Arkusz Optivum. Praca z repozytorium wymaga połączenia z Internetem i zalogowania się do Sigmy.

QualitySpy moduł reports

Pierwsze kroki w systemie

S P I S T R E Ś C I. Instrukcja obsługi

Instrukcja obsługi Systemu monitorowania pomocy publicznej DEMINIMIS (v. 2.00)

Podręcznik użytkownika Publikujący aplikacji Wykaz2

Jednolity Plik Kontrolny dla ewidencji zakupu i sprzedaży VAT wg wersji 17 deklaracji VAT-7

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

Instrukcje dla zawodników

Programowanie obiektowe

WOJEWÓDZTWO PODKARPACKIE

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Funkcje standardowe. Filtrowanie

Modelowanie rynków finansowych z wykorzystaniem pakietu R

Typy wyliczeniowe Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Podstawy i języki programowania

Programowanie obiektowe

3.4. Opis konfiguracji layoutów.

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

EGZAMIN MATURALNY Z INFORMATYKI POZIOM ROZSZERZONY CZĘŚĆ II CZERWIEC 2011 WYBRANE: Czas pracy: 150 minut. Liczba punktów do uzyskania: 30

Aplikacje w środowisku Java

Laboratorium Podstaw Robotyki I Ćwiczenie Khepera dwukołowy robot mobilny

Sprawdzenie czy połączenie przebiegło poprawnie if (mysqli_connect_errno()) { echo Błąd; Połączenie z bazą danych nie powiodło się.

Programowanie w Ruby

Modele i symulacje - Scratch i Excel

Kurs walut. Specyfikacja projektu. Marek Zając

Zadanie 1. Algorytmika ćwiczenia

Programowanie zaawansowane

Szukanie rozwiązań funkcji uwikłanych (równań nieliniowych)

KARTA PRZEDMIOTU. Programowanie aplikacji internetowych

ZPKSoft WDoradca. 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja

Aplikacja do podpisu cyfrowego npodpis

Konstrukcja odcinków niewymiernych z wykorzystaniem. Twierdzenia Pitagorasa.

0 + 0 = 0, = 1, = 1, = 0.

Wykaz zmian w programie WinAdmin Replikator

Pracownia internetowa w szkole ZASTOSOWANIA

REFERAT PRACY DYPLOMOWEJ

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Podstawy technologii WWW

Wstęp do poradnika metodycznego Przykładowy rozkład materiału 13 I rok nauczania...13 II rok nauczania...13 Rozkład materiału:...

Jest to program stworzony z myślą o nauczycielach, wykładowcach, trenerach i prezenterach.

BOC INFORMATION TECHNOLOGIES CONSULTING. Zadania. Przykład bankowy

REFERAT PRACY DYPLOMOWEJ

Programowanie w języku Python. Grażyna Koba

Projekt dotyczy stworzenia zintegrowanego, modularnego systemu informatycznego wspomagającego zarządzanie pracownikami i projektami w firmie

Wykład 8: klasy cz. 4

Podstawowe elementy GUI cz. 2 i 3 - zadania

Informatyka w Zarządzaniu

5.3. Tabele. Tworzenie tabeli. Tworzenie tabeli z widoku projektu. Rozdział III Tworzenie i modyfikacja tabel

Produkcja by CTI. Proces instalacji, ważne informacje oraz konfiguracja

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

Cw.12 JAVAScript w dokumentach HTML

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Dokument Detaliczny Projektu

Forte Zarządzanie Produkcją Instalacja i konfiguracja. Wersja B

Metody numeryczne Laboratorium 2

2 Zarówno zanonimizowany zbiór danych ilościowych, jak i opis jego struktury powinny mieć format csv:

Konspekt pracy inżynierskiej

Język Java część 2 (przykładowa aplikacja)

Rozdział 4 KLASY, OBIEKTY, METODY

2 INSTALACJA OPROGRAMOWANIA. 3 3 GŁÓWNE OKNO PROGRAMU 3 4 MODUŁ OBSŁUGI ARCHIWUM 7

Instrukcja Obsługi GigaNagrywarki. Instrukcja obsługi GigaNagrywarki

Przetwarzanie i analiza danych w języku Python / Marek Gągolewski, Maciej Bartoszuk, Anna Cena. Warszawa, Spis treści

INSTRUKCJA UŻYTKOWNIKA. Wielkopolski system doradztwa. edukacyjno-zawodowego

5. Praca z klasą. Dodawanie materiałów i plików. Etykieta tematu. Rozdział 5 Praca z klasą

Testowanie aplikacji. Kurs języka Ruby

Dokument Detaliczny Projektu

Generatory pomocy multimedialnych

Języki programowania imperatywnego

Transkrypt:

3 października 2012 Lista 1. Zadanie 1. Zaprogramuj 1. trójargumentową funkcję, gdzie pierwszy argument to rok, drugi: miesiąc, trzeci: dzień miesiąca (podawane jako liczby całkowite), która oblicza ile zostało dni do Sylwestra 2010 od daty podanej jako argument; 2. funkcję, której argumentem jest lista list liczb całkowitych, a wynikiem suma wszystkich liczb. Nie jest wymagana kontrola poprawności typów; 3. funkcję, której argumentami są dwie trójelementowe listy liczb całkowitych. W listach pamiętane są daty w postaci [dd, mm, rrrr]. Wynikiem jest liczba dni dzielących te daty. Możesz przyjąć, że argumenty są poprawnymi datami; 4. funkcję, której argumentem jest liczba, a wynikiem słowny zapis liczby. Możesz przyjąć, że wynik jest uproszczony, np. wynikiem f(123) jest jeden dwa trzy; 5. funkcję, której argumentem jest lista słów (stringów), gdzie słowa są z ustalonego zbioru słów { zero, jeden, dwa, trzy, cztery,..., dziewięć }. Wynikiem ma być liczba, np. f([ trzy, pięć, siedem ]) ma dać 357; 6. funkcję wypisującą na konsoli trójkąt Pascala. Argumentem funkcji jest liczba wierszy trójkąta do wypisania; 7. funkcję, której argumentami są dwie liczby całkowite oznaczające godzinę i minutę. Wyikiem działania funkcji ma być string zwracający tę godzinę w potocznej formie. Przykładowo godzina(12,45) powinna zwrócić za kwadrans pierwsza. Najwygodniej jest umieścić wszystkie rozwiązania w jednym pliku, a na końcu umieścić kilka testów prezentujących możliwości zaimplementowanych funkcji. Za każde zadań można otrzymać 0,5 punktu, jednak za całą listę nie można otrzymać więcej niż 2 punkty (a więc do oceny można przedstawić co najwyżej 4 funkcje). Termin: zajęcia w przyszłym tygodniu.

10 października 2012 Lista 2. Zadanie 1. Zaimplementuj jakąś reprezentację grafu nieskierowanego za pomocą słowników. Przyjmij, że wierzchołki są etykietowane elementami typu String, oraz że różne wierzchołki mają różne etykiety. Napisz procedurę sciezka(graf, a,b), której argumentami są: graf i etykiety, a wynikiem lista dróg (tablica tablic etykiet wierzchołków) z a do b lub lista pusta jeśli droga nie istnieje. Jeśli w grafie jest cykl, to można przyjąć następujące ograniczenia (do wyboru): żadne dwie ścieżki w rozwiązaniu nie zawierają wspólnych krawędzi; żadna ścieżka nie zawiera dwa razy tej samej krawędzi. Zadanie 2. Napisz program do dekodowania napisów zapisanych alfabetem Morse a. Wymagane jest, aby alfabet był pamiętany za pomocą binarnego drzewa poszukiwań. Najprostsze rozwiązanie za pomocą tablic haszujących nie będzie kaceptowane. Zadanie 3. Pewien prosty system zapisów na zajęcia zapamiętuje dwa rodzaje danych: listę osób zapisanych na każde zajęcia (oraz godziny tych zajęć), oraz listę zajęć prowadzonych w danej sali. Jednak konieczne jest sprawdzenie, czy informacje są pełne i niesprzeczne. Napisz trzy funkcje: 1. sprawdzającą, czy przypadkiem ktoś nie zapisał się na zajęcia odbywające się w tym samym czasie; 2. sprawdzającą, czy wszystkie zajęcia są przypisane do jakiejś sali; 3. sprawdzającą, czy zajęcia przypisane salom się nie nakładają. Oczywiście, wcześniej trzeba zaproponować struktury danych przechowujące te dane. Zadanie 4. Wiele osób twierdzi, że swoje sukcesy osiągnęły dzięki planowaniu swoich zajęć. Zajęcia można podzielić na dwie podstawowe kategorie: zajęcia o ustalonych godzinach rozpoczęcia i zakończenia (tak jak wykład z Ruby-ego ;), oraz zajęcia, na które trzeba przeznaczyć określoną ilość czasu. Zaprojektuj strukturę danych przechowującą informacje o przewidywanych zajęciach. Napisz funkcję, która ułoży plan zajęć na najbliższy czas dbając, aby nie zaczynać zbyt wcześnie pracy i aby nie pracować dłużej niż do jakiejś godziny. Jeżeli będą wolne luki w planie, niech ta funkcja zaproponuje jakieś miłe i relaksujące zajęcia. Każde zadanie jest warte 2 punkty, na zajęciach oddaje się jedno zadanie.

17 października 2012 Lista 3. Zadanie 1. (2 pkt) Bloki z jednym parametrem można traktować jak definicje jednoargumentowych funkcji. Korzystając z tej obserwacji zaprogramuj dwie procedury. Pierwsza z nich calka(a,b,&b) powinna obliczać numerycznie całkę oznaczoną na przedziale [a, b] funkcji zadanej jako blok. Dokładność obliczeń może być ustalona. Druga funkcja to wykres(a, b, &blok), która za pomocą znaków ASCII naszkicuje wykres funkcji danej jako blok. Można przyjąć arbitralny rozmiar terminala. Implementacje poniższych funkcji powinne być w postaci jednego wyrażenia. Jest to możliwe używając tylko zakresów, operacji na tablicach i bloków. W przypadku bardzo długich wyrażeń akceptowane będzie podzielenie rozwiązania na podwyrażenia. Zadanie 2. (1 pkt) Napisz jednoargumentową funkcję pierwsza(n), która zwraca tablicę liczb pierwszych nie większych niż n. Zadanie 3. (1 pkt) Napisz jednoargumentową funkcję doskonale(n), która zwraca tablicę liczb doskonałych nie większych niż n, na przykład doskonale(1000) ==> [6, 28, 496, 8128] Zadanie 4. (1 pkt) Napisz jednoargumentową funkcję rozklad(n) która oblicza rozkład liczby n na czynniki pierwsze i zwraca jako wynik tablicę tablic [[p 1, w 1 ], [p 2, w 2 ],..., [p k, w k ]] taką, że n = p w 1 1 p w 2 2... p w k k oraz p 1,..., p k są różnymi liczbami pierwszymi. Na przykład rozklad(756) ==> [[2, 2], [3, 3], [7, 1]] Zadanie 5. (1 pkt) Napisz jednoargumentową funkcję zaprzyjaznione(n), która zwraca tablicę par liczb zaprzyjaźnionych nie większych niż n, na przykład zaprzyjaznione(1300) ==> [[220, 284], [1184, 1210]] Dodatkowe wyjaśnienia można znaleźć w polskiej Wikipedii. Za rozwiązanie powyższych zadań można uzyskać co najwyżej 2 pkt.

24 października 2012 Lista 4. Zadanie 1. Typowym zadaniem na zajęciach z programowania jest oprogramowanie wypożyczalni (płyt, samochodów etc) czy biblioteki. Zazwyczaj funkcjonalności czy schematy takich programów są bardzo podobne. Zdefiniuj więc moduł wypożyczeń Wypozyczenia (lub kilka odpowiednich modułów) implementujący odpowiednie schematy wypożyczenia i zwracania przedmiotów do wypożyczalni. Moduł ten powinien być tak napisany, aby łatwo było go wmiksować do odpowiednich klas by utworzyć prawdziwą wypożyczalnię. Korzystając z tego modułu zaimplementuj klasę Biblioteka korzystającą z Wypozyczenia implementującą wypożyczalnię książek. Zadbaj o personalizację komunikatów, tj. aby komunikaty były postaci wypożyczono książkę... a nie wypożyczono obiekt #<Ksiazka:0x7fd04e280f20>, o ile oczywiście przykładową klasą będzie biblioteka. Zadanie 2. Ważnym choć czasem niedocenianym elementem rozwijania oprogramowania jest testowanie. Obiekty można na przykład testować dodając odpowiednie metody testujące. Dla wygody można przyjąć, że nazwy metod testujących zaczynają się od test. Rozszerz podany na wykładzie mix-in Debug o procedurę check, która wyszukuje w klasie wszystkie metody zaczynające się na test i wykonująca je. Przyjmij, że metody test * zwracają wynik testu jako obiekt klasy String. Zadanie 3. Zaprogramuj klasę DrzewoBinarne wraz z operacjami wstaw, istnieje? i usun. Przyjmij, że elementy drzewa są obiektami klasy Element. Podaj przykład wykorzystania tych klas. Zwykle do implementacji takiej klasy konieczne są operatory >, < czy ==, jednak zamiast tego wygodniej jest zaimplementować tylko metodę <==> i dołączyć mix-in Comparable. Zaprogramuj StringBT jako podklasę DrzewoBinarne przechowującą obiekty klasy String. Każde zadanie jest warte 2 punkty. Na pracowni oddaje się jedno zadanie.

7 listopada 2012 Lista 5. Zadanie 1. Zaprogramuj pakiet funkcji przeglądających istniejące serwisy WWW. Pakiet powinien zawierać ogólną funkcję przeglądania stron przeglad(start page, depth, block), gdzie start page to adres strony startowej, depth to głębokość z jaką należy przeglądać serwis, a block to jednoargumentowy blok o argumencie typu String. Funkcja ta powinna przeglądać strony serwisu od podanej strony, i dla każdej z nich wykonać instrukcje zawarte w bloku. Zaprogramuj dwie funkcje: page weight(page), która oblicza liczbę elementów wpływających na czas ściągania i renderowania strony, takich jak obrazki czy aplety; page summary(page), która dla każdej strony wypisuje informację o stronie uzyskaną z nagłówka <head>, tj. tytuł, opis, autor, słowa kluczowe etc. Zadanie 2. Napisz własną wyszukiwarkę, która przegląda wybrany serwis internetowy i zapamiętuje wystąpienia poszczególnych słów, oraz umożliwia wyszukiwanie słow zadanych jako wyrażenie. Kod wyszukiwarki powinien mieć postać modułu zawierającego funkcje: index(start page, depth) która przegląda od podanej strony oraz indeksuje słowa ze strony; search(reg exp), która podaje listę stron na których występują słowa pasujące do reg exp, oczywiście korzystając wyłącznie z zebranej wcześniej informacji. Zadanie 3. Zaprogramuj funkcję distance(page a, page b), która oblicza odległość od strony o url u page a do strony o url u page b, przy czym odległość jest rozumiana jako liczba kliknięć w kolejne odnośniki. Oczywiście można przyjąć jakieś arbitralne ograniczenie na czas przeszukiwania. Zadanie 4. Zaprogramuj pakiet służący do monitorowania wybranych stron i informujący o zmianie treści strony. Na początku podaje się listę stron jakie mają być monitorowane, następnie program oblicza sumę kontrolną np. md5. Następnie co jakiś czas wskazane strony są ponownie odczytywane, i jeżeli nastąpiła zmiana wysyłany jest komunikat na konsolę. Uzupełnij program o możliwość zapisywania stanu sesji (tj. stron oraz sum kontrolnych) i jej odtwarzania. Do tego przydatny będzie moduł YAML. Choć treść powyższe zadań sugeruje rozwiązanie w postaci modułu, proszę zaprogramowane funkcje opakować w klasy i obiekty. Każde z tych zadań jest warte 3 punkty, na zajęciach proszę oddać jedno zadanie.

14 listopada 2012 Lista 6. Do poniższych zadań proszę dołączyć interaktywny miniinterfejs do obsługi poniższych programów; wystarczy jeśli się skorzysta z gets i puts. Poniższe zadania powinne implementować przeglądanie, wyszukiwanie, dodawanie i usuwanie wpisów. Zadanie 1. Zaprogramuj własny organizator swojego czasu zawierający planowane spotkania (od-do), sprawy do załatwienia (do czasu), wraz z opcją przypominania. Dane niech będą przechowywane na dysku, np. korzystając z dbm a, SQL a czy YAML a. Zadanie 2. Napisz program, który przechowuje w swojej lokalnej bazie danych informacje o posiadanych płytach z muzyką (identyfikator płyty, lista utworów i autorzy) wraz z informacjami o wypożyczeniu płyty znajomym. Zadanie 3. Zaprogramuj własny notatnik z kontaktami do znajomych zawierający ich numery telefonów, adresy email czy gg. Dane niech będą przechowywane w bazie danych (typu dbm, pickle czy SQLite). Na zajęcia należy wykonać jedno z tych zadań. Każde zadanie jest warte 3 punkty. Proszę zadbać też o komentarze w swoich programach.

21 listopada 2012 Lista 7. Zadanie 1. Zaprogramuj serwer logów (drb), który będzie przechowywał nadesłane komunikaty w bazie danych wraz z czasem ich otrzymania. Serwer powinien implementować funkcję save(prg id, msg), gdzie prg id jest identyfikatorem programu (serwer może zbierać logi z różnych aplikacji), a msg oznacza obiekt klasy String. Dodatkowo zaimplementuj na serwerze metodę raport(od, do, prg id, re), gdzie od i do są obiektami klasy Time definiującymi zakres wyszukiwania, prg id jest identyfikatorem programu, a re wyrażeniem regularnym. Funkcja powinna zwracać obiekt String, będący html em. Sposób przechowywania (dbm, sqlite3 etc.) jest dowolny. Zadanie 2. Zaimplementuj repozytorium do przechowywania obiektów, tj. serwer implementujący metody store(obj, id), restore(id) i delete(id), gdzie id jest dowolnym identyfikatorem obiektu. Zaprogramuj również metody: stan, która zwraca html (jako string) z informacją o zapisanych obiektach, tj. klasę obiektu wraz ze stanem jego pól, oraz wyszukiwarkę obiektów implementujących daną jako argument listę metod. Zadanie 3. Serwer drb może być wykorzystywany jako narzędzie do zdalnego monitorowania i zarządzania komputerami, tj. na każdym komputerze klienckim jest uruchomiony serwer z metodami, które wywołują polecenia systemowe sprawdzające podstawowe wartości, takie jak sprawdzenie obciążenia procesora czy ilość wolnego miejsca na dysku. Zaprogramuj taki serwer wraz z klientem, który mając daną listę komputerów będzie je odpytywał co jakiś czas i raportował ich stan. Zbadaj, jaki musi być ustawiony poziom zmiennej $SAFE. Na zajęcia należy wykonać jedno z tych zadań. Każde zadanie jest warte 3 punkty. Proszę zadbać też o komentarze w swoich programach.

28 listopada 2012 Lista 8. Zadanie polega na uzupełnieniu wcześniej zaprogramowanych zadań o wątki i testy jednostkowe. Dobrym kandydatem są np. zadania z listy 5. W przypadku testów można wybrać inne zadanie niż wybrane dla wątków. Wymagane jest stworzenie przynajmniej 3 metod z testami. Za to zadanie można otrzymać do 3 punktów.

5 grudnia 2012 Lista 9. Zadanie 1. Zaprogramuj interfejs graficzny (np. tk) do jednego z zadań z listy 6. Zadanie 2. Zaprogramuj program rysujący wykresy kilku ustalonych funkcji. Przyjmij, że wskazanie funkcji następuje w menu, natomiast wartości od do przedziału rysowania są określane w kontrolkach Entry. Zadanie 3. Zaprogramuj następującą prostą grę: na rysunku jest armata, która ma regulowany kąt wystrzału i prędkość początkową pocisku, oraz cel (odległość między armatą i celem może być losowa). Kąt wystrzału oraz prędkość pocisku powinna być zadawana przez użytkownika, np. za pomocą kontrolek Entry. Zadanie polega na takim wybraniu kąta i prędkości, aby pocisk trafił w cel. Korzystając z prostych praw fizyki narysuj tor pocisku oraz oblicz, czy pocisk trafił w cel. Zadanie 4. Bardzo ładnymi figurami geometrycznymi są fraktale. Sporo materiałów o nich można znaleźć w internecie (są również książki o fraktalach w naszej bibliotece). Zadanie polega na zaprogramowaniu kilku fraktali. Fraktale zwykle mają parametry, które powinny być podawane np. poprzez kontrolki Entry. Każde zadanie jest warte 3 pkt., jak zwykle można oddać tylko jedno. To już jest ostatnia lista zadań. Proszę zastanowić się nad tematem projektu i uzgodnić go z prowadzącym pracownię.