wtorek, 31 marca 2015

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

Zaprojektuj hierarchię klas opisujących pojazdy komunikacji miejskiej. Wyraź w tej hierarchii nastepują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ą zajezdnieę,
  • 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żda zajezdnia ma nazwę.
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 6

Zadanie o tramwajach. Termin oddania: 8 kwietnia 2015 r.

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, 24 marca 2015

Tydzień 5: klasy cz. 2

Ćwiczenia

Zaimplementuj liczby całkowite dowolnego rozmiaru. Operacje do zaimplementowania: dodawanie, odejmowanie, mnożenie przez liczbę typu int, tworzenie.

Laboratorium

Zaimplementuj klasę Wielomian. Wielomian powinien mieć:
  • konstruktor bezargumentowy tworzący wielomian zerowy;
  • konstruktor tworzący jednomian;
  • konstruktor tworzący wielomian na podstawie tablicy współczynników; nie marnujemy pamięci – trzymamy tablice długości stopień wielomianu + 1;
  • metodę liczącą wartość wielomianu w punkcie;
  • metody dodaj(Wielomian) i odejmij(Wielomian) zwracającą nowy wielomian będący sumą (różnicą) pierwszego i drugiego argumentu;
  • (dla chętnych) metodę pomnóż(Wielomian) zwracającą iloczyn pierwszego i drugiego argumentu.
W nowym pakiecie utwórz klasę Program korzystającą z Wielomianu. Program bierze jako argumenty wiersza poleceń listę współczynników pierwszego wielomianu, nastepnie symbol działania, a potem listę współczynników drugiego wielomianu. Program wypisuje podanego wynik działania na standardowe wyjście. Np.
java main.Program 1 0 1 + 1 1 -1 1
daje w wyniku
2+x^1+x^3

Praca domowa nr 5

Zadanie o wielomianie. Termin oddania: 1 kwietnia 2015 r.

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

wtorek, 17 marca 2015

Tydzień 4: klasy

Ćwiczenia

  1. Zdefiniuj klasę Pracownik (podobnie do klasy Osoba z wykładu, dodając jeszcze tekstową informację o zajmowanym przez pracownika stanowisku). Następnie zdefiniuj klasę Firma, która przechowuje w tablicy spis wszystkich pracowników (możesz założyć, że liczba pracowników nie przekracza 100). Zdefiniuj metody dodawania nowych pracowników do firmy oraz wypisywania aktualnego spisu pracowników. Zastanów się, jak przy tym ostatnim zadaniu rozdzielić odpowiedzialności pomiędzy obie klasy.
  2. Zdefiniuj klasę opisującą datę. Zastanów się nad wyborem wewnętrznej reprezentacji dat. Zdefiniuj metody pozwalające na odczytywanie bieżącej daty i przestawianie jej o jeden tydzień w przód i w tył. Zadbaj o dobranie odpowiednich modyfikatorów dostępu do składowych.

Laboratorium

  1. Napisz klasę Osoba. Każda osoba ma imię, nazwisko oraz płeć. W innej klasie napisz program, który wczytuje listę 10 osób, a następnie wypisuje ich dane w odwrotnej kolejności. Skompiluj i uruchom program a) pod Eclipse b) z linii komend.
  2. Zmień klasę Osoba z poprzedniego zadania tak, aby każda osoba miała matkę i ojca. Stwórz kilka osób i powiązań pomiędzy nimi. Dodaj metodę, która zwraca imię i nazwisko ojca lub napis „Nieznany”, jeśli referencja do ojca jest nullem. Dodaj metodę, która przyjmuje parametr typu Osoba i zwraca informacje, czy podane osoby mają tę sama matkę.
  3. Utwórz klasę Ulamek reprezentującą ułamek zwykły. Klasa ma udostępniać operacje dodawania, odejmowania, mnożenia, dzielenia oraz wypisywania ułamków (metoda toString()). Ułamki powinny być przechowywane w postaci uproszczonej (zadbaj o to w konstruktorze). W innej klasie napisz program, który wczyta 10 ułamków ze standardowego wejścia, a następnie policzy ich sumę oraz iloczyn.

 Praca domowa nr 4

Do wyboru: zadanie 1+2 lub zadanie 3.

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

wtorek, 10 marca 2015

Tydzień 3: tablice w Javie

