semestr letni 2014/2015
Ćwiczenia: środy 12.15-13.45, sala 3120
Laboratorium: środy 14.15-15.45, sala 2041
piątek, 3 lipca 2015
Skróty klawiszowe w Eclipse
Na tej stronie można nauczyć się skrótów klawiszowych w Eclipse.
Etykiety:
link
wtorek, 2 czerwca 2015
Tydzień 15: egzamin & Swing
Ćwiczenia
Wycieczka objazdowa (Egzamin z roku 2013/2014)Laboratorium
Przed przystąpieniem do rozwiązywania zadań pobierz archiwum ZIP z szablonami zadań na dzisiejsze laboratorium. Dzisiejsze zajęcia polegąją na uzupełnieniu pobranych szablonów zgodnie z instrukcjami w plikach.- Prawie jak HelloWorld. Program uruchamia proste okienko, które umie się zamknąć.
- Do okienka dodaj guzik Quit, który kończy wykonanie programu (System.exit(0);). Zwróć uwagę na wykorzystanie zarządcy widoku (LayoutManager) i klasy anonimowej.
- Ćwiczenie na wygenerowanie ciekawego układu klawiszy.
- Prosta obsługa zdarzeń. Program informuje, który klawisz został naciśnięty.
- "Skomplikowana" obsługa zdarzeń. Aplikacja zmieniająca kolor panelu w zależności od wybranych ustawień.
- Napisz użyteczną aplikację z użyciem widoku klawisz z zadania 2.
wtorek, 26 maja 2015
Tydzień 14: egzamin & strumienie
Ćwiczenia
Platforma eTam (egzamin z roku 2012/2013).Laboratorium
- Napisz program, który wypisuje na ekran zawartosc pliku tekstowego. Nazwę pliku do wypisania wczytaj ze standardowego wejścia za pomocą odpowiednich strumieni.
- Napisz program, który dla podanego pliku wypisze, z ilu bajtów składa się ten plik.
- Napisz program, który dla danego pliku tekstowego wypisze liczbę znaków oraz liczbę białych znaków w tym pliku.
- (a) Napisz program, który kopiuje znak po znaku pliki tekstowe.
(b) Zmień program z poprzedniego punktu tak, aby czas kopiowania był mierzony i wypisywany na konsole. Sprawdź, jaki wpływ na efektywność ma użycie buforowania. - Napisz program, który odwróci zawartość pliku tekstowego w nastepujący sposób:
(a) Odwróci kolejność wierszy.
(b) W każdym wierszu odwróci kolejność słów.
(c) W nazwie pliku odwróci kolejność liter, pomijając ewentualne rozszerzenie .txt. - Napisz Iterator<String>, w którym metoda next() zwraca kolejne
linie wczytane z Readera. Konstruktor ma dostawać obiekt Readera. Po
wczytaniu wszystkiego Reader ma zostać zamknięty. Zauważ, że Iterator
nie może rzucać wyjątków IOException. Niech przechwyci taki wyjątek i
pozwoli normalnie iterować po wszystkich poprawnie wczytanych liniach.
Wskazówka: BufferedReader ma metodę readLine(); zwraca ona null, gdy napotka koniec pliku.
Wskazówka 2: aby hasNext() działał poprawnie, trzeba zawsze mieć wczytana i spamiętaną jedną linie w przód.
Etykiety:
egzamin,
strumienie
sobota, 16 maja 2015
Tydzień 13: kolekcje cz. 3
Ćwiczenia
Na ćwiczenia proszę rozproszyć się po innych grupach. Ćwiczenia z PO o godzinie 12:- sala 3130, Kazimierz Grygiel
- sala 3140, Michał Pilipczuk
- sala 3150, Tomasz Waleń
- sala 3160, Krzysztof Szafran
- sala 3230, Konrad Durnoga
Laboratorium
- Uruchom programy Zagadka.java i Zagadka2.java. Wyjaśnij, dlaczego programy tak się zachowują. Co trzeba zmienić, żeby programy zachowywały się zgodnie z oczekiwaniami autora?
- Zaproponuj interfejs ImmutableSet<E>
reprezentujący niezmienialny zbiór. Operacje wstawiania i usuwania powinny tworzyć nowy zbiór, a nie modyfikować istniejący.
Przygotuj implementację tego interfejsu za pomocą drzew BST. Wszystkie używane pola mogą być zadeklarowane jako final, wtedy na pewno struktura będzie niezmienialna. Niech operacje takie jak size() i isEmpty() działają w czasie stałym.
Jakie znasz niezmienialne klasy w bibliotece standardowej Javy? Jest ich całkiem sporo!
Jakie są zalety użycia klasy niezmienialnej (ang. immutable)? Jakie są wady?
Etykiety:
kolekcje
wtorek, 12 maja 2015
Tydzień 12: kolekcje cz. 2
Ćwiczenia
MasterMind to gra planszowa dla dwóch osób. Gracze mają do dyspozycji pionki w sześciu kolorach. Pierwszy gra układa z pionków kod czteroelementowy, kolory w kodzie mogą się powtarzać. Zadaniem drugiego gracza jest odgadnięcie kodu wybranego przez pierwszego gracza.Drugi gracz ma parzystą liczbę prób (zwykle 10). W każdej próbie gracz podejmuje próbę odgadnięcia kodu wybranego przez przeciwnika. Pierwszy gracz ocenia próbę drugiego gracza za pomocą białych i czarnych pionków. Za każdy pionek we właściwym kolorze i na właściwej pozycji przyznaje czarny pionek. Za każdy pionek we właściwy kolorze, ale na niewłaściwej pozycji przyznaje biały pionek. Następnie drugi gracz ma prawo podjąć kolejną próbę.
Zadanie: zaimplementować jeden krok algorytmu grającego w MasterMind. Zaimplementujemy algorytm, który trzyma zbiór możliwych jeszcze układów. Zgadywanie polega na wybraniu ze wszystkich możliwych jeszcze układów takiego, który najlepiej dzieli ten zbiór (generuje podział minimalizujący wielkość największego zbioru możliwych układów po zapytaniu). Przy parametrach standardowego MasterMinda taki algorytm radzi sobie bez problemu.
Laboratorium
- Napisz program, który dla danego pliku tekstowego wypisze następujące informacje:
- z ilu słów składa się plik,
- słowo na pozycji 45,
- z ilu różnych słów składa się plik,
- wszystkie słowa pliku w kolejności alfabetycznej (każde słowo na liście pojawia się tylko raz),
- dla każdego słowa, ile razy to słowo występuje w pliku,
- wszystkie słowa, które mają więcej niż 6 liter, w kolejności alfabetycznej, bez powtórzeń.
- Przy wypisywaniu zawartości katalogu domyślne sortowanie jest leksykograficzne. Zatem plik laboratorium12.txt jest wypisywany przed plikiem laboratorium2.txt. Napisz własny komparator, który sortuje tak, że nazwa laboratorium2.txt jest wcześniej niż nazwa laboratorium12.txt. Użyj go do wypisania w odpowiedniej kolejności listy plików z wybranego katalogu.
Wskazówka. Do odczytywania zawartości katalogu można użyć klasy File.
Etykiety:
kolekcje
wtorek, 5 maja 2015
Tydzień 11: kolekcje
Ćwiczenia
- Dany jest graf. Podzielić jego wierzchołki na możliwie
najwięcej niepustych zbiorów, tak by podział miał tę własność, że każda para wierzchołków należących
do różnych zbiorów jest połączona krawędzią.
Dane:
- pierwszy wiersz: liczba wierzchołków, liczba krawędzi
- kolejne: opisy poszczególnych krawędzi (jako dwie liczby, nr pierwszego i nr drugiego wierzchołka).
3 3
1 2
2 3
3 1
(graf trójkąt)
Wynik: Posortowane niemalejąco liczby elementów poszczególnych zbiorów wierzchołków.
W zadaniu należy zaprojektować struktury danych przechowujące graf (chcemy korzystać z kolekcji w Javie) oraz zaimplementować odpowiedni algorytm. - (Merge uporządkowanych iteratorów) Dane są dwa iteratory na liczbach całkowitych, o których wiemy, że zwracają liczby w porządku rosnącym. Utworzyć uporządkowaną rosnąco listę zawierającą te same elementy, co w danych iteratorach.
Laboratorium
- Anagramy to słowa, które składają się z tych samych liter, ale w różnej kolejności. Napisz program, który dla danej listy słów wypisze wszystkie grupy anagramów pojawiające się na tej liście.
- Napisz własną implementację listy wraz z iteratorem. Twoja lista powinna mieć nastepujące operacje:
- dodawanie nowego elementu,
- rozmiar,
- test niepustości,
- iterowanie przy pomocy pętli foreach.
- Pętlą foreach można iterować po obiektach implementujących interfejs Iterable.
- Do implementacji iteratora trzeba użyć klas wewnętrznych (ang. inner classes). Klasa wewnętrzna ma dostęp do prywatnych składowych otaczającego obiektu.
- Warto przeczytać rozdział o klasach wewnętrznych z tutorialu na stronie Oracle.
- Ściągawkę, jak napisać własny iterator można znaleźć w klasie java.util.AbstractList. W Eclipse trzeba mieć podpięte źródła Javy.
wtorek, 28 kwietnia 2015
Tydzień 10: typy uogólnione
Ćwiczenia
- Zaimplementuj stos parametryzowany typem elementów przechowywanych na stosie.
- Napisz własne drzewo BST, parametryzowane typem elementów przechowywanych w drzewie. Porządek powinien być zadany jako java.util.Comparator lub java.util.Comparable.
- Napisz procedurę sortującą tablicę dowolnego typu. Porządek definiujemy jak w zadaniu 2.
Laboratorium
- Zaimplementuj drzewo BST przechowujące wartości tego
samego typu. Algorytm porównujący może być dostarczany w postaci (do
wyboru) Comparatora lub interfejsu Comparable. Twoje drzewo powinno udostępniać nastepujące operacje:
- tworzenie pustego drzewa,
- dodawanie elementu do drzewa,
- sprawdzenie, czy drzewo zawiera wskazany element,
- wypisanie wszystkich elementów drzewa w kolejności rosnącej.
Praca domowa nr 11 (dodatkowa)
Zadanie o drzewie BST. Termin oddania: 6 maja 2015 r.
Etykiety:
praca domowa 11 (bst),
typy uogólnione
wtorek, 21 kwietnia 2015
Tydzień 9: wyjątki, JUnit
Ćwiczenia
URI (ang. Uniform Resource Identifier) jest standardem internetowym umożliwiającym łatwą identyfikację zasobów w sieci. Poniżej fragment odpowiedniego dokumentu RFC, który określa jak wygląda URI./** * An example URI and its component parts. [rfc3986] * * foo://example.com:8042/over/there?name=ferret#nose * \_/ \______________/\_________/ \_________/ \__/ * | | | | | * scheme authority path query fragment * * The pattern is * <scheme> : <authority> / <path> ? <query> # <fragment> */oraz szkielet walidatora sprawdzającego poprawność URI.
public class CustomURIValidator { String scheme, authority, path, query, fragment; public void validate(String uri) throws ... { ... validateScheme(); validateAuthority(); validatePath(); } /** * @return true if c is either ALPHA, DIGIT, ’-’, ’.’, ’_’ * or ’~’ **/ public static boolean isUnreservedCharacter(char c) { ... } private void validateAuthority() throws EmptyComponentException, ComponentTooLongException { if (authority == null || authority.length() < 1) throw new EmptyComponentException("authority"); if (authority.length() > 255) throw new ComponentTooLongException("authority",255); } private void validatePath() throws ComponentTooLongException, IllegalCharacterException { //leave blank } private void validateScheme() throws ... { ... } }
- Uzupełnij metodę validate o kod dzielący URI na składowe i przypisujący składowe do odpowiednich pól walidatora.
- Uzupełnij metodę validateScheme() tak, aby spełnione były następujące wymagania:
- schemat musi być niepusty.
- schemat nie może być dłuższy niż 255 znaków.
- schemat może zawierać jedynie litery, cyfry, myślnik, kropkę, znak podkreślenia lub tyldę (tzw. unreserved characters).
- Dodajmy nowy wyjątek InvalidCustomURIException:
public class InvalidCustomURIException extends Exception {/*...*/} public class IllegalCharacterException extends InvalidCustomURIException {/*...*/} public class EmptyComponentException extends InvalidCustomURIException {/*...*/} public class ComponentTooLongException extends InvalidCustomURIException {/*...*/}
Zmień kod metody validate w ten sposób, aby rzucany był jeden wyjątek InvalidCustomURIException zawierający w sobie informacje o wszystkich błędach ze wszystkich składowych. Możesz zmienić kod wyjątków.
public class IllegalCharacterException extends Exception { public IllegalCharacterException(String msg) { super(msg); } } public class EmptyComponentException extends Exception { public EmptyComponentException(String msg) { super(msg); } } public class ComponentTooLongException extends Exception { public ComponentTooLongException(String component, int expected) { super("The " + component + " component can not be longer than" + expected); } }
Laboratorium
- Zaprojektuj interfejs Stos reprezentujący stos liczb całkowitych.
- 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.
- Napisz klasę z testami JUnit dla Twojego stosu (albo dla implementacji kolegi z ławki obok).
- Napisz program, który wczytuje wyrażenie w odwrotnej notacji polskiej (+, −, *, /) i wylicza jego wartość używając stosu z poprzedniego zadania.
Praca domowa nr 10
Zadanie 4. Rozwiązanie należy wysłać mailem. W temacie wiadomości powinien znaleźć się ciąg PO oraz numer pracy domowej (tutaj: 10). Pliki źródłowe powinny być spakowane zip-em. Nazwa pliku powinna zawierać imię i nazwisko autora.
Etykiety:
praca domowa 10 (stos),
wyjątki
wtorek, 14 kwietnia 2015
Tydzień 8: klasówka treningowa
Ćwiczenia
Majówka - klasówka z roku 2013/2014.Głosowanie - klasówka poprawkowa z roku 2013/2014.
Laboratorium
Laboratorium jest odwołane z powodu Olimpiady Informatycznej.Praca domowa nr 9
Rozgrywki piłkarskie - klasówka z roku 2012/2013. Rozwiązanie należy oddać w wersji papierowej, napisane ręcznie. Termin oddania: 22 kwietnia 2015 r. Tej pracy domowej nie można poprawiać.
Etykiety:
klasówka,
praca domowa 9 (klasówka)
środa, 8 kwietnia 2015
Film: Inheritance, Polymorphism, & Testing
Ciekawy wykład o programowaniu bez if-ów, między innymi na przykładzie wyrażeń.
Etykiety:
film
wtorek, 7 kwietnia 2015
Tydzień 7: wyrażenia cz. 2
Ćwiczenia
Kontynuujemy zadanie o wyrażeniach z poprzedniego tygodnia. Dziś dodamy upraszczanie wyrażeń. Chcemy, aby wyrażenia tworzyły się w postaci uproszczonej zgodnie z takimi regułami:- stała + stała → stała
- 0 + wyrażenie → wyrażenie
- wyrażenia + 0 → wyrażenie
- stała * stała → stała
- 1 * wyrażenie → wyrażenie
- wyrażenie * 1 → wyrażenie
Laboratorium
- Zaimplementuj drzewo BST przechowujace 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.
- 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.
Praca domowa nr8
Zadanie o drzewie BST. Termin oddania: 15 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: 8). Pliki źródłowe powinny być spakowane zip-em. Nazwa pliku powinna zawierać imię i nazwisko autora.
Etykiety:
interfejsy,
praca domowa 8 (bst),
wyrażenia
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.
- 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ę.
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.
Etykiety:
dziedziczenie,
praca domowa 6 (tramwaje),
wyrażenia
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.
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.
Etykiety:
klasy,
praca domowa 5 (wielomian)
wtorek, 17 marca 2015
Tydzień 4: klasy
Ćwiczenia
- 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.
- 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
- 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.
- 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ę.
- 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.
Etykiety:
klasy,
praca domowa 4 (klasy)
wtorek, 10 marca 2015
Tydzień 3: tablice w Javie
Ćwiczenia
- Napisz fragment kodu, który wpisuje do tablicy liczb całkowitych kolejne cyfry rozwinięcia dziesiętnego liczby pi.
- 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".
- Wygeneruj tablicę napisów długości 52, zawierającą nazwy wszystkich kart z talii. Jakie są możliwe podejścia do tego zadania?
- 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. - 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.
- 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.
- Dane są dwie tablice prostokątne o takich samych wymiarach. Tablice reprezentują macierze. Napisz fragment kodu w Javie, który policzy sumę tych macierzy.
- Dane są dwie tablice kwadratowe o takich samych wymiarach. Tablice reprezentują macierze. Napisz fragment kodu w Javie, który policzy iloczyn tych macierzy.
- 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ść.
- (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
- Skompiluj i uruchom w Eclipse program HelloWorld z poprzednich zajęć.
- Podepnij w Eclipse źródła Javy.
- Umieść program HelloWorld w pakiecie helloworld. Skompiluj i uruchom program:
- z linii poleceń,
- z Eclipse.
- 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.
Etykiety:
praca domowa 3 (tablice),
tablice
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.
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
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ę.
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
Etykiety:
oferta pracy
wtorek, 3 marca 2015
Zajęcia 2: abstrakcyjne typy danych, wstęp do Javy
Ćwiczenia
- Abstrakcyjne typy danych: stos, kolejka, graf.
- Model dziedziny dla systemu rejestracji kurdli.
Laboratorium
- Skompiluj i uruchom na swoim komputerze program HelloWorld.
- Napisz program wypisujący na ekran wszystkie argumenty z wiersza polecenia.
- Napisz program wyliczający wartość największego wspólnego dzielnika dwu zadanych wartości.
- Napisz program wypisujący rozkład zadanej liczby naturalnej większej od zera na czynniki pierwsze.
- Napisz program wypisujący pierwszych n liczb Fibonacciego.
- Napisz program wypisujący pierwszych n liczb pierwszych. Użyj sita Eratostenesa.
Ściągawki:
- 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();
- 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).
Etykiety:
abstrakcyjne typy danych,
java,
praca domowa 2 (prosta Java)
wtorek, 24 lutego 2015
Zajęcia 1: modelowanie pojęciowe
Ćwiczenia
- Model dziedziny dla gry w Monopol.
- Model dziedziny dla biblioteki.
Laboratorium
- Zarejestrować się na Programowanie obiektowe na moodle'u.
- Przygotować model dziedziny dla biblioteki. Do wyboru:
- w programie Visual Paradigm (licencja do wersji 11, której niestety nie ma jeszcze w laboratorium) lub
- w programie Dia.
Praca domowa nr 1
W dowolnie wybranym programie przygotować model dziedziny dla biblioteki. Proszę umieścić w modelu także imię i nazwisko autora (np. w postaci notatki tekstowej).Należy wysłać obrazek (png, gif, jpg lub pdf) z modelem, a nie projekt z Visual Paradigma. Nazwa pliku powinna zawierać imię i nazwisko autora.
Rozwiązanie należy wysłać mailem. W temacie wiadomości powinien znaleźć się ciąg PO oraz numer pracy domowej (tutaj: 1).
Etykiety:
modelowanie,
praca domowa 1 (model dla biblioteki)
Subskrybuj:
Posty (Atom)