niedziela, 24 kwietnia 2016

Tydzień 9: klasówka treningowa, wyjątki

Przypomnienie: za tydzień na wykładzie jest klasówka.

Ćwiczenia

Głosowanie. Klasówka z roku 2013/2014.
Rozgrywki piłkarskie. Klasówka z roku 2012/2013.

Laboratorium 

  1. Zaprojektuj interfejs Stos reprezentujący stos liczb całkowitych.
  2. Zaimplementuj interfejs Stos za pomocą tablicy liczb całkowitych. Rozmiar tablicy ma być podany w konstruktorze. Twoja implementacja powinna rzucać odpowiedni wyjątki (trzeba je zdefiniować) przy próbie zdjęcia elementu z pustego stosu i położenia elementu na przepełniony stos.
  3. Napisz program, który wczytuje wyrażenie w odwrotnej notacji polskiej (z działaniami +, −, *, /) i wylicza jego wartość używając stosu z poprzedniego zadania.
W tym tygodniu nie ma pracy domowej.

wtorek, 19 kwietnia 2016

Tydzień 8: klasówka treningowa, interfejsy

Ćwiczenia

Majówka - klasówka z roku 2013/2014.

Laboratorium

  1. Zaimplementuj drzewo BST przechowujące liczby całkowite. Chcemy uniknąć dużej liczby testów (czy jest lewe dziecko, czy jest prawe dziecko,...) w kodzie. Jak będziesz reprezentować puste drzewo? Wskazówka: użyj polimorfizmu.
  2. Kolejka priorytetowa to struktura danych, do której można wstawiać elementy i z niej je pobierać. Kolejność pobierania elementów zależy od priorytetu tych elementów, najpierw wydawane są elementy o wyższym priorytecie. Zdefiniuj i zaimplementuj interfejs KolejkaPriorytetowa z operacjami:
    • void dodaj(int priorytet, String s) – dodaje do kolejki nowy napis z zadanym priorytetem.
    • String[] pobierz() – pobiera z kolejki wszystkie napisy obiekty o najmniejszej wartości priorytetu (moze byc ich wiele, stad wynikiem jest tablica). Pobrane elementy są usuwane z  kolejki.
    • boolean czyPusta() – wynikiem jest true wtedy i tylko wtedy, gdy w kolejce nie ma już elementów.
    Zdefiniuj klasę realizującą ten interfejs za pomocą jednej z metod: lista posortowana, kopiec, drzewo BST. Napisz program, który wczyta ze standardowego wejścia kilka napisów, a następnie wypisze wczytany zbiór posortowany (za pomocą KolejkiPriorytetowej) ze względu na liczbę wystąpień litery a w napisie. 

Praca domowa nr 8

Zadanie 1.

Rozwiązanie należy wysłać mailem. W temacie wiadomości powinien znaleźć się ciąg PO oraz numer pracy domowej (tutaj: 8). Pliki źródłowe powinny być spakowane zip-em. Nazwa pliku powinna zawierać imię i nazwisko autora.

Film: Inheritance, Polymorphism, & Testing

Ciekawy wykład o programowaniu bez if-ów, między innymi na przykładzie wyrażeń.

wtorek, 12 kwietnia 2016

Tydzień 7: wyrażenia cz. 2 + duże zadanie zaliczeniowe

Ćwiczenia

Kontynuacja zadania z poprzedniego tygodnia:
Chcemy zdefiniować klasę obiektów reprezentujących wyrażenia arytmetyczne jednej zmiennej rzeczywistej (x). Interesują nas następujące operacje:

  • policzenie wartości w zadanym punkcie,
  • policzenie (symboliczne) pochodnej,
  • policzenie (numeryczne) całki oznaczonej,
  • wypisywanie,
  • upraszczanie.
Wyrażenia mogą zawierać:
  • stałe liczbowe,
  • wystąpienia zmiennej x,
  • operatory arytmetyczne (dwuargumentowe): +, -, *, /, ...
  • funkcje jednoargumentowe: sin, cos, lg, ...
  • nawiasy okrągłe.
 Laboratorium jest odwołane (Olimpiada Informatyczna)

Zadanie domowe nr 1

W moodle'u pojawiła się treść pierwszego dużego zadania zaliczeniowego.
Moje wymagania formalne co do rozwiązania:
  • Proszę przysłać wyłącznie pliki źródłowe, z zachowaniem struktury pakietów. Proszę nie przysyłać projektów z Eclipse ani plików .class.
  • Plik z rozwiązaniem powinien mieć nazwę postaci ImięNazwisko.zip
Rozwiązania należy wysłać za pomocą moodle'a. 

środa, 6 kwietnia 2016

Tydzień 6: wyrażenia cz. 1

Ćwiczenia

Chcemy zdefiniować klasę obiektów reprezentujących wyrażenia arytmetyczne jednej zmiennej rzeczywistej (x). Interesują nas następujące operacje:

  • policzenie wartości w zadanym punkcie,
  • policzenie (symboliczne) pochodnej,
  • policzenie (numeryczne) całki oznaczonej,
  • wypisywanie.
Wyrażenia mogą zawierać:
  • stałe liczbowe,
  • wystąpienia zmiennej x,
  • operatory arytmetyczne (dwuargumentowe): +, -, *, /, ...
  • funkcje jednoargumentowe: sin, cos, lg, ...
  • nawiasy okrągłe.

 Laboratorium

  1. Bitwa robotów wojennych odbywa się na polu bitwy reprezentowanym przez planszę o rozmiarze 8 na 8. Uczestniczą w niej dwa roboty, których celem jest zniszczenie się nawzajem.
    Początkowo roboty ustawione są tak, jak na poniższym diagramie, gdzie 'vA' oraz '^B' reprezentują roboty A i B skierowane odpowiednio na południe (v) i na północ (^).
     _ _ _ _ _ _ _ _
     _ _ _ vA_ _ _ _
     _ _ _ _ _ _ _ _
     _ _ _ _ _ _ _ _
     _ _ _ _ _ _ _ _

     _ _ _ _ _ _ _ _

     _ _ _ _ ^B_ _ _

     _ _ _ _ _ _ _ _

    Zaprojektuj klasy reprezentujące pole bitwy oraz roboty. Zaimplementuj wypisywanie aktualnego stanu pola bitwy.
  2. (Ciąg dalszy zadania 1) Każda tura bitwy składa się z akcji wykonywanych kolejno przez roboty A i B. Możliwe akcje dla każdego robota:
    • obrót w lewo lub w prawo
    • krok do przodu. Wykonanie jest możliwe tylko wtedy, gdy docelowe pole jest wolne.
    • strzał. Robot strzela przed siebie laserem mającym zasięg wzdłuż całej linii.
  3. Wszystkie akcje odbywają się względem aktualnego kierunku robota. Jeżeli w wyniku strzału w jego zasięgu znalazł się robot-przeciwnik, zostaje on zniszczony i gra kończy się.

    Bitwa trwa 20 tur lub do czasu, gdy jeden robot zniszczy drugiego.

    Do klas z poprzedniego zadania dopisz symulację bitwy robotoów. Każda akcja robota powinna zostać wypisana na ekranie. Program powinien wypisywać stan pola bitwy po każdej turze. Zadbaj o właściwy podział odpowiedzialności między klasami.
  4. (Kontynuacja zadania 2) Bitwa robotów - pełna treść klasówki z roku 2007/2008

Praca domowa nr 6

Do wyboru: zadanie 1+2 lub zadanie 1+3. Zadanie 1 musi być zrobione osobno.

Rozwiązanie należy wysłać mailem. W temacie wiadomości powinien znaleźć się ciąg PO oraz numer pracy domowej (tutaj: 6). Pliki źródłowe powinny być spakowane zip-em. Nazwa pliku powinna zawierać imię i nazwisko autora

wtorek, 29 marca 2016

Tydzień 5: dziedziczenie