Ćwiczenia

  1. Napisz fragment kodu, który wpisuje do tablicy liczb całkowitych kolejne cyfry rozwinięcia dziesiętnego liczby pi.
  2. Napisz funkcję fizzBuzz implementującą popularną anglosaską grę dla dzieci. Funkcja bierze jako argumenty dwie liczby całkowite a i b. Jako wynik funkcja zwraca tablicę napisów reprezentujących liczby od a do b, ale
    • jeśli dana liczba dzieli się przez 3, zamiast niej w tablicy ma być napis "Fizz";
    • jeśli dana liczba dzieli się przez 5, zamiast niej w tablicy ma być napis "Buzz";
    • jeśli dana liczba dzieli się przez 3 i przez 5, zamiast w niej w tablicy ma być napis "FizzBuzz".
    Podobno to zadanie jest popularne na rozmowach kwalifikacyjnych. (Moje osobiste doświadczenia tego nie potwierdzają.)
  3. Wygeneruj tablicę napisów długości 52, zawierającą nazwy wszystkich kart z talii. Jakie są możliwe podejścia do tego zadania?
  4. Dane są dwie tablice liczb całkowitych posortowane rosnąco. Traktujemy je jako reprezentacje dwóch zbiorów. Napisać fragment kodu w Javie, który wypisze na wyjście część wspólną
    obu zbiorów. 
  5. Dane są dwie tablice liczb całkowitych. Tablice reprezentują dwa wielomiany. Napisz fragment kodu w Javie, który policzy sumę tych wielomianów. Zadbaj o to, by rozmiar tablicy wynikowej był optymalny.
  6. Dana jest tablica dwuwymiarowa. Napisz fragment kodu w Javie, który zamieni tę tablicę w prawdziwą tablicę prostokątną. Elementy tablicy wejściowej, które są za krótkie powinny zostać uzupełnione zerami.
  7. Dane są dwie tablice prostokątne o takich samych wymiarach. Tablice reprezentują macierze. Napisz fragment kodu w Javie, który policzy sumę tych macierzy.
  8. Dane są dwie tablice kwadratowe o takich samych wymiarach. Tablice reprezentują macierze. Napisz fragment kodu w Javie, który policzy iloczyn tych macierzy.
  9. Dana jest tablica n na n wartości logicznych, reprezentująca graf znajomości między n osobami: zna[i][j] oznacza, że i-ta osoba zna j-ta osobę. Osobistość to osoba, którą każdy zna, ale ona nie zna nikogo. Sprawdzić, czy w danej tablicy jest jakaś osobistość.
  10. (Głosowanie większościowe) W tablicy n-elementowej są liczby z przedziału od 1 do k oznaczające głosy na kandydatów.  W głosowaniu zwycięża osoba, która dostała więcej niż n/2 głosów. Dla danej tablicy głosów wskazać zwycięzcę lub 0, gdy w głosowaniu nie ma zwycięzcy.

Laboratorium

  1. Skompiluj i uruchom w Eclipse program HelloWorld z poprzednich zajęć.
  2. Podepnij w Eclipse źródła Javy.
  3. Umieść program HelloWorld w pakiecie helloworld. Skompiluj i uruchom program:
    • z linii poleceń,
    • z Eclipse.
  4. Zadania z ćwiczeń.

Praca domowa nr 3

Do wyboru co najmniej dwa zadania spośród zadań 4-10 z ćwiczeń.

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

czwartek, 5 marca 2015

Oferta pracy: Technical Writer

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ą. Szukamy osób władających językiem angielskim, które pomogą nam w rozwoju produktu.

Zakres obowiązków

  • Tworzenie krótkich tutoriali dla użytkowników.
  • Tworzenie dokumentacji produktu.

Wymagane kwalifikacje

  • Dobra znajomość języka angielskiego (swoboda formułowania pisemnych wypowiedzi).
  • Podstawowe doświadczenie w korzystaniu z wizualnych narzędzi deweloperskich.
  • Podstawowa znajomość zagadnień związanych z wykorzystaniem relacyjnych baz danych.

Warunki zatrudnienia

  • Praca czasowa na umowę zlecenia.
  • Możliwość pracy zdalnej w niepełnym wymiarze godzin.
  • Wynagrodzenie 25 złotych brutto za godzinę.
Oferty prosimy przesłać na adres contact@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

wtorek, 3 marca 2015

Zajęcia 2: abstrakcyjne typy danych, wstęp do Javy

Ćwiczenia

  1. Abstrakcyjne typy danych: stos, kolejka, graf. 
  2. Model dziedziny dla systemu rejestracji kurdli.

Laboratorium

  1. Skompiluj i uruchom na swoim komputerze program HelloWorld.
  2. Napisz program wypisujący na ekran wszystkie argumenty z wiersza polecenia.
  3. Napisz program wyliczający wartość największego wspólnego dzielnika dwu zadanych wartości.
  4. Napisz program wypisujący rozkład zadanej liczby naturalnej większej od zera na czynniki pierwsze.
  5. Napisz program wypisujący pierwszych n liczb Fibonacciego.
  6. Napisz program wypisujący pierwszych n liczb pierwszych. Użyj sita Eratostenesa.
Parametry działania programu można czytać ze standardowego wejścia lub brać z argumentów linii poleceń.

 Ściągawki:

  1. Czytanie ze standardowego wejścia: użyj klasy java.util.Scanner.
    // import
    import java.util.Scanner; 
    
    // użycie
    Scanner s = new Scanner(System.in);
    String input = s.next();
    ...
    s.close();
    
  2. Konwersja napisu na liczbę:
    int number = Integer.parseInt("123");
    

Praca domowa nr 2

Do wyboru jedno zadanie spośród: zadanie 3, zadanie 4, zadanie 5, zadanie 6.

Rozwiązanie należy wysłać mailem. W temacie wiadomości powinien znaleźć się ciąg PO oraz numer pracy domowej (tutaj: 2).