Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku
|
|
- Błażej Stankiewicz
- 5 lat temu
- Przeglądów:
Transkrypt
1 Matematyka Dyskretna Andrzej Szepietowski 25 czerwca 2002 roku
2
3 Rozdział 1 Poprawność programów Jeżeli projektujemy algorytmy lub piszemy programy, to ważne jest pytanie, czy nasz algorytm lub program jest poprawny, czy nie zawiera błędów. Konkretniej, możemy spytać, czy nasz program jest napisany zgodnie z regułami języka programowania i czy liczy to, co chcemy. 1.1 Poprawność syntaktyczna Jeżeli program jest napisany zgodnie z regułami języka programowania, to mówimy, że jest poprawny pod względem syntaktycznym, a wykroczenia przeciwko składni języka nazywają się błędami syntaktycznymi. Przykładami takich błędów w języku Pascal są: użycie zmiennej, która wcześniej nie została zadeklarowana, lub postawienie średnika przed słowem else w instrukcji warunkowej. Poprawność syntaktyczna nie jest wielkim problemem. Języki programowania mają bardzo ścisłe reguły składni, określające, jak budować poprawne programy, i konstruktorzy tych języków zadbali o to, aby można było łatwo wykryć błędy syntaktyczne. Istnieją kompilatory, które automatycznie sprawdzają poprawność syntaktyczną programów. Kompilatory niektórych języków są dość skomplikowanymi programami i oprócz komunikatu o błędzie dają także wskazówki, jak błąd usunąć. 1.2 Poprawność semantyczna Dużo poważniejszym problemem jest poprawność semantyczna, czyli stwierdzenie, czy program lub algorytm liczy to, co powinien. Problem zaczyna się już wówczas, gdy spytamy, co to znaczy liczy to, co powinien. Zajmiemy się teraz jednym z możliwych podejść do problemu poprawności. Program przekształca dane wejściowe w dane wyjściowe i dlatego możemy go traktować jak funkcję ze zbioru danych wejściowych w zbiór danych wyjściowych. Na przykład dla algorytmu Euklidesa (porównaj rozdział o teorii liczb) danymi wejściowymi są pary liczb 3
4 4 Rozdział 1. Poprawność programów naturalnych, a danymi wyjściowymi są pojedyncze liczby naturalne. W algorytmie sortującym danymi wejściowymi i wyjściowymi są ciągi liczb. Żeby określić co program robi definiuje się warunki: jeden warunek mówi, jakie powinny być dane wejściowe, a drugi warunek określa, jakie powinny być dane wyjściowe. Problem algorytmiczny możemy więc zdefiniować przez podanie: zbioru danych wejściowych, zbioru danych wyjściowych, predykatu (funkcji zdaniowej), który określa warunki początkowe; przyjmuje wartość prawda, jeżeli dane wejściowe są poprawnie zbudowane, predykatu, który określa relację pomiędzy danymi wyjściowymi i wejściowymi; ma wartość prawda, jeżeli dane wyjściowe są prawidłową odpowiedzią algorytmu na dane wejściowe. W przykładzie algorytmu Euklidesa: dane wejściowe to pary liczb naturalnych, dane wyjściowe to zbiór liczb naturalnych warunek początkowy!#"%$ &('*)+,"-$., relacja!/01324 określa, że 2 jest największym wspólnym dzielnikiem liczb i. Zadanie algorytmiczne sortowania może być zdefiniowane w następujący sposób (dla prostoty zakładamy, że sortujemy ciągi różnowartościowe): i to zbiory wszystkich ciągów długości 5, warunek mówi, że ciąg jest różnowartościowy: 67 98;:=<>?@A< BC >ED warunek G określa, że ciąg jest rosnący i zawiera dokładnie te same elementy co ciąg : G 7 98G:0< > < BH*:0<*@A<B /> 1@, F@1Ä and 8;:=<><B4I;:6(>KJL.>NM:O =P Takiego typu warunki nazywają się specyfikacją algorytmu lub programu. Jednym słowem, specyfikacja mówi nam, co program ma robić. Program działa poprawnie, jeżeli dla każdych danych wejściowych, spełniających warunek wejściowy, daje wynik, który spełnia warunek wyjściowy G3F. Zwykle dowód poprawności programu rozbija się na dwa poddowody. Osobno dowodzi się poprawności przy założeniu, że program zawsze się zatrzyma, a osobno dowodzi się, że program zatrzymuje się dla każdych poprawnie zbudowanych danych wejściowych.
5 1.3. Niezmienniki 5 Definicja 1.1 Program jest częściowo poprawny względem warunków i, gdy dla każdych danych wejściowych spełniajacych zachodzi następująca implikacja: jeżeli program zatrzymuje się na danych i daje wynik, to zachodzi warunek G3F. Program jest całkowicie poprawny, jeżeli jest częściowo poprawny i ponadto zatrzymuje się dla każdych danych wejściowych spełniających warunek. Jedną z metod dowodzenia częściowej poprawności programu jest metoda niezmienników lub asercji indukcyjnych. 1.3 Niezmienniki Metoda niezmienników polega na wyznaczeniu w programie kilku punktów kontrolnych i związaniu z tymi punktami asercji, czyli pewnych warunków. Wśród punktów kontrolnych dwa są szczególne: jeden punkt zaraz na początku programu z asercją początkową i jeden punkt na końcu programu z asercją końcową. Asercja początkowa zwykle zawiera sformułowania obejmujące warunki na dane początkowe. Asercja końcowa opisuje relację wiążącą dane wejściowe z wyjściowymi. Po wyznaczeniu punktów i asercji dowodzimy, że każda asercja jest spełniona zawsze wtedy, gdy wykonanie programu dojdzie do odpowiadającego jej punktu kontrolnego. W ten sposób dowodzimy, że jeżeli na początku był spełniony warunek początkowy i potem program dojdzie do punktu końcowego, to będzie spełniony warunek. Dowód poprawności może przebiegać w ten sposób, że dla poszczególnych par punktów kontrolnych i (niekoniecznie różnych) dowodzimy następującą implikację: jeżeli w punkcie spełniona jest asercja, a następnie wykonanie programu przejdzie z punktu do, to w punkcie będzie spełniona asercja. Niektóre punkty kontrolne mogą być w trakcie wykonywania programu osiągane wielokrotnie (na przykład punkty znajdujące się wewnątrz pętli). Tak więc asercja powinna być spełniona za każdym odwiedzeniem punktu kontrolnego. Z tego powodu asercje te nazywamy niezmiennikami. Sposób rozmieszczenia punktów kontrolnych i przypisania tym punktom asercji nie jest prosty i nie ma uniwersalnych reguł w tym względzie. Podobnie jak z dowodzeniem twierdzeń, sposób dowodu poprawności programu jest oryginalnym pomysłem autora dowodu. Istnieją w tym względzie pewne reguły heurystyczne, niektóre nawet bardzo złożone, ale nie ma uniwersalnych reguł, które pozwolą udowodnić poprawność lub niepoprawność każdego programu. 1.4 Liczniki Aby udowodnić, że algorytm zawsze się zatrzyma, możemy użyć liczników. Najpierw, podobnie jak poprzednio, wyznaczamy punkty kontrolne i pewną zmienną, zwaną licznikiem lub zbieżnikiem, która może przyjmować tylko wartości całkowite nieujemne. Następnie dowodzimy, że po każdym odwiedzeniu jakiegoś punktu kontrolnego wartość licznika maleje.
6 6 Rozdział 1. Poprawność programów Nie ma miejsca w tej książce na rozwijanie teorii dowodzenia poprawności programu. Zajmiemy się tylko dwoma przykładami. Pierwszy to algorytm Euklidesa, który był przedstawiony w rozdziale z teorii liczb i tam też przedstawiono dowód jego poprawności. Teraz tylko sformułujemy go w języku asercji. 1.5 Algorytm Euklidesa jeszcze raz Oto jeszcze raz algorytm Euklidesa opisany w języku Pascal: var a,b,p,q:integer; begin readln(a,b); {A} p:=a;q:=b; while p<>q do {C} if p>q then p:=p-q else q:=q-p; {B} writeln( NWD(,a,,,b, )=,p) end. W programie umieściliśmy trzy punkty kontrolne. Punkt na początku, zaraz za instrukcją readln(a,b). Asercja związana z punktem orzeka, że i to dwie dodatnie liczby całkowite. Punkt znajduje się na końcu programu, tuż przed instrukcją writeln. Asercja związana z tym punktem orzeka, że zawiera największy wspólny dzielnik liczb i. Trzeci punkt kontrolny jest wewnątrz pętli, tuż przed instrukcją warunkową if. Asercja orzeka, że para liczb i ma taki sam największy wspólny dzielnik co para i. Dowodzimy cztery implikacje: jeżeli wykonanie programu jest w punkcie i spełniona jest asercja, a następnie program przejdzie do punktu, to spełniona będzie asercja, jeżeli wykonanie programu jest w punkcie i spełniona jest asercja, a następnie program ponownie przejdzie do punktu, to spełniona będzie asercja, jeżeli wykonanie programu jest w punkcie i spełniona jest asercja, a następnie program przejdzie do punktu, to spełniona będzie asercja, jeżeli wykonanie programu jest w punkcie i spełniona jest asercja, a następnie program przejdzie do punktu, to spełniona będzie asercja.
7 D 1.6. Potęgowanie 7 Naszkicujmy tylko dowód drugiej implikacji, pozostałe dowodzi się podobnie. Załóżmy, że wykonanie programu znajduje się w punkcie i że zmienne i mają wtedy wartości : i :. Jeżeli w wyniku dalszego wykonania program ponownie dojdzie do punktu, to znaczy, że : :, bez straty ogólności możemy założyć, że : " :. Wtedy nowe wartości zmiennych i mają wartości : : oraz :. Z faktu, że wartości : i : spełniają asercję E : :, wynika, że para : i : ma taki sam największy wspólny dzielnik jak para wejściowa i. W rozdziale o teorii liczb pokazano, że para ma taki sam zbiór wspólnych dzielników jak para : :. Tak więc także para ma taki sam największy wspólny dzielnik jak para, więc spełnia asercję. Aby pokazać, że program zatrzymuje się dla każdych danych spełniających warunek #" $, wprowadzimy licznik dla punktu kontrolnego. Licznikiem tym jest wartość &. Jest jasne, że wartość licznika jest zawsze liczbą całkowitą nieujemną i że zmniejsza się przy każdym ponownym odwiedzeniu punktu. Wykonanie programu nie może więc trwać w nieskończoność. 1.6 Potęgowanie Drugim przykładem niech będzie program na podnoszenie liczby dwa do potęgi 5. var n,x,y:integer; begin readln(n); {A} y:=1; x:=n; while x>0 do begin {C} x:=x-1; y:=y+y end; {B} writeln(y) end. na początku, zaraz za instruk- W tym programie też są trzy punkty kontrolne. Punkt cją readln, z asercją: Punkt 5%$.ÄP na końcu programu, tuż przed instrukcją writeln, z asercją: B L ÄP Trzeci punkt kontrolny jest wewnątrz pętli, tuż przed instrukcją x:=x-1, z asercją: B =P
8 8 Rozdział 1. Poprawność programów Dowód poprawności programu polega teraz na dowodzie tych samych czterech implikacji, które znajdują się w podrozdziale Aby udowodnić, że program zawsze się zatrzyma, wystarczy jako licznik przyjąć zmienną, która przyjmuje wartości nieujemne i zmniejsza swoją wartość przy każdym kolejnym odwiedzeniu punktu. 1.7 Czekery W przypadku gdy udowodnimy, że jakiś program działa poprawnie, wówczas mamy pewność, że dla każdych danych wejściowych uzyskany wynik będzie dobry. Inną metodą sprawdzania, że program działa poprawnie, są czekery. Zamiast dowodzić, że program zawsze zadziała dobrze, czekery sprawdzają, czy zadziałał on dobrze w konkretnych przypadkach. Do zadania algorytmicznego projektowane są dwa programy. Program główny, który rozwiązuje zadanie, oraz program, zwany czekerem lub weryfikatorem, który po każdym zadziałaniu programu sprawdza, czy odpowiedź programu jest poprawna. Zakłada się przy tym, że działanie czekera jest dużo prostsze niż działanie programu. W dodatku program może być traktowany jak czarna skrzynka, gdzie nie mamy wglądu w to, jak program działa, tylko dostajemy ostateczne odpowiedzi. Przyjrzyjmy się pomysłowi czekerów na przykładach. Weźmy znowu algorytm Euklidesa, ale teraz wygodniej jest wziąć wersję, gdzie pro- gram bierze parę liczb i i zwraca trzy liczby: 2. 0 sprawdzić, czy 2 dzieli i, oraz czy!a oraz i, takie że 2. Żeby sprawdzić, czy program dobrze obliczył dane wyjściowe, wystarczy O - Inny przykład to czeker dla programu obliczającego zaokrąglenie w górę pierwiastka kwadratowego z liczby naturalnej 5. Przykład takiego programu przedstawiono w rozdziale 3.5. Jeżeli program główny oblicza dla wartości wejściowej 5 wartość wyjściową, to zadanie czekera polega na sprawdzeniu dwóch rzeczy, czy L5 2/P oraz czy JL5KP 1.8 Zadania 1. Udowodnij poprawność programu (przedstawionego w podrozdziale 6.6), który dla danych liczb, " $ oblicza równość / A. A oraz liczby całkowite, spełniające
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
Bardziej szczegółowoPoprawność 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
Bardziej szczegółowoWstę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
Bardziej szczegółowoIndukcja. 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
Bardziej szczegółowoPoprawność algorytmów
Poprawność algorytmów Jeśli uważasz, że jakiś program komputerowy jest bezbłędny, to się mylisz - po prostu nie zauważyłeś jeszcze skutków błędu, który jest w nim zawarty. Jakie błędy można popełnić? Błędy
Bardziej szczegółowoWykład 4. Określimy teraz pewną ważną klasę pierścieni.
Wykład 4 Określimy teraz pewną ważną klasę pierścieni. Twierdzenie 1 Niech m, n Z. Jeśli n > 0 to istnieje dokładnie jedna para licz q, r, że: m = qn + r, 0 r < n. Liczbę r nazywamy resztą z dzielenia
Bardziej szczegółowo2.8. Algorytmy, schematy, programy
https://app.wsipnet.pl/podreczniki/strona/38766 2.8. Algorytmy, schematy, programy DOWIESZ SIĘ co oznaczają pojęcia: algorytm, schemat blokowy, język programowania, jakie są sposoby obliczania największego
Bardziej szczegółowoProgramowanie w Turbo Pascal
Skróty: ALT + F9 Kompilacja CTRL + F9 Uruchomienie Struktura programu: Programowanie w Turbo Pascal Program nazwa; - nagłówek programu - blok deklaracji (tu znajduje się VAR lub CONST) - blok instrukcji
Bardziej szczegółowo3. 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ę
Bardziej szczegółowoTEMAT: Podejmowanie decyzji w programie instrukcja warunkowa (IF).
INFORMATYKA kl. II gimnazjum Krzysztof Gładkowski TEMAT: Podejmowanie decyzji w programie instrukcja warunkowa (IF). Czas: 2godz. Przygotowanie środowiska. Pomoce dydaktyczne. Oprogramowanie środowisko
Bardziej szczegółowoAlgorytmy 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
Bardziej szczegółowoW. Guzicki Próbna matura, grudzień 2014 r. poziom rozszerzony 1
W. Guzicki Próbna matura, grudzień 01 r. poziom rozszerzony 1 Próbna matura rozszerzona (jesień 01 r.) Zadanie 18 kilka innych rozwiązań Wojciech Guzicki Zadanie 18. Okno na poddaszu ma mieć kształt trapezu
Bardziej szczegółowoOgólne zasady projektowania algorytmów i programowania
Ogólne zasady projektowania algorytmów i programowania Pracuj nad właściwie sformułowanym problemem dokładna analiza nawet małego zadania może prowadzić do ogromnych korzyści praktycznych: skrócenia długości
Bardziej szczegółowoWykł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ę
Bardziej szczegółowoZadania do samodzielnego rozwiązania
Zadania do samodzielnego rozwiązania I. Podzielność liczb całkowitych 1. Pewna liczba sześciocyfrowa a kończy się cyfrą 5. Jeśli tę cyfrę przestawimy na miejsce pierwsze ze strony lewej, to otrzymamy nową
Bardziej szczegółowoWstę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
Bardziej szczegółowoAlgorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny
Algorytm to przepis; zestawienie kolejnych kroków prowadzących do wykonania określonego zadania; to uporządkowany sposób postępowania przy rozwiązywaniu zadania, problemu, z uwzględnieniem opisu danych
Bardziej szczegółowoAlgorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji.
Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji. Maria Górska 9 stycznia 2010 1 Spis treści 1 Pojęcie algorytmu 3 2 Sposób
Bardziej szczegółowoZapisywanie algorytmów w języku programowania
Temat C5 Zapisywanie algorytmów w języku programowania Cele edukacyjne Zrozumienie, na czym polega programowanie. Poznanie sposobu zapisu algorytmu w postaci programu komputerowego. Zrozumienie, na czym
Bardziej szczegółowoJęzyki programowania zasady ich tworzenia
Strona 1 z 18 Języki programowania zasady ich tworzenia Definicja 5 Językami formalnymi nazywamy każdy system, w którym stosując dobrze określone reguły należące do ustalonego zbioru, możemy uzyskać wszystkie
Bardziej szczegółowoElż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,
Bardziej szczegółowoParadygmaty programowania
Paradygmaty programowania Jacek Michałowski, Piotr Latanowicz 15 kwietnia 2014 Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 1 / 12 Zadanie 1 Zadanie 1 Rachunek predykatów
Bardziej szczegółowoAlgorytm. a programowanie -
Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik
Bardziej szczegółowoWykład 8. Rekurencja. Iterować jest rzeczą ludzką, wykonywać rekursywnie boską. L. Peter Deutsch
Wykład 8 Iterować jest rzeczą ludzką, wykonywać rekursywnie boską. Smok podsuszony zmok (patrz: Zmok). Zmok zmoczony smok (patrz: Smok). L. Peter Deutsch Stanisław Lem Wizja lokalna J. Cichoń, P. Kobylański
Bardziej szczegółowoProgramowanie i techniki algorytmiczne
Temat 2. Programowanie i techniki algorytmiczne Realizacja podstawy programowej 1) wyjaśnia pojęcie algorytmu, podaje odpowiednie przykłady algorytmów rozwiązywania różnych 2) formułuje ścisły opis prostej
Bardziej szczegółowoJę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
Bardziej szczegółowoWprowadzenie do algorytmiki
Wprowadzenie do algorytmiki Pojecie algorytmu Powszechnie przyjmuje się, że algorytm jest opisem krok po kroku rozwiązania postawionego problemu lub sposób osiągnięcia jakiegoś celu. Wywodzi się z matematyki
Bardziej szczegółowoWykład 11a. Składnia języka Klasycznego Rachunku Predykatów. Języki pierwszego rzędu.
Andrzej Wiśniewski Logika I Materiały do wykładu dla studentów kognitywistyki Wykład 11a. Składnia języka Klasycznego Rachunku Predykatów. Języki pierwszego rzędu. 1 Logika Klasyczna obejmuje dwie teorie:
Bardziej szczegółowoLogarytmy. Funkcje logarytmiczna i wykładnicza. Równania i nierówności wykładnicze i logarytmiczne.
Logarytmy. Funkcje logarytmiczna i wykładnicza. Równania i nierówności wykładnicze i logarytmiczne. Definicja. Niech a i b będą dodatnimi liczbami rzeczywistymi i niech a. Logarytmem liczby b przy podstawie
Bardziej szczegółowoLogika 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
Bardziej szczegółowoDefinicje. Algorytm to:
Algorytmy Definicje Algorytm to: skończony ciąg operacji na obiektach, ze ściśle ustalonym porządkiem wykonania, dający możliwość realizacji zadania określonej klasy pewien ciąg czynności, który prowadzi
Bardziej szczegółowoPascal - wprowadzenie
Pascal - wprowadzenie Ogólne informacje o specyfice języka i budowaniu programów Filip Jarmuszczak kl. III c Historia Pascal dawniej jeden z najpopularniejszych języków programowania, uniwersalny, wysokiego
Bardziej szczegółowo1. Wykład NWD, NWW i algorytm Euklidesa.
1.1. NWD, NWW i algorytm Euklidesa. 1. Wykład 1 Twierdzenie 1.1 (o dzieleniu z resztą). Niech a, b Z, b 0. Wówczas istnieje dokładnie jedna para liczb całkowitych q, r Z taka, że a = qb + r oraz 0 r< b.
Bardziej szczegółowoZasada indukcji matematycznej
Zasada indukcji matematycznej Twierdzenie 1 (Zasada indukcji matematycznej). Niech ϕ(n) będzie formą zdaniową zmiennej n N 0. Załóżmy, że istnieje n 0 N 0 takie, że 1. ϕ(n 0 ) jest zdaniem prawdziwym,.
Bardziej szczegółowoWykł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
Bardziej szczegółowoAndrzej Wiśniewski Logika II. Wykład 6. Wprowadzenie do semantyki teoriomodelowej cz.6. Modele i pełność
Andrzej Wiśniewski Logika II Materiały do wykładu dla studentów kognitywistyki Wykład 6. Wprowadzenie do semantyki teoriomodelowej cz.6. Modele i pełność 1 Modele Jak zwykle zakładam, że pojęcia wprowadzone
Bardziej szczegółowoJAO - Wprowadzenie do Gramatyk bezkontekstowych
JAO - Wprowadzenie do Gramatyk bezkontekstowych Definicja gramatyki bezkontekstowej Podstawowymi narzędziami abstrakcyjnymi do opisu języków formalnych są gramatyki i automaty. Gramatyka bezkontekstowa
Bardziej szczegółowoDefinicja algorytmu brzmi:
1.1. Definicja algorytmu Często w życiu stajesz przed koniecznością rozwiązania jakiegoś zadania. Na lekcji matematyki musisz na przykład rozwiązać równanie i w tym celu wykonujesz szereg czynności: od
Bardziej szczegółowo(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. -
Bardziej szczegółowoPrzeszukiwanie z nawrotami. Wykład 8. Przeszukiwanie z nawrotami. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279
Wykład 8 J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279 sformułowanie problemu przegląd drzewa poszukiwań przykłady problemów wybrane narzędzia programistyczne J. Cichoń, P. Kobylański
Bardziej szczegółowoAlgorytmy. 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
Bardziej szczegółowo1 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
Bardziej szczegółowoPodstawowe 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ść
Bardziej szczegółowoWHILE (wyrażenie) instrukcja;
INSTRUKCJE ITERACYJNE WHILE, DO WHILE, FOR Instrukcje iteracyjne pozwalają powtarzać daną instrukcję programu określoną liczbę razy lub do momentu osiągnięcia określonego skutku. Pętla iteracyjna while
Bardziej szczegółowoFunkcja kwadratowa. f(x) = ax 2 + bx + c = a
Funkcja kwadratowa. Funkcją kwadratową nazywamy funkcję f : R R określoną wzorem gdzie a, b, c R, a 0. f(x) = ax + bx + c, Szczególnym przypadkiem funkcji kwadratowej jest funkcja f(x) = ax, a R \ {0}.
Bardziej szczegółowoZa pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).
Algorytmy definicja, cechy, złożoność. Algorytmy napotykamy wszędzie, gdziekolwiek się zwrócimy. Rządzą one wieloma codziennymi czynnościami, jak np. wymiana przedziurawionej dętki, montowanie szafy z
Bardziej szczegółowoINSTRUKCJA PUSTA. Nie składa się z żadnych znaków i symboli, niczego nie robi. for i := 1 to 10 do {tu nic nie ma};
INSTRUKCJA PUSTA Nie składa się z żadnych znaków i symboli, niczego nie robi Przykłady: for i := 1 to 10 do {tu nic nie ma}; while a>0 do {tu nic nie ma}; if a = 0 then {tu nic nie ma}; INSTRUKCJA CASE
Bardziej szczegółowoMatematyka dyskretna. Andrzej Łachwa, UJ, /14
Matematyka dyskretna Andrzej Łachwa, UJ, 2019 andrzej.lachwa@uj.edu.pl 3/14 Funkcje Funkcja o dziedzinie X i przeciwdziedzinie Y to dowolna relacja f X Y taka, że x X!y Y: (x,y) f. Dziedzinę i przeciwdziedzinę
Bardziej szczegółowoProcedury i funkcje - powtórzenie i uzupełnienia. Przykład funkcji potęgowanie przy wykładniku naturalnym
Procedury i funkcje - powtórzenie i uzupełnienia Przykład funkcji potęgowanie przy wykładniku naturalnym program potegowanie; {$APPTYPE CONSOLE} uses SysUtils; var x: real; n: integer; function Potega(podstawa:
Bardziej szczegółowoAlgorytm. Krótka historia algorytmów
Algorytm znaczenie cybernetyczne Jest to dokładny przepis wykonania w określonym porządku skończonej liczby operacji, pozwalający na rozwiązanie zbliżonych do siebie klas problemów. znaczenie matematyczne
Bardziej szczegółowoFunkcja kwadratowa. f(x) = ax 2 + bx + c,
Funkcja kwadratowa. Funkcją kwadratową nazywamy funkcję f : R R określoną wzorem gdzie a, b, c R, a 0. f(x) = ax 2 + bx + c, Szczególnym przypadkiem funkcji kwadratowej jest funkcja f(x) = ax 2, a R \
Bardziej szczegółowoMatematyka dyskretna
Matematyka dyskretna Wykład 4: Podzielność liczb całkowitych Gniewomir Sarbicki Dzielenie całkowitoliczbowe Twierdzenie: Dla każdej pary liczb całkowitych (a, b) istnieje dokładnie jedna para liczb całkowitych
Bardziej szczegółowoAlgorytmy od problemu do wyniku
Algorytmy Etapy tworzenia programu: 1) Sformułowanie zadania analiza problemu. 2) Opracowanie algorytmu sposób rozwiązania. 3) Zapisanie algorytmu w języku programowania kodowanie programu. 4) Kompilowanie
Bardziej szczegółowoAlgorytmy i struktury danych
Algorytmy i struktury danych Funkcje i procedury Zasięg zmiennych Rekurencja Witold Marańda maranda@dmcs.p.lodz.pl 1 Modularyzacja programu Algorytmy strukturalne moŝna redukować, zastępując złoŝone fragmenty
Bardziej szczegółowoTemat 20. Techniki algorytmiczne
Realizacja podstawy programowej 5. 1) wyjaśnia pojęcie algorytmu, podaje odpowiednie przykłady algorytmów rozwiązywania różnych problemów; 2) formułuje ścisły opis prostej sytuacji problemowej, analizuje
Bardziej szczegółowoZapis algorytmów: schematy blokowe i pseudokod 1
Zapis algorytmów: schematy blokowe i pseudokod 1 Przed przystąpieniem do napisania kodu programu należy ten program najpierw zaprojektować. Projekt tworzącego go algorytmu może być zapisany w formie schematu
Bardziej szczegółowoSchemat rekursji. 1 Schemat rekursji dla funkcji jednej zmiennej
Schemat rekursji 1 Schemat rekursji dla funkcji jednej zmiennej Dla dowolnej liczby naturalnej a i dowolnej funkcji h: N 2 N istnieje dokładnie jedna funkcja f: N N spełniająca następujące warunki: f(0)
Bardziej szczegółowoAlgorytmy. 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
Bardziej szczegółowoWykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL
Studia Podyplomowe INFORMATYKA Podstawy Informatyki Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL 1 Część 1 Pojęcie algorytmu 2 I. Pojęcie algorytmu Trochę historii Pierwsze
Bardziej szczegółowoO geometrii semialgebraicznej
Inauguracja roku akademickiego 2018/2019 na Wydziale Matematyki i Informatyki Uniwersytetu Łódzkiego O geometrii semialgebraicznej Stanisław Spodzieja Łódź, 28 września 2018 Wstęp Rozwiązywanie równań
Bardziej szczegółowoznajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.
Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo
Bardziej szczegółowoPodstawy Programowania
Podstawy Programowania Monika Wrzosek Instytut Matematyki Uniwersytet Gdański Matematyka 2017/18 Monika Wrzosek (IM UG) Podstawy Programowania 1 / 119 Sprawy organizacyjne E-mail: mwrzosek@mat.ug.edu.pl
Bardziej szczegółowoPodstawy 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
Bardziej szczegółowoZnaleźć wzór ogólny i zbadać istnienie granicy ciągu określonego rekurencyjnie:
Ciągi rekurencyjne Zadanie 1 Znaleźć wzór ogólny i zbadać istnienie granicy ciągu określonego rekurencyjnie: w dwóch przypadkach: dla i, oraz dla i. Wskazówka Należy poszukiwać rozwiązania w postaci, gdzie
Bardziej szczegółowoProgramowanie 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
Bardziej szczegółowoInformatyka 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
Bardziej szczegółowoIndukcja 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
Bardziej szczegółowoWHILE (wyrażenie) instrukcja;
INSTRUKCJE ITERACYJNE WHILE, DO WHILE, FOR Instrukcje iteracyjne pozwalają powtarzać daną instrukcję programu określoną liczbę razy lub do momentu osiągnięcia określonego skutku. Pętla iteracyjna while
Bardziej szczegółowo1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Bardziej szczegółowoWIADOMOŚCI WSTĘPNE WPROWADZENIE DO JĘZYKA TURBO PASCAL. Klawisze skrótów. {to jest właśnie komentarz, moŝna tu umieścić dowolny opis}
1 WIADOMOŚCI WSTĘPNE Programowanie komputerów najogólniej mówiąc polega na zapisaniu pewniej listy poleceń do wykonania przez komputer w pewnym umownym języku Taką listę poleceń nazywamy programem Program
Bardziej szczegółowoSTART. Wprowadź (v, t) S:=v*t. Wyprowadź (S) KONIEC
GRUPA I Co to jest algorytm, a czym jest program komputerowy? Algorytm: uporządkowany i uściślony sposób rozwiązywania problemu, zawierający szczegółowy opis wykonywanych czynności. Program komputerowy:
Bardziej szczegółowoMatematyka dyskretna. Andrzej Łachwa, UJ, /10
Matematyka dyskretna Andrzej Łachwa, UJ, 2018 andrzej.lachwa@uj.edu.pl 2/10 funkcje Funkcja o dziedzinie X i przeciwdziedzinie Y to dowolna relacja f X Y taka, że x X!y Y: (x,y) f. Dziedzinę i przeciwdziedzinę
Bardziej szczegółowoPodprogramy. Procedury
Podprogramy Turbo Pascal oferuje metody ułatwiające tworzenie struktury programu, szczególnie dotyczy to większych programów. Przy tworzeniu większego programu stosuje się jego podział na kilka mniejszych
Bardziej szczegółowoWykład 1. Na początku zajmować się będziemy zbiorem liczb całkowitych
Arytmetyka liczb całkowitych Wykład 1 Na początku zajmować się będziemy zbiorem liczb całkowitych Z = {0, ±1, ±2,...}. Zakładamy, że czytelnik zna relację
Bardziej szczegółowoDwa równania kwadratowe z częścią całkowitą
Dwa równania kwadratowe z częścią całkowitą Andrzej Nowicki Wydział Matematyki i Informatyki Uniwersytet M. Kopernika w Toruniu anow @ mat.uni.torun.pl 4 sierpnia 00 Jeśli r jest liczbą rzeczywistą, to
Bardziej szczegółowoTechnologie informacyjne - wykład 12 -
Zakład Fizyki Budowli i Komputerowych Metod Projektowania Instytut Budownictwa Wydział Budownictwa Lądowego i Wodnego Politechnika Wrocławska Technologie informacyjne - wykład 12 - Prowadzący: Dmochowski
Bardziej szczegółowoWykł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.
Bardziej szczegółowoPierścień wielomianów jednej zmiennej
Rozdział 1 Pierścień wielomianów jednej zmiennej 1.1 Definicja pierścienia wielomianów jednej zmiennej Definicja 1.1 Niech P będzie dowolnym pierścieniem. Ciąg nieskończony (a 0, a 1,..., a n,...) elementów
Bardziej szczegółowoAnaliza 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ą
Bardziej szczegółowoprzedmiot kilka razy, wystarczy kliknąć przycisk Wyczaruj ostatni,
Baltie Zadanie 1. Budowanie W trybie Budowanie wybuduj domek jak na rysunku. Przedmioty do wybudowania domku weź z banku 0. Zadanie 2. Czarowanie sterowanie i powtarzanie W trybie Czarowanie z pomocą czarodzieja
Bardziej szczegółowoWyszukiwanie. 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.
Bardziej szczegółowoW. Guzicki Zadanie IV z Informatora Maturalnego poziom rozszerzony 1
W. Guzicki Zadanie IV z Informatora Maturalnego poziom rozszerzony 1 Zadanie IV. Dany jest prostokątny arkusz kartony o długości 80 cm i szerokości 50 cm. W czterech rogach tego arkusza wycięto kwadratowe
Bardziej szczegółowoParadygmaty 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.
Bardziej szczegółowoLISTA 5. C++ PETLE for, while, do while
WSTEP DO INFORMATYKI I PROGRAMOWANIA LISTA 5. C++ PETLE for, while, do while Zadanie. Przeanalizuj działanie poniższego programu. cout
Bardziej szczegółowo//warunki początkowe m=500; T=30; c=0.4; t=linspace(0,t,m); y0=[-2.5;2.5];
4.3. Przykłady wykorzystania funkcji bibliotecznych 73 MATLAB % definiowanie funkcji function [dx]=vderpol(t,y) global c; dx=[y(2); c*(1-y(1)^2)*y(2)-y(1)]; SCILAB // definiowanie układu function [f]=vderpol(t,y,c)
Bardziej szczegółowoLuty 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
Bardziej szczegółowoLX Olimpiada Matematyczna
LX Olimpiada Matematyczna Rozwiązania zadań konkursowych zawodów stopnia drugiego 13 lutego 2009 r. (pierwszy dzień zawodów) Zadanie 1. Liczby rzeczywiste a 1, a 2,..., a n (n 2) spełniają warunek a 1
Bardziej szczegółowoTesty jednostkowe Wybrane problemy testowania metod rekurencyjnych
Testy jednostkowe Wybrane problemy testowania metod rekurencyjnych Artykuł przeznaczony jest dla osób związanych z testowaniem, programowaniem, jakością oraz wytwarzaniem oprogramowania, wymaga jednak
Bardziej szczegółowoProgramowanie w Baltie klasa VII
Programowanie w Baltie klasa VII Zadania z podręcznika strona 127 i 128 Zadanie 1/127 Zadanie 2/127 Zadanie 3/127 Zadanie 4/127 Zadanie 5/127 Zadanie 6/127 Ten sposób pisania programu nie ma sensu!!!.
Bardziej szczegółowoMatematyka dyskretna dla informatyków
Matematyka dyskretna dla informatyków Część I: Elementy kombinatoryki Jerzy Jaworski Zbigniew Palka Jerzy Szymański Uniwersytet im. Adama Mickiewicza Poznań 2007 4 Zależności rekurencyjne Wiele zależności
Bardziej szczegółowoObliczenia iteracyjne
Lekcja Strona z Obliczenia iteracyjne Zmienne iteracyjne (wyliczeniowe) Obliczenia iteracyjne wymagają zdefiniowania specjalnej zmiennej nazywanej iteracyjną lub wyliczeniową. Zmienną iteracyjną od zwykłej
Bardziej szczegółowoTwierdzenia Rolle'a i Lagrange'a
Twierdzenia Rolle'a i Lagrange'a Zadanie 1 Wykazać, że dla dowolnych zachodzi. W przypadku nierówność (a właściwie równość) w treści zadania spełniona jest w sposób oczywisty, więc tego przypadku nie musimy
Bardziej szczegółowoPrzykładowe zadania z teorii liczb
Przykładowe zadania z teorii liczb I. Podzielność liczb całkowitych. Liczba a = 346 przy dzieleniu przez pewną liczbę dodatnią całkowitą b daje iloraz k = 85 i resztę r. Znaleźć dzielnik b oraz resztę
Bardziej szczegółowoMetody numeryczne I Równania nieliniowe
Metody numeryczne I Równania nieliniowe Janusz Szwabiński szwabin@ift.uni.wroc.pl Metody numeryczne I (C) 2004 Janusz Szwabiński p.1/66 Równania nieliniowe 1. Równania nieliniowe z pojedynczym pierwiastkiem
Bardziej szczegółowoPodstawy Informatyki. Inżynieria Ciepła, I rok. Iteracja warunkowadopóki(while) Blok instrukcji. Pascal: begin instrukcja1; C: { end;
Podstawy Informatyki Inżyria Ciepła, I rok Wykład 8 Algorytmy, cd Instrukcja decyzyjna wybierz Zda wybierz służy do wyboru jednej z kilku możliwości Ma ono postać: wybierz przełącznik z wartość_1: zda_1
Bardziej szczegółowoFUNKCJE. (odwzorowania) Funkcje 1
FUNKCJE (odwzorowania) Funkcje 1 W matematyce funkcja ze zbioru X w zbiór Y nazywa się odwzorowanie (przyporządkowanie), które każdemu elementowi zbioru X przypisuje jeden, i tylko jeden element zbioru
Bardziej szczegółowodo instrukcja while (wyrażenie);
Instrukcje pętli -ćwiczenia Instrukcja while Pętla while (póki) powoduje powtarzanie zawartej w niej sekwencji instrukcji tak długo, jak długo zaczynające pętlę wyrażenie pozostaje prawdziwe. while ( wyrażenie
Bardziej szczegółowoPodstawy 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
Bardziej szczegółowo1 Metody rozwiązywania równań nieliniowych. Postawienie problemu
1 Metody rozwiązywania równań nieliniowych. Postawienie problemu Dla danej funkcji ciągłej f znaleźć wartości x, dla których f(x) = 0. (1) 2 Przedział izolacji pierwiastka Będziemy zakładać, że równanie
Bardziej szczegółowoW wielu obliczeniach w matematyce bądź fizyce wykonanie niektórych kroków zależy od spełnienia warunku.
W wielu obliczeniach w matematyce bądź fizyce wykonanie niektórych kroków zależy od spełnienia warunku. Nie wolno dzielić przez zero i należy sprawdzić, czy dzielna nie jest równa zeru. W dziedzinie liczb
Bardziej szczegółowo