Prolog Praca z danymi zewnętrznymi Zastosowania. Piotr Jarzyński, Krystian Marynowski, Arkadiusz Nowacki, Mateusz Lewandowski PWSZ PŁOCK

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

Download "Prolog Praca z danymi zewnętrznymi Zastosowania. Piotr Jarzyński, Krystian Marynowski, Arkadiusz Nowacki, Mateusz Lewandowski PWSZ PŁOCK"

Transkrypt

1 Prolog Praca z danymi zewnętrznymi Zastosowania Piotr Jarzyński, Krystian Marynowski, Arkadiusz Nowacki, Mateusz Lewandowski PWSZ PŁOCK

2 Domyślnie w Prologu wszystkie wprowadzone dane są napisane w składni tego języka. Założenie to jest utrudnia efektywną pracę. Niezbędne są algorytmy umożliwiające pracę z danymi w innych formatach. Odczytywanie danych Wprowadzenie linii jako string: read_str(string) :- get0(char), read_str_aux(char,string). read_str_aux(-1,[]) :-!. % end of file read_str_aux(10,[]) :-!. % end of line (UNIX) read_str_aux(13,[]) :-!. % end of line (DOS) Konwersja stringa na stałą znakową: read_atom(atom) :- read_str(string), atom_codes(atom,string). Konwersja stringa na liczbę: read_num(atom) :- read_str(string), number_codes(atom,string). Zapożyczanie kodu z zewnętrznych źródeł Często pisząc skomplikowane algorytmy chcemy zachować porządek w kodzie przechowując różne części programu w odrębnych plikach. Załóżmy, że chcemy aby nasz program mógł korzystać z kodu zawartego w readstr.pl Wystarczy, że na początku naszego pliku dodamy: :- ensure_loaded("readstr.pl"). A kompilator załaduje wybrany plik. Znaczy to dokładnie "Jeśli plik readstr.pl nie jest jeszcze wczytany, wczytaj go teraz". Dzięki temu unikniemy niepotrzebnej duplikacji kodu.

3 Dostęp do plików Wiele aplikacji wymaga aby wynik działania programu zapisany został do pliku. Omówimy jak zapisać dane do pliku oraz jak je odczytać. Prolog pozwala na dostęp plików poprzez uchwyt, wykorzystując predykat open np: open('file.txt',read,handle). otworzy plik file.txt w trybie odczytu (lub do zapisu jeżeli drugi argument ustawimy na write) następnie przypisuje uchwyt do Handle. Może on być od teraz wykorzystywany do wykonywania operacji na pliku do czasu jego zamknięcia poprzez: close(handle). Zapisywanie do pliku Poniższa procedura pozwoli użytkownikowi dodać tekst do pliku: appendlinetofile(filename) :- write('append text to file '), write(filename), write(': '), read_str(x), atom_codes(atom,x), open(filename,append,filestream), nl(filestream), write(filestream, Atom), close(filestream). Odczyt pliku Kolejna procedura wczyta plik i wyświetli na ekran: processfile(filename) :- see(filename), processchar, seen. processchar :- get0(code), processcode(code). processcode(-1):-!. processcode(code):- name(l,[code]), write(l), processchar.

4 Pliki z rekordami o wartościach stałej długości Pisząc programy często możemy spotkać się z plikami tekstowymi zawierającymi ustalone pola o stałej długości. Pliki te często różnią się od siebie, mogą ale nie muszą kończyć się znakiem końca linii, zawierać puste pola, mogą to być pliki tekstowe lub innego formatu. Odczytanie pliku rekordów o polach stałej długości jest jednak stosunkowo proste. Zaczynamy od liczby bajtów która ma być odczytana i odliczamy w dół do 0: read_bytes(0,[]) :-!. read_bytes(n,[c Rest]) :- get_byte(c), NextN is N-1, read_bytes(nextn,rest). Wersja read_bytes, której używamy jest bardziej skomplikowana. Wykorzystuje jeden znak LookAhead aby sprawdzić nieoczekiwany znak na końcu pliku(end-of-file). Możemy również zdefiniować skip_bytes, który pomija określoną liczba bajtów, bez zapisywania ich na liście. Pliki CSV (wartości oddzielone średnikiem) Odczyt plików, w których pola rekordu są oddzielone średnikiem (CSV - Comma Separated Value) jest jeszcze prostszy z uwagi na wbudowaną w prologu procedurę: csv_read_file(+file, -Rows, +Options) Przykładowo aby odczytać dane z pliku commadel.dat wykonajmy: csv_read_file('commadel.dat', Rows, [functor(record), arity(6)]). W rezultacie otrzymamy listę Rows z rekordami o sześciu polach.

5 Przetwarzanie danych jako listy Rozważmy poniższą bazę wiedzy: ojciec(michał,kasia). ojciec(andrzej,michał). ojciec(daniel,monika). Możemy wyświetlić imiona wszystkich ojców poprzez zapytanie:?- father(x,_), write(x), nl, fail. Czyli: znajdź X, dla którego ojciec(x, _), wypisz i zwróć fail aby znaleźć kolejne. Jednak co w przypadku jeśli zamiast wyświetlania imion ojców, chcemy je dalej przetwarzać jako lista? W celu uzyskania wszystkich imion, program musi wykonać powrót poprzez fail. Ale w celu zbudowania listy musi użyć rekurencji przekazując częściowo zbudowaną listę jako argument między iteracjami czego nie można zrobić korzystając z backtrakingu. Z pomocą przychodzi nam wbudowany predykat findall/3: findall(+template, +Goals, -List) Możemy go użyć w następujący sposób:?- findall(x,father(x,_),l). Czyli: znajdź wszystkie X, dla którego ojciec(x, _) i zbuduj z nich listę L.

6 bagof i setof Największa różnicą między bagof i setof a findall jest to jak traktują one obsługę niezainicjalizowanych zmiennych w "Goals", findall je pomija dlatego instrukcja:?- findall(x,parent(x,y),l). Znajdzie, każdego kto jest rodzicem kogokolwiek. Y może mieć różne wartości dla każdego zrodziców. Tymczasem:?- bagof(x,parent(x,y),l). Znajdzie wszystkie wartości X, które są powiązane z jakąś konkretną wartością Y. Jeśli w miejscu Y pojawią się różne wartości zostaną one zwrócone jako alternatywne rozwiązania zamiast dodania ich do jednej listy. Setof zachowuje się podobnie do bagof z tą różnicą, że wyniki są posortowane alfabetycznie oraz kasowane są duplikaty. Operacja sortowania wymaga dodatkowego czasu czasu, ale może być korzystna, ponieważ chroni nas przed duplikatami w późniejszej pracy. parent(michael,cathy). parent(melody,cathy). parent(greg,stephanie). parent(crystal,stephanie).?- findall(x,parent(x,y),l). X = _0001, Y = _0002, L=[michael,melody,greg,crystal]?- bagof(x,parent(x,y),l). X = _0001, Y = cathy, L = [michael,melody] ; X = _0001, Y = stephanie, L = [greg,crystal]?- setof(x,parent(x,y),l). X = _0001, Y = cathy, L = [melody,michael] ; X = _0001, Y = stephanie, L = [crystal,greg] Oczywiście setof jest jak bagof z wyjątkiem, że sortuje listy i usuwa duplikaty (jeśli jakiekolwiek występują). Ale jest inny sposób. Można zrobić to:?- bagof(x,y^parent(x,y),l). X = _0001, Y = _0002, L = [michael,melody,greg,crystal]

7 Znajdowanie najmniejszego, największego, lub najlepszego rozwiązania "Najlepsze" oznacza różne rzeczy w różnych sytuacjach, ale podstawową ideą jest to, że ze wszystkich możliwych rozwiązań, chcesz to, które przewyższa wszystkie inne zgodnie z pewnymi kryteriami. Istnieją trzy główne metody: Użyć setof i wykorzystać wbudowany proces sortowania,tak że "najlepsze" rozwiązanie wychodzi na początku (amoże na końcu) listy; Użyć bagof lub setof a następnie pracować z listą, abywybrać rozwiązanie, którego potrzebujesz; Szukaj bezpośrednio najlepszego rozwiązania, porównując każdą alternatywę na tle wszystkich pozostałych Popracujmy z następującą bazą danych: age(cathy,8). age(sharon,4). age(aaron,3). age(stephanie,7). age(danielle,4). Które dziecko jest najmłodsze? Spróbujemy pierwszej i trzeciej strategii, pozostawiając drugą jako ćwiczenie. Jest to łatwe do wykonania. setof daje nam wiek najmłodszego dziecka. Weźmy pod uwagę te zapytania:?- setof(a,n^age(n,a),l). L = [3,4,7,8]?- setof(a,n^age(n,a),[youngest _]). Youngest = 3 Pierwsza kwerenda pobiera posortowaną listę wieku dzieci; druga kwerenda pobiera tylko pierwszy element tej listy.

8 Definiowanie operatorów Większość funktorów w Prologu jest zapisana bezpośrednio przed nawiasami zawierającymi argumenty: functor(arg1, arg2). Funktory, które mogą być napisane w inny sposób nazywane są operatorami. Na przykład, struktura +(2,3) może być zapisana jako 2+3, ponieważ jej funktor + Jest operatorem. Nie należy mylić operatorów z operacjami. Niektóre operatory oznaczają arytmetyczne operacje(+-*/), ale inne operatory służą zupełnie innym celom. W rzeczywistości każdy funktor w Prologu może być zadeklarowany jako operator zmieniając w ten sposób swoją składnie, ale nigdy nie znaczenie. Powszechnie predefiniowane operatory w PROLOGu. Pierwszeństwo Specyfikator Operatory 1200 xfx :- --> 1200 fx :-? xfy ; 1050 xfy -> 1000 xfy, 900 fy \+ (lub w niektorych Prologach, not) 700 xfx = \= is =:= =\= < =< > >= = yfx yfx * / // mod 200 xfy ^ 200 fy - Specyfikatory operatorów Specyfikator Znaczenie Fx Prefix, not associative Fy Prefix, right-associative (like \+) Xf Postfix, not associative Yf Postfix, left-associative Xfx Infix, not associative (like =) xfy Infix, right-associative (like the comma in compound goals) yfx Infix, left-associative (like +)

9 Nadawanie znaczeń operatorom Definicje operatora określają jedynie jego składnie. Znaczenie lub semantyka operatora zależy już od programisty. W przeszłości niektóre Prologi używały ampersandu (&) zamiast przecinka aby łączyć elementy funkcji złożonych. Jest to wielką zaletą, ponieważ złożone funkcje nie wyglądają jak listy argumentów; zapytanie?- call(p(a) & q(a) & r(a)). wyraźnie wywołuje call tylko z jednym argumentem. W zwykłym Prologu, musimy użyć dodatkowych nawiasów, aby uzyskać ten sam efekt, jak tutaj:?- call( (p(a), q(a), r(a)) ). ponieważ bez dodatkowych nawiasów, call będzie traktowane jako posiadające trzy argumenty. Możemy zdefiniować ampersanda aby pracował w ten sposób nawet w zwykłym Prologu. Najpierw zdefiniujmy jego składnię. Chcemy aby & był operatorem wrostkowym z nieco niższym priorytetem niż przecinek, dzięki czemu f (& b, c) będzie oznaczać f ((& b), c),a nie f (i (b, c)). Ponadto, jak wkrótce zobaczymy, & powinno być w prawo-asocjacyjne. Tak więc, w większości Prologów stosowną definicją operatora będzie: :- op(950,xfy,&). Następnie musimy powiedzieć Prologowi jak rozwiązać funkcję zawierającą ampersandy. Oczywiście zapytanie GoalA & GoalB powinno zadziałać jeżeli GoalA zadziała a następnie GoalB zadziała z tymi samymi instancjami. Czyli: GoalA & GoalB :- call(goala), call(goalb). To jest po prostu zwykła reguła Prologa. Równie dobrze może to być zapisane jako: '&'(GoalA,GoalB) :- call(goala), call(goalb). PROLOG W PROLOGu Nasza definicja ampersandu & sugeruje strategię przepisania całego mechanizmu inferencji Prologa do Prologa, aby rozwinąć tym samym zmodyfikowaną wersję języka. Przypomnijmy, że predykat clause(head, Body) może odzyskać jakąkolwiek z klauzul w bazie danych, a przynajmniej te, które są zadeklarowane dynamicznie; Robi to, próbując połączyć Head z nagłówkiem klauzuli oraz body z ciałem klauzuli(lub z true jeśli klauzula jest faktem). Klauzule alternatywne są otrzymywane jako wielokrotne rozwiązania clause przy pomocy backtrackingu. Ciało reguły jest zazwyczaj funkcją złożoną(compound goal), czyli struktura utrzymywana jest przy pomocy

10 prawostronnych(right-associative) przecinków, które działają dokładnie jak ampersandy zaprezentowane wcześniej. Tak więc biorąc pod uwagę regułę: f(x) :-g(x), h(x), i(x), j(x). zapytanie:?- clause(f(abc),body). Utworzy instancję Body g(abc), h(abc), i(abc), j(abc) która odpowiada: g(abc), (h(abc), (i(abc), j(abc))) Aby wykonać to zadanie postąpimy w ten sam sposób jak zrobiliśmy to w przypadku ampersandów. Możemy zdefniować interpret ( który pobiera funkcję jako argument i wykonuje ją). Następnie aby użyć interpret wystarczy napisać, np.:?- interpret(grandparent(x,y)). Zamiast?- grandparent(x,y). Jest to algorytm Clocksin'a i Mellish'a (1984:177). Cięcia są zielone : zachowują kroki, ale nie wpływają na logikę programu. Zauważmy, że nie jest tu używane wywołanie; Każda udana funkcja kończy się wywołaniem interpret(true). Dostosowywanie interfejsu użytkownika Nie tylko silnik inferencji, ale również interfejs najwyższego poziomu Prologa może być spersonalizowany. W typowym najwyższym poziomie Prologa, komputer ustala:?- a użytkownik odpowiada wpisując zapytanie. Niektóre Prologi pozwalają również użytkownikowi ustalić fakty i zasady, które są dodane do bazy danych. Plik TOPLEVEL.PL określa najwyższy poziom, którego dialogi z użytkownikiem wyglądają następująco: Type a query: father(x,cathy). Solution found: father(michael,cathy) Look for another? (Y/N): n Type a query: father(joe,cathy). No (more)solutions Type a query: parent(x,y). Solution found: parent(michael,cathy) Look for another? (Y/N): y Solution found: parent(melody,cathy) Look for another? (Y/N): y No (more) solutions

11 Dostosowywanie interfejsu użytkownika Jest to zwykły najwyższy poziom w Prologu z tym wyjątkiem, że komunikaty są znacznie bardziej jawne, a odpowiedzi są podawane poprzez wyświetlanie zapytań z wypełnionymi wartościami zmiennych. Wszystkie zapytania Prologa są dopuszczalne -nie tylko zapytania o bazę danych, ale również wywołania do wbudowanych predykatów takich jak consult. Kod określający ten najwyższy poziom ma tylko 18 linii. Procedura top_level jest nieskończoną pętlą repeat-fail, która akceptuje zapytania i przekazuje je do find_solutions. (Zauważ przy okazji, że nazwa top_level nie ma specjalnego znaczenia. Ta procedura staje się najwyższym poziomem środowiska Prologa zaraz po uruchomieniu go, wpisując '?-top_level.')w find_solutions procedura ma dwie klauzule. Pierwsza klauzula znajduje rozwiązanie, wypisuje je, i pyta użytkownika, czy szukać innych. Jeśli użytkownik wpisze N lub n (na "nie"), find_solutions wykonuje cięcie, i sterowanie powraca do top_level. W przeciwnym razie, find_solutions cofa się. Jeśli nie można znaleźć dalszych rozwiązań i cięcie nie zostało wykonane, sterowanie przechodzi do drugiej klauzuli i wyświetla się komunikat "Brak (dalszych) rozwiązań". Jak wyjść z top_level? Po prostu wpisz 'halt.' aby wyjść z Prologa, tak jakbyś używał zwykłego najwyższego poziomu. Spersonalizowany najwyższy poziom może uczynić Prolog znacznie bardziej przyjaznym dla użytkownika. Przydatnym okazało się przedstawienie Prologa początkującym programistom poprzez interfejs użytkownika kierowanym za pomocą menu, który pozwalał im wyświetlać bazę danych, dodawać lub usuwać klauzule, oraz wykonywać zapytania. Dzięki temu używanie edytora plików jest wyeliminowane. Ponadto spersonalizowany najwyższy poziom może być połączony z wzmocnionym silnikiem inferencji, po to aby zamienić Prologa w potężny system inżynierii danych.

12 Wykorzystanie języka PROLOG w praktyce! Analiza semantyczna sceny wizyjnej (lub jakiegokolwiek innego zestawu bodźców), czyli wstępne przetwarzanie obrazu np. w C/C++ a później wnioskowanie na obrazie za pomocą bardziej ludzkich wyrażeń czyli np. "znajdź wszystkie niebieskie koła z dziurą w środku leżące blisko jasnych kształtów". "Odwracanie" działania złożonych algorytmów poprzez wykorzystanie tego, że prologowe predykaty są szeroko pojętymi relacjami a nie funkcjami a poza tym współczesny Prolog to także programowanie z ograniczeniami i propagowanie ograniczeń zamiast propagacji wartości, co może znacząco przyspieszyć niektóre zadania obliczeniowe. Wszędzie tam, gdzie mamy do czynienia ze zbiorami reguł (medycyna, prawo, biologia, matematyka, sieci semantyczne, systemy eksperckie, przetwarzanie języka naturalnego, semantic web, OWL/RDF) Prolog ma praktyczne zastosowanie i bywa używany Prolog bardzo przyjemnie realizuje się w dziedzinach związanych z programowaniem z ograniczeniami (zarówno w dziedzinie liczb całkowitych jak i rzeczywistych), co jest jego bardzo dużym plusem Prolog jest chętnie używany do prototypowania Rzeczywiście, jest używany także do tworzenia aplikacji webowych (np. SWI-Prolog zachęca do porzucenia PHP/Apache/MySQL na rzecz siebie samego!) Niżej podaję też trochę różnych współczesnych pakietów oprogramowania, które używają Prologu: DAVE Free Development Platform for Code Generation Realtime Railway Station Control (Siemens AG R&D / Deutsche Bahn AG) Dopasowywanie kształtu okularów do twarzy w sklepach Paris Miki TextRazor InFlow - Software for Social Network Analysis & Organizational Network Analysis ContactExpress / DealBuilder GridMind / Mycroft Mind PROSYN (system ekspercki) Podobno też w Nokii N900 użyto prologu do zarządzania stanem GUI Dodatkowo: Dwa ciekawe projekty wykorzystujące Prologa: Watson - superkomputer, został zaimplementowany za pomocą Javy, C++ i Prologa. Clarissa - system sterowany głosem, który został użyty na Międzynarodowej Stacji Kosmicznej Prolog jest również wykorzystywany w aplikacjach webowych, często pomaga osiągnąć większą wydajność niż sam SQL. Na pewno też wiele systemów ekspertowych zostało napisanych w prologu.

Odczytywanie danych w różnych formatach

Odczytywanie danych w różnych formatach Odczytywanie danych w różnych formatach Problem INPUT-a w wolnej formie W tym rozdziale pokażemy, jak sprawić, aby Prolog przeczytał dane w dowolnym wybranym formacie; na końcu przedstawimy program w Prologu,

Bardziej szczegółowo

Programowanie w logice

Programowanie w logice Wydział Matematyki UŁ 14 marca 2007 Plan prezentacji 1 Składnia Termy Stałe Zmienne Struktury 2 Własny operator Przeciążanie operatorów 3 Arytmetyczne i logiczne predykaty systemowe 4 Do zapamiętania Termy

Bardziej szczegółowo

Prolog 2 (Filip Wroński, Łukasz Betkowski, Paweł Świerblewski, Konrad Kosmatka)

Prolog 2 (Filip Wroński, Łukasz Betkowski, Paweł Świerblewski, Konrad Kosmatka) Prolog 2 (Filip Wroński, Łukasz Betkowski, Paweł Świerblewski, Konrad Kosmatka) Rozdział 2 Constructing Prolog Programs z książki Prolog Programming in Depth autorstwa Michael A. Covington, Donald Nute,

Bardziej szczegółowo

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main. Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo

Bardziej szczegółowo

PROLOG INNE PRZYKŁADY MACIEJ KELM

PROLOG INNE PRZYKŁADY MACIEJ KELM PROLOG INNE PRZYKŁADY MACIEJ KELM PREDYKAT RANDOM Funkcja random zwraca losową liczbę całkowitą w przedziale od 1 do X. Gdzie X jest parametrem funkcji random. Przed użyciem random należy zainicjować tak

Bardziej szczegółowo

Celem ćwiczenia jest zapoznanie się z podstawowymi możliwościami języka Prolog w zakresie definiowania faktów i reguł oraz wykonywania zapytań.

Celem ćwiczenia jest zapoznanie się z podstawowymi możliwościami języka Prolog w zakresie definiowania faktów i reguł oraz wykonywania zapytań. Paradygmaty Programowania Język Prolog Celem ćwiczenia jest zapoznanie się z podstawowymi możliwościami języka Prolog w zakresie definiowania faktów i reguł oraz wykonywania zapytań. Wstęp Prolog (od francuskiego

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

Program, który się uczy.

Program, który się uczy. Program, który się uczy. Korzystając z omówionych poleceń, jesteśmy w stanie zaprojektować program, który nauczy się nowych informacji do swojej bazy wiedzy, a także zapisze je w taki sposób, aby mogły

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

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Część XXII C++ w Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Ćwiczenie 1 1. Utwórz nowy projekt w Dev C++ i zapisz go na

Bardziej szczegółowo

PROLOG. Prolog. Programowanie, W.F. Clocksin, C.S. Mellish, HELION Prolog, język sztucznej inteligencji, Eugeniusz Gatnar, Katarzyna Stąpor, Wyd.

PROLOG. Prolog. Programowanie, W.F. Clocksin, C.S. Mellish, HELION Prolog, język sztucznej inteligencji, Eugeniusz Gatnar, Katarzyna Stąpor, Wyd. PROLOG 1. Informacje wstępne Podczas zajęć korzystamy z darmowej wersji interpretera Prologu SWI-Prolog dostępnego ze strony: www.swi-prolog.org 2. Literatura i materiały Prolog. Programowanie, W.F. Clocksin,

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

Ćwiczenie numer 4 JESS PRZYKŁADOWY SYSTEM EKSPERTOWY.

Ćwiczenie numer 4 JESS PRZYKŁADOWY SYSTEM EKSPERTOWY. Ćwiczenie numer 4 JESS PRZYKŁADOWY SYSTEM EKSPERTOWY. 1. Cel ćwiczenia Celem ćwiczenia jest zapoznanie się z przykładowym systemem ekspertowym napisanym w JESS. Studenci poznają strukturę systemu ekspertowego,

Bardziej szczegółowo

Systemy ekspertowe i ich zastosowania. Katarzyna Karp Marek Grabowski

Systemy ekspertowe i ich zastosowania. Katarzyna Karp Marek Grabowski Systemy ekspertowe i ich zastosowania Katarzyna Karp Marek Grabowski Plan prezentacji Wstęp Własności systemów ekspertowych Rodzaje baz wiedzy Metody reprezentacji wiedzy Metody wnioskowania Języki do

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

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody Obiektowy PHP Czym jest obiekt? W programowaniu obiektem można nazwać każdy abstrakcyjny byt, który programista utworzy w pamięci komputera. Jeszcze bardziej upraszczając to zagadnienie, można powiedzieć,

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

Statyczne i dynamiczne predykaty

Statyczne i dynamiczne predykaty Statyczne i dynamiczne predykaty Dynamiczne dowodzą lub odwołują pewne reguły, Statyczne nie potrafią tego co dynamiczne, ponieważ ich punkty zostały zebrane w całość, która działa szybciej, ale nie jest

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

Programowanie w logice

Programowanie w logice Programowanie w logice PROLOG cz.1 PROLOG język wysokiego poziomu Powstał w 1972 na Uniwersytecie w Marsylii (Francja) w zespole A.Colmerauer a i F.Roussel a PROgrammation en LOGique, PROgramming in LOGic,

Bardziej szczegółowo

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery http://xqtav.sourceforge.net XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery dr hab. Jerzy Tyszkiewicz dr Andrzej Kierzek mgr Jacek Sroka Grzegorz Kaczor praca mgr pod

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

Bardziej szczegółowo

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie Część X C++ Typ znakowy służy do reprezentacji pojedynczych znaków ASCII, czyli liter, cyfr, znaków przestankowych i innych specjalnych znaków widocznych na naszej klawiaturze (oraz wielu innych, których

Bardziej szczegółowo

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu. Część XIX C++ w Każda poznana do tej pory zmienna może przechowywać jedną liczbę. Jeśli zaczniemy pisać bardziej rozbudowane programy, okaże się to niewystarczające. Warto więc poznać zmienne, które mogą

Bardziej szczegółowo

Programowanie w języku Python. Grażyna Koba

Programowanie w języku Python. Grażyna Koba Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i

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

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba. Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 2 Kusory Wprowadzenie Kursory użytkownika Kursory domyślne Zmienne kursora Wyrażenia kursora - 2 - Wprowadzenie Co to jest kursor?

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

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej. Laboratorium cyfrowej techniki pomiarowej. Ćwiczenie 4

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej. Laboratorium cyfrowej techniki pomiarowej. Ćwiczenie 4 Politechnika Łódzka Instytut Systemów Inżynierii Elektrycznej Laboratorium cyfrowej techniki pomiarowej Ćwiczenie 4 Zapis danych do pliku w programie LabVIEW 1. Zapis i odczyt sygnałów pomiarowych Do zapisu

Bardziej szczegółowo

5.4. Tworzymy formularze

5.4. Tworzymy formularze 5.4. Tworzymy formularze Zastosowanie formularzy Formularz to obiekt bazy danych, który daje możliwość tworzenia i modyfikacji danych w tabeli lub kwerendzie. Jego wielką zaletą jest umiejętność zautomatyzowania

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

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Część XVIII C++ Funkcje Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Umiemy już podzielić nasz

Bardziej szczegółowo

Zasady programowania Dokumentacja

Zasady programowania Dokumentacja Marcin Kędzierski gr. 14 Zasady programowania Dokumentacja Wstęp 1) Temat: Przeszukiwanie pliku za pomocą drzewa. 2) Założenia projektu: a) Program ma pobierać dane z pliku wskazanego przez użytkownika

Bardziej szczegółowo

Programowanie strukturalne i obiektowe. Funkcje

Programowanie strukturalne i obiektowe. Funkcje Funkcje Często w programach spotykamy się z sytuacją, kiedy chcemy wykonać określoną czynność kilka razy np. dodać dwie liczby w trzech miejscach w programie. Oczywiście moglibyśmy to zrobić pisząc trzy

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

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

7. Pętle for. Przykłady

7. Pętle for. Przykłady . Pętle for Przykłady.1. Bez użycia pętli while ani rekurencji, napisz program, który wypisze na ekran kolejne liczby naturalne od 0 do pewnego danego n. 5 int n; 6 cin >> n; 8 for (int i = 0; i

Bardziej szczegółowo

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. ABAP/4 Instrukcja IF Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. [ELSEIF warunek. ] [ELSE. ] ENDIF. gdzie: warunek dowolne wyrażenie logiczne o wartości

Bardziej szczegółowo

Java pierwszy program w Eclipse «Grzegorz Góralski strona własna

Java pierwszy program w Eclipse «Grzegorz Góralski strona własna Strona 1 z 9 «Przykładowe zadania do cz. III ćwiczeń z genetyki Java pierwsze kroki w programowaniu (01)» Kategoria: java, Tagi: eclipse - java - programowanie. Autor: Grzegorz, napisał dnia: February

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 Język programowania prosty bezpieczny zorientowany obiektowo wielowątkowy rozproszony przenaszalny interpretowany dynamiczny wydajny Platforma

Bardziej szczegółowo

Laboratorium przedmiotu Paradygmaty Programowania

Laboratorium przedmiotu Paradygmaty Programowania Laboratorium przedmiotu Paradygmaty Programowania Laboratorium 9 Prolog podstawy 1. Podstawy Prologu Programowanie w Prologu polega na deklarowaniu: Faktów dotyczących pewnych obiektów z analizowanego

Bardziej szczegółowo

Programowanie w języku C++ Grażyna Koba

Programowanie w języku C++ Grażyna Koba Programowanie w języku C++ Grażyna Koba Kilka definicji: Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i zasad

Bardziej szczegółowo

Systemy operacyjne. Laboratorium 9. Perl wyrażenia regularne. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017

Systemy operacyjne. Laboratorium 9. Perl wyrażenia regularne. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017 Systemy operacyjne Laboratorium 9 Perl wyrażenia regularne Jarosław Rudy Politechnika Wrocławska 28 lutego 2017 Temat obejmuje wykorzystanie wyrażeń regularnych w perlu. Wyrażenia same w sobie są w zasadzie

Bardziej szczegółowo

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu. Zrozumienie funkcji danych statycznych jest podstawą programowania obiektowego. W niniejszym artykule opiszę zasadę tworzenia klas statycznych w C#. Oprócz tego dowiesz się czym są statyczne pola i metody

Bardziej szczegółowo

Projekt Hurtownia, realizacja skojarzeń dostawców i produktów

Projekt Hurtownia, realizacja skojarzeń dostawców i produktów niżej. Projekt Hurtownia, realizacja skojarzeń dostawców i produktów W bazie danych HurtowniaSP istnieją tabele Dostawcy oraz Produkty, ich definicje przypomniane są W bazie zdefiniowano także tabelę DostawcyProdukty,

Bardziej szczegółowo

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki Konwersje napis liczba Struktury, unie Scanf / printf Wskaźniki Konwersje liczba napis Ćwiczenia 1. Napisz aplikację, która na wejściu dostaje napis postaci W Roku Pańskim 1345, władca Henryk 12,

Bardziej szczegółowo

Podstawy programowania w C++

Podstawy programowania w C++ Podstawy programowania w C++ Liczby w jaki sposób komputery je widzą? Opracował: Andrzej Nowak Bibliografia: CPA: PROGRAMMING ESSENTIALS IN C++ https://www.netacad.com Czy wiesz, jak komputery wykonują

Bardziej szczegółowo

Kompletna dokumentacja kontenera C++ vector w - http://www.cplusplus.com/reference/stl/vector/

Kompletna dokumentacja kontenera C++ vector w - http://www.cplusplus.com/reference/stl/vector/ STL, czyli o co tyle hałasu W świecie programowania C++, hasło STL pojawia się nieustannie i zawsze jest o nim głośno... często początkujące osoby, które nie znają STL-a pytają się co to jest i czemu go

Bardziej szczegółowo

Podstawy JavaScript ćwiczenia

Podstawy JavaScript ćwiczenia Podstawy JavaScript ćwiczenia Kontekst:

Bardziej szczegółowo

TEMAT : KLASY DZIEDZICZENIE

TEMAT : KLASY DZIEDZICZENIE TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą

Bardziej szczegółowo

1. Dockbar, CMS + wyszukiwarka aplikacji Dodawanie portletów Widok zawartości stron... 3

1. Dockbar, CMS + wyszukiwarka aplikacji Dodawanie portletów Widok zawartości stron... 3 DODAJEMY TREŚĆ DO STRONY 1. Dockbar, CMS + wyszukiwarka aplikacji... 2 2. Dodawanie portletów... 3 Widok zawartości stron... 3 Omówienie zawartości portletu (usunięcie ramki itd.)... 4 3. Ikonki wybierz

Bardziej szczegółowo

Podstawy programowania 2. Przygotował: mgr inż. Tomasz Michno

Podstawy programowania 2. Przygotował: mgr inż. Tomasz Michno Instrukcja laboratoryjna 2 Podstawy programowania 2 Temat: Zmienne dynamiczne tablica wskaźników i stos dynamiczny Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny 1.1 Tablice wskaźników Tablice

Bardziej szczegółowo

Podstawy języka SQL Co to jest SQL? Możliwości SQL SQL*Plus

Podstawy języka SQL Co to jest SQL? Możliwości SQL SQL*Plus Podstawy języka SQL Co to jest SQL? Structured Query Language uchodzi za standard języka zapytań kierowanych do systemu zarządzania bazą danych. SQL jest językiem deklaratywnym tj. takim, w którym istotne

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

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

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa 1 Java Wprowadzenie 2 Czym jest Java? Język programowania prosty zorientowany obiektowo rozproszony interpretowany wydajny Platforma bezpieczny wielowątkowy przenaszalny dynamiczny Rozumiana jako środowisko

Bardziej szczegółowo

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Jak napisać program obliczający pola powierzchni różnych figur płaskich? Część IX C++ Jak napisać program obliczający pola powierzchni różnych figur płaskich? Na początku, przed stworzeniem właściwego kodu programu zaprojektujemy naszą aplikację i stworzymy schemat blokowy

Bardziej szczegółowo

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Instytut Mechaniki i Inżynierii Obliczeniowej  Wydział Mechaniczny Technologiczny Politechnika Śląska Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl Wydział Mechaniczny Technologiczny Politechnika Śląska Języki programowania z programowaniem obiektowym Laboratorium

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

Python jest interpreterem poleceń. Mamy dwie możliwości wydawania owych poleceń:

Python jest interpreterem poleceń. Mamy dwie możliwości wydawania owych poleceń: W pierwszym kroku nauczymy się uruchamiać w Pythonie tradycyjny* program ". Dzięki temu nauczysz się pisać w języku Python, a także zapisywać i uruchamiać swoje pythonowe programy. *Jest taka tradycja,

Bardziej szczegółowo

Zadanie 1. Algorytmika ćwiczenia

Zadanie 1. Algorytmika ćwiczenia Zadanie 1 Algorytmika ćwiczenia Zadanie 2 Zadanie 3 Zadanie 4 Zadanie 5 Zadanie 6 Zadanie 7 Wiązka zadań Ułamki dwójkowe W systemach pozycyjnych o podstawie innej niż 10 można zapisywać nie tylko liczby

Bardziej szczegółowo

ECDL/ICDL Użytkowanie baz danych Moduł S1 Sylabus - wersja 6.0

ECDL/ICDL Użytkowanie baz danych Moduł S1 Sylabus - wersja 6.0 ECDL/ICDL Użytkowanie baz danych Moduł S1 Sylabus - wersja 6.0 Przeznaczenie Sylabusa Dokument ten zawiera szczegółowy Sylabus dla modułu ECDL/ICDL Użytkowanie baz danych. Sylabus opisuje zakres wiedzy

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

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), Program 351203 Opracowanie: Grzegorz Majda Tematyka zajęć 2. Przygotowanie środowiska pracy

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

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

Wprowadzenie do Prologa

Wprowadzenie do Prologa Wprowadzenie do Prologa Rozdział 1 Tutorial Introduction Maciej Gapiński Dominika Wałęga Spis treści 1. Podstawowe informacje 2. Obiekty i relacje 3. Reguły 4. Fakty 5. Zapytania 6. Zmienne i stałe Podstawowe

Bardziej szczegółowo

Uzupełnij pola tabeli zgodnie z przykładem poniżej,

Uzupełnij pola tabeli zgodnie z przykładem poniżej, 1. Wykonaj bazę danych biblioteki szkolnej, Otwórz MS Access a następnie z menu plik wybierz przycisk nowy, w oknie nowy plik wybieramy pusta baza danych nadaj jej nazwę Biblioteka i wybierz miejsce w

Bardziej szczegółowo

6. Formularze tabelaryczne, obiekty nawigacji - rozgałęzienia

6. Formularze tabelaryczne, obiekty nawigacji - rozgałęzienia 6. Formularze tabelaryczne, obiekty nawigacji - rozgałęzienia 1. Kolejne zadanie będzie polegało na utworzeniu formularza tabelarycznego prezentującego utwory określonego wykonawcy. Formularz utworzymy

Bardziej szczegółowo

Lab 9 Podstawy Programowania

Lab 9 Podstawy Programowania Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany

Bardziej szczegółowo

Metody numeryczne Laboratorium 2

Metody numeryczne Laboratorium 2 Metody numeryczne Laboratorium 2 1. Tworzenie i uruchamianie skryptów Środowisko MATLAB/GNU Octave daje nam możliwość tworzenia skryptów czyli zapisywania grup poleceń czy funkcji w osobnym pliku i uruchamiania

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

2 Przygotował: mgr inż. Maciej Lasota

2 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 2 1/7 Język C Instrukcja laboratoryjna Temat: Wprowadzenie do języka C 2 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do języka C. Język C jest językiem programowania ogólnego zastosowania

Bardziej szczegółowo

Bash - wprowadzenie. Bash - wprowadzenie 1/39

Bash - wprowadzenie. Bash - wprowadzenie 1/39 Bash - wprowadzenie Bash - wprowadzenie 1/39 Bash - wprowadzenie 2/39 Czym jest bash? Rysunek : Zadanie powłoki to ukrycie wywołań systemowych Bash - wprowadzenie 3/39 Czym jest bash? Przykład polecenia:

Bardziej szczegółowo

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania Celem ćwiczenia jest zapoznanie studentów z najprostszą dynamiczną strukturą

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

Wprowadzenie do projektu QualitySpy

Wprowadzenie do projektu QualitySpy Wprowadzenie do projektu QualitySpy Na podstawie instrukcji implementacji prostej funkcjonalności. 1. Wstęp Celem tego poradnika jest wprowadzić programistę do projektu QualitySpy. Będziemy implementować

Bardziej szczegółowo

Podstawy MATLABA, cd.

