Programowanie 3 - Funkcje, pliki i klasy

Transkrypt

Programowanie 3 - Funkcje, pliki i klasy
Programowanie 3 - Funkcje, pliki i klasy
dr Przemysław Juszczuk
Instytut Informatyki Uniwersytetu Śląskiego
Laborki
dr Przemysław Juszczuk
Programowanie 3 - Funkcje, pliki i klasy
funkcja;
parametry funkcji;
typ zwracany;
typ void;
funkcje bez parametrów;
napis.length() - jako przykład funkcji.
dr Przemysław Juszczuk
Programowanie 3 - Funkcje, pliki i klasy
funkcja dodająca dwie liczby;
lokalny zasięg zmiennych w funkcji.
Zadania
Napisz funkcję, która przyjmuje 3 parametry: długość tablicy,
przedział min i max (int) a następnie tworzy tablicę liczb losowych z
tego przedziału i zwraca ich sumę.
Napisz funkcję, która tworzy tablicę dwuwymiarową liczb losowych
(lokalnie).
Dana jest tablica n x m. Napisz funkcję która transponuje podaną
tablicę.
Napisz własną funkcję uppercase.
Napisz funkcję substring.
Napisz funkcję Split.
dr Przemysław Juszczuk
Programowanie 3 - Funkcje, pliki i klasy
Czytanie z plików tekstowych
import biblioteki io;
klasa File;
klasa FileReader;
klasa BudderedReader;
czytanie z pliku i metoda readLine();
koniec dostępu do pliku;
Wyjątki i ich obsługa w Java
try;
catch;
Exception;
finally;
dr Przemysław Juszczuk
Programowanie 3 - Funkcje, pliki i klasy
Zapis do plików tekstowych
klasa File i FileWriter;
BufferedWriter;
metoda write();
koniec dostępu do pliku;
Zadania
1
2
3
Funkcja przyjmująca jako parametr nazwę pliku i odczytująca co
drugą linię tekstu.
Funkcja przyjmująca jako parametr nazwę pliku i zwracająca sumę
elementów w pliku.
Użytkownik podaje n danych, do pliku zapisywane są tylko cyfry.
dr Przemysław Juszczuk
Programowanie 3 - Funkcje, pliki i klasy
klasa a obiekt;
definicja klasy;
dostęp public i private;
konstruktor klasy;
konstruktor domyślny;
dr Przemysław Juszczuk
Programowanie 3 - Funkcje, pliki i klasy
Zadania
Dana jest klasa Pracowik z następującymi polami:
1
imię (String)
2
nazwisko (string)
3
wiek (int)
4
stażpracy (int)
5
pensja (double)
Napisz funkcję, która dla każdego pracownika o stażu pracy większym niż
5 lat zwiększy pensję o 5% na każdy dodatkowy przepracowany rok, tzn.
dla stażu 6 lat, pensja wynosi: pensja + 5%, dla 10 lat : pensja + 25% i
tak dalej.
dr Przemysław Juszczuk
Programowanie 3 - Funkcje, pliki i klasy
Zadania
Zaproponuj klasę Kwadrat z następującymi polami: bok, przekątna,
obwód, pole. Klasa powinna posiadać konstruktory:
4 parametrowy dla każdej danej. Dodatkowo powinny być spełnione
odpowiednie założenia pomiędzy bokiem a przekątną: d = a sqrt(2).
1 parametrowy: podawany jest tylko bok.
Klasa powinna zawierać także metody: obliczPole, ObliczObwód,
zmieńBok (funkcja zmieńBok pozwala na zmianę wartości boku oraz
jednocześnie aktualizuje zmienne: obwód, pole i przekątna.
dr Przemysław Juszczuk
Programowanie 3 - Funkcje, pliki i klasy
Zadania
Napisz klasę Student posiadającą pola:
imię (String)
nazwisko (String)
wiek (int)
średnia (double)
stypendium (boolean)
rok studiów (byte)
Klasa ma posiadać 3 konstruktory:
imię, nazwisko, wiek, średnia, stypendium, rok studiów
imie, nazwisko, wiek, średnia (stypendium obliczane, jeżeli średnia
większa od 4.00), rok studiów
imię, nazwisko, średnia (wiek ustalany na 19 lat, stypendium na
podstawie średniej), rok studiów = 1.
Oczywiście wszystkie wartości muszą być sprawdzone i mieć sens, tzn.
rok studiów max = 5, średnia max 5.00, min 2.5 i tak dalej.
dr Przemysław Juszczuk
Programowanie 3 - Funkcje, pliki i klasy
Zadanie cd
Napisać metodę zapisu obiektów klasy student do pliku, dopóki
użytkownik podaje dane.
napisać metodę modyfikującą pole stypendium, jeżeli użytkownik
jest minimum na drugim roku (warunek stypendium – średnia 4.0)
napisać metodę, która wypisuje studentów na wybranym roku (rok
studiów jako parametr funkecji).
dr Przemysław Juszczuk
Programowanie 3 - Funkcje, pliki i klasy
Zadania pliki obiektowe
1
Napisz klasę Zespolona posiadającą dwa pola prywatne:
double r oraz double i;
konstruktor przyjmujący jako parametry wartości r oraz i.
metody ustawR, ustawI, wyswietlR,wyswietlI
wyswietlLiczbe - metoda powinna zwracać String postaci x + yi
(gdzie x to wartość r a y to wartość i).
Dodaj - metoda przyjmująca jako parametry dwa obiekty klasy
zespolona i zwracająca obiekt tej samej klasy (przy dodawaniu liczb
zespolonych dodajemy ze sobą odpowiednie elementy).
2
Napisz metodę, która jako parametr przyjmuje nazwę pliku. Plik
zawiera obiekty klasy Zespolona. W wyniku działania metody mają
powstać dwa pliki tekstowe:
ile.txt zawierający liczbę obiektów klasy zespolona.
suma.txt zawierający sumę wszystkich części rzeczywistych z pliku.
dr Przemysław Juszczuk
Programowanie 3 - Funkcje, pliki i klasy
Zadania obiektowe
1
Napisz klasę Mapa posiadającą nastepujące pola:
klucz - wartość int oraz pole - wartość string;
ponadto klasa powinna posiadać konstruktor przyjmujący 2
parametry: klucz powinien być liczbą z przedziału ¡1,100¿ , pole
stringiem składającym się z 3 małych liter - jeżeli wartości te nie
zgadzają się, przyjmij 1 i aaa”.
,
metody ustawKlucz, UstawPole, wyswietlKlucz,wyswietlPole
Sklej - metody przyjmującej dwa obiekty klasy Mapa zwracającej w
wyniku obiekt tej samej klasy, gdzie wartości klucz są do siebie
dodane, a pola doklejone. Np. dla 1 aac”i
15 ćcd”mamy 16 aacccd”
,
,
2
Napisz metodę, która jako parametr przyjmuję nazwę pliku. Plik
zawiera obiekty klasy Mapa. W wyniku działania metody ma powstać
plik zawierający tylko obiekty, których klucz jest mniejszy niż 50.
dr Przemysław Juszczuk
Programowanie 3 - Funkcje, pliki i klasy
Zadania dodatkowe
Napisz funkcję rysującą trójkąt Pascala, której parametrem jest
wysokość trójkąta.
Napisz funkcję, której parametrem jest liczba rzymska. Wynikiem
działania funkcji ma być liczba arabska ( w postaci int).
Napisać funkcje, której parametrem jest jednowymiarowa tablica int,
natomiast funkcja udostępnia tę samą tablicę z wartościami
znormalizowanymi do przedziału < 0, 1 >.
Napisz funkcję, która dostaje trzy parametry:dwa pierwsze to
przedziały kodu ASCII, np: 65: 97. W wyniku działania funkcji
tworzony jest String z losowych znaków z zadanego przedziału o
długości takiej, jak trzeci parametr.
Napisz funkcję, która wyświetla trójwymiarową tabliczkę mnożenia z
zadanego przedziału, np: 3 i 10, wyświetli tabliczkę mnożenia, gdzie
najmniejszą wartością będzie 3*3*3 a największą 10*10*10.
dr Przemysław Juszczuk
Programowanie 3 - Funkcje, pliki i klasy
Zadania dodatkowe
Dany jest plik tekstowy. Napisz funkcję, której parametrem jest
nazwa pliku, a w wyniku działania programu otrzymujemy liczbę
kropek w pliku.
Dany jest plik tekstowy z liczbami, gdzie część ułamkowa oddzielona
jest od części dziesiętnej kropką. Ponadto, liczby oddzielone są od
siebie dwukropkiem. Bez użycia funkcji replace, napisz funkcję która
zamieni wszystkie propki w pliku na przecinki. Dodatkowo w nowym
pliku liczby powinny być oddzielone od siebie spacjami.
Napisz funkcję, której parametrem jest nazwa pliku z dowolnymi
znakami. W wyniku działania funkcji mają powstać dwa pliki: jeden
z cyframi:0,2,4,6,8. Drugi zawierający cyfry: 1,3,5,7,9.
jw., ale w jednym pliku mają znaleźć się wszystkie LICZBY parzyste,
w drugim liczby nieparzyste. tzn dla łańcucha assff 263sd20a35 w
jednym pliku ma znaleźć się 263 i 35, natomiast w drugim: 2.
dr Przemysław Juszczuk
Programowanie 3 - Funkcje, pliki i klasy
Zadania dodatkowe
Napisz klasę kwadrat zawierającą pola: a- bok, d- przekątna, pole,
obwód. Przygotuj 2 konstruktory:
pierwszy przyjmuje 4 parametry:a,d,pole,obwód. Ponadto wszystkie
zależności muszą się zgadzać, tzn. obwód musi być równy 4a i tak
dalej. W przeciwnym wypadku wartości zmiennych mają być ustalone
jako domyślne: a=0, d=0, pole=0, obwód=0.
drugi konstruktor przyjmuje 1 parametr: bok a, na jego podstawie
obliczane są pozostałe wartości.
Klasa powinna zawierać metody pozwalające odczytywać i ustalać
wartości poszczególnych pól. Wymagane są też funkcje: obliczPole(),
obliczObwod(), obliczd().
Do klasy z zadania 10: przygotować jednowymiarową tablicę
obiektów klasy kwadrat. Tablica powinna zostać wypełniona
losowymi wartościami boku a z przedziału < 0, 1000 > (podanym w
konstruktorze). Następnie, przy pomocy odpowiedniej funkcji
odczytać wartość pola: obwód i wskazać numer obiektu o
maksymalnej wartości tego pola.
dr Przemysław Juszczuk
Programowanie 3 - Funkcje, pliki i klasy
Dodatkowe zadania
Do klasy z zadania 10 napisać funkcję, która jako parametr przyjmuje
dwuwymiarową tablicę obiektów klasy Kwadrat. Tablica powinna
zostać wypełniona losowymi obiektami, gdzie wartość boku a należy
do przedziału ¡0,1000¿. W wyniku działania funkcji powinniśmy
otrzymać sumę pól obiektów leżących w tablicy pod dolną przekątną.
Plik Macierze.obj zawiera obiekty klasy Macierz, zawierającej
następujące pola i metody:
int wiersze = liczba wierszy
int kolumny = liczba kolumn
int min - minimalna wartość elementów w macierzy
int max - maksymalna wartość elementów w macierzy
- int[][] matrix o wymiarze wiersze x kolumny, gdzie elementami
macierzy są wartości całkowite, losowe z przedziału < min, max >
Klasa posiada 3 konstruktory:
pierwszy posiada parametry: liczbawierszy, liczbakolumn, min, max.
drugi posiada parametry: min, max. Wartości wiersze i kolumny mają
wartości równe 10.
trzeci posiada parametry: liczbawierszy, liczbkolumn. Wartość min
ustalona jest jako 0, natomiast max to 10.
tablica matrix wypełniana jest liczbami losowymi w konstruktorze !!
dr Przemysław Juszczuk
Programowanie 3 - Funkcje, pliki i klasy
Dodatkowe zadania cd
Należy dopisać także metody pozwalające na dostęp do pól: min, max,
wiersze i kolumny. Pola te nie mogą być modyfikowane. Wymagana jest
także metoda Wyswietl() wypisująca całą macierz, PodajElement(int w,
int k), która udostępnia element na przecięciu wiersza w i kolumny k oraz
ZmienElement(int w, int k). Zadanie jest następujące:
napisz funkcję, która jako parametr dostaje nazwę pliku z obiektami
klasy Macierz, następnie dla każdego obiektu z tej klasy wyzerować
obydwie przekątne. W tym celu można dopisać dodatkową metodę
do klasy Macierz zerującą przekątne lub posłużyć się metodą
ZmienElement(int w, int k).
napisz funkcję, której parametrem jest nazwa pliku z obiektami klasy
Macierz. W wyniku działania funkcji udostępniona zostaje tablica
obiektów Macierz zawierająca wszystkie obiekty z pliku zapisane w
odwrotnej kolejności. Deklaracja takiej metody powinna wyglądać
następująco: public Macierz[] Funkcja(String sciezka).
dr Przemysław Juszczuk
Programowanie 3 - Funkcje, pliki i klasy
Dziękuję za uwagę.
dr Przemysław Juszczuk
Programowanie 3 - Funkcje, pliki i klasy