Programowanie w logice

Podobne dokumenty
Prolog Wejście / wyjście r

Programowanie w logice Prolog 3

Programowanie w Logice

Programowanie w logice

Programowanie w logice Prolog 2

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

Statyczne i dynamiczne predykaty

Program, który się uczy.

Prolog Wykład. Piotr Fulmański

Programowanie w logice

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

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

Podstawy i języki programowania

Programowanie w logice

Funkcje zawarte w bibliotece < io.h >

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

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

PROLOG INNE PRZYKŁADY MACIEJ KELM

Dana jest baza: kobieta(katarzyna). kobieta(anna). kobieta(maria). kobieta(marianna). kobieta(marta). Zdefiniujemy predykat kobiety/0 następująco:

Języki programowania deklaratywnego

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

Bash - wprowadzenie. Bash - wprowadzenie 1/39

Programowanie w językach

Wykład PASCAL - Pliki tekstowe

Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi)

Funkcje zawarte w bibliotece < io.h >


Programowanie strukturalne

Powłoka I. Popularne implementacje. W stylu sh (powłoki zdefiniowanej w POSIX) W stylu csh. bash (najpopularniejsza) zsh ksh mksh.

Podstawy języka PROLOG

Dariusz Banasiak. Instytut Informatyki, Automatyki i Robotyki. Politechniki Wrocławskiej


Podstawy programowania w C++

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

Prolog (Pro-Logic) Programowanie w Logice. Dr inż. Piotr Urbanek

Operacje wejścia/wyjścia (odsłona druga) - pliki

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

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 21 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 24

Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi.

Wstęp do programowania 2

Język C++ zajęcia nr 1

Technologie Informacyjne - Linux 2

Elementy języka Prolog

Temat zajęć: Filtry, strumienie standardowe oraz przetwarzanie potokowe. stderr

Zadanie nr 3: Sprawdzanie testu z arytmetyki

Pliki wykład 2. Dorota Pylak

WEJŚCIE/WYJŚCIE HASKELL ŁUKASZ PAWLAK DARIUSZ KRYSIAK

PRACOWNIA INFORMATYCZNA BASH - PODSTAWOWE INFORMACJE

BASH - LINIA POLECEŃ. Bioinformatyka 2018/2019

PODSTAWY SZTUCZNEJ INTELIGENCJI

Systemy operacyjne. System operacyjny Linux - wstęp. Anna Wojak

1. Wprowadzenie do C/C++

4. Pliki Informacje ogólne o dostępie do plików w PHP Sprawdzanie istnienia pliku file_exists()

1 Przygotował: mgr inż. Maciej Lasota

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

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.

Program wykonujący operację na plikach powinien zachować schemat działania zapewniający poprawną pracę:

Instrukcja do laboratorium Systemów Operacyjnych. (semestr drugi)

Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw

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

Przetwarzanie tekstu 2. Operacje na plikach tekstowych w systemie Linux

Ghost in the machine

Programowanie w logice Prolog 1

1. Wypisywanie danych

System operacyjny Linux wybrane zagadnienia. Magda Mielczarek Katedra Genetyki Uniwersytet Przyrodniczy we Wrocławiu

Powłoka bash. Kurs systemu Unix 1

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

Programowanie deklaratywne

Strumienie, pliki. Sortowanie. Wyjątki.

Wstęp do Programowania, laboratorium 02

Spis treści OBSŁUGA PLIKÓW W JĘZYKU C++ Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF32

Wstęp do programowania obiektowego. Przekazywanie parametrów do funkcji w C++ Metody i funkcje operatorowe Strumienie: standardowe, plikowe, napisowe

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Języki Programowania. Elementy języków programowania. Wojciech Sobieski

Wstęp do programowania. Wykład 1

Język C++ Różnice między C a C++

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 =

Podstawy Programowania

Biblioteka standardowa - operacje wejścia/wyjścia

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


TwinCAT 3 konfiguracja i uruchomienie programu w języku ST lokalnie

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

Projekt 4: Programowanie w logice

1 Rejestrator czasu pracy

Laboratorium nr 3 - Sztuczna Inteligencja Listy i operacje na listach

Laboratorium kryptograficzne dla licealistów 2

Pracownia Informatyczna I ORGANIZACJA ZAJĘĆ, ZASADY ZALICZENIA


BASH - WPROWADZENIE Bioinformatyka 4

Podstawy programowania w języku C++

Komunikacja za pomocą potoków. Tomasz Borzyszkowski


Języki C i C++ Wykład: 2. Wstęp Instrukcje sterujące. dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD

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

Programowanie w Logice

1. Wprowadzenie do C/C++

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

Pliki wykład 2. Dorota Pylak

Transkrypt:

Wejście i wyjście Wydział Matematyki UŁ 30 marca 2007

Plan prezentacji Czytanie i pisanie termów 1 Czytanie i pisanie termów Czytanie termów Pisanie termów 2 Czytanie znaków Pisanie znaków 3 Czytanie z pliku 4 naiwne bąbelkowe przez wstawiania przez łączenie szybkie

Czytanie termów Pisanie termów Predykat read odczytuje term wprowadzony z klawiatury (term ten musi kończyć się kropką). Predykat read można uzgodnić tylko raz. Program a(1,b). a(1,c). a(2,d). a(2,e). e(x) :- read(y),a(y,x). i efekt jego działania?- e(x). : 1. X = b ; X = c ; No Zauważmy, że Prolog podczas nawracania nie pyta już o kolejne liczby.

Czytanie termów Pisanie termów Program kwadrat :- read(x), licz(x). licz(stop) :-!. licz(x) :- C is X * X, write(c),kwadrat. i efekt jego działania?- kwadrat. : 4. 16 : stop. Yes

Czytanie termów Pisanie termów Predykat write wypisuje term. Predykat nl powoduje przejście do nowej linii. Podobnie jak read oba predykaty można uzgodnić tylko raz. Program a(0). a(n) :- write( ala ), N1 is N-1, a(n1). i efekt jego działania?- a(5). ala ala ala ala ala Yes

Czytanie znaków Pisanie znaków Predykat get_char odczytuje pojedyńczy znak.?- get_char(znak). : a Znak = a Yes?- get_char(znak). : ala Znak = a Unknown action: l (h for help) Action? Yes

Czytanie znaków Pisanie znaków Wywołanie celu put_char(x), w przypadku gdy zmienna X ukonkretniona jest znakiem, powoduje jego wypisanie.?- get_char(znak),put_char(znak). : a a Znak = a Yes

Czytanie z pliku Prolog może pisać dane do strumieni i ze strumieni dane odczytywać. Strumień, jak w innych językach programowania może odpowiadać klawiaturze, monitorowi, plikowi itd. W Prologu istnieją wbudowane strumienie user_input oraz user_output odpowiadające klawiaturze i monitorowi. Predykat open służy do powiązania strumienia z plikiem. Predykat close pozwala zakończyć używanie pliku. Typowy program czytający plik powinien wyglądać tak czytajplik :- open( dane.txt,read,x), kododczytujacy(x), close(x).

Czytanie z pliku Zmiana bieżącego strumienia wejściowego i wyjściowego odbywa się za pomocą predykatów set_input oraz set_output. Predykaty current_input oraz current_output pozwalają sprawdzić jak aktualnie ustawione są strumienie. Uwzględniając te nowe predykaty, typowy program czytający plik powinien wyglądać tak czytajplik :- open( dane.txt,read,x), current_input(ci), set_input(x), kododczytujacy, close(x), set_input(ci).

Czytanie z pliku Zmiana bieżącego strumienia wejściowego i wyjściowego odbywa się za pomocą predykatów set_input oraz set_output. Predykaty current_input oraz current_output pozwalają sprawdzić jak aktualnie ustawione są strumienie. Uwzględniając te nowe predykaty, typowy program czytający plik powinien wyglądać tak czytajplik :- open( dane.txt,read,x), current_input(ci), set_input(x), kododczytujacy, close(x), set_input(ci).

Czytanie z pliku Zmiana bieżącego strumienia wejściowego i wyjściowego odbywa się za pomocą predykatów set_input oraz set_output. Predykaty current_input oraz current_output pozwalają sprawdzić jak aktualnie ustawione są strumienie. Uwzględniając te nowe predykaty, typowy program czytający plik powinien wyglądać tak czytajplik :- open( dane.txt,read,x), current_input(ci), set_input(x), kododczytujacy, close(x), set_input(ci).

Czytanie z pliku Program czytajplik :- open( dane.txt,read,x), current_input(ci), set_input(x), kododczytujacy, close(x), set_input(ci). kododczytujacy :- read(term), obsluz(term). obsluz( end_of_file ) :-!. obsluz(term) :- write(term),nl,kododczytujacy. Plik dane.txt linia. 1. linia. 2. linia. 3. i. linia. 4. a. to. jest. ostatnia. linia. 5.

naiwne bąbelkowe przez wstawiania przez łączenie szybkie naiwne nsort(x, Y) :- permutacja(x, Y), uporzadkowana(y). usun(x,[x Xs],Xs). usun(x,[y Ys],[Y Zs]) :- usun(x,ys,zs). permutacja([], []). permutacja(xs, [Z Zs]) :- usun(z, Xs, Ys), permutacja(ys, Zs). uporzadkowana([x]). uporzadkowana([x, Y R]) :- X =< Y, uporzadkowana([y R]).

naiwne bąbelkowe przez wstawiania przez łączenie szybkie bąbelkowe bsort(list, Sorted) :- swap(list, List1),!, bsort(list1, Sorted). bsort(sorted, Sorted). swap([x,y Rest], [Y,X Rest]) :- X > Y. swap([z Rest], [Z Rest1]) :- swap(rest, Rest1).

naiwne bąbelkowe przez wstawiania przez łączenie szybkie przez wstawiania isort([],[]). isort([x Tail],Sorted) :- isort(tail, SortedTail), insert(x, SortedTail, Sorted). insert(x, [Y Sorted], [Y Sorted1]) :- X > Y,!, insert (X, Sorted, Sorted1). insert(x, Sorted, [X Sorted]).

naiwne bąbelkowe przez wstawiania przez łączenie szybkie przez łączenie msort([],[]). msort([x],[x]). msort(list,sorted):- List=[_,_ _],polowa(list,l1,l2), msort(l1,sorted1),msort(l2,sorted2), mymerge(sorted1,sorted2,sorted). mymerge([],l,l). mymerge(l,[],l) :- L\=[]. mymerge([x T1],[Y T2],[X T]) :- X=<Y,myMerge(T1,[Y T2],T). mymerge([x T1],[Y T2],[Y T]) :- X>Y,myMerge([X T1],T2,T). polowa(l,a,b):-polowa2(l,l,a,b). polowa2([],r,[],r). polowa2([_],r,[],r). polowa2([_,_ T],[X L],[X L1],R) :- polowa2(t,l,l1,r).

naiwne bąbelkowe przez wstawiania przez łączenie szybkie szybkie qsort([],[]). qsort([x Tail], Sorted) :- split(x, Tail, Small, Big),!, qsort(small, SortedSmall), qsort(big, SortedBig), lacz(sortedsmall, [X SortedBig], Sorted). split(h,[],[],[]). split(h,[x T],[X L],G) :- X=<H,split(H,T,L,G). split(h,[x T],L,[X G]) :- X>H,split(H,T,L,G). lacz([], L, L). lacz([x L1], L2, [X L3]) :- lacz(l1, L2, L3).