Ćwiczenia

  1. Program graficzny umożliwia rysowanie następujących figur geometrycznych: prostokąt, koło, trójkąt, równoległobok, sześciokąt. Zaprojektować klasy reprezentujące figury geometryczne. Zaimplementować metodę liczącą pole powierzchni tablicy figur.
  2. Zaprojektować i zaimplementować klasę Student, przechowującą imię, nazwisko, nr indeksu, nr roku, listę przedmiotów studenta. Zaprojektować konstruktory oraz inne metody.
  3. Wydzielić ze Studenta nadklasę Osoba, z odpowiednimi atrybutami, konstruktorami i metodami.

Laboratorium

Zaprojektuj hierarchię klas opisujących pojazdy komunikacji miejskiej. Wyraź w tej hierarchii następujące fakty:

  • wszystkie pojazdy komunikacji miejskiej (k. m.) są pojazdami,
  • komunikacja miejska używa tramwajów i autobusów,
  • pojazdy są garażowane w zajezdniach,
  • każdy pojazd zna swoją szybkość maksymalną,
  • każdy pojazd k. m. zna swój numer,
  • każdy pojazd k. m. zna swoją zajezdnię,
  • każdy tramwaj jest zestawem 1 do 3 wagonów (i wie, z ilu wagonów się składa),
  • każdy autobus wie, ile zużył paliwa w bieżącym miesiącu,
  • każda zajezdnia zna swoja nazwę,
  • każda zajezdnia wie, jakie pojazdy do niej należą.
Każdy pojazd musi umieć podać swój opis w postaci napisu. Opis ma zawierać wszystkie informacje, które zna dany pojazd (np. numer, czy szybkość maksymalną). Opis zajezdni to nazwa zajezdni i opisy poszczególnych pojazdów.

Praca domowa nr 5

Zadanie o tramwajach. Rozwiązanie należy wysłać mailem. W temacie wiadomości powinien znaleźć się ciąg PO oraz numer pracy domowej (tutaj: 5). Pliki źródłowe powinny być spakowane zip-em. Nazwa pliku powinna zawierać imię i nazwisko autora.

Oferta pracy: Asystent Redaktora Naczelnego

Firma, w której pracuję szuka studentów do pomocy w promocji naszego produktu, Vertabelo. 

Vertabelo to usługa pozwalająca na wizualne projektowanie baz danych w chmurze bezpośrednio przez przeglądarkę internetową. Na naszej stronie prowadzimy blog o bazach danych, który dziennie odwiedza ponad 3 tysiące osób. Ponadto tworzymy interaktywne kursy języka SQL w serwisie Vertabelo Academy.

Szukamy osób władających językiem angielskim, które pomogą nam w prowadzeniu bloga technicznego Vertabelo oraz w innych działaniach marketingowych.

Zakres obowiązków

  • Wsparcie w procesie przygotowania artykułów na blog (komunikacja z autorami bloga, edytorami i innymi osobami zaangażowanymi w przygotowanie treści bloga).
  • Aktualizacja treści opublikowanych na blogu.
  • Pomoc w przygotowaniu nowych kursów w Vertabelo Academy (formatowanie przygotowanych treści w HTML, testowanie nowych kursów).
  • Redagowanie krótkich ogłoszeń o nowych funkcjonalnościach aplikacji.

Wymagane kwalifikacje

  • Znajomość zagadnień związanych z wykorzystaniem baz danych.
  • Podstawowa znajomość języka HTML.
  • Podstawowa znajomość narzędzi deweloperskich.
  • Podstawowa znajomość systemu Linux od strony użytkownika.
  • Dobra znajomość języka angielskiego.

Dodatkowym atutem będzie:

  • Prowadzenie własnego bloga.
  • Aktywność w serwisach społecznościowych dla programistów (np. Twitter, Stackoverflow, Github).

Warunki zatrudnienia

  • Umowa-zlecenie.
  • Wynagrodzenie: 3000-4000 zł brutto za pełny etat.
  • Minimum pół etatu.
  • Miejsce pracy: Warszawa, okolice metra Wierzbno.
Oferty prosimy przesłać na adres career@vertabelo.com

Na zgłoszeniu proszę umieścić klauzulę o następującej treści: „Wyrażam zgodę na przetwarzanie moich danych osobowych dla potrzeb niezbędnych do realizacji procesu rekrutacji (podstawa prawna DZ. U. Nr 133, poz. 883)”.

Szczegółowe ogłoszenie.