syntaksem abstrakcyjnym syntaksem kon- kretnym. drzewami abstrakcyjnego syntaksu, Abstrakcyjny syntaks rachunku. zmiennπ -abstrakcjπ, zwiπzana
|
|
- Monika Borowska
- 9 lat temu
- Przeglądów:
Transkrypt
1 5. Wyk ad 5: Wprowadzenie do rachunku. Na dzisiejszym wyk adzie zajmiemy sií rachunkiem, czyli podstawowym rachunkiem wykorzystywanym przez jízyki funkcyjne, w tym oczywiúcie przez SML. DziÍki niemu bídziemy potrafili uchwyciê najwaøniejsze mechanizmy dzia ania jízyków funkcyjnych, a zatem zrozumieê podstawy teorertyczne ich funkcjonowania. Zgodnie z tezamu Churcha-Turinga (o których potem), si a wyrazu rachunku jest tak samo duøa, jak abstrakcyjnych maszyn Turinga, wszelako jego syntaks jest istotnie atwiejszy. Na poczπtek zajmiemy sií przedyskutowaniem syntaksu rachunku, a potem pokaøemy, w jaki sposób moøna w nim pisaê programy. Zanim zaczniemy, omówimy pokrótce róønicí miídzy syntaksem abstrakcyjnym i syntaksem konkretnym. Syntaks konkretny specyfikuje który ciπg znaków zostanie zaakceptowany jako prawid owo napisany program (a wiíc program nie wywo ujπcy b edów syntaksu), a który zostanie odrzucony jako program nieprawid owy (a wiíc zg aszajπcy b Ídy syntaksu). Na przyk ad, zgodnie z konkretnym syntaksem SML, ciπg znaków 1 zostanie zinterpretowany jako liczba ca kowita 1, natomiast ciπg znaków 1 zostanie zinterpretowany jako operator zastosowany do argumentu ca kowitego 1 (co w dalszej kolejnoúci doprowadzi do b Ídu). Parser implementujπcy konkretny syntaks zwykle t umaczy kod üród owy na odpowiednie drzewka. Na przyk ad, kod üród owy bídzie przet umaczony na: + qqqqqqqqqqqqq OOOOOOOOOOOOOO 1 > >>>>>> oczywiúcie po wczeúniejszym uwzglídnieniu regu pierwszeòstwa operatorów. Tego typu drzewka nazywaê bídziemy drzewami abstrakcyjnego syntaksu, które powstajπ niezaleønie od szczegó ów parsowania (takich jak regu y πcznoúci czy pierwszeòstwa operatorów) i skupiajπ sií na strukturze kodów üród owych; abstrakcyjny syntaks jest po prostu syntaksem dla takich struktur drzewek. Jakkolwiek konkretny syntaks jest nieodzownπ czíúciπ projektowania jízyka programowania, nie bídziemy sií nim wcale zajmowaê na tym wyk adzie. Zamiast tego skupimy sií ca kowicie na abstrakcyjnym syntaksie i skoncentrujemy sií na aspektach rachunkowych projektowania jízyków programowania. Na przyk ad, nie bídziemy zbytnio zastanawiali sií, dlaczego oraz 1 +(2 3) sπ zamieniane przez parser na taki sam abstrakcyjny syntaks jak pokazany na drzewku powyøej. Celem zrozumienia w jaki sposób obliczamy wartoúê kaødego z powyøszych wyraøeò, w zupe noúci wystarczy ograniczyê sií do rozwaøania abstrakcyjnego syntaksu Abstrakcyjny syntaks rachunku. Abstrakcyjny syntaks dla rachunku dany jest nastípujπco: wyraenie e ::= x x.e ee Wyraøenie x jest nazywane zmiennπ. Moøemy oczywiúcie uøyê innych nazw dla zmiennych, na przyk ad z, s, t, f, arg, accum itd. Mówiπc úciúle, x jest metazmiennπ w indukcyjnej definicji wyraøenia. Wyraøenie x.e jest nazywane -abstrakcjπ, albo po prostu funkcjπ, która oznacza funkcjí matematycznπ, której formalnym argumentem jest x, a której zawartoúê zadana jest przez e. Moøemy myúleê o x.e jak o wewnítrznej reprezentacji funkcji w SML bez nazwy danej przez fn x => ew abstrakcyjnym syntaksie. Mówimy, øe zmienna x jest zwiπzana w -abstrakcji x.e (dok adnie tak, jak zmienna x jest zwiπzana w funkcji SML fn x => e).
2 38 Wyraøenie e 1 e 2 jest nazywane -aplikacjπ lub po prostu aplikacjπ, która oznacza zastosowanie funkcji (o ile moøemy w jakiú sposób pokazaê, øe e 1 jest równowaøne pewnej -abstrakcji). Moøemy myúleê o e 1 e 2 jak o wewnítrznej reprezentacji zastosowania funkcji w SML w abstrakcyjnym syntaksie. Tak jak w SML, aplikacje sπ πcznej z lewej strony, a zatem e 1 e 2 e 3 czytamy jak (e 1 e 2 )e 3, a nie e 1 (e 2 e 3 ). Zakres -abstrakcji rozciπga sií tak daleko w prawo, jak tylko jest to moøliwe. Oto garúê przyk adów: x.xy jest takim samym wyraøeniem, jak -abstrakcja x.(xy), której zawartoúciπ jest xy. Nie naleøy jej rozumieê jak aplikacji ( x.x)y. x. y.xy jest takim samym wyraøeniem, jak x. y.(xy) = x.( y.(xy)). Nie naleøy jej rozumieê jak aplikacji ( x. y.x)y. Jak sií okazuje, kaøde wyraøenie w rachunku oznacza pewnπ funkcjí matematycznπ. Dok adniej, oznaczenie kaødego wyraøenia w rachunku jest funkcjπ matematycznπ. Poniøej zobaczymy, w jaki sposób moøna okreúliê jednoznacznie wyznaczone funkcje matematyczne odpowiadajπce wyraøeniom w rachunku, obecnie zaú spróbujemy wyrobiê sobie odpowiedniπ intuicjí poprzez rozwaøenie kilku przykladów -abstrakcji. Naszym pierwszym przyk adem niech bídzie funkcja identycznoúciowa: id = x.x id jest funkcjπ identycznoúciowπ, albowiem przy danym argumencie x zwraca wartoúê x bez øadnych dodatkowych obliczeò. Tak jak funkcje wyøszego rzídu w SML, -abstrakcje mogπ zwracaê inne - abstrakcje jako wartoúci. Na przyk ad, tt zdefiniowane poniøej argumentowi t przyporzπdkowuje - abstrakcjí f.t, która ignoruje swój w asny argument; Ä z kolei ignoruje swój w asny argument i przyporzπdkowuje -abstrakcjí f.f: tt = t. f.t = t.( f.t) tt = t. f.f = t.( f.f) Podobnie -abstrakcja moøe przyjmowaê innπ -abstrakcjí jako argument. Na przyk ad, poniøsza -abstrakcja przyjmuje innπ -abstrakcjí s, która nastípnie jest stosowana do z: one = s. z.sz = s.( z.(sz)) Semantyka operacyjna rachunku. Semantyka danego jízyka programowania odpowiada na pytanie, jakie jest znaczenie danego programu. Jest to waøna kwestia przy projektowaniu oprogramowania, albowiem brak formalnej semantyki moøe skutkowaê potencjalnπ niejednoznacznoúciπ w dzia aniu interpretera. Mówiπc wprost, brak formalnej semantyki sprawia, øe odczytanie znaczenia pewnych programów staje sií ca kowicie niemoøliwe. Øeby by o ciekawiej, nie kaødy jízyk ma zdefiniowanπ formalnπ semantykí. Na przyk ad (co moøe by dla Was zaskoczeniem) jízyk C jest pozbawiony formalnej semantyki w rezultacie ten sam program w jízyku C moøe róønie sií zachowywaê w zaleønoúci od stanu, w jakim znajduje sií urzπdzenie, na którym jest uruchamiany. Istniejπ trzy podejúcia do formu owania semantyki jízyków programowania: semantyka opisowa, semantyka aksjomatyczna i semantyka operacyjna. Na tym wyk adzie zajmiemy sií wy πcznie semantykπ operacyjnπ, ze wzglídu na jej bliski zwiπzek z osπdami i regu ami wnioskowania. Podejúcie to ma teø tí zaletí, øe w bezpoúredni sposób odzwierciedla implementacjí jízyków programowania (a wiíc interpretery i kompilatory). Ogólnie rzecz biorπc, semantyka operacyjna jízyka programowania specyfikuje w jaki sposób moøna zamieniê program na wartoúê poprzez ciπg operacji. W przypadku rachunku, wartoúcisk adajπ sií z -abstrakcji, natomiast operacje zwane sπ redukcjami. Tym samym semantyka operacyjna
3 rachunku okreúla w jaki sposób moøna zredukowaê wyraøenie e do wartoúci v, gdzie v zdefiniowane jest nastípujπco: value v ::= x.e WartoúÊ v bídziemy rozumieli jako znaczenie e. Jako øe -abstrakcja oznacza funkcjí matematycznπ wynika stπd, øe kaøde wyraøenie w rachunku oznacza funkcjí matematycznπ. PamiÍtajπc o ogólnej idei, jaka nam przyúwieca, zdefiniujmy teraz formalnie redukcje wyraøeò. Wprowadümy mianowicie osπd redukcji postaci e 7! e 0 nastípujπco: e 7! e 0, e redukuje sií do e 0 Oznaczmy przez 7! domkniície przechodnio-zwrotne relacji 7! (a wiíc najmniejszπ relacjí przechodniπ i zwrotnπ, zawierajπcπ 7!; nietrudno sprawdziê, øe e 7! e 0 zachodzi wtedy i tylko wtedy, gdy dla pewnych e 1,...,e n zachodzi e 7! e 1 7!...7! e n 7! e 0. BÍdziemy mówili, øe e przyjmuje wartoúê v, gdy zachodzi e 7! v. Zanim przejdziemy do podania regu wnioskowania, zastanówmy sií, jakiego rodzaju wyraøenia powinny daê sií redukowaê do innych wyraøeò. Oczywiúcie zmienne i -abstrakcje nie powinny byê redukowalne: x 67!. x.e 67!. (symbol e 67!. oznacza, øe e nie redukuje sií do innego wyraøenia). Kiedy powinniúmy byê w stanie zredukowaê aplikacjí e 1 e 2? Jeøeli bídziemy myúleê o niej jak o wewnítrznej reprezentacji aplikacji funkcji SML, moøemy jπ zredukowaê tylko wtedy, gdy e 1 reprezentuje funkcjí SML. Tym samym jedyny kandydat na redukowalnπ aplikacjí jest postaci ( x.e 0 1)e 2. Jeøeli bídziemy myúleê o x.e 0 1 jak o funkcji matematycznej o argumencie x izawartoúcie 0 1, najbardziej naturalnym sposobem redukcji ( x.e 0 1)e 2 jest podstawienie e 2 w kaødym miejscu wystípowania e 0 1 lub, równowaønie, przez zastπpienie kaødego wystπpienia x w e 0 1 przez e 2 (od tego momentu nie bídziemy sií przejmowaê tym, czy e 2 jest wartoúciπ, czy nie). Wobec tego moøemy wprowadziê podstawienie [e 0 /x]e nastípujπco: [e 0 /x]e jest zdefiniowane jako wyraøenie powsta e przez zastπpienie kaødego wystπpienia x w e przez e 0 [e 0 /x]e moøe byê równieø odczytywane jako zastosowanie podstawienia [e 0 /x] do e. Uzasadnia to nastípujπcπ redukcjí: ( x.e)e 0 7! [e 0 /x]e gdzie redukowane wyraøenie, a mianowicie ( x.e)e 0, zwane jest redeksem. Ze wzglídów historycznych, powyøsza redukcja zwana jest -redukcjπ. Jakkolwiek to co zauwaøyliúmy powyøej moøe wydawaê sií proste, precyzyjna definicja podstawienia [e 0 /x]e jest o wiele subtelniejsza i zajmiemy sií niπ bardziej szczegó owo na kolejnym wyk adzie, ograniczajπc sií obecnie tylko do prostych przyk adów. Oto kilka -redukcji, redeks dla kaødego kroku zosta podkreúlony: ( x.x)( y.y) 7! y.y ( t. f.t)( x.x)( y.y) 7! ( f. x.x)( y.y) 7! x.x ( t. f.f)( x.x)( y.y) 7! ( f.f)( y.y) 7! y.y ( s. z.sz)( x.x)( y.y) 7! ( z.( x.x)z)( y.y) 7! ( x.x)( y.y) 7! y.y -redukcja jest podstawowπ zasadπ pozwalajπcπ redukowaê wyraøenia, jednakøe nie moøna z niej otrzymaê jednoznacznie wyznaczonych regu wnioskowania dla osπdu e 7! e 0. Innymi s owy, w ogólnoúci moøe byê wiícej niø jeden sposób na zastosowanie -redukcji do danego wyraøenia, lub, równowaønie, 39
4 40 dowolne wyraøenie moøe zawieraê w sobie wiele redeksów. Na przyk ad, wyraøenie ( x.x)(( y.y)( z.z)) zawiea dwa redeksy: ( x.x)(( y.y)( z.z)) 7! ( y.y)( z.z) 7! z.z ( x.x)(( y.y)( z.z)) 7! ( x.x)( z.z) 7! z.z W pierwszym przypadku, wyraøenie które redukujemy jest postaci ( x.e)e 0 i bezpoúrednio stosujemy - redukcjí do ca ego wyraøenie celem otrzymania [e 0 /x]e. W drugim przypadku, stosujemy -redukcjí do e 0, które samo jest redeksem; gdyby e 0 nie by o redeksem (na przyk ad, gdyby e 0 = t.t), drugi przypadek nie by by moøliwy. Oto jeszcze jeden przyk ad wyraøenia zawierajπcego dwa redeksy: ( s. z.sz)(( x.x)( y.y)) 7! z.(( x.x)( y.y))z 7! z.( y.y)z 7! z.z ( s. z.sz)(( x.x)( y.y)) 7! ( s. z.sz)( y.y) 7! z.( y.y)z 7! z.z Tym samym w procesie redukowania wyraøenia do wartoúci moøemy byê w stanie zastosowaê -redukcjí na wiele moøliwych sposobów. Jako øe nie bídziemy chcieli stosowaê -redukcji tylko w jeden, úciúle okreúlony sposób, bídziemy potrzebowali pewnych strategii redukcyjnych tak, aby móc usystematyzowaê zastosowanie -redukcji. Skupimy sií na dwóch strategiach redukcji: wywo aniem wed ug nazwy (call-by-name)orazwywo- aniem wed ug wartoúci (call-by-value). Z grubsza biorπc, strategia wywo ania wed ug nazwy zawsze redukuje redeks po oøony najbardziej na lewo i na zewnπtrz. Mówiπc úciúlej, przy danym wyraøeniu e 1 e 2, strategia sprawdza, czy e 1 jest -abstrakcjπ x.e 0 1. Jeúli tak, to stosuje -redukcjí do ca ego wyraøenia celem uzyskania [e 2 /x]e 0 1. W przeciwnym razie próbuje zredukowaê e 1 z zastosowaniem tej samej strategii redukcyjnej bez rozwaøania e 2 ; jeøeli w dalszym toku e 1 bídzie redukowa o sií do wartoúci (która bídzie musia a byê -abstrakcjπ), strategia zastosuje -redukcjí do ca ego wyraøenia. W konsekwencji drugie podwyraøenie w aplikacji (to znaczy e 2 w e 1 e 2 ) nigdy nie bídzie zredukowane. Strategia wywo ania wed ug wartoúci jest podobna do strategii wywo ania wed ug nazwy, ale redukuje drugie podwyraøenie w aplikacji do wartoúci v po zredukowaniu pierwszego podwyraøenia. Tym samym strategia wywo ania wed ug wartoúci stosuje -redukcjí wy πcznie do aplikacji postaci ( x.e)v. Odnotujmy tu, øe øadna z opisanych strategii nie redukuje wyraøeò wewnπtrz -abstrakcji, skπd w szczególnoúci wynika, øe wartoúci nie sπ w dalszym ciπgu redukowane. Jako przyk ad rozwaømy wyraøenie (id 1 id 2 )(id 3 ( z.id 4 z)), które redukuje sií na dwa róøne sposoby przy zastosowaniu dwóch róønych strategii redukcyjnych; id i jest tu skrótem oznaczajπcym funkcjí identycznoúciowπ x i.x i : wywo anie wed ug nazwy wywo anie wed ug wartoúci (id 1 id 2 )(id 3 ( z.id 4 z)) (id 1 id 2 )(id 3 ( z.id 4 z)) 7! id 2 (id 3 ( z.id 4 z)) 7! id 2 (id 3 ( z.id 4 z)) 7! id 3 ( z.id 4 z) 7! id 2 ( z.id 4 z) 7! z.id 4 z 7! z.id 4 z Redukcja rozjeødøa sií w drugim kroku: strategia przez wywo anie wed ug nazwy uøywa -redukcji do ca ego wyraøenia poniewaø nie musi analizowaê drugiego podwyraøenia id 3 ( z.id 4 z), podczas gdy strategia przez wywo anie wed ug wartoúci wybiera redukcjí drugiego podwyraøenia, które jeszcze nie jest wartoúciπ. Moøemy teraz wprowadziê regu y wnioskowania dla osπdu e 7! e 0, które bídziemy nazywali regu ami redukcji. Strategia wywo ania wed ug nazwy uøywa dwóch regu redukcji, Lam i App: e 1 7!e 0 1 e 1 e 2 7!e 0 1 e 2 Lam ( x.e)e 0 7![e 0 /x]e App
5 Strategia wywo ania wed ug wartoúci wykorzystuje dodatkowπ regu Í do redukowania drugiego podwyraøenia w aplikacjach; dla pozosta ych regu redukcji zapoøyczymy takie same nazwy jakie zastosowaliúmy dla strategii wywo ania wed ug nazwy: e 1 7!e 0 1 e 1 e 2 7!e 0 1 e 2 Lam e 2 7!e 0 2 ( x.e)e 2 7!( x.e)e 0 2 Arg ( x.e)e 0 7![e 0 /x]e App Pewnym minusem strategii wywo ania wed ug nazwy jest to, øe to samo wyraøenie moøe byê wartoúciowane wielokrotnie. Na przyk ad, ( x.xx)(( y.y)( z.z)) wartoúciuje ( y.y)( z.z) do z.z dwa razy: ( x.xx)(( y.y)( z.z)) 7! (( y.y)( z.z))(( y.y)( z.z)) 7! ( z.z)(( y.y)( z.z)) 7! (( y.y)( z.z)) 7! z.z W przypadku strategii wywo ania wed ug wartoúci, ( y.y)( z.z) jest wartoúciowane tylko raz: ( x.xx)(( y.y)( z.z)) 7! ( x.xx)( z.z) 7! ( z.z)( z.z) 7! z.z Z drugiej strony strategia wywo ania wed ug nazwy nigdy nie wartoúciuje wyraøeò, które nie wnoszπ niczego do wartoúciowaò. Na przyk ad ( t. f.f)(( y.y)( z.z))(( y 0.y 0 )( z 0.z 0 )) nie wartoúciuje ( y.y)( z.z), jako øe nie jest ono uøyte do wartoúciowania: ( t. f.f)(( y.y)( z.z))(( y 0.y 0 )( z 0.z 0 )) 7! ( f.f)(( y 0.y 0 )( z 0.z 0 )) 7!... z.z jest ignorowany w ko- Strategia wywo ania wed ug wartoúci wartoúciuje ( y.y)( z.z), ale rezultat lejnej redukcji: ( t. f.f)(( y.y)( z.z))(( y 0.y 0 )( z 0.z 0 )) 7! ( t. f.f)( z.z)(( y 0.y 0 )( z 0.z 0 )) 7! ( f.f)(( y 0.y 0 )( z 0.z 0 )) 7! Strategia wywo ania wed ug nazwy jest wykorzystywana przez jízyk funkcyjny Haskell. Haskell jest przyk adem leniwego jízyka funkcyjnego, poniewaø wartoúciuje argumenty do funkcji tylko wtedy, gdy jest to konieczne. W istocie Haskell wykorzystuje innπ strategií, zwanπ wywo aniem wed ug potrzeby (call-by-need), która semantycznie jest równowaøna wywo aniu wed ug nazwy, ale nigdy nie wartoúciuje tego samego wyraøenia wiícej, niø jeden raz. Strategia wywo ania wed ug wartoúci jest z kolei zaimplementowana w SML-u. Powiemy, øe wyraøenie jest w postaci normalnej, gdy nie stosuje sií do niego øadna regu a redukcji. Oczywiúcie kaøda wartoúê (która, w przypadku rachunku, jest -abstrakcjπ) jest w postaci normalnej.
6 42 Istniejπ wszelako wyraøenia w postaci normalnej, które nie sπ wartoúciami. Na przyk ad, x y.y jest w postaci normalnej, albowiem x nie moøe byê dalej zredukowane, ale nie jest teø wartoúciπ. BÍdziemy mówili, øe takie wyraøenie albo jego redukcja zatyka sií. O wyraøeniu, które sií zatyka, moøemy myúleê jak o wadliwym programie, który nie powinien pojawiê sií w procesie wartoúciowania. W dalszym ciπgu wyk adu omówimy rozszerzenie rachunku, tzw. rachunek z typami prostymi, który statycznie (a wiíc w czasie kompilacji) gwarantuje, øe program spe niajπcy pewne okreúlone warunki nigdy sií nie zatka Podstawianie. Zanim przejdziemy do definicji podstawiania w rachunku, bídziemy potrzebowali definicji zmiennych wolnych, które z kolei sπ dok adnπ przeciwnoúciπ zmiennych zwiπzanych. Zmienna wolna to zmienna, która nie jest zwiπzana w øadnej obejmujπcej jπ - abstrakcji. Na przyk ad, y w x.y jest zmiennπ wolnπ, poniewaø øadna z -abstrakcji postaci y.e jej nie wiπøe. Aby formalnie zdefiniowaê zmienne wolne, wprowadzimy indukcyjnie pojície zbioru FV(e) wszystkich zmiennych zwiπzanych w e: FV(x) = {x} FV( x.e) = FV(e) \{x} FV(e 1 e 2 ) = FV(e 1 ) [ FV(e 2 ) Jako øe kaøda zmienna jest albo wolna, albo zwiπzana, zmienna x w e taka, øe x /2 FV(e) musi byê zwiπzana w pewnej -abstrakcji. Powiemy, øe wyraøenie e jest domkniíte, jeúli nie zawiera zmiennych wolnych, czyli jeúli FV(e) =;. Oto kilka przyk adów: FV( x.x) = {} FV(xy) = {x, y} FV( x.xy) = {y} FV( y. x.xy) = {} FV(( x.xy)( x.xz)) = {y, z} Podstawianie [e/x]e 0 jest zdefiniowane indukcyjnie poprzez nastípujπce przypadki: [e/x]x = e [e/x]y = y jeúli x 6= y [e/x](e 1 e 2 ) = [e/x]e 1 [e/x]e 2. Chcπc podaê precyzyjnπ definicjí podstawiania dla pozosta ego przypadku [e/x] y.e 0, musimy najpierw zrozumieê dwie w asnoúci zmiennych. Pierwsza z nich jest taka, øe nazwa zmiennej zwiπzanej nie ma znaczenia, co zresztπ odpowiada naszej intuicji. Na przyk ad funkcja identycznoúciowa x.x wewnπtrz wyraøenia e moøe byê przepisana jako y.y dla dowolnej zmiennej y bez zmiany znaczenia e, jakoøe zarówno x.x jak i y.y oznaczajπ funkcjí identycznoúciowπ. Jako inny przyk ad moøemy przepisaê x. y.xy jako y. x.yx, gdzie obydwa wyraøenia oznaczajπ takπ samπ funkcjí, która stosuje pierwszy argument do drugiego. Formalnie uøywamy osπdu e e 0 aby powiedzieê, øe e moøe byê zapisane jako e 0 przez zmianí nazw zmiennych zwiπzanych w e i vice versa. Oto kilka przyk adów e e 0 : x.x y.y x. y.xy z. y.zy x. y.xy x. z.xz x. y.xy y. x.yx RelacjÍ bídziemy nazwaê -równowaønoúciπ. BÍdziemy teø mówiê, øe -konwersji e w e 0 przepisuje e jako e 0 przez zmianí nazw zmiennych zwiπzanych w e.
7 Omówiona przez nas pierwsza w asnoúê uzasadnia wprowadzenie nastípujπcego fragmentu definicji podstawiania: [e 0 /x] x.e = x.e Intuicyjnie, jeúli przepiszemy x.e jako innπ -abstrakcjí postaci y.e 00, gdzie y jest nowπ zmiennπ takπ, øe x 6= y, to podstawienie [e 0 /x] bídze zignorowane, poniewaø nigdzie w y.e 00 nie wystípuje x. Oto prosty przyk ad z e = x: [e 0 /x] x.x [e 0 /x] y.y = y.y x.x Uogólnienie tego przypadku jest takie, øe [e 0 /x] nie ma wp ywu na e o ile x nie jest zmiennπ wolnπ w e: [e 0 /x]e = e jeúli x/2 FV(e). Innymi s owy, bídziemy chcieli stosowaê [e 0 /x] do e tylko wtedy, gdy x jest zmiennπ wolnπ w e. Druga z w asnoúci, na które musimy zwróciê uwagí jest taka, øe zmienna wolna x w wyraøeniu e nigdy nie stanie sií zmiennπ zwiπzanπ; jeúli explicite zastπpimy jπ przez inne wyraøenie e 0,takjakw[e 0 /x]e, po prostu zniknie. Aby lepiej zrozumieê tí w asnoúê, rozwaømy naiwnπ definicjí podstawienia [e 0 /x] y.e, gdzie y moøe, ale nie musi byê zmiennπ wolnπ w e 0 : [e 0 /x] y.e = y.[e 0 /x]e jeúli x 6= y. Teraz jeúli y jest zmiennπ wolnπ w e 0, automatycznie staje sií zmiennπ zwiπzanπ w dopuszczalne. Oto przyk ad ukazujπcy takπ anomalií: ( x. y.x)y 7! [y/x] y.x = y.[y/x]x = y.y 43 y.[e 0 /x]e, co nie jest Przed podstawieniem y.x jest -abstrakcjπ która ignoruje swój argument i zwraca x, ale po podstawieniu zamienia sií w funkcjí identycznoúciowπ! W przyk adzie tym zmienna wolna y, która ma byê podstawiona za x powinna dalej byê wolna po podstawieniu, ale przypadkowo zostaje przechwycona przez -abstrakcjí y.x i staje sií zmiennπ zwiπzanπ. Tego typu zjawisko bídziemy nazywali przechwytywaniem zmiennych, które k óci sií z naturalnπ intuicjπ, øe zmienna wolna pozostaje wolna, o ile nie zostanie zastπpiona przez inne wyraøenie. Ta obserwacja uogólnia sií do nastípujπcej definicji [e 0 /x] y.e, którπ nazwiemy podstawieniem unikajπcym przechwytywania zmiennych: [e 0 /x] y.e = y.[e 0 /x]e jeúli x 6= y, y /2 FV(e 0 ). Jeúli nastπpi przechwycenie zmiennej, poniewaø y 2 FV(e 0 ), zmieniamy nazwí y na innπ zmiennπ, która nie jest wolna w e. Na przyk ad, ( x. y.xy)y moøna bezpiecznie zredukowaê po uprzedniej zmianie nazwy zmiennej zwiπzanej y na nowπ zmiennπ z: ( x. y.xy)y 7! [y/x] y.xy [y/x] z.xz = z.yz. Podamy teraz definicjí osπdu e e 0. PotrzebowaÊ bídziemy w tym celu pojícia wymiany zmiennych [x $ y]e, która polega na zamianie wszystkich wystπpieò x w e na y i wszystkich wystπpieò y w e na x. Podkreúlmy raz jeszcze, øe wymieniamy wszystkie wystπpienia zmiennych, nawet te bezpoúrednio po w -abstrakcjach, co zresztπ czyni implementacjí [x $ y]e doúê bezpoúredniπ. Oto przyk ad: [x $ y] x. y.xy = y.[x $ y] y.xy = y. x.[x $ y](xy) = y. x.yx. Definicja e e 0 jest dana indukcyjnie poprzez nastípujπce regu y:
8 44 e x x V ar 1 e e 2 e 0 2 e 1 e 2 e App 0 1 e0 2 e e 0 x6=y y/2fv(e) x.e Lam x.e 0 x.e y.e 0 [x$y]e e 0 Lam 0 Regu a Lam powiada, øe aby porównaê x.e z x.e 0, które wiπøπ tí samπ zmiennπ, porównujemy e z e 0. Aby porównaê dwie -abstrakcje wiπøπce róøne zmienne, stosujemy regu Í Lam 0. Chcπc zobaczyê, dlaczego regu a Lam 0 dzia a, musimy zrozumieê, co pociπga za sobπ przes anka y/2 FV(e). Jako øe y/2 FV(e) pociπga y/2 FV( x.e) i oczywiúcie x/2 FV( x.e), zewnítrzny obserwator nie zauwaøy róønicy nawet wtedy, gdy zmienne x i y zosta yby dos ownie wymienione wewnπtrz x.e. Innymi s owy x.e oraz [x! y] x.e nie róøniπ sií z punktu widzenia zewnítrznego obserwatora. Poniewaø [x! y] x.e = y.[x! y]e, porównujemy [x! y]e z e 0, co jest dok adnie treúciπ trzeciej przes anki w regule Lam 0. Jako przyk ad podamy dowód x. y.xy y. x.yx: x 6= y V ar y y V ar x x yx App yx Lam y /2 FV( y.xy) x.yx x.yx Lam x. y.xy y. x.yx Zadanie 9. Czy moøna udowodniê, øe x.e y.e 0, jeúli x 6= y oraz y 2 FV(e)? Zadanie 10. Za óømy, øe x/2 FV(e) oraz y/2 FV(e). Udowodnij, øe e [x $ y]e. Moøemy teraz podaê kompletnπ definicjí podstawiania: [e/x]x = e [e/x]y = y jeúli x 6= y [e/x](e 1 e 2 ) = [e/x]e 1 [e/x]e 2. [e 0 /x] x.e = x.e [e 0 /x] y.e = y.[e 0 /x]e jeúli x 6= y, y /2 FV(e 0 ) [e 0 /x] y.e = z.[e 0 /x][y $ z]e jeúli x 6= y, y 2 FV(e 0 ) gdzie z 6= y, z /2 FV(e),z 6= x, z /2 FV(e 0 ). Ostatnie równanie pociπga w szczególnoúci, øe jeúli y jest zmiennπ wolnπ w e 0, moøemy wybraê innπ zmiennπ z spe niajπcπ warunki podane po s owie gdzie i przepisaê y.e jako z.[y $ z]e zgodnie z nastípujπcπ -konwersjπ: y 6= z z /2 FV(e) [y $ z]e [y $ z]e Lam 0 y.e z.[y $ z]e Za oøenie z/2 FV(e 0 ) pozwala przepisaê [e 0 /x] z.[y $ z]e jako z.[e 0 /x][y $ z]e. W wiíkszoúci przypadków uzyskujemy zmiennπ z po prostu przez wygenerowanie nowej zmiennej. W takim wypadku nigdy nie zamieniamy z przez y i tym samym ostatnie równanie moøna przepisaê jako: [e 0 /x] y.e = z.[e 0 /x][z/y]e. Tym nie mniej tak zapisane równanie jest mniej wydajne. Rozwaømy na przyk ad e = xy( y.xy). [y $ z]e daje xz( z.xz) i [e 0 /x][y $ z]e nie przechwytuje zmiennej: [e 0 /x][y $ z]e =[e 0 /x](xz( z.xz)) = e 0 z( z.e 0 z). Dla kontrastu, [z/y]e daje xz( y.xy) i [e 0 /x][z/y]e przechwytuje zmiennπ w [e 0 /x] y.xy: [e 0 /x][z/y]e =[e 0 /x](xz( y.xy)) = e 0 z[e 0 /x]( y.xy). Tym samym musimy wygenerowaê jeszcze jednπ nowπ zmiennπ.
9 Zadanie 11. DokoÒczyÊ -konwersje w podanych niøej przyk adach, w których dokonano juø wyboru nowej zmiennej: (1) x. x 0.xx 0 x 0... (2) x. x 0.xx 0 x 00 x 0... (3) x. x 0.xx 0 x 00 x
P. Urzyczyn: Materia ly do wyk ladu z semantyki. Uproszczony 1 j. ezyk PCF
29 kwietnia 2013, godzina 23: 56 strona 1 P. Urzyczyn: Materia ly do wyk ladu z semantyki Uproszczony 1 j ezyk PCF Sk ladnia: Poniżej Γ oznacza otoczenie typowe, czyli zbiór deklaracji postaci (x : τ).
Elementy rachunku lambda. dr hab. inż. Joanna Józefowska, prof. PP 1
Elementy rachunku lambda λ 1 Notacja λ x 3x + 7 3x + 7 jest różniczkowalna 3x + 7 jest mniejsze od 2 (2,3) 5 f(2, 3) = 2 + 3 g(2) = 2 + 3 λx(3x + 7) 3x + 7 λx λy(x + y) = λxy(x + y) λx(x + 3) 2 Rachunek
Programowanie funkcyjne. Wykªad 13
Programowanie funkcyjne. Wykªad 13 Siªa wyrazu rachunku lambda Zdzisªaw Spªawski Zdzisªaw Spªawski: Programowanie funkcyjne. Wykªad 13, Siªa wyrazu rachunku lambda 1 Wst p Warto±ci logiczne Liczby naturalne
Wstęp do Programowania potok funkcyjny
Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 Outline Procedury wyższych rzędów 1 Procedury wyższych rzędów jako abstrakcje konstrukcji programistycznych Intuicje Procedury wyższych rzędów
1. Rozwiązać układ równań { x 2 = 2y 1
Dzień Dziecka z Matematyką Tomasz Szymczyk Piotrków Trybunalski, 4 czerwca 013 r. Układy równań szkice rozwiązań 1. Rozwiązać układ równań { x = y 1 y = x 1. Wyznaczając z pierwszego równania zmienną y,
WYRAŻENIA ALGEBRAICZNE
WYRAŻENIA ALGEBRAICZNE Wyrażeniem algebraicznym nazywamy wyrażenie zbudowane z liczb, liter, nawiasów oraz znaków działań, na przykład: Symbole literowe występujące w wyrażeniu algebraicznym nazywamy zmiennymi.
Pochodne cz ¾astkowe i ich zastosowanie.
Pochodne cz ¾astkowe i ich zastosowanie. Adam Kiersztyn Lublin 2013 Adam Kiersztyn () Pochodne cz ¾astkowe i ich zastosowanie. maj 2013 1 / 18 Zanim przejdziemy do omawiania pochodnych funkcji wielu zmiennych
Twierdzenia Gödla dowody. Czy arytmetyka jest w stanie dowieść własną niesprzeczność?
Semina Nr 3 Scientiarum 2004 Twierdzenia Gödla dowody. Czy arytmetyka jest w stanie dowieść własną niesprzeczność? W tym krótkim opracowaniu chciałbym przedstawić dowody obu twierdzeń Gödla wykorzystujące
domykanie relacji, relacja równoważności, rozkłady zbiorów
1 of 8 2012-03-28 17:45 Logika i teoria mnogości/wykład 5: Para uporządkowana iloczyn kartezjański relacje domykanie relacji relacja równoważności rozkłady zbiorów From Studia Informatyczne < Logika i
5. OKREŚLANIE WARTOŚCI LOGICZNEJ ZDAŃ ZŁOŻONYCH
5. OKREŚLANIE WARTOŚCI LOGICZNEJ ZDAŃ ZŁOŻONYCH Temat, którym mamy się tu zająć, jest nudny i żmudny będziemy się uczyć techniki obliczania wartości logicznej zdań dowolnie złożonych. Po co? możecie zapytać.
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
Definicje i przykłady
Rozdział 1 Definicje i przykłady 1.1 Definicja równania różniczkowego 1.1 DEFINICJA. Równaniem różniczkowym zwyczajnym rzędu n nazywamy równanie F (t, x, ẋ, ẍ,..., x (n) ) = 0. (1.1) W równaniu tym t jest
Metody Kompilacji Wykład 3
Metody Kompilacji Wykład 3 odbywa się poprzez dołączenie zasad(reguł) lub fragmentów kodu do produkcji w gramatyce. Włodzimierz Bielecki WI ZUT 2 Na przykład, dla produkcji expr -> expr 1 + term możemy
Programowanie obiektowe - 1.
Programowanie obiektowe - 1 Mariusz.Masewicz@cs.put.poznan.pl Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która
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
Geometria. Rozwiązania niektórych zadań z listy 2
Geometria. Rozwiązania niektórych zadań z listy 2 Inne rozwiązanie zadania 2. (Wyznaczyć równanie stycznej do elipsy x 2 a 2 + y2 b 2 = 1 w dowolnym jej punkcie (x 0, y 0 ). ) Przypuśćmy, że krzywa na
Wdalszej czíúci artyku u przedstawione
38 firmy, ludzie, produkty Bezpieczniki topikowe i wyłączniki nadprądowe niskiego napięcia Roman Kłopocki Celem niniejszego artyku u, ktûry jest pierwszπ czíúciπ cyklu publikacji, jest przedswienie w prosty
Czym są właściwości. Poprawne projektowanie klas
Z akcesorów get i set korzysta każdy kto programuje w C#. Stanowią one duże udogodnienie w programowaniu obiektowym. Zapewniają wygodę, bezpieczeństwo i znacząco skracają kod. Akcesory są ściśle związane
Luty 2001 Algorytmy (7) 2000/2001 s-rg@siwy.il.pw.edu.pl
System dziesiętny 7 * 10 4 + 3 * 10 3 + 0 * 10 2 + 5 *10 1 + 1 * 10 0 = 73051 Liczba 10 w tym zapisie nazywa się podstawą systemu liczenia. Jeśli liczba 73051 byłaby zapisana w systemie ósemkowym, co powinniśmy
3. Wykład 3: Dowody indukcyjne, strategie dowodowe Dowody indukcyjne. Dotychczas zobaczyliśmy w jaki sposób można specyfikować definicje
3. Wykład 3: Dowody indukcyjne, strategie dowodowe. 3.1. Dowody indukcyjne. Dotychczas zobaczyliśmy w jaki sposób można specyfikować definicje indukcyjne kategorii syntaktycznych lub osądów, czy też w
13. Równania różniczkowe - portrety fazowe
13. Równania różniczkowe - portrety fazowe Grzegorz Kosiorowski Uniwersytet Ekonomiczny w Krakowie rzegorz Kosiorowski (Uniwersytet Ekonomiczny 13. wrównania Krakowie) różniczkowe - portrety fazowe 1 /
PROE wykład 7 kontenery tablicowe, listy. dr inż. Jacek Naruniec
PROE wykład 7 kontenery tablicowe, listy dr inż. Jacek Naruniec Prosty kontener oparty na tablicach Funkcja dodawanie pojedynczego słonia do kontenera: 1 2 3 4 5 6 7 11 12 13 14 15 16 17 21 22 23 24 25
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
Wstęp do Programowania potok funkcyjny
Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 Outline 1 Kilka podstawowych pojęć Definition Programy imperatywne zmieniają stan, czyli wartości zmiennych. Asercja = warunek logiczny, który
Zbiory, relacje i funkcje
Zbiory, relacje i funkcje Zbiory będziemy zazwyczaj oznaczać dużymi literami A, B, C, X, Y, Z, natomiast elementy zbiorów zazwyczaj małymi. Podstawą zależność między elementem zbioru a zbiorem, czyli relację
Pochodne cząstkowe i ich zastosowanie. Ekstrema lokalne funkcji
Pochodne cząstkowe i ich zastosowanie. Ekstrema lokalne funkcji Adam Kiersztyn Lublin 2014 Adam Kiersztyn () Pochodne cząstkowe i ich zastosowanie. Ekstrema lokalne funkcji maj 2014 1 / 24 Zanim przejdziemy
-termami -wyrażeń pre-termami abstrakcją aplikacją zmiennych wolnych zmienną związaną domknięte
8. Wykład 8: Rachunek λ. Wprowadzenie. Rachunek lambda i logika kombinatoryczna powstały w latach trzydziestych dwudziestego wieku. Początkowo miały stanowić alternatywne wobec teorii mnogości podejście
PARADYGMATY PROGRAMOWANIA Wykład 4
PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej
Metody Kompilacji Wykład 1 Wstęp
Metody Kompilacji Wykład 1 Wstęp Literatura: Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman: Compilers: Princiles, Techniques, and Tools. Addison-Wesley 1986, ISBN 0-201-10088-6 Literatura: Alfred V. Aho,
Metody Kompilacji Wykład 8 Analiza Syntaktyczna cd. Włodzimierz Bielecki WI ZUT
Metody Kompilacji Wykład 8 Analiza Syntaktyczna cd Analiza Syntaktyczna Wstęp Parser dostaje na wejściu ciąg tokenów od analizatora leksykalnego i sprawdza: czy ciąg ten może być generowany przez gramatykę.
3.4. Opis konfiguracji layoutów.
Definicja layout-ów dla tablicy odczytywana jest z tabeli w bazie danych: [UnitId_System] Gdańsk = 42, Gdynia = 43 [UnitId_Subsytem] 6 = TZT, 7 = ZZT [UnitId_Unit] identyfikator obiektu [Update_TimeStamp]
Elementy cyfrowe i układy logiczne
Elementy cyfrowe i układy logiczne Wykład Legenda Zezwolenie Dekoder, koder Demultiplekser, multiplekser 2 Operacja zezwolenia Przykład: zamodelować podsystem elektroniczny samochodu do sterowania urządzeniami:
Wykład 6. Reguły inferencyjne systemu aksjomatycznego Klasycznego Rachunku Zdań
Andrzej Wiśniewski Logika I Materiały do wykładu dla studentów kognitywistyki Wykład 6. Reguły inferencyjne systemu aksjomatycznego Klasycznego Rachunku Zdań System aksjomatyczny logiki Budując logikę
Algebra Boole a i jej zastosowania
lgebra oole a i jej zastosowania Wprowadzenie Niech dany będzie zbiór dwuelementowy, którego elementy oznaczymy symbolami 0 oraz 1, tj. {0, 1}. W zbiorze tym określamy działania sumy :, iloczynu : _ oraz
1. Podstawy budowania wyra e regularnych (Regex)
Dla wi kszo ci prostych gramatyk mo na w atwy sposób napisa wyra enie regularne które b dzie s u y o do sprawdzania poprawno ci zda z t gramatyk. Celem niniejszego laboratorium b dzie zapoznanie si z wyra
Metoda eliminacji Gaussa
Metoda eliminacji Gaussa Rysunek 3. Rysunek 4. Rozpoczynamy od pierwszego wiersza macierzy opisującej nasz układ równań (patrz Rys.3). Zakładając, że element a 11 jest niezerowy (jeśli jest, to niezbędny
Podstawy programowania. Wykład PASCAL. Zmienne wskaźnikowe i dynamiczne. dr Artur Bartoszewski - Podstawy prograowania, sem.
Podstawy programowania Wykład PASCAL Zmienne wskaźnikowe i dynamiczne 1 dr Artur Bartoszewski - Podstawy prograowania, sem. 1- WYKŁAD Rodzaje zmiennych Zmienne dzielą się na statyczne i dynamiczne. Zmienna
Programowanie komputerów
Programowanie komputerów Wykład 1-2. Podstawowe pojęcia Plan wykładu Omówienie programu wykładów, laboratoriów oraz egzaminu Etapy rozwiązywania problemów dr Helena Dudycz Katedra Technologii Informacyjnych
Logika Stosowana. Wykład 1 - Logika zdaniowa. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2016/2017
Logika Stosowana Wykład 1 - Logika zdaniowa Marcin Szczuka Instytut Informatyki UW Wykład monograficzny, semestr letni 2016/2017 Marcin Szczuka (MIMUW) Logika Stosowana 2017 1 / 30 Plan wykładu 1 Język
Podstawy Informatyki Gramatyki formalne
Podstawy Informatyki alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu 1 Języki i gramatyki Analiza syntaktyczna Semantyka 2 Podstawowe pojęcia Gramatyki wg Chomsky ego Notacja Backusa-Naura
Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak
Indukcja Materiały pomocnicze do wykładu wykładowca: dr Magdalena Kacprzak Charakteryzacja zbioru liczb naturalnych Arytmetyka liczb naturalnych Jedną z najważniejszych teorii matematycznych jest arytmetyka
Język C++ zajęcia nr 2
Język C++ zajęcia nr 2 Inicjalizacja Definiowanie obiektu może być połączone z nadaniem mu wartości początkowej za pomocą inicjalizatora, który umieszczany jest po deklaratorze obiektu. W języku C++ inicjalizator
WSTĘP DO PROGRAMOWANIA
Stefan Sokołowski WSTĘP DO PROGRAOWANIA Inst Informatyki UG, Gdańsk, 2011/2012 Wykład1ALGORYTAPROGRA,str1 WSTĘP DO PROGRAOWANIA reguły gry Zasadnicze informacje: http://infugedupl/ stefan/dydaktyka/wstepdoprog
Funkcje wielu zmiennych
Funkcje wielu zmiennych 13 Zbiory w przestrzeni Definicja Przestrzeni a trójwymiarow a (przestrzeni a) nazywamy zbiór wszystkich trójek uporz adkowanych (x y z) gdzie x y z R. Przestrzeń tȩ oznaczamy symbolem
1 Rozk ad normalny. Szczególnym przypadkiem jest standardowy rozk ad normalny N (0; 1), wartości
Studia podyplomowe w zakresie technik internetowych i komputerowej analizy danych Podstawy statystyki matematycznej Adam Kiersztyn 2 godziny lekcyjne 2011-10-23 8.20-9.50 1 Rozk ad normalny Jednym z najwa
Konstrukcja liczb rzeczywistych przy pomocy ciągów Cauchy ego liczb wymiernych
Konstrukcja liczb rzeczywistych przy pomocy ciągów Cauchy ego liczb wymiernych Marcin Michalski 14.11.014 1 Wprowadzenie Jedną z intuicji na temat liczb rzeczywistych jest myślenie o nich jako liczbach,
Obliczenia iteracyjne
Lekcja Strona z Obliczenia iteracyjne Zmienne iteracyjne (wyliczeniowe) Obliczenia iteracyjne wymagają zdefiniowania specjalnej zmiennej nazywanej iteracyjną lub wyliczeniową. Zmienną iteracyjną od zwykłej
Matematyczne Podstawy Informatyki
Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 2013/2014 Gramatyki bezkontekstowe I Gramatyką bezkontekstową
Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =
Systemy liczbowe Dla każdej liczby naturalnej x Î N oraz liczby naturalnej p >= 2 istnieją jednoznacznie wyznaczone: liczba n Î N oraz ciąg cyfr c 0, c 1,..., c n-1 (gdzie ck Î {0, 1,..., p - 1}) taki,
Pracownia Komputerowa wyk ad V
Pracownia Komputerowa wyk ad V dr Magdalena Posiada a-zezula Magdalena.Posiadala@fuw.edu.pl http://www.fuw.edu.pl/~mposiada Magdalena.Posiadala@fuw.edu.pl 1 Reprezentacje liczb i znaków Liczby: Reprezentacja
'()(*+,-./01(23/*4*567/8/23/*98:)2(!."/+)012+3$%-4#"4"$5012#-4#"4-6017%*,4.!"#$!"#%&"!!!"#$%&"#'()%*+,-+
'()(*+,-./01(23/*4*567/8/23/*98:)2(!."/+)012+3$%-4#"4"$5012#-4#"4-6017%*,4.!"#$!"#%&"!!!"#$%&"#'()%*+,-+ Ucze interpretuje i tworzy teksty o charakterze matematycznym, u ywa j zyka matematycznego do opisu
FUNKCJA LINIOWA - WYKRES
FUNKCJA LINIOWA - WYKRES Wzór funkcji liniowej (Postać kierunkowa) Funkcja liniowa jest podstawowym typem funkcji. Jest to funkcja o wzorze: y = ax + b a i b to współczynniki funkcji, które mają wartości
Zadanie 2: Arytmetyka symboli
1 Cel ćwiczenia Zadanie 2: Arytmetyka symboli Wykształcenie umiejętności abstrahowania operacji arytmetycznych. Zapoznanie się i przećwiczenie mechanizmu tworzenia przeciążeń funkcji operatorowych. Utrwalenie
Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.
Polimorfizm jest filarem programowania obiektowego, nie tylko jeżeli chodzi o język C++. Daje on programiście dużą elastyczność podczas pisania programu. Polimorfizm jest ściśle związany z metodami wirtualnymi.
Bazy danych. Andrzej Łachwa, UJ, 2013 andrzej.lachwa@uj.edu.pl www.uj.edu.pl/web/zpgk/materialy 9/15
Bazy danych Andrzej Łachwa, UJ, 2013 andrzej.lachwa@uj.edu.pl www.uj.edu.pl/web/zpgk/materialy 9/15 Przechowywanie danych Wykorzystanie systemu plików, dostępu do plików za pośrednictwem systemu operacyjnego
Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.
Zrozumienie funkcji danych statycznych jest podstawą programowania obiektowego. W niniejszym artykule opiszę zasadę tworzenia klas statycznych w C#. Oprócz tego dowiesz się czym są statyczne pola i metody
Indukcja matematyczna
Indukcja matematyczna 1 Zasada indukcji Rozpatrzmy najpierw następujący przykład. Przykład 1 Oblicz sumę 1 + + 5 +... + (n 1). Dyskusja. Widzimy że dla n = 1 ostatnim składnikiem powyższej sumy jest n
Wykład 9: Polimorfizm i klasy wirtualne
Programowanie obiektowe Wykład 9: i klasy wirtualne 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD Programowanie obiektowe i metody wirtualne 2 W programowaniu obiektowym polimorfizm
Programowanie - wykład 4
Programowanie - wykład 4 Filip Sośnicki Wydział Fizyki Uniwersytet Warszawski 20.03.2019 Przypomnienie Prosty program liczący i wyświeltający wartość silni dla wprowadzonej z klawiatury liczby: 1 # include
1 Miary asymetrii i koncentracji
Studia podyplomowe w zakresie technik internetowych i komputerowej analizy danych Podstawy statystyki opisowej Adam Kiersztyn 3 godziny lekcyjne 2011-10-22 10.10-12.30 1 Miary asymetrii i koncentracji
Wniosek o rejestrację podmiotu w Krajowym Rejestrze Sądowym 1) FUNDACJA, STOWARZYSZENIE, INNA ORGANIZACJA SPOŁECZNA LUB ZAWODOWA
KRS-W20 Sygnatura akt (wypełnia sąd) CORS Centrum Ogólnopolskich Rejestrów Sądowych Krajowy Rejestr Sądowy Wniosek o rejestrację podmiotu w Krajowym Rejestrze Sądowym 1) FUNDACJA, STOWARZYSZENIE, INNA
ROZPORZÑDZENIE MINISTRA GOSPODARKI 1) z dnia 7 grudnia 2007 r.
1765 ROZPORZÑDZENIE MINISTRA GOSPODARKI 1) z dnia 7 grudnia 2007 r. w sprawie wymagaƒ, którym powinny odpowiadaç analizatory spalin samochodowych, oraz szczegó owego zakresu sprawdzeƒ wykonywanych podczas
RACHUNEK ZDAŃ 7. Dla każdej tautologii w formie implikacji, której poprzednik również jest tautologią, następnik także jest tautologią.
Semantyczne twierdzenie o podstawianiu Jeżeli dana formuła rachunku zdań jest tautologią i wszystkie wystąpienia pewnej zmiennej zdaniowej w tej tautologii zastąpimy pewną ustaloną formułą, to otrzymana
Regulamin Konkursu Start up Award 9. Forum Inwestycyjne 20-21 czerwca 2016 r. Tarnów. Organizatorzy Konkursu
Regulamin Konkursu Start up Award 9. Forum Inwestycyjne 20-21 czerwca 2016 r. Tarnów 1 Organizatorzy Konkursu 1. Organizatorem Konkursu Start up Award (Konkurs) jest Fundacja Instytut Studiów Wschodnich
Wykład z równań różnicowych
Wykład z równań różnicowych 1 Wiadomości wstępne Umówmy się, że na czas tego wykładu zrezygnujemy z oznaczania n-tego wyrazu ciągu symbolem typu x n, y n itp. Zamiast tego pisać będziemy x (n), y (n) itp.
Programowanie deklaratywne
Programowanie deklaratywne Artur Michalski Informatyka II rok Plan wykładu Wprowadzenie do języka Prolog Budowa składniowa i interpretacja programów prologowych Listy, operatory i operacje arytmetyczne
3. Macierze i Układy Równań Liniowych
3. Macierze i Układy Równań Liniowych Rozważamy równanie macierzowe z końcówki ostatniego wykładu ( ) 3 1 X = 4 1 ( ) 2 5 Podstawiając X = ( ) x y i wymnażając, otrzymujemy układ 2 równań liniowych 3x
1 Praktyczne metody wyznaczania podstawowych miar bez zastosowania komputerów
Kurs w zakresie zaawansowanych metod komputerowej analizy danych Podstawy statystycznej analizy danych 8.03.014 - godziny ćwiczeń autor: Adam Kiersztyn 1 Praktyczne metody wyznaczania podstawowych miar
Definiowanie kategorii syntaktycznych przez indukcję
Definiowanie kategorii syntaktycznych przez indukcję Istotnym składnikiem definicji języka programowania jest jego składnia syntaktyczna, dzięki której jesteśmy w stanie odpowiedzieć jaki program (rozumiany
Np. Olsztyn leży nad Łyną - zdanie prawdziwe, wartość logiczna 1 4 jest większe od 5 - zdanie fałszywe, wartość logiczna 0
ĆWICZENIE 1 Klasyczny Rachunek Zdań (KRZ): zdania w sensie logicznym, wartości logiczne, spójniki logiczne, zmienne zdaniowe, tabele prawdziwościowe dla spójników logicznych, formuły, wartościowanie zbioru
Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada
Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada Spis treści 1 Wprowadzenie 1 2 Dane i kod 2 3 Wyrażenia 2 3.1 Operacje arytmetyczne i logiczne.................. 2 3.2 Podstawowe
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
Pracownia Komputerowa wyk ad VI
Pracownia Komputerowa wyk ad VI dr Magdalena Posiada a-zezula Magdalena.Posiadala@fuw.edu.pl http://www.fuw.edu.pl/~mposiada Magdalena.Posiadala@fuw.edu.pl 1 Przypomnienie 125 (10) =? (2) Liczby ca kowite
Wyk lad 3 Wyznaczniki
1 Określenie wyznacznika Wyk lad 3 Wyznaczniki Niech A bedzie macierza kwadratowa stopnia n > 1 i niech i, j bed a liczbami naturalnymi n Symbolem A ij oznaczać bedziemy macierz kwadratowa stopnia n 1
1. Liczby naturalne, podzielność, silnie, reszty z dzielenia
1. Liczby naturalne, podzielność, silnie, reszty z dzielenia kwadratów i sześcianów przez małe liczby, cechy podzielności przez 2, 4, 8, 5, 25, 125, 3, 9. 26 września 2009 r. Uwaga: Przyjmujemy, że 0 nie
Matematyka dyskretna. Andrzej Łachwa, UJ, /15
Matematyka dyskretna Andrzej Łachwa, UJ, 2013 andrzej.lachwa@uj.edu.pl 7/15 Rachunek różnicowy Dobrym narzędziem do obliczania skończonych sum jest rachunek różnicowy. W rachunku tym odpowiednikiem operatora
Wyk lad 4 Dzia lania na macierzach. Określenie wyznacznika
Wyk lad 4 Dzia lania na macierzach Określenie wyznacznika 1 Określenie macierzy Niech K bedzie dowolnym cia lem oraz niech n i m bed a dowolnymi liczbami naturalnymi Prostokatn a tablice a 11 a 12 a 1n
Rejestr Personelu Medycznego
Rejestr Personelu Medycznego Rejestr personelu medycznego W systemie SZOI pojawiäa siå nowa funkcjonalnoçé zwiñzana z rejestrem personelu medycznego. Zanim przystñpiñ PaÖstwo do wypeäniania oferty muszñ
Logika binarna. Prawo łączności mówimy, że operator binarny * na zbiorze S jest łączny gdy (x * y) * z = x * (y * z) dla każdego x, y, z S.
Logika binarna Logika binarna zajmuje się zmiennymi mogącymi przyjmować dwie wartości dyskretne oraz operacjami mającymi znaczenie logiczne. Dwie wartości jakie mogą te zmienne przyjmować noszą przy tym
FUNKCJA LINIOWA - WYKRES. y = ax + b. a i b to współczynniki funkcji, które mają wartości liczbowe
FUNKCJA LINIOWA - WYKRES Wzór funkcji liniowej (postać kierunkowa) Funkcja liniowa to funkcja o wzorze: y = ax + b a i b to współczynniki funkcji, które mają wartości liczbowe Szczególnie ważny w postaci
10. Translacja sterowana składnią i YACC
10. Translacja sterowana składnią i YACC 10.1 Charakterystyka problemu translacja sterowana składnią jest metodą generacji przetworników tekstu języków, których składnię opisano za pomocą gramatyki (bezkontekstowej)
Dalszy ciąg rachunku zdań
Dalszy ciąg rachunku zdań Wszystkie możliwe funktory jednoargumentowe p f 1 f 2 f 3 f 4 0 0 0 1 1 1 0 1 0 1 Wszystkie możliwe funktory dwuargumentowe p q f 1 f 2 f 3 f 4 f 5 f 6 f 7 f 8 f 9 f 10 f 11 f
W tym elemencie większość zdających nie zapisywała za pomocą równania reakcji procesu zobojętniania tlenku sodu mianowanym roztworem kwasu solnego.
W tym elemencie większość zdających nie zapisywała za pomocą równania reakcji procesu zobojętniania tlenku sodu mianowanym roztworem kwasu solnego. Ad. IV. Wykaz prac według kolejności ich wykonania. Ten
Regulamin konkursu Konkurs z Lokatą HAPPY II edycja
Regulamin konkursu Konkurs z Lokatą HAPPY II edycja I. Postanowienia ogólne: 1. Konkurs pod nazwą Konkurs z Lokatą HAPPY II edycja (zwany dalej: Konkursem ), organizowany jest przez spółkę pod firmą: Grupa
Liczby zespolone. x + 2 = 0.
Liczby zespolone 1 Wiadomości wstępne Rozważmy równanie wielomianowe postaci x + 2 = 0. Współczynniki wielomianu stojącego po lewej stronie są liczbami całkowitymi i jedyny pierwiastek x = 2 jest liczbą
1 Macierz odwrotna metoda operacji elementarnych
W tej części skupimy się na macierzach kwadratowych. Zakładać będziemy, że A M(n, n) dla pewnego n N. Definicja 1. Niech A M(n, n). Wtedy macierzą odwrotną macierzy A (ozn. A 1 ) nazywamy taką macierz
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
Algorytmy i struktury danych. Wykład 4
Wykład 4 Różne algorytmy - obliczenia 1. Obliczanie wartości wielomianu 2. Szybkie potęgowanie 3. Algorytm Euklidesa, liczby pierwsze, faktoryzacja liczby naturalnej 2017-11-24 Algorytmy i struktury danych
Znaki w tym systemie odpowiadają następującym liczbom: I=1, V=5, X=10, L=50, C=100, D=500, M=1000
SYSTEMY LICZBOWE I. PODZIAŁ SYSTEMÓW LICZBOWYCH: systemy liczbowe: pozycyjne (wartośd cyfry zależy od tego jaką pozycję zajmuje ona w liczbie): niepozycyjne (addytywne) (wartośd liczby jest sumą wartości
Baza w jądrze i baza obrazu ( )
Przykład Baza w jądrze i baza obrazu (839) Znajdź bazy jądra i obrazu odwzorowania α : R 4 R 3, gdzie α(x, y, z, t) = (x + 2z + t, 2x + y 3z 5t, x y + z + 4t) () zór ten oznacza, że α jest odwzorowaniem
Technika mikroprocesorowa oraz
86 firmy, ludzie, produkty Sprawdzanie bezpieczeñstwa instalacji elektrycznych niskiego napiêcia Tomasz Koczorowicz Oferta rynkowa przyrzπdûw do pomiarûw instalacji elektrycznych niskiego napiícia pozwala
Uwaga 1.2. Niech (G, ) będzie grupą, H 1, H 2 < G. Następujące warunki są równoważne:
1. Wykład 1: Produkty grup. Produkty i koprodukty grup abelowych. Przypomnijmy konstrukcje słabych iloczynów (sum) prostych i iloczynów (sum) prostych grup znane z kursowego wykładu algebry. Ze względu
Rozdział 1. Wektory losowe. 1.1 Wektor losowy i jego rozkład
Rozdział 1 Wektory losowe 1.1 Wektor losowy i jego rozkład Definicja 1 Wektor X = (X 1,..., X n ), którego każda współrzędna jest zmienną losową, nazywamy n-wymiarowym wektorem losowym (krótko wektorem
Wykład I. Wprowadzenie do baz danych
Wykład I Wprowadzenie do baz danych Trochę historii Pierwsze znane użycie terminu baza danych miało miejsce w listopadzie w 1963 roku. W latach sześcdziesątych XX wieku został opracowany przez Charles
HAŚKO I SOLIŃSKA SPÓŁKA PARTNERSKA ADWOKATÓW ul. Nowa 2a lok. 15, 50-082 Wrocław tel. (71) 330 55 55 fax (71) 345 51 11 e-mail: kancelaria@mhbs.
HAŚKO I SOLIŃSKA SPÓŁKA PARTNERSKA ADWOKATÓW ul. Nowa 2a lok. 15, 50-082 Wrocław tel. (71) 330 55 55 fax (71) 345 51 11 e-mail: kancelaria@mhbs.pl Wrocław, dnia 22.06.2015 r. OPINIA przedmiot data Praktyczne
Układy równań i nierówności liniowych
Układy równań i nierówności liniowych Wiesław Krakowiak 1 grudnia 2010 1 Układy równań liniowych DEFINICJA 11 Układem równań m liniowych o n niewiadomych X 1,, X n, nazywamy układ postaci: a 11 X 1 + +
Wprowadzenie: języki, symbole, alfabety, łańcuchy Języki formalne i automaty. Literatura
Wprowadzenie: języki, symbole, alfabety, łańcuchy Języki formalne i automaty Dr inŝ. Janusz Majewski Katedra Informatyki Literatura Aho A. V., Sethi R., Ullman J. D.: Compilers. Principles, Techniques
WYBUCHAJĄCE KROPKI ROZDZIAŁ 1 MASZYNY
WYBUCHAJĄCE KROPKI ROZDZIAŁ 1 MASZYNY Witaj w podróży. Jest to podróż matematyczna oparta na historii mojej, Jamesa, która jednak nie wydarzyła się naprawdę. Kiedy byłem dzieckiem, wynalazłem maszynę -
Szablony funkcji i szablony klas
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument