Prolog struktury danych oraz obliczenia. 1. Arytmetyka?- Y is 2+2. Y = 4. ?- 5 is 3+3. false. ?- Z is (3.9 / 2.1). Z =

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

Programowanie w logice

Programowanie w Logice

JAVAScript w dokumentach HTML (1)

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Odczyt danych z klawiatury Operatory w Javie

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

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

UKŁADY RÓWNAŃ LINIOWYCH

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

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?

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

Cw.12 JAVAScript w dokumentach HTML

Operatory w C++ Operatory arytmetyczne. Operatory relacyjne (porównania) Operatory logiczne. + dodawanie - odejmowanie * mnożenie / dzielenie % modulo

Programowanie Delphi obliczenia, schematy blokowe

Obliczenia, zmienne. Proste działania, zmienne, rodzaje zmiennych, proste operacje i działania na zmiennych.

Podstawy programowania w języku C i C++

Definicje wyższego poziomu

Warunki logiczne instrukcja if

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

Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 2. Programowanie komputerowe

Treść wykładu. Pierścienie wielomianów. Dzielenie wielomianów i algorytm Euklidesa Pierścienie ilorazowe wielomianów

C++ wprowadzanie zmiennych

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

Ogólny schemat prostego formularza: A może lepiej zamiast przycisku opartego o input tak:

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Podstawowe wyrażenia matematyczne

Paradygmaty programowania

Wprowadzania liczb. Aby uniknąć wprowadzania ułamka jako daty, należy poprzedzać ułamki cyfrą 0 (zero); np.: wpisać 0 1/2

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

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

Pascal - wprowadzenie

Laboratorium z Podstaw Programowania Zajęcia 1

Kiedy i czy konieczne?

JAVAScript w dokumentach HTML - przypomnienie

Struktury danych i obliczenia w Prologu. Wykonali: Dzięgielewski Patryk Golacik Tomasz Rzepecki Michał Zawadzki Marcin

1. Wypisywanie danych

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

Visual Basic for Application (VBA)

Deklarowania faktów dotyczących obiektów i związków między nimi. Definiowania reguł dotyczących obiektów i związków między nimi.

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

ZMIENNE. Podstawy PHP

1 Podstawy c++ w pigułce.

Krok 1.Chcemy napisać dowolny tekst na ekranie, np. Witaj świecie

Visual Basic for Application (VBA)

Wprowadzenie do MS Excel

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

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

Programowanie w logice

Pracownia Komputerowa wykład V

OBLICZENIA NA DANYCH

JAVA?? to proste!! Autor: wojtekb111111

Formuły formułom funkcji adresowania odwoływania nazwy Funkcja SUMA argumentami SUMA

Instrukcja standardowa Writeln

Python wstęp do programowania dla użytkowników WCSS

PROLOG INNE PRZYKŁADY MACIEJ KELM

ROZKŁAD MATERIAŁU DLA KLASY I LICEUM I TECHNIKUM (ZAKRES PODSTAWOWY I ROZSZERZONY) A WYMAGANIA PODSTAWY PROGRAMOWEJ

12.Rozwiązywanie równań i nierówności liniowych oraz ich układów.

Właściwości i metody obiektu Comment Właściwości

Visual Basic for Application (VBA)

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

Funkcje są prawdopodobnie najważniejszą częścią każdego poważnego programu (w każdym języku programowania).

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

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

Ćwiczenie 1. Matlab podstawy (1) Matlab firmy MathWorks to uniwersalny pakiet do obliczeń naukowych i inżynierskich, analiz układów statycznych

Projekt Era inżyniera pewna lokata na przyszłość jest współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Wykorzystanie programów komputerowych do obliczeń matematycznych

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]

Rozkład materiału a wymagania podstawy programowej dla I klasy czteroletniego liceum i pięcioletniego technikum. Zakres rozszerzony

C z y p a m i ę t a s z?

Podstawy i języki programowania

1259 (10) = 1 * * * * 100 = 1 * * * *1

MATLAB - laboratorium nr 1 wektory i macierze

Arytmetyka liczb binarnych

Algorytmy i struktury danych. Wykład 4

Pracownia Komputerowa wyk ad V

Metody numeryczne Laboratorium 2

Wyrażenia arytmetyczne

SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL

FUNKCJA LINIOWA, RÓWNANIA I UKŁADY RÓWNAŃ LINIOWYCH

2 Przygotował: mgr inż. Maciej Lasota

1. LICZBY DZIAŁ Z PODRĘCZNIKA L.P. NaCoBeZu kryteria sukcesu w języku ucznia

Część 4 życie programu

Algorytmika i Programowanie VBA 1 - podstawy

Środowisko R wprowadzenie. Wykład R1; Pakiety statystyczne

Przewodnik dla każdego po: Dla każdego coś miłego Microsoft Excel 2010

Wprowadzenie do języka Pascal

Wersja testu A 18 czerwca 2012 r. x 2 +x dx

Kongruencje oraz przykłady ich zastosowań

Wykorzystanie programów komputerowych do obliczeń matematycznych, cz. 2/2

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

Bash i algorytmy. Elwira Wachowicz. 20 lutego

Programowanie Równoległe i Rozproszone. Algorytm Kung a. Algorytm Kung a. Programowanie Równoległe i Rozproszone Wykład 8. Przygotował: Lucjan Stapp

ZADANIA ZAMKNIETE W zadaniach 1-25 wybierz i zaznacz na karcie odpowiedzi poprawna

Lista 2 logika i zbiory. Zad 1. Dane są zbiory A i B. Sprawdź, czy zachodzi któraś z relacji:. Wyznacz.

Wymagania na poszczególne oceny szkolne Klasa VI - matematyka

Transkrypt:

Prolog struktury danych oraz obliczenia 1. Arytmetyka?- Y is 2+2. Y = 4?- 5 is 3+3. false.?- Z is 4.5 + (3.9 / 2.1). Z = 6.357142857142857. Wbudowany predykat is bierze wyrażenie po prawej, oblicza je i porównuje z argumentem po lewej. Obliczenia w prologu wyglądają bardzo podobnie jak w innych językach programowania. Najproższe wyrażenie to wyrażenie z samą liczbą np.?- What is 2. What = 2.

Podstawowe operacje arytmetyczne: Infix operators: + dodawanie - odejmowanie * mnożenie / dzielenie liczb zmiennoprzecinkowych // dzielenie liczb całkowitych ^ potęgowanie mod modulo Funkcje: abs() sqrt() log() exp() floor() round() wartośd całkowita pierwiastek logarytm o podstawie e funkcja eksponencjalna funkcja podłogi zaokrąglanie Kolejnośd wykonywania działao jest taka sama jak w większości języków programowania, czyli: ^ jako pierwsze, potem * oraz /, następnie + i -. Jeśli operatory są sobie równe kolejnośd wykonywania jest od lewej do prawej. Na przykład 4+3*2+5 to to samo co (4+(3*2))+5. Prolog obsługuje liczby całkowite oraz zmiennoprzecinkowe i rzutuje je jeśli to potrzebne.

Liczby zmiennoprzecinkowe mogą byd wyrażane przy pomocy formatu E np.: 3.45E-6 * 3.45 x 10-6. Prolog nie służy do rozwiązywania równao, nie rozwiąże zadania z niewiadomą po prawej stronie, czyli np.: 5 is 2+What. Nie obliczy wartości, tylko zwróci false. Zamiast tego powinno byd: What is 5-2. Dużą różnicą pomiędzy Prologiem, a innymi językami programowania jest to, że wyrażenia arytmetyczne nie są obliczane za każdym razem, kiedy wystąpią, ale tylko w konkretnych miejscach. Na przykład 2+2 jest wyliczane jako 4 tylko jeśli jest to argument predykatu z tabeli poniżej, w innych przypadkach jest to po prostu struktura danych złożona z 2, +, 2. R is Expr Oblicza wyrażenie i zapisuje je w R Expr1 =:= Expr2 Prawda jeśli oba wyrażenia są równe Expr1 =\= Expr2 Prawda jeśli wyrażenia są różne Expr1 > Expr2 Prawda jeśli wyrażenie 1 > wyrażenie 2 Expr1 < Expr2 Expr1 >= Expr2 Expr1 =< Expr2

Predykat is bierze wyrażenie po prawej strony, oblicza i wynik umieszcza w argumencie po lewej =:= oblicza dwa wyrażenia i porównuje wyniki =, umieszcza argument po prawej stronie w argumencie po lewej. Po prawej stronie nie musi znajdowad się wyrażenie arytmetyczne, jeśli się znajduje, nie zostanie obliczone. Tak więc:?- What is 2+3. What = 5.?- 4+1 =:= 2+3. true.?- What = 2+3. What = 2+3.

Inne porównania <, >, =<, >= działają tak jak =:=, ale wykonują inny test. Należy zwrócid uwagę na to, że zapisujemy =< oraz >=, nie => i <=, ponieważ takie wyrażenia wyglądają jak strzałki i twórcy Prologa postanowili zostawid je niezdefiniowane. Listy: Ważną strukturą danych w Prologu jest lista. Pusta lista zapisywana jest jako []. Lista jednoelementowa [a] nie jest równoważna pojedynczemu elementowi a. Listę można podzielid na początek i resztę używając. Przykład: [1,2,3,4,5] [First Rest] Tekst podany w cudzysłowie interpretowany jest jako kody ASCII, stąd jeśli napiszemy: Otrzymamy:?- write("abc"). [97,98,99] Metoda jak wyświetlid tekst jako normalny tekst, nie kody ASCII: write_str([head Tail]) :- put(head), write_str(tail). write_str([]).

Stąd widad, że tekst podany w cudzysłowie jest listą znaków (jak String w większości języków programowania). Przykłady struktur: person(name('michael Covington'), gender(male), birthplace(city('valdosta'), state('georgia'))). sentence(noun_phrase(determiner(the), noun(cat)), verb_phrase(verb(chased), noun_phrase(determiner(the)), noun(dog))). Unify With Result a(b,c) X X=a(b,c) a(b,c) a(x,y) X=b, Y=c

a(b,c) a(x) fails a(b,c) a(x,y,z) fails Wbudowany predykat functor zwraca do zmiennych nazwę struktury oraz ilośd argumentów np.: functor(a(b,c,d),x,y). X = a, Y = 3. Wbudowany predykat arg(n,s,x) wstawia pod zmienną X n-ty argument struktury S np.: arg(2,a(b,c,d,e),what). What = c. Można stworzyd zapętloną strukturę, która wskazuje na samą siebie np.:

X = f(x). Error: X = f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f... W takim przypadku możemy użyd: unify_with_occurs_check(x,f(x)). I w wypadku, gdy byłoby zapętlenie, funkcja zwróci false, w innym przypadku nastąpi przypisanie. unify_with_occurs_check(x,f(a)). X = f(a). Ponieważ zapytanie w Prologu jest strukturą, możesz je traktowad jako dane i konstruowad je podczas uruchomienia programu. Call wykonuje argument jak pytanie, więc call(write(`hello there`)) jest równoznaczne z write(`hello there`)