Podstawowe elementy programu. patrz: następne 2 slajdy. Podstawowe elementy programu. Komendy proste:

Podobne dokumenty
Matematyka dyskretna

Dydaktyka matematyki, IV etap edukacyjny (ćwiczenia) Ćwiczenia nr 7 Semestr zimowy 2018/2019

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

Poprawność semantyczna

Podstawy Informatyki. Algorytmy i ich poprawność

1. Wykład NWD, NWW i algorytm Euklidesa.

Wykład 1. Na początku zajmować się będziemy zbiorem liczb całkowitych

Kontrola poprawności pętli

2.8. Algorytmy, schematy, programy

Kongruencje pierwsze kroki

Dr inż. Robert Wójcik, p. 313, C-3, tel Katedra Informatyki Technicznej (K-9) Wydział Elektroniki (W-4) Politechnika Wrocławska

W. Guzicki Próbna matura, grudzień 2014 r. poziom rozszerzony 1

Kurs ZDAJ MATURĘ Z MATEMATYKI MODUŁ 2 Teoria liczby rzeczywiste cz.2

Programowanie komputerowe. Zajęcia 1

ALGORYTMY MATEMATYCZNE Ćwiczenie 1 Na podstawie schematu blokowego pewnego algorytmu (rys 1), napisz listę kroków tego algorytmu:

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

Treść wykładu. Pierścienie wielomianów. Dzielenie wielomianów i algorytm Euklidesa Pierścienie ilorazowe wielomianów

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

FUNKCJA REKURENCYJNA. function s(n:integer):integer; begin if (n>1) then s:=n*s(n-1); else s:=1; end;

Warunki logiczne instrukcja if

Iteracje. Algorytm z iteracją to taki, w którym trzeba wielokrotnie powtarzać instrukcję, aby warunek został spełniony.

Wykład 2. Poprawność algorytmów

Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL

Wybrane zagadnienia teorii liczb

Paweł Gładki. Algebra. pgladki/

WYRAŻENIA ALGEBRAICZNE

Jarosław Wróblewski Matematyka Elementarna, zima 2012/13

2. LICZBY RZECZYWISTE Własności liczb całkowitych Liczby rzeczywiste Procenty... 24

Funkcja kwadratowa. f(x) = ax 2 + bx + c,

Funkcja kwadratowa. f(x) = ax 2 + bx + c = a

Języki programowania zasady ich tworzenia

Ciała i wielomiany 1. przez 1, i nazywamy jedynką, zaś element odwrotny do a 0 względem działania oznaczamy przez a 1, i nazywamy odwrotnością a);

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

Zajęcia nr 1 (1h) Dwumian Newtona. Indukcja. Zajęcia nr 2 i 3 (4h) Trygonometria

Tematyka do egzaminu ustnego z matematyki. 3 semestr LO dla dorosłych

WYMAGANIA EDUKACYJNE Z MATEMATYKI DLA KLASY 7SP. V. Obliczenia procentowe. Uczeń: 1) przedstawia część wielkości jako procent tej wielkości;

Przypomnienie wiadomości dla trzecioklasisty C z y p a m i ę t a s z?

Przykładowy zestaw zadań nr 2 z matematyki Odpowiedzi i schemat punktowania poziom rozszerzony

1. LICZBY DZIAŁ Z PODRĘCZNIKA L.P. NaCoBeZu kryteria sukcesu w języku ucznia

Teoria liczb. Magdalena Lemańska. Magdalena Lemańska,

WYMAGANIA NA POSZCZEGÓLNE OCENY MATEMATYKA KL.VII

Liczby. Wymagania programowe kl. VII. Dział

Wymagania edukacyjne z matematyki w klasie VII szkoły podstawowej

MATEMATYKA Z PLUSEM DLA KLASY VII W KONTEKŚCIE WYMAGAŃ PODSTAWY PROGRAMOWEJ. programowej dla klas IV-VI. programowej dla klas IV-VI.

WYMAGANIA EDUKACYJNE Z MATEMATYKI KLASA VII

Język C część 2. Podejmowanie decyzji w programie. if else. switch

Algorytmy i struktury danych. Wykład 4

MATEMATYKA. klasa VII. Podstawa programowa przedmiotu SZKOŁY BENEDYKTA

Paweł Gładki. Algebra. pgladki/

Wyszukiwanie. Wyszukiwanie binarne

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

LISTA 1 ZADANIE 1 a) 41 x =5 podnosimy obustronnie do kwadratu i otrzymujemy: 41 x =5 x 5 x przechodzimy na system dziesiętny: 4x 1 1=25 4x =24

Teoria liczb. Zajmuje się własnościami liczb, wszystkim całkowitych

Spis treści. Spis treści

Wielomiany. dr Tadeusz Werbiński. Teoria

Matematyka z kluczem. Szkoła podstawowa nr 18 w Sosnowcu. Przedmiotowe zasady oceniania klasa 7

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

Wymagania Uczestnik szkolenia musi mieć możliwość korzystania z Internetu. Kurs nie zakłada znajomości podstaw programowania.

6. Liczby wymierne i niewymierne. Niewymierność pierwiastków i logarytmów (c.d.).

Zegar ten przedstawia reszty z dzielenia przez 6. Obrazuje on jak kolejne liczby można przyporządkować do odpowiednich pokazanych na zegarze grup.

Maciej Grzesiak. Wielomiany

Algorytmy w teorii liczb

1. Pochodna funkcji. 1.1 Pierwsza pochodna - definicja i własności Definicja pochodnej

W. Guzicki Zadanie IV z Informatora Maturalnego poziom rozszerzony 1

1. Liczby wymierne. x dla x 0 (wartością bezwzględną liczby nieujemnej jest ta sama liczba)

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Wstęp do Informatyki

Wstęp do Programowania potok funkcyjny

Luty 2001 Algorytmy (7) 2000/2001

Grupy, pierścienie i ciała

Konstrukcje warunkowe Pętle

VII Olimpiada Matematyczna Gimnazjalistów

Zakres tematyczny - PINGWIN. Klasa IV szkoły podstawowej 1. Zakres treści programowych z I etapu kształcenia. 2. Liczby naturalne i działania:

Uzasadnienie tezy. AB + CD = BC + AD 2

Tydzień nr 9-10 (16 maja - 29 maja), Równania różniczkowe, wartości własne, funkcja wykładnicza od operatora - Matematyka II 2010/2011L

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW

Proste algorytmy w języku C

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

2. Liczby pierwsze i złożone, jednoznaczność rozkładu na czynniki pierwsze, największy wspólny dzielnik, najmniejsza wspólna wielokrotność.

Wprowadzenie do algorytmiki

Wymagania dla klasy siódmej. Treści na 2 na 3 na 4 na 5 na 6 Uczeń: Uczeń: Uczeń: Uczeń: Uczeń: DZIAŁ 1. LICZBY

do instrukcja while (wyrażenie);

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

OLIMPIADA MATEMATYCZNA

II Powiatowy Konkurs Matematyczny dla uczniów gimnazjum organizowany przez II LO im. Marii Skłodowskiej-Curie w Końskich

ROZKŁAD MATERIAŁU DLA KLASY I LICEUM I TECHNIKUM (ZAKRES PODSTAWOWY I ROZSZERZONY) A WYMAGANIA PODSTAWY PROGRAMOWEJ

Projekt Informatyka przepustką do kariery współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji.

Elżbieta Świda, Marcin Kurczab. Nowy typ zadań maturalnych z matematyki na poziomie rozszerzonym

ZADANIE 1. Ważenie (14 pkt)

Wykład z Technologii Informacyjnych. Piotr Mika

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

Definicje. Algorytm to:

Wymagania edukacyjne z matematyki na poszczególne do klasy VII szkoły podstawowej na rok szkolny 2018/2019

Jarosław Wróblewski Matematyka Elementarna, lato 2012/13. W dniu 21 lutego 2013 r. omawiamy test kwalifikacyjny.

Transkrypt:

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ść programowania jest sztuką odpowiedniego układania tych klocków Do typowych komend należą: patrz: następne 2 slajdy Wykład 2 INSTRUKCJE I NIEZMIENNIKI, str 2 Podstawowe elementy programu Komendy proste: SCHEMAT C przypisanie wartości zmiennej zmienna wartość zmienna = wartość;

Podstawowe elementy programu Komendy złożone(strukturalne): pętla rozgałęzienie SCHEMAT warunek warunek ciało warunek warunek instrukcja 1 instrukcja 2 C while(warunek) { ciało if(warunek) { instrukcja 1 else { instrukcja 2 Rozgałęzienie warunkowe Wykład 2 INSTRUKCJE I NIEZMIENNIKI, str 4 pełne uproszczone warunek warunek instrukcja 1 instrukcja 2 warunek warunek instrukcja 1 if(warunek) { instrukcja 1 else { instrukcja 2 if(warunek) { instrukcja 1

Budowa prostych programów Zagnieżdżanie instrukcji: war 1 war 1 war 2 war 2 instr 1 instr 2 while(war 1 ) { if(war 2 ) { instr 1 else { instr 2 schemat C Wykład 2 INSTRUKCJE I NIEZMIENNIKI, str 6 Przykład programu: największy wspólny dzielnik a=a; b=b; while(a!=b) { if(a>b) a=a-b; else b=b-a; A B a b 180 48 180 48 180 48 180 48 132 48 180 48 84 48 180 48 36 48 180 48 36 12 180 48 24 12 180 48 12 12!= oznaczenie relacji nierówne w języku C

Przykład programu: NWD wielu liczb nwd(a 1,a 2,a 3,a 4 )=nwd (nwd ( ) ) nwd(a 1,a 2 ),a 3,a4 nwd(a 1,a 2,,a n )=nwd(nwd(nwd(a 1,a 2 ),),a n ) wczytaj a;ilewczyt=1; while(ilewczyt<n){ wczytaj b;ilewczyt=ilewczyt+1; while(a!=b) { if(a>b) a=a-b; else b=b-a; Poprawność algorytmów Wykład 2 INSTRUKCJE I NIEZMIENNIKI, str 8 Przykład: (potęgowanie przez wielokrotne mnożenie) M wynik 1;w wykładnik w>0 w=0 wynik wynik podstawa wynik podstawa w =podstawa wykladnik wynik podstawa podstawa w 1 = =podstawa wykladnik w w 1 wynik podstawa w 1 =podstawa wykladnik wynik=podstawa wykladnik

Metoda niezmienników DEFINICJA: MNiezmiennik pętli while(war) instr dowolna własność P zmiennych programu taka, że jeśli przed wykonaniem instr spełnione jest P& war, to po wykonaniu instr spełnione jest P TWIERDZENIE: MJeśli P jest niezmiennikiem pętli while(war) instr i po inicjalizacji pętlijestspełniony,tonawyjściuzpętlijestspełnionep& war Wykład 2 INSTRUKCJE I NIEZMIENNIKI, str 10 Niezmienniki spoza informatyki 2m/sek 12m???m/sek 10m energia=energiakinetyczna+energiapotencjalna= mv2 2 +mgh jest stała (2m/sek) 2 2 v2 +10m/sek 2 12m= 2 +10m/sek2 10m v = 44m/sek 663m/sek

Metoda niezmienników W trakcie obliczeń pętli wartości zmiennych stale się zmieniają, ale pozostaje w mocy pewien związek między nimi niezmiennik Z tego faktu wynikają własności pętli A inicjalizacja B warunek warunek C ciało D A założenia wstępne B niezmiennik C niezmiennik + warunek D stanwynikowy Trzeba zbadać: 1przejścieprzezinicjalizacjęzAdoB, 2przejścieprzezciałozCdoB, 3implikacjęB&warunek C, 4implikacjęB& warunek D Co liczy dany program? n 500000;a 0;b 0;c 1;d 6 B b+c n b+c>n a a+1;b b+c c c+d d d+6 Wykład 2 INSTRUKCJE I NIEZMIENNIKI, str 12 Ręczna symulacja: wartości zmiennych w B w kilku pierwszych obrotach pętli: a b c d 0 0 1 6 1 1 7 12 2 8 19 18 3 27 37 24 4 64 61 30 5 125 91 36 6 216 127 42 7 343 169 48 Zależności między wartościami zmiennych: b=a 3 d=6 (a+1) c=(a+1) 3 a 3 =3a 2 +3a+1

Co liczy dany program? n 500000;a 0;b 0;c 1;d 6 b=a 3 &d=6(a+1) B &c=3a 2 +3a+1 b+c n b+c>n a a+1;b b+c c c+d d d+6 Czy B jest niezmiennikiem? zmienne nieprimowane przed przejściem przez ciało pętli zmienne primowane po przejściu przez ciało pętli Wiemy: oraz b=a 3 &d=6(a+1)& c=3a 2 +3a+1&b+c n a =a+1 c =c+d b =b+c d =d+6 Stąd wnioskujemy: b? =a 3 &d? =6(a +1)& c? =3a 2 +3a +1 Co liczy dany program? Wykład 2 INSTRUKCJE I NIEZMIENNIKI, str 14 n 500000;a 0;b 0;c 1;d 6 b=a 3 &d=6(a+1) B &c=3a 2 +3a+1 b+c n b+c>n a a+1;b b+c c c+d D b=a3 &d=6(a+1)& c=3a 2 +3a+1&b+c>500000 D &a 3 500000<(a+1) 3 D &a 3 500000<a+1 Program oblicza a= = 3 500000 = 7937 =79 d d+6 D &a= 3 500000 x część całkowita liczby rzeczywistej

Przykłady programów /*A:m 1*/ k=0; p=1; q=2; /*B:p=3 k m&q=2 3 k */ while(p+q<=m) { k=k+1; p=p+q; q=p+p; /*D:k= log 3 m */ Dowieść(zmienne primowane oznaczają nowe wartości): 1m 1&k =0&p =1&q =2 p =3 k m&q =2 3 k? 2p=3 k m&q=2 3 k &p+q m& k =k+1&p =p+q&q =p +p? p =3 k m&q =2 3 k 3p=3 k m&q=2 3 k &p+q>m? k= log 3 m Wykład 2 INSTRUKCJE I NIEZMIENNIKI, str 16 Przykład programu: największy wspólny dzielnik /*A>0&B>0*/ a=a; b=b; /*a>0&b>0&nwd(a,b)=nwd(a,b)*/ while(a!=b) { if(a>b) a=a-b; else b=b-a; /*a=nwd(a,b)*/

Przykłady programów Dzielenie całkowite z resztą: Dzielenie dokładne: q jest ilorazem n przez k k q=n Dzieleniezresztą: qjestilorazemcałkowitymarjestresztąnprzezk k q+r=n&0 r<k Dzielenie z resztą łatwo zorganizować przez wielokrotne odejmowanie: znaleźćjakiekolwiekqirspełniającek q+r=n&0 r, tak długo odejmować dzielnik k od r, aż dodatkowo będzie spełnione r<k(zakładamyk>0) Przykłady programów Wykład 2 INSTRUKCJE I NIEZMIENNIKI, str 18 Dzielenie całkowite z resztą(zał: k > 0): B A q 0;r n B k q+r=n&0 r k r r<k C k q+r=n&0<k r C k (q+1)+(r k)=n&0 r k r r k E q q+1 n 0&k>0 k (q+1)+r=n&0 r k q+r=n&0 r D k q+r=n&0 r<k 1 Przejście odadob 2 Wynikanie B&k r C 3 Przejście odcdob (przez E) 4 Wynikanie B&r<k D

Przykłady programów Dzielenie całkowite z resztą: /*n 0&k>0*/ q=0;r=n; /*n=k q+r &0 r*/ while(r>=k) { q=q+1;r=r-k; /*n=k q+r &0 r<k*/ Dla poprawności należy sprawdzić: 1jeślin 0&k>0,topowykonaniu q=0;r=n; jestn=k q +r &0 r 2jeślin=k q+r &0 r &r k,topowykonaniu q=q+1;r=r-k; jestn=k q +r &0 r 3jeślin=k q+r &0 r &r<k, ton=k q +r &0 r <k Wykład 2 INSTRUKCJE I NIEZMIENNIKI, str 20 Przykład programu: pierwiastek kwadratowy Napisaćalgorytm,którydladanejliczbynaturalnejnoblicza n,czyli część całkowitą pierwiastka kwadratowego z n /*n 0*/ a=0; h=1; while(n>=h*h) h=2*h; /*h 1&a 2 n<(a+h) 2 */ while(h>1) { h=h/2; if(n>=(a+h)*(a+h)) a=a+h; /*a 2 n<(a+1) 2 */ /*a= n */ a 2 n<(a+1) 2 a= n h 1& a 2 n<(a+h) 2 & h 1 a 2 n<(a+1) 2 Niezmiennik pętli: h 1&a 2 n<(a+h) 2

Przykład: pierwiastek kwadratowy Napisaćalgorytm,którydladanejliczbynaturalnejnoblicza n,czyli część całkowitą pierwiastka kwadratowego z n /*n 0*/ a=0; h=1; while(n>=h*h) h=2*h; /*h 1&a 2 n<(a+h) 2 */ while(h>1) { h=h/2; if(n>=(a+h)*(a+h)) a=a+h; /*a 2 n<(a+1) 2 */ /*a= n */ Żeby nie podnosić sumy do kwadratu w każdym obrocie pętli, wprowadzamy nowe zmienne:x=a 2,y=a h,z=h 2 Wtedy: (a+h) (a+h) =x+2 y+z Nowy niezmiennik pętli: h 1&a 2 n<(a+h) 2 &x=a 2 &y=a h &x z=y 2 Wykład 2 INSTRUKCJE I NIEZMIENNIKI, str 22 Przykład: pierwiastek kwadratowy Napisaćalgorytm,którydladanejliczbynaturalnejnoblicza n,czyli część całkowitą pierwiastka kwadratowego z n /*n 0*/ a=0; x=0; y=0; h=1; z=1; while(n>=h*h) { h=2*h;z=4*z; /*h 1&a 2 n<(a+h) 2 &x=a 2 &y=a h&z=h 2 &x z=y 2 */ while(h>1) { h=h/2;y=y/2;z=z/4; if(n>=x+2*y+z) { a=a+h;x=x+2*y+z;y=y+z; /*a 2 n<(a+1) 2 */ /*a= n */

Przykład: pierwiastek kwadratowy Napisaćalgorytm,którydladanejliczbynaturalnejnoblicza n,czyli część całkowitą pierwiastka kwadratowego z n /*n 0*/ a=0; x=0; y=0; h=1; z=1; while(n>=h*h) { h=2*h;z=4*z; /*h 1&a 2 n<(a+h) 2 &x=a 2 &y=a h&z=h 2 &x z=y 2 */ while(h>1) { h=h/2;y=y/2;z=z/4; if(n>=x+2*y+z) { a=a+h;x=x+2*y+z;y=y+z; /*a 2 n<(a+1) 2 */ /*a= n */ Przy takim niezmienniku: n h 2 n z h 1 z 1 h=1 y=a więczmienneaihjuż nie są potrzebne Wykład 2 INSTRUKCJE I NIEZMIENNIKI, str 24 Przykład: pierwiastek kwadratowy Napisaćalgorytm,którydladanejliczbynaturalnejnoblicza n,czyli część całkowitą pierwiastka kwadratowego z n /*n 0*/ a=0; x=0; y=0; h=1; z=1; while(n>=z) { h=2*h;z=4*z; /*z 1&x n<x+2 y+z&x=a 2 &y=a h&z=h 2 &x z=y 2 */ while(z>1) { h=h/2;y=y/2;z=z/4; if(n>=x+2*y+z) { a=a+h;x=x+2*y+z;y=y+z; /*y n<(y+1) 2 */ /*y= n */

Przykład: pierwiastek kwadratowy Napisaćalgorytm,którydladanejliczbynaturalnejnoblicza n,czyli część całkowitą pierwiastka kwadratowego z n /*n 0*/ x=0; y=0; z=1; while(n>=z) z=4*z; /*z 1&x n<x+2 y+z &x z=y 2 */ while(z>1) { y=y/2; z=z/4; if(n>=x+2*y+z) { x=x+2*y+z;y=y+z; /*y n<(y+1) 2 */ /*y= n */ Nowy program z dowodem poprawności, nadal liczący część całkowitą pierwiastka kwadratowego n x y z 35 0 0 1 4 16 64 16 16 16 8 4 4 1 25 5 Wykład 2 INSTRUKCJE I NIEZMIENNIKI, str 26 Jak pisać programy z dowodami? Z tego, że asercje rozmieszczone w programie są niezmiennikami, wnioskujemy o jego poprawności Np w powyższym programie z niezmienniczościasercjin 0nawejściuwynikaniezmienniczośćasercji a= n nawyjściu,czylifakt,żeprogramliczyczęśćcałkowitąpierwiastkazn Konstruując program najpierw piszemy odpowiednie asercje; potem tak dobieramy komendy, żeby te asercje były niezmiennicze Program powstaje więc razem z dowodem swojej poprawności; dowód zawsze o pół kroku wcześniej Asercje mogą również pomóc w kontrolowanym transformowaniu programu do innej postaci