Wstęp do Programowania potok funkcyjny
|
|
- Teresa Pluta
- 5 lat temu
- Przeglądów:
Transkrypt
1 Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011
2 Outline 1
3 Kilka podstawowych pojęć Definition Programy imperatywne zmieniają stan, czyli wartości zmiennych. Asercja = warunek logiczny, który musi być spełniony w danym momencie obliczeń / w określonym miejscu w programie. Warunek końcowy = asercja opisująca stan po wykonaniu programu. Warunek początkowy = asercja opisująca stan przed wykonaniem programu. Specyfikacja programu = warunek początkowy + warunek końcowy.
4 Kilka podstawowych pojęć Definition Częściowa poprawność = warunek początkowy + obliczenie kończy się bez błędów = warunek końcowy. Własność stopu = warunek początkowy = obliczenie kończy się bez błędów. Całkowita poprawność = Częściowa poprawność + własność stopu.
5 Formalizmy Definition Formalizmy do specyfikacji i weryfikacji programów imperatywnych: formuły postaci: {warunek początkowy} program {warunek końcowy} oznaczają słabą poprawność, Transformatory predykatów Dijkstry przekształcają warunek końcowy w najsłabszy warunek początkowy, Logika dynamiczna (V. R. Pratt, D. Harel) rozszerzenie logiki modalnej, [p]ϕ, p ϕ. Logika algorytmiczna (G. Mirkowska, A. Salwicki) program {warunek końcowy}; oznacza najsłabszy warunek początkowy gwarantujący całkowitą poprawność.
6 Definition Ograniczamy się do języka while-programów. Zakładamy, że wszystkie zmienne są referencjami do liczb całkowitych. (Rozszerzenie na inne typy proste nie jest trudne, ale komplikuje technikalia.) Zakładamy, że każdy identyfikator reprezentuje inną referencję. Aliasing, lub typy złożone (tablice, wskaźniki) istotnie komplikuje problem specyfikacji i weryfikacji programów.
7 Definition Składnia while-programów: while-program ::= instrukcja instrukcja ; while-program instrukcja ::= begin while-program end if warunek then instrukcja [ else instrukcja ] while warunek do while-program done referencja := wyrażenie () wyrażenie ::= wyrażenia arytmetyczne ze zmiennymi warunek ::= warunki logiczne z wyrażeniami
8 Semantyka while-programów Definition Dziedziny semantyczne: Id zbiór identyfikatorów, Stan systemu, to wartościowanie zmiennych, funkcja przypisująca nazwom zmiennych ich wartości: Stan = [Id Z], Semantyka while-programu lub instrukcji to funkcja częściowa ze stanów w stany. (Obliczenia mogą się zapętlać, lub nie udać.) [[while-program]] : Stan Stan Semantyka wyrażenia, to funkcja ze stanu w liczby całkowite: [[wyrażenie]] : Stan int Semantyka warunku, to funkcja ze stanu w wartości logiczne: [[warunek]] : Stan bool
9 Semantyka while-programów Definition Semantyka while-programów: [[()]](S) = S [[r := w]](s) = fun i if i = r then [[w]](s) else S(i) [[P 1 ; P 2 ]](S) = [[P 2 ]]([[P 1 ]](S)) [[if w then P 1 else P 2 ]](S) = = if [[w]](s) then [[P 1 ]](S) else [[P 2 ]](S) [[if w then P]] = [[if w then P else ()]] [[while w do P done]](s 0 ) = S n, gdzie : not [[w]](s n ), [[w]](s i ), S i+1 = [[P]](S i ) dla 0 i < n w p.p. nieokreślone Więcej na Semantyce i weryfikacji programów.
10 Formuły logiki Hoare a Definition Formuły Hoare owskie to trójki postaci: {ϕ}p{ψ}, gdzie: ϕ warunek początkowy, P while-program, ψ warunek końcowy. {ϕ}p{ψ} oznacza częściową poprawność P względem ϕ i ψ. Model = dziedzina algorytmiczna. Wynikanie semantyczne ze zbioru przesłanek: A = {ϕ}p{ψ}. Możliwość udowodnienia na podstawie zbioru przesłanek: A {ϕ} P {ψ}
11 System dowodzenia Definition Aksjomaty: instrukcji pustej: A {ϕ} () {ϕ} instrukcji przypisania Reguły: osłabiania. A {ϕ[!x/w]} x := w {ϕ} A = ϕ = ϕ, A {ϕ } P {ψ }, A = ψ = ψ A {ϕ} P {ψ}
12 System dowodzenia Definition Reguły: średnika: instrukcji warunkowej: A {ϕ} P {ξ}, A {ξ} Q {ψ} A {ϕ} P; Q {ψ} A {ϕ α} P {ψ}, A {ϕ α} Q {ψ} A {ϕ} if α then P else Q {ψ} pętli while: A {ϕ α} P {ϕ} A {ϕ} while α do P done {ϕ α}
13 System dowodzenia Definition Wzmocnione reguły gwarantujące własność stopu: instrukcji przypisania instrukcji warunkowej: A = ϕ[!x/w] = w jest określone A {ϕ[!x/w]} x := w {ϕ} A = ϕ = α jest określone, A {ϕ α} P {ψ}, A {ϕ α} Q {ψ} A {ϕ} if α then P else Q {ψ}
14 System dowodzenia Definition Wzmocnione reguły gwarantujące własność stopu: pętli while: A = ϕ = α jest określone, A = (ϕ µ 0) = α, n nie występuje w P, A {ϕ α µ = n} P {ϕ µ < n} A {ϕ} while α do P done {ϕ α}
15 Minimum Oto program obliczający minimum z dwóch liczb: {!x =!x 0!y =!y 0 } if!x <!y then z :=!x else z :=!y {!z = min(!x 0,!y 0 )} Z reguły dla instrukcji warunkowej mamy dwie formuły do udowodnienia: 1 {!x =!x 0!y =!y 0!x <!y} z :=!x {!z = min(!x 0,!y 0 )} 2 {!x =!x 0!y =!y 0 (!x <!y)} z :=!y {!z = min(!x 0,!y 0 )}
16 Minimum 1 {!x =!x 0!y =!y 0!x <!y} z :=!x {!z = min(!x 0,!y 0 )} Korzystając z: (!x =!x 0!y =!y 0!x <!y) =!x = min(!x 0,!y 0 ) oraz reguły osłabiania otrzymujemy: {!x = min(!x 0,!y 0 )} z :=!x {!z = min(!x 0,!y 0 )} co jest aksjomatem przypisania. 2 {!x =!x 0!y =!y 0 (!x <!y)} z :=!y {!z = min(!x 0,!y 0 )} Korzystając z reguły osłabiania oraz z tego, że: (!x =!x 0!y =!y 0 (!x <!y)) =!y = min(!x 0,!y 0 ) otrzymujemy: {!y = min(!x 0,!y 0 )} z :=!y {!z = min(!x 0,!y 0 )} co jest aksjomatem przypisania.
17 Algorytm Euklidesa Specyfikacja: {!x > 0!x =!x 0!y > 0!y =!y 0 } E {!x = NWD(!x 0,!y 0 )} Implementacja: while!x!y do if!x >!y then E x :=!x!y I else y :=!y!x
18 Algorytm Euklidesa Pokażemy pełną poprawność. Zauważmy, że wszystkie wyrażenia i warunki są dobrze określone. Dodatkowe przesłanki tylko w regule dla pętli while. Zaczynamy od zastosowania reguły dla pętli while: Funkcja miary:!x+!y. Niezmiennik: ϕ!x > 0!y > 0 NWD(!x,!y) = NWD(!x 0,!y 0 ) (ϕ!x+!y 0) =!x =!y trywialnie spełnione. Trzeba pokazać: {ϕ!x!y!x+!y = n} I {ϕ!x+!y < n}
19 Algorytm Euklidesa {ϕ!x!y!x+!y = n} I {ϕ!x+!y < n} Stosując regułę dla if-then-else, mamy dwa przypadki: 1 {ϕ!x!y!x+!y = n!x >!y} x :=!x!y {ϕ!x+!y < n} 2 {ϕ!x!y!x+!y = n (!x >!y)} y :=!y!x {ϕ!x+!y < n}
20 Algorytm Euklidesa 1 {ϕ!x!y!x+!y = n!x >!y} x :=!x!y {ϕ!x+!y < n} Osłabiamy do aksjomatu przypisania: { }!x!y > 0!y > 0!x!y+!y < n NWD(!x!y,!y) = NWD(!x 0,!y 0 ) x :=!x!y {ϕ!x+!y < n} korzystając z implikacji: ( ) ϕ!x!y =!x+!y = n!x >!y!x!y > 0!y > 0 NWD(!x!y,!y) = NWD(!x 0,!y 0 )!x!y+!y < n
21 Algorytm Euklidesa 2 {ϕ!x!y!x+!y = n (!x >!y)} y :=!y!x {ϕ!x+!y < n} Osłabiamy do aksjomatu przypisania: { }!x > 0!y!x > 0!x+!y!x < n NWD(!x,!y!x) = NWD(!x 0,!y 0 ) y :=!y!x {ϕ!x+!y < n} korzystając z implikacji: ( )!x > 0!y!x > 0 ϕ!x!y = NWD(!x,!y!x) = NWD(!x!x+!y = n (!x >!y) 0,!y 0 )!x+!y!x < n
22 Algorytm mnożenia rosyjskich chłopów Specyfikacja: {!x =!x 0!x 0!y =!y 0!y 0} P {!z =!x 0!y 0 } Implementacja: z := 0; while!x > 0 do if!x mod 2 = 0 then begin x :=!x/2; y :=!y 2 P W I end else begin x :=!x 1; z :=!z+!y end done
23 Algorytm mnożenia rosyjskich chłopów Pokażemy pełną poprawność. Wyrażenia oraz warunki są zawsze dobrze określone. Dodatkowe przesłanki tylko w regule dla pętli while. Niezmiennik pętli while: ϕ!x!y+!z =!x 0!y 0!x 0!y 0
24 Algorytm mnożenia rosyjskich chłopów {!x =!x 0!x 0!y =!y 0!y 0} P {!z =!x 0!y 0 } Z reguły dla średnika uzyskujemy dwie formuły do udowodnienia: 1 {!x =!x 0!x 0!y =!y 0!y 0} z := 0 {ϕ} Możemy osłabić do aksjomatu przypisania: {!x!y + 0 =!x 0!y 0!x 0!y 0} z := 0 {ϕ} 2 {ϕ} W {!z =!x 0!y 0 }
25 Algorytm mnożenia rosyjskich chłopów 2 {ϕ} W {!z =!x 0!y 0 } Zauważmy, że (ϕ!x 0) = (!x = 0!z =!x 0!y 0 ). Osłabiamy do: {ϕ} W {ϕ!x 0}. Stosujemy regułę dla pętli while: Funkcja miary:!x. (ϕ!x 0) = (!x > 0). {ϕ!x > 0!x = n} I {ϕ!x < n}
26 Algorytm mnożenia rosyjskich chłopów {ϕ!x > 0!x = n} I {ϕ!x < n} Stosując regułę instrukcji warunkowej dostajemy dwie formuły: A) {ϕ!x > 0!x = n!x mod 2 = 0} x :=!x/2; y :=!y 2 {ϕ!x < n} B) {ϕ!x > 0!x = n!x mod 2 0} x :=!x 1; z :=!z+!y {ϕ!x < n}
27 Algorytm mnożenia rosyjskich chłopów A) {ϕ!x > 0!x = n!x mod 2 = 0} x :=!x/2; y :=!y 2 {ϕ!x < n} Z reguły dla średnika sprowadzamy do aksjomatu przypisania: {!x 2!y+!z =!x 0!y 0!x 0 2!y 0!x < n} y :=!y 2 {ϕ!x < n} oraz: {ϕ!x > 0!x = n!x mod 2 = 0} x :=!x/2 {!x 2!y+!z =!x 0!y 0!x 0 2!y 0!x < n}
28 Algorytm mnożenia rosyjskich chłopów {ϕ!x > 0!x = n!x mod 2 = 0} x :=!x/2 {!x 2!y+!z =!x 0!y 0!x 0 2!y 0!x < n} Korzystamy z implikacji: ϕ!x > 0!x = n!x mod 2 = 0 = Osłabiamy do aksjomatu przypisania: ( (!x/2) 2!y+!z =!x0!y 0 )!x/2 0 2!y 0!x/2 < n {(!x/2) 2!y+!z =!x 0!y 0!x/2 0 2!y 0!x/2 < n} x :=!x/2 {!x 2!y+!z =!x 0!y 0!x 0 2!y 0!x < n}
29 Algorytm mnożenia rosyjskich chłopów B) {ϕ!x > 0!x = n!x mod 2 0} x :=!x 1; z :=!z+!y {ϕ!x < n} Z reguły dla średnika, otrzymujemy aksjomat przypisania: {!x!y+!z+!y =!x 0!y 0!x 0!y 0!x < n} z :=!z+!y {ϕ!x < n} oraz: {ϕ!x > 0!x = n!x mod 2 0} x :=!x 1 {!x!y+!z+!y =!x 0!y 0!x 0!y 0!x < n}
30 Algorytm mnożenia rosyjskich chłopów {ϕ!x > 0!x = n!x mod 2 0} x :=!x 1 {!x!y+!z+!y =!x 0!y 0!x 0!y 0!x < n} Korzystając z implikacji: ϕ!x > 0!x = n!x mod 2 0 = osłabiamy do aksjomatu przypisania: ( ) (!x 1)!y+!z+!y =!x0!y 0!x 1 0!y 0!x 1 < n {(!x 1)!y+!z+!y =!x 0!y 0!x 1 0!y 0!x 1 < n} x :=!x 1 {!x!y+!z+!y =!x 0!y 0!x 0!y 0!x < n}
31 Deser
Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku
Matematyka Dyskretna Andrzej Szepietowski 25 czerwca 2002 roku Rozdział 1 Poprawność programów Jeżeli projektujemy algorytmy lub piszemy programy, to ważne jest pytanie, czy nasz algorytm lub program
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
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
Wstęp do Programowania potok funkcyjny
Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 Outline Programowanie imperatywne 1 Programowanie imperatywne Intuicje Programowanie imperatywne Paradygmat programowania imperatywnego: program
Podstawy Informatyki. Algorytmy i ich poprawność
Podstawy Informatyki Algorytmy i ich poprawność Błędy Błędy: językowe logiczne Błędy językowe Związane ze składnią języka Wykrywane automatycznie przez kompilator lub interpreter Prosty sposób usuwania
Wstęp do Programowania potok funkcyjny
Wstęp do Programowania potok funkcyjny Marcin Kubica 2016/2017 Outline Moduły i bariery abstrakcji 1 Moduły i bariery abstrakcji Moduły co to jest i po co to jest? Duży system dzielimy na mniejsze, łatwiejsze
Wstęp do programowania
Wstęp do programowania Literatura David Harel. Rzecz o istocie informatyki. Algorytmika. Wydawnictwa Naukowo-Techniczne. Wydanie trzecie. Seria: Klasyka informatyki. Warszawa 2000. Niklaus Wirth. Algorytmy
25 lutego 2013, godzina 23: 57 strona 1. P. Urzyczyn: Materia ly do wyk ladu z semantyki. Logika Hoare a
25 lutego 2013, godzina 23: 57 strona 1 P. Urzyczyn: Materia ly do wyk ladu z semantyki Logika Hoare a Rozważamy najprostszy model imperatywnego jezyka programowania z jednym typem danych. Wartości tego
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
Wstęp do programowania
Wstęp do programowania Złożoność obliczeniowa, poprawność programów Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 1 / 20 Złożoność obliczeniowa Problem Ile czasu
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
Brulion this version for your eyes only Dowód poprawnośći algorytmu Winograda. 1. Wprowadzenie. 2. Algorytm
SpecVer & LEM 12 projects XX 2013 1 10 1 Dombrova Research Brulion this version for your eyes only Dowód poprawnośći algorytmu Winograda Andrzej Salwicki salwicki@mimuw.edu.pl Dabrowa Leśna Streszczenie.
Wykład 2. Poprawność algorytmów
Wykład 2 Poprawność algorytmów 1 Przegląd Ø Poprawność algorytmów Ø Podstawy matematyczne: Przyrost funkcji i notacje asymptotyczne Sumowanie szeregów Indukcja matematyczna 2 Poprawność algorytmów Ø Algorytm
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
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,
3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.
1. Podaj definicję informatyki. 2. W jaki sposób można definiować informatykę? 3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki. 4. Co to jest algorytm? 5. Podaj neumanowską architekturę
(1) Poprawność Algorytmów
(1) Algorytmów Kontakt dr hab. Marcin, Katedra SIAM, PJATK Polecane Podręczniki: Ogólne: T.Cormen, C.Leiserson, R.Rivest et al. do Algorytmów, PWN 2018 (lub wydanie anglojęzyczne) G.Mirkowska et al. -
Programowanie funkcyjne Wykład 13. Siła wyrazu rachunku lambda
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. Procedury i funkcje. Piotr Chrząstowski-Wachtel
Wstęp do programowania Procedury i funkcje Piotr Chrząstowski-Wachtel Po co procedury i funkcje? Gdyby jakis tyran zabronił korzystać z procedur lub funkcji, to informatyka by upadła! Procedury i funkcje
Programowanie w Logice Przykłady programów. Przemysław Kobylański
Programowanie w Logice Przykłady programów Przemysław Kobylański Język Imperator 1 jest prostym językiem imperatywnym. Jego składnię opisuje poniższa gramatyka BNF: PROGRAM ::= PROGRAM ::= INSTRUKCJA ;
Wstęp do Programowania potok funkcyjny
i programowanie dynamiczne Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 i programowanie dynamiczne Outline 1 i programowanie dynamiczne i programowanie dynamiczne Rekurencyjny zapis rozwiązania
Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki
Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Turbo Pascal jest językiem wysokiego poziomu, czyli nie jest rozumiany bezpośrednio dla komputera, ale jednocześnie jest wygodny dla programisty,
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
Logika Stosowana. Wykład 2 - Logika modalna Część 2. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2016/2017
Logika Stosowana Wykład 2 - Logika modalna Część 2 Marcin Szczuka Instytut Informatyki UW Wykład monograficzny, semestr letni 2016/2017 Marcin Szczuka (MIMUW) Logika Stosowana 2017 1 / 27 Plan wykładu
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
Rachunek zdań. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak
Rachunek zdań Materiały pomocnicze do wykładu wykładowca: dr Magdalena Kacprzak RACHUNEK ZDAŃ Zdania Definicja Zdanie jest to stwierdzenie w języku naturalnym, któremu można przypisać wartość prawdy lub
Wstęp do programowania
Wstęp do programowania Podstawowe konstrukcje programistyczne Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 1 / 34 Przypomnienie Programowanie imperatywne Program
Podstawy Sztucznej Inteligencji (PSZT)
Podstawy Sztucznej Inteligencji (PSZT) Paweł Wawrzyński Wnioskowanie logiczne i systemy eksperckie Systemy posługujące się logiką predykatów: część 3/3 Dzisiaj Uogólnienie Poprawność i pełność wnioskowania
Wstęp do Programowania potok funkcyjny
Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 Outline Wyszukiwanie wzorców w tekście 1 Wyszukiwanie wzorców w tekście Problem wyszukiwania wzorca w tekście Na tym wykładzie zajmiemy się
Paradygmaty dowodzenia
Paradygmaty dowodzenia Sprawdzenie, czy dana formuła rachunku zdań jest tautologią polega zwykle na obliczeniu jej wartości dla 2 n różnych wartościowań, gdzie n jest liczbą zmiennych zdaniowych tej formuły.
4 Klasyczny rachunek zdań
4 Klasyczny rachunek zdań Elementy Logiki i Teorii Mnogości 2015/2016 Spis najważniejszych tautologii: (a) p p prawo wyłączonego środka (b) ( p) p prawo podwójnej negacji (c) p q q p (d) p q q p prawo
Algorytmy. Programowanie Proceduralne 1
Algorytmy Programowanie Proceduralne 1 Przepis Warzenie piwa Brunświckiego Programowanie Proceduralne 2 Przepis Warzenie piwa Brunświckiego składniki (dane wejściowe): woda, słód, itd. wynik: beczka piwa
Logika Stosowana. Wykład 7 - Zbiory i logiki rozmyte Część 3 Prawdziwościowa logika rozmyta. Marcin Szczuka. Instytut Informatyki UW
Logika Stosowana Wykład 7 - Zbiory i logiki rozmyte Część 3 Prawdziwościowa logika rozmyta Marcin Szczuka Instytut Informatyki UW Wykład monograficzny, semestr letni 2016/2017 Marcin Szczuka (MIMUW) Logika
III rok kognitywistyki UAM,
METODY DOWODZENIA TWIERDZEŃ I AUTOMATYZACJA ROZUMOWAŃ WYKŁAD 14: POWTÓRKA III rok kognitywistyki UAM, 2016 2017 Dzisiejszy wykład w całości poświęcony będzie omówieniu przykładowych zadań, podobnych do
Wstęp do programowania. Różne różności
Wstęp do programowania Różne różności Typy danych Typ danych określa dwie rzeczy: Jak wartości danego typu są określane w pamięci Jakie operacje są dozwolone na obiektach danego typu 2 Rodzaje typów Proste
Bloki anonimowe w PL/SQL
Język PL/SQL PL/SQL to specjalny język proceduralny stosowany w bazach danych Oracle. Język ten stanowi rozszerzenie SQL o szereg instrukcji, znanych w proceduralnych językach programowania. Umożliwia
Przeszukiwanie z nawrotami. Wykład 8. Przeszukiwanie z nawrotami. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279
Wykład 8 J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279 sformułowanie problemu przegląd drzewa poszukiwań przykłady problemów wybrane narzędzia programistyczne J. Cichoń, P. Kobylański
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
Warunki logiczne instrukcja if
Warunki logiczne instrukcja if Prowadzący: Łukasz Dunaj, strona kółka: atinea.pl/kolko 1. Wejdź na stronę kółka, uruchom edytor i wpisz: use console; def test::main() { var y; y = 1; while (y
Algorytmy. Programowanie Proceduralne 1
Algorytmy Programowanie Proceduralne 1 Przepis Warzenie piwa Brunświckiego Programowanie Proceduralne 2 Przepis Warzenie piwa Brunświckiego składniki (dane wejściowe): woda, słód, itd. wynik: beczka piwa
Mechanizmy komunikacji. spotkania symetryczne (język CSP) spotkania asymetryczne (Ada) przestrzenie krotek (Linda) potoki, komunikaty i kanały (Unix)
Mechanizmy komunikacji spotkania symetryczne (język CSP) spotkania asymetryczne (Ada) przestrzenie krotek (Linda) potoki, komunikaty i kanały (Unix) Język CSP Hoare (1978r.) Communicating Sequential Processes
1 Wprowadzenie do algorytmiki
Teoretyczne podstawy informatyki - ćwiczenia: Prowadzący: dr inż. Dariusz W Brzeziński 1 Wprowadzenie do algorytmiki 1.1 Algorytm 1. Skończony, uporządkowany ciąg precyzyjnie i zrozumiale opisanych czynności
Struktury formalne, czyli elementy Teorii Modeli
Struktury formalne, czyli elementy Teorii Modeli Szymon Wróbel, notatki z wykładu dra Szymona Żeberskiego semestr zimowy 2016/17 1 Język 1.1 Sygnatura językowa Sygnatura językowa: L = ({f i } i I, {P j
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
Podstawowe elementy programu. patrz: następne 2 slajdy. Podstawowe elementy programu. Komendy proste:
Podstawowe elementy programu Zestaw komend stojący do dyspozycji programisty zależy od języka programowania; jest ograniczony; jestnatylebogaty,żedajesięznichzłożyć(jakzklocków)sensowne programy Umiejętność
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
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
Wstęp do Informatyki i Programowania (kierunek matematyka stosowana)
Wstęp do Informatyki i Programowania (kierunek matematyka stosowana) Jacek Cichoń Przemysław Kobylański Instytut Matematyki i Informatyki Politechnika Wrocławska Na podstawie: M.Summerfield.Python 3. Kompletne
Sztuczna Inteligencja Projekt
Sztuczna Inteligencja Projekt Temat: Algorytm LEM2 Liczba osób realizujących projekt: 2 1. Zaimplementować algorytm LEM 2. 2. Zaimplementować klasyfikator Classif ier. 3. Za pomocą algorytmu LEM 2 wygenerować
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
Programowanie i projektowanie obiektowe
Programowanie i projektowanie obiektowe Wstęp Paweł Daniluk Wydział Fizyki Jesień 2011 P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 1 / 26 Plan wykładu 1 Wstęp komputery, algorytmy i programy 2 Podstawowe
Język rachunku predykatów Formuły rachunku predykatów Formuły spełnialne i prawdziwe Dowody założeniowe. 1 Zmienne x, y, z...
Język rachunku predykatów 1 Zmienne x, y, z... 2 Predykaty n-argumentowe P(x, y,...), Q(x, y...),... 3 Funktory zdaniowe,,,, 4 Kwantyfikatory: istnieje, dla każdego Język rachunku predykatów Ustalenie
Język programowania PASCAL
Język programowania PASCAL (wersja podstawowa - standard) Literatura: dowolny podręcznik do języka PASCAL (na laboratoriach Borland) Iglewski, Madey, Matwin PASCAL STANDARD, PASCAL 360 Marciniak TURBO
Systemy ekspertowe i ich zastosowania. Katarzyna Karp Marek Grabowski
Systemy ekspertowe i ich zastosowania Katarzyna Karp Marek Grabowski Plan prezentacji Wstęp Własności systemów ekspertowych Rodzaje baz wiedzy Metody reprezentacji wiedzy Metody wnioskowania Języki do
Strategie ewolucyjne (ang. evolu4on strategies)
Strategie ewolucyjne (ang. evolu4on strategies) Strategia ewolucyjna (1+1) W Strategii Ewolucyjnej(1 + 1), populacja złożona z jednego osobnika generuje jednego potomka. Kolejne (jednoelementowe) populacje
Definicje. Algorytm to:
Algorytmy Definicje Algorytm to: skończony ciąg operacji na obiektach, ze ściśle ustalonym porządkiem wykonania, dający możliwość realizacji zadania określonej klasy pewien ciąg czynności, który prowadzi
Teoretyczne Podstawy Języków Programowania Wykład 4. Siła wyrazu rachunku λ
Teoretyczne Podstawy Języków Programowania Wykład 4. Siła wyrazu rachunku λ Zdzisław Spławski Zdzisław Spławski: Teoretyczne Podstawy Języków Programowania, Wykład 4. Siła wyrazu rachunku λ 1 Wstęp Wartości
Wstęp do Programowania potok funkcyjny
Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 Outline Funktory 1 Funktory Intuicje Funktory Intuicje Funktory to moduły sparametryzowane (innymi modułami). Wykorzystywanie jednych modułów
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
Wstęp do programowania wykład 2 Piotr Cybula Wydział Matematyki i Informatyki UŁ 2012/2013 http://www.math.uni.lodz.pl/~cybula Język programowania Każdy język ma swoją składnię: słowa kluczowe instrukcje
Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki
Informatyka I Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli Dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Operacje relacji (porównania) A
Metoda tabel semantycznych. Dedukcja drogi Watsonie, dedukcja... Definicja logicznej konsekwencji. Logika obliczeniowa.
Plan Procedura decyzyjna Reguły α i β - algorytm Plan Procedura decyzyjna Reguły α i β - algorytm Logika obliczeniowa Instytut Informatyki 1 Procedura decyzyjna Logiczna konsekwencja Teoria aksjomatyzowalna
Algorytmy w teorii liczb
Łukasz Kowalik, ASD 2004: Algorytmy w teorii liczb 1 Algorytmy w teorii liczb Teoria liczb jest działem matemtyki dotyczącym własności liczb naturalnych. Rozważa się zagadnienia związane z liczbami pierwszymi,
Pascal - wprowadzenie
Pascal - wprowadzenie Ogólne informacje o specyfice języka i budowaniu programów Filip Jarmuszczak kl. III c Historia Pascal dawniej jeden z najpopularniejszych języków programowania, uniwersalny, wysokiego
Wyszukiwanie. Wyszukiwanie binarne
Wyszukiwanie Wejście: posortowana, n-elementowa tablica liczbowa T oraz liczba p. Wyjście: liczba naturalna, określająca pozycję elementu p w tablicy T, bądź 1, jeŝeli element w tablicy nie występuje.
Modelowanie świata dynamicznego. 25 maja 2009
Modelowanie świata dynamicznego 25 maja 2009 Problem 1. Formalizacja świata zmieniającego się dynamicznie pod wpływem wykonywanych działań (akcji). 2. Wnioskowanie w takim świecie. Realizacja procesu wnioskowania
Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne
Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne dr inż. Marcin Szlenk Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych m.szlenk@elka.pw.edu.pl Paradygmaty
ECDL Podstawy programowania Sylabus - wersja 1.0
ECDL Podstawy programowania Sylabus - wersja 1.0 Przeznaczenie Sylabusa Dokument ten zawiera szczegółowy Sylabus dla modułu Podstawy programowania. Sylabus opisuje, poprzez efekty uczenia się, zakres wiedzy
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
I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA
I. KARTA PRZEDMIOTU 1. Nazwa przedmiotu: PODSTAWY PROGRAMOWANIA. Kod przedmiotu: Ovi1 3. Jednostka prowadząca: Wydział Mechaniczno-Elektryczny 4. Kierunek: Mechatronika 5. Specjalność: Eksploatacja Systemów
Indukcja matematyczna, zasada minimum i maksimum. 17 lutego 2017
Indukcja matematyczna, zasada minimum i maksimum 17 lutego 2017 Liczby naturalne - Aksjomatyka Peano (bez zera) Aksjomatyka liczb naturalnych N jest nazwą zbioru liczb naturalnych, 1 jest nazwą elementu
FUNKCJA REKURENCYJNA. function s(n:integer):integer; begin if (n>1) then s:=n*s(n-1); else s:=1; end;
Rekurencja Wykład: rekursja, funkcje rekurencyjne, wywołanie samej siebie, wyznaczanie poszczególnych liczb Fibonacciego, potęgowanie, algorytm Euklidesa REKURENCJA Rekurencja (z łac. recurrere), zwana
Metoda Tablic Semantycznych
Procedura Plan Reguły Algorytm Logika obliczeniowa Instytut Informatyki Plan Procedura Reguły 1 Procedura decyzyjna Logiczna równoważność formuł Logiczna konsekwencja Procedura decyzyjna 2 Reguły α, β,
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
Logika Stosowana. Wykład 2 - Logika modalna Część 3. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2017/2018
Logika Stosowana Wykład 2 - Logika modalna Część 3 Marcin Szczuka Instytut Informatyki UW Wykład monograficzny, semestr letni 2017/2018 Marcin Szczuka (MIMUW) Logika Stosowana 2018 1 / 36 Plan wykładu
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
Logika Hoare a z jawnymi aktualizacjami stanu
Logika Hoare a z jawnymi aktualizacjami stanu Instytut Informatyki, Uniwersytet Wrocławski 25 października 2010 Plan prezentacji 1 Wprowadzenie 2 Logika Hoare a Floyda 3 4 Prezentacja programu KeY Hoare
Elementy logiki. Zdania proste i złożone
Elementy logiki Zdania proste i złożone. Jaka jest wartość logiczna następujących zdań: (a) jest dzielnikiem 7 lub suma kątów wewnętrznych w trójkącie jest równa 80. (b) Jeśli sin 0 =, to 5 < 5. (c) Równanie
Język C, instrukcje sterujące (laboratorium)
Język C, instrukcje sterujące (laboratorium) Opracował: Tomasz Mączka (tmaczka@kia.prz.edu.pl) Na podstawie http://pl.wikibooks.org/wiki/c Wstęp Instrukcja warunkowa Instrukcja if/if-else pozwala na warunkowe
Aproksymacja funkcji a regresja symboliczna
Aproksymacja funkcji a regresja symboliczna Problem aproksymacji funkcji polega na tym, że funkcję F(x), znaną lub określoną tablicą wartości, należy zastąpić inną funkcją, f(x), zwaną funkcją aproksymującą
Rekurencyjna przeliczalność
Rekurencyjna przeliczalność Jerzy Pogonowski Zakład Logiki Stosowanej UAM www.logic.amu.edu.pl pogon@amu.edu.pl Funkcje rekurencyjne Jerzy Pogonowski (MEG) Rekurencyjna przeliczalność Funkcje rekurencyjne
Programowanie w Ruby
Programowanie w Ruby Wykład 1 Marcin Młotkowski 3 października 2012 Plan wykładu Sprawy organizacyjne Wykład Źródła wiedzy Zaliczenia O języku Historia i pochodzenie języka O języku Instrukcje złożone
Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane:
Wykład 4 grafy Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, E zbiór krawędzi, Grafy dzielimy na grafy skierowane i nieskierowane: Formalnie, w grafach skierowanych E jest podzbiorem
Programowanie w logice
Programowanie w logice PROLOG cz.1 PROLOG język wysokiego poziomu Powstał w 1972 na Uniwersytecie w Marsylii (Francja) w zespole A.Colmerauer a i F.Roussel a PROgrammation en LOGique, PROgramming in LOGic,
Laboratorium 2: Pętle i instrukcje warunkowe. mgr inż. Leszek Ciopiński dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski
Laboratorium 2: Pętle i instrukcje warunkowe mgr inż. Leszek Ciopiński dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski 17 października 2015 1. Wprowadzenie Pierwsza część instrukcji zawiera informacje
STANDARDOWE FUNKCJE PRZYNALEŻNOŚCI. METODY HEURYSTYCZNE wykład 6. (alternatywa dla s) (zdef. poprzez klasę s) GAUSSOWSKA F.
METODY HEURYSTYCZNE wykład 6 STANDARDOWE FUNKCJE PRZYNALEŻNOŚCI 2 GAUSSOWSKA F. PRZYNALEŻNOŚCI F. PRZYNALEŻNOŚCI KLASY s środek; a określa szerokość krzywej 3 4 F. PRZYNALEŻNOŚCI KLASY π F. PRZYNALEŻNOŚCI
Konsekwencja logiczna
Konsekwencja logiczna Niech Φ 1, Φ 2,..., Φ n będa formułami logicznymi. Formuła Ψ wynika logicznie z Φ 1, Φ 2,..., Φ n jeżeli (Φ 1 Φ 2 Φ n ) Ψ jest tautologia. Formuły Φ 1, Φ 2,..., Φ n nazywamy założeniami
Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe
Podstawy programowania Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe 1 I. Składnia Składnia programu Program nazwa; Uses biblioteki; Var deklaracje zmiennych;
Metody Rozmyte i Algorytmy Ewolucyjne
mgr inż. Wydział Matematyczno-Przyrodniczy Szkoła Nauk Ścisłych Uniwersytet Kardynała Stefana Wyszyńskiego Podstawowe operatory genetyczne Plan wykładu Przypomnienie 1 Przypomnienie Metody generacji liczb
Systemy ekspertowe. Wnioskowanie w systemach regułowych. Część piąta. Autor Roman Simiński.
Część piąta Autor Roman Simiński Kontakt siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi uważnego w nim uczestnictwa.
Wprowadzenie komentarzy do programu
Wprowadzenie komentarzy do programu W programach mogą wystąpić objaśnienia, uwagi zamykane w klamrach { } lub nawiasach z gwiazdką (* *). Komentarze ułatwiają zrozumienie programów. Przyjmijmy, że komentarze
Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji
Podstawy programowania Laboratorium Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji Instrukcja warunkowa if Format instrukcji warunkowej Przykład 1. if (warunek) instrukcja albo zestaw
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
Programowanie komputerowe. Zajęcia 4
Programowanie komputerowe Zajęcia 4 Typ logiczny Wartości logiczne są reprezentowane przez typ bool. Typ bool posiada tylko dwie wartości: true i false. Zamiast wartości logicznych można używać wartości
Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice.
Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice. Język PHP Język interpretowalny, a nie kompilowany Powstał w celu programowania
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
Adam Meissner.
Instytut Automatyki i Inżynierii Informatycznej Politechniki Poznańskiej Adam Meissner Adam.Meissner@put.poznan.pl http://www.man.poznan.pl/~ameis SZTUCZNA INTELIGENCJA Podstawy logiki pierwszego rzędu
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,
Lekcja 3: Elementy logiki - Rachunek zdań
Lekcja 3: Elementy logiki - Rachunek zdań S. Hoa Nguyen 1 Materiał a) Zdanie proste, złożone b) Spójniki logiczne (funktory zdaniotwórcze):,,,,, (alternatywa wykluczająca - XOR). c) Tautologia, zdanie
JEZYKOZNAWSTWO. I NAUKI O INFORMACJI, ROK I Logika Matematyczna: egzamin pisemny 18 czerwca Imię i Nazwisko:... I
JEZYKOZNAWSTWO I NAUKI O INFORMACJI, ROK I Logika Matematyczna: egzamin pisemny 18 czerwca 2013 Imię i Nazwisko:.................................................................................. I Wybierz