Scala + NetBeans AKA: Nowoczesne obiektowe języki programowania i środowiska programistyczne na przykładzie Scali i środowiska NetBeans

Wielkość: px
Rozpocząć pokaz od strony:

Download "Scala + NetBeans AKA: Nowoczesne obiektowe języki programowania i środowiska programistyczne na przykładzie Scali i środowiska NetBeans"

Transkrypt

1 1 Scala + NetBeans AKA: Nowoczesne obiektowe języki programowania i środowiska programistyczne na przykładzie Scali i środowiska NetBeans (spotkanie 4)

2 2 For-Comprehensions Przypominają zapytania Ułatwiają stosowanie funkcji wyższego rzędu Przykład: z listy osób wybrać imiona osób mających ponad 20 lat persons filter (p => p.age > 20) map (p => p.name) for (p <- persons if p.age > 20) yield p.name

3 3 Składnia for ( s ) yield e s to lista generatorów, definicji oraz filtrów (otoczona () lub {) generatory: x <- e, gdzie wyrażenie e jest typu listowego definicje: val x = e filtry: if f, gdzie f to wyrażenie typu Boolean zawsze na początku musi być generator późniejsze generatory iterują szybciej

4 4 Kilka przykładów że jest prościej Dla danego n znaleźć wszystkie pary 1 <= j < i < n takie że i+j jest pierwsza Poprzednie rozwiązania w dwóch krokach (generujemy pary i,j a potem filtrujemy) List.range(2, n)//generuje wartości od 2 do n-1.map(i => List.range(1, i).map(x => (i, x))).foldright(list[(int, Int)]()) {(xs, ys) => xs ::: ys.filter(pair => isprime(pair._1 + pair._2)) List.range(2, n).flatmap(i => List.range(1, i).map(x => (i, x))).filter(pair => isprime(pair._1 + pair._2)) Z For-Comprehensions for { i <- List.range(2, n) j <- List.range(1, i) if isprime(i+j) yield (i, j) Gdzie def isprime(n: Int) = List.range(2, n) forall (x => n % x!= 0)

5 5 Kilka przykładów że jest prościej Iloczyn skalarny dwóch wektorów xs i ys Przykładowe rozwiązanie (xs zip ys).map(t => t._1 * t._2).foldleft(0){(x,y) => x + y Z For-Comprehensions sum(for ((x, y) <- xs zip ys) yield x * y)

6 6 Łamigłówki Problem n królowych Rekurencyjnie sprawdzamy kolejne ustawienia kolejnych królowych Rozwiązanie częściowe reprezentujemy jako listę gdzie ostatnia królowa jest na początku Generujemy pełne listy wszystkich rozwiązań częściowych o zadanej długości def queens(n: Int): List[List[Int]] = { def placequeenincol(col: Int): List[List[Int]] = if (col == 0) List(List()) else for { queens <- placequeens(col 1) row <- List.range(1, n + 1) if issafe(col, row, queens) yield row :: queens placequeens(n)

7 7 Zapytania Przykładowa baza danych case class Book(title: String, authors: List[String]) Przykładowe dane val books: List[Book] = List( Book("Structure and Interpretation of Computer Programs", List("Abelson, Harold", "Sussman, Gerald J.")), Book("Principles of Compiler Design", List("Aho, Alfred", "Ullman, Jeffrey")), Book("Programming in Modula-2", List("Wirth, Niklaus")), Book("Introduction to Functional Programming"), List("Bird, Richard")), Book("The Java Language Specification", List("Gosling, James", "Joy, Bill", "Steele, Guy", "Bracha, Gilad")))

8 8 Zapytania c.d. Tytuły wszystkich książek napisanych przez Ullmana for (b <- books; a <- b.authors if a startswith "Ullman") yield b.title Tytuły wszystkich książek, których tytuł zawiera napis Program for (b <- books if (b.title indexof "Program") >= 0) yield b.title Imiona wszystkich autorów co najmniej dwóch książek for (b1 <- books; b2 <- books if b1!= b2; a1 <- b1.authors; a2 <- b2.authors if a1 == a2) yield a1 Z pominięciem duplikatów def removeduplicates[a](xs: List[A]): List[A] = if (xs.isempty) xs else xs.head :: removeduplicates(xs.tail filter (x => x!= xs.head)) lub xs.head :: removeduplicates(for (x <- xs.tail if x!= xs.head) yield x)

9 9 Foc-Comprehensions przy pomocy innych funkcji For-Comprehensions można przetłumaczyć na map, flatmap, filter for (x <- e) yield e' e.map(x => e') for (x <- e if f; s) yield e for (x <- e.filter(x => f); s) yield e for (x <- e; y <- e ; s) yield e e.flatmap(x => for (y <- e ; s) yield e )

10 10 Przykład tłumaczenia for { i <- range(2, n) j <- range(1, i) if isprime(i+j) yield (i, j) for (x <- e; y <- e ; s) yield e e.flatmap(x => for (y <- e ; s) yield e ) range(2, n).flatmap( i => for {j <- range(1, i) if isprime(i+j) yield (i, j) range(2, n).flatmap(i => for {j <- range(1,i).filter(j=>isprime(i+j) yield (i,j) for (x <- e if f; s) yield e for (x <- e.filter(x => f); s) yield e for (x <- e) yield e' e.map(x => e') range(2,n).flatmap( i => range(1,i).filter( j => isprime(i+j).map(j => (i,j) ) )

11 11 Tłumaczenie w drugą stronę object Demo { def map[a, B](xs: List[A], f: A => B): List[B] = for (x <- xs) yield f(x) def flatmap[a, B](xs: List[A], f: A => List[B]): List[B] = for (x <- xs; y <- f(x)) yield y def filter[a](xs: List[A], p: A => Boolean): List[A] = for (x <- xs if p(x)) yield x Jak złożymy tłumaczenia w obie strony, to dostaniemy definicję map przy pomocy map, itd.

12 12 Pętle for Jest też wersja jedynie wyliczająca wyrażenia, ale nie zbierająca ich wyniku for ( s ) e Przykład: wypisywanie macierzy reprezentowanej jako lista list for (xs <- xss) { for (x <- xs) print(x + "\t") println() Translacja jest prostsza, po trzeba jedynie foreach

13 13 For-Comprehensions nie tylko dla list Scala zawiera jeszcze inne typy danych wspierające For-Comprehensions Typ danych powinien definiować map, flatmap i filter Należy też zadbać o właściwe typy, np. dla C[A] def map[b](f: A => B): C[B] def flatmap[b](f: A => C[B]): C[B] def filter(p: A => Boolean): C[A] Niestety w Scali nie da się zdefiniować stosownego trait, bo te deklaracje w typie C odwołują się do typu C (jako konstruktora typu stosowanego z różnymi parametrami) Zastosowania: bazy danych, drzewa XML,...

14 14 Stan Jedyne efekty uboczne, które dotychczas widzieliśmy, to wypisywanie na konsolę Bez efektów ubocznych nie ma znaczenia kolejność wykonywania operacji (wszystkie prowadzą do tego samego wyniku) Innymi słowy czas jest nieistotny Co to stan obiektu/stanowość? Stan to wartość wszystkich atrybutów atrybutów obiektu Obiekt ma stan jeżeli jego zachowanie zależy od historii (np. konto bankowe) Deklarowanie atrybutów var zamiast val var x: String = "abc" Zmienne należy od razu zainicjować (var x: T = _ inicjuje wartością domyślną dla danego typu) Niezainicjowanie atrybutu czyni klasę abstrakcyjną

15 15 Przykład class BankAccount { private var balance = 0 def deposit(amount: Int) { if (amount > 0) balance += amount def withdraw(amount: Int): Int = if (0 < amount && amount <= balance) { balance -= amount balance else error("insufficient funds") val myaccount = new BankAccount

16 16 Przykład c.d. scala> myaccount deposit 50 scala> myaccount withdraw 20 res1: Int = 30 scala> myaccount withdraw 20 res2: Int = 10 scala> myaccount withdraw 15 java.lang.runtimeexception: insufficient funds at scala.predef$.error(predef.scala:76) at BankAccount.withdraw(<console>:13) at.<init>(<console>:7) at.<clinit>(<console>) at RequestResult$.<init>(<console>:3) at RequestResult$.<clinit>(<console>) at RequestResult$result(<console>) at sun.reflect.nativemethodaccessorimpl.invoke0(native Method) at sun.reflect.nativemethodacce...

17 17 Kiedy zmienne wskazują tę samą wartość? Referential transparency jak nie ma przypisań, to następujące definicje dają ten sam efekt: val x = E; val y = E val x = E; val y = x Czy to się zmienia dla val x = new BankAccount; val y = new BankAccount Operational equivalence x oraz y definiują tę samą wartość jeżeli w żadnym eksperymencie nie da się ich odróżnić Test: (1) niech S to dowolny ciąg operacji z x oraz y, (2) niech S' to ciąg otrzymany z S przez zamianę wszystkich wystąpień y na x (3) jeżeli zawsze wyniki S i S' są takie same, to x i y są takie same

18 18 Przykład Dla val x = new BankAccount; val y = new BankAccount Wynik S > val x = new BankAccount > val y = new BankAccount > x deposit > y withdraw 20 java.lang.runtimeexception: insufficient funds Wynik S' > val x = new BankAccount > val y = new BankAccount > x deposit > x withdraw A jak jest dla val x = new BankAccount; val y = x

19 19 Imperative control structures Dla wygody Scala ma instrukcje z imperatywnych języków jak C i Java (brakuje break i continue, a zamiast pętli for są For-Comprehensisons) Przykład: x^n=x^(ak*2^k)*...*x^(a0*2^0), gdzie n binarnie to ak...a0 def power(x: Double, n: Int): Double = { var r = 1.0; var i = n; var j = 0 while (j < 32) { r = r * r if (i < 0) r *= x i = i << 1 j += 1 r Zawsze można sobie bez nich poradzić def whileloop(condition: => Boolean)(command: => Unit) { if (condition) { command; whileloop(condition)(command) else ()

20 20 Przykład: symulacja dyskretnych zdarzeń Mały język do reprezentacji obwodów scalonych Przewody przenoszą sygnały (true/false), które są przetwarzane przez bramki Podstawowe bramki: inverter, and-gate, or-gate Za pomocą podstawowych bramek można budować inne Bramki wprowadzają opóźnienia

21 21 Przykład c.d. type Action = () => Unit class Wire { private var sigval = false private var actions: List[Action] = List() def getsignal = sigval def setsignal(s: Boolean) = if (s!= sigval) { sigval = s actions.foreach(action => action()) def addaction(a: Action) { actions = a :: actions; a() //case class żeby były domyślne metody dostępu, itp. case class WorkItem(time: Int, action: Action)

22 22 private type Agenda = List[WorkItem] private var agenda: Agenda = List() private var currenttime = 0 private def insert(ag: Agenda, item: WorkItem): Agenda = if (ag.isempty item.time < ag.head.time) item :: ag else ag.head :: insert(ag.tail, item) def afterdelay(delay: Int)(block: => Unit) { val item = WorkItem(currentTime + delay, () => block) agenda = insert(agenda, item) private def next() { agenda match { case WorkItem(time, action) :: rest => agenda = rest; currenttime = time; action() case List() => def run() { afterdelay(0) { println("*** simulation started ***") while (!agenda.isempty) next()

23 23 private val InverterDelay = 3; private val OrGateDelay = 1 private val AndGateDelay = 5 def inverter(input: Wire, output: Wire) { def invertaction() { val inputsig = input.getsignal afterdelay(inverterdelay) { output setsignal!inputsig input addaction invertaction def andgate(a1: Wire, a2: Wire, output: Wire) { def andaction() { val a1sig = a1.getsignal val a2sig = a2.getsignal afterdelay(andgatedelay) { output setsignal (a1sig & a2sig) a1 addaction andaction a2 addaction andaction def orgate(a1: Wire, a2: Wire, output: Wire) {...

24 24 def halfadder(a: Wire, b: Wire, s: Wire, c: Wire) { val d = new Wire val e = new Wire andgate(a, b, c) orgate(a, b, d) inverter(c, e) andgate(d, e, s) a b c d e s

25 25 def fulladder(a: Wire, b: Wire, cin: Wire, sum: Wire, cout: Wire) { val s = new Wire val c1 = new Wire val c2 = new Wire halfadder(a, cin, s, c1) halfadder(b, s, sum, c2) orgate(c1, c2, cout) a b cin s c1 c2 sum cout

26 26 def probe(name: String, wire: Wire) { wire addaction { () => println(name +" " +currenttime +" new_value=" +wire.getsignal) def main(args: Array[String]) = { val input1, input2, sum, carry = new Wire probe("sum", sum) probe("carry", carry) halfadder(input1, input2, sum, carry) input1 setsignal true; run input2 setsignal true; run sum 0 new_value=false carry 0 new_value=false *** simulation started *** sum 8 new_value=true *** simulation started *** carry 13 new_value=true sum 21 new_value=false

27 27 Jeszcze o upływie czasu Czy upływ czasu można modelować jedynie funkcjami, których wartości się nie zmieniają Parametr zamieniający się w matematyce przedstawia się jako funkcję f(t) Zmieniającą się zmienną var x: T można zamienić na niezmieniającą się var x: List[T] Wymieniamy pamięć na możliwość zaglądania w przyszłość i przeszłość

28 28 Strumienie Strumienie dają to samo co listy, ale ogon jest wyliczany tylko jak naprawdę jest potrzebny Przykład definicji Stream.cons(1, Stream.cons(2, Stream.empty)) Przykład użycia def range(start: Int, end: Int): Stream[Int] = if (start >= end) Stream.empty else Stream.cons(start, range(start + 1, end)) Stream.cons wylicza ogon dopiero wtedy gdy jest do niego odwołanie Dostępne są podstawowe metody: head, tail, isempty np. def print(xs: Stream[A]) { if (!xs.isempty) { Console.println(xs.head); print(xs.tail) Dostępna jest też większość pozostałych metod Stream.range(1000, 10000) filter isprime at 1

29 29 Strumienie Nie ma natomiast operatorów prawego argumentu :: ani ::: Zamiast x :: xs używamy Stream.cons(x, xs) Zamiast xs ::: ys używamy xs append ys.

30 Leniwość object lazylib { def delay[a](value: => A): Susp[A] = new SuspImpl[A](value) implicit def force[a](s: Susp[A]): A = s() abstract class Susp[+A] extends Function0[A] class SuspImpl[A](lazyValue: => A) extends Susp[A] { private var maybevalue: Option[A] = None override def apply() = maybevalue match { case None => val value = lazyvalue maybevalue = Some(value) value case Some(value) => value override def tostring() = maybevalue match { case None => "Susp(?)" case Some(value) => "Susp(" + value + ")" 30

31 31 Leniwość c.d. object Main { import lazylib._ def main(args: Array[String]) = { val s: Susp[Int] = delay { println("evaluating..."); 3 println("s = " + s) // show that s is unevaluated println("s() = " + s()) // evaluate s println("s = " + s) // show that the value is saved println("2 + s = " + (2 + s)) // implicit call to force() val sl = delay { Some(3) val sl1: Susp[Some[Int]] = sl val sl2: Susp[Option[Int]] = sl1 // the type is covariant println("sl2 = " + sl2) println("sl2() = " + sl2()) println("sl2 = " + sl2) s = Susp(?) evaluating... s() = 3 s = Susp(3) 2 + s = 5 sl2 = Susp(?) sl2() = Some(3) sl2 = Susp(Some(3))

Przygotował: Jacek Sroka. PO* - Scala (iteratory, leniwość, view bounds i konwersje)

Przygotował: Jacek Sroka. PO* - Scala (iteratory, leniwość, view bounds i konwersje) 1 PO* - Scala (iteratory, leniwość, view bounds i konwersje) 2 Iteratory Iteratory to imperatywne wersje strumieni Po danych poruszamy się metodami hasnext() i next() (może nie być struktury danych) trait

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Podstawowe cechy i możliwości języka Scala mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 2017 1 / 32 mgr inż. Krzysztof Szwarc Programowanie obiektowe Informacje

Bardziej szczegółowo

Przygotował: Jacek Sroka. PO* - Scala (typy uogólnione, listy)

Przygotował: Jacek Sroka. PO* - Scala (typy uogólnione, listy) 1 PO* - Scala (typy uogólnione, listy) 2 Przykład: stos abstract class IntStack { def push(x: Int): IntStack = new IntNonEmptyStack(x, this) def isempty: Boolean def top: Int def pop: IntStack class IntEmptyStack

Bardziej szczegółowo

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

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Język programowania Ruby Marcin Młotkowski 12 kwietnia 2018 Plan wykładu 1 Wstęp 2 Typy numeryczne Łańcuchy znaków (klasa String) Przedziały Tablice i tablice asocjacyjne Nazwy

Bardziej szczegółowo

KOTLIN. Język programowania dla Androida

KOTLIN. Język programowania dla Androida KOTLIN Język programowania dla Androida Historia Kotlin został opracowany przez firmę JetBrains Prace rozpoczęto w 2011 r., od 2012 r. dostępny na licencji Apache 2. Nazwa pochodzi od wyspy koło Petersburga

Bardziej szczegółowo

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

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h] 1. Typy. Java jest językiem programowania z silnym systemem kontroli typów. To oznacza, że każda zmienna, atrybut czy parametr ma zadeklarowany typ. Kompilator wylicza typy wszystkich wyrażeń w programie

Bardziej szczegółowo

Platformy Programistyczne Podstawy języka Java

Platformy Programistyczne Podstawy języka Java Platformy Programistyczne Podstawy języka Java Agata Migalska 6 maja 2014 Plan wykładu 1 Sztuka wysławiania się w języku Java 2 Cały świat jest obiektem 3 Kolekcje 4 Zmienne i metody statyczne 5 Słowo

Bardziej szczegółowo

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

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016 Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych

Bardziej szczegółowo

Programowanie i projektowanie obiektowe

Programowanie i projektowanie obiektowe Programowanie i projektowanie obiektowe Klasy i obiekty Paweł Daniluk Wydział Fizyki Jesień 2011 P. Daniluk (Wydział Fizyki) PO w. V Jesień 2011 1 / 13 Typy danych (w Javie) Typy pierwotne typ wartości

Bardziej szczegółowo

Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne

Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne dr inż. Marcin Szlenk Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych m.szlenk@elka.pw.edu.pl Paradygmaty

Bardziej szczegółowo

PO* - Scala (typy uogólnione, listy)

PO* - Scala (typy uogólnione, listy) 1 PO* - Scala (typy uogólnione, listy) przygotował Jacek Sroka w oparciu o materiały Martina Oderskiego 2 Przykład: stos abstract class IntStack { def push(x: Int): IntStack = new IntNonEmptyStack(x, this)

Bardziej szczegółowo

Scala. Obiektowo-funkcyjny język programowania. Zbyszek Skowron

Scala. Obiektowo-funkcyjny język programowania. Zbyszek Skowron Scala Obiektowo-funkcyjny język programowania Zbyszek Skowron 4 czerwca 2007 Wprowadzenie Scala jest obiektowo-funkcyjnym jezykiem programowania zaprojektowanym przez Martina Odersky'ego. Inne projekty

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Programowanie funkcyjne Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. XIV Jesień 2013 1 / 25 Paradygmaty programowania Programowanie imperatywne Program

Bardziej szczegółowo

Scala. Wprowadzenie do języka.

Scala. Wprowadzenie do języka. Scala Wprowadzenie do języka. 1 1 whoami Michał Januszewski twitter.com/mjanuszewski michal@mjanuszewski.pl 2 2 Other activities * www.kropkapodi.pl 3 3 Krótka historia......czyli co, po co i dlaczego...

Bardziej szczegółowo

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016 Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac

Bardziej szczegółowo

Klasy abstrakcyjne, interfejsy i polimorfizm

Klasy abstrakcyjne, interfejsy i polimorfizm Programowanie obiektowe 12 kwietnia 2011 Organizacyjne Klasówka będzie 20 IV 2011. Sale jeszcze są pertraktowane. Materiał do wyjątków włącznie. Można mieć swoje materiały nieelektroniczne. Wywołanie z

Bardziej szczegółowo

Podstawy programowania skrót z wykładów:

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej Programowanie obiektowe Interfejsy Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Interfejsy Autor: Paweł Rogaliński Instytut Informatyki,

Bardziej szczegółowo

JAVA W SUPER EXPRESOWEJ PIGUŁCE

JAVA W SUPER EXPRESOWEJ PIGUŁCE JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie

Bardziej szczegółowo

Podstawy Programowania C++

Podstawy Programowania C++ Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:

Bardziej szczegółowo

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016 Wykład 9 28 kwiecień 2016 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa

Bardziej szczegółowo

Wprowadzenie do języka Java

Wprowadzenie do języka Java WSNHiD, Programowanie 2 Lab. 1 [ część 1 ] Wprowadzenie do języka Java Wprowadzenie Język programowania Java jest obiektowym językiem programowania. Powstał w 1995 i od tej pory był intensywnie rozwijany.

Bardziej szczegółowo

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

Języki i metody programowania Java INF302W Wykład 2 (część 1) Języki i metody programowania Java INF302W Wykład 2 (część 1) Autor Dr inż. Zofia Kruczkiewicz Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 2, część 1 1 Struktura wykładu 1. Identyfikacja

Bardziej szczegółowo

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje. Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using

Bardziej szczegółowo

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

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak JAVA Wstęp do programowania w języku obiektowym Bibliografia: JAVA Szkoła programowania, D. Trajkowska Ćwiczenia praktyczne JAVA. Wydanie III,M. Lis Platforma JSE: Opracował: Andrzej Nowak JSE (Java Standard

Bardziej szczegółowo

Języki skryptowe w programie Plans

Języki skryptowe w programie Plans Języki skryptowe w programie Plans Warsztaty uŝytkowników programu PLANS Kościelisko 2010 Zalety skryptów Automatyzacja powtarzających się czynności Rozszerzenie moŝliwości programu Budowa własnych algorytmów

Bardziej szczegółowo

Podstawowe części projektu w Javie

Podstawowe części projektu w Javie Podstawowe części projektu w Javie Pakiet w Javie to grupa podobnych typów klas, interfejsów i podpakietów. Pakiet w Javie może być wbudowany lub zdefiniowany przez użytkownika. Istnieje wiele wbudowanych

Bardziej szczegółowo

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018 Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy

Bardziej szczegółowo

Wykład 4: Klasy i Metody

Wykład 4: Klasy i Metody Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to

Bardziej szczegółowo

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery Łukasz Bartczuk Moduł 5 Podstawy JavaScript Agenda Czym jest JavaScript? Podstawowe typy danych Zmienne Tablice Funkcje Zakres

Bardziej szczegółowo

Przypomnienie o klasach i obiektach

Przypomnienie o klasach i obiektach Wykład 14 Programowanie obiektowe ciąg dalszy, str 1 Przypomnienie o klasach i obiektach -5 należydo int 314 należy do double false należy do boolean {27, 314,-15 należy do double[] wartość należy do typ

Bardziej szczegółowo

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

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy PODSTAWOWE ELEMENTY JĘZYKA JAVA TYPY DANYCH, OPERATORY I INSTRUKCJE 1. Definicja klasy, dziedziczenie, implementowanie metod interfejsów class nazwa_klasy //ciało klasy Klasa: przed słowem class moŝe wystąpić

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;

Bardziej szczegółowo

Podstawy programowania obiektowego

Podstawy programowania obiektowego Podstaw programowania obiektowego wkład 5 klas i obiekt namespace ConsoleApplication1 // współrzędne punktu int, ; Jak, korzstając z dotchczasowej wiedz, zdefiniować w programie punkt? = 3; = 2; Może tak?

Bardziej szczegółowo

Wstęp do Programowania potok funkcyjny

Wstęp do Programowania potok funkcyjny Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 Outline Programowanie imperatywne 1 Programowanie imperatywne Intuicje Programowanie imperatywne Paradygmat programowania imperatywnego: program

Bardziej szczegółowo

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH Michał Bujacz bujaczm@p.lodz.pl B9 Lodex 207 godziny przyjęć: środy i czwartki 10:00-11:00 http://www.eletel.p.lodz.pl/bujacz/ 1 Pytania weryfikacyjne:

Bardziej szczegółowo

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

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego

Bardziej szczegółowo

1 Wstęp. 2 Proste przykłady. 3 Podstawowe elementy leksykalne i typy danych. 6 Opis strukturalny. 7 Moduł testowy (testbench)

1 Wstęp. 2 Proste przykłady. 3 Podstawowe elementy leksykalne i typy danych. 6 Opis strukturalny. 7 Moduł testowy (testbench) Wstęp SYSTEMY WBUDOWANE Układy kombinacyjne c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012

Bardziej szczegółowo

Zaawansowany kurs języka Python

Zaawansowany kurs języka Python Wykład 4. 23 października 2015 Plan wykładu 1 2 Pliki tekstowe Trwałość obiektów CSV Strumienie Plan wykładu 1 2 Pliki tekstowe Trwałość obiektów CSV Strumienie Protokół iteracyjny Producent Umiem dostarczać

Bardziej szczegółowo

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Polimorfizm, metody wirtualne i klasy abstrakcyjne Programowanie obiektowe Polimorfizm, metody wirtualne i klasy abstrakcyjne Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Polimorfizm,

Bardziej szczegółowo

Scala + NetBeans AKA: Nowoczesne obiektowe języki programowania i środowiska programistyczne na przykładzie Scali i środowiska NetBeans

Scala + NetBeans AKA: Nowoczesne obiektowe języki programowania i środowiska programistyczne na przykładzie Scali i środowiska NetBeans 1 Scala + NetBeans AKA: Nowoczesne obiektowe języki programowania i środowiska programistyczne na przykładzie Scali i środowiska NetBeans (spotkanie 6) 2 Iteratory Iteratory to imperatywne wersje strumieni

Bardziej szczegółowo

Podstawy programowania w Pythonie

Podstawy programowania w Pythonie Podstawy programowania w Pythonie Wykład 2 dr Andrzej Zbrzezny Instytut Matematyki i Informatyki Akademia Jana Długosza w Częstochowie 10 października 2012 dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Podstawowe konstrukcje programistyczne Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk (Wydział Fizyki) WP w. II Jesień 2014 1 / 38 Przypomnienie Programowanie imperatywne Program

Bardziej szczegółowo

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

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java Cechy C++ Język ogólnego przeznaczenia Można programować obiektowo i strukturalnie Bardzo wysoka wydajność kodu wynikowego

Bardziej szczegółowo

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0 Uwaga: DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0 1. Zostały pominięte diagramy: CYFRA, CYFRA SZESNASTKOWA, ZNAK i LITERA. Nie została uwzględniona możliwość posługiwania się komentarzami. 2. Brakuje

Bardziej szczegółowo

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++ Programowanie Wstęp p do programowania Klasa 3 Lekcja 9 PASCAL & C++ Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany w postaci programu

Bardziej szczegółowo

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Obiekty reprezentują pewne pojęcia, przedmioty, elementy rzeczywistości. Obiekty udostępniają swoje usługi: metody operacje,

Bardziej szczegółowo

Java: interfejsy i klasy wewnętrzne

Java: interfejsy i klasy wewnętrzne Java: interfejsy i klasy wewnętrzne Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 INTERFEJSY Interfejs to opis co klasa implementująca dany interfejs powinna robić, ale bez określania

Bardziej szczegółowo

Definiowanie własnych klas

Definiowanie własnych klas Programowanie obiektowe Definiowanie własnych klas Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Definiowanie własnych klas Autor:

Bardziej szczegółowo

Java EE produkcja oprogramowania

Java EE produkcja oprogramowania Java EE produkcja oprogramowania PPJ PODSTAWY PROGRAMOWANIA W JAVIE PODSTAWY JĘZYKA JAVA 4 Warszawa, 2016Z 2 Pętle, typ tablicowy, usługi czasu i kalendarza 3 Pętla while 1/3 Instrukcja pętli umożliwia

Bardziej szczegółowo

Microsoft IT Academy kurs programowania

Microsoft IT Academy kurs programowania Microsoft IT Academy kurs programowania Podstawy języka C# Maciej Hawryluk Język C# Język zarządzany (managed language) Kompilacja do języka pośredniego (Intermediate Language) Kompilacja do kodu maszynowego

Bardziej szczegółowo

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

Języki i metody programowania Java. Wykład 2 (część 2) Języki i metody programowania Java INF302W Wykład 2 (część 2) Autor Dr inż. Zofia Kruczkiewicz 1 Struktura wykładu 1. Identyfikacja danych reprezentowanych przez klasy podczas opracowania koncepcji prostego

Bardziej szczegółowo

Język programowania Scala / Grzegorz Balcerek. Wyd. 2. Poznań, cop Spis treści

Język programowania Scala / Grzegorz Balcerek. Wyd. 2. Poznań, cop Spis treści Język programowania Scala / Grzegorz Balcerek. Wyd. 2. Poznań, cop. 2016 Spis treści Przedmowa 1 Stosowana notacja 1 1. Wprowadzenie 3 1.1. Konsola interaktywna języka Scala 3 1.2. Zmienne 5 1.3. Wartości

Bardziej szczegółowo

Bazy Danych i Usługi Sieciowe

Bazy Danych i Usługi Sieciowe Bazy Danych i Usługi Sieciowe Język PHP Paweł Witkowski Wydział Matematyki, Informatyki i Mechaniki Jesień 2011 P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 1 /

Bardziej szczegółowo

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017 Wykład 13 14 czerwiec 2017 Java vs cpp - podobieństwa Podobny sposób definiowania klas. Występowanie typów podstawowych: boolean, char, byte, short, int, long, float, double. Podobna zasada definiowania

Bardziej szczegółowo

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

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie Języki Programowania II Wykład 3 Java podstawy Przypomnienie Analiza, projektowanie, programowanie, testowanie, wdrażanie Iteracyjnie nie kaskadowo Przypadki użycia = opowiastki o używaniu systemu = wymagania

Bardziej szczegółowo

Programowanie komputerowe. Zajęcia 1

Programowanie komputerowe. Zajęcia 1 Programowanie komputerowe Zajęcia 1 Code::Blocks - tworzenie projektu Create New Project Console Application -> C++ Wybierz nazwę projektu Stworzy się nowy projekt z wpisaną funkcją main Wpisz swój program

Bardziej szczegółowo

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main Język obiektowy Wykład 13 Programowanie obiektowe z lotu ptaka, str 1 James Gosling, Mike Sheridan, Patrick Naughton Sun Microsystems 1995(20latmłodszyodC) C jest językiem proceduralnym Java jest językiem

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Przygotował: Jacek Sroka 1 Programowanie obiektowe Wykład 3 Java podstawy Przygotował: Jacek Sroka 2 Przypomnienie Analiza, projektowanie, programowanie, testowanie, wdrażanie Iteracyjnie nie kaskadowo

Bardziej szczegółowo

Język programowania Scala + aktorzy Akka

Język programowania Scala + aktorzy Akka Język programowania Scala + aktorzy Akka Marek Skórkowski Plan prezentacji: Aktorzy Akka Scala 1. Wprowadzenie (AS) 2. Scala(MS) 3. Nawiasy, kropki... (MS) 4. DSL (MS) 5. Wielodziedziczenie(MS) 6. Package

Bardziej szczegółowo

Programowanie - instrukcje sterujące

Programowanie - instrukcje sterujące Instytut Informatyki Uniwersytetu Śląskiego Laborki środowisko NetBeans, tworzenie nowego projektu; okno projekty; główne okno programu; package - budowanie paczek z klas; public class JavaApplication

Bardziej szczegółowo

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU Konstrukcja obiektów Niszczenie obiektów i zwalnianie zasobów

Bardziej szczegółowo

Programowanie 2. Język C++. Wykład 3.

Programowanie 2. Język C++. Wykład 3. 3.1 Programowanie zorientowane obiektowo... 1 3.2 Unie... 2 3.3 Struktury... 3 3.4 Klasy... 4 3.5 Elementy klasy... 5 3.6 Dostęp do elementów klasy... 7 3.7 Wskaźnik this... 10 3.1 Programowanie zorientowane

Bardziej szczegółowo

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

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle Pętle while, for, while, instrukcje break, continue, switch 1. Pętle Przykład 1 - Pętla while public class lab4_3 public static void main(string[] args) char ch = 'a'; String s, wynik=""; while ( ch!=

Bardziej szczegółowo

PROGRAMOWANIE W ŚRODOWISKU FLASH wykład 2

PROGRAMOWANIE W ŚRODOWISKU FLASH wykład 2 PROGRAMOWANIE W ŚRODOWISKU FLASH wykład 2 Paweł Woszkowski SWSIM 2009 ADOBE ACTIONSCRIPT Programming language of the Adobe Flash Platform. Originally developed as a way for developers to program interactivity,

Bardziej szczegółowo

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

Bardziej szczegółowo

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program. PYTHON Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program. Aby program napisany w danym języku mógł być wykonany, niezbędne

Bardziej szczegółowo

JavaScript funkcyjność

JavaScript funkcyjność JavaScript funkcyjność WWW 9 kwietnia 2014 Możliwości tworzenia dynamicznych stron WWW HTML i CSS. Skrypty CGI (Perl, PHP). Serwery (django, java). Plug-iny. Ksiażka Większość przykładów pochodzi z ksiażki:

Bardziej szczegółowo

Java Programowanie Obiektowe Ćwiczenie 1- wprowadzenie

Java Programowanie Obiektowe Ćwiczenie 1- wprowadzenie Java Programowanie Obiektowe Ćwiczenie 1- wprowadzenie 1. Cel ćwiczenia i zakres Poznanie środowiska IntelliJ IDEA Maven narzędzie do budowanie projektów typy podstawowe i tablice, instrukcje warunkowe,

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.

Bardziej szczegółowo

Programowanie w Internecie. Java

Programowanie w Internecie. Java Programowanie w Internecie Java Autor: dr inż. Zofia Kruczkiewicz Literatura: L. Lemay, R. Cadenhead P. Naughton Krzysztof Barteczko Boone Barry Java 2 dla każdego Podręcznik Języka Programowania Java

Bardziej szczegółowo

Programowanie. Lista zadań nr 15. Na ćwiczenia 11, 19 i 23 czerwca 2008

Programowanie. Lista zadań nr 15. Na ćwiczenia 11, 19 i 23 czerwca 2008 Programowanie Lista zadań nr 15 Na ćwiczenia 11, 19 i 23 czerwca 2008 Zadanie 1. Pokaż, że w systemie z polimorfizmem parametrycznym można napisać program P n rozmiaru O(n), którego typ ma rozmiar 2 2Ω(n).

Bardziej szczegółowo

Paradygmaty programowania

Paradygmaty programowania Paradygmaty programowania Jacek Michałowski, Piotr Latanowicz 15 kwietnia 2014 Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 1 / 12 Zadanie 1 Zadanie 1 Rachunek predykatów

Bardziej szczegółowo

Podstawy i języki programowania

Podstawy i języki programowania Podstawy i języki programowania Laboratorium 2 - wprowadzenie do zmiennych mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 23 października 2017 1 / 26 mgr inż. Krzysztof Szwarc Podstawy i

Bardziej szczegółowo

Java Język programowania

Java Język programowania Java Język programowania Język Java Bazuje i jest zbliżony do C/C++ Porosty zbiór typów danych (podział na typy prymitywne i obiektowe) Zarządzanie pamięcią i Garbage Collection Zintegrowana synchronizacja

Bardziej szczegółowo

Wykresy i interfejsy użytkownika

Wykresy i interfejsy użytkownika Wrocław, 07.11.2017 Wstęp do informatyki i programowania: Wykresy i interfejsy użytkownika Wydział Matematyki Politechniki Wrocławskiej Andrzej Giniewicz Dzisiaj na zajęciach... Instrukcje sterujące Biblioteka

Bardziej szczegółowo

Programowanie RAD Delphi

Programowanie RAD Delphi Programowanie RAD Delphi Dr Sławomir Orłowski Zespół Fizyki Medycznej, Instytut Fizyki, Uniwersytet Mikołaja Kopernika w Toruniu Pokój: 202, tel. 611-32-46, e-mial: bigman@fizyka.umk.pl Delphi zasoby Aplikacje

Bardziej szczegółowo

Metaprogramowanie w Ruby

Metaprogramowanie w Ruby 24 marca 2011 Cechy języka Wieloparadygmatowy Imperatywny Typowanie Silne Dynamiczne Otwarte klasy Interpretowany Wszystko jest obiektem Moduły i mixiny Moduły Moduły pozwalają na łatwe włączanie ich kodu

Bardziej szczegółowo

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu Programowanie V Dariusz Skibicki Wydział Inżynierii Mechanicznej Uniwersytet Technologiczno-Przyrodniczy im. Jana i Jędrzeja Śniadeckich w Bydgoszczy dariusz.skibicki(at)utp.edu.pl Programowanie Projektowanie

Bardziej szczegółowo

Programowanie Komputerów

Programowanie Komputerów Programowanie Komputerów Łukasz Kuszner pokój 209, WETI http://www.kaims.pl/ kuszner/ kuszner@eti.pg.gda.pl Wykład 30 godzin, Laboratoria 30 godzin 2012/ Strona 1 z 28 1. Tablice w C# Indeksowane od zera

Bardziej szczegółowo

Funkcje i instrukcje języka JavaScript

Funkcje i instrukcje języka JavaScript Funkcje i instrukcje języka JavaScript 1. Cele lekcji a) Wiadomości Uczeń : zna operatory i typy danych języka JavaScript, zna konstrukcję definicji funkcji, zna pętlę If i For, Do i While oraz podaje

Bardziej szczegółowo

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre) Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie

Bardziej szczegółowo

PODEJŚCIE OBIEKTOWE. Przykład 1 metody i atrybuty statyczne

PODEJŚCIE OBIEKTOWE. Przykład 1 metody i atrybuty statyczne Przykład 1 metody i atrybuty statyczne public class Napis1 { static String wynik; public static void Inicjuj() {wynik = ""; PODEJŚCIE OBIEKTOWE public static void Dopisz_do_wyniku(char ch) { wynik+="\nkod

Bardziej szczegółowo

Python. Wprowadzenie. Jolanta Bachan

Python. Wprowadzenie. Jolanta Bachan Python Wprowadzenie Jolanta Bachan Zainstaluj i przetestuj Pythona https://www.python.org/downloads/ print 'Hello world!' operatory numeryczne: + - * / // % ** operatory porównania: ==!= > < >=

Bardziej szczegółowo

Wstęp do Programowania 2

Wstęp do Programowania 2 Wstęp do Programowania 2 dr Bożena Woźna-Szcześniak bwozna@gmail.com Akademia im. Jana Długosza Wykład 5 W programowaniu obiektowym programista koncentruje się na obiektach. Zadaje sobie pytania typu:

Bardziej szczegółowo

λ parametry. wartość funkcji suma = λ x y. x + y kwadrat = λ x. x * x K.M. Ocetkiewicz, 2008 WETI, PG 2 K.M. Ocetkiewicz, 2008 WETI, PG 3

λ parametry. wartość funkcji suma = λ x y. x + y kwadrat = λ x. x * x K.M. Ocetkiewicz, 2008 WETI, PG 2 K.M. Ocetkiewicz, 2008 WETI, PG 3 Organizacja przedmiotu Języki programowania (Programming language concepts) Krzysztof M. Ocetkiewicz pok. 205 email: Krzysztof.Ocetkiewicz@eti.pg.gda.pl konsultacje: czwartek 10:15-11.00, 13:15-14:00 projekt:

Bardziej szczegółowo

Języki i metody programowania

Języki i metody programowania Języki i metody programowania Wykład 3 dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Instytut Matematyki i Informatyki Akademia Jana Długosza w Częstochowie hab. Andrzeja Zbrzezngo Wartości boolowskie

Bardziej szczegółowo

Python i programowanie funkcyjne. Python i programowanie funkcyjne czyli nie tylko obiektowość rządzi. OSEC Funkcyjnie w języku Python 1 z 40

Python i programowanie funkcyjne. Python i programowanie funkcyjne czyli nie tylko obiektowość rządzi. OSEC Funkcyjnie w języku Python 1 z 40 czyli nie tylko obiektowość rządzi 1 z 40 O czym będę mówił... Jak najmniej teorii bo nie czas i miejsce... Próba odpowiedzi na pythanie: Czy warto programować nie tylko obiektowo? Jak język Python wspiera

Bardziej szczegółowo

Programowanie obiektowe i zdarzeniowe

Programowanie obiektowe i zdarzeniowe Marek Tabędzki Programowanie obiektowe i zdarzeniowe 1/23 Programowanie obiektowe i zdarzeniowe wykład 6 polimorfizm Na poprzednim wykładzie: dziedziczenie jest sposobem na utworzenie nowej klasy na podstawie

Bardziej szczegółowo

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych i

Bardziej szczegółowo

Dziedziczenie. dr Jarosław Skaruz

Dziedziczenie. dr Jarosław Skaruz Dziedziczenie dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com Dziedziczenie specjalizacja Dziedziczenie generalizacja Generalizacja-specjalizacja jest takim związkiem pomiędzy klasami,

Bardziej szczegółowo

XML extensible Markup Language. część 5

XML extensible Markup Language. część 5 XML extensible Markup Language część 5 XML ważne zastosowanie Jak często pracujemy z plikami XML? Wróćmy jeszcze do wykładu poprzedniego. A dokładnie do pliku zawierającego ten wykład. xml_2017_wyklad_4.pptx

Bardziej szczegółowo

Programowanie Funkcyjne. Marcin Kubica Świder,

Programowanie Funkcyjne. Marcin Kubica Świder, Programowanie Funkcyjne Marcin Kubica Świder, 28-04-2015 Czym jest programowanie funkcyjne? Obliczalne pojęcia matematyczne. Definicje stałych i funkcji i relacji. Wszystkie definicje są konstruktywne,

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Wykład 2 28 lutego 2019 Plan wykładu 1 2 3 4 5 Plan wykładu 1 2 3 4 5 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie; standardy ISO i ECMA; podobny składniowo do C++; Język C Krótka

Bardziej szczegółowo

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

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1 PODSTAWOWE ELEMENTY JĘZYKA JAVA WYRAŻENIA, OPERATORY, INSTRUKCJE 1. Operatory arytmetyczne +, -, /,*, % Przykład 1 programu z interfejsem konsolowym public class Lab2_1 // Tworzy generator liczb losowych,

Bardziej szczegółowo

Podstawy programowania w języku C

Podstawy programowania w języku C Podstawy programowania w języku C WYKŁAD 1 Proces tworzenia i uruchamiania programów Algorytm, program Algorytm przepis postępowania prowadzący do rozwiązania określonego zadania. Program zapis algorytmu

Bardziej szczegółowo

Kurs rozszerzony języka Python

Kurs rozszerzony języka Python Wykład 2. 13 października 2017 Plan wykładu Klasy i obiekty 1 Klasy i obiekty 2 3 4 Plan wykładu Klasy i obiekty 1 Klasy i obiekty 2 3 4 Deklaracja klasy Klasy i obiekty Przykłady class Figura: Pierwsza

Bardziej szczegółowo

LibreOffice Calc VBA

LibreOffice Calc VBA LibreOffice Calc VBA LibreOffice Calc umożliwia tworzenie własnych funkcji i procedur przy użyciu składni języka VBA. Dostęp do edytora makr: Narzędzia->Makra->Zarządaj makrami->libreoffice Calc Aby rozpocząć

Bardziej szczegółowo