Przegląd paradygmatów na przykładzie języka Oz
|
|
- Ksawery Witkowski
- 6 lat temu
- Przeglądów:
Transkrypt
1 Przegląd paradygmatów na przykładzie języka Oz programowanie deklaratywne współbieżność deklaratywna współbieżność z przesyłaniem komunikatów Obszar jednokrotnego przypisania (single-assignment store) x 1 niezwiązana x x 2 niezwiązana x nil x 3 niezwiązana x 3 niezwiązana {x 1 =314, x 2 =[1 2 3], x 3 }
2 x 1 x 2 x 3 imię osoba 2 3 nil wiek Grzegorz 25 {x 1 =314, x 2 =[1 2 3], x 3 =osoba(imię: Grzegorz wiek:24)} Identyfikator zmiennej umożliwia odwołanie się do wartości z obszaru przypisania. W instrukcji W obszarze X x 1 niezwiązana Odwzorowanie identyfikatorów zmiennych na elementy obszaru nazywa się środowiskiem. {X x1}
3 X x 1 W obszarze nil a) Identyfikator zmiennej odwołujący się do zmiennej związanej X W obszarze nil b) Identyfikator zmiennej odwołujący się wartości Śledzenie łączy zmiennych związanych w celu otrzymania wartości nazywa się dereferencją (wyłuskaniem) i jest niewidoczne dla programisty. W obszarze X x 1 osoba imię wiek Y Grzegorz x 2 niezwiązana a) Wartość częściowa W obszarze X x 1 osoba imię wiek Y Grzegorz x 2 25 b) Wartość bez zmiennych niezwiązanych czyli wartość pełna
4 X x 1 W obszarze Y x 2 a) Dwie zmienne związane ze sobą X Y x 1 x 2 W obszarze nil b) Obszar po związaniu jednej ze zmiennych Po wykonaniu związania X=Y otrzymujemy dwie zmienne związane. Mówimy, że {x1, x2} tworzy zbiór równoważności 1. Kiedy jedna z równoważnych zmiennych zostaje związana, to wszystkie pozostałe zmienne widzą związanie. 1 Formalnie: tworzą klasę równoważności ze względu na relację równoważności.
5 Zmienne przepływu danych W programowaniu deklaratywnym tworzenie zmiennych i ich wiązanie wykonywane jest osobno. Co kiedy odwołamy się do zmiennej jeszcze nie związanej? 1. Wykonywanie jest kontynuowane bez komunikatu o błędzie. Zawartość zmiennej jest niezdefiniowana, tzn. zawiera śmieć. (C++) 2. Wykonywanie jest kontynuowane bez komunikatu o błędzie. Zawartość zmiennej jest inicjowana wartością domyślną. (Java w przypadku pól w obiektach albo tablicach) 3. Wykonywanie jest zatrzymane i pojawia się komunikat o błędzie. (Prolog) 4. Wykonywanie niej jest możliwe ponieważ kompilator wykrył, że istnieje ścieżka wykonania wiodąca do użycia zmiennej bez jej zainicjowania. (Java w przypadku zmiennych lokalnych) 5. Wykonywanie jest wstrzymane do momentu związania zmiennej a później kontynuowane. (Oz) Język modelowy (kernel language) <s> ::= skip <s>1 <s>2 local <x> in <s> <x>1=<x>2 <x>=<v> if <x> then <s>1 else <s>2 case <x> of <pattern> then <s>1 else <s>2 {<x> <y>1 <y>n}
6 <v> ::= <number> <record> <procedure> <number> ::= <int> <float> <record> <pattern> ::= <literal> <literal> ( <feature>:<x>1 <feature>:<x>n ) <procedure> ::= proc { $ <x>1.. <x>n } <s> <literal> ::= <atom> <bool> <feature> ::= <atom> <bool> <int> <bool> ::= true false Składnia identyfikatora zmiennej: Wielka litera, po której występuje zero lub więcej znaków alfanumerycznych (litery, cyfry, znak podkreślenia) Dowolny ciąg znaków ujęty w odwrotne apostrofy. Hierarchia typów Value (Wartość) Number (Liczba) Record (Rekord) Procedure (Procedura) Int (Całkowita) Float (Zmiennopozycyjna) Tuple (Krotka) Char (Znak) Literal (Literał) List (Lista) Bool (Wartość logiczna) Atom String (Ciąg znaków) True (Prawda) False (Fałsz)
7 Typy podstawowe Liczby. Całkowite lub zmiennopozycyjne. Za minus należy używać znak tyldy (~). Atomy. Niepodzielne wartości będące rodzajem symbolicznych stałych. Ciąg znaków alfanumerycznych rozpoczynających się od małej litery albo dowolny ciąg znaków ujęty w apostrofy. Wartości logiczne. Symbol true albo false. Rekordy. Złożona struktura składająca się z etykiety, po której występuje zbiór par cech i identyfikatorów zmiennych. Cechami mogą być atomy, liczby całkowite lub wartości logiczne. Krotki. Krotka jest rekordem, którego cechami są liczby całkowite rozpoczynające się od 1 (w tym przypadku cechy nie muszą być podawane). Typy podstawowe cd. Listy. Lista jest albo atomem nil albo krotką (H T), gdzie T jest albo niezwiązane, albo związane z listą. Lukier składniowy: Etykieta może być zapisana jako operator wrostkowy, więc H T oznacza to samo co (H T). Operator wiąże prawostronnie, więc nil oznacza to samo co 1 (2 (3 nil)). Listy kończące się atomem nil mogą być zapisane przy użyciu nawiasów kwadratowych [ ], więc zapis [1 2 3] oznacza to samo co nil. Ciągi znaków. Ciąg znaków jest listą kodów znaków. Ciągi znaków zapisuje się za pomocą cudzysłowów, więc zapis E=mc^2 oznacza to samo co [ ].
8 Typy podstawowe cd. Procedury. Procedura jest wartością typu proceduralnego. Instrukcja: <x> = proc { $ <y>1 <y>n } <s> wiąże <x> z nową wartością procedury. Oznacza to po prostu zadeklarowanie nowej procedury. Symbol $ określa, że wartość procedury jest anonimowa, tj. tworzona bez związania jej z identyfikatorem. Możliwy jest zapis skrócony: proc { <x> <y>1 <y>n } <s> Taki zapis skrócony jest czytelniejszy ale zaciemnia rozróżnienie między utworzeniem wartości a związaniem jej z identyfikatorem. Przykłady operacji podstawowych Operacja Opis Typ argumentu A==B Porównanie równości Value A\=B Porównanie nierówności Value {IsProcedure P} Sprawdzenie czy procedura Value A<=B Porównanie mniejszy niż lub równy Number lub Atom A<B Porównanie mniejszy niż Number lub Atom A>=B Porównanie większy niż lub równy Number lub Atom A>B Porównanie większy niż Number lub Atom A+B Dodawanie Number A-B Odejmowanie Number A*B Mnożenie Number
9 Przykłady operacji podstawowych cd. Operacja Opis Typ argumentu A div B Dzielenie Int A mod B Modulo Int A/B Dzielenie Float {Arity R} Krotność Record {Label R} Etykieta Record R.F Wybór pola Record Proste wykonanie local A B C D in A=11 B=2 C=A+B D=C*C local A in local B in local C in local D in A=11 B=2 C=A+B D=C*C
10 Statyczne wyznaczanie zakresu local X in X=1 local X in X=2 {Browse X} {Browse X} 1 2 Procedury proc {Max X Y?Z} if X>=Y then Z=X else Z=Y Procedury z odwołaniami zewnętrznymi proc {LB X?Z} if X>=Y then Z=X else Z=Y
11 local Y LB in Y=10 proc {LB X?Z} if X>=Y then Z=X else Z=Y local Y=15 Z in {LB 5 Z} Dynamiczne a statyczne określanie zasięgu stat(hello) local P Q in proc {Q X} {Browse stat(x)} proc {P X} {Q X} local Q in proc {Q X} {Browse dyn(x)} {P hello} Oryginalna wersja języka Lisp obsługiwała dynamiczne wyznaczanie zakresu. Języki Common Lisp i Scheme domyślnie obsługują statyczne wyznaczanie zakresu.
12 Zachowanie w przypadku przepływu danych local X Y Z in X=10 if X>=Y then Z=X else Z=Y Nie jest możliwe określenie wartości porównania X>=Y ale nie jest zgłaszany błąd tylko wykonanie instrukcji warunkowej zostaje wstrzymane do chwili gdy Y zostanie związane. Przekład na język modelowy local Max C in proc {Max X Y?Z} if X>=Y then Z=X else Z=Y {Max 3 5 C}
13 Przekład na język modelowy cd. local Max in local A in local B in local C in Max = proc {$ X Y Z} local T in T=(X>=Y) if T then Z=X else Z=Y A=3 B=5 {Max A B C} Od języka modelowego do języka praktycznego Programy w języku modelowym są zbyt rozwlekłe. Można tę wadę wyeliminować dodając lukier syntaktyczny i abstrakcje lingwistyczne. Udogodnienia składniowe Zagnieżdżone wartości częściowe: zamiast local A B in A= Grzegorz B=25 X=osoba(imię:A wiek:b) wygodniej X=osoba(imię: Grzegorz wiek:25)
14 Niejawna inicjalizacja zmiennych: zamiast local X in X=<expression> <statement> wygodniej local X=<expression> in <statement> Przypadek ogólny ma postać local <pattern>=<expression> in <statement> Przykład: local tree(key:a left:b right:c value:d)=t in <statement> Zagnieżdżone instrukcje if: <statement> ::= if <expression> then <instatement> { elseif <expression> then <instatement> } [ else <instatement> ] <instatement> ::= [ { <declarationpart> }+ in ] <statement>
15 Zagnieżdżone instrukcje case: <statement> ::= case <expression> of <pattern> [ andthen <expression> ] then <instatement> { [] <pattern> [ andthen <expression> ] then <instatement> } [ else <instatement> ] <pattern> ::= <variable> <atom> <int> <float> <string> unit true false <label> ( { [ <feature> : ] <pattern> } [ ] ) <pattern> <consbinop> <pattern> [ { <pattern> }+ ] <consbinop> ::= # Przykład: case Xs#Ys of nil#ys then <s>1 [] Xs#nil then <s>2 [] (X Xr)#(Y Yr) andthen X<=Y then <s>3 else <s>4 case Xs of nil then <s>1 else case Ys of nil then <s>2 else case Xs of X Xr then język modelowy case Ys of Y Yr then if X<=Y then <s>3 else <s>4 else <s>4 else <s>4
16 Funkcje fun {F X1 XN} <statement> <expression> proc {F X1 XN?R} <statement> R=<expression> Przykład: fun {Max X Y} if X>=Y then X else Y jeśli treść funkcji jest instrukcją if, każda alternatywa tej instrukcji może kończyć się wyrażeniem proc {Max X Y?R} R = if X>=Y then X else Y
17 Wywołanie funkcji Wywołanie funkcji {F X1 XN} jest tłumaczone na wywołanie procedury {F X1 XN R}. Przykład: Wywołanie {Q {F X1 XN} } jest tłumaczone na: local R in {F X1 XN R} {Q R } Wywołanie funkcji w strukturach danych Można wywołać funkcję w ramach struktury danych (rekordu, krotki lub listy). Przykład: Ys={F X} {Map Xr F} jest tłumaczone na: local Y Yr in Ys=Y Yr {F X Y} {Map Xr F Yr}
18 fun {Map Xs F} case Xs of nil then nil [] X Xr then {F X} {Map Xr F} język modelowy proc {Map Xs F?Ys} case Xs of nil then Ys=nil else case Xs of X Xr then local Y Yr in Ys=Y Yr {F X Y} {Map Xr F Yr} Interfejs interaktywny (zmienne globalne) <interstatement> ::= <statement> declare { <declarationpart> }+ [ <interstatement> ] declare { <declarationpart> }+ in <interstatement> <declarationpart> ::= <variable> <pattern> = <expression> <statement> Przykład: declare X Y X=25 declare A A=osoba(wiek:X) declare X Y nowa zmienna X ale wartość 25 nadal jest osiągalna przez zmienną globalną A
19 Wyjątki <s> ::= try <s>1 catch <x> then <s>2 raise <x> Instrukcja w której wywołano wyjątek zostaje anulowana. Wyjątkiem może być każda wartość częściowa. Gdy wyjątek jest zmienną niezwiązaną, to jego zgłoszenie może być współbieżne z jego określeniem (może być nawet przechwycony zanim będzie wiadomo, o który wyjątek chodzi!). Jest to rozsądne tylko w przypadku języków ze zmiennymi przepływu danych. Przykład: fun {Eval E} if {IsNumber E} then E else case E of plus(x Y) then {Eval X}+{Eval Y} [] times(x Y) then {Eval X}*{Eval Y} else raise illformedexpr(e)
20 Przykład cd. try {Browse {Eval plus(plus(5 5) 10)}} {Browse {Eval times(6 11)}} {Browse {Eval minus(7 10)}} catch illformedexpr(e) then {Browse *** Błędne wyrażenie #E# *** } Instrukcja try może określać klauzulę finally, która jest zawsze wykonywana bez względu na to, czy instrukcja zgłosi wyjątek czy nie. Przykład: try {ProcessFile F} finally {CloseFile F}
21 Algorytm unifikacji, struktury cykliczne i równość Operacje związania: bind(es, <v>) wiąże wszystkie zmienne ze zbiorów równoważnych zmiennych ES z wartością <v>. bind(es1, ES2) łączy dwa zbiory równoważnych zmiennych ES1 i ES2. Definicja operacji unify(x, y) bez struktur cyklicznych: 1. Jeśli x jest w zbiorze ESx a y w zbiorze ESy, to wykonaj bind(esx, ESy). 2. Jeśli x jest w zbiorze ESx a y jest określone, to wykonaj bind(esx, y). 3. Jeśli y jest w zbiorze ESy a x jest określone, to wykonaj bind(esy, x). 4. Jeśli x jest związane z r(f1:x1 fn:xn) a y jest związane z r (f 1:y1 f m:ym) i r r lub {f1,, fn} {f 1,, f m}, to zgłoś wyjątek failure. 5. Jeśli x jest związane z r(f1:x1 fn:xn) a y jest związane z r(f1:y1 fn:yn), to dla i od 1 do n wykonaj unify(xi, yi).
22 Uwzględnienie struktur cyklicznych. Niech M będzie pustą tabelą. Wykonaj unify (x, y). Operacja unify (x, y) najpierw sprawdza czy para (x, y) występuje w tabeli M. 1. Jeśli występuje, to kończy pracę. 2. Jeśli nie występuje, to wywołuje operację unify(x, y), w której rekurencyjne wywołania unify zastąpiono wywołaniami unify. Sprawdzenie równości i nierówności X==Y zachodzi gdy obie struktury są identyczne. Możliwe jest wcześniejsze stwierdzenie, że zachodzi X\=Y nawet gdy obie struktury są jeszcze niepełne. declare L1 L2 X in L1=[1] L2=[X] {Browse L1==L2} nic się nie pojawia bo czeka na związanie X declare L1 L2 X Y in L1=[X] L2=[Y] {Browse L1==L2} X=Y po unifikacji pojawia się true declare L1 L2 X in L1=[1 2] false L2=[2 X] {Browse L1==L2} od razu pojawia się false
23 Techniki programowania: obliczenia iteracyjne S0 S1 Sfinal fun {Iterate Si} if {IsDone Si} then Si else Si+1 in Si+1={Transform Si} {Iterate Si+1} fun {Iterate S IsDone Transform} if {IsDone S} then S else S1 in S1={Transform S} {Iterate S1 IsDone Transform} Techniki programowania: obliczenia iteracyjne fun {Sqrt X} {Iterate 1.0 fun {$ G} {Abs X-G*G}/X< fun {$ G} (G+X/G)/2.0 }
24 Techniki programowania: konwersja rekurencji na iterację fun {Fact N} if N==0 then 1 else N*{Fact N-1} fun {Fact N} fun {IterFact N Acc} if N==0 then Acc else {IterFact N-1 N*Acc} in {IterFact N 1} Techniki programowania: operacje na listach fun {Length Xs} case Xs of nil then 0 [] _ Xr then 1+{Length Xr} fun {Length Xs} fun {LengthIter Xs Acc} case Xs of nil then Acc [] _ Xr then {LengthIter Xr Acc+1} in {LengthIter Xs 0}
25 Techniki programowania: listy różnicowe X#Y X#Z Y#Z Y Z X Techniki programowania: listy różnicowe fun {AppD D1 D2} X#Y=D1 Y#Z=D2 in X#Z declare D1 D2 X Y in D1=(1 2 3 X)#X ( _)#_ D2=( Y)#Y {Browse {AppD D1 D2}}
26 Techniki programowania: uporządkowane drzewa binarne fun {Insert K V T} case T of leaf then tree(k V leaf leaf) [] tree(k1 V1 T1 T2) andthen K==K1 then tree(k V T1 T2) [] tree(k1 V1 T1 T2) andthen K<K1 then tree(k1 V1 {Insert K V T1} T2) [] tree(k1 V1 T1 T2) andthen K>K1 then tree(k1 V1 T1 {Insert K V T2}) Techniki programowania: uporządkowane drzewa binarne fun {Lookup K T} case T of leaf then notfound [] tree(k1 V T1 T2) andthen K==K1 then found(v) [] tree(k1 V T1 T2) andthen K<K1 then {Lookup K T1} [] tree(k1 V T1 T2) andthen K>K1 then {Lookup K T2}
27 Język modelowy <s> ::= skip <s>1 <s>2 local <x> in <s> <x>1=<x>2 <x>=<v> if <x> then <s>1 else <s>2 case <x> of <pattern> then <s>1 else <s>2 {<x> <y>1 <y>n} thread <s> Porządek przyczynowy Wykonanie sekwencyjne (porządek liniowy) wątek T1 wątek T2 wątek T3 wątek T4 Wykonanie współbieżne (częściowy porządek)
28 I a I 1 I 2 I b I c I 1 I 2 T1 I a I 1 I b I 2 I c I a I b I c T2 I a I b I 1 I 2 I c I a I b I c I 1 I 2 Częściowe zakończenie fun {Double Xs} case Xs of X Xr then 2*X {Double Xr} Obliczenia powyższej funkcji nigdy się nie zakończą. Jeśli strumień wejściowy Xs przestanie rosnąć, to obliczenie się zakończy. Obliczenie osiągnie częściowe zakończenie, ponieważ jeśli znowu strumień wejściowy zacznie znowu rosnąć, to obliczenia zostaną wznowione aż do następnego częściowego zakończenia.
29 Logiczna równoważność X=1 Y=X Y=X X=1 w obu przypadkach X i Y są związane z wartością 1 X=foo(Y W) Y=Z X=foo(Z W) Y=Z Zbiór wiązań w obszarze jednokrotnego przypisania nazywamy ograniczeniem. Niech values(x, c) będzie zbiorem wartości dla zmiennej x w ograniczeniu c, które nie naruszają ograniczenia c. Ograniczenia c1 i c2 są logicznie równoważne, gdy: 1. Zawierają te same zmienne. 2. Dla każdej zmiennej x, values(x, c1)=values(x,c2). Deklaratywna współbieżność Współbieżny program jest deklaratywny jeśli dla dowolnych wejść zachodzi poniższy warunek. Wszystkie wykonania, dla danego zbioru wejść, mają jeden z dwóch rezultatów: 1. wszystkie nie kończą się lub 2. wszystkie kończą się osiągając częściowe zakończenie i dają logicznie równoważne rezultaty. niezauważalny niedeterminizm
30 Awaria (failure) Awaria jest nieprawidłowym zakończeniem deklaratywnego programu osiągnięte przez umieszczenie niezgodnych (konfliktowych) informacji w obszarze przypisania. thread X=1 thread Y=2 thread X=Y każde wykonanie osiąga niepowodzenie Zamknięcie awarii (ukrywanie niedeterminizmu) declare X Y local X1 Y1 S1 S2 S3 in thread try X1=1 S1=ok catch _ then S1=error thread try Y1=2 S2=ok catch _ then S2=error thread try X1=Y1 S3=ok catch _ then S3=error if S1==error orelse S2==error orelse S3=error then X=1 Y=1 % wartości domyślne dla X i Y else X=X1 Y=Y1
31 Tworzenie nowego wątku thread proc {Count N} if N>0 then {Count N-1} in {Count } declare X in local Y in thread Y = 10*10 declare X in X = thread 10* *100 {Browse X} X = Y + 100*100 {Browse X} Przykład: liczby Fibonacciego fun {Fib X} if X=<2 then 1 else thread {Fib X-1} + {Fib X-2}
32 F 2 F 3 F 1 F 4 F 2 F 2 F 5 F 3 F 1 F 2 F 3 F 1 F 6 F 4 F miliona wątków podczas obliczania {Fib 35}
33 Strumienie w postaci list otwartych X=1 X1 X1=2 X2 X2=3 X3 X3=4 X4 X4=nil Zmienna X zostaje związana z listą, na której początkowo jest tylko liczba 1. Później dochodzą jeszcze liczby 2, 3 i 4. Na koniec lista zostaje zamknięta (nie wa nieustalonego ogona). Nieskończony strumień liczb X=1 X {Browse X} ,,, 1
34 Schemat producenta-konsumenta Producent Xs = Konsument Xs={Generate } S={Sum Xs 0} fun {Generate N Limit} if N<Limit then N {Generate N+1 Limit} else nil fun {Sum Xs A} case Xs of X Xr then {Sum Xr A+X} [] nil then A local Xs S in thread Xs={Generate } % wątek producenta thread S={Sum Xs 0} % wątek konsumenta {Browse S}
35 Odczyt wielokrotny local Xs S1 S2 S3 in thread Xs={Generate } thread S1={Sum Xs 0} thread S2={Sum Xs 0} thread S3={Sum Xs 0} wątek każdego konsumenta pobiera elementy strumienia niezależnie Przetworniki i filtry fun {Filter Xs F} case Xs of nil then nil [] X Xr andthen {F X} then X {Filter Xr F} [] X Xr then {Filter Xr F} fun {IsOdd X} X mod 2 \= 0
36 IsOdd Producent Xs = Filtr Ys = Konsument Xs={Generate } Ys={Filter Xs IsOdd} S={Sum Xs 0} local Xs Ys S in thread Xs={Generate } thread Ys={Filter Xs IsOdd} thread S={Sum Ys 0} {Browse S} Sito Eratostenesa Sito X Xs X Zs Xr Zs Filtr Ys Sito
37 fun {Sieve Xs} case Xs of nil then nil [] X Xr then Ys in thread Ys={Filter Xr fun {$ Y} Y mod X \= 0 } X {Sieve Ys} Xs Filtr Filtr Filtr Filtr Potok filtrów
38 Wykonywanie leniwe ewaluacja gorliwa (data-driven evaluation) ewaluacja leniwa (demand-driven evaluation) Wykonywanie leniwe fun lazy {F1 X} 1+X*(3+X*(3+X)) fun lazy {F2 X} Y=X*X in Y*Y fun lazy {F3 X} (X+1)*(X+1) A={F1 10} B={F2 20} C={F3 30} D=A+B
39 Wyzwalacze potrzeby <s> ::= skip <s>1 <s>2 local <x> in <s> <x>1=<x>2 <x>=<v> if <x> then <s>1 else <s>2 case <x> of <pattern> then <s>1 else <s>2 {<x> <y>1 <y>n} thread <s> {ByNeed <x> <y>} utworzenie wyzwalacza Instrukcja {ByNeed P Y} ma ten sam efekt, co instrukcja thread {P Y} ale wywołanie {P X} zostanie wykonane tylko wtedy, gdy potrzebna jest wartość Y. declare Y {ByNeed proc {$ A} A=111*111 Y} {Browse Y} declare Z Z=Y+1 w oknie Browser pojawia się wartość 12321
40 Problem Hamminga Wygenerować pierwszych n liczb całkowitych postaci 2 a 3 b 5 c, gdzie a, b, c 0. Idea: generować liczby całkowite w porządku rosnącym w potencjalnie nieskończony strumieniu. fun lazy {Times N H} case H of X H2 then N*X {Times N H2} dla nieskończonego strumienia liczb H, wartością jest nieskończony strumień liczb N razy większych fun lazy {Merge Xs Ys} case Xs#Ys of (X Xr)#(Y Yr) then if X<Y then X {Merge Xr Ys} elseif X>Y then Y {Merge Xs Yr} else X {Merge Xr Yr} leniwe scalenie dwóch uporządkowanych i nieskończonych strumieni liczb w jeden nieskończony i uporządkowany strumień liczb
41 H=1 {Merge {Times 2 H} {Merge {Times 3 H} {Times 5 H}}} {Browse H} wyświetli się 1 _<Future> H jest nieskończonym i uporządkowanym strumieniem liczb postaci 2 a 3 b 5 c proc {Touch N H} if N>0 then {Touch N-1 H.2} else skip {Touch 20 H} ogon listy H
42 Współbieżność z przesyłaniem komunikatów Przesyłanie komunikatów Abstrakcja tworzenia portu Przykład Współbieżność z przesyłaniem komunikatów Język modelowy <s> ::= skip <s>1 <s>2 local <x> in <s> <x>1=<x>2 <x>=<v> if <x> then <s>1 else <s>2 case <x> of <pattern> then <s>1 else <s>2 {<x> <y>1 <y>n} thread <s> {NewPort <y> <x>} {S <x> <y>}
43 Współbieżność z przesyłaniem komunikatów Operacje tworzenia kanału i wysyłania do niego: {NewPort S P} utworzenie nowego portu z punktem wejścia P i strumieniem S. {S P X} asynchroniczne wysłanie X do strumienia odpowiadającego punktowi wejścia P. declare S P in {NewPort S P} {Browse S} {S P a} {S P b} zmiany w Browserze S<future> a _<future> a b _<future> Współbieżność z przesyłaniem komunikatów Abstrakcja tworzenia portu fun {NewPortObject Init Fun} Sin Sout in thread {FoldL Sin Fun Init Sout} {NewPort Sin} Init stan początkowy Fun funkcja zmiany stanu Fun : STAN KOMUNIKAT 7! STAN
44 Współbieżność z przesyłaniem komunikatów Abstrakcja tworzenia portu fun {NewPortObject2 Proc} Sin in thread for Msg in Sin do {Proc Msg} {NewPort Sin} Proc procedura wywoływana dla każdego komunikatu Współbieżność z przesyłaniem komunikatów Przykład piłka Gracz 1 Gracz 2 piłka piłka Gracz 3 gdy gracz złapie piłkę, to odrzuca ją do losowo wybranego innego gracza
45 Współbieżność z przesyłaniem komunikatów declare NewPortObject2 Player P1 P2 P3 in fun {NewPortObject2 Proc} Sin in thread for Msg in Sin do {Proc Msg} {NewPort Sin} fun {Player Others} {NewPortObject2 proc {$ Msg} case Msg of ball then Ran={OS.rand} mod {Width Others} + 1 in {S Others.Ran ball} } Współbieżność z przesyłaniem komunikatów P1={Player others(p2 P3)} P2={Player others(p1 P3)} P3={Player others(p1 P2)} {S P1 ball} utworzenie graczy zainicjowanie gry
Przegląd paradygmatów na przykładzie języka Oz
Przegląd paradygmatów na przykładzie języka Oz Obszar jednokrotnego przypisania (single-assignment store) programowanie deklaratywne współbieżność deklaratywna x 1 niezwiązana x 1 314 współbieżność z przesyłaniem
Plan wykładu. Języki i Paradygmaty Programowania. 1. Koncepcje i paradygmaty (2w) 4. Elementy języka Haskell (2w)
Języki i Paradygmaty Programowania Przemysław Kobylański Katedra Informatyki (W11/K2) Politechnika Wrocławska Na podstawie: Peter Van Roy. Programowanie: Koncepcje, Techniki i Modele R. Kent Dybvig. The
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
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
Programowanie deklaratywne
Języki i paradygmaty programowania Lista (elementy języka Oz) Przemysław Kobylański Zaprogramuj w języku Oz rozwiązania poniższych zadań. Na ocenę dostateczną trzeba rozwiązać wszystkie zadania bez gwiazdek.
Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki
Informatyka I Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 1 Plan wykładu
Programowanie Funkcyjne. Marcin Kubica Świder,
Programowanie Funkcyjne Marcin Kubica Świder, 28-04-2015 Czym jest programowanie funkcyjne? Obliczalne pojęcia matematyczne. Definicje stałych i funkcji i relacji. Wszystkie definicje są konstruktywne,
Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD
programowania Wykład: 4 Instrukcje sterujące, operatory 1 programowania w C++ Instrukcje sterujące 2 Pętla for for ( instrukcja_ini ; wyrazenie_warunkowe ; instrukcja_krok ) tresc_petli ; instrukcja_ini
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
Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy
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
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
Podstawy programowania w języku C i C++
Podstawy programowania w języku C i C++ Część czwarta Operatory i wyrażenia Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu,
Programowanie obiektowe
Programowanie obiektowe Język programowania Ruby Marcin Młotkowski 12 kwietnia 2018 Plan wykładu 1 Wstęp 2 Typy numeryczne Łańcuchy znaków (klasa String) Przedziały Tablice i tablice asocjacyjne Nazwy
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
Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.
Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje 1 dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD programowania w C++ Typy c.d. 2 Typy zmiennych Instrukcja typedef -
Podstawy i języki programowania
Podstawy i języki programowania Laboratorium 3 - operatory oraz instrukcje warunkowe i wyboru mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 19 października 2018 1 / 35 mgr inż. Krzysztof
Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)
Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.) przeznaczony do programowania zarówno pod ios jak i Mac OS X bazuje na logice Objective-C bez kompatybilności
Podstawy i języki programowania
Podstawy i języki programowania Laboratorium 8 - wprowadzenie do obsługi plików tekstowych i wyjątków mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 11 grudnia 2017 1 / 34 mgr inż. Krzysztof
Obliczenia, zmienne. Proste działania, zmienne, rodzaje zmiennych, proste operacje i działania na zmiennych.
Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Obliczenia, zmienne Proste działania, zmienne, rodzaje zmiennych, proste operacje i działania na zmiennych. Proste
Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].
ABAP/4 Instrukcja IF Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. [ELSEIF warunek. ] [ELSE. ] ENDIF. gdzie: warunek dowolne wyrażenie logiczne o wartości
Język ludzki kod maszynowy
Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza
Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab
LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI Wprowadzenie do środowiska Matlab 1. Podstawowe informacje Przedstawione poniżej informacje maja wprowadzić i zapoznać ze środowiskiem
Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:
Instrukcje sterujące wer. 11 z drobnymi modyfikacjami! Wojciech Myszka 2017-07-05 10:53:09 +0200 Ala ma kota Część I Prosty przykład Problem 1. Zadanie polega na tym, żeby opracować algorytm który dla
Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa
Informatyka 1 Wykład III Wyrażenia i instrukcje, złożoność obliczeniowa Robert Muszyński ZPCiR ICT PWr Zagadnienia: składnia wyrażeń, drzewa rozbioru gramatycznego i wyliczenia wartości wyrażeń, operatory
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
Elementy języka Scheme
Elementy języka Scheme Historia języka Lisp Historia języka Lisp Wyrażenia i ewaluacja wyrażeń Identyfikatory i wyrażenie let Wyrażenia lambda Definicje globalne Wyrażenia warunkowe Przypisanie Kontynuacje
Podstawy programowania w języku C
Podstawy programowania w języku C WYKŁAD 1 Proces tworzenia i uruchamiania programów Algorytm, program Algorytm przepis postępowania prowadzący do rozwiązania określonego zadania. Program zapis algorytmu
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:
Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści
Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop. 2017 Spis treści Przedmowa 11 1. Jak w programie 21 Czym jest program? 21 Uruchamianie interpretera języka Python 22 Pierwszy
procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak
Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Plan wykładu Abstrakcja programowania współbieżnego Instrukcje atomowe i ich przeplot Istota synchronizacji Kryteria poprawności programów współbieżnych
DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0
Uwaga: DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0 1. Zostały pominięte diagramy: CYFRA, CYFRA SZESNASTKOWA, ZNAK i LITERA. Nie została uwzględniona możliwość posługiwania się komentarzami. 2. Brakuje
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,
Wstęp do Programowania potok funkcyjny
Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 Outline 1 Pojęcie typu Definition (Typ danych) Typ danych to zbiór wartości wraz z zestawem podstawowych operacji na tych wartościach. Typy
Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych
1. Wstawianie skryptu na stroną: Laboratorium 1 Do umieszczenia skryptów na stronie służy znacznik: //dla HTML5 ...instrukcje skryptu //dla HTML4 ...instrukcje
2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych
2. Tablice Tablica to struktura danych przechowująca elementy jednego typu (jednorodna). Dostęp do poszczególnych elementów składowych jest możliwy za pomocą indeksów. Rozróżniamy następujące typy tablic:
Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303
Wykład 9 J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303 stos i operacje na stosie odwrotna notacja polska języki oparte na ONP przykłady programów J. Cichoń, P. Kobylański Wstęp
Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java
Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java Cechy C++ Język ogólnego przeznaczenia Można programować obiektowo i strukturalnie Bardzo wysoka wydajność kodu wynikowego
Definicje wyższego poziomu
Definicje wyższego poziomu Interpreter Scheme-a nie będzie narzekad w przypadku wystąpienia niezdefionowanej zmiennej w ciele wyrażenia lambda dopóki nie będzie zastosowana Przykład braku informacji o
Języki programowania Haskell
Języki programowania Haskell zadanie projektowe nr. 4 2014/15 K. Turowski, T. Goluch 1. Kompilacja, uruchamianie i Hello world Kompilacja i uruchamianie: ghc --make hello.hs./hello Interaktywny interpreter:
Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.
Operatory w Javie W Javie występują następujące typy operatorów: Arytmetyczne. Inkrementacji/Dekrementacji Przypisania. Porównania. Bitowe. Logiczne. Pozostałe. Operacje wykonywane są na operandach (argumentach
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
Programowanie obiektowe
Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych
DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];
Braki w SQL obsługi zdarzeń i sytuacji wyjątkowych funkcji i procedur użytkownika definiowania złożonych ograniczeń integralnościowych Proceduralny SQL Transact- SQL używany przez Microsoft SQL Server
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
Język programowania Scala / Grzegorz Balcerek. Wyd. 2. Poznań, cop Spis treści
Język programowania Scala / Grzegorz Balcerek. Wyd. 2. Poznań, cop. 2016 Spis treści Przedmowa 1 Stosowana notacja 1 1. Wprowadzenie 3 1.1. Konsola interaktywna języka Scala 3 1.2. Zmienne 5 1.3. Wartości
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:
Wstęp do programowania
Wstęp do programowania Podstawowe konstrukcje programistyczne Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk (Wydział Fizyki) WP w. II Jesień 2014 1 / 38 Przypomnienie Programowanie imperatywne Program
Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]
1. Typy. Java jest językiem programowania z silnym systemem kontroli typów. To oznacza, że każda zmienna, atrybut czy parametr ma zadeklarowany typ. Kompilator wylicza typy wszystkich wyrażeń w programie
Algorytmika i Programowanie VBA 1 - podstawy
Algorytmika i Programowanie VBA 1 - podstawy Tomasz Sokół ZZI, IL, PW Czas START uruchamianie środowiska VBA w Excelu Alt-F11 lub Narzędzia / Makra / Edytor Visual Basic konfiguracja środowiska VBA przy
Programowanie RAD Delphi
Programowanie RAD Delphi Dr Sławomir Orłowski Zespół Fizyki Medycznej, Instytut Fizyki, Uniwersytet Mikołaja Kopernika w Toruniu Pokój: 202, tel. 611-32-46, e-mial: bigman@fizyka.umk.pl Delphi zasoby Aplikacje
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,
Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),
Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których
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
Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.
Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using
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
Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.
Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice
Zmienne, stałe i operatory
Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21 Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe
Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:
Podstawy Informatyki Metalurgia, I rok Historia Lata 0-te XX w język C (do pisania systemów operacyjnych) "The C programming language" B. Kernighan, D. Ritchie pierwszy standard Koniec lat 80 standard
Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści
Język programowania DELPHI / Andrzej Marciniak. Poznań, 2012 Spis treści Przedmowa 11 Przyjęta notacja 13 Rozdział 1. Wprowadzenie 15 1.1. Ogólne zasady programowania zorientowanego obiektowo 15 1.2. Historia
Część 4 życie programu
1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część
2 Przygotował: mgr inż. Maciej Lasota
Laboratorium nr 2 1/7 Język C Instrukcja laboratoryjna Temat: Wprowadzenie do języka C 2 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do języka C. Język C jest językiem programowania ogólnego zastosowania
JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak
JAVA Wstęp do programowania w języku obiektowym Bibliografia: JAVA Szkoła programowania, D. Trajkowska Ćwiczenia praktyczne JAVA. Wydanie III,M. Lis Platforma JSE: Opracował: Andrzej Nowak JSE (Java Standard
Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++
Podstawy Informatyki Metalurgia, I rok Wykład 6 Krótki kurs C++ Historia Lata 70-te XX w język C (do pisania systemów operacyjnych) "The C programming language" B. Kernighan, D. Ritchie pierwszy standard
Algorytmy i struktury danych
Algorytmy i struktury danych 4. Łódź 2018 Suma szeregu harmonicznego - Wpisz kod programu w oknie edycyjnym - Zapisz kod w pliku harmonic.py - Uruchom skrypt (In[1]: run harmonic.py) - Ten program wykorzystuje
4. Funkcje. Przykłady
4. Funkcje Przykłady 4.1. Napisz funkcję kwadrat, która przyjmuje jeden argument: długość boku kwadratu i zwraca pole jego powierzchni. Używając tej funkcji napisz program, który obliczy pole powierzchni
Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI
Dr inż. Grażyna KRUPIŃSKA Grazyna.Krupinska@fis.agh.edu.pl D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI Wyrażenia 2 Wyrażenia w języku C są bardziej elastyczne niż wyrażenia w jakimkolwiek innym języku
METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH
METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH ĆWICZENIE NR 9 WYRAŻENIA LOGICZNE, INSTRUKCJE WARUNKOWE I INSTRUKCJE ITERACYJNE W PROGRAMIE KOMPUTEROWYM MATLAB Dr inż. Sergiusz Sienkowski ĆWICZENIE NR
Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++
Podstawy Informatyki Inżynieria Ciepła, I rok Wykład 10 Kurs C++ Historia Lata 70-te XX w język C (do pisania systemów operacyjnych) "The C programming language" B. Kernighan, D. Ritchie pierwszy standard
Programowanie w języku Python. Grażyna Koba
Programowanie w języku Python 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
JAVASCRIPT PODSTAWY. opracowanie: by Arkadiusz Gawełek, Łódź
JAVASCRIPT PODSTAWY materiały dydaktyczne dla uczniów słuchaczy opracowanie: 2004-2007 by Arkadiusz Gawełek, Łódź 1. Czym jest JavaScript JavaScript tak naprawdę narodził się w firmie Netscape jako LiveScript,
Projekt 4: Programowanie w logice
Języki Programowania Projekt 4: Programowanie w logice Środowisko ECL i PS e W projekcie wykorzystane będzie środowisko ECL i PS e. Dostępne jest ono pod adresem http://eclipseclp.org/. Po zainstalowaniu
Programowanie Komputerów
Programowanie Komputerów Łukasz Kuszner pokój 209, WETI http://www.kaims.pl/ kuszner/ kuszner@eti.pg.gda.pl Wykład 30 godzin, Laboratoria 30 godzin 2012/ Strona 1 z 17 1. Typy i zmienne Jak wiemy, komputer
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float
Struktura pliku projektu Console Application
Struktura pliku projektu Console Application #include #include using namespace std; int main(int argc, char *argv[]) // to jest komentarz system("pause"); return EXIT_SUCCESS; Na początku
Programowanie obiektowe
Programowanie obiektowe Podstawowe cechy i możliwości języka Scala mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 2017 1 / 32 mgr inż. Krzysztof Szwarc Programowanie obiektowe Informacje
MATERIAŁY DO ZAJĘĆ II
MATERIAŁY DO ZAJĘĆ II Zmienne w C# Spis treści I. Definicja zmiennej II. Hierarchia typów (CTS) III. Typy wbudowane IV. Deklaracja zmiennych V. Literały VI. Pobieranie i wypisywanie wartości zmiennych
Podstawy i języki programowania
Podstawy i języki programowania Laboratorium 2 - wprowadzenie do zmiennych mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 23 października 2017 1 / 26 mgr inż. Krzysztof Szwarc Podstawy i
Analiza algorytmów zadania podstawowe
Analiza algorytmów zadania podstawowe Zadanie 1 Zliczanie Zliczaj(n) 1 r 0 2 for i 1 to n 1 3 do for j i + 1 to n 4 do for k 1 to j 5 do r r + 1 6 return r 0 Jaka wartość zostanie zwrócona przez powyższą
Poprawność semantyczna
Poprawność składniowa Poprawność semantyczna Poprawność algorytmu Wypisywanie zdań z języka poprawnych składniowo Poprawne wartościowanie zdań języka, np. w języku programowania skutki wystąpienia wyróżnionych
PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6
PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6 TEMAT: Programowanie w języku C/C++: instrukcje iteracyjne for, while, do while Ogólna postać instrukcji for for (wyr1; wyr2; wyr3) Instrukcja for twory pętlę działającą
- nawiasy kwadratowe oznaczają, że to lista
Haskell jest statycznym typem języka: - wszystkie typy i wyrażenia są znane w czasie kompilacji ( zwiększa to bezpieczeństwo kodu). Podawanie typów zmiennych i argumentów funkcji jest zbędne, gdyż Haskel
Wykład 8: klasy cz. 4
Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD
Języki formalne i techniki translacji
Języki formalne i techniki translacji Laboratorium - Projekt Termin oddania: ostatnie zajęcia przed 17 stycznia 2016 Wysłanie do wykładowcy: przed 23:59 28 stycznia 2016 Używając BISON-a i FLEX-a napisz
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
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
Lab 9 Podstawy Programowania
Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany
Elementy języka Scheme
Elementy języka Scheme Historia języka Lisp Wyrażenia i ewaluacja wyrażeń Identyfikatory i wyrażenie let Wyrażenia lambda Definicje globalne Wyrażenia warunkowe Przypisanie Kontynuacje Historia języka
Odczyt danych z klawiatury Operatory w Javie
Odczyt danych z klawiatury Operatory w Javie Operatory W Javie występują następujące typy operatorów: Arytmetyczne. Inkrementacji/Dekrementacji Przypisania. Porównania. Bitowe. Logiczne. Pozostałe. Operacje
SWIFT. Zaawansowane Programowanie Obiektowe
SWIFT Zaawansowane Programowanie Obiektowe Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.) przeznaczony do programowania zarówno pod ios jak i Mac OS X bazuje
Visual Basic for Application (VBA)
Visual Basic for Application (VBA) http://dzono4.w.interia.pl Książka Visual Basic dla aplikacji w Office XP PL, autorzy: Edward C. Willett i Steve Cummings, Wyd. Helion Typy zmiennych Różne dane różnie
ZMIENNE. Podstawy PHP
ZMIENNE Podstawy PHP zmienna - to obiekt w programowaniu, który przechowuje różnego rodzaju dane niezbędne do działania programu. Zmienna podczas działania programu może zmieniad swoje wartości (jak wskazuje
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,
Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.
PYTHON Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program. Aby program napisany w danym języku mógł być wykonany, niezbędne
Operatory cd. Relacyjne: ==!= < > <= >= bool b; int i =10, j =20; dzielenie całkowitych wynik jest całkowity! Łączenie tekstu: + string s = "Ala ma ";
1 2 Operacje na zmiennych Kolejność operacji: deklaracja, inicjacja bool decyzja; int licznik, lp; double stvat, wartpi; char Znak; string S1, S2 = "Kowalski"; przypisanie wartości podstawienie decyzja
Wstęp do Programowania, laboratorium 02
Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite
Języki i Paradygmaty Programowania
Języki i Paradygmaty Programowania Odkrywamy Haskell Marcin Benke 24 lutego 2014 Odkrywamy Haskell Haskell zasadniczo kompilowany, ale też interpreter: ghci $ ghci GHCi, version 7.6.2: http://www.haskell.org/ghc/
Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.
Instrukcje warunkowe i skoku. Spotkanie 2 Dr inż. Dariusz JĘDRZEJCZYK Wyrażenia i operatory logiczne Instrukcje warunkowe: if else, switch Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania