PROLOG: WEJŚCIE/WYJŚCIE I FUNKCJE WBUDOWANE. Autor: Mateusz Chojnacki

Podobne dokumenty
Prolog Wejście / wyjście r

Programowanie w logice Prolog 3

Programowanie w Logice

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

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Programowanie w logice

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

Programowanie w logice

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

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.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Warto też w tym miejscu powiedzieć, że w C zero jest rozpoznawane jako fałsz, a wszystkie pozostałe wartości jako prawda.

Ok. Rozbijmy to na czynniki pierwsze, pomijając fragmenty, które już znamy:

Zadanie nr 3: Sprawdzanie testu z arytmetyki

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

1 Podstawy c++ w pigułce.

Programowanie w logice

1. Wypisywanie danych

Wykład PASCAL - Pliki tekstowe

Podstawy i języki programowania

Operatory zmiany sposobu przypisania standardowych strumieni >,<,>> Jeżeli pierwsze polecenie powiodło się to wykona drugie

Zasady programowania Dokumentacja

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

4. Funkcje. Przykłady

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

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

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

Struktura pliku projektu Console Application

Statyczne i dynamiczne predykaty

Oczywiście plik musi mieć rozszerzenie *.php

Wstęp do Programowania, laboratorium 02

Języki i techniki programowania Ćwiczenia 2

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

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

Program, który się uczy.

2. Zmienne i stałe. Przykłady Napisz program, który wypisze na ekran wynik dzielenia 281 i 117 w postaci liczby mieszanej (tj. 2 47/117).

Technologie Informacyjne - Linux 2

4. Wyrzuć wyjątek jeśli zmienna ist nie istnieje bloki: try, catch i wyrzucanie wyjątku

Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi)

8. Wektory. Przykłady Napisz program, który pobierze od użytkownika 10 liczb, a następnie wypisze je w kolejności odwrotnej niż podana.

Program dopisujący gwiazdkę na końcu pliku tekstowego o nazwie podanej przez uŝytkownika oraz wypisujący zawartość tego pliku.

C++ wprowadzanie zmiennych

1 second UPS. Poziom trudności: łatwy. Wersja dokumentacji: 1.3. Aktualizacja: Beckhoff Automation Sp. z o. o.

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

Jak wiemy, wszystkich danych nie zmieścimy w pamięci. A nawet jeśli zmieścimy, to pozostaną tam tylko do najbliższego wyłączenia zasilania.

Argumenty wywołania programu, operacje na plikach

1 Powtórzenie wiadomości

Programowanie w języku Python. Grażyna Koba

1. Wprowadzenie do C/C++

PASCAL. Etapy pisania programu. Analiza potrzeb i wymagań (treści zadania) Opracowanie algorytmu Kodowanie Kompilacja Testowanie Stosowanie

Zakład Systemów Rozproszonych

3. Instrukcje warunkowe

Zestaw 1-1 Organizacja plików: Oddajemy tylko źródła programów (pliki o rozszerzeniach.cpp)!!!

Wstęp do Informatyki dla bioinformatyków

Przedstawię teraz tzw. podstawowe symbole wyrażenia regularne (BRE, Basic Regular Expression)

Pliki. Operacje na plikach w Pascalu

Struktury, unie, formatowanie, wskaźniki

Cw.12 JAVAScript w dokumentach HTML

Podstawy programowania w C++

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

1. Wprowadzenie do C/C++

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

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Być może jesteś doświadczonym programistą, biegle programujesz w Javie,

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

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

Nazwa implementacji: Nauka języka Python pętla for. Autor: Piotr Fiorek

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Laboratorium kryptograficzne dla licealistów 3

Programowanie w języku Java

1 Podstawy c++ w pigułce.

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

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

do instrukcja while(wyrażenie);

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

PROLOG INNE PRZYKŁADY MACIEJ KELM

Podstawowe typy zmiennych

Języki programowania imperatywnego

Skrypty powłoki w systemie Linux

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Zadania język C++ Zad. 1. Napisz program wczytujący z klawiatury wiek dwóch studentów i wypisujący informację o tym, który z nich jest starszy.

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

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

Podstawy i języki programowania

KURS C/C++ WYKŁAD 2. char znak; znak = a ; Program 2 #include<stdio.h> void main() { char znak; while( (znak = getchar() )!= t ) putchar(znak); }

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

Laboratorium 6: Ciągi znaków. mgr inż. Leszek Ciopiński dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Część 4 życie programu

Pascal - wprowadzenie

JAVAScript w dokumentach HTML (1)

Warunek wielokrotnego wyboru switch... case

Programowanie 3 - Funkcje, pliki i klasy

Formy dialogowe w środowisku Gnome

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Ustalanie dostępu do plików - Windows XP Home/Professional

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Transkrypt:

PROLOG: WEJŚCIE/WYJŚCIE I FUNKCJE WBUDOWANE Autor: Mateusz Chojnacki

WEJŚCIE/WYJŚCIE Do tej pory jedynym sposobem na dostarczenie informacji do programu Prolog a było zadawanie pytań w zakresie określonej bazy. Dodatkowo Prolog odpowiadał jedynie w sposób X= odpowiedź, co w większości przypadków zupełnie wystarcza. Jednakże przydatnym jest napisanie programu Prolog a, tak by sam z nami toczył konwersacje.

STARA METODA Weźmy przykładową bazę wydarzeń zawierającą daty i nagłówki event(1505,[ Euclid,translated,into, Latin ]). event(1510,[ Reuchlin-Pfefferkorn,controversy]). event(1523,[ Christian,`II`,flees,from, Denmark ]).?- event(1505,x). X=[Euclid, translated,into,latin].

STARA METODA CD. Reprezentacja nagłówka jako listy atomów ma przewagę w momencie wyszukiwania pod kątem konkretnego atomu. Stwórzmy komendę when(x,y) która powiedzie się jeśli X jest wspomniany w roku Y when(x,y) :- event(y,z), member(x,z).?- when( Denmark, Data). Data=1523

NOWA METODA Teraz chcemy, by Prolog sam zapytał nas o której dacie chcielibyśmy się dowiedzieć, a następnie wyświetli nagłówek. By osiągnąć ten cel użyjemy wbudowanych funkcji Prologa, które odpowiadają za wejście i wyjście

FUNKCJA READ Funkcja read zczyta kolejną linię wprowadzoną z klawiatury zakończoną kropką i spacją bądź enterem. hello1(event) :-read(date), event(date,event).?-hello1(x). Po tym zapytaniu Prolog będzie czekać na datę, jako że jest on podana w funkcji read 1523. Prolog przeszuka bazę danych pod kątem podanej daty i zwróci nam nagłówek: X=[ Christian, II,flees,from, Denmark ]?

FUNKCJA WRITE I NL Funkcja write jest używana do wyświetlania zadanego parametru. Podobnie jak funkcja read, działa tylko raz. Jeśli funkcja się nie powiedzie dostaniemy unikalną wartość numeryczną. Funkcja nl (new line) jest używana do wymuszenia nowej linii na wszystkich kolejno wypisywanych elementach. Tak samo jak write, działa tylko raz. Wypisując elementy listy, warto zadbać o ich czytelność, co w przypadku listy list może być utrudnione.

FUNKCJA WRITE I NL CD. Postaramy się wypisać listę list [1,2,[3,4],5,6] w następujący sposób 1 2 5 6 3 4 W tym celu zdefiniujemy dwie funkcje, spaces i pp(x,y)

FUNKCJA WRITE I NL CD. Funkcja spaces będzie kontrolować głębokość elementów w naszej liście i odpowiednio wypisywać ilość spacji spaces(0) :-!. spaces(n) :- write(` `), N1 is N -1, spaces(n1). Funkcja pp będzie wypisywać kolejne elementy listy w nowych linijkach biorąc pod uwagę ich głębokość pp([h T], I) :-!, J is I + 3, pp(h,j), ppx(t,j), nl. pp(x,i) :- spaces(i), write (X), nl. ppx([],_). ppx([h T],I) :- pp(h,i) ppx(t,i).

FUNKCJA WRITE I NL CD. Teraz stworzymy funkcję phh która wypisze nam nagłówki wydarzeń oddzielając każdy atom spacją. phh([]) :- nl. phh([h T]) :- write(h), spaces(0), phh(t). Dla przykładu wyświetlimy wszystkie nagłówki zawierające England :?- event(_, L), member (`England`,L), phh(l).

POŁĄCZENIE READ I WRITE Teraz, kiedy poznaliśmy obie funkcje read i write, możemy ich użyć do ulepszenia naszego programu hello2:- phh([`what`,date,do,you,`desire?`]), read(d), event(d,s), phh(s).

CZYTANIE ZNAKÓW Znak to najmniejszy element która może być zczytana i wypisana przez program. Prolog jako znak rozumie atomy które posiadają dokładnie jeden element w nazwie, na przykład: `a`,`\n` czy ` `.

CZYTANIE ZNAKÓW CD. Prolog posiada kilka wbudowanych funkcji do czytania znaków. Jedną z nich jest funkcja get_char(x). Funkcja ta pozwala nam na zczytanie znaku wprowadzonego za pomocą klawiatury. W zależności od programu wpisane znaki mogą być dla Prologa niedostępne do póki linia tekstu nie zostanie zakończona Enterem. Jeśli X jest już w użyciu, get_char(x) porównuje go z kolejnym znakiem i powodzi się (lub nie) w zależności od wyniku.

CZYTANIE ZNAKÓW CD. Przykładowy kod który sprawdza drobne błędy: check_line(ok) :- get_char(x), rest_line(`\n`,x,ok). rest_line(_,`\n`,yes) :-!. rest_line(last,current,no) :- typing_error(last,current),!, get_char(new), rest_line(current,new,_). rest_line(_,current,ok) :- get_char(new), rest_line(current,new,ok). typing_error(`q`,`w`). typing_error(`c`,`v`).

CZYTANIE ZNAKÓW CD. Gdy check_line(x) zostaje wywołane, czyta wszystkie znaki do póki nie pojawi się `\n` (nowa linia). Podczas czytania znaki są porównywane z listą częstych błędów (typing_error). Przykładowo, wiemy że w języku angielskim litery takie jak qw i cv nigdy nie występują obok siebie w wyrazach. Zapytanie Zwróci nam X=no?- check_line(x). Please could you enter your cvomment on the proposal

PISANIE ZNAKÓW Wbudowana funkcja put_char(x)wypisze nam znak X. Funkcja zawsze się powiedzie, ale zmiennej nie można nadpisać. W przypadku nadpisania pojawi się błąd, a efektem ubocznym będzie wypisanie argumentu jako znaku.?- put_char(`h`), put_char(`e`), put_char(`l`), put_char(`l`), put_char(`o`). hello

PISANIE ZNAKÓW CD. Możemy wykorzystać funkcję put_char(x) do poprawy błędów wyłapanych przez check_line. W tym celu napiszemy funkcję correct_line correct_line :- get_char(x), corect_rest_line(`\n`,x). correct_rest_line(c,`\n`) :-!, put_char(c), nl. correct_rest_line(last,current) :- typing_correction(last,current,corr),!, get_char(new), correct_rest_line(corr,new). correct_rest_line(last,current) :- put_char(last), get_char(new), correct_rest_line(current,new). typing_correction(`q`,`w`,`q`). typing_correction(`c`,`v`,`c`).

CZYTANIE ZDAŃ Do czytania zdań użyjemy wbudowanej funkcji read_in. Funkcja ta tworzy listę wyrazów, które wchodzą w skład naszego zdania. Prolog rozumie wyraz jako ciąg znaków kończący się spacją. Znaki specjalne takie jak `,` `.` `;` `?` `!` są czytane jako osobne wyrazy. Funkcja uznaje `.` `?` `!` jako zakończenie zdania. Duże litery automatycznie konwertowane są na małe.?-read_in(s). The man, who is old, saw Joe s hat. S = [the,man,`,`,who,is,old,`,`,saw,`joe``s`,hat,`.`]

CZYTANIE I ZAPISYWANIE PLIKÓW Jak na razie używaliśmy Prologa do czytania i wypisywania tekstu na jego konsoli. Teraz zajmiemy się czytaniem i wypisywaniem tekstu do pliku. By lepiej zrozumieć dalszą część wykładu warto pamiętać o kilku zasadach jakimi rządzą się pliki. W Prologu nazwy plików są reprezentowane przez atomy. Pliki mają określoną długość i na końcu każdego z nich jest znacznik end of file marker. W momencie gdy natrafi na niego get_char(x) albo read(x), X zostanie zapisany jako specjalny atom `end_of_file`.

CZYTANIE I ZAPISYWANIE PLIKÓW CD. Prolog rozpoznaje aktualny strumień wejścia i aktualny strumień wyjścia, z których czyta całe wejście i wyjście. Zazwyczaj za aktualny strumień wejścia uznaje się klawiaturę, a za strumień wyjścia wyświetlacz. Można to tymczasowo zmienić podczas działania programu. Zanim uzyskamy dostęp do pliku należy utworzyć dla niego strumień. Możemy do tego użyć wbudowanej funkcji open. Jako dwa pierwsze argumenty podajemy nazwę pliku i atom read albo write w zależności czy chcemy czytać czy zapisać plik. Trzecim argumentem jest zmienna nazywająca nasz strumień danych.

CZYTANIE I ZAPISYWANIE PLIKÓW CD. Przykładowo?- open(`mojplik.pl`,read,x). Podpisuje pod X strumień którego możemy użyć do czytania pliku `mojplik.pl`?-open(`output`,write,x). Podpisuje pod X strumień którego możemy użyć do zapisania pliku o nazwie `output`.

CZYTANIE I ZAPISYWANIE PLIKÓW CD. Funkcja close zamyka strumień, przykładowo: program :- open(`mojplik.pl`,read,x), code_reading_from(x), close(x). Gdzie code_reading_from jest funkcją, która czyta kod z stumienia program :- open(`output`,write,x), code_writing_to(x), close(x). Gdzie code_writing_to jest funkcją, która zapisuje kod ze strumienia.

EDYCJA AKTUALNEGO WEJŚCIA I WYJŚCIA Program który utworzy nowy strumień X będzie musiał zrobić z nim następujące rzeczy: 1. Ustawić aktualny strumień wejścia lub wyjścia jako X. 2. Wywołać operacje close. 3. Przekazać do innej części programu. Edycja aktualnego strumienia jest egzekwowana przez wbudowane funkcje set_input i set_output. Oba wymagają jednego argumentu, nazwy strumienia bądź atomu user_input/user_output. Efekty tych funkcji są nieodwracalne.

EDYCJA AKTUALNEGO WEJŚCIA I WYJŚCIA CD. Wbudowane funkcje current_input i current_output pozwalają nam na dostęp do aktualnego strumienia. Daje nam to możliwość zapamiętania stanu strumienia przed edycją. program :- open(`mojplik.pl`,read,x), current_input(stream), set_input(x), code_reading, close(x), set_input(stream).

EDYCJA AKTUALNEGO WEJŚCIA I WYJŚCIA CD. program :- open(`mojplik.pl`,write,x), current_output(stream), set_output (X), code_writing, close(x), set_output(stream).

SPRAWDZANIE PLIKU Czytanie i zapisywanie plików jest najbardziej pomocne gdy pracujemy z większą ilością elementów. W Prologu pliki mogą przechowywać programy. Jeśli tekst naszego programu jest zapisany w pliku, czytanie i zapisywanie go do bazy danych jest zwane sprawdzaniem pliku. Prolog posiada wbudowaną funkcję consult. W momencie wywołania, consult(x) (gdzie X to plik) zczyta wszystkie linie kodu. Prolog posiada również możliwość składania i czytania listy plików.?- [file1,mapper,expert]. Działa to w taki sam sposób co: consultall([]). consultall([h T]) :- consult(h), consultall(t).

OPERATORY Operatory w prologu posiadają trzy właściwości: pozycję, nadrzędność klasy, przywiązanie. Pozycja ma trzy opcje: infix, postfix,prefix (operator z dwoma argumentami jest pomiędzy nimi ; operator z jednym argumentem może wystąpić przed lub po nim). Nadrzędną klasą jest Integer, którego zasięg w Prologu wynosi od 1 do 1200. Nadrzędność klasy jest użyta by jednoznacznie określić klasę zmiennych w przypadku nie jasnego użycia nawiasów. Przywiązanie ujednolica działanie w momencie gdy są użyte w nim dwa operatory.

OPERATORY CD. W prologu przywiązujemy specjalny atom do operatora który okleśla jego pozycję i przywiązanie. Dla operatorów z dwoma argumentami możliwości są cztery: xfx xfy yfx yfy Dla operatorów stojących przed argumentem: fx fy Dla operatorów stojących za argumentem: xf yf Gdzie x i y to argumenty a f to operator.

OPERATORY CD. Argumenty są przedstawione za pomocą x i y gdyż argument może posiadać wewnątrz siebie kolejny operator. Na przykład: a + b + c Ma dwie możliwości: (a + b) + c albo a + (b + c)

OPERATORY CD. W prologu jeśli chcemy zadeklarować nasz operator używamy wbudowanej funkcji op.?- op(prec, Spec,Name). Dla przykładu, oto lista kilku domyślnie zadeklarowanych operatorów:?- op(1200,xfx,`:-`).?- op(1200,fx,`?-`).?- op(1200,fx,`:-`).?- op(700,xfx,`=`).?- op(900,fy,`\+`).?- op(500,yfx,`+`).?- op(400,yfx,`*`).

FUNKCJE WBUDOWANE Dodawanie nowych warunków: consult(x) gdzie X jest nazwą naszego pliku o rozszerzeniu.pl pozwala podmienić wszystkie warunki w zadanym pliku na jedeno twierdzenie jeśli chcemy ten efekt uzyskać na wielu plikach jednocześnie możemy się posłużyć listą w sposób:?- [plik1,plik2,plik3]. co zastępuje dłuższą wersję:?- consult(plik1),consult(plik2),consult(plik3).

FUNKCJE WBUDOWANE CD. kolejnymi wbudowanymi twierdzeniami są true i fail true istnieje jedynie dla wygody fail pozwala na wymuszanie nawrotów w procesie poszukiwania rozwiązania, co pozwala w szczególności na znalezienie wszystkich rozwiązań problemu.?- event(x,y), phh(y), fail.

FUNKCJE WBUDOWANE CD. twierdzenie var(x) działa, jeśli X jest w danym momencie nieprzypisaną zmienną np.: var(x) zwraca true var(23) zwraca false X=Y, Y=23, var(x) zwraca false twierdzenie nonvar(x) jest przeciwieństwem funkcji var(x) a więc działa jeśli X NIE jest w danym momencie nieprzypisaną zmienną

FUNKCJE WBUDOWANE CD. twierdzenie atom(x) działa jeśli w danym momencie X jest atomem Prologa, a więc: atom(23) zwraca false atom(apples) zwraca true atom(program.pl) zwraca true atom(x) zwraca false twierdzenie number(x) działa jeśli X jest w danym momencie liczbą twierdzenie atomic(x) działa jeśli X jest w danym momencie atomem bądź liczbą: atomic(x):-atom(x). atomic(x):-number(x).

FUNKCJE WBUDOWANE CD. twierdzenie listing(a), gdzie A jest przypisane do zdefiniowanego warunku w pliku Prologa pozwala zobaczyć jaki jest proces działania danego polecenia jeśli w pliku zdefinujemy funkcje: dad(tom). son(tim). parent(tom,tim). child(x,y):-parent(y,x). to użycie listing(child). w kompilatorze wyrzuci nam na ekran child(x,y):- parent(y,x).

FUNKCJE WBUDOWANE CD. twierdzenia asserta(x) i assertz(x), pozwalają dodać do pliku Prologa funkcje asserta dodaje funkcje na początku programu, a assertz na końcu X musi być wcześniej przypisany do jakiejś funkcji twierdzenie retract(x) pozwala usunąć z programu funkcje oczywiście nie możemy usuwać funkcji wbudowanych

FUNKCJE WBUDOWANE CD. twierdzenie atom_chars(a,l) pozwala nam rozbić ciąg charów na tablice pojedyńczych elementów lub z pojedyńczych charów stworzyć ciąg np.: atom_chars(apple,x). X=[a,p,p,l,e] atom_chars(x,[a,p,p,l,e]) X=apple

FUNKCJE WBUDOWANE CD. twierdzenie number_chars(a,l) pozwala nam rozbić liczbe na tablice pojedyńczych cyfr lub z pojedyńczych cyfr stworzyć liczbe np.: number_chars(123.5,x). X=['1','2','3','.','5'] number_chars(x,['1','2','3']) X=123

FUNKCJE WBUDOWANE CD. operatory `,` `i` `;` służą do łączenia dwóch funkcji, służy do traktowania dwóch celów łącznie, czyli: X,Y jest spełnione jeśli X jest spełniony i Y jest spełniony ; służy do traktowania dwóch celów rozłącznie, czyli: X;Y jest spełnione jeśli X jest spełniony LUB Y jest spełniony

FUNKCJE WBUDOWANE CD. Twierdzenie call(x), gdzie X to funkcja, jest spełnione jeśli X jest spełnione jest to funkcja bezużyteczna na obecnym etapie, jako że np.: call(member(a,x)) da nam ten sam rezultat co member(a,x) operator \+ jest rozumiany jako zaprzeczenie, czyli: \+X jest spełnione jeśli X nie jest spełniony operator X==Y przyrównuje do siebie elementy X i Y, jeśli się to uda, to funkcja została spełniona, w przeciwnym wypadku, funkcja zawodzi.

FUNKCJE WBUDOWANE CD. twierdzenie get_char(x) zostaje spełnione jeśli X pasuje do pierwszego napotkanego symbolu na strumieniu wejścia, wykonuje się jednorazowo twierdzenie read(x) zostaje spełnione jeśli X pasuje do całego wprowadzonego zdania na strumieniu wejścia, wykonuje się jednorazowo twierdzenie put_char(x) wypisuje pojedyńczy znak na ekran, wykonuje się jednorazowo skrót nl powoduje wstawienie nowej linii write(x) wypisuje X na ekran, gdzie X jest ciągiem znaków write_canonical(x) działa tak jak write(x) z wyjątkiem tego że ignoruje operatory

FUNKCJE WBUDOWANE CD. open(x,y,z) otwiera plik, gdzie X to nazwa pliku, Y ustawia się na read jeśli plik ma być do odczytu, bądź na write jeśli ma być do edycji, Z nadaje lokalna nazwe dla tekstu zawartego w pliku w razie chęci działania na nim. close(x) służy do zamknięcia otwartego tekstu, gdzie w miejsce X podajemy nazwę Z z przykładu powyżej

FUNKCJE WBUDOWANE CD. set_input(x) ustawia wejście na dany ciąg który jest przekazany poprzez X ( Z w open ) set_output(x) ustawia wyjście na dany ciąg który jest przekazany poprzez X ( Z w open ) current_input(x) jest spełniony jeśli nazwa ciągu na wejściu jest taka jak X current_output(x) jest spełniony jeśli nazwa ciągu na wyjściu jest taka jak X

FUNKCJE WBUDOWANE CD. X+Y daje nam sume X i Y X-Y daje nam różnice X i Y X*Y daje nam iloczyn X i Y X/Y daje nam iloraz X i Y w postaci float X//Y daje nam iloraz X i Y w postaci int XmodY daje nam reszte z dzielenia X i Y X=:=Y sprawdzenie czy X i Y mają te same numeryczne wartości X=\=Y sprawdzenie czy X i Y mają różne numeryczne wartości X<Y sprawdzenie czy wartość X jest mniejsza od wartości Y X>Y sprawdzenie czy wartość X jest większa od wartości Y X>=Y sprawdzenie czy wartość X jest większa bądź równa wartości Y X=<Y sprawdzenie czy wartość X jest mniejsza bądź równa wartości Y

FUNKCJE WBUDOWANE CD. spy P służy do ustawiania punktów zainteresowania w wybranych miejscach programu dzięki którym mamy wgląd wewnątrz funkcji debugging wyświetla liste wszystki punktów szpiega nodebug usuwa wszystkie punkty szpiega nospy usuwa podane przez użytkownika punkty szpiega