Podstawy MATLABA, cd. Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Elektroniki Przetwarzanie Sygnałów Studia Podyplomowe, Automatyka i Robotyka Podstawy MATLABA, cd. 1. Wielomiany 1.1. Definiowanie

Bardziej szczegółowo

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza 4 Budowa prostych formularzy, stany sesji, tworzenie przycisków Plan Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza 2 Formularz i jego typy Tworzenie formularza

Bardziej szczegółowo

Ćwiczenie 1. Wprowadzenie do programu Octave

Ćwiczenie 1. Wprowadzenie do programu Octave Politechnika Wrocławska Wydział Elektroniki Mikrosystemów i Fotoniki Przetwarzanie sygnałów laboratorium ETD5067L Ćwiczenie 1. Wprowadzenie do programu Octave Mimo że program Octave został stworzony do

Bardziej szczegółowo

Przestrzenne bazy danych Podstawy języka SQL

Przestrzenne bazy danych Podstawy języka SQL Przestrzenne bazy danych Podstawy języka SQL Stanisława Porzycka-Strzelczyk porzycka@agh.edu.pl home.agh.edu.pl/~porzycka Konsultacje: wtorek godzina 16-17, p. 350 A (budynek A0) 1 SQL Język SQL (ang.structured

Bardziej szczegółowo

Podstawy technologii WWW

Podstawy technologii WWW Podstawy technologii WWW Ćwiczenie 8 PHP, czyli poczatki nowej, dynamicznej znajomosci Na dzisiejszych zajęciach rozpoczniemy programowanie po stronie serwera w języku PHP. Po otrzymaniu żądania serwer

Bardziej szczegółowo

2.8. Algorytmy, schematy, programy

2.8. Algorytmy, schematy, programy https://app.wsipnet.pl/podreczniki/strona/38766 2.8. Algorytmy, schematy, programy DOWIESZ SIĘ co oznaczają pojęcia: algorytm, schemat blokowy, język programowania, jakie są sposoby obliczania największego

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

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania. IŚ ćw.8 JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania. Skrypty JavaScript są zagnieżdżane w dokumentach HTML. Skrypt JavaScript

Bardziej szczegółowo

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia Podstawy informatyki Elektrotechnika I rok Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia Katedra Energoelektroniki i Automatyki Systemów Przetwarzania Energii AGH Kraków 2017 Tematyka

Bardziej szczegółowo

Podstawy Pythona. Krzysztof Gdawiec. Instytut Informatyki Uniwersytet Śląski

Podstawy Pythona. Krzysztof Gdawiec. Instytut Informatyki Uniwersytet Śląski Podstawy Pythona Krzysztof Gdawiec Instytut Informatyki Uniwersytet Śląski Słownik jest typem mutowalnym. Każdy element to para: klucz wartość. W celu stworzenia słownika pary klucz wartość umieszczamy

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

QUERY język zapytań do tworzenia raportów w AS/400

QUERY język zapytań do tworzenia raportów w AS/400 QUERY język zapytań do tworzenia raportów w AS/400 Dariusz Bober Katedra Informatyki Politechniki Lubelskiej Streszczenie: W artykule przedstawiony został język QUERY, standardowe narzędzie pracy administratora

Bardziej szczegółowo

Typy wyliczeniowe Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Typy wyliczeniowe Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki Typy wyliczeniowe Konwersje napis liczba Struktury, unie Scanf / printf Wskaźniki Typy wyliczeniowe Służą do łatwiejszej kontroli nad stałymi Ustawianie parametrów o ściśle określonym zbiorze wartości

Bardziej szczegółowo

Rozdział 4 KLASY, OBIEKTY, METODY

Rozdział 4 KLASY, OBIEKTY, METODY Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej

Bardziej szczegółowo

Makropolecenia w Excelu

Makropolecenia w Excelu Makropolecenia w Excelu Trochę teorii Makropolecenie w skrócie nazywane makro ma za zadanie automatyczne wykonanie powtarzających się po sobie określonych czynności. Na przykładzie arkusza kalkulacyjnego

Bardziej szczegółowo

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Pierwsze kroki Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura Co znaczy

Bardziej szczegółowo

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else.

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else. Nazwa implementacji: Nauka języka Python wyrażenia warunkowe Autor: Piotr Fiorek Opis implementacji: Poznanie wyrażeń warunkowych if elif - else. Nasz kalkulator umie już liczyć, ale potrafi przeprowadzać

Bardziej szczegółowo

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q LABORAORIUM PROCESORY SYGAŁOWE W AUOMAYCE PRZEMYSŁOWEJ Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q 1. Zasady arytmetyki stałoprzecinkowej. Kody stałopozycyjne mają ustalone

Bardziej szczegółowo

Optimizing Programs with Intended Semantics

Optimizing Programs with Intended Semantics Interaktywna optymalizacja programów 26 kwietnia 2010 Spis treści Spis treści Wstęp Omówienie zaproponowanego algorytmu na przykładzie Wewnętrzna reprezentacja reguł dotyczących optymalizacji Wybrane szczegóły

Bardziej szczegółowo

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład. Część XVII C++ Funkcje Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład. 2 3 Tworzymy deklarację i definicję funkcji o nazwie pobierzln() Funkcja

Bardziej szczegółowo

Wykład 5: Klasy cz. 3

Wykład 5: Klasy cz. 3 Programowanie obiektowe Wykład 5: cz. 3 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD - podstawy Konstruktor i destruktor (część I) 2 Konstruktor i destruktor KONSTRUKTOR Dla przykładu

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

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