Programowanie, algorytmy i struktury danych



Podobne dokumenty
Podstawy programowania obiektowego

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Metody Metody, parametry, zwracanie wartości

Programowanie obiektowe

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Wprowadzenie do języka Java

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

Tworzenie aplikacji w języku Java

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

Materiały pomocnicze do wykładu 3 - Elementy języka Java

Microsoft IT Academy kurs programowania

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

Materiały pomocnicze do wykładu 3 - Elementy języka Java

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Podstawowe części projektu w Javie

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Podstawy Programowania Podstawowa składnia języka C++

Programowanie - instrukcje sterujące

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Pętle. for, while, do... while, foreach. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.

Akademia ETI. Wprowadzenie do programowania w Javie PG Java User Group Przemysław Kulesza

Podstawy i języki programowania

Podstawy programowania w języku C

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Podstawy Programowania C++

Java Programowanie Obiektowe Ćwiczenie 1- wprowadzenie

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy

Podstawy programowania. Wykład 3 Konstrukcje sterujące. Krzysztof Banaś Podstawy programowania 1

Programowanie w Javie Lista nr 1. Wybieramy kategorię Java, a wśród Projektów Java Application i [NEXT]

Programowanie obiektowe

Instrukcje wyboru. Tworzenie programu, Schematy blokowe, Instrukcje wyboru, Operatory logiczne

Programowanie I C / C++ laboratorium 01 Organizacja zajęć

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Materiały do laboratorium I

wiczenie 1 Podstawy j zyka Java. Instrukcje warunkowe

Java EE produkcja oprogramowania

JAVA?? to proste!! Autor: wojtekb111111

Instrukcje wyboru. Tworzenie programu, Schematy blokowe, Instrukcje wyboru, Operatory logiczne

dr inż. Piotr Czapiewski Tworzenie aplikacji w języku Java Laboratorium 1

1 Podstawy c++ w pigułce.

Programowanie w Javie nazwa przedmiotu SYLABUS A. Informacje ogólne

Operatory logiczne. Podstawowe operatory logiczne, składanie wyrażeń z użyciem operatorów logicznych

Wstęp do programowania

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009

Języki i metody programowania Java Lab1 Zofia Kruczkiewicz

Proste programy w C++ zadania

ECDL Podstawy programowania Sylabus - wersja 1.0

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Język ludzki kod maszynowy

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice.

Powtórka algorytmów. Wprowadzenie do języka Java.

Lekcja 3: Pierwsze kroki z Pythonem. Pętle

Podstawy i języki programowania

Projektowanie algorytmów z blokami decyzyjnymi

Algorytmy z powrotami. Algorytm minimax

INFORMATYKA. Laboratorium 1

Podejście obiektowe. Tablice obiektów Przykład 1 metody i atrybuty statyczne oraz niestatyczne

K_W04 K_W04 K_W04. Opis

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

KOTLIN. Język programowania dla Androida

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Podstawy i języki programowania

Pętla for. Wynik działania programu:

1 Podstawy c++ w pigułce.

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Ćwiczenie 1. Przygotowanie środowiska JAVA

Opis zagadnieo 1-3. Iteracja, rekurencja i ich realizacja

Programowanie obiektowe

Wykład 7: Pakiety i Interfejsy

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

Programowanie strukturalne i obiektowe

Powtórka algorytmów. Wprowadzenie do języka Java.

Język C część 2. Podejmowanie decyzji w programie. if else. switch

Platformy Programistyczne Podstawy języka Java

Algorytm. a programowanie -

Projektowanie algorytmów z wykorzystaniem ptli for

Kontrola przebiegu programu

Programowanie komputerowe. Zajęcia 1

Konstrukcje warunkowe Pętle

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Elementy języka Java

Języki i metody programowania Java INF302W Wykład 2 (część 1)

Wykład 2: Podstawy Języka


Funkcje i instrukcje języka JavaScript

Podstawy i języki programowania

Aplikacje w środowisku Java

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

Rozwiązania zadań z Programowania Obiektowego

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Podstawy Języka Java

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

Rok akademicki: 2012/2013 Kod: JFM s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne

Podejście obiektowe. Tablice (1) obiektów

Transkrypt:

1/44 Programowanie, algorytmy i struktury danych materiały do wykładu: http://cez.wipb.pl/moodle/ email: m.tabedzki@pb.edu.pl strona: http://aragorn.pb.bialystok.pl/~tabedzki/ Marek Tabędzki

Wymagania wstępne: Wskazana byłaby znajomość podstaw programowania w dowolnym języku strukturalnym (np. C, Pascal). Tematy zajęć: 1. Program, zmienna, instrukcje sterujące. 2. Funkcje i tablice. 3. Obiekty i klasy. 4. Kompozycja. 5. Polimorfizm. Wyjątki. 6. Szacowanie kosztów wybranych algorytmów, programowanie dynamiczne, dziel i zwyciężaj, algorytmy zachłanne. 7. Wybrane algorytmy grafowe. 8. Algorytmy drzewiaste. Literatura i oprogramowanie: 1. Bruce Eckel, Thinking in Java Książkę tę można znaleźć również w wersji elektronicznej na stronie Bruce'a Eckela: www.bruceeckel.com. 2. Dokumentacja oraz specyfikacja języka Java dostępna na stronie java.sun.com 3....czy wiele innych książek dotyczących programowania obiektowego oraz języka Java 4. Narzędzia do kompilowania i uruchamiania programów: Java SE + wybrane środowisko programisty (np. NetBeans, Eclipse, etc.) Zaliczenie: Ma formę egzaminu pisemnego składającego się zarówno z zadań praktycznych jak i teoretycznych. Na egzaminie nie można korzystać z notatek. 2/44

3/44 Programowanie: Proces projektowania i tworzenia kodu źródłowego programów komputerowych. PROBLEM ALGORYTM PROGRAM algorytmizacja kodowanie P R O G R A M O WA N I E Algorytm: Skończony, uporządkowany ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego rodzaju zadań. Przepis podający w skończonej liczbie kroków rozwiązanie określonego problemu. Algorytm można zapisać w dowolnym języku (np. język polski). Inne sposoby zapisu algorytmu: schematy blokowe, pseudokod.

4/44 przykładowy program w Javie: // Program01.java public class Program01 System.out.println("Hello!"); efekt: Hello! program: ciąg znaków (rozmiar znaków ma znaczenie) składniki: słowa kluczowe identyfikatory stałe i napisy operatory separatory

5/44 // Program02.java public class Program02 /* to jest komentarz */ System.out.println("Hello!"); System.out.print(3-4 / 2 + 1 * 5); System.out.print("Znaki \"specjalne\"\n\n"); System.out.println("Ala " + "ma " + 2 + " koty"); efekt: Hello! 6Znaki "specjalne" Ala ma 2 koty

co to jest zmienna? // Program03.java public class Program03 int a; int b, c; a = 2; b = 3; c = a + b; a b c System.out.println("wynik wynosi " + c); System.out.println(a + " + " + b + " = " + c); System.out.println(a); // wartość zmiennej a System.out.println("a"); // napis "a" int e; System.out.println(e); // błąd e = 100; System.out.println(e); // ok 6/44

co to jest zmienna? // Program03.java public class Program03 int a; int b, c; a = 2; b = 3; c = a + b; a 2 b System.out.println("wynik wynosi " + c); System.out.println(a + " + " + b + " = " + c); System.out.println(a); // wartość zmiennej a System.out.println("a"); // napis "a" c int e; System.out.println(e); // błąd e = 100; System.out.println(e); // ok 7/44

co to jest zmienna? // Program03.java public class Program03 int a; int b, c; a = 2; b = 3; c = a + b; a 2 b 3 System.out.println("wynik wynosi " + c); System.out.println(a + " + " + b + " = " + c); System.out.println(a); // wartość zmiennej a System.out.println("a"); // napis "a" c int e; System.out.println(e); // błąd e = 100; System.out.println(e); // ok 8/44

co to jest zmienna? // Program03.java public class Program03 int a; int b, c; a = 2; b = 3; c = a + b; a 2 b 3 System.out.println("wynik wynosi " + c); System.out.println(a + " + " + b + " = " + c); System.out.println(a); // wartość zmiennej a System.out.println("a"); // napis "a" c 5 int e; System.out.println(e); // błąd e = 100; System.out.println(e); // ok 9/44

10/44 // Program04.java public class Program04 // typ zmiennej int a; // byte, short, int, long a = 2; double x; // float, double x = 2.5; boolean b; b = true; // lub false char z; z = '!'; // nie mylić z "!"

11/44 // Program04.java public class Program04 // podstawienie int a = 2, b, c; a 2 b a = b; b = a; // błąd // ok 10 = a; // błąd a = 10; // ok a + b = c // błąd c = a + b; // ok a 2 a 10 a 10 b 2 b 2 b 2 c c c c 12

12/44 // Program04.java public class Program04 // zamiana dwóch zmiennych int a, b; a = 2; b = 3; System.out.println(a + ", " + b); // złe rozwiązanie a = b; b = a; System.out.println(a + ", " + b); a 2 a 3 b 3 b 3 a 3 b 3

13/44 // Program04.java public class Program04 // zamiana dwóch zmiennych int a, b; a a = 2; 2 b = 3; System.out.println(a + ", " + b); b 3 c // dobre rozwiązanie: a int c = a; a = b; 2 b = c; System.out.println(a + ", " + b); a 3 b 3 b 3 c 2 c 2 a b c 3 2 2

14/44 // Program05.java public class Program05 // operatory int a = 5, b = 2, c; c = 5/2; // wynik: 2 c = 5%2; // reszta z dzielenia c += b; // c = c + b; c++; // c = c + 1; a = c++; // a = c; c = c + 1; a = ++c; // c = c + 1; a = c;

15/44 // Program05.java public class Program05 // konwersja typów int x; double y; x = 5/2; // wynik: 2 y = 5/2; // wynik: 2 y = 5.0/2; // wynik: 2.5 y = x; // ok x = y; // błąd! x = (int)y; // ok

16/44 funkcje wejścia/ wyjścia: import java.util.*; public class Program06 static final Scanner input = new Scanner(System.in); System.out.println("Hello"); int x = input.nextint(); System.out.println("Wprowadzono = " + x);

17/44 przeliczanie walut: import java.util.*; public class Program07 static final Scanner input = new Scanner(System.in); System.out.print("Podaj kwotę w euro: "); double euro = input.nextdouble(); double przelicznik = 3.95; double zł = euro/przelicznik; System.out.println("Kwota w zł: " + zł);

18/44 średnia dwóch liczb: import java.util.*; public class Program08 static final Scanner input = new Scanner(System.in); System.out.print("Podaj pierwszą liczbę: "); int a = input.nextint(); System.out.print("Podaj drugą liczbę: "); int b = input.nextint(); double średnia = (a + b)/2.0; System.out.println("Średnia: " + średnia);

liczby losowe: import java.util.*; public class Program09 static final Random random = new Random(); // losowanie liczb int a = random.nextint(); System.out.println("Wylosowano: " + a); a = random.nextint(6); System.out.println("Liczba od 0 do 5: " + a); a = 1 + random.nextint(6); System.out.println("Liczba od 1 do 6: " + a); a = 7 + random.nextint(5); System.out.println("Liczba od 7 do 11: " + a); a = 1 + random.nextint(6); int b = 1 + random.nextint(6); int suma = a + b; System.out.print("Rzut dwiema kostkami: " + suma); 19/44

20/44 pierwiastki równania kwadratowego: import java.util.*; public class Program10 static final Scanner input = new Scanner(System.in); System.out.print("Podaj a: "); double a = input.nextdouble(); System.out.print("Podaj b: "); double b = input.nextdouble(); System.out.print("Podaj c: "); double c = input.nextdouble(); double delta = b*b-4*a*c; double x1 = (-b-math.sqrt(delta))/(2*a); double x2 = (-b+math.sqrt(delta))/(2*a); System.out.println("x1 = " + x1 + "\nx2 = " + x2);

21/44 instrukcja warunkowa: import java.util.*; public class Program11 static final Scanner input = new Scanner(System.in); System.out.print("Ile masz lat? "); int wiek = input.nextint(); if (wiek > 60) System.out.println("Jesteś stary!");

import java.util.*; public class Program11 static final Scanner input = new Scanner(System.in); System.out.print("Ile masz lat? "); int wiek = input.nextint(); if (wiek > 60) System.out.print("Jesteś "); System.out.println("stary!"); uwaga:... int a = 5; if (a>3) int c = a 2; System.out.println(c); // dobrze System.out.println(c); // źle... 22/44

import java.util.*; public class Program11 static final Scanner input = new Scanner(System.in); System.out.print("Ile masz lat? "); int wiek = input.nextint(); if (wiek > 60) System.out.print("Jesteś "); System.out.println("stary!"); else System.out.println("Nie jesteś taki stary"); 23/44

import java.util.*; public class Program11 static final Scanner input = new Scanner(System.in); System.out.print("Ile masz lat? "); int wiek = input.nextint(); if (wiek > 60) System.out.print("Jesteś "); System.out.println("stary!"); else if (wiek < 18) System.out.println("Jesteś młody"); else System.out.println("Nie jesteś taki stary"); 24/44

25/44 operatory relacji: if (a<b) if (a<=b) if (a==b) if (a!=b) if (!(a==b)) if (a<b<c) // źle if (a<b && b<c) // dobrze if (a>b a>c)

26/44 szukanie największej liczby spośród trzech wczytanych: import java.util.*; public class Program12 static final Scanner input = new Scanner(System.in); System.out.print("Podaj trzy liczby: "); int a = input.nextint(), b = input.nextint(), c = input.nextint(); if (a >= b && a >= c) System.out.print(a + " jest największe"); else if (b >= a && b >= c) System.out.print(b + " jest największe"); else System.out.print(c + " jest największe");

import java.util.*; public class Program12 static final Scanner input = new Scanner(System.in); System.out.print("Podaj trzy liczby: "); int a = input.nextint(), b = input.nextint(), c = input.nextint(); if (a >= b) if (a >= c) System.out.print(a + " jest największe"); else System.out.print(c + " jest największe"); else if (b >= c) System.out.print(b + " jest największe"); else System.out.print(c + " jest największe"); 27/44

instrukcja wyboru: import java.util.*; public class Program13 static final Random random = new Random(); int pnk = random.nextint(3); switch(pnk) case 0: System.out.println("papier!"); break; case 1: System.out.println("nożyce!"); break; case 2: System.out.println("kamień!"); break; default: System.out.println("błąd!"); 28/44

29/44 przykład: logowanie import java.util.*; public class Program14 static final Scanner input = new Scanner(System.in); System.out.print("Podaj hasło: "); String hasło = input.next(); if (hasło.equals("ala")) System.out.print("Logowanie udane"); else System.out.print("Hasło nieprawidłowe");

import java.util.*; public class Program14 static final Scanner input = new Scanner(System.in); System.out.print("Podaj hasło: "); String hasło = input.next(); if (hasło.equals("ala")) System.out.print("Logowanie udane"); else System.out.print("Spróbuj ponownie: ");......... 30/44

31/44 pętle: import java.util.*; public class Program14 static final Scanner input = new Scanner(System.in); System.out.print("Podaj hasło: "); String hasło = input.next(); while (!hasło.equals("ala")) System.out.print("Spróbuj ponownie: "); hasło = input.next(); System.out.print("Logowanie udane");

import java.util.*; public class Program14 static final Scanner input = new Scanner(System.in); String hasło; do System.out.print("Podaj hasło: "); hasło = input.next(); while (!hasło.equals("ala")); System.out.print("Logowanie udane"); 32/44

33/44 gra w zgadywanie: import java.util.*; public class Program15 static final Random random = new Random(); static final Scanner input = new Scanner(System.in); int losowa = 1 + random.nextint(10); System.out.println("Jaką liczbę pomyślałem?"); while(true) int zgaduj = input.nextint(); if (zgaduj == losowa) break; System.out.println("Próbuj dalej"); ; System.out.print("Zgadłeś!");

34/44 zadanie: wczytuj liczby, dopóki ich suma nie przekroczy 100 import java.util.*; public class Program16 static final Scanner input = new Scanner(System.in); int suma = 0; do int liczba = input.nextint(); suma += liczba; while(suma <= 100); System.out.println("Suma wynosi " + suma);

35/44 zadanie: wczytuj liczby parzyste, dopóki ich suma nie przekroczy 100 import java.util.*; public class Program16 static final Scanner input = new Scanner(System.in); int suma = 0; do int liczba = input.nextint(); if (liczba%2 == 0) suma += liczba; while(suma <= 100); System.out.println("Suma wynosi " + suma);

36/44 zadanie: wczytuj liczby parzyste, dopóki ich suma nie przekroczy 100 i oblicz ich średnią import java.util.*; public class Program16 static final Scanner input = new Scanner(System.in); int suma = 0, ilość = 0; do int liczba = input.nextint(); if (liczba%2 == 0) suma += liczba; ilość ++; while(suma <= 100); System.out.println("Średnia wynosi " + suma/ilość);

int suma = 0, ilość = 0; do int liczba = input.nextint(); if (liczba%2 == 0) suma += liczba; ilość ++; while(suma <= 100); suma: 0, ilość: 0 liczba = input.nextint(); suma: 0, ilość: 0, liczba: 20 suma: 20, ilość: 1, liczba: 20 liczba = input.nextint(); suma: 20, ilość: 1, liczba: 35 liczba = input.nextint(); suma: 20, ilość: 1, liczba: 40 suma: 60, ilość: 2, liczba: 40 liczba = input.nextint(); suma: 60, ilość: 2, liczba: 60 suma: 120, ilość: 3, liczba: 60 suma: 120, ilość: 3 37/44

38/44 pętla for: import java.util.*; public class Program17 for (int i = 0; i < 10; ++i) System.out.print('*'); /* int i = 0; while (i < 10) System.out.print('*'); ++i; */

39/44 pętla for: import java.util.*; public class Program17 for (int i = 0; i < 10; ++i) System.out.println(i); /* int i = 0; while (i < 10) System.out.println(i); ++i; */

40/44 silnia n! = 1 * 2 * 3 * * (n-1) * n import java.util.*; public class Program18 static final Scanner input = new Scanner(System.in); System.out.println("Podaj n: "); int n = input.nextint(); int silnia = 1; for (int i = 2; i <= n; ++i) silnia *= i; System.out.println(n + "! = " + silnia);

41/44 int silnia = 1; for (int i = 2; i <= n; ++i) silnia *= i; silnia: 1, i: 2, n: 5 silnia *= i; silnia: 2, i: 2, n: 5 ++i silnia: 2, i: 3, n: 5 silnia *= i; silnia: 6, i: 3, n: 5 ++i silnia: 6, i: 4, n: 5 silnia *= i; silnia: 24, i: 4, n: 5 ++i silnia: 24, i: 5, n: 5 silnia *= i; silnia: 120, i: 5, n: 5 ++i silnia: 120, i: 6, n: 5

42/44 zadanie: wczytaj 10 liczb import java.util.*; public class Program19 static final Scanner input = new Scanner(System.in); System.out.println("Podaj 10 liczb"); for (int i = 1; i <= 10; ++i) System.out.print(i + " liczba: "); int liczba = input.nextint();

43/44 zadanie: wczytaj 10 liczb i oblicz ich sumę import java.util.*; public class Program19 static final Scanner input = new Scanner(System.in); System.out.println("Podaj 10 liczb"); int suma = 0; for (int i = 1; i <= 10; ++i) System.out.print(i + " liczba: "); int liczba = input.nextint(); suma += liczba; System.out.println("Suma wynosi " + suma);

44/44 zadanie: wczytaj 10 liczb i znajdź największą z nich import java.util.*; public class Program20 static final Scanner input = new Scanner(System.in); System.out.println("Podaj 10 liczb"); int największa = Integer.MIN_VALUE; for (int i = 1; i <= 10; ++i) System.out.print(i + " liczba: "); int liczba = input.nextint(); if (liczba > największa) największa = liczba; System.out.println("Największa: " + największa);