Paradygmaty programowania

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

Download "Paradygmaty programowania"

Transkrypt

1 Paradygmaty programowania Paradygmat funkcyjny Cezary Bolek Katedra Informatyki UŁ 1 Dlaczego programowanie funkcyjne? Języki imperatywne, a w duŝym stopniu takŝe obiektowe, są bardzo silnie związane z architekturą von Neumanna. WiąŜe się to z pojęciem stanu maszyny, któremu w językach tych odpowiadają zmienne i dane w obiektach. Jedno z podejść do programowania wiąŝe się z opinią, Ŝe związek z architekturą von Neumanna narzuca niepotrzebne ograniczenia na proces tworzenia oprogramowania. W zamian za to moŝna przyjąć paradygmat oparty na pojęciu funkcji w znaczeniu takim, jakie od lat przyjmuje się w matematyce. Paradygmaty programowania Cezary Bolek 2 Popularność programowania funkcyjnego W środowisku komercyjnych twórców oprogramowania języki funkcyjne nie są zbytnio rozpowszechnione z pewnymi wyjątkami. Istnieje przykładowo Lisp. Jest to jeden z języków funkcyjnych, który doczekał się sporej popularności. Uproszczonym i uporządkowanym dialektem Lispu jest Scheme. W środowiskach akademickich znane i cenione są takŝe np. języki ML wraz z pochodnymi i Haskell. Słyną m.in. ze swojego silnego typowania. Oprócz tego dość silną pozycję mają pewne języki niszowe, np. Erlang (w telekomunikacji i K (w obliczeniach finansowych. Paradygmaty programowania Cezary Bolek 3

2 Cechy charakterystyczne Nie ma pamięci, a zatem nie ma zmiennych modelujących komórki pamięci. Nie ma teŝ więc stanu funkcji. A więc nie ma efektów ubocznych... Nie ma ciągów instrukcji i iteracji, a jedynie rekurencja i wyraŝenia warunkowe. Innymi słowy, funkcja (w sensie matematycznym definiuje wartość, ale nie określa ciągu działań na wartościach w pamięci, które mogłyby ją wytworzyć. Parametr funkcji reprezentuje dowolny element z dziedziny, lecz w trakcie obliczania jest ustalony Paradygmaty programowania Cezary Bolek 4 Rachunek Lambda WaŜnym elementem podstaw matematycznych dla programowania funkcyjnego jest rachunek lambda. Wymyślony przez Alonsa Churcha w roku 1941, Pozwala m.in. zdefiniować funkcję bez nadawania jej nazwy. W klasycznym zapisie matematycznym definiując funkcję, nadaje się jej z konieczności nazwę, np.: f ( n = n f ( n 1 Natomiast wyraŝenie lambda ( λ -wyraŝenie utoŝsamiane jest z samą funkcją, np.: λ x. x - funkcja obliczająca kwadrat danego parametru. 2 Paradygmaty programowania Cezary Bolek 5 Rachunek Lambda λ -wyraŝenie zawiera: symbol λ, parametry funkcji, kropkę i wyraŝenie opisujące wartość funkcji; Niekiedy zamiast kropki stosuje się nawiasy obejmujące parametry, np. 2 λ( x x WyraŜenie takie moŝna zastosować do parametru, pisząc parametr za owym wyraŝeniem, np.: (λ x. x 2 2 (3 = 3 = 9 Paradygmaty programowania Cezary Bolek 6

3 Cel stosowania języków funkcyjnych Naśladowanie funkcji matematycznych (Czysty język funkcyjny nie ma zmiennych programista nie musi się więc martwić o pamięć. Ponadto: Konstrukcje iteracyjne (np. pętla while nie są moŝliwe bez zmiennych, trzeba stosować rekurencję Wykonanie programu funkcyjnego nie ma stanu w sensie semantyki operacyjnej lub denotacyjnej. Dla tych samych parametrów wykonanie funkcji zawsze daje ten samy wynik. Określane jest to mianem przeźroczystością odniesień Paradygmaty programowania Cezary Bolek 7 Składniki języka funkcyjnego Zbiór funkcji pierwotnych. Zbiór funkcjonałów pozwalających konstruować złoŝone funkcje z funkcji pierwotnych. Operacja aplikowania funkcji do argumentu. Pewne struktury do reprezentowania parametrów i obliczonych wyników. Paradygmaty programowania Cezary Bolek 8 Przegląd języków funkcyjnych Paradygmaty programowania Cezary Bolek 9

4 Lisp Najstarszy język funkcyjny. Prace projektowe rozpoczęły się pod koniec lat 50-tych XX wieku. Pierwotnie jego nazwę pisano duŝymi literami: LISP. Ewoluował, choć obecne koncepcje języków funkcyjnych są nieco inne. W historii istniało wiele dialektów Lispu obecnie do najpopularniejszych naleŝą dwa: Common Lisp i Scheme Paradygmaty programowania Cezary Bolek 10 Lisp obiekty danych W oryginalnym Lispie są tylko dwa moŝliwe obiekty: atomy i listy Nie są to typy w sensie języka imperatywnego Atomy to symbole (w postaci identyfikatorów lub stałe liczbowe Listy określa się przez wyszczególnienie elementów w nawiasach Listy mogą być zagnieŝdŝane Listę pustą zapisuje się jako ( Paradygmaty programowania Cezary Bolek 11 Lisp: S-wyraŜenia (Symbolic Expression Wywołania funkcji zapisywane są w Odwrotnej Notacji Polskiej, w postaci: (nazwafunkcji arg 1... arg n Definicje funkcji zapisuje się w notacji lambda, w postaci: (nazwafunkcji (LAMBDA (arg 1... arg n wyraŝenie Pierwotnie S-wyraŜeniami nazywano określone w powyŝszy sposób funkcje. Później nazwą tą objęto wszystkie struktury w Lispie dane i kod. WaŜna cecha Lispu: dane (listy i kod (wywołania funkcji mają taką samą postać. Daje to m.in. moŝliwość dynamicznego tworzenia kodu. Paradygmaty programowania Cezary Bolek 12

5 Lisp - nawiasy S-wyraŜenia implikują stosowanie wielu zagnieŝdŝonych konstrukcji opartych na nawiasach Sposób uŝycia nawiasów jest najlepiej widocznym na pierwszy rzut oka faktem pozwalający odróŝnić Lisp od innych rodzin języków Z tego powodu Lisp był często krytykowany, głównie przez programistów innych języków JednakŜe składnia oparta na S-wyraŜeniach leŝy u podstaw moŝliwości Lispu; jest niezwykle regularna, co ułatwia jej przetwarzanie przez komputer Paradygmaty programowania Cezary Bolek 13 Scheme Scheme jest odmianą Lispu. Pojawił się w połowie lat 70-tych XX wieku Jest niewielki w porównaniu z oryginalnym Lispem. Stosuje zakresy statyczne Funkcje mogą być wartościami wyraŝeń i elementami list; mogą być przekazywane jako parametry Interpreter Scheme u Ma postać nieskończonej pętli, która czyta wyraŝenie, interpretuje je i wyświetla wynik WyraŜenia są interpretowane przez funkcję EVAL Paradygmaty programowania Cezary Bolek 14 Scheme pierwotne funkcje liczbowe Są wśród nich podstawowe działania arytmetyczne Biorą dowolną liczbę argumentów, np. + dodaje wszystkie argumenty do siebie, od pierwszego argumentu odejmuje pozostałe Przy wywołaniu bez argumentów zwracają odpowiedni element neutralny 0 dla dodawania, 1 dla mnoŝenia. itp. Oprócz tego są istnieją: ABS (wartość bezwzględna, SQRT (pierwiastkowanie, REMAINDER (reszta z dzielenia, MIN, MAX inne... Paradygmaty programowania Cezary Bolek 15

6 Scheme definiowanie funkcji Program to zbiór definicji funkcji MoŜna uŝywać funkcji bez nazw, np. (LAMBDA (x (* x x Zatem poniŝsze wywołanie wyświetli wynik 36: ((LAMBDA (x (* x x 6 W powyŝszym λ-wyraŝeniu x jest zmienną związaną MoŜna związać nazwę z wartością lub z λ-wyraŝeniem za pomocą specjalnej funkcji DEFINE. W pierwszym przypadku powstają nazwane stałe (nie zmienne!, np. (DEFINE pi W drugim przypadku, jako parametry potrzebne są dwie listy: prototyp funkcji i wyraŝenie (lub wyraŝenia, z którymi nazwa jest wiązana. W tym przypadku pomija się słowo LAMBDA, np. (DEFINE (square x (* x x Parametry przekazywane są przez wartość. Paradygmaty programowania Cezary Bolek 16 Scheme funkcje do obsługi wyjścia Typowy sposób wyprowadzenia wyników programu to po prostu wyjście z interpretera, czyli wynik aplikacji funkcji EVAL do funkcji w programie Istnieje takŝe imperatywna funkcja wyjściowa, która wyświetla podane wyraŝenie (jest to właściwie jej efekt uboczny... (DISPLAY wyraŝenie Druga funkcja imperatywna to (NEWLINE Paradygmaty programowania Cezary Bolek 17 Scheme - predykaty działające na liczbach Predykaty to wyraŝenia, które mają za zadanie zwracać logiczną wartość zapytania które reprezentują w zaleŝności od podanych parametrów Dostępne są predykaty: =, <>, >, <, >=, <= EVEN? sprawdza, czy podana wartość liczbowa jest parzysta ODD? sprawdza, czy nieparzysta ZERO? sprawdza, czy wartość jest zerem NEGETIVE? sprawdza, czy podana wartość jest ujemna Wartości logiczne są zapisywane jako #F i #T Lista pusta ( interpretowana jest jako #F, a dowolna lista niepusta jako #T. Paradygmaty programowania Cezary Bolek 18

7 Scheme struktury sterujące Dwie struktury słuŝące do sterowania. Wybór jeden z dwóch zapisuje się w postaci: (IF predykat wyraŝeniet wyraŝenief Wybór jeden z wielu zapisuje się w postaci: (COND (predykat1 wyraŝenie1 (predykat2 wyraŝenie2... (predykatn wyraŝenien (ELSE wyraŝeniee Przykład: Definicja funkcji obliczającej silnię: (DEFINE (silnia n (IF (= n 0 1 (* n (silnia ( n 1 Paradygmaty programowania Cezary Bolek 19 Scheme funkcje listowe QUOTE zwraca swój parametr bez jakichkolwiek zmian (czyli bez obliczania go jako funkcji; w tej roli moŝna teŝ uŝyć jednego apostrofu, np. (QUOTE (A B C jest równowaŝne z (A B C, czyli lista (A B C Funkcja ta jest potrzebna, gdy istnieje potrzeba np. potraktowania listy jako czystych danych, a nie jako wywołanie funkcji z parametrami. UŜycie nie zacytowanej listy (A B C skutkowałoby próbą policzenia funkcji A na argumentach B i C. CAR zwraca pierwszy element (głowę podanej listy, np. (CAR (A B C zwraca A. Wywołanie CAR dla pustej listy lub atomu jest błędem. CDR zwraca część listy pozostałą po usunięciu głowy (ogon, np. (CDR (A B C zwraca (B C. Paradygmaty programowania Cezary Bolek 20 Scheme inne funkcje listowe i predykaty CONS tworzy listę z podanej głowy i ogona, tzn. wstawia pierwszy parametr jako nową głowę w liście będącej drugim parametrem, np (CONS A (B C zwraca (A B C (CONS (A B (C D zwraca ((A B C D LIST tworzy listę z dowolnej liczby parametrów. Jest to skrótowa forma o takim samym znaczeniu jak zagnieŝdŝone wywołania CONS Predykaty EQ? zwraca #T, jeśli obydwa parametry są atomami i są równe LIST? zwraca #T, jeśli parametr jest listą NULL? zwraca #T, jeśli parametr jest listą pustą Paradygmaty programowania Cezary Bolek 21

8 Lisp - przykład Funkcja sprawdzająca, czy atom (podany jak pierwszy parametr jest elementem listy (podanej jako drugi parametr. (DEFINE (member atm lst (COND ((NULL? lst ( ((EQ? atm (CAR lst #T (ELSE (member atm (CDR lst #;> (member 'a '(a b c Paradygmaty programowania Cezary Bolek 22 Scheme składanie funkcji Był to jedyny pierwotny funkcjonał w pierwotnym Lispie. Działanie: Wszelkie listy (nie cytowane za pomocą QUOTE bądź apostrofu są traktowane jako wywołania funkcji Najpierw są wyliczane ich parametry Odnosi się to rekurencyjnie do list zagnieŝdŝonych w listach Jest to w istocie właśnie składanie funkcji Przykład: CDR (CDR (A B C zwraca (C Paradygmaty programowania Cezary Bolek 23 Scheme składanie funkcji (przykład Operator aplikacji (zastosowania funkcji do wszystkich elementów listy zbiorowej moŝna zdefiniować następująco: (DEFINE (mapcar fun lst (COND ((NULL? lst ( (ELSE (CONS (fun (CAR lst (mapcar fun (CDR lst #;> (mapcar sin '( ( Paradygmaty programowania Cezary Bolek 24

9 Scheme funkcje tworzące kod Program i dane w Scheme mają taką samą strukturę To powoduje, Ŝe moŝna z łatwością dynamicznie budować kod Przykład: Przypuśćmy, Ŝe mamy listę atomów liczbowych i chcemy policzyć ich sumę. ZauwaŜmy, Ŝe operatora + nie moŝna zastosować bezpośrednio, gdyŝ wymaga on jako parametrów atomów, a nie listy. Istnieją dwie istotnie róŝne moŝliwości. Paradygmaty programowania Cezary Bolek 25 Scheme funkcje tworzące kod (przykład Wariant 1: funkcja, która dodaje po kolei wszystkie atomy (DEFINE (sumator lst (COND ((NULL? lst 0 (ELSE (+ (CAR lst (sumator (CDR lst Wariant 2: zbudowanie odpowiedniego wywołania dla operatora + za pomocą CONS i policzenie go poprzez wywołanie funkcji EVAL: (DEFINE (sumator lst (COND ((NULL? lst 0 (ELSE (EVAL (CONS + lst #;> (sumator1 '( Scheme wiązanie nazwy a wartością Funkcja LET Składnia wywołania jest następująca: (LET ( (nazwa1 wyraŝenie1 (nazwa2 wyraŝenie2... (nazwan wyraŝenien ciało Wywołanie powoduje związanie podanych nazw z odpowiednimi wyraŝeniami oraz obliczenie ciała Funkcja LET jest przydatna jako pewien sposób modularyzacji obliczeń Paradygmaty programowania Cezary Bolek 27

10 Scheme funkcja LET (przykład Funkcja obliczająca iloraz sum dwóch list. Zwraca 0, jeśli druga suma (dzielnik jest zerem (DEFINE (iloraz x y (LET ( (licznik (sumator x (mianownik (sumator y (IF (ZERO? mianownik 0 (/ licznik mianownik #;> (iloraz '( '( /5 Paradygmaty programowania Cezary Bolek 28 Język ML ML to język, który w swoim czasie był typowym akademickim przykładem języka funkcyjnego Stosuje zakresy statyczne. Jest silnie typowany, bez niejawnych konwersji, za to stosuje niejawne nadawanie typów. WyraŜenia arytmetyczne zapisywane w tradycyjnej postaci infiksowej. Zawiera obsługę wyjątków. Paradygmaty programowania Cezary Bolek 29 ML funkcje Deklaracje mają postać fun nazwa (parametry = ciało; Przykładowo: fun square (x: int: int = x * x; Funkcje zawierające działania arytmetyczne nie mogą być polimorficzne Funkcje zawierające tylko operacje na listach, operatory n-tek i porównania (= oraz <> mogą być polimorficzne Paradygmaty programowania Cezary Bolek 30

11 ML funkcje MoŜna stosować konstrukcję if-then-else, np. fun fact(n: int: int = if n = 0 then 1 else n * fact(n 1; Alternatywą jest stosowane często dopasowywanie do wzorca, np. fun fact(0 = 1 fact(n: int: int = n * fact(n 1; Paradygmaty programowania Cezary Bolek 31 ML listy Listy zapisywane są w nawiasach kwadratowych, np. [3, 2, 7] Lista pusta zapisywana jest jako [] lub nil Konstruktor listowy (odpowiednik CONS ::, np. 1 :: [3, 2, 7] daje [1, 3, 2, 7] Elementy listy muszą być tego samego typu Funkcje wydzielające głowę i ogon (odpowiedniki CAR i CDR: to hd oraz tl Operator :: moŝe być uŝywany w dopasowaniach do wzorca, np.: fun length([] = 0 length(h :: t = 1 + length(t; Paradygmaty programowania Cezary Bolek 32 ML przykład Funkcja łącząca dwie listy. Zrealizowana jako rekurencyjna, z dopasowywaniem za pomocą operatora :: fun append([], lst = lst append(h :: t, lst = h :: append(t, lst; Paradygmaty programowania Cezary Bolek 33

12 Haskell Podobnie jak ML, stosuje zakresy statyczne Jest silnie typowany Stosuje obliczanie leniwe, tzn. nie oblicza podwyraŝeń, dopóki nie jest to konieczne Zawiera ciekawe operacje listotwórcze Czysto funkcyjny, bez efektów ubocznych. Paradygmaty programowania Cezary Bolek 34 Haskell funkcje Definicje funkcji są postaci np. fact 0 = 1 fact n = n * fact (n 1 W powyŝszym przykładzie stosowane jest dopasowywanie. Alternatywnie moŝna uŝyć dozorów, np. fact n n == 0 = 1 n > 0 = n * fact (n 1 PowyŜsza forma to wyraŝenie warunkowe. MoŜe zawierać część opatrzoną klauzulą otherwise, obliczaną wówczas, gdy wszystkie dozory są fałszywe. Paradygmaty programowania Cezary Bolek 35 Haskell listy Listy zapisywane są w nawiasach kwadratowych, np. [3, 2, 7] Lista pusta zapisywana jest jako [] Listy moŝna łączyć za pomocą operatora ++, np. [1, 3] ++ [2,7] daje [1, 3, 2, 7] Operator # podaje długość listy Za pomocą operatora.. moŝna określać ciągi arytmetyczne, np. [1..5] daje [1, 2, 3, 4, 5] [3, 6..15] daje [3, 6, 9, 12, 15] Paradygmaty programowania Cezary Bolek 36

13 Haskell listy Konstruktor listowy (odpowiednik CONS - : np. 1 : [3, 2, 7] daje [1, 3, 2, 7] Operator : moŝe być uŝywany w dopasowaniach, np.: iloczyn [] = 1 iloczyn (a : x = a * iloczyn x Paradygmaty programowania Cezary Bolek 37 Haskell operacje listotwórcze Jest to metoda opisu list, które reprezentują zbiory. Ogólna postać: [ wyraŝenie kwalifikator ] Przykładowo: [ n * n n [1..20] ] definiuje listę kwadratów liczb od 1 do 20. Innymi słowy lista wszystkich n*n po n z zakresu od 1 do 20 Kwalifikatorem moŝe być generator (jak w powyŝszym przykładzie lub warunek, np.: dzielniki n = [ i i <- [1..n div 2], n mod i == 0] Przykład implementacja sortowania szybkiego: sort [] = [] sort (h:t = sort [b b<-t, b<=h] ++ [h] ++ sort [b b<-t, b>h] Paradygmaty programowania Cezary Bolek 38 Haskell obliczanie leniwe Parametry funkcji obliczane są tylko wtedy, gdy jest to potrzebne do obliczenia owej funkcji Jeśli funkcja ma np. dwa parametry, a w konkretnym wywołaniu pierwszy parametr nie jest potrzebny w obliczeniach, odpowiedni parametr aktualny nie będzie obliczany Jeśli potrzebna jest tylko część parametru, tylko ta część zostanie obliczona Pozwala to definiować i stosować struktury nieskończone Struktury takie nie są faktycznie tworzone, lecz mogą być wykorzystane w leniwych obliczeniach Trzeba oczywiście uwaŝać, by nie zmusić Haskella do nieskończonych obliczeń Paradygmaty programowania Cezary Bolek 39

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 programowania funkcjonalnego

Podstawy programowania funkcjonalnego Podstawy programowania funkcjonalnego haskell.mariuszrozycki.pl Mariusz Różycki Churchill College, University of Cambridge rev. 2014.03.27.1 Wprowadzenie Materiały haskell.mariuszrozycki.pl Slajdy (w tym

Bardziej szczegółowo

Elementy języka Scheme

Elementy języka Scheme Elementy języka Scheme Historia języka Lisp Historia języka Lisp Wyrażenia i ewaluacja wyrażeń Identyfikatory i wyrażenie let Wyrażenia lambda Definicje globalne Wyrażenia warunkowe Przypisanie Kontynuacje

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

Definicje wyższego poziomu

Definicje wyższego poziomu Definicje wyższego poziomu Interpreter Scheme-a nie będzie narzekad w przypadku wystąpienia niezdefionowanej zmiennej w ciele wyrażenia lambda dopóki nie będzie zastosowana Przykład braku informacji o

Bardziej szczegółowo

Języki programowania deklaratywnego

Języki programowania deklaratywnego Katedra Inżynierii Wiedzy laborki 14 Języki deklaratywne Główne różnice między paradygmatem deklaratywnym a imperatywnym Omów główne cechy paradygmatu programowania w logice na przykładzie Prologa Główne

Bardziej szczegółowo

Elementy języka Scheme

Elementy języka Scheme Elementy języka Scheme Historia języka Lisp Wyrażenia i ewaluacja wyrażeń Identyfikatory i wyrażenie let Wyrażenia lambda Definicje globalne Wyrażenia warunkowe Przypisanie Kontynuacje Historia języka

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

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

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 Procedury wyższych rzędów 1 Procedury wyższych rzędów jako abstrakcje konstrukcji programistycznych Intuicje Procedury wyższych rzędów

Bardziej szczegółowo

Wstęp do Programowania Obiektowego. Wykład 13 Paradygmaty. Składnia i semantyka.

Wstęp do Programowania Obiektowego. Wykład 13 Paradygmaty. Składnia i semantyka. Wstęp do Programowania Obiektowego Wykład 13 Paradygmaty. Składnia i semantyka. 1 PRZEGLĄD PODSTAWOWYCH PARADYGMATÓW 2 Cztery podstawowe paradygmaty 1. Programowanie imperatywne. 2. Programowanie funkcyjne.

Bardziej szczegółowo

Programowanie - wykład 4

Programowanie - wykład 4 Programowanie - wykład 4 Filip Sośnicki Wydział Fizyki Uniwersytet Warszawski 20.03.2019 Przypomnienie Prosty program liczący i wyświeltający wartość silni dla wprowadzonej z klawiatury liczby: 1 # include

Bardziej szczegółowo

ForPascal Interpreter języka Pascal

ForPascal Interpreter języka Pascal Akademia Podlaska w Siedlcach Wydział Nauk Ścisłych Instytut Informatyki ForPascal Interpreter języka Pascal Przedmiot: Sieci i Systemy Wirtualne Informatyka IV Prowadzący: dr Krzysztof Trojanowski Grupa:

Bardziej szczegółowo

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop. 2017 Spis treści Przedmowa 11 1. Jak w programie 21 Czym jest program? 21 Uruchamianie interpretera języka Python 22 Pierwszy

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 1 Pojęcie typu Definition (Typ danych) Typ danych to zbiór wartości wraz z zestawem podstawowych operacji na tych wartościach. Typy

Bardziej szczegółowo

REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał

REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał REKURENCJA W JĘZYKU HASKELL Autor: Walczak Michał CZYM JEST REKURENCJA? Rekurencja zwana rekursją, polega na wywołaniu przez funkcję samej siebie. Algorytmy rekurencyjne zastępują w pewnym sensie iteracje.

Bardziej szczegółowo

Języki i paradygmaty programowania. I. Wprowadzenie

Języki i paradygmaty programowania. I. Wprowadzenie Języki i paradygmaty programowania I. Wprowadzenie O źródłach wykład został przygotowany w ogromnej części w oparciu o serwis http://wazniak.mimuw.edu.pl/ (zgodnie z licencją serwisu) inne źródła: Wikipedia:

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Laboratorium nr 5. Temat: Funkcje agregujące, klauzule GROUP BY, HAVING

Laboratorium nr 5. Temat: Funkcje agregujące, klauzule GROUP BY, HAVING Laboratorium nr 5 Temat: Funkcje agregujące, klauzule GROUP BY, HAVING Celem ćwiczenia jest zaprezentowanie zagadnień dotyczących stosowania w zapytaniach języka SQL predefiniowanych funkcji agregujących.

Bardziej szczegółowo

Programowanie funkcyjne (Haskell Wprowadzenie) Kowalik Adrian

Programowanie funkcyjne (Haskell Wprowadzenie) Kowalik Adrian Programowanie funkcyjne (Haskell Wprowadzenie) Kowalik Adrian Programowanie funkcyjne Krótka geneza języka Haskell Polecenia i składnia języka Funkcje i wyrażenia Typy i typy klasowe Listy i krotki Programowanie

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Programowanie obiektowo zorientowane. Mirosław Głowacki Wykład w języku C++

Programowanie obiektowo zorientowane. Mirosław Głowacki Wykład w języku C++ Programowanie obiektowo zorientowane Mirosław Głowacki Wykład w języku C++ Literatura B. Meyer, Programowanie zorientowane obiektowo, Helion Gliwice, 2005 J. Grębosz, Symfonia C++ Standard, Oficyna Kallimach,

Bardziej szczegółowo

Programowanie w języku C++ Podstawowe paradygmaty programowania

Programowanie w języku C++ Podstawowe paradygmaty programowania Programowanie w języku C++ Podstawowe paradygmaty programowania Mirosław Głowacki 1 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra

Bardziej szczegółowo

4. Funkcje. Przykłady

4. Funkcje. Przykłady 4. Funkcje Przykłady 4.1. Napisz funkcję kwadrat, która przyjmuje jeden argument: długość boku kwadratu i zwraca pole jego powierzchni. Używając tej funkcji napisz program, który obliczy pole powierzchni

Bardziej szczegółowo

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści Język programowania DELPHI / Andrzej Marciniak. Poznań, 2012 Spis treści Przedmowa 11 Przyjęta notacja 13 Rozdział 1. Wprowadzenie 15 1.1. Ogólne zasady programowania zorientowanego obiektowo 15 1.2. Historia

Bardziej szczegółowo

Składnia funkcji i Rekurencja w języku Haskell

Składnia funkcji i Rekurencja w języku Haskell Składnia funkcji i w języku Haskell Tomasz Ostrowski, Adrian Niechciał, Michał Workiewicz, Marcin Wilk 26 marca 2015 Składnia funkcji i w języku Haskell Spis treści Składnia funkcji Tomasz Ostrowski Adrian

Bardziej szczegółowo

Instrukcja warunkowa i złoŝona.

Instrukcja warunkowa i złoŝona. Instrukcja warunkowa i złoŝona. Budowa pętli warunkowej. JeŜeli mielibyśmy przetłumaczyć instrukcję warunkową to brzmiałoby to mniej więcej tak: jeŝeli warunek jest spełniony, to wykonaj jakąś operację

Bardziej szczegółowo

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD programowania Wykład: 4 Instrukcje sterujące, operatory 1 programowania w C++ Instrukcje sterujące 2 Pętla for for ( instrukcja_ini ; wyrazenie_warunkowe ; instrukcja_krok ) tresc_petli ; instrukcja_ini

Bardziej szczegółowo

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

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. 1. Instrukcję case t of... w przedstawionym fragmencie programu moŝna zastąpić: var t : integer; write( Podaj

Bardziej szczegółowo

Języki programowania zasady ich tworzenia

Języki programowania zasady ich tworzenia Strona 1 z 18 Języki programowania zasady ich tworzenia Definicja 5 Językami formalnymi nazywamy każdy system, w którym stosując dobrze określone reguły należące do ustalonego zbioru, możemy uzyskać wszystkie

Bardziej szczegółowo

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja

Bardziej szczegółowo

Cw.12 JAVAScript w dokumentach HTML

Cw.12 JAVAScript w dokumentach HTML Cw.12 JAVAScript w dokumentach HTML Wstawienie skryptu do dokumentu HTML JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.skrypty Java- Script mogą być zagnieżdżane

Bardziej szczegółowo

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem. Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje 1 dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD programowania w C++ Typy c.d. 2 Typy zmiennych Instrukcja typedef -

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

Pascal - wprowadzenie

Pascal - wprowadzenie Pascal - wprowadzenie Ogólne informacje o specyfice języka i budowaniu programów Filip Jarmuszczak kl. III c Historia Pascal dawniej jeden z najpopularniejszych języków programowania, uniwersalny, wysokiego

Bardziej szczegółowo

Programowanie deklaratywne

Programowanie deklaratywne Programowanie deklaratywne Artur Michalski Informatyka II rok Plan wykładu Wprowadzenie do języka Prolog Budowa składniowa i interpretacja programów prologowych Listy, operatory i operacje arytmetyczne

Bardziej szczegółowo

Definicje. Algorytm to:

Definicje. Algorytm to: Algorytmy Definicje Algorytm to: skończony ciąg operacji na obiektach, ze ściśle ustalonym porządkiem wykonania, dający możliwość realizacji zadania określonej klasy pewien ciąg czynności, który prowadzi

Bardziej szczegółowo

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk Podstawy informatyki Informatyka stosowana - studia niestacjonarne Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie, Materiał

Bardziej szczegółowo

Programowanie w Logice Przykłady programów. Przemysław Kobylański

Programowanie w Logice Przykłady programów. Przemysław Kobylański Programowanie w Logice Przykłady programów Przemysław Kobylański Język Imperator 1 jest prostym językiem imperatywnym. Jego składnię opisuje poniższa gramatyka BNF: PROGRAM ::= PROGRAM ::= INSTRUKCJA ;

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

WYRAŻENIA ALGEBRAICZNE

WYRAŻENIA ALGEBRAICZNE WYRAŻENIA ALGEBRAICZNE Wyrażeniem algebraicznym nazywamy wyrażenie zbudowane z liczb, liter, nawiasów oraz znaków działań, na przykład: Symbole literowe występujące w wyrażeniu algebraicznym nazywamy zmiennymi.

Bardziej szczegółowo

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

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice. Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice. Język PHP Język interpretowalny, a nie kompilowany Powstał w celu programowania

Bardziej szczegółowo

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH ĆWICZENIE NR 9 WYRAŻENIA LOGICZNE, INSTRUKCJE WARUNKOWE I INSTRUKCJE ITERACYJNE W PROGRAMIE KOMPUTEROWYM MATLAB Dr inż. Sergiusz Sienkowski ĆWICZENIE NR

Bardziej szczegółowo

Laboratorium Programowanie Obrabiarek CNC. Nr H7

Laboratorium Programowanie Obrabiarek CNC. Nr H7 1 Politechnika Poznańska Instytut Technologii Mechanicznej Laboratorium Programowanie Obrabiarek CNC Nr H7 Programowanie z wykorzystaniem parametrów i funkcji matematycznych Opracował: Dr inŝ. Wojciech

Bardziej szczegółowo

Wstęp do Programowania potok funkcyjny

Wstęp do Programowania potok funkcyjny Wstęp do Programowania potok funkcyjny Marcin Kubica 2016/2017 Outline 1 Pojęcie typu Definition (Typ danych) Typ danych to zbiór wartości wraz z zestawem podstawowych operacji na tych wartościach. Typy

Bardziej szczegółowo

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu Programowanie strukturalne Opis ogólny programu w Turbo Pascalu STRUKTURA PROGRAMU W TURBO PASCALU Program nazwa; } nagłówek programu uses nazwy modułów; } blok deklaracji modułów const } blok deklaracji

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

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch. Instrukcje warunkowe i skoku. Spotkanie 2 Dr inż. Dariusz JĘDRZEJCZYK Wyrażenia i operatory logiczne Instrukcje warunkowe: if else, switch Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania

Bardziej szczegółowo

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1 Tablice wielowymiarowe C umożliwia definiowanie tablic wielowymiarowych najczęściej stosowane

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

Wstęp do Programowania potok funkcyjny

Wstęp do Programowania potok funkcyjny Wstęp do Programowania potok funkcyjny Marcin Kubica 2016/2017 Outline Moduły i bariery abstrakcji 1 Moduły i bariery abstrakcji Moduły co to jest i po co to jest? Duży system dzielimy na mniejsze, łatwiejsze

Bardziej szczegółowo

ALGORYTMY I STRUKTURY DANYCH

ALGORYTMY I STRUKTURY DANYCH KATEDRASYSTEMÓWOBLICZENIOWYCH ALGORYTMY I STRUKTURY DANYCH 1.Rekurencja Rekurencja inaczej rekursja (ang. recursion) to wywołanie z poziomu metody jej samej. Programowanie z wykorzytaniem rekurencji pozwala

Bardziej szczegółowo

Podstawy Programowania Algorytmy i programowanie

Podstawy Programowania Algorytmy i programowanie Podstawy Programowania Algorytmy i programowanie Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Algorytm Algorytm w matematyce, informatyce, fizyce, itp. lub innej dziedzinie życia,

Bardziej szczegółowo

Interpreter - EasyCompile

Interpreter - EasyCompile Akademia Podlaska w Siedlcach Siedlce, dn. 20.V.2006r. Wydział Nauk Ścisłych Instytut Informatyki Interpreter - EasyCompile Projekt z SISW Wykonali: Paweł Sawczuk Edwin Tomczuk Krzysztof Pietraszek I Inf.

Bardziej szczegółowo

Podstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno

Podstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno Instrukcja laboratoryjna 6 Podstawy programowania 2 Temat: Funkcje i procedury rekurencyjne Przygotował: mgr inż. Tomasz Michno Wstęp teoretyczny Rekurencja (inaczej nazywana rekursją, ang. recursion)

Bardziej szczegółowo

METODY OPISU ALGORYTMÓW KOMPUTEROWYCH

METODY OPISU ALGORYTMÓW KOMPUTEROWYCH Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii Instrukcja do pracowni z przedmiotu Podstawy Informatyki Kod przedmiotu: TS1C 100 003 Ćwiczenie pt. METODY OPISU ALGORYTMÓW KOMPUTEROWYCH

Bardziej szczegółowo

Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur.

Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur. Języki i paradygmaty programowania 1 studia stacjonarne 2018/19 Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur. 1. Identyfikator funkcji,

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

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego

Bardziej szczegółowo

Liczby losowe i pętla while w języku Python

Liczby losowe i pętla while w języku Python Liczby losowe i pętla while w języku Python Mateusz Miotk 17 stycznia 2017 Instytut Informatyki UG 1 Generowanie liczb losowych Na ogół programy są spójne i prowadzą do przewidywanych wyników. Czasem jednak

Bardziej szczegółowo

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char Programowanie C++ Informacje wstępne #include - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char = -128 do 127, unsigned char = od

Bardziej szczegółowo

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6 JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona

Bardziej szczegółowo

Język C, tablice i funkcje (laboratorium, EE1-DI)

Język C, tablice i funkcje (laboratorium, EE1-DI) Język C, tablice i funkcje (laboratorium, EE1-DI) Opracował: Tomasz Mączka (tmaczka@kia.prz.edu.pl) Wstęp (tablice) Tablica to uporządkowany ciąg elementów tego samego typu, zajmujących ciągły obszar pamięci.

Bardziej szczegółowo

WHILE (wyrażenie) instrukcja;

WHILE (wyrażenie) instrukcja; INSTRUKCJE ITERACYJNE WHILE, DO WHILE, FOR Instrukcje iteracyjne pozwalają powtarzać daną instrukcję programu określoną liczbę razy lub do momentu osiągnięcia określonego skutku. Pętla iteracyjna while

Bardziej szczegółowo

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem Moduł 1 1. Wprowadzenie do języka Python Python jest dynamicznym językiem interpretowanym. Interpretowany tzn. że kod, który napiszemy możemy natychmiast wykonać bez potrzeby tłumaczenia kodu programistycznego

Bardziej szczegółowo

Projekt 4: Programowanie w logice

Projekt 4: Programowanie w logice Języki Programowania Projekt 4: Programowanie w logice Środowisko ECL i PS e W projekcie wykorzystane będzie środowisko ECL i PS e. Dostępne jest ono pod adresem http://eclipseclp.org/. Po zainstalowaniu

Bardziej szczegółowo

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA I. KARTA PRZEDMIOTU 1. Nazwa przedmiotu: PODSTAWY PROGRAMOWANIA. Kod przedmiotu: Ovi1 3. Jednostka prowadząca: Wydział Mechaniczno-Elektryczny 4. Kierunek: Mechatronika 5. Specjalność: Eksploatacja Systemów

Bardziej szczegółowo

JAVAScript w dokumentach HTML (1)

JAVAScript w dokumentach HTML (1) JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania. Skrypty JavaScript mogą być zagnieżdżane w dokumentach HTML. Instrukcje JavaScript

Bardziej szczegółowo

1 Wprowadzenie do algorytmiki

1 Wprowadzenie do algorytmiki Teoretyczne podstawy informatyki - ćwiczenia: Prowadzący: dr inż. Dariusz W Brzeziński 1 Wprowadzenie do algorytmiki 1.1 Algorytm 1. Skończony, uporządkowany ciąg precyzyjnie i zrozumiale opisanych czynności

Bardziej szczegółowo

JAVAScript w dokumentach HTML - przypomnienie

JAVAScript w dokumentach HTML - przypomnienie Programowanie obiektowe ćw.1 JAVAScript w dokumentach HTML - przypomnienie JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania. Skrypty JavaScript są zagnieżdżane w

Bardziej szczegółowo

PODSTAWY SZTUCZNEJ INTELIGENCJI

PODSTAWY SZTUCZNEJ INTELIGENCJI Katedra Informatyki Stosowanej Politechnika Łódzka PODSTAWY SZTUCZNEJ INTELIGENCJI Laboratorium PROGRAMOWANIE SYSTEMÓW EKSPERTOWYCH Opracowanie: Dr hab. inŝ. Jacek Kucharski Dr inŝ. Piotr Urbanek Cel ćwiczenia

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

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

Podstawy Programowania Podstawowa składnia języka C++ Podstawy Programowania Podstawowa składnia języka C++ Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Szablon programu w C++ Najprostszy program w C++ ma postać: #include #include

Bardziej szczegółowo

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny ALGORYMY Algorytm to przepis; zestawienie kolejnych kroków prowadzących do wykonania określonego zadania; to uporządkowany sposób postępowania przy rozwiązywaniu zadania, problemu, z uwzględnieniem opisu

Bardziej szczegółowo

Technologie informacyjne - wykład 12 -

Technologie informacyjne - wykład 12 - Zakład Fizyki Budowli i Komputerowych Metod Projektowania Instytut Budownictwa Wydział Budownictwa Lądowego i Wodnego Politechnika Wrocławska Technologie informacyjne - wykład 12 - Prowadzący: Dmochowski

Bardziej szczegółowo

Programowanie funkcyjne Wykład 13. Siła wyrazu rachunku lambda

Programowanie funkcyjne Wykład 13. Siła wyrazu rachunku lambda Programowanie funkcyjne Wykład 13. Siła wyrazu rachunku lambda Zdzisław Spławski Zdzisław Spławski: Programowanie funkcyjne, Wykład 13. Siła wyrazu rachunku lambda 1 Wstęp Wartości logiczne Liczby naturalne

Bardziej szczegółowo

Bloki anonimowe w PL/SQL

Bloki anonimowe w PL/SQL Język PL/SQL PL/SQL to specjalny język proceduralny stosowany w bazach danych Oracle. Język ten stanowi rozszerzenie SQL o szereg instrukcji, znanych w proceduralnych językach programowania. Umożliwia

Bardziej szczegółowo

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5. Operatory w Javie W Javie występują następujące typy operatorów: Arytmetyczne. Inkrementacji/Dekrementacji Przypisania. Porównania. Bitowe. Logiczne. Pozostałe. Operacje wykonywane są na operandach (argumentach

Bardziej szczegółowo

Laboratorium nr 8. Temat: Podstawy języka zapytań SQL (część 2)

Laboratorium nr 8. Temat: Podstawy języka zapytań SQL (część 2) Laboratorium nr 8 Temat: Podstawy języka zapytań SQL (część 2) PLAN LABORATORIUM: 1. Sortowanie. 2. Warunek WHERE 3. Eliminacja powtórzeń - DISTINCT. 4. WyraŜenia: BETWEEN...AND, IN, LIKE, IS NULL. 5.

Bardziej szczegółowo

- nawiasy kwadratowe oznaczają, że to lista

- nawiasy kwadratowe oznaczają, że to lista Haskell jest statycznym typem języka: - wszystkie typy i wyrażenia są znane w czasie kompilacji ( zwiększa to bezpieczeństwo kodu). Podawanie typów zmiennych i argumentów funkcji jest zbędne, gdyż Haskel

Bardziej szczegółowo

Języki i Paradygmaty Programowania

Języki i Paradygmaty Programowania Języki i Paradygmaty Programowania Odkrywamy Haskell Marcin Benke 24 lutego 2014 Odkrywamy Haskell Haskell zasadniczo kompilowany, ale też interpreter: ghci $ ghci GHCi, version 7.6.2: http://www.haskell.org/ghc/

Bardziej szczegółowo

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA Python wprowadzenie Warszawa, 24 marca 2017 Python to język: nowoczesny łatwy w użyciu silny można pisać aplikacje Obiektowy klejący może być zintegrowany z innymi językami np. C, C++, Java działający

Bardziej szczegółowo

1. Informatyka - dyscyplina naukowa i techniczna zajmująca się przetwarzaniem informacji.

1. Informatyka - dyscyplina naukowa i techniczna zajmująca się przetwarzaniem informacji. Temat: Technologia informacyjna a informatyka 1. Informatyka - dyscyplina naukowa i techniczna zajmująca się przetwarzaniem informacji. Technologia informacyjna (ang.) Information Technology, IT jedna

Bardziej szczegółowo

Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python

Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python Język PYTHON Podstawowe informacje Python to język skryptowy, interpretowany - co oznacza, że piszemy skrypt, a następnie wykonujemy go za

Bardziej szczegółowo

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc.

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc. Zmienne powłoki Zmienne powłoki (shell variables) to tymczasowe zmienne, które mogą przechowywać wartości liczbowe lub ciągi znaków. Związane są z powłoką, Przypisania wartości do zmiennej następuje poprzez

Bardziej szczegółowo

Typy, klasy typów, składnie w funkcji

Typy, klasy typów, składnie w funkcji Typy, klasy typów, składnie w funkcji Typy w Haskell Każde wyrażenie w Haskell posiada zdefiniowany typ. Dzięki temu już na etapie kompilacji kodu następuje sprawdzenie poprawności kodu i zabezpiecza nas

Bardziej szczegółowo

Redis, skrypty w języku Lua

Redis, skrypty w języku Lua edis, skrypty w języku Lua 1/15 Redis, skrypty w języku Lua Technologie Zarządzania Treścią dr inż. Robert Perliński rperlinski@icis.pcz.pl Politechnika Częstochowska Instytut Informatyki Teoretycznej

Bardziej szczegółowo

Języki formalne i techniki translacji

Języki formalne i techniki translacji Języki formalne i techniki translacji Laboratorium - Projekt Termin oddania: ostatnie zajęcia przed 17 stycznia 2016 Wysłanie do wykładowcy: przed 23:59 28 stycznia 2016 Używając BISON-a i FLEX-a napisz

Bardziej szczegółowo

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost; Klasy w C++ są bardzo ważnym narzędziem w rękach programisty. Klasy są fundamentem programowania obiektowego. Z pomocą klas będziesz mógł tworzyć lepszy kod, a co najważniejsze będzie on bardzo dobrze

Bardziej szczegółowo

Zapis algorytmów: schematy blokowe i pseudokod 1

Zapis algorytmów: schematy blokowe i pseudokod 1 Zapis algorytmów: schematy blokowe i pseudokod 1 Przed przystąpieniem do napisania kodu programu należy ten program najpierw zaprojektować. Projekt tworzącego go algorytmu może być zapisany w formie schematu

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

PARADYGMATY PROGRAMOWANIA Wykład 4

PARADYGMATY PROGRAMOWANIA Wykład 4 PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej

Bardziej szczegółowo

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń. Podstawy programowania Programowanie wyrażeń 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń. W językach programowania są wykorzystywane

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

Gramatyki atrybutywne

Gramatyki atrybutywne Gramatyki atrybutywne, część 1 (gramatyki S-atrybutywne Teoria kompilacji Dr inŝ. Janusz Majewski Katedra Informatyki Gramatyki atrybutywne Do przeprowadzenia poprawnego tłumaczenia, oprócz informacji

Bardziej szczegółowo

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303 Wykład 9 J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303 stos i operacje na stosie odwrotna notacja polska języki oparte na ONP przykłady programów J. Cichoń, P. Kobylański Wstęp

Bardziej szczegółowo

Programowanie w Baltie klasa VII

Programowanie w Baltie klasa VII Programowanie w Baltie klasa VII Zadania z podręcznika strona 127 i 128 Zadanie 1/127 Zadanie 2/127 Zadanie 3/127 Zadanie 4/127 Zadanie 5/127 Zadanie 6/127 Ten sposób pisania programu nie ma sensu!!!.

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 w języku Swift : Big Nerd Ranch guide / Matthew Mathias, John Gallagher. Gliwice, cop Spis treści

Programowanie w języku Swift : Big Nerd Ranch guide / Matthew Mathias, John Gallagher. Gliwice, cop Spis treści Programowanie w języku Swift : Big Nerd Ranch guide / Matthew Mathias, John Gallagher. Gliwice, cop. 2017 Spis treści Wprowadzenie 13 Poznawanie języka Swift 13 Dokąd zmierza Objective-C? 13 Przygotowania

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