Odczytywanie danych w różnych formatach

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

Download "Odczytywanie danych w różnych formatach"

Transkrypt

1 Odczytywanie danych w różnych formatach

2 Problem INPUT-a w wolnej formie W tym rozdziale pokażemy, jak sprawić, aby Prolog przeczytał dane w dowolnym wybranym formacie; na końcu przedstawimy program w Prologu, który odczytuje arkusz kalkulacyjny. Ilość uwagi poświęconej temu działowi będzie zależała od potrzeb. Nie ma tu logicznej teorii programowania - tylko praktyczne algorytmy. Jeśli jesteś eksperymentatorem AI, możesz podejść do niego z lekkim dystansem, powracając później jeśli zajdzie taka potrzeba. Lecz jeśli jesteś producentem oprogramowania komercyjnego, może to być rozdział który uczyni Prolog użytecznym dla twojej aplikacji. Procedury określone w niniejszym rozdziale nie są przeznaczone do pracy na oślep. Są tu zawarte pouczające przykłady, i zakładamy, że przed wprowadzeniem ich do waszych programów, będziecie studiowali, jak one działają i bardziej dokładnie dostosowywali je do swoich potrzeb.

3 Konwertowanie stringów i liczb atomowych Zacznijmy od wejścia klawiatury(input). Chcielibyśmy, aby użytkownik mógł wpisać cokolwiek z klawiatury i aby poszło to w Prologu jako atom lub liczba, np.:?- read_atom(what). this is an atom (typed by user) What = 'this is an atom'?- read_num(what) (typed by user) What = Aby to zadziałało, będziemy polegać na read_str, określonym w rozdziale 3 i pokazanym wraz z innymi predykatach.

4 Istnieją trzy sposoby podejścia do procesu konwersji: Po pierwsze, ISO Prolog Standard definiuje dwa wbudowane predykaty, atom_codes i number_codes, które przechodzą, odpowiednio, atomy w stringi i liczby w stringi, np.:?- atom_codes(abc,what). What = [97,98,99]?- atom_codes(what,"abc"). What = abc?- number_codes(3.14,what). What = [51,46,49,52]?- number_codes(what,"3.14"). What = 3.14 Jeśli number_codes daje stringa, który nie podaje prawidłowego numeru, lub jeżeli jeden z jego argumentów jest niewłaściwego typu, wywołuje to stan runtime error.

5 Istnieją trzy sposoby podejścia do procesu konwersji: Wiele starszych Prologów używa name/2 aby wykonać oba rodzaje konwersji:?- name(abc,what). What = [97,98,99]?- name(what,"abc"). What = abc?- name(3.14,what). What = [51,46,49,52]?- name(what,"3.14"). What = 3.14 Ale istnieje kilka Prologów w których name posiada zachowanie określone dla kodów atomowych i konwersja liczb odbywa się w zupełnie inny sposób. Ponadto, name ogólnie radzi sobie z błędami, po prostu nie kompilując się, ale należy sprawdzić implementację aby się o tym upewnić. W dalszej części zakładamy, że już z powodzeniem wdrożony read_atom i read_num, zdefiniowano mniej więcej w następujący sposób: read_atom(atom) :- read_str(string), atom_codes(atom,string). read_num(num) :- read_str(string), number_codes(number,string). i że są one w pliku READSTR.PL (Przykład 5.1). Pamiętajmy, aby sprawdzić, czy instrukcja działa poprawnie w twoim Prologu.

6 Istnieją trzy sposoby podejścia do procesu konwersji: Jest jeszcze trzeci sposób konwersji stringów na liczby: wybierać cyfry jedna po drugiej, konwertować je do ich wartości liczbowych i wykonać obliczenia. W szczególności to, co robimy to utrzymanie sumy bieżącej, która rozpoczyna się od 0. Za każdym razem dostajemy inną cyfrę, mnożymy sumę przez 10, a następnie dodajemy do niej wartość tej cyfry. Na przykład, konwertując string "249", należy wykonać następujące obliczenia: Digit 2 (0 10) + 2 = 2 Digit 4 (2 10) + 4 = 24 Digit 9 (24 10) + 9 = 249 Możemy nigdy nie musieć używać tego sposobu, ale algorytm jest warty zapamiętania w przypadku, gdy będziemy mieli do czynienia z nietypowym bazami lub formatami (np. system szesnastkowy, lub liczby rozdzielone przecinkami).

7 przyklady

8 Łączenie naszego kodu z wyrazami Załóżmy, że piszemy program, w którym chcemy używać predykatów, które są zdefiniowane w READSTR.PL. Mamy dwie możliwości: Możemy kopiować READSTR.PL, cały, do swojego programu. Możemy wstawić dyrektywę w programie, która powoduje, że READSTR.PL jest przetwarzany. Drugim z nich jest to, co będziemy badać tutaj. W ISO Prolog oraz w wielu istniejących implementacjach (w tym Quintus, SWI i LPA), dyrektywa :- ensure_loaded('readstr.pl'). oznacza: "Jeśli READSTR.PL nie jest jeszcze skonsultowany, skonsultuj go teraz. (Oczywiście, to działa tylko wtedy, gdy READSTR.PL jest w bieżącym katalogu.) Inne Prologi nie mają ensure_loaded, dlatego uzasadnione jest stosowanie zastępczego reconsulta, jak poniżej: :- reconsult('readstr.pl'). Po napotkaniu tej linii w programie, system Prolog skonsultuje READSTR.PL, nawet jeśli READSTR.PL skonsultowano wcześniej. To trochę marnuje czas, ale nic poważnego się nie stanie.

9 Weryfikacja danych Użytkownika Za każdym razem gdy Program akceptuje od użytkownika wejście z klawiatury mogą powstać dwa problemy: Użytkownik może wpisać coś, co nie jest akceptowalna odpowiedzią (np. 4 gdy wybory w menu to 1, 2 i 3). Użytkownik może wpisać coś, co nie jest nawet interpretowane (np. xyz, gdy oczekiwana jest liczba). W obu przypadkach program powinien zrobić coś sensownego. Wygodne w użyciu jest zastosowanie powtarzającej się pętli aby sprawdzić poprawności danych wprowadzanych przez użytkownika, na przykład: get_number(n) :- repeat, write('type a number between 1 and 3: '), read_num(n), N =< 3, N >= 1,!.

10 Weryfikacja danych Użytkownika Jeśli użytkownik wpisze numer, który jest poza zakresem, wykonanie cofa się do powtórzenia, komputer wyświetla monit ponownie, a użytkownik dostaje jeszcze jedną szansę. Jeśli jest kilka odrębnych wyborów, wygodne jest użycie member z listy alternatyw: get_choice(c) :- repeat, write('type a, b, or c: '), read_atom(c), member(c,[a,b,c]),!. Nadal szybsze, ale cięższe(większe objętościowo), jest następujące podejście: get_ok(c) :- repeat, write('type a, b, or c: '), read_atom(c), ok(c),!. ok(a). ok(b). ok(c).

11 Konstruowanie Menu Ponieważ Prolog jest dobry w obsłudze skomplikowanych struktur danych, to prostą sprawą jest napisać procedurę, która będzie tworzyć i wyświetlać menu gdy powiesz jakie powinny być jego wybory. Przykład 5.2 przedstawia jeden przykład. Zdefiniowany tam Generator menu jest wywoływany przez zapytania, takie jak to:?- menu([item('georgia',ga),item('florida',fl),item('hawaii',hi)], What). 1 Georgia 2 Florida 3 Hawaii Your choice (1 to 3): 2 What = fl Oczywiście menu / 2 byłoby normalnie wywoływane z innej procedury, która musi wyświetlać menu. Jej pierwszy argument składa się z listy form [item(message1,value1),item(message2,value2),item(message3,value3)] Z maksymalnie 9 elementów, każdy składający się z wiadomości, która ma być wyświetlana i wyniku, który ma być zwrócony (w drugim położeniu argumentu) jeżeli użytkownik wybierze tę opcję. Wiadomość jest zwykle atomem;"value" może być terminem jakiegokolwiek rodzaju.

12 Czytanie plików z get byte Gdy przechodzimy od czytania z klawiatury do odczytu plików, pojawiają się dwa nowe problemy: - Czy będziemy uzyskiwać każdy bajt pliku, nienaruszony i niezmieniony? - Co wydarzy się na końcu pliku? Tutaj, niestety, różne implementacje Prologu rozdzielają się. W Prologu Arity get0 po prostu nie zadziała na końcu pliku, podczas gdy w większości innych Prologów zwraca kod -1. w ALS Prolog, get0 pomija wszystkie bajty o wartości 0 lub 13; w Cogent Prolog, get0 traktuje wartość 26 jako końcowy znak w pliku; w innych Prologach, get0 zachowuje wszystkie bajty nienaruszone. Dla uproszczenia będziemy używać predykatu ISO Prolog get_byte / 1, który czyta każdy bajt w postaci kodu numerycznego i zwraca -1 na końcu pliku. (Różnica między get_byte i get_code jest to, że get_byte gwarantuje, ze nie będą robione jakieś specjalne manipulacje w znakach na końcach linii i na końcach plików lub w kodach których nie można wyświetlić) Jeśli get_byte nie jest wbudowany w Prologu, trzeba będzie go zdefiniować. W większości Prologów, ta definicja wystarczy: get_byte(c) :- get0(c). bo get0 i get_byte to to samo. W Arity Prolog, użyj tej definicji zamiast: get_byte(c) :- get0(c),!. get_byte(-1).

13 Uchwytów plików (identyfikatorów Stream) W pozostałej części tego rozdziału, będziemy wykonywać wszystkie wejścia pliku(input) przez przekierowanie standardowego inputa z poleceniem see. Robimy to niechętnie; jest to przenośne(portable), ale ryzykowne. W szczególności, w przypadku gdy program wyrzuca błąd podczas gdy wejście jest przekierowywane, możemy nie być w stanie wpisać jakichkolwiek dalszych komend do systemu Prologa. Prawie każda implementacja w Prologu to sposób, aby uzyskać dostęp do plików poprzez uchwyty (identyfikatory Stream). Na przykład, read(h,x) zwykle oznacza to: "Wczytaj wyrażenie do X z pliku, którego uchwytem jest H." uchwyt jest wartością, która jest dana podczas otwierania pliku. Niestety, składnia dostępu do plików w ten sposób jest znacznie zróżnicowana. Proponowany system ISO jest opisany w Załączniku A; Rzeczywista Składnia w Quintus Prolog i SWI Prolog wygląda tak: test :- open('myfile1.txt',read,file1), read(file1,term), close(file1), open('myfile2.txt',write,file2), write(file2,term), close(file2). Ideą jest to, że otwarty predykat otwiera plik do zarówno czytania bądź pisania oraz tworzy instancję File1 do uchwytu. Następnie dajemy File1 jako argument wszystkich kolejnych predykatów, które używają pliku.

14 Pola Stałej Długości Wiele plików z danymi w świecie biznesu składa się z pól o stałej długości. Każda linia jest nazwana RECORD. Pola mogą lub nie mogą składać się ze znaków i rekordy mogą lub nie muszą kończyć się znakami na końcach linii( end of line). Oznacza to, że plik może lub nie być plikiem tekstowym. Odczyt pola o stałej długości jest prosty: zaczynamy od liczby bajtów która ma być odczytana i odliczamy w dół do 0, jak w przykładzie niżej: % read_bytes(+n,-string) %%% wstępna wersja % Wczytuje N bitów do Stringa. read_bytes(0,[]) :-!. read_bytes(n,[c Rest]) :- get_byte(c), NextN is N-1, read_bytes(nextn,rest). Zauważmy, że w Prologu, często odliczamy, podczas gdy zwykły język programowania liczyłby w górę (dla i = 1 do n lub podobnie). To pozwala nam porównać zmienną pętli do 0 (stała) niż porównywać do N (która ma być kolejnym parametrem dostarczonym w czasie wykonywania). Wersja read_bytes, której używamy jest bardziej skomplikowana. Wykorzystuje jeden znak LookAhead aby sprawdzić nieoczekiwany znak na końcu pliku(end-of-file). Możemy również zdefiniować skip_bytes, który pomija określoną liczba bajtów, bez zapisywania ich na liście. Większość Prologów zawiera także polecenie szukania, aby przejść do określonej pozycji w pliku o dostępie swobodnym, ale nie używamy go tutaj ze względu na brak standaryzacji. Nawet norma ISO sprawia, że szczegóły tej operacji są pozostawione realizatorowi.

15 Co teraz zrobić z danymi? Teraz, gdy już można odczytać pliki danych z Prologa, co z nimi zrobić? W zależności od potrzeb programu, istnieją trzy główne opcje: - Wczytać jeden rekord naraz i w jakiś sposób go przetworzyć. To jest odpowiednie podejście, jeśli celem programu jest praca i obliczanie czegoś w całym pliku. - Wczytać każdy rekord i przekonwertować go do Prologa, który następnie jest ukazany w bazie danych. To praktyczne podejście, jeśli chcesz użyć pliku aby odpowiedzieć na zapytania oraz gdy plik (lub jego część, którą jesteś zainteresowany) nie jest zbyt duży. (wbudowane predykatywne statystyki powiedzą, ile pamięci jest dostępnej w twojej implementacji Prologa.) - Przeszukać cały plik na dysku, gdy potrzebujesz z niego informacji. To jest najwolniejsza opcja, ale czasami jedyna praktyczna, jeśli plik jest gigantyczny. Na szczęście, większość dużych plików baz danych może być przeszukiwana sposobami które są szybsze niż wyszukiwanie sekwencyjne - każdy rekord zawiera odnośniki do innych rekordów, lub istnieje algorytm haszujący, lub oba z nich.

16 Pola rozdzielone przecinkami Przykład: 4633,"Covington","M","A","Athens","Georgia 5462,"Nute","D","E","Athens","Georgia" 123,"Vellino","A",,"Ottawa","Ontario przedstawia inny format danych który jest popularny w przesyłaniu danych między pakietami oprogramowania : COMMA DELIMITED FIELDS, czyli tekst z pola oddzielony przecinkami. Często, choć nie zawsze, pola alfabetyczne są zamknięte w cudzysłowie, tak że przecinki w nich nie będą traktowane jako separatory. Wczytywanie pól oddzielonych przecinkami w Prologu jest proste. Kluczem do sukcesu jest wdrożenie procedury zwanej read_until która akceptuje maxymalną ilośc bajtów oraz włącza określony kod (koniec pliku lub koniec linii, w zalezności co nastąpi wcześniej). Następnie, aby przeczytać pola rozdzielane przecinkami, po prostu wpisujemy - read_until przecinek.

17 Pola rozdzielone przecinkami Cytaty mogą nieco skomplikować problem. Bieżący algorytm służy do tego, aby przeczytać pierwszy znak z pola, a następnie, jeśli nie jest to cytat, read_until przecinek. Lecz jeślinpole zaczyna się cytatem, komputer musi read_until zamykający cytat (tym samym uzyskując dane), a następnie read_until przecinek (aby je odrzucić). Przykład 5.6 pokazuje kompletną implementację. (wrzucic z wykladu)

18 Liczby Binarne Nie wszystkie pliki danych składają się z drukowalnych znaków. Niektóre z pól w jakimkolwiek pliku mogą być liczbami binarnymi. Oznacza to, że na przykład numer 36, może być reprezentowany nie jako bajty dla znaków '3' i '6', ale jako liczba binarna 36 (100100). Małe liczby całkowite często przechowywane są w 16 bitach (dwóch bajtach). Na przykład: numer 1993 jest w formacie binarnym, To nie pasuje do jednego bajta, więc jest podzielone na dwa: Zadaniem programu Prolog jest to, aby przeczytać te dwa bajty (które pojedynczo mają wartości odpowiednio 7 i 201) i umieścić je razem: (7 * 256) = W efekcie traktujemy bajty jako baza-256 cyfr. Istnieją trzy komplikacje. Po pierwsze: na maszynach zgodnych z IBM PC, bajty są przechowywane w przeciwnym porządku jakiego można by było się spodziewać: mniej znaczący bajt jest na pierwszym miejscu. (Sun SPARC umieścił bardziej znaczący bajt pierwszy.) Po drugie: liczby ujemne są reprezentowane w zapisie dwójki-dopełniacza(twos complement), więc jeśli mamy 65535, to należy przekonwertować go na 1; Faktycznie, każda wartość większa niż jest reprezentowana przez liczbę ujemną. Po trzecie, wszelkie te obliczenia zakładają, że arytmetyka systemu Prolog nie jest ograniczona do 16 bitów przypadających na liczbę całkowitą. Praktycznie wszystkie systemy Prolog automatycznie przełączają się do zmiennoprzecinkowej arytmetyki gdzie dostępne liczby całkowite nie są już tak duże, więc nie spodziewamy się tutaj problemu. Kod do czytania podpisanych i niepodpisanych 16-bitowych liczb całkowitych przedstawiono na przykładzie 5.7.

19 Czytanie arkusza kalkulacyjnego LOTUS Przykład 5.9 przedstawia program Prolog, który odczytuje arkusze kalkulacyjne LOTUS w formacie WKS. Ponieważ tak dużo informacji w świecie biznesu jest przechowywane w arkuszach kalkulacyjnych, bądź są one do nich łatwo importowane, taki program może znacznie przedłużyć przydatność Prologa. Walden (1986) daje pełny opis formatu WKS, który jest formatem pliku wykorzystywanym przez wczesnych wersjach Lotus'a Nowsze programy arkuszy kalkulacyjnych mogą nadal używać formatu.wks jeśli im się na to wskaże, jako, że nie jest to już ustawienie domyślnie. plik arkusza kalkulacyjnego składa się z szeregu pól (rekordów), z których każdy obejmuje: 16-bitowy OPCODE (kod operacji) wskazujący typ pola; Liczba 16-bitowa podająca długość pola; Zawartość pola, która zależy od jego rodzaju. Większość pól w zwykłym arkuszu kalkulacyjnym to NON DATA FIELDS - to znaczy, zawierają informacje o tym, jak wydrukować lub wyświetlić arkusz kalkulacyjny. W celu zachowania wszystkich ustawień domyślnych, pełny ich zestaw jest zapisany w nawet najmniejszym arkuszu kalkulacyjnym. W związku z powyższym, możemy zignorować prawie wszystkie opcodes (kody operacji). Te kody operacji, które są istotne to: 0 Początek pliku 1 koniec pliku 13 Liczba całkowita 14 Stała zmiennoprzecinkowa 15 Stała tekstowa ( label ) 16 Formuła z przechowywaną wartością zmiennoprzecinkową Mimo, że nasz program nie próbuje rozszyfrować formuły, to byłoby całkiem możliwe aby to zrobić, tworząc wyrażenia, które mogą być oceniane przy użyciu wyrażenia is. Możemy to zrobić pobierając wartości zmiennoprzecinkowe, które są przechowywane razem z każdą formułą. Podobnie jak wszystkie przykłady w tym rozdziale, LOTUS.PL czyta ze standardowego wejścia. Oczywiście, w dowolnej praktycznej aplikacji, powinien być dostosowany do odczytu z pliku identyfikowanego przez uchwyt.

20 Język i Metajęzyk Metajęzyk jest językiem używanym do opisania innego języka. W całej tej książce opisujemy Prolog w języku angielskim; Oznacza to, że używamy języka angielskiego jako metajęzyka dla Prologa. Możemy używać języka angielskiego lub dowolnego języka jako metajęzyk dla każdego języka programowania. Niektóre języki programowania, takie jak Algol, mają specjalne metajęzyki. Prolog jest niemalże wyjątkowy, jednakże w zakresie w jakim może służyć jako własny metajęzyk. Przejawia się to w wielu funkcjach: Program może tworzyć nowe funkcje poprzez obliczenia, a następnie wykonując je. W istocie, można użyć Prologa aby opisać konstrukcje funkcji. Program może zbadać sam siebie(za pomocą klauzuli) i modyfikować się (używając assert i retract). Deklarując operatory, program może sam zmienić składnię języka Prologa Program w Prologu może rozszerzyć i zmodyfikować silnik inferencji, który kontroluje wykonywanie programu. Tak więc, język może zmienić sam siebie w sposób, który wykracza poza zewnętrzną składnię. Funkcje te umożliwiają Prologowi robić rzeczy, które są zupełnie obce dla większości języków programowania. Co najważniejsze, Prolog zaciera różnicę między programem a danymi. W większości języków programowania, trzeba bardzo wyraźnie odróżnić decyzje które podejmujemy podczas pisania programu od decyzji, które podejmuje komputer podczas uruchamiania programu. Na przykład, wszystkie arytmetyczne wyrażenia w programie BASIC lub Pascal są napisane przez programistę z wyprzedzeniem, choć program może zdecydować, w czasie pracy, których z nich użyć. W Prologu program może sam siebie rozszerzyć i zmodyfikować, podczas działania. Z tego powodu często nauka Prologa przychodzi łatwiej początkującym programistom, niż ludziom którzy programowali już w wielu językach programowania i nauczyli się już, że komputer nie pracuje w ten sposób.

21 Zbieranie alternatywnych rozwiązań do listy Rozważmy małą bazę danych: father(michael,cathy). father(charles_gordon,michael). father(jim,melody). Możemy zapytać Prologa, aby wyświetlił imiona wszystkich ojców wydając zapytanie takie jak:?- father(x,_), write(x), nl, fail. To jest: Znajdź X, dla którego ojciec (X, _) się powiedzie, wypisać, i wycofać aby znaleźć kolejne. Ale co, jeśli zamiast wyświetlania imion, chcemy je dalej przetwarzać jako lista? Stoi przed dylematem. W celu uzyskania wszystkich imion, program musi wracać się. Ale w celu skonstruowania listy, musi użyć rekurencji, przechodząc przez częściowo zbudowaną listę od jednej iteracji do następnej czego program wykorzystujący backtracking nie zrobi.

22 Zbieranie alternatywnych rozwiązań do listy Jedną z możliwości byłoby użycie assert i retract do wdrożenia mniej więcej następującego algorytmu: 1. Wracać się przez wszystkie rozwiązania father (X, _), przechowywując każdą wartość X oddzielnie w bazie danych; 2. Po wypróbowaniu wszystkich rozwiązań, wykonać pętlę rekurencyjną, która cofnie wszystkie zapisane klauzule i zgromadzi informacje na liście. Na szczęście nie musimy przechodzić przez to wszystko. Wbudowany predykat findall zgromadzi rozwiązania kwerendy do listy, bez potrzeby wykonywania asserts i retracts. Oto przykład:?- findall(x,father(x,_),l). L = [michael,charles_gordon,jim] Bardziej ogólnie, zapytanie z formularza?- findall(variable,goal,list). Utworzy instancję List do listy wszystkich instancji Variable, które odnoszą się do rozwiązań Goal. Następnie można przetwarzać tą listę, w jakikolwiek sposób chcemy. Pierwszym argumentem FindAll nie musi być zmienna; może to być dowolne pojęcie ze zmiennymi. Trzeci argument będzie wówczas listą instancji pierwszego argumentu z której każdy odpowiadać będzie rozwiązaniu. Na przykład:?- findall(parent+child,father(parent,child),l). L = [michael+cathy,charles_gordon+michael,jim+melody] Znakiem (+) jest tutaj po prostu funktor wpisany pomiędzy swoimi argumentami.

23 Używanie bagof i setof BAG jest matematycznym obiektem takim jak zbiór z tym wyjątkiem, że ten sam element może się wnim pojawić więcej niż raz. Oczywiście findall tworzy bag, nie zbiór, ponieważ to samo rozwiązanie może pojawić się w nim więcej niż raz. Podobnie bagof tworzy torbę w formie listy zawierającej wszystkie rozwiązania kwerendy; setof robi to samo oprócz tego, że lista jest posortowana w kolejności alfabetycznej, a duplikaty są usuwane. Operacja sortowania wymaga dodatkowego czasu, ale może to być korzystne, ponieważ chroni nas przed duplikatami w późniejszej pracy. Największa różnica między bagof i setof z jednej strony, a FindAll z drugiej strony, dotyczy sposobu obsługi zmiennych w Goals, któr nie występują w X. Jak można się spodziewać, findall traktuje je jako niewystępujące na każdym przejściu.

24 Używanie bagof i setof Zatem:?- findall(x,parent(x,y),l). oznacza "Znajdź każdego kto jest rodzicem kogokolwiek" Y nie musi mieć takiej samej wartości dla każdego z rodziców. Ale?- bagof(x,parent(x,y),l). oznacza "Znajdź wszystkie wartości X-a, które wiążą się z jakąś konkretną wartością Y-a. Inne wartości Y-a przyniosą alternatywne rozwiązania do bagof, a nie dodatkowe wpisy do tej samej listy.

25 Używanie bagof i setof Oto przykład: parent(michael,cathy). parent(melody,cathy). parent(greg,stephanie). parent(crystal,stephanie).?- findall(x,parent(x,y),l). X = _0001, Y = _0002, L=[michael,melody,greg,crystal]?- bagof(x,parent(x,y),l). X = _0001, Y = cathy, L = [michael,melody] ; X = _0001, Y = stephanie, L = [greg,crystal]?- setof(x,parent(x,y),l). X = _0001, Y = cathy, L = [melody,michael] ; X = _0001, Y = stephanie, L = [crystal,greg] Oczywiście setof jest jak bagof z wyjątkiem, że sortuje listy i usuwa duplikaty (jeśli jakiekolwiek występują). Ale jest inny sposób. Można zrobić to:?- bagof(x,y^parent(x,y),l). X = _0001, Y = _0002, L = [michael,melody,greg,crystal] Poprzedzenie Y^ wskazuje, że Y ma być traktowana jako egzystencjalnie skwantyfikowana.

26 Znajdowanie najmniejszego, największego, lub najlepszego rozwiązania Dość często, będziemy chcieli znaleźć "najlepsze" z wielu alternatywnych rozwiązań dla zapytania. Oczywiście "najlepsze" oznacza różne rzeczy w różnych sytuacjach, ale podstawową ideą jest to, że ze wszystkich możliwych rozwiązań, chcesz to, które przewyższa wszystkie inne zgodnie z pewnymi kryteriami. Istnieją trzy główne metody: Użyć setof i wykorzystać wbudowany proces sortowania, tak że "najlepsze" rozwiązanie wychodzi na początku (a może na końcu) listy; Użyć bagof lub setof a następnie pracować z listą, aby wybrać rozwiązanie, którego potrzebujesz; Szukaj bezpośrednio najlepszego rozwiązania, porównując każdą alternatywę na tle wszystkich pozostałych

27 Znajdowanie najmniejszego, największego, lub najlepszego rozwiązania Popracujmy z następującą bazą danych: age(cathy,8). age(sharon,4). age(aaron,3). age(stephanie,7). age(danielle,4). Które dziecko jest najmłodsze? Spróbujemy pierwszej i trzeciej strategii, pozostawiając drugą jako ćwiczenie. Jest to łatwe do wykonania. setof daje nam wiek najmłodszego dziecka. Weźmy pod uwagę te zapytania:?- setof(a,n^age(n,a),l). L = [3,4,7,8]?- setof(a,n^age(n,a),[youngest _]). Youngest = 3 Pierwsza kwerenda pobiera posortowaną listę wieku dzieci; druga kwerenda pobiera tylko pierwszy element tej listy. (dalszy ciąg przykład str. 23)

28 Zapytania Intensjonalne i Ekstensjonalne Wiemy, w jaki sposób w Prologu stwierdzić fakty na temat jednostek oraz uogólnień: dog(fido). Fido is a dog. animal(x) :- dog(x). Dogs are animals. Wiemy również, jak zadawać pytania dotyczące jednostek:?- dog(fido). Is Fido a dog? Ale w jaki sposób możemy zadać pytanie "Czy psy są zwierzętami?" Istnieją dwa znaczenia takiego pytania: (1) Czy istnieje reguła lub zbiór zasad za pomocą których możne dowieść, że wszystkie psy są zwierzętami? (2)Niezależnie od tego co mówią zasady, czy jest to przypadek, że wszystkie psy wymienione w bazie danych są w rzeczywistości zwierzętami? Możemy nazwać (1) i (2) intensjonalną oraz ekstensjonalną operacją, odpowiednia na pytanie Czy psy są zwierzętami? Spośród nich (1) jest przede wszystkim pytaniem o zawartość zestawu reguł, a (2) pyta Prologa o zrobienie generalizacji zestawu znanych już jednostek. Oczywiście, jeżeli pytanie (1) jest prawdziwe to pytanie (2) również będzie, aczkolwiek konwersja nie jest tutaj przypadkiem do rozważania.

29 Zapytania Intensjonalne i Ekstensjonalne Będziemy realizować pytanie (2). Intuicyjnie, chcemy powiedzieć, że "Wszystkie psy są zwierzętami". To prawda, jeśli (a) istnieje co najmniej jeden pies w bazie danych, oraz (b) nie ma psa w bazie danych, która nie jest zwierzęciem. Wymagamy, że musi być co najmniej jeden pies w bazie danych, tak że, na przykład zdanie, "Ślimaki są małpami" nie wyjdzie jako prawdziwe tylko dlatego, że nie ma ślimaków w bazie danych. Chcemy zdefiniować predykat for_all(goala, GoalB), który się powiedzie, jeśli wszystkie instancję które czynią GoalA prawdziwym, czynią prawdziwym również GoalB. Jeżeli wyniki mają być sensowne, GoalA i GoalB muszą dzielić się co najmniej jedną zmienną. Moglibyśmy wtedy zapytać: "Czy psy zwierzętami?" za pomocą zapytania:?- for_all(dog(x),animal(x)). Jeden ze sposobów zdefiniowania for_all jest następujący: % for_all(goala,goalb) % Powiedzie się, jeśli wszystkie rozwiązania GoalA będą spełniać również rozwiązania GoalB, % oraz istnieje co najmniej jedno rozwiązanie dla obu funkcji. for_all(goala,goalb) :- \+ (call(goala), \+ call(goalb)), % 1 call(goala), % 2!. % 3 Zagnieżdżone negacje w linii 1 mogą być mylące. Linia pierwsza nie powiedzie się jeśli funkcja złożona(compound goal) się powiedzie i vice cersa. (call(goala), \+ call(goalb)) Z kolei ta złożona funkcja(compound goal), powiedzie się jeżeli istnieje sposób aby GoalA zadziałał ( tworząc instancję kilku zmiennych współdzielonych w procesie z GoalB ) tak, że następnie GoalB zawiedzie. Jeśli linia 1 się uda, następnie linia 2 sprawdza, czy rzeczywiście istnieje co najmniej jeden pies w baza danych. Nie możemy odwrócić kolejność linii 1 i 2, ponieważ linia 2 tworzy instancje pewnych zmiennych, które muszą być potem usunięte w linii 1. Cięcia w linii 3 zapewniają, że nie generujemy fałszywych alternatyw dokonując poprawnego zaimplementowania linii 2 dowolnymi sposobami.

30 Definicje operatora Większość funktorów w Prologu jest zapisana bezpośrednio przed nawiasami argumentu listy: Funktor(arg1, arg2). Funktory, które mogą być napisane w innych pozycjach są nazywane Operatorami. Na przykład, struktura +(2,3) może być zapisana jako 2+3, ponieważ jej funktor, +, Jest operatorem wrostkowym. Nie należy mylić operatorów z operacjami. Niektóre operatory oznaczają arytmetyczne operacje(+-*/), ale inne operatory służą zupełnie innym celom. W rzeczywistości jakikolwiek funktor w Prologu może być uznany za operator oraz zmieniając w ten sposób tylko jego składnie, nie znaczenie.

31 Powszechnie predefiniowane operatory w PROLOGu. Pierwszeństwo Specyfikator Operatory 1200 xfx :- --> 1200 fx :-? xfy ; 1050 xfy -> 1000 xfy, 900 fy \+ (lub w niektorych Prologach, not) 700 xfx = \= is =:= =\= < =< > >= = yfx yfx * / // mod 200 xfy ^ 200 fy -

32 Specyfikatory składni operatora Specyfikator Znaczenie fx Prefix, not associative fy Prefix, right-associative (like \+) xf Postfix, not associative yf Postfix, left-associative xfx Infix, not associative (like =) xfy Infix, right-associative (like the comma in compound goals) yfx Infix, left-associative (like +)

33 Nadawanie znaczeń operatorom Definicje operatora określają jedynie jego składnie. Znaczenie lub semantyka operatora zależy już od programisty. W przeszłości niektóre Prologi używały ampersandu (&) zamiast przecinka aby łączyć elementy funkcji złożonych. Jest to wielką zaletą, ponieważ złożone funkcje nie wyglądają jak listy argumentów; zapytanie?- call(p(a) & q(a) & r(a)). wyraźnie wywołuje call tylko z jednym argumentem. W zwykłym Prologu, musimy użyć dodatkowych nawiasów, aby uzyskać ten sam efekt, jak tutaj:?- call( (p(a), q(a), r(a)) ). ponieważ bez dodatkowych nawiasów, call będzie traktowane jako posiadające trzy argumenty. Możemy zdefiniować ampersanda aby pracował w ten sposób nawet w zwykłym Prologu. Najpierw zdefiniujmy jego składnię. Chcemy aby & był operatorem wrostkowym z nieco niższym priorytetem niż przecinek, dzięki czemu f (& b, c) będzie oznaczać f ((& b), c),a nie f (i (b, c)). Ponadto, jak wkrótce zobaczymy, & powinno być w prawo-asocjacyjne. Tak więc, w większości Prologów stosowną definicją operatora będzie: :- op(950,xfy,&). Następnie musimy powiedzieć Prologowi jak rozwiązać funkcję zawierającą ampersandy. Oczywiście zapytanie GoalA & GoalB powinno zadziałać jeżeli GoalA zadziała a następnie GoalB zadziała z tymi samymi instancjami. Czyli: GoalA & GoalB :- call(goala), call(goalb). To jest po prostu zwykła reguła Prologa. Równie dobrze może to być zapisane jako: '&'(GoalA,GoalB) :- call(goala), call(goalb).

34 Nadawanie znaczeń operatorom Ponieważ ampersand & jest asocjacyjny z prawej strony(prawostronny), zasada ta może w rzeczywistości obsługiwać nieograniczoną liczbę zadań połączonych Ampersandami. Załóżmy, że mamy wydać zapytanie:?- write(one) & write(two) & write(three). Ze względu na prawostronność funkcja ta jest równoważna funkcji:?- write(one) & (write(two) & write(three)). To łączy się z regułą definiującą ampersand & z instancjami: GoalA = write(one) GoalB = (write(two) & write(three)) Nowymi funkcjami są call(goala), która jest realizowana wypisując one na ekranie, oraz call(goalb), która rekurencyjnie powołuje się na ręgułę ampersandu &.

35 PROLOG W PROLOGu Nasza definicja ampersandu & sugeruje strategię przepisania całego mechanizmu inferencji Prologa do Prologa, aby rozwinąć tym samym zmodyfikowaną wersję języka. Przypomnijmy, że predykat clause(head, Body) może odzyskać jakąkolwiek z klauzul w bazie danych, a przynajmniej te, które są zadeklarowane dynamicznie; Robi to, próbując połączyć Head z nagłówkiem klauzuli oraz body z ciałem klauzuli(lub z true jeśli klauzula jest faktem). Klauzule alternatywne są otrzymywane jako wielokrotne rozwiązania clause przy pomocy backtrackingu. Ciało reguły jest zazwyczaj funkcją złożoną(compound goal), czyli struktura utrzymywana jest przy pomocy prawostronnych(right-associative) przecinków, które działają dokładnie jak ampersandy zaprezentowane wcześniej. Tak więc biorąc pod uwagę regułę: zapytanie: f(x) :- g(x), h(x), i(x), j(x).?- clause(f(abc),body). Utworzy instancję Body która odpowiada: g(abc), h(abc), i(abc), j(abc) g(abc), (h(abc), (i(abc), j(abc))) Aby wykonać to zadanie postąpimy w ten sam sposób jak zrobiliśmy to w przypadku ampersandów. Możemy zdefniować interpret ( który pobiera funkcję jako argument i wykonuje ją). Następnie aby użyć interpret wystarczy napisać, np.:?- interpret(grandparent(x,y)). zamiast?- grandparent(x,y). Jest to algorytm Clocksin'a i Mellish'a (1984:177). Cięcia są zielone : zachowują kroki, ale nie wpływają na logikę programu. Zauważmy, że nie jest tu używane wywołanie; Każda udana funkcja kończy się wywołaniem interpret(true).

Prolog Praca z danymi zewnętrznymi Zastosowania. Piotr Jarzyński, Krystian Marynowski, Arkadiusz Nowacki, Mateusz Lewandowski PWSZ PŁOCK

Prolog Praca z danymi zewnętrznymi Zastosowania. Piotr Jarzyński, Krystian Marynowski, Arkadiusz Nowacki, Mateusz Lewandowski PWSZ PŁOCK Prolog Praca z danymi zewnętrznymi Zastosowania Piotr Jarzyński, Krystian Marynowski, Arkadiusz Nowacki, Mateusz Lewandowski PWSZ PŁOCK Domyślnie w Prologu wszystkie wprowadzone dane są napisane w składni

Bardziej szczegółowo

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

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main. Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo

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

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Część XVIII C++ Funkcje Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Umiemy już podzielić nasz

Bardziej szczegółowo

Przykłady zastosowań funkcji tekstowych w arkuszu kalkulacyjnym

Przykłady zastosowań funkcji tekstowych w arkuszu kalkulacyjnym S t r o n a 1 Bożena Ignatowska Przykłady zastosowań funkcji tekstowych w arkuszu kalkulacyjnym Wprowadzenie W artykule zostaną omówione zagadnienia związane z wykorzystaniem funkcji tekstowych w arkuszu

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

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Zapisywanie algorytmów w języku programowania

Zapisywanie algorytmów w języku programowania Temat C5 Zapisywanie algorytmów w języku programowania Cele edukacyjne Zrozumienie, na czym polega programowanie. Poznanie sposobu zapisu algorytmu w postaci programu komputerowego. Zrozumienie, na czym

Bardziej szczegółowo

Paradygmaty programowania

Paradygmaty programowania Paradygmaty programowania Jacek Michałowski, Piotr Latanowicz 15 kwietnia 2014 Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 1 / 12 Zadanie 1 Zadanie 1 Rachunek predykatów

Bardziej szczegółowo

Metody numeryczne Laboratorium 2

Metody numeryczne Laboratorium 2 Metody numeryczne Laboratorium 2 1. Tworzenie i uruchamianie skryptów Środowisko MATLAB/GNU Octave daje nam możliwość tworzenia skryptów czyli zapisywania grup poleceń czy funkcji w osobnym pliku i uruchamiania

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

Rozpoczynamy import Kreator uruchamiamy przyciskiem Z tekstu, znajdującym się na karcie Dane, w grupie Dane zewnętrzne.

Rozpoczynamy import Kreator uruchamiamy przyciskiem Z tekstu, znajdującym się na karcie Dane, w grupie Dane zewnętrzne. 2. Zadania praktyczne rozwiązywane z użyciem komputera 91 2. Zadania praktyczne rozwiązywane z użyciem komputera Wczytywanie danych Dane do zadań rozwiązywanych na komputerze zapisane są w plikach tekstowych.

Bardziej szczegółowo

Instrukcja obsługi programu SWWS autorstwa Michała Krzemińskiego

Instrukcja obsługi programu SWWS autorstwa Michała Krzemińskiego Instrukcja obsługi programu SWWS autorstwa Michała Krzemińskiego Krótkie informacje o programie można znaleźć zarówno w pliku readme.txt zamieszczonym w podkatalogu DANE jak i w zakładce O programie znajdującej

Bardziej szczegółowo

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

Wykład 11a. Składnia języka Klasycznego Rachunku Predykatów. Języki pierwszego rzędu. Andrzej Wiśniewski Logika I Materiały do wykładu dla studentów kognitywistyki Wykład 11a. Składnia języka Klasycznego Rachunku Predykatów. Języki pierwszego rzędu. 1 Logika Klasyczna obejmuje dwie teorie:

Bardziej szczegółowo

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

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki Konwersje napis liczba Struktury, unie Scanf / printf Wskaźniki Konwersje liczba napis Ćwiczenia 1. Napisz aplikację, która na wejściu dostaje napis postaci W Roku Pańskim 1345, władca Henryk 12,

Bardziej szczegółowo

ECDL/ICDL Użytkowanie baz danych Moduł S1 Sylabus - wersja 5.0

ECDL/ICDL Użytkowanie baz danych Moduł S1 Sylabus - wersja 5.0 ECDL/ICDL Użytkowanie baz danych Moduł S1 Sylabus - wersja 5.0 Przeznaczenie Sylabusa Dokument ten zawiera szczegółowy Sylabus dla modułu ECDL/ICDL Użytkowanie baz danych. Sylabus opisuje zakres wiedzy

Bardziej szczegółowo

Kwerendy (zapytania) wybierające

Kwerendy (zapytania) wybierające Access 2. Kwerendy (zapytania) wybierające Kwerendy wybierające (nazywane też zapytaniami wybierającymi) są podstawowymi obiektami w MS Access służącymi do wyszukiwania danych w tabelach. W wyniku uruchomienia

Bardziej szczegółowo

Budowa i oprogramowanie komputerowych systemów sterowania. Laboratorium 4. Metody wymiany danych w systemach automatyki DDE

Budowa i oprogramowanie komputerowych systemów sterowania. Laboratorium 4. Metody wymiany danych w systemach automatyki DDE Budowa i oprogramowanie komputerowych systemów sterowania Laboratorium 4 Metody wymiany danych w systemach automatyki DDE 1 Wprowadzenie do DDE DDE (ang. Dynamic Data Exchange) - protokół wprowadzony w

Bardziej szczegółowo

Makropolecenia w Excelu

Makropolecenia w Excelu Makropolecenia w Excelu Trochę teorii Makropolecenie w skrócie nazywane makro ma za zadanie automatyczne wykonanie powtarzających się po sobie określonych czynności. Na przykładzie arkusza kalkulacyjnego

Bardziej szczegółowo

Kolumna Zeszyt Komórka Wiersz Tabela arkusza Zakładki arkuszy

Kolumna Zeszyt Komórka Wiersz Tabela arkusza Zakładki arkuszy 1 Podstawowym przeznaczeniem arkusza kalkulacyjnego jest najczęściej opracowanie danych liczbowych i prezentowanie ich formie graficznej. Ale formuła arkusza kalkulacyjnego jest na tyle elastyczna, że

Bardziej szczegółowo

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych 1 Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych 1. Podstawowe operacje logiczne dla cyfr binarnych Jeśli cyfry 0 i 1 potraktujemy tak, jak wartości logiczne fałsz i prawda, to działanie

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 obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

Bardziej szczegółowo

Materiały do laboratorium MS ACCESS BASIC

Materiały do laboratorium MS ACCESS BASIC Materiały do laboratorium MS ACCESS BASIC Opracowała: Katarzyna Harężlak Access Basic jest językiem programowania wykorzystywanym w celu powiązania obiektów aplikacji w jeden spójny system. PROCEDURY I

Bardziej szczegółowo

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

Typy wyliczeniowe Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki Typy wyliczeniowe Konwersje napis liczba Struktury, unie Scanf / printf Wskaźniki Typy wyliczeniowe Służą do łatwiejszej kontroli nad stałymi Ustawianie parametrów o ściśle określonym zbiorze wartości

Bardziej szczegółowo

Języki programowania zasady ich tworzenia

Języki programowania zasady ich tworzenia Strona 1 z 18 Języki programowania zasady ich tworzenia Definicja 5 Językami formalnymi nazywamy każdy system, w którym stosując dobrze określone reguły należące do ustalonego zbioru, możemy uzyskać wszystkie

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

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Jak napisać program obliczający pola powierzchni różnych figur płaskich? Część IX C++ Jak napisać program obliczający pola powierzchni różnych figur płaskich? Na początku, przed stworzeniem właściwego kodu programu zaprojektujemy naszą aplikację i stworzymy schemat blokowy

Bardziej szczegółowo

Import limitów urlopowych / nowy rok

Import limitów urlopowych / nowy rok Import limitów urlopowych / nowy rok 1. Wstęp Limity urlopowe pracowników w BeeOffice można zbiorczo dodawać lub aktualizować przy pomocy importu danych z pliku Excel. Jednym z typowych scenariuszy do

Bardziej szczegółowo

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 =

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 = Prolog struktury danych oraz obliczenia 1. Arytmetyka?- Y is 2+2. Y = 4?- 5 is 3+3. false.?- Z is 4.5 + (3.9 / 2.1). Z = 6.357142857142857. Wbudowany predykat is bierze wyrażenie po prawej, oblicza je

Bardziej szczegółowo

IBM SPSS Statistics Wersja 22. Linux - Instrukcja instalacji (licencja autoryzowanego użytkownika)

IBM SPSS Statistics Wersja 22. Linux - Instrukcja instalacji (licencja autoryzowanego użytkownika) IBM SPSS Statistics Wersja 22 Linux - Instrukcja instalacji (licencja autoryzowanego użytkownika) Spis treści Instrukcja instalacji.......... 1 Wymagania systemowe........... 1 Kod autoryzacji.............

Bardziej szczegółowo

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

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++ Programowanie Wstęp p do programowania Klasa 3 Lekcja 9 PASCAL & C++ Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany w postaci programu

Bardziej szczegółowo

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery http://xqtav.sourceforge.net XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery dr hab. Jerzy Tyszkiewicz dr Andrzej Kierzek mgr Jacek Sroka Grzegorz Kaczor praca mgr pod

Bardziej szczegółowo

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

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu. Część XIX C++ w Każda poznana do tej pory zmienna może przechowywać jedną liczbę. Jeśli zaczniemy pisać bardziej rozbudowane programy, okaże się to niewystarczające. Warto więc poznać zmienne, które mogą

Bardziej szczegółowo

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

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem Moduł 1 1. Wprowadzenie do języka Python Python jest dynamicznym językiem interpretowanym. Interpretowany tzn. że kod, który napiszemy możemy natychmiast wykonać bez potrzeby tłumaczenia kodu programistycznego

Bardziej szczegółowo

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu Programowanie strukturalne Opis ogólny programu w Turbo Pascalu STRUKTURA PROGRAMU W TURBO PASCALU Program nazwa; } nagłówek programu uses nazwy modułów; } blok deklaracji modułów const } blok deklaracji

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), Program 351203 Opracowanie: Grzegorz Majda Tematyka zajęć 2. Przygotowanie środowiska pracy

Bardziej szczegółowo

Definicje. Algorytm to:

Definicje. Algorytm to: Algorytmy Definicje Algorytm to: skończony ciąg operacji na obiektach, ze ściśle ustalonym porządkiem wykonania, dający możliwość realizacji zadania określonej klasy pewien ciąg czynności, który prowadzi

Bardziej szczegółowo

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

Podstawy Programowania Podstawowa składnia języka C++ Podstawy Programowania Podstawowa składnia języka C++ Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Szablon programu w C++ Najprostszy program w C++ ma postać: #include #include

Bardziej szczegółowo

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

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń. Podstawy programowania Programowanie wyrażeń 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń. W językach programowania są wykorzystywane

Bardziej szczegółowo

Systemy GIS Tworzenie zapytań w bazach danych

Systemy GIS Tworzenie zapytań w bazach danych Systemy GIS Tworzenie zapytań w bazach danych Wykład nr 6 Analizy danych w systemach GIS Jak pytać bazę danych, żeby otrzymać sensowną odpowiedź......czyli podstawy języka SQL INSERT, SELECT, DROP, UPDATE

Bardziej szczegółowo

Import danych z plików Excel. (pracownicy, limity urlopowe i inne)

Import danych z plików Excel. (pracownicy, limity urlopowe i inne) Import danych z plików Excel (pracownicy, limity urlopowe i inne) 1. Wstęp BeeOffice umożliwia import z plików Excel kilku rodzajów danych, najczęściej wykorzystywanych podczas tworzenia nowego systemu

Bardziej szczegółowo

Systemy operacyjne. Laboratorium 8. Perl find

Systemy operacyjne. Laboratorium 8. Perl find Systemy operacyjne Laboratorium 8 Perl find Temat obejmuje przeszukiwanie drzew katalogowych z użyciem perla oraz podstawowe zdolności w używaniu referencji, tablic asocjacyjnych i mechanizmów typu stat.

Bardziej szczegółowo

Wstęp 7 Rozdział 1. OpenOffice.ux.pl Writer środowisko pracy 9

Wstęp 7 Rozdział 1. OpenOffice.ux.pl Writer środowisko pracy 9 Wstęp 7 Rozdział 1. OpenOffice.ux.pl Writer środowisko pracy 9 Uruchamianie edytora OpenOffice.ux.pl Writer 9 Dostosowywanie środowiska pracy 11 Menu Widok 14 Ustawienia dokumentu 16 Rozdział 2. OpenOffice

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

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

Konfiguracja INWENT 5

Konfiguracja INWENT 5 Krótka instrukcja Rozpoczęcia pracy Zakończenia Inwentaryzacji w programie INWENT5 Pierwszym pytaniem na jakie należy sobie odpowiedzieć jest czy wymianę danych kolektor-komputer dokonywać ma się automatycznie

Bardziej szczegółowo

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Załóżmy, że uprawiamy jogging i chcemy monitorować swoje postępy. W tym celu napiszemy program, który zlicza, ile czasu

Bardziej szczegółowo

FUNKCJE TEKSTOWE W MS EXCEL

FUNKCJE TEKSTOWE W MS EXCEL FUNKCJE TEKSTOWE W MS EXCEL ASC W językach korzystających z dwubajtowego zestawu znaków (DBCS) zmienia znaki o pełnej szerokości (dwubajtowe) na znaki o połówkowej szerokości (jednobajtowe). : ASC(tekst)

Bardziej szczegółowo

Podstawą w systemie dwójkowym jest liczba 2 a w systemie dziesiętnym liczba 10.

Podstawą w systemie dwójkowym jest liczba 2 a w systemie dziesiętnym liczba 10. ZAMIANA LICZB MIĘDZY SYSTEMAMI DWÓJKOWYM I DZIESIĘTNYM Aby zamienić liczbę z systemu dwójkowego (binarnego) na dziesiętny (decymalny) należy najpierw przypomnieć sobie jak są tworzone liczby w ww systemach

Bardziej szczegółowo

Zawartość. Wstęp. Moduł Rozbiórki. Wstęp Instalacja Konfiguracja Uruchomienie i praca z raportem... 6

Zawartość. Wstęp. Moduł Rozbiórki. Wstęp Instalacja Konfiguracja Uruchomienie i praca z raportem... 6 Zawartość Wstęp... 1 Instalacja... 2 Konfiguracja... 2 Uruchomienie i praca z raportem... 6 Wstęp Rozwiązanie przygotowane z myślą o użytkownikach którzy potrzebują narzędzie do podziału, rozkładu, rozbiórki

Bardziej szczegółowo

Podstawy Programowania C++

Podstawy Programowania C++ Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:

Bardziej szczegółowo

Uzupełnij pola tabeli zgodnie z przykładem poniżej,

Uzupełnij pola tabeli zgodnie z przykładem poniżej, 1. Wykonaj bazę danych biblioteki szkolnej, Otwórz MS Access a następnie z menu plik wybierz przycisk nowy, w oknie nowy plik wybieramy pusta baza danych nadaj jej nazwę Biblioteka i wybierz miejsce w

Bardziej szczegółowo

Algorytmika i pseudoprogramowanie

Algorytmika i pseudoprogramowanie Przedmiotowy system oceniania Zawód: Technik Informatyk Nr programu: 312[ 01] /T,SP/MENiS/ 2004.06.14 Przedmiot: Programowanie Strukturalne i Obiektowe Klasa: druga Dział Dopuszczający Dostateczny Dobry

Bardziej szczegółowo

Podstawy Programowania 2

Podstawy Programowania 2 Podstawy Programowania 2 Laboratorium 7 Instrukcja 6 Object Pascal Opracował: mgr inż. Leszek Ciopiński Wstęp: Programowanie obiektowe a programowanie strukturalne. W programowaniu strukturalnym, któremu

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

Z nowym bitem. Informatyka dla gimnazjum. Część II

Z nowym bitem. Informatyka dla gimnazjum. Część II Z nowym bitem. Informatyka dla gimnazjum. Część II Wymagania na poszczególne oceny szkolne Grażyna Koba Spis treści 1. Algorytmika i programowanie... 2 2. Obliczenia w arkuszu kalkulacyjnym... 4 3. Bazy

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

asix4 Podręcznik użytkownika Drajwer OPC Podręcznik użytkownika

asix4 Podręcznik użytkownika Drajwer OPC Podręcznik użytkownika Podręcznik użytkownika Drajwer OPC Podręcznik użytkownika Dok. Nr PLP4048 Wersja: 13-12-2005 Podręcznik użytkownika asix4 ASKOM i asix to zastrzeżone znaki firmy ASKOM Sp. z o. o., Gliwice. Inne występujące

Bardziej szczegółowo

5.2. Pierwsze kroki z bazami danych

5.2. Pierwsze kroki z bazami danych 5.2. Pierwsze kroki z bazami danych Uruchamianie programu Podobnie jak inne programy, OO Base uruchamiamy z Menu Start, poprzez zakładkę Wszystkie programy, gdzie znajduje się folder OpenOffice.org 2.2,

Bardziej szczegółowo

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

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc. Zmienne powłoki Zmienne powłoki (shell variables) to tymczasowe zmienne, które mogą przechowywać wartości liczbowe lub ciągi znaków. Związane są z powłoką, Przypisania wartości do zmiennej następuje poprzez

Bardziej szczegółowo

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

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

Podstawy programowania 2. Przygotował: mgr inż. Tomasz Michno

Podstawy programowania 2. Przygotował: mgr inż. Tomasz Michno Instrukcja laboratoryjna 2 Podstawy programowania 2 Temat: Zmienne dynamiczne tablica wskaźników i stos dynamiczny Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny 1.1 Tablice wskaźników Tablice

Bardziej szczegółowo

Memeo Instant Backup Podręcznik Szybkiego Startu

Memeo Instant Backup Podręcznik Szybkiego Startu Wprowadzenie Memeo Instant Backup pozwala w łatwy sposób chronić dane przed zagrożeniami cyfrowego świata. Aplikacja regularnie i automatycznie tworzy kopie zapasowe ważnych plików znajdujących się na

Bardziej szczegółowo

EGZAMIN MATURALNY Z INFORMATYKI MAJ 2013 POZIOM PODSTAWOWY CZĘŚĆ I WYBRANE: Czas pracy: 75 minut. Liczba punktów do uzyskania: 20 WPISUJE ZDAJĄCY

EGZAMIN MATURALNY Z INFORMATYKI MAJ 2013 POZIOM PODSTAWOWY CZĘŚĆ I WYBRANE: Czas pracy: 75 minut. Liczba punktów do uzyskania: 20 WPISUJE ZDAJĄCY Centralna Komisja Egzaminacyjna Arkusz zawiera informacje prawnie chronione do momentu rozpoczęcia egzaminu. Układ graficzny CKE 2011 KOD WPISUJE ZDAJĄCY PESEL Miejsce na naklejkę z kodem EGZAMIN MATURALNY

Bardziej szczegółowo

Programowanie w języku C++ Grażyna Koba

Programowanie w języku C++ Grażyna Koba Programowanie w języku C++ Grażyna Koba Kilka definicji: Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i zasad

Bardziej szczegółowo

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Publikacja jest dystrybuowana bezpłatnie Program Operacyjny Kapitał Ludzki Priorytet 9 Działanie 9.1 Poddziałanie

Bardziej szczegółowo

Informatyka- wykład. Podstawy programowania w Pythonie. dr Marcin Ziółkowski

Informatyka- wykład. Podstawy programowania w Pythonie. dr Marcin Ziółkowski Informatyka- wykład Podstawy programowania w Pythonie dr Marcin Ziółkowski Instytut Matematyki i Informatyki Akademia im. Jana Długosza w Częstochowie 23 listopada 2015 r. JĘZYK PYTHON Język Python jest

Bardziej szczegółowo

Dane słowa oraz wyrażenia są tłumaczone przy pomocy polecenia Przetwarzanie > Tłumaczenie

Dane słowa oraz wyrażenia są tłumaczone przy pomocy polecenia Przetwarzanie > Tłumaczenie Słownik tłumaczeń Informacje ogólne Edytor słownika jest aplikacją MDI, umożliwiającą otwieranie różnych słowników, w celu zarzadzania nimi oraz zapisywania ich do poszczególnych plików. Słownik tłumaczeń

Bardziej szczegółowo

Konspekt do lekcji informatyki dla klasy II gimnazjum. TEMAT(1): Baza danych w programie Microsoft Access.

Konspekt do lekcji informatyki dla klasy II gimnazjum. TEMAT(1): Baza danych w programie Microsoft Access. Konspekt do lekcji informatyki dla klasy II gimnazjum. Opracowała: Mariola Franek TEMAT(1): Baza danych w programie Microsoft Access. Cel ogólny: Zapoznanie uczniów z możliwościami programu Microsoft Access.

Bardziej szczegółowo

Kod U2 Opracował: Andrzej Nowak

Kod U2 Opracował: Andrzej Nowak PODSTAWY TEORII UKŁADÓW CYFROWYCH Kod U2 Opracował: Andrzej Nowak Bibliografia: Urządzenia techniki komputerowej, K. Wojtuszkiewicz http://pl.wikipedia.org/ System zapisu liczb ze znakiem opisany w poprzednim

Bardziej szczegółowo

biegle i poprawnie posługuje się terminologią informatyczną,

biegle i poprawnie posługuje się terminologią informatyczną, INFORMATYKA KLASA 1 1. Wymagania na poszczególne oceny: 1) ocenę celującą otrzymuje uczeń, który: samodzielnie wykonuje na komputerze wszystkie zadania z lekcji, wykazuje inicjatywę rozwiązywania konkretnych

Bardziej szczegółowo

CZĘŚĆ A PIERWSZE KROKI Z KOMPUTEREM

CZĘŚĆ A PIERWSZE KROKI Z KOMPUTEREM CZĘŚĆ A PIERWSZE KROKI Z KOMPUTEREM 1.1. PODSTAWOWE INFORMACJE PC to skrót od nazwy Komputer Osobisty (z ang. personal computer). Elementy komputera można podzielić na dwie ogólne kategorie: sprzęt - fizyczne

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

ARKUSZ KALKULACYJNY komórka

ARKUSZ KALKULACYJNY komórka ARKUSZ KALKULACYJNY Arkusz kalkulacyjny program służący do obliczeń, kalkulacji i ich interpretacji graficznej w postaci wykresów. Przykłady programów typu Arkusz Kalkulacyjny: - Ms Excel (*.xls; *.xlsx)

Bardziej szczegółowo

Zapytania do baz danych

Zapytania do baz danych Zapytania do baz danych 1. Korzystając z bazy kwerenda pobranej ze strony www.informatykamg.cba.pl. 2. Zobacz w tej bazie jak wyglądają relacje pomiędzy tabelami. Rys. 1 Relacje pomiędzy tabelami. 3. Tworzymy

Bardziej szczegółowo

Wykład III. dr Artur Bartoszewski www.bartoszewski.pr.radom.pl. Wydział Nauczycielski, Kierunek Pedagogika Wprowadzenie do baz danych

Wykład III. dr Artur Bartoszewski www.bartoszewski.pr.radom.pl. Wydział Nauczycielski, Kierunek Pedagogika Wprowadzenie do baz danych Wydział Nauczycielski, Kierunek Pedagogika Wprowadzenie do baz danych dr Artur Bartoszewski www.bartoszewski.pr.radom.pl Wykład III W prezentacji wykorzystano fragmenty i przykłady z książki: Joe Habraken;

Bardziej szczegółowo

Rozdział 4 KLASY, OBIEKTY, METODY

Rozdział 4 KLASY, OBIEKTY, METODY Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej

Bardziej szczegółowo

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

Bardziej szczegółowo

for (inicjacja_warunkow_poczatkowych; wyrazenie_warunkowe; wyrazenie_zwiekszajace) { blok instrukcji; }

for (inicjacja_warunkow_poczatkowych; wyrazenie_warunkowe; wyrazenie_zwiekszajace) { blok instrukcji; } Pętle Pętle (ang. loops), zwane też instrukcjami iteracyjnymi, stanowią podstawę prawie wszystkich algorytmów. Lwia część zadań wykonywanych przez programy komputerowe opiera się w całości lub częściowo

Bardziej szczegółowo

TABLICA (ang. array) pojedyncza zmienna z wieloma komórkami, w których można zapamiętać wiele wartości tego samego typu danych.

TABLICA (ang. array) pojedyncza zmienna z wieloma komórkami, w których można zapamiętać wiele wartości tego samego typu danych. Złożone typy danych - TABLICE TABLICA (ang. array) pojedyncza zmienna z wieloma komórkami, w których można zapamiętać wiele wartości tego samego typu danych. * Może przechowywać dowolny typ danych, typ

Bardziej szczegółowo

Systemy baz danych w zarządzaniu przedsiębiorstwem. W poszukiwaniu rozwiązania problemu, najbardziej pomocna jest znajomość odpowiedzi

Systemy baz danych w zarządzaniu przedsiębiorstwem. W poszukiwaniu rozwiązania problemu, najbardziej pomocna jest znajomość odpowiedzi Systemy baz danych w zarządzaniu przedsiębiorstwem W poszukiwaniu rozwiązania problemu, najbardziej pomocna jest znajomość odpowiedzi Proces zarządzania danymi Zarządzanie danymi obejmuje czynności: gromadzenie

Bardziej szczegółowo

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE Studia podyplomowe dla nauczycieli INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE Przedmiot JĘZYKI PROGRAMOWANIA DEFINICJE I PODSTAWOWE POJĘCIA Autor mgr Sławomir Ciernicki 1/7 Aby

Bardziej szczegółowo

PTI S1 Tabele. Tabele. Tabele

PTI S1 Tabele. Tabele. Tabele Tabele Tabele 43 1.3. Tabele Jako że bazy danych składają się z tabel, musimy nauczyć się jak je zaprojektować, a następnie stworzyć i zarządzać nimi w programie Microsoft Access 2013. Zajmiemy się również

Bardziej szczegółowo

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Pierwsze kroki Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura Co znaczy

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

WYMAGANIA EDUKACYJNE

WYMAGANIA EDUKACYJNE GIMNAZJUM NR 2 W RYCZOWIE WYMAGANIA EDUKACYJNE niezbędne do uzyskania poszczególnych śródrocznych i rocznych ocen klasyfikacyjnych z INFORMATYKI w klasie II gimnazjum str. 1 1. Algorytmika i programowanie

Bardziej szczegółowo

Pascal - wprowadzenie

Pascal - wprowadzenie Pascal - wprowadzenie Ogólne informacje o specyfice języka i budowaniu programów Filip Jarmuszczak kl. III c Historia Pascal dawniej jeden z najpopularniejszych języków programowania, uniwersalny, wysokiego

Bardziej szczegółowo

Na komputerach z systemem Windows XP zdarzenia są rejestrowane w trzech następujących dziennikach: Dziennik aplikacji

Na komputerach z systemem Windows XP zdarzenia są rejestrowane w trzech następujących dziennikach: Dziennik aplikacji Podgląd zdarzeń W systemie Windows XP zdarzenie to każde istotne wystąpienie w systemie lub programie, które wymaga powiadomienia użytkownika lub dodania wpisu do dziennika. Usługa Dziennik zdarzeń rejestruje

Bardziej szczegółowo

Przykład 1. (Arkusz: Sortowanie 1 )

Przykład 1. (Arkusz: Sortowanie 1 ) Przykład 1. (Arkusz: Sortowanie 1 ) W poniższej tabeli znajduje się 10 nazwisk pracowników pewnej firmy, ich miesięczna płaca oraz roczna premia jaką otrzymali. Osoby te chcielibyśmy posortować wg nazwisk

Bardziej szczegółowo

Algorytmy sortujące i wyszukujące

Algorytmy sortujące i wyszukujące Algorytmy sortujące i wyszukujące Zadaniem algorytmów sortujących jest ułożenie elementów danego zbioru w ściśle określonej kolejności. Najczęściej wykorzystywany jest porządek numeryczny lub leksykograficzny.

Bardziej szczegółowo

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście. Typy, operatory, wyrażenia. Wejście i wyjście. Typy, operatory, wyrażenia Zmienna: [] [ '[' ']' ] ['=' ]; Zmienna to fragment pamięci o określonym

Bardziej szczegółowo

Ćwiczenie: JavaScript Cookies (3x45 minut)

Ćwiczenie: JavaScript Cookies (3x45 minut) Ćwiczenie: JavaScript Cookies (3x45 minut) Cookies niewielkie porcje danych tekstowych, które mogą być przesyłane między serwerem a przeglądarką. Przeglądarka przechowuje te dane przez określony czas.

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

MS Excel 2007 Kurs zaawansowany Obsługa baz danych. prowadzi: Dr inż. Tomasz Bartuś. Kraków: 2008 04 25

MS Excel 2007 Kurs zaawansowany Obsługa baz danych. prowadzi: Dr inż. Tomasz Bartuś. Kraków: 2008 04 25 MS Excel 2007 Kurs zaawansowany Obsługa baz danych prowadzi: Dr inż. Tomasz Bartuś Kraków: 2008 04 25 Bazy danych Microsoft Excel 2007 udostępnia szereg funkcji i mechanizmów obsługi baz danych (zwanych

Bardziej szczegółowo

Szybka instrukcja tworzenia testów dla E-SPRAWDZIAN-2 programem e_kreator_2

Szybka instrukcja tworzenia testów dla E-SPRAWDZIAN-2 programem e_kreator_2 Szybka instrukcja tworzenia testów dla E-SPRAWDZIAN-2 programem e_kreator_2 Spis treści: 1. Tworzenie nowego testu. str 2...5 2. Odczyt raportów z wynikami. str 6...7 3. Edycja i modyfikacja testów zapisanych

Bardziej szczegółowo

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for.

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for. Zadania do wykonania Rozwiązując poniższe zadania użyj pętlę for. 1. apisz program, który przesuwa w prawo o dwie pozycje zawartość tablicy 10-cio elementowej liczb całkowitych tzn. element t[i] dla i=2,..,9

Bardziej szczegółowo

Przewodnik Szybki start

Przewodnik Szybki start Przewodnik Szybki start Program Microsoft Access 2013 wygląda inaczej niż wcześniejsze wersje, dlatego przygotowaliśmy ten przewodnik, aby skrócić czas nauki jego obsługi. Zmienianie rozmiaru ekranu lub

Bardziej szczegółowo

Viatoll Calc v1.3. Viatoll Calc. Instrukcja użytkownika. Strona 1

Viatoll Calc v1.3. Viatoll Calc. Instrukcja użytkownika. Strona 1 Viatoll Calc Instrukcja użytkownika Strona 1 Spis treści 1 Wstęp...3 2 Opis panelu głównego...3 2.1 Menu aplikacji...4 2.2 Tabela z trasami...5 2.3 Strona kalkulatora viatoll...6 2.4 Pasek statusu...7

Bardziej szczegółowo