Programowanie imperatywne i granice obliczalności Copyright, 2004 © Jerzy R. Nawrocki

Slides:



Advertisements
Podobne prezentacje
Systemy czasu rzeczywistego
Advertisements

Sortowanie przez scalanie
Wprowadzenie do informatyki Wykład 6
Informatyka jako dziedzina wiedzy
Grażyna Mirkowska PJWSTK 15 listopad 2000
Imperatywne modele obliczeń Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do.
Język asemblera Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
PROGRAMOWANIE STRUKTURALNE
ZŁOŻONOŚĆ OBLICZENIOWA
Turbo pascal – instrukcje warunkowe, iteracyjne,…
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Systemy czasu rzeczywistego Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do.
Przetwarzanie tekstów i AWK Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do.
Rekurencja Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Imperatywne modele obliczeń Copyright, 2001 © Jerzy R. Nawrocki Wprowadzenie do.
Rekursja Teoretyczne podstawy informatyki Wykład 5
Procesy współbieżne Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne podstawy informatyki.
Systemy operacyjne Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Wprowadzenie do informatyki Wykład 5
Obliczalność i złożoność obliczeniowa
Informatyka jako dziedzina wiedzy
Testy akceptacyjne Analiza systemów informatycznych Wykład 9
Rekurencja Copyright, 2001 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Imperatywne modele obliczeń Copyright, 2003 © Jerzy R. Nawrocki Teoretyczne podstawy.
Metody numeryczne Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Informatyka jako dziedzina wiedzy Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Wprowadzenie do teoretycznych podstaw informatyki
Rekursja Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne podstawy informatyki.
Język asemblera i koncepcja von Neumanna
Programowanie imperatywne i język C
Języki formalne i gramatyki
Procesy współbieżne Copyright, 2005 © Jerzy R. Nawrocki Wstęp do informatyki.
Informatyka jako dziedzina wiedzy Copyright, 2005 © Jerzy R. Nawrocki Wstęp.
Modularyzacja i struktury danych w C Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie.
Modularyzacja i struktury danych w C Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie.
Programowanie imperatywne i język C Copyright, 2005 © Jerzy R. Nawrocki Wstęp.
Metody formalne Copyright, 2005 © Jerzy R. Nawrocki Analiza systemów informatycznych.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Język C – Część II Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Komunikacja poprzez Internet
Dokumenty i prezentacje Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do.
Wprowadzenie do informatyki Wykład 5
Podprogramy.
Typy złożone, case, stałe. Typ zbiorowy type typ_zb = set of typ_podstawowy; Typem podstawowym może być tylko typ porządkowy. Typem podstawowym może być
Podstawy programowania
Programowanie imperatywne i język C Copyright, 2006 © Jerzy R. Nawrocki Wstęp do.
Programowanie strukturalne i obiektowe
Pliki tekstowe. Operacje na plikach. mgr inż. Agata Pacek.
Funkcje w Pascalu Przypomnienie wiadomości o procedurach Prowadzący: Anna Kaleta Piotr Chojnacki.
20 września 2003r. Centrum Kształcenia Ustawicznego im. St. Staszica w Koszalinie Wstęp do algorytmiki Autor: Marek Magiera.
© A. Jędryczkowski – 2006 r. © A. Jędryczkowski – 2006 r.
Procedury i funkcje.
Modele obliczeń i granice obliczalności Copyright, 1999 © Jerzy R. Nawrocki Wprowadzenie.
Programowanie strukturalne i obiektowe
Informatyka jako dziedzina wiedzy
Translatory Copyright, 2006 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład 11.
Gramatyki i translatory
Programowanie baz danych
Informatyka MZT1 Wykład 6 Iteracje while i repeat Tablice Rekordy
Ogólna struktura programu w TP
Procesy współbieżne Copyright, 2005 © Jerzy R. Nawrocki Wstęp do informatyki.
Informatyka jako dziedzina wiedzy Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie.
Języki formalne i gramatyki Copyright, 2005 © Jerzy R. Nawrocki Teoretyczne podstawy.
Języki formalne Copyright, 2006 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Wprowadzenie do teoretycznych podstaw informatyki Copyright, 2004 © Jerzy R. Nawrocki
Programowanie imperatywne i język C Copyright, 2007 © Jerzy R. Nawrocki Wstęp do.
METODY REPREZENTOWANIA IFORMACJI
Wprowadzenie do teoretycznych podstaw informatyki
Zapis prezentacji:

Programowanie imperatywne i granice obliczalności Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne podstawy informatyki Wykład 2

J.Nawrocki, Programowanie imperatywne.. Plan wykładu Schematy blokowe Liczba automorficzna Obliczanie wielomianu Podział zbioru Problem stopu

J.Nawrocki, Programowanie imperatywne.. Język schematów blokowych R 1 R 1 S S + 1 S S + 1 R2 > 0 Tak Nie Start Stop

J.Nawrocki, Programowanie imperatywne.. Liczba automorficzna Liczba naturalna znajdująca się na końcu swego kwadratu. 5 bo 5 2 = 25 6 bo 6 2 = 36 7 nie bo 7 2 = bo 25 2 = 625

J.Nawrocki, Programowanie imperatywne.. Liczba automorficznaStart Czytaj n Automor(n) TakDrukuj(TAK) NieDrukuj(NIE) Stop var n; begin read(n); if Automor(n) then writeln(TAK) else writeln(NIE) end. Funkcja nie- standardowa

J.Nawrocki, Programowanie imperatywne.. Liczba automorficzna Liczba naturalna znajdująca się na końcu swego kwadratu. rząd(n) = 10 liczba_cyfr(n) n = n*n mod rząd(n) Jak obliczyć Automor(n) ? 5 = 5*5 mod rząd(5) = 25 mod 10 = 5 6 = 6*6 mod rząd(6) = 36 mod 10 = 6 7 7*7 mod 10 = 9

J.Nawrocki, Programowanie imperatywne.. Liczba automorficzna Tak Wynik true Nie Wynik false n=n*n mod rząd(n) function Automor (n: integer): Boolean; begin if n=n*n mod rzad(n) then Automor:= true else Automor:= false end; Deklaracja funkcji Automor

J.Nawrocki, Programowanie imperatywne.. Liczba automorficzna function Automor (n: integer): Boolean; begin if n=n*n mod rzad(n) then Automor:= true else Automor:= false end; function Automor (n: integer): Boolean; begin Automor:= n=n*n mod rzad(n) end;

J.Nawrocki, Programowanie imperatywne.. Liczba automorficzna Jak obliczyć rzad(n) ? rząd(1)=.. = rząd(9)=10 rząd(10)=.. = rząd(99)=100 rząd(100)=.. = rząd(999)=1000 rząd(n) = 10 liczba_cyfr(n) rząd(n) = 10, 100, 1000,.. rząd(n) > n

J.Nawrocki, Programowanie imperatywne.. Liczba automorficzna rz 10 rz <= n Tak rz rz * 10 Nie Wynik rz function rzad (n: integer): integer; var rz: integer; begin rz:= 10; while rz <= n do rz:= rz*10; rzad:= rz end;

J.Nawrocki, Programowanie imperatywne.. Liczba automorficzna rz 10 rz <= n Tak rz rz * 10 Nie Wynik rz Jak to sprawdzi ć? nrz 25 We Wyj 10

J.Nawrocki, Programowanie imperatywne.. Liczba automorficzna rz 10 rz <= n Tak rz rz * 10 Nie Wynik rz Jak to sprawdzi ć? nrz 25 We Wyj 10

J.Nawrocki, Programowanie imperatywne.. Liczba automorficzna rz 10 rz <= n Tak rz rz * 10 Nie Wynik rz Jak to sprawdzi ć? nrz 25 We Wyj

J.Nawrocki, Programowanie imperatywne.. Liczba automorficzna Program główny Automor(n) rzad(n) Czy można połączyć Automor i rzad?

J.Nawrocki, Programowanie imperatywne.. Liczba automorficzna function rzad (n: integer): integer; var rz: integer; begin rz:= 10; while rz <= n do rz:= rz*10; rzad:= rz end; function Automor (n: integer): Boolean; var rz: integer; begin rz:= 10; while rz <= n do rz:= rz*10; if n=n*n mod rz then Automor:= true else Automor:= false end;

J.Nawrocki, Programowanie imperatywne.. Liczba automorficzna function Automor (n: integer): Boolean; var rz: integer; begin rz:= 10; while rz <= n do rz:= rz*10; if n=n*n mod rz then Automor:= true else Automor:= false end; Program główny Automor(n)

J.Nawrocki, Programowanie imperatywne.. Obliczanie wielomianu Wielomian n-tego stopnia ma postać: p(x) = a 0 + a 1 x + a 2 x 2 + a 3 x a n x n Mając dane wartości: n a 0, a 1,.., a n x należy obliczyć wartość p(x).

J.Nawrocki, Programowanie imperatywne.. Obliczanie wielomianu p(x) = a 0 + a 1 x + a 2 x 2 + a 3 x a n x n p(x) = s(0) + s(1) + s(2) s(n) gdzie s(i) = a i x i s(i) = a i *x*x*.. *x Dekompozycja problemu Suma n liczb Iloczyn n liczb

J.Nawrocki, Programowanie imperatywne.. Obliczanie wielomianuStart Stop i 0 P 0 P P + s(i) i i + 1 i n Tak Nie function p(n: integer): real; var i,P: integer; begin i:= 0; P:= 0; while i <= n do begin P:= P + s(i); i:= i + 1 end; p:= P end;

J.Nawrocki, Programowanie imperatywne.. Obliczanie wielomianu S= c(0) * c(1) *.. * c(j) 0, 1,.. jStart Stop i 0 S 1 S S * c(i) i i + 1 i j Tak Nie Obliczanie s(j) = a j x j c(0) = a j c(1) = x c(2) = x... c(j) = x

J.Nawrocki, Programowanie imperatywne.. Obliczanie wielomianuStart Stop S a j i 1 S S * x i i + 1 i j Tak Nie i 0 S 1 S S * c(i) i i + 1 Obliczanie s(j) = a j x j S= c(0) * c(1) *.. * c(j) 0, 1,.. j c(0) = a j c(1) = x c(2) = x... c(j) = x

J.Nawrocki, Programowanie imperatywne.. Obliczanie wielomianuStart Stop S a j i 1 S S * x i i + 1 i j Tak Nie Obliczanie s(j) = a j x j function s(j: integer): real; var i,S: integer; begin S:= a[j]; i:= 1; while i <= j do begin S:= S * x; i:= i + 1 end; s:= S end;

J.Nawrocki, Programowanie imperatywne.. Obliczanie wielomianu Złożoność algorytmu (n+1) razy s(i): s(0).. s(n) Każde s(i): i mnożeń Razem: (n+1) = Złożoność= a*n 2 + b*n + c

J.Nawrocki, Programowanie imperatywne.. Obliczanie wielomianu P(x)= (((a n )*x + a n-1 )*x + a n-2 )*x + a n-3... Schemat Hornera Jak zmniejszyć liczbę mnożeń? a 1 *x + a 0 = a 1 *x + a 0 a 2 *x 2 + a 1 *x + a 0 = (a 2 *x + a 1 )*x + a 0 a 3 *x 3 + a 2 *x 2 + a 1 *x + a 0 = ((a 3 *x + a 2 )*x + a 1 )x + a 0

J.Nawrocki, Programowanie imperatywne.. Problem podzbioru o danej sumie Dane: zbiór A zawierający n liczb całkowitych dodatnich i liczba s. Pytanie: Czy można w A znaleźć podzbiór B taki, że suma liczb w B jest równa s? = 12 s = / 2 =

J.Nawrocki, Programowanie imperatywne.. Problem podzbioru o danej sumie = 12 s = / 2 =

J.Nawrocki, Programowanie imperatywne.. Problem podzbioru o danej sumie = 12 s = / 2 = Rozważamy kolejną dwójkę

J.Nawrocki, Programowanie imperatywne.. Problem podzbioru o danej sumie = 12 s = / 2 = To co było jest nadal osiągalne

J.Nawrocki, Programowanie imperatywne.. Problem podzbioru o danej sumie = 12 s = / 2 = Dodaj 2 do każdej poprzednio osiągalnej wart. + 2

J.Nawrocki, Programowanie imperatywne.. Problem podzbioru o danej sumie = 12 s = / 2 = Dodaj 2 do każdej poprzednio osiągalnej wart.

J.Nawrocki, Programowanie imperatywne.. Problem podzbioru o danej sumie = 12 s = / 2 = Dodaj 2 do każdej poprzednio osiągalnej wart.

J.Nawrocki, Programowanie imperatywne.. Problem podzbioru o danej sumie = 12 s = / 2 = Końcowa postać tabelki

J.Nawrocki, Programowanie imperatywne.. Problem stopu Dany jest podprogram X. Czy ten podprogram skończy obliczenia w skończonym czasie?

J.Nawrocki, Programowanie imperatywne.. Problem stopu function ZatrzymaSię(P: procedure): Boolean; { ??? } procedure X; { while ZatrzymaSię(X) do ; }

J.Nawrocki, Programowanie imperatywne.. Problem stopuZatrzymaSię(X) procedure X Tak Nie Wniosek: Problem stopu jest nierozstrzygalny

J.Nawrocki, Programowanie imperatywne.. Podsumowanie Język schematów blokowych jest wygodnym narzędziem opisu algorytmów. Nie wszystko można obliczyć. Wreszcie!