Programowanie w języku Java
dr Przemysław Juszczuk
Wykład 1
Podstawowe informacje
pokój 202B (bywam, ale i tak nie możecie zaglądać :) );
e-mail: przemyslaw.juszczuk(at)ue.katowice.pl;
e-mail: przemyslaw.juszczuk(at)uekat.pl;
strona internetowa: pjuszczuk.pl
informacje o materiałach, terminach oddawania prac –classroom;
spotkania google meet i skype;
konsultacje online google meet i skype o określonych godzinach.
Warunki zaliczenia
test z części teoretycznej 30 % (egzamin online);
kolokwia zaliczeniowe po każdym dziale: 40 % projekt realizowany w zespołach: 20 % aktywność na zajęciach: 10%
dr Przemysław Juszczuk Programowanie w języku Java
Kontakt
przez Skype: przemo3289,
przez Messengera: https://m.me/przemyslaw.juszczuk przez WhatsApp: https://wa.me/48505854031 przez Steam:
https://steamcommunity.com/profiles/76561197988275370/
1 wprowadzenie do języka Java;
2 pętle i instrukcje warunkowe;
3 łańcuchy znaków i obsługa łańcuchów;
4 tablice jednowymiarowe, tablice wielowymiarowe;
5 klasy i obiekty;
6 pliki tekstowe, pliki obiektowe, pliki RAF;
7 obsługa wyjątków;
8 kolekcje.
dr Przemysław Juszczuk Programowanie w języku Java
Szybki wstęp Netbeans;
Main window;
nowe projekty jako console application;
Packages;
public class JavaApplication {} ¡– główna klasa;
public static void main (String[] args) {} ¡– główna metoda;
import bibliotek import.java.awt.∗.
Podstawowe typy integer;
double;
boolean;
char;
Typy złożone String;
Random;
Object;
File.
dr Przemysław Juszczuk Programowanie w języku Java
Podstawy – pętle i instrukcje warunkowe kwadrat pusty w środku;
kwadrat z pustą przekątną;
flaga Czech?
Rysunek:Flaga
Podstawy – pętle i instrukcje warunkowe kwadrat pusty w środku;
kwadrat z pustą przekątną;
flaga Czech?
Rysunek:Flaga
dr Przemysław Juszczuk Programowanie w języku Java
Podstawy – pętle i instrukcje warunkowe kwadrat pusty w środku;
kwadrat z pustą przekątną;
flaga Czech?
Rysunek:Flaga
Tablice i łańcuchy
przygotowanie własnej wersji wbudowanych metod String: length, charAt, endsWith, substring, toUpperCase, toLowerCase;
proste funkcje (zwracany typ, void, parametry funkcji);
pisanie własnej funkcji;
szyfr Cezara jako przykład;
tablice jednowymiarowe, tablice wielowymiarowe, tablice nieregularne;
operacje na macierzach.
dr Przemysław Juszczuk Programowanie w języku Java
struktura projektu;
deklarowanie zmiennych;
instrukcje i bloki instrukcji;
białe znaki;
nazwy zmiennych.
Podstawowe reguły
komentarze, komentarze blokowe, komentarze przed klasą i funkcją;
notacja wielbłądzia i notacja węgierska;
czytelność kodu.
dr Przemysław Juszczuk Programowanie w języku Java
FIXME
Oznaczanie wybranych fragmentów kodu jako ”FIXME” – fragment do poprawy.
Example
public double ReadFile(String s) {
double dataFile;
OpenFile(s); // FIXME check, if the file exists dataFile = CollectData(); //
return dataFile;
}
Opis pliku
Każdy plik powinien być podpisany informacją o autorze oraz wersji
Przykład /*
* class name
*
* file version
*
* author and copyrights
*/
dr Przemysław Juszczuk Programowanie w języku Java
Łańcuchy
String jako klasa;
metody klasy String;
obsługa łańcuchów bez użycia metod wbudowanych;
funkcja charAt i tablica ASCII;
rzutowanie na byte.
Rysunek:Metoda main i lista argumentów
dr Przemysław Juszczuk Programowanie w języku Java
Rysunek:Lista argumentów przekazywana do metody main
Rysunek:Obiekt klasy String
dr Przemysław Juszczuk Programowanie w języku Java
Rysunek:Tablica kodu ASCII
dr Przemysław Juszczuk Programowanie w języku Java
Podstawowe metody
int compareTo(String anotherString) - porównanie dwóch łańcuchów : 0 równe. wart. ujemna - string mniejszy od zadanego, np. aaa i aab wart. dodatnia - string większy od zadanego;
boolean endsWith (String suffix) - podajemy łańcuch i sprawdzenie, czy kończy się na wybrany podłańcuch/literę;
int indexOf(String str) - udostępnia miejsce wystąpienia podłańcucha str w łańcuchu;
String replace (char oldChar, char newChar);
String substring (int beginindex) - udostępnia podciąg danego łańcucha od wybranego indeksu do końca.
dr Przemysław Juszczuk Programowanie w języku Java
Operacje na String
konkatenacja i zastosowanie w metodzie print (println);
wycinanie łańcuchów i metoda substring;
String a tablica typu char;
Pojedynczy znak a String o długości 1.
String w innych językach
String w Javie odpowiada char* zmienna;
Nie traktujemy tego jak tablicy char
Rysunek:Metoda equals
dr Przemysław Juszczuk Programowanie w języku Java
Komentarze
Większość języków programowania umożliwia stosowanie tzw.
komentarzy blokowych oraz komentarzy jednoliniowych.
komentarze jednoliniowe stosowane są do opisu zmiennych;
komentarze blokowe stosowane są do opisu klas, funkcji, metod klas itp.;
opis zmiennej/funkcji powinien być krótki i przejrzysty;
z opisu powinno jasno wynikać zastosowanie danej zmiennej.
Dobrze
int x; \\ instrukcja sterująca pętli
double y; \\ zmienna przechowująca wynik OdczytPlik()
Źle
Komentarze blokowe
komentarze blokowe powinny opisywać zastosowanie danej funkcji;
w komentarzach często umieszcza się też listę parametrów i ich opis;
nazwa funkcji/klasy powinna mieć charakter informacyjny;
Dobrze /*
Funkcja otwiera plik podany jako parametr.
Następnie odczytuje liczbę z pliku i udostępnia jako wynik
*/
public double OdczytPlik(String sciezka) { kod }
Źle
public double Funkcja1(String s) { kod }
dr Przemysław Juszczuk Programowanie w języku Java
Notacja węgierska
jeden ze sposobów zapisu nazw zmiennych oraz obiektów;
każda nazwa poprzedzona jest małą literą oznaczającą typ zmiennej/obiektu;
jedną z wad tego zapisu jest konieczność zmiany nazwy zmiennej w przypadku zmiany jej typu. Np. int iLiczba na double dLiczba - zamiana w całym programie.
notacja węgierska może zostać również wykorzystana do określenia zasięgu zmiennych, np. giWynik - zmienna globalna typu int.
Przykłady
String sSciezka;
byte byWynik;
boolean bFlaga;
pointer pWskaznik;
Notacja wielbłąda
alternatywa dla notacji węgierskiej;
każdy wyraz w nazwie zmiennej z dużej litery (za wyjątkiem pierwszego);
nazwy funkcji zaczynane małą literą;
nazwy klas pisane wielką literą;
możliwe jest łączenie notacji wielbłąda i węgierskiej.
Przykłady
string sciezkaDoPliku;
int wynikMnozenia;
public function ustawWartoscX();
class Tablica ;
dr Przemysław Juszczuk Programowanie w języku Java
Czytelność kodu
nadmierna kompresja kodu nie jest wskazana;
przeważnie lepiej rozbić istniejący kod na kilka linii - zwiększa to znacząco czytelność programu;
dla wyników pośrednich dobrze jest wykorzystywać dodatkowe zmienne.
Dobrze
double wynikKoncowy;
double wynikFunkcja2;
double wynikPosredni;
wynikFunkcja2 = Funkcja2();
wynikPosredni = wynikFunkcja2()/2 + 5.5 wynikKoncowy = Funkcja1() + wynikPosredni;
Źle
Deklaracje zmiennych
deklaracja jednej zmiennej w jednej linii;
zmienne lokalne nie powinny zasięgiem przykrywać zmiennych globalnych;
deklaracje tylko na początku funkcji/klas;
o ile to możliwe, wartości początkowe zmiennych powinny być ustalone;
deklaracja zmiennych w ciele funkcji możliwa w przypadku pętli.
Dobrze
String sciezkaDoPliku; // plik z danymi do wczytania;
double sredniaTablicaA = 0.0; // średnia z tablicy A;
double maksimumTablicaA = 0.0;// wartosc maks. z tablicy A;
Źle
double sr, max;
String s;
dr Przemysław Juszczuk Programowanie w języku Java
Nawiasy klamrowe
W wyrażeniach warunkowych i pętlach zawsze należy wstawiać nawiasy klamrowe. Przy jednej instrukcji jest to opcjonalne, jednak przy rozszerzeniu kodu często prowadzi do trudnych do wykrycia błędów.
Dobrze
void Metoda() { if (warunek) {
Funkcja1();
} }
Źle
void Metoda() { if (warunek)
Powrót z funkcji
Szczególnie istotne, gdy funkcja udostępnia wartość typu boolean.
Powrót z funkcji powinien znajdować się tylko i wyłącznie w jednym miejscu. W tej sytuacji wskazane jest użycie dodatkowej zmiennej i powrót z funkcji z wykorzystaniem wspomnianej zmiennej.
Dobrze
boolean Sprawdz(int wartosc) { bool flaga;
if (wartosc < 10) {
flaga = true;
} else {
flaga = false;
}
return flaga; }
dr Przemysław Juszczuk Programowanie w języku Java
Dziękuję za uwagę.