Programowanie w Logice



Podobne dokumenty
Prolog Wejście / wyjście r

Programowanie w logice

Statyczne i dynamiczne predykaty

Programowanie w logice

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

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

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

Programowanie w logice Prolog 2

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

Programowanie w logice Prolog 3

Program, który się uczy.

C++. Æwiczenia zaawansowane

Programowanie w Logice

Ghost in the machine

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

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

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

Zadanie nr 3: Sprawdzanie testu z arytmetyki

Programowanie w językach

Pliki wykład 2. Dorota Pylak

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

Wstęp do programowania. Wykład 1

Ćwiczenie 2 Wczytywanie i zapisywanie do plików tekstowych

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

Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi)

Programowanie w Logice Środowisko programowania i dialog z systemem (Lista 0)

Wyrażenia arytmetyczne

Pliki wykład 2 -przekazywanie strumieni do funkcji -funkcje get(char &) i getline(string)

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

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

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

Kier. MTR Programowanie w MATLABie Laboratorium

EGZAMIN MATURALNY Z INFORMATYKI

ISO/ANSI C dostęp do plików ISO/ANSI C. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików

Programowanie w Logice Struktury danych (Lista 2)

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013

Pliki. Operacje na plikach w Pascalu

Formatowane (tekstowe) wejście/wyjście. Binarne wejście/wyjście.

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30

Programowanie w Logice

PODSTAWY SZTUCZNEJ INTELIGENCJI

Programowanie w Logice Gramatyki metamorficzne. Przemysław Kobylański na podstawie [CM2003] i [SS1994]

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)

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

1. Wprowadzanie danych z klawiatury funkcja scanf

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

Przetwarzanie tekstu 2. Operacje na plikach tekstowych w systemie Linux

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

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

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33

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

Funkcje zawarte w bibliotece < io.h >

Wykład PASCAL - Pliki tekstowe

Wykład 11a. Składnia języka Klasycznego Rachunku Predykatów. Języki pierwszego rzędu.

ZADANIA Z PODSTAW PROGRAMOWANIA ZALICZENIE WARUNKOWE, SEMESTR ZIMOWY 16/17

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Podstawy Kompilatorów

ISO/ANSI C dostęp do plików ISO/ANSI C. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików

Wprowadzenie do Sztucznej Inteligencji Laboratorium lista 0.1 Elementy języka Prolog: fakty i zapytania. Przemysław Kobylański

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.

Wprowadzenie do logiki Zdania, cz. III Język Klasycznego Rachunku Predykatów

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

SED - Stream EDitor. edytor strumieniowy. Bogumił Konopka W-11/I-21 Politechnika Wrocławska

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

Komunikacja za pomocą potoków. Tomasz Borzyszkowski

Programowanie strukturalne

Programowanie w logice

Języki programowania deklaratywnego

Funkcje zawarte w bibliotece < io.h >

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

Język C++ zajęcia nr 1

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

Wstęp do Informatyki dla bioinformatyków

po ostatnim dopisaniu na standardowe wyjście (cout) powinien zostać wyprowadzony komunikat "Skonczylem";

Jerzy Nawrocki, Wprowadzenie do informatyki

Podstawy Programowania. Składnia wyrażeń i instrukcji, złożoności obliczeniowej, operacje wejścia i wyjścia, definicja

Podstawy pracy z edytorem tekstu. na przykładzie Open Office

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

EDYTOR TEKSTOWY VIM WYBRANE POLECENIA. Pracownia Informatyczna 5

Wstęp do programowania 2

Jerzy Nawrocki, Wprowadzenie do informatyki

Podstawy programowania skrót z wykładów:

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

Przekierowanie wejścia wyjścia:

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

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 7- sem.iii. M. Czyżak

Programowanie w logice

jest mocny, skoro da się w nim wyrazić nowe pojęcia; łatwiej przenieść go na nową platformę jest mniejszy.

Zad. 5: Układ równań liniowych liczb zespolonych

1 Pierwsze kroki w C++ cz.3 2 Obsługa plików

JĘZYK SHELL JEST PEŁNYM JĘZYKIEM PROGRAMOWANIA

Napisy w PHP. Drukowanie napisów instrukcją echo

Laboratorium nr 5: Mnożenie wektorów i macierzy

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

Wstęp do informatyki- wykład 8 Pętla while, do while,for -pętla w pętli- przykłady Operator rzutowania Manipulatory

Przeszukiwanie z nawrotami. Wykład 8. Przeszukiwanie z nawrotami. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279

Egzamin z Podstaw informatyki i programowania 2007/2008

Transkrypt:

Programowanie w Logice Wejście i wyjście Przemysław Kobylański na podstawie [CM2003]

Term czyta się ze standardowego wejścia predykatem read/1. Każdy wczytywany term powinien być zakończony kropką. Predykat jest uzgodniony tylko raz (kolejna próba zawodzi).?- read(x). : ala. X = ala.

Term pisze się na standardowe wyjście predykatem write/1. Predykat jest uzgodniony tylko raz (kolejna próba zawodzi). Aby przejść do nowej linii należy użyć predykatu nl/0.?- write(f(a, X)), X = b, write(f(a, X)). f(a,_g949)f(a,b) X = b.?- write(f(a, X)), nl, X = b, write(f(a, X)). f(a,_g949) f(a,b) X = b.

Do wydrukowania odstępu długości N spacji można użyć predykatu tab(n). pp ( [H T], I ) :!, J i s I +3, pp (H, J ), ppx (T, J ). pp (X, I ) : tab ( I ), write (X), nl. ppx ( [ ], _). ppx ( [H T], I ) : pp (H, I ), ppx (T, I ).?- pp([1, [2], 3, [4, 5]], 0). 1 2 3 4 5 true.

Term w postaci prefiksowej można wydrukować predykatem write_canonical/1 (w niektórych implementacjach display/1).?- write_canonical(a+b*x+c*x*x). +(+(a,*(b,x)),*(*(c,x),x)) true.

Drukując term predykatem write/1 należy mieć świadomość, że jeśli będziemy go odczytywać kiedyś predykatem read/1, to możemy otrzymać zupełnie inny term. Aby na wydruku postać termu była odpowiednia dla jego ponownego odczytania należy użyć predykatu writeq/1.?- write( Atom ). Atom true.?- writeq( Atom ). Atom true.

Do wydruku sformatowanego należy użyć predykatu format(format, LISTA_WARTOŚCI). W formacie można użyć specyfikacji formatu rozpoczynających się od znaku tyldy. Wybrane specyfikacje: t tabulacja n nowa linia w drukuje się predykatem write/1 k drukuje się predykatem write_canonical/1 q drukuje się predykatem writeq/1?- format( write: ~w~ncanonical: ~k~nquoted: ~q~n, [ Atom +2, Atom +2, Atom +2]). write: Atom+2 canonical: +( Atom,2) quoted: Atom +2 true.

Problem Napisz w Prologu cel, który wydrukuje swoją dokładną kopię.?- write( write(...

Problem (Rozwiązanie) W poniższym celu użyto predykatu format/2.?- X= X=~q,format(X,X).,format(X,X). X= X=~q,format(X,X).,format(X,X).

Czytanie i pisanie znaków Do czytania pojedynczego znaku ze standardowego wejścia można użyć predykatu get_char/1. Do pisania znaku można użyć predykatu put_char/1. Jeśli podczas wykonywania get_char(x) plik zakończył się, to pod zmienną X zostanie podstawiona stała end_of_file. Poniższy program czyta znaki i zamienia literki a na b: z a m i e n i a j : get_char (C), d a l e j (C ). d a l e j ( e n d _ o f _ f i l e ) :!. d a l e j ( a ) :!, write ( b ), z a m i e n i a j. d a l e j (X) : write (X), z a m i e n i a j.

Zmiana strumienia wyjściowego Bieżący strumień wyjściowy można zmienić na PLIK wywołując predykat tell(plik). Aby powrócić do poprzedniego strumienia wyjściowego należy wywołać predykat told.?- tell(ala), write(1), tell(ola), write(2), told, write(3), told, write(4). 4 true. W pliku ola znajdzie się 13 a w pliku ola znajdzie się 2.

Zmiana strumienia wejściowego Bieżący strumień wejściowy można zmienić na PLIK wywołując predykat see(plik). Aby powrócić do poprzedniego strumienia wejściowego należy wywołać predykat seen.?- see(ala), get_char(x), see(ola), get_char(y), seen, get_char(z), seen. X = 1, Y = 2, Z = 3.

Otwieranie i zamykanie strumieni Strumień otwiera się predykatem open(nazwa_pliku, TRYB, ZMIENNA). Otwarty strumień zostanie zunifikowany ze zmienną ZMIENNA. Możliwe tryby to read, write, append lub update. Jeśli STRUMIEŃ jest otwartym strumieniem, to zamyka się go predykatem close(strumień). Jednoargumentowe predykaty czytające i piszące mają swoje wersje dwuargumentowe (dodatkowym pierwszym argumentem jest strumień).?- open(ala, read, X), get_char(x, Y), get_char(x, Z), close(x). X = <stream>(0x7fbdca477880), Y = 1, Z = 3.