To jest jeden z artykułów w ramach darmowego kursu programowania w Javie. Proszę zapoznaj się z pozostałymi częściami, mogą one być pomocne w zrozumieniu materiału z tego artykułu.
Do rozwiązania zadań niezbędna będzie wiedza, którą możesz zdobyć czytając dotychczasowe artykuły. Jednak znajdą się też zadania, które będą wymagały dodatkowej lektury dokumentacji standardowej biblioteki Javy czy stron na Wikipedii. Aby wykonać te zadania musisz mieć wiedzę opisaną w artykułach w serii kurs programowania java do artukułu o interfejsach włącznie.
Całość podzielona jest na części. Odpowiadają one artykułom, które do tej pory miałeś okazję przeczytać. Polecam robienie ich w kolejności – na przykład ciężko będzie Ci zrobić zadania związane z pętlami bez znajomości tablic.
Zadania starałem się zorganizować w ten sposób aby kolejne bazowały na stworzonych już metodach/obiektach. W codziennym programowaniu właśnie tak to wygląda, budujemy małe klocki, z których można złożyć większą całość. To też będziesz mógł przećwiczyć rozwiązując poniższe zadania.
Operator %
Do tej pory nie opisałem jeszcze jednego dość przydatnego operatora w języku Java. Mianowicie %
. Operator %
zwraca resztę z dzielenia liczb. Najłatwiej będzie to zrozumieć na przykładzie
4 % 3 == 1; // bo 3 mieści się raz w 4 i zostaje 1 reszty
8 % 3 == 2; // bo 3 mieści się dwa razy w 8 i zostaje 2 reszty
3 % 4 == 3; // bo 4 nie mieści się w 3 i zostaje 3 reszty
15 % 5 == 0; // bo 5 mieści się trzy razy w 15 i zostaje 0 reszty
Jeśli chcielibyśmy zapisać działanie tego operatora przy pomocy równania matematycznego moglibyśmy użyć następującego wzoru:
(a / b) * b + (a % b) == a
Operator ten może się przydać na przykład do sprawdzenia czy liczba jest parzysta. Liczbę uważamy za parzystą jeśli jest podzielna przez 2 bez reszty
boolean isEven = someNumber % 2 == 0;
Pobierz opracowania zadań z rozmów kwalifikacyjnych
Przygotowałem rozwiązania kilku zadań algorytmicznych z rozmów kwalifikacyjnych. Rozkładam je na czynniki pierwsze i pokazuję różne sposoby ich rozwiązania. Dołącz do grupy ponad 6147 Samouków, którzy jako pierwsi dowiadują się o nowych treściach na blogu, a prześlę je na Twój e-mail.
Zadania
Metody w języku Java
- Napisz metodę, która zwróci Twój aktualny wiek.
- Napisz metodę, która zwróci Twoje imię,
- Napisz metodę, która jako argument przyjmuje 2 liczby i wypisuje ich sumę, różnicę i iloczyn,
- Napisz metodę, która jako argument przyjmuje liczbę i zwraca
true
jeśli liczba jest parzysta, - Napisz metodę, która jako argument przyjmuje liczbę i zwraca
true
jeśli liczba jest podzielna przez 3 i przez 5, - Napisz metodę, która jako argument przyjmuje liczbę i zwraca go podniesionego do 3 potęgi,
- Napisz metodę, która jako argument przyjmuje liczbę i zwraca jej pierwiastek kwadratowy (poczytaj javadoc do klasy
Math
, znajdziesz tam metodę, która na pewno Ci pomoże), - Napisz metodę, która jako argument przyjmie trzy liczby. Metoda powinna zwrócić
true
jeśli z odcinków o długości przekazanych w argumentach można zbudować trójkąt prostokątny.
Obiekty i pakiety
- Utwórz klasę
Human
reprezentującą człowieka, musi posiadać atrybuty takie jak wiek, waga, wzrost, imię i płeć. Klasa powinna także zawierać metodygetAge
,getWeight
,getHeight
,getName
,isMale
. - Utwórz klasę reprezentującą prostokąt, musi posiadać atrybuty długość i szerokość. Klasa powinna posiadać metody obliczające pole, obwód i długość przekątnej.
- Utwórz klasę o nazwie
MyNumber
, której jedyny konstruktor przyjmuje liczbę. Klasa powinna mieć następujące metody MyNumber isOdd()
–true
jeśli atrybut jest nieparzysty,MyNumber isEven()
–true
jeśli atrybut jest parzysty,MyNumber sqrt()
– pierwiastek z atrybutu,MyNumber pow(MyNumber x)
– atrybut podniesiony do potęgi x (przydatnej metody poszukaj w javadoc do klasyMath
),MyNumber add(MyNumber x)
– zwraca sumę atrybutu i x opakowaną w klasęMyNumber
,MyNumber subtract(MyNumber x)
– zwraca różnicę atrybutu i x opakowaną w klasęMyNumber
.
A teraz ciekawostka, jeśli rozwiązałeś zadanie 3. to muszę Ci zdradzić, że podobna klasa istnieje w standardowej bibliotece języka Java. Jest to klasa BigInteger
/BigDecimal
. Oczywiście jej możliwości są dużo bardziej rozbudowane, jednak zasada działania jest podobna.
Tablice
- Napisz metodę, która zwróci tablicę
String[]
zawierającą pierwsze 5 liter alfabetu, - Napisz metodę pobierającą trójelementową tablicę liczb, która zwróci tablicę zawierającą te same elementy w odwróconej kolejności
Dużo zadań dotyczących tablic wymaga znajmości pętli, dlatego w następnym akapicie znajdziesz więcej interesujących zadań związanych z tablicami.
Pętle i instrukcje warunkowe
- Utwórz metodę pobierającą dodatnią liczbę całkowitą X, która wyświetli na ekranie liczby od zera do X,
- Jeśli w zadaniu 1. użyłeś pętli
for
przerób tę metodę nawhile
(lub odwrotnie), - Napisz klasę
ArrayFactory
, która w konstruktorze pobierze liczbę całkowitą X. Klasa powinna mieć 2 metody:int[] oneDimension
– zwróci instancję tablicy jednowymiarowej o długości X,int[][] twoDimension
– zwróci instację tablicy dwuwymiarowej gdzie liczba wierszy i liczba kolumn równa się X,
- Utwórz metodę, która pobierze liczbę i wypisze każdy znak w osobnej linii zaczynając od ostatniej cyfry (np. dla liczby 123 będą to trzy linie z 3, 2 i 1),
- Utwórz metodę, która jako argument pobierze obiekt klasy
String
i zwróci “odwrócony” argument. Na przykład “pies” przekształci w “seip”, - Utwórz metodę, która pobierze liczbę oraz zwróci ją w formie binarnej (2 => “10”, 4 => “100”, 5 => “101”, itd.). System binarny opisałem w osobnym artykule,
- Utwórz metodę, pobierającą łańcuch znaków, która sprawdzi czy jest on palindromem. Np. “kajak” jest palindromem (to samo czytane “od przodu i od tyłu”) jednak “kotek” już nie. Może przydać Ci się metoda
String#toCharArray
- Do klasy
ArrayFactory
dodaj metodę zwracającą macierz jednostkową (jedynki “na przekątnej”), - Napisz metodę, która pobierze tablicę liczb całkowitych i wyświetli ją w postaci “[liczba, liczba, liczba]”,
- Napisz metodę, która pobierze tablicę liczb całkowitych i posortuje ją w kolejności od najmniejszej do największej liczby. Jednym z podstawowych algorytmów sortowania jest sortowanie bąbelkowe.
Chociaż zadania wymagają wiedzy z zakresu podstaw języka Java nie są bardzo łatwe. Na pewno ciekawostką dla Ciebie będzie to, że na przykład zadanie z palindromem czasami trafia się na rozmowach rekrutacyjnych :)
Typy proste
W tej sekcji znajdują się głównie zadania, które wymagają znajomości klasy Scanner
opisanej w artykule dotyczącym typów prostych.
- Jeśli w klasie
Human
użyłeś typów prostych zamień je na odpowiadające im klasy (int
=>Integer
), - Napisz program, który pobierze od użytkownika liczbę całkowitą, a następnie wyświetli jej binarną reprezentację na ekranie,
- Napisz program, który pobierze od użytkownika liczbę całkowitą N reprezentującą długość tablicy, a następnie poprosi o N kolejnych liczb uzupełniając nimi wcześniej stworzoną tablicę. Wyświetl na konsoli tablicę posortowaną w kolejności od najmniejszej do największej liczby,
- Napisz program, który pobierze od użytkownika łańcuch znaków i wyświetli na konsoli jego długość, informację czy jest to palindrom czy nie oraz jego odwróconą wartość.
Interfejsy
- Stwórz interfejs
Figure
. Interfejs powinien zawierać metodygetPerimeter
(zwracającą obwód) orazgetArea
(zwracającą powierzchnię). Następnie utwórz klasyCircle
,Triangle
iRectangle
, niech każda z klas implementuje interfejsFigure
. Napisz program, który pobierze od użytkownika:- długość promienia koła,
- 2 długości boków trójkąta prostokątnego (boki przy kącie prostym),
- długość boków prostokąta.
Utworzy instancje tych obiektów i umieści je w tablicy Figure[]
. Następnie iterując po obiektach wyświetl pole oraz obwód aktualnego obiektu.
Rozwiązania zadań
Starałem się nie korzystać z bibliotek/API, którego jeszcze nie poznaliśmy w ramach kursu. Używając bardziej zaawansowanych metod niektóre z przedstawionych tu zadań można rozwiązać lepiej, jednak na początek takie proste podejście w zupełności wystarczy. Prosiłbym Cię żebyś jednak spróbował rozwiązać zadania samodzielnie, dopiero jeśli nie będzie już innego wyjścia rzuć okiem na przykładowe rozwiązania.
Rozwiązania, które dostarczyłem nie są jedynymi możliwymi rozwiązaniami, Ty mogłeś rozwiązać dany problem zupełnie inaczej.
Podsumowanie
Mam nadzieję, że zestaw zadań Ci się spodobał. Raz jeszcze prosiłbym Cię, żebyś rozwiązał je samodzielnie, wtedy nauczysz się najwięcej. Jeśli chciałbyś abym napisał kolejny artykuł tego typu daj znać ;) Jeśli będziesz miał problem z którymkolwiek z nich możesz rzucić okiem do gotowych rozwiązań.
Jeśli nie chcesz pominąć żadnego z kolejnych artykułów proszę polub naszą stronę na Facebook’u. Proszę Cię też abyś udostępnił ten artykuł innym Twoim znajomym, którzy mogą być zainteresowani – niezmiennie zależy mi na dotarciu do jak największej liczby czytelników. Do następnego razu! :)
Pobierz opracowania zadań z rozmów kwalifikacyjnych
Przygotowałem rozwiązania kilku zadań algorytmicznych z rozmów kwalifikacyjnych. Rozkładam je na czynniki pierwsze i pokazuję różne sposoby ich rozwiązania. Dołącz do grupy ponad 6147 Samouków, którzy jako pierwsi dowiadują się o nowych treściach na blogu, a prześlę je na Twój e-mail.
Zostaw komentarz