Programowanie w logice Prolog 3

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

Download "Programowanie w logice Prolog 3"

Transkrypt

1 Programowanie w logice Prolog 3

2 Predykaty wbudowane Predykaty wbudowane to predykaty, których definicje są z góry znane systemowi a zatem nie ma konieczności ich definiowania. Predykaty wbudowane mogą realizować zadania, których nie da się zaprogramować w czystym Prologu. mogą też ułatwiać pracę programiście.

3 Predykaty wbudowane var(x) Predykat var(x) jest spełniony jeżeli X jest zmienną nieukonkretnioną. Przykład:?- var(x). true.?- X=3,var(X). false.?- var(x). true.?- var(x),x=4. X = 4.

4 Predykaty wbudowane nonvar(x) Predykat nonvar(x) jest spełniony jeżeli X jest zmienną ukonkretnioną. Przykład:?- nonvar(x). false.?- X=3,nonvar(X). X = 3.?- nonvar(4). true.?- nonvar(abc). true.?- nonvar(abc),fail. false.

5 Predykaty wbudowane atom(x) Predykat atom(x) jest spełniony jeżeli X jest atomem. Przykład:?- atom(x). false.?- atom(23). false.?- atom(mama). true.?- atom('mama i tata'). true.?- atom("mama i tata"). false.?- X=24,atom(X). false.

6 Predykaty wbudowane number(x) Predykat number(x) jest spełniony jeżeli X jest liczbą. Przykład:?- number(x). false.?- X=1,number(X). X = 1.?- number(3). true.?- number(a). false.?- number('3'). false.?- atom('3'). true.

7 Predykaty wbudowane atomic(x) Cel atomic(x) nie zawodzi jeżeli X jest liczbą lub atomem. Przykład:?- atomic('3'). true.?- atomic(3). true.?- atomic('a b c'). true.?- atomic(x). false.?- X=3,atomic(X). X = 3.

8 Predykaty wbudowane atomic(x) Zauważmy, że predykat atomic(x) można zdefiniować wykorzystują atom i number: podobnie: atomic(x):-atom(x). atomic(x):-number(x). nonvar(x):-var(x),!,fail. nonvar(_).

9 Predykaty wbudowane listing(a) Predykat listing(a) służy do wypisania wszystkich klauzul predykatu o nazwie A. Przykład: lubi(tomek,ryby). lubi(tomek,ala). lubi(ala,x):-lubi(x,ksiazka).?- listing(lubi). lubi(tomek,ryby). lubi(tomek,ala). lubi(ala,a):-lubi(a,ksiazka). true.

10 Predykaty wbudowane asserta(x),assertz(x) Predykat asserta(x) służy do dodania klauzul na początku bazy danych. Zmienna X musi być ukonkretniona. Predykat assertz(x) służy do dodania klauzul na końcu bazy danych. Zmienna X musi być ukonkretniona. Przykład:?- ojciec(x,y). ERROR: toplevel: Undefined procedure: ojciec/2 (DWIM could not correct goal)

11 Predykaty wbudowane asserta(x),assertz(x) Przykład:?- asserta(ojciec(marek,pawel)). true.?- listing(ojciec). :- dynamic ojciec/2. ojciec(marek, pawel). true.?- asserta(ojciec(marek,kasia)). true.?- listing(ojciec). :- dynamic ojciec/2. ojciec(marek, kasia). ojciec(marek, pawel). true.

12 Predykaty wbudowane asserta(x),assertz(x) Przykład:?- assertz(ojciec(marek,julia)). true.?- listing(ojciec). :- dynamic ojciec/2. ojciec(marek, kasia). ojciec(marek, pawel). ojciec(marek, julia). true.

13 Predykaty wbudowane retract(x) Predykat retract(x) służy do usunięcia klauzul z bazy danych odpowiadających termowi X. Przykład:?- ojciec(x,y). X = pawel, Y = marek ; X = pawel, Y = kasia.?- retract(ojciec(pawel,kasia)). true.?- ojciec(x,y). X = pawel, Y = marek.

14 Predykaty wbudowane retract(x) Przykład:?- ojciec(x,y). X = pawel, Y = kasia ; X = pawel, Y = marek.?- retract(ojciec(x,y)). X = pawel, Y = kasia ; X = pawel, Y = marek.?- ojciec(x,y). false.

15 Czytanie i pisanie termów Do czytania termu służy predykat read. Jeżeli zmienna X jest nieukonkretniona wówczas cel read(x). odczyta następny term i ukonkretni nim zmienną X. Przykład:?- read(x). : marek. X = marek.?- read(x). : pawel. X = pawel.

16 Czytanie i pisanie termów Przykład: zdarzenie(1410,'bitwa pd Grunwaldem'). zdarzenie(1772,'pierwszy rozbiór Polski'). zdarzenie(1939,'wybuch II wojny swiatowej'). pytanie(y):-read(x),zdarzenie(x,y). Wówczas:?- pytanie(x). : X = 'Wybuch II wojny swiatowej'.

17 Czytanie i pisanie termów Do pisania termu służy predykat write. Jeżeli zmienna X jest ukonkretniona termem wówczas cel write(x). spowoduje wypisanie termu na ekranie. W przeciwnym razie (zmienna X nie jest ukonkretniona termem) wyświetlona zostanie zmienna z niepowtarzalnym numerem. Przykład:?- write(x). _G235 true.

18 Czytanie i pisanie termów Przykład: zdarzenie(1410,'bitwa pd Grunwaldem'). zdarzenie(1772,'pierwszy rozbiór Polski'). zdarzenie(1939,'wybuch II wojny swiatowej'). pytanie:- write('podaj rok:'), read(x), zdarzenie(x,y), write(y). Wówczas:?- pytanie. Podaj rok: Pierwszy rozbiór Polski true.

19 Wypisanie listy Klauzula wypiszliste(l) wypisuje listę L na ekranie w taki sposób, że każdy term pojawia się w innym wierszu: wypiszliste([]):-!. wypiszliste([x Y]):-write(X), nl,wypiszliste(y). Przykład:?-wypiszListe([1,3,'Sobota']). 1 3 Sobota true.

20 Czytanie i pisanie termów Przykład zdarzenie(1410,['bitwa pd Grunwaldem','Zmarl antypapiez Aleksander V']). zdarzenie(1772,['pierwszy rozbiór Polski','Bitwa morska pod Patras']). zdarzenie(1939,['wybuch II wojny swiatowej','powstala firma Hewlett- Packard','Podpisano pakt stalowy']). wypiszliste([]):-!. wypiszliste([x Y]):-write(X), nl,wypiszliste(y),!.

21 Czytanie i pisanie termów Przykład (cd) rok(x):- zdarzenie(x,y), wypiszliste(y). pytanie:- write('podaj rok: '), read(d), rok(d).

22 Czytanie i pisanie termów Przykład:?- pytanie. Podaj rok: Pierwszy rozbiór Polski Bitwa morska pod Patras true.?- pytanie. Podaj rok: false.?- pytanie. Podaj rok: 1939 Wybuch II wojny swiatowej Powstala firma Hewlett-Packard Podpisano pakt stalowy true.

23 Operacje na plikach W języku Prolog operacje na plikach opierają się na koncepcji strumienia. Strumieniem może być dowolny plik o zapisie sekwencyjnym (tekstowy). Terminal użytkownika też jest strumieniem. Dane są czytane ze strumienia wejściowego (domyślnie terminal użytkownika) i zapisywane w strumieniu wyjściowym (domyślnie terminal użytkownika).

24 Operacje na plikach W danej chwili realizowana może być operacja odczytu i zapisu odpowiednio z/do jednego strumienia wejściowego i jednego strumienia wyjściowego. strumień wejściowy terminal użytkownika strumień wyjściowy plik A program plik B

25 Czytanie i pisanie z/do plików W dotychczasowych przykładach wykorzystywany był domyślny strumień wejścia/wyjścia tzw. user_input oraz user_output. Prolog pozwala nam też czytać z plików i zapisywać do plików. Praca z plikami możliwa jest dzięki predykatom: open powiązanie strumienia z plikiem. close odłącznie strumienia od pliku.

26 Czytanie i pisanie z/do plików Argumenty predykatu open: nazwa pliku. tryb otwarcia - możliwe wartości: read otwarcie do odczytu istniejącego pliku; write utworzenie nowego pliku do zapisu (jeśli plik istnieje, zostanie usunięty); readwrite tryb zapisu i odczytu (jeśli plik istnieje to zostanie otworzony plik istniejący w przeciwnym razie plik zostanie utworzony); append istniejący plik zostanie otworzony do dopisywania.

27 Czytanie z plików Przykładowa struktura programu pracującego w plikiem: czytajplik :- open('dane.txt',read,x), kododczytujacy, close(x). X to zmienna, która zostanie związana ze strumieniem Aby w predykacie kododczytujacy móc odczytać (zapisać) dane z (do) pliku musimy wcześniej zmienić strumień wejściowy (wyjściowy). Zmiana bieżącego strumienia wejściowego i wyjściowego odbywa się za pomocą predykatów set_input oraz set_output.

28 Czytanie z plików Zmodyfikujmy nasz program: czytajplik :- open('dane.txt',read,x), current_input(ci), set_input(x), kododczytujacy, close(x), set_input(ci). CI to zmienna której wartością jest strumień związany z klawiaturą (linia numer 3). Jej wartość ustalona jest za pomocą predykatu current_input.

29 Czytanie z plików Brakujący predykat: kododczytujacy:- read(term), obsluz(term). obsluz(end_of_file):-!. obsluz(term):- write(term),nl, kododczytujacy. Predykat obsluz kończy działanie programu po napotkaniu końca pliku. W przeciwnym razie wypisuje term i wywołuje predykat kododczytujacy.

30 Czytanie z plików Ostatecznie nasz program ma postać: 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.

31 Czytanie z plików Przetestujmy nasz program na pliku: Wówczas: 1. abc. 2. def. 3. ghi. 4. jkl.?- czytajplik. 1 abc 2 def 3 ghi 4 jkl true.

32 Czytanie z plików Kropka musi się pojawić po każdym wyrazie: Wówczas: 1. abc. 2. def. 3. ghi 4. jkl.?- czytajplik. 1 abc 2 def 3 ERROR: dane.txt:3: Syntax error: Operator expected Brak kropki!

33 Czytanie z plików Jeszcze jedna modyfikacja: Wówczas:?- czytajplik. 1 abc 2 def 3 ghi 4 jkl true. 1. abc. 2. def. '3 ghi'. 4. jkl. Apostrofy!

34 Czytanie z plików No i ostatnia modyfikacja: Wówczas:?- czytajplik. 1 abc 2 def [51,32,103,104,105] 4 jkl true. 1. abc. 2. def. "3 ghi". 4. jkl. Cudzysłów!

35 Pisanie do pliku Program zapisujący do pliku: zapiszplik:- open('out.txt',write,x), current_output(co), set_output(x), kodzapisujacy, close(x), set_output(co). CO to zmienna której wartością jest strumień związany z ekranem (linia numer 3). Jej wartość ustalona jest za pomocą predykatu current_output.

36 Pisanie do pliku Brakujący predykat: kodzapisujacy:- read(x),\+(x='k'), write(x),nl, flush_output, kodzapisujacy. Predykat flush_output czyści strumień wyjściowy, w szczególności umożliwia pisanie od początku nowej linii. Wpisanie k. powoduje zakończenie pracy programu.

37 Pisanie do pliku Ostatecznie nasz program ma postać: zapiszplik:- open('out.txt',write,x), current_output(co), set_output(x), kodzapisujacy, close(x), set_output(co). kodzapisujacy:- read(x),\+(x='k'), write(x),nl, flush_output, kodzapisujacy.

38 Pisanie do pliku Przetestujmy nasz program:?- zapiszplik. : abc. : def. : ghj. : k. Zawartość pliku out.txt: abc def ghj

39 Pisanie do pliku Jeszcze jeden test: zapiszplik. : Pierwsza linijka. ERROR: Stream user_input:65:12 Syntax error: Operator expected UWAGA: Po każdym termie musi się pojawić kropka.

40 Pisanie do pliku No i ostatni test naszego programu:?- zapiszplik. : 'Pierwsza linijka'. : 'Druga linijka'. : 'Ostatnia linijka'. : k. false. Apostrofy! Zawartość pliku out.txt: Pierwsza linijka Druga linijka Ostatnia linijka

41 Pisanie do pliku Rozważmy teraz następujący program: zapiszdopliku(dane,gdzie) :- open(gdzie,append,x), current_output(co), set_output(x), kodzapisujacy(dane), close(x), set_output(co). kodzapisujacy(dane) :- write(dane),nl.

42 Czytanie z plików Test programu:?- zapiszdopliku('dane do pliku','jakisplik.txt'). true.?- zapiszdopliku('dane do pliku 2','jakisplik.txt'). true. Zawartość pliku out.txt: dane do pliku dane do pliku 2

43 Kryptarytmy Kryptarytm - zadanie szaradziarskie, w którym litery należy zastąpić cyframi tak, aby liczby, które w ten sposób powstaną, tworzyły poprawne działania. Każdej literze odpowiada jedna cyfra, różnym literom różne cyfry. Kryptarytmy można rozwiązać za pomocą odpowiedniego rozumowania bez rozważania wielu przykładów. Kryptarytm może posiadać więcej niż jedno rozwiązanie.

44 Kryptarytmy Przykłady:

45 Kryptarytmy Przykłady:

46 Kryptarytmy Katarzyna Lipszyc Kryptarytmy czyli arytmetyka słów

47 Kryptarytmy Chcemy w Prologu rozwiązać następujący kryptarytm: Przypomnijmy sobie jak działa system Prologu.

48 Powtórzenie Rozważmy zapytanie:?- lubi(tomek,ryby). Jeżeli zadajemy zapytanie Prolog przeszukuje bazę danych i szuka faktów pasujących do faktu podanego w zapytaniu. Dwa fakty pasują do siebie jeżeli mają te same predykaty (tak samo pisane) i te same argumenty. Jeżeli poszukiwanie zakończy się sukcesem Prolog odpowiada YES (TRUE), w przeciwnym razie NO (FALSE).

49 Powtórzenie Zapytanie może się składać z kilku celów np.:?- lubi(tomek,sport),lubi(ania,ksiazki). Prolog przeszukuje bazę danych i stara się osiągnąć cele w kolejności od lewej do prawej. Jeśli któryś z celów nie może zostać osiągnięty, wówczas następuje niepowodzenie. Prolog nawraca do poprzednio osiągniętego celu i próbuje osiągnąć go w inny sposób, który być może pozwoli osiągnąć także następne cele.

50 Kryptarytmy Wracamy do naszego problemu: Litery S,E,N,D,M,O,R,Y onaczają wybrane cyfry ze zbioru 0,1,2,3,4,5,6,7,8,9. Zatem lista [S,E,N,D,M,O,R,Y,A,B] musi być permutacją listy [0,1,2,3,4,5,6,7,8,9]. Zatem musi być osiągnięty następujący cel: permut([s,e,n,d,m,o,r,y,a,b],[0,1,2,3,4,5,6, 7,8,9]).

51 Permutacja listy Chcemy zdefiniować predykat: permut(l1,l2). Powyższa klauzula jest prawdziwa, jeśli lista L2 jest permutacją listy L1. Definicja : Jeżeli pierwsza lista (L1) jest pusta, to druga lista (L2) również jest pusta. Najpierw usuwamy element X, na pozostałej reszcie L1 dokonujemy permutacji i wstawiamy element X na początek poddanej już permutacji reszcie listy (czyli P).

52 Permutacja listy Formalna definicja: permut([],[]). permut(l,[x P]):-usun(X,L,L1),permut(L1,P). Przykład:?- permut([a,b,c],[a,c,b]). true.?- permut([a,b,c],[a,c,d]). false.?- permut([a,b,c],x). X = [a, b, c] ; X = [a, c, b] ; X = [b, a, c] ; X = [b, c, a] ; X = [c, a, b] ; X = [c, b, a] ; false.

53 Kryptarytmy Dowolną liczbę będziemy reprezentować za pomocą listy zawierającej kolejne cyfry liczby: 0 [] 3456 [3,4,5,6] [6,8,5,3,2,9,9] Musimy mieć predykat pozwalający konwertować listę reprezentującą liczbę na wartość tej liczby.

54 Kryptarytmy Jak taką wartość wyliczyć? Inaczej: Formalna definicja: [3,4,5,6] = 3*1000+4*100+5*10+6 [3,4,5,6] = ((10*3+4)*10+5)*10+6 wartosc([],0). wartosc([n],n). wartosc([h1,h2 T],N):-H3 is 10*H1+H2, wartosc([h3 T],N).

55 Kryptarytmy Przetestujmy:?- wartosc([1,2,3],121). false.?- wartosc([1,2,3],123). true.?- wartosc([],x). X = 0.?- wartosc([1,2,3,4,5],x). X = ?- wartosc([1,2,3,4,5,2,3,4],x). X =

56 Kryptarytmy Potrzebujemy jeszcze predykat suma/3, który pozwoli dodać kilka liczb (reprezentowanych listami i umieszczonych na liście będącej pierwszym argumentem) do liczby będącej drugim argumentem tzn.:?- suma([[1,2,3]],5,x). X = 128.?- suma([[1,2,3],[4,5,1]],5,x). X = 579.?- suma([[1,2,3],[4,5,1],[5,6,9,6]],4,x). X = 6274.

57 Kryptarytmy Formalna definicja: suma([],x,x).? Propozycja rozwiązania: Pobieramy pierwszą liczbę z listy (czyli głowę listy) Obliczamy wartość tej liczby Dodajemy tę wartość do drugiej liczby i zapisujemy w drugim argumencie.

58 Kryptarytmy Otrzymujemy zatem następujące cele: perm([s,e,n,d,m,o,r,y,a,b],[0,1,2,3,4,5,6,7,8,9]), suma([[s,e,n,d], [M,O,R,E]],Z), wartosc([m,o,n,e,y],z)

59 Kryptarytmy Nasz docelowy predykat możemy zdefiniować następująco: kryptarytm([s,e,n,d,m,o,r,y,a,b]):- perm([s,e,n,d,m,o,r,y,a,b],[0,1,2,3,4,5,6,7,8,9]), suma([[s,e,n,d], [M,O,R,E]],Z), wartosc([m,o,n,e,y],z). kryptarytm([s,e,n,d,m,o,r,y]):- kryptarytm([s,e,n,d,m,o,r,y,_,_]).

60 Kryptarytmy Sprawdzamy:?- kryptarytm([s,e,n,d,m,o,r,y]). S = 6, E = 4, N = 1, D = 9, M = 0, O = 7, R = 2, Y = 3. SEND MORE MONEY 07143

61 Grafy Rozważmy następujący graf: Chcemy napisać program, który dla dwóch zadanych wierzchołków wypisze nam możliwe ścieżki między nimi.

62 Grafy Graf opisujemy następująco: krawedz(1,2). krawedz(2,3). krawedz(1,5). krawedz(4,5). krawedz(5,2). krawedz(2,4). krawedz(3,1) Wierzchołki są połączone jeżeli istnieje między nimi krawędź: polacz(x,y):-krawedz(x,y);krawedz(y,x). alternatywa

63 Akumulatory Często zdarza się, że w celu uzyskania wyniku konieczne jest przeglądanie struktur prologowych. Podczas analizy takich struktur mogą pojawić się wyniki pośrednie. Wyniki te możemy zapisać w dodatkowym argumencie predykatu, który nazywamy akumulatorem.

64 Grafy Wykorzystamy następujące predykaty: odwroc odwrócenie listy akumulator odwroc([x Y],Z,W):-odwroc(Y,[X Z],W). odwroc([],x,x). odwroc(a,r):-odwroc(a,[],r). Przykład:?- odwroc([2,5,7],[],a). A = [7,5,2].?- odwroc([2,5,7],a). A = [7,5,2]. odwroc([2,5,7],[],a). odwroc([5,7],[2],a). odwroc([7],[5,2],a). odwroc([],[7,5,2],a).

65 Grafy Wykorzystamy następujące predykaty: nalezy sprawdzenie czy element należy do listy nalezy(x,[x _]). nalezy(x,[_ R]):-nalezy(X,R). Przykład:?- nalezy(1,[1,4,5]). true ; false.?- nalezy(7,[1,4,5]). false.?- nalezy(x,[1,5]). X = 1 ; X = 5 ; false.

66 Grafy Wykorzystamy następujące predykaty: travel akumulator travel(a,b,p,[b P]):-polacz(A,B). travel(a,b,odwiedzone,path):- polacz(a,c), C \== B, not(nalezy(c,odwiedzone)), travel(c,b,[c Odwiedzone],Path). Przykład:?- travel(1,2,a,b). B = [2 A] ; false. krawedz(1,2). krawedz(2,3). krawedz(3,4).

67 Grafy - przykład Przykład: travel(a,b,p,[b P]):-polacz(A,B). travel(a,b,odwiedzone,path):- polacz(a,c), C \== B, not(nalezy(c,odwiedzone)), travel(c,b,[c Odwiedzone],Path) ?- travel(1,4,[],a). A = [4, 3, 2]?- travel(1,4,[1],a). A = [4, 3, 2, 1] ; false. 4?- travel(2,4,[1,2],a). A = [4, 3, 1, 2] ; false.

68 Grafy - przykład Ostatnim wykorzystanym predykatem jest: sciezka sciezka(a,b,sciezka) :- travel(a,b,[a],q), odwroc(q,sciezka). Przykład:?- sciezka(1,3,a). A = [1, 2, 3] ; false.?- sciezka(1,5,a). false

69 Grafy - przykład Przykład:?- sciezka(4,3,x). X = [4, 5, 2, 3] ; X = [4, 5, 2, 1, 3] ; X = [4, 5, 1, 3] ; X = [4, 5, 1, 2, 3] ; X = [4, 2, 3] ; X = [4, 2, 1, 3] ; X = [4, 2, 5, 1, 3] ; false

70 Grafy - przykład Przykład:?- sciezka(4,2,x). X = [4, 5, 1, 2] ; X = [4, 3, 2] ; false ?- sciezka(4,2,x). X = [4, 5, 2] ; X = [4, 5, 1, 2] ; X = [4, 3, 2] ; false

71 Koniec

Prolog Wejście / wyjście r

Prolog Wejście / wyjście r Prolog Wejście / wyjście 16.06.2016r Najprostszym sposobem pobierania danych od użytkownika jest odczytywanie informacji wprowadzonych za pomocą urządzenia standardowego wejścia jakim zwykle jest klawiatura.

Bardziej szczegółowo

Programowanie w logice

Programowanie w logice 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

Bardziej szczegółowo

Programowanie w logice

Programowanie w logice Programowanie w logice PROLOG cz.3 Predykat sprawdzający, czy podana lista stanowi początek innej listy: poczatek([],[_ _]). poczatek([h1 T1], [H2 T2]) :- H1 = H2, poczatek(t1,t2). ------------------------------------------------------------------------

Bardziej szczegółowo

Programowanie w logice Prolog 2

Programowanie w logice Prolog 2 Programowanie w logice Prolog 2 Listy Lista to uporządkowany ciąg elementów. Elementami listy mogą być dowolne terminy: stałe, zmienne i struktury W Prologu listę zapisujemy następująco: Przykłady [element1,element2,,elementn]

Bardziej szczegółowo

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.

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. Prolog Prolog Programowanie w Prologu składa się z: 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. Zadawania zapytao o

Bardziej szczegółowo

Programowanie w logice Prolog 1

Programowanie w logice Prolog 1 Programowanie w logice Prolog 1 Prolog - zastosowania Zastosowania: relacyjne bazy danych. przetwarzanie języka naturalnego. logistyka. analiza struktur biochemicznych. wspomaganie projektowania. sztuczna

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

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

PROLOG: WEJŚCIE/WYJŚCIE I FUNKCJE WBUDOWANE. Autor: Mateusz Chojnacki 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

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

Programowanie w Logice

Programowanie w Logice 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

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

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

Dana jest baza: kobieta(katarzyna). kobieta(anna). kobieta(maria). kobieta(marianna). kobieta(marta). Zdefiniujemy predykat kobiety/0 następująco: STEROWANIE PROCESEM WNIOSKOWANIA. Predykat true/0 fail/0 cut/0 lub! not( W) lub \+W repeat/0 Objaśnienie zawsze spełniony, deterministyczny zawsze zawodzi, deterministyczny odcięcie; zawsze spełniony spełniony,

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

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

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

Program dopisujący gwiazdkę na końcu pliku tekstowego o nazwie podanej przez uŝytkownika oraz wypisujący zawartość tego pliku. Program 7 Program dopisujący gwiazdkę na końcu pliku tekstowego o nazwie podanej przez uŝytkownika oraz wypisujący zawartość tego pliku. #include #include using namespace std; int main()

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

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

Pliki. Operacje na plikach w Pascalu

Pliki. Operacje na plikach w Pascalu Pliki. Operacje na plikach w Pascalu ścieżka zapisu, pliki elementowe, tekstowe, operacja plikowa, etapy, assign, zmienna plikowa, skojarzenie, tryby otwarcia, reset, rewrite, append, read, write, buforowanie

Bardziej szczegółowo

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

PASCAL. Etapy pisania programu. Analiza potrzeb i wymagań (treści zadania) Opracowanie algorytmu Kodowanie Kompilacja Testowanie Stosowanie PASCAL Język programowania wysokiego poziomu Opracowany przez Mikołaja Wirtha na początku lat 70 XX wieku Prosty, z silną kontrolą poprawności Stosowany prawie wyłącznie na uczelniach do nauki programowania

Bardziej szczegółowo

Programowanie w Logice

Programowanie w Logice Programowanie w Logice Działanie Prologu Przemysław Kobylański na podstawie [CM2003] Składnia Programy Prologu składają się z termów. Term to stała, zmienna lub struktura (term złożony). Term zapisuje

Bardziej szczegółowo

Przedrostkowa i przyrostkowa inkrementacja i dekrementacja

Przedrostkowa i przyrostkowa inkrementacja i dekrementacja Część VIII C++ Przedrostkowa i przyrostkowa inkrementacja i dekrementacja W poprzednim ćwiczeniu operatory inkrementacji i dekrementacji występowały w wersji przyrostkowej. Istnieje inny sposób zapisu

Bardziej szczegółowo

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

Nazwa implementacji: Nauka języka Python pętla for. Autor: Piotr Fiorek Nazwa implementacji: Nauka języka Python pętla for Autor: Piotr Fiorek Opis implementacji: Poznanie innego rodzaju pętli, jaką jest pętla for w języku Python. Składnia pętli for jest następująca: for

Bardziej szczegółowo

Wykład PASCAL - Pliki tekstowe

Wykład PASCAL - Pliki tekstowe Podstawy programowania Wykład PASCAL - Pliki tekstowe 1 dr Artur Bartoszewski - Podstawy prograowania, sem. 1- WYKŁAD Rodzaje plików Dane przechowywane w pliku mogą mieć reprezentację binarną (taką samą,

Bardziej szczegółowo

Podstawy i języki programowania

Podstawy i języki programowania Podstawy i języki programowania Laboratorium 8 - wprowadzenie do obsługi plików tekstowych i wyjątków mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 11 grudnia 2017 1 / 34 mgr inż. Krzysztof

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 Logice Przykłady programów. Przemysław Kobylański

Programowanie w Logice Przykłady programów. Przemysław Kobylański Programowanie w Logice Przykłady programów Przemysław Kobylański Język Imperator 1 jest prostym językiem imperatywnym. Jego składnię opisuje poniższa gramatyka BNF: PROGRAM ::= PROGRAM ::= INSTRUKCJA ;

Bardziej szczegółowo

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

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst. Schematy blokowe I Jeżeli po schematach blokowych będzie używany język C, to należy używać operatorów: '&&', ' ', '!=', '%' natomiast jeśli Ruby to 'and', 'or', '%', '!='. 1. Dostępne bloki: a) początek:

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

Pliki wykład 2. Dorota Pylak

Pliki wykład 2. Dorota Pylak Pliki wykład 2 Dorota Pylak Struktura programu działającego na plikach 1) Dyrektywa preprocesora #include //zapewnia dostęp do strumieni ifstream i ofstream 2) deklaracja zmiennej (strumienia)

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p. Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni Wykład 6 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Wskaźnik do pliku Dostęp do pliku: zapis, odczyt,

Bardziej szczegółowo

Pliki. Informacje ogólne. Obsługa plików w języku C

Pliki. Informacje ogólne. Obsługa plików w języku C Pliki Informacje ogólne Plik jest pewnym zbiorem danych, zapisanym w systemie plików na nośniku danych (np. dysku twardym, pendrive, płycie DVD itp.). Może posiadać określone atrybuty, a odwołanie do niego

Bardziej szczegółowo

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

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania Wykład: 9 Łańcuchy znaków 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Rodzaje plików Dane przechowywane w pliku mogą mieć reprezentację binarną (taką samą, jak

Bardziej szczegółowo

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

Prolog (Pro-Logic) Programowanie w Logice. Dr inż. Piotr Urbanek Prolog (Pro-Logic) Programowanie w Logice Dr inż. Piotr Urbanek Do czego służy ProLog? Używany w wielu systemach informatycznych związanych z: logiką matematyczną (automatyczne dowodzenie twierdzeń); przetwarzaniem

Bardziej szczegółowo

Programowanie w Logice

Programowanie w Logice Programowanie w Logice Przeszukiwanie rozwiązań Przemysław Kobylański Generowanie wszystkich rozwiązań Prolog nie tylko potrafi sprawdzić czy dana spełnia warunek ale również potrafi wygenerować wszystkie

Bardziej szczegółowo

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

Przeszukiwanie z nawrotami. Wykład 8. Przeszukiwanie z nawrotami. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279 Wykład 8 J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279 sformułowanie problemu przegląd drzewa poszukiwań przykłady problemów wybrane narzędzia programistyczne J. Cichoń, P. Kobylański

Bardziej szczegółowo

Zadanie nr 3: Sprawdzanie testu z arytmetyki

Zadanie nr 3: Sprawdzanie testu z arytmetyki Zadanie nr 3: Sprawdzanie testu z arytmetyki 1 Cel zadania Zadanie wymusza praktyczne przećwiczenia dostosowania formatu i formy wyświetlania informacji dla własnych typów danych. Ma ono pokazać potencjalne

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

Znaki globalne w Linuxie

Znaki globalne w Linuxie Znaki globalne w Linuxie * reprezentuje jeden lub wiele znaków (wild-card character)? reprezentuje dokładnie jeden znak (wild-card character) [abcde] reprezentuje dokładnie jeden znak z wymienionych [a-e]

Bardziej szczegółowo

INFORMATYKA Studia Niestacjonarne Elektrotechnika

INFORMATYKA Studia Niestacjonarne Elektrotechnika INFORMATYKA Studia Niestacjonarne Elektrotechnika Wydział Elektrotechniki i Informatyki dr inż. Michał Łanczont Wydział Elektrotechniki i Informatyki p. E419 tel. 81-538-42-93 m.lanczont@pollub.pl http://lanczont.pollub.pl

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

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

SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL Wprowadzenie do SQL SQL - Structured Query Language -strukturalny język zapytań Światowy standard przeznaczony do definiowania, operowania i sterowania danymi w relacyjnych bazach danych Powstał w firmie

Bardziej szczegółowo

1 Automaty niedeterministyczne

1 Automaty niedeterministyczne Szymon Toruńczyk 1 Automaty niedeterministyczne Automat niedeterministyczny A jest wyznaczony przez następujące składniki: Alfabet skończony A Zbiór stanów Q Zbiór stanów początkowych Q I Zbiór stanów

Bardziej szczegółowo

Pętla for. Matematyka dla ciekawych świata -19- Scilab. for i=1:10... end. for k=4:-1:1... end. k=3 k=4. k=1. k=2

Pętla for. Matematyka dla ciekawych świata -19- Scilab. for i=1:10... end. for k=4:-1:1... end. k=3 k=4. k=1. k=2 Pętle wielokrotne wykonywanie ciągu instrukcji. Bardzo często w programowaniu wykorzystuje się wielokrotne powtarzanie określonego ciągu czynności (instrukcji). Rozróżniamy sytuacje, gdy liczba powtórzeń

Bardziej szczegółowo

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

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 12 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Obsługa łańcuchów znakowych getchar(), putchar()

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

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

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

Instrukcja do laboratorium Systemów Operacyjnych. (semestr drugi) Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi) Ćwiczenie trzecie (jedne zajęcia) Temat: Potoki i łącza nazwane w Linuksie. Opracowanie: dr in ż. Arkadiusz Chrobot Wprowadzenie 1. Komunikacja

Bardziej szczegółowo

Rekurencja (rekursja)

Rekurencja (rekursja) Rekurencja (rekursja) Rekurencja wywołanie funkcji przez nią samą wewnątrz ciała funkcji. Rekurencja może być pośrednia funkcja jest wywoływana przez inną funkcję, wywołaną (pośrednio lub bezpośrednio)

Bardziej szczegółowo

BASH - LINIA POLECEŃ. Bioinformatyka 2018/2019

BASH - LINIA POLECEŃ. Bioinformatyka 2018/2019 BASH - LINIA POLECEŃ Bioinformatyka 2018/2019 PODSTAWOWE DEFINICJE Linux system operacyjny, które oferuje kompletne środowisko programistyczne Powłoka interfejs wiersza poleceń zapewniający komunikację

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

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

Pracownia Informatyczna I ORGANIZACJA ZAJĘĆ, ZASADY ZALICZENIA

Pracownia Informatyczna I ORGANIZACJA ZAJĘĆ, ZASADY ZALICZENIA Pracownia Informatyczna I ORGANIZACJA ZAJĘĆ, ZASADY ZALICZENIA 1 Organizacja zajęć ½ semestru mgr Magda Mielczarek Katedra Genetyki, pokój nr 14 e-mail: magda.mielczarek@up.wroc.pl tel: 71-320-57-51 Slajdy

Bardziej szczegółowo

PRACOWNIA INFORMATYCZNA BASH - PODSTAWOWE INFORMACJE

PRACOWNIA INFORMATYCZNA BASH - PODSTAWOWE INFORMACJE PRACOWNIA INFORMATYCZNA BASH - PODSTAWOWE INFORMACJE Magda Mielczarek Pracownia Informatyczna 2015/2016 1 Podstawowe definicje Linux system operacyjny, które oferuje kompletne środowisko programistyczne

Bardziej szczegółowo

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

Programowanie w Logice Gramatyki metamorficzne. Przemysław Kobylański na podstawie [CM2003] i [SS1994] Programowanie w Logice Gramatyki metamorficzne Przemysław Kobylański na podstawie [CM2003] i [SS1994] Gramatyki bezkontekstowe Gramatyką bezkontekstową jest uporządkowana czwórka G = Σ, N, S, P, gdzie

Bardziej szczegółowo

Projekty zaliczeniowe Podstawy Programowania 2012/2013

Projekty zaliczeniowe Podstawy Programowania 2012/2013 Projekty zaliczeniowe Podstawy Programowania 2012/2013 0. Zasady ogólne W skład projektu wchodzą następujące elementy: dokładny opis rozwiązywanego problemu opis słowny rozwiązania problemu wraz z pseudokodami

Bardziej szczegółowo

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists()

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists() Paweł Gmys PHP strona 1 Lekcja 10 Uprawnienia Aby skrypt PHP mógł odwołać się do pliku, musi mieć odpowiednie uprawnienia. Szczegóły są zależne od serwera. Najczęściej chyba skrypt ma uprawnienia takie,

Bardziej szczegółowo

Programowanie w językach

Programowanie w językach Programowanie w językach wysokiego poziomu Obsługa plików za pomocą strumieni Elektronika i Telekomunikacja, semestr III rok akademicki 2013/2014 dr inż. Paweł Myszkowski Plan zajęć a) otwieranie i zamykanie

Bardziej szczegółowo

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy ALGORYTMY 1. Podstawowe definicje Algorytm (definicja nieformalna) to sposób postępowania (przepis) umożliwiający rozwiązanie określonego zadania (klasy zadań), podany w postaci skończonego zestawu czynności

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

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

Zad. 5: Układ równań liniowych liczb zespolonych Zad. 5: Układ równań liniowych liczb zespolonych 1 Cel ćwiczenia Wykształcenie zdolności abstrahowania operacji arytmetycznych od konkretnych typów. Unaocznienie problemów związanych z programowaniem uogólnionym

Bardziej szczegółowo

Pliki. Informacje ogólne. Obsługa plików w języku C

Pliki. Informacje ogólne. Obsługa plików w języku C Pliki Informacje ogólne Plik jest pewnym zbiorem danych, zapisanym w systemie plików na nośniku danych. Może posiadać określone atrybuty, a odwołanie do niego odbywa się poprzez nazwę. Każdy plik ma skończoną

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

Autor: Joanna Karwowska

Autor: Joanna Karwowska Autor: Joanna Karwowska Jeśli pobieramy dane z więcej niż jednej tabeli, w rzeczywistości wykonujemy tak zwane złączenie. W SQL istnieją instrukcje pozwalające na formalne wykonanie złączenia tabel - istnieje

Bardziej szczegółowo

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

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 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 obrębie skryptu. Wyrażenia include() i require() są niemal

Bardziej szczegółowo

BASH - WPROWADZENIE Bioinformatyka 4

BASH - WPROWADZENIE Bioinformatyka 4 BASH - WPROWADZENIE Bioinformatyka 4 DLACZEGO BASH? Praca na klastrach obliczeniowych Brak GUI Środowisko programistyczne Szybkie przetwarzanie danych Pisanie własnych skryptów W praktyce przetwarzanie

Bardziej szczegółowo

Arytmetyka liczb binarnych

Arytmetyka liczb binarnych Wartość dwójkowej liczby stałoprzecinkowej Wartość dziesiętna stałoprzecinkowej liczby binarnej Arytmetyka liczb binarnych b n-1...b 1 b 0,b -1 b -2...b -m = b n-1 2 n-1 +... + b 1 2 1 + b 0 2 0 + b -1

Bardziej szczegółowo

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

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013 Laboratorium Podstaw Informatyki Strona 1 Laboratorium Podstaw Informatyki Kierunek Elektrotechnika Obsługa plików Kraków 2013 Laboratorium Podstaw Informatyki Strona 2 Obsługa plików Zanim będziemy mogli

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

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

Pomorski Czarodziej 2016 Zadania. Kategoria C

Pomorski Czarodziej 2016 Zadania. Kategoria C Pomorski Czarodziej 2016 Zadania. Kategoria C Poniżej znajduje się 5 zadań. Za poprawne rozwiązanie każdego z nich możesz otrzymać 10 punktów. Jeżeli otrzymasz za zadanie maksymalną liczbę punktów, możesz

Bardziej szczegółowo

MATLAB tworzenie własnych funkcji

MATLAB tworzenie własnych funkcji MATLAB tworzenie własnych funkcji Definiowanie funkcji anonimowych Własne definicje funkcji możemy tworzyć bezpośrednio w Command Window, są to tzw. funkcje anonimowe; dla funkcji jednej zmiennej składnia

Bardziej szczegółowo

Część 4 życie programu

Część 4 życie programu 1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część

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

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy ALGORYTMY 1. Podstawowe definicje Algorytm (definicja nieformalna) to sposób postępowania (przepis) umożliwiający rozwiązanie określonego zadania (klasy zadań), podany w postaci skończonego zestawu czynności

Bardziej szczegółowo

Wprowadzenie do Sztucznej Inteligencji Laboratorium lista 0.2 Elementy języka Prolog: reguły i rekurencja. Przemysław Kobylański

Wprowadzenie do Sztucznej Inteligencji Laboratorium lista 0.2 Elementy języka Prolog: reguły i rekurencja. Przemysław Kobylański Wprowadzenie do Sztucznej Inteligencji Laboratorium lista 0.2 Elementy języka Prolog: reguły i rekurencja Przemysław Kobylański Część I Wprowadzenie 1 Reguły Przypomnijmy z poprzedniej listy zadań fakty

Bardziej szczegółowo

Prezentacja do pobranie:

Prezentacja do pobranie: Prezentacja do pobranie: www.barkaf.cba.pl/prezentacja.rar 1 Prolog programowanie ROZDZIAŁ 1: WPROWADZENIE ROZDZIAŁ 2: PROLOG Z BLISKA NA PODSTAWIE: PROLOG. PROGRAMOWANIE- W. F. CLOCKSIN, C. S. MELLISH

Bardziej szczegółowo

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2) Wstęp do informatyki stęp do informatyki Polecenia (cz.2) Lista procesów top Pokaż listę procesów polecenie interaktywne Procesy Uruchamianie w tle. shell nie czeka na zakończenie procesu, można wydawać

Bardziej szczegółowo

Strumienie, pliki. Sortowanie. Wyjątki.

Strumienie, pliki. Sortowanie. Wyjątki. Strumienie, pliki. Sortowanie. Wyjątki. Serializacja Zapisuje całą klasę Plik binarny Delimiter nieokreślony Nie da się podglądać Pliki tekstowe Zapisuje wybrane informacje Plik tekstowy Delimiter ustawiamy

Bardziej szczegółowo

Zadanie 1. Suma silni (11 pkt)

Zadanie 1. Suma silni (11 pkt) 2 Egzamin maturalny z informatyki Zadanie 1. Suma silni (11 pkt) Pojęcie silni dla liczb naturalnych większych od zera definiuje się następująco: 1 dla n = 1 n! = ( n 1! ) n dla n> 1 Rozpatrzmy funkcję

Bardziej szczegółowo

1 Powtórzenie wiadomości

1 Powtórzenie wiadomości 1 Powtórzenie wiadomości Zadanie 1 Napisać program, który w trybie dialogu z użytkownikiem przyjmie liczbę całkowitą, a następnie wyświetli informację czy jest to liczba parzysta czy nieparzysta oraz czy

Bardziej szczegółowo

2. Łańcuchy tekstowe w PHP

2. Łańcuchy tekstowe w PHP 2. Łańcuchy tekstowe w PHP 2.1 Apostrofy i cudzysłowy Łańcuch tekstowy w języku PHP to ciąg znaków ograniczony apostrofami (') lub cudzysłowami ("). Te znaki ograniczające nie powinny być traktowane wymiennie,

Bardziej szczegółowo

Dedukcyjne bazy danych i rekursja

Dedukcyjne bazy danych i rekursja Dedukcyjne bazy danych i rekursja Wykład z baz danych dla studentów matematyki 27 maja 2017 Bazy danych z perspektywy logiki Spojrzenie na bazy danych oczami logika pozwala jednolicie opisać szereg pojęć.

Bardziej szczegółowo

Kolejki FIFO (łącza nazwane)

Kolejki FIFO (łącza nazwane) Kolejki FIFO (łącza nazwane) Systemy Operacyjne 2 laboratorium Mateusz Hołenko 6 listopada 2011 Plan zajęć 1 Łącza w systemie Linux kolejki FIFO vs. potoki specyfika łączy nazwanych schemat komunikacji

Bardziej szczegółowo

*W uproszczeniu: jest dziewięciu sędziów przyznających po dwie noty: za wartość techniczną i artystyczną (skala od 0.0 do 6.0)

*W uproszczeniu: jest dziewięciu sędziów przyznających po dwie noty: za wartość techniczną i artystyczną (skala od 0.0 do 6.0) Tablice Mamy napisać program obliczający średnią ocenę w łyżwiarstwie figurowym W uproszczeniu: jest dziewięciu sędziów przyznających po dwie noty: za wartość techniczną i artystyczną (skala od 0.0 do

Bardziej szczegółowo

Metoda tabel semantycznych. Dedukcja drogi Watsonie, dedukcja... Definicja logicznej konsekwencji. Logika obliczeniowa.

Metoda tabel semantycznych. Dedukcja drogi Watsonie, dedukcja... Definicja logicznej konsekwencji. Logika obliczeniowa. Plan Procedura decyzyjna Reguły α i β - algorytm Plan Procedura decyzyjna Reguły α i β - algorytm Logika obliczeniowa Instytut Informatyki 1 Procedura decyzyjna Logiczna konsekwencja Teoria aksjomatyzowalna

Bardziej szczegółowo

Pliki wykład 2. Dorota Pylak

Pliki wykład 2. Dorota Pylak Pliki wykład 2 Dorota Pylak Struktura programu działającego na plikach 1) Dyrektywa preprocesora #include //zapewnia dostęp do strumieni ifstream i ofstream 2) deklaracja zmiennej (strumienia)

Bardziej szczegółowo

Bloki anonimowe w PL/SQL

Bloki anonimowe w PL/SQL Język PL/SQL PL/SQL to specjalny język proceduralny stosowany w bazach danych Oracle. Język ten stanowi rozszerzenie SQL o szereg instrukcji, znanych w proceduralnych językach programowania. Umożliwia

Bardziej szczegółowo

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb.

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb. 1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb. Algorytmy przeszukiwania w głąb i wszerz są najczęściej stosowanymi algorytmami przeszukiwania. Wykorzystuje się je do zbadania istnienia połączenie

Bardziej szczegółowo

Podstawy JavaScript ćwiczenia

Podstawy JavaScript ćwiczenia Podstawy JavaScript ćwiczenia Kontekst:

Bardziej szczegółowo

Wykład 4. Tablice. Pliki

Wykład 4. Tablice. Pliki Informatyka I Wykład 4. Tablice. Pliki Dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Tablice Tablica uporządkowany zbiór elementów określonego typu Każdy element tablicy posiada

Bardziej szczegółowo

Podstawowe I/O Liczby

Podstawowe I/O Liczby Podstawowe I/O Liczby Informatyka Jolanta Bachan Implementacja algorytmów, cd. I/O: Keyboard in, screen out, no loops Jolanta Bachan 2 Implementacja algorytmów, cd. I/O: Keyboard in, screen out, no loops

Bardziej szczegółowo

Ćwiczenie 2 Wczytywanie i zapisywanie do plików tekstowych

Ćwiczenie 2 Wczytywanie i zapisywanie do plików tekstowych Ćwiczenie 2 Wczytywanie i zapisywanie do plików tekstowych 1. Wczytywanie z plików tekstowych. Wczytywanie z pliku tekstowego wymaga: a) skojarzenia zmiennej plikowej z plikiem procedura assignfile b)

Bardziej szczegółowo

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

Program wykonujący operację na plikach powinien zachować schemat działania zapewniający poprawną pracę: Rozdział 1 Obsługa plików W językach C pliki powiązane są ze strumieniami i pracuje się na nich podobnie jak na innych strumieniach. W języku C do operacji na plikach służą funkcje z biblioteki stdio.h,

Bardziej szczegółowo

Języki programowania Prolog

Języki programowania Prolog 1. Środowisko ECL i PS e Języki programowania Prolog zadanie projektowe nr. 3 (2016/17) T. Goluch W projekcie wykorzystane będzie środowisko ECL i PS e. Dostępne jest ono pod adresem: http://eclipseclp.org/.

Bardziej szczegółowo

Programowanie w logice Wykład z baz danych dla

Programowanie w logice Wykład z baz danych dla Programowanie w logice Wykład z baz danych dla studentów matematyki 18 maja 2015 Programowanie w logice Programowanie w logice to podejście do programowania, w którym na program patrzymy nie jak na opis

Bardziej szczegółowo

Zakład Systemów Rozproszonych

Zakład Systemów Rozproszonych Zakład Systemów Rozproszonych Politechnika Rzeszowska Moduł 5: Wybrane programy użytkowe Edytor Vi Edytor Vi uruchamiany jest w oknie terminala. Przy jego pomocy możemy dokonywać następujących operacji:

Bardziej szczegółowo

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Temat 1: Podstawowe pojęcia: program, kompilacja, kod Temat 1: Podstawowe pojęcia: program, kompilacja, kod wynikowy. Przykłady najprostszych programów. Definiowanie zmiennych. Typy proste. Operatory: arytmetyczne, przypisania, inkrementacji, dekrementacji,

Bardziej szczegółowo