Kontrola poprawności pętli

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

Poprawność semantyczna
























Algorytmy i struktury danych. Wykład 4

I) Reszta z dzielenia

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

L6.1 Systemy liczenia stosowane w informatyce

SCENARIUSZ LEKCJI MATEMATYKI. Temat: Podzielność liczb całkowitych Cel: Uczeń tworzy łańcuch argumentów i uzasadnia jego poprawność

while(wyrażenie) instrukcja

Techniki multimedialne

Luty 2001 Algorytmy (7) 2000/2001

Podzielność, cechy podzielności, liczby pierwsze, największy wspólny dzielnik, najmniejsza wspólna wielokrotność.

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

Matematyka dyskretna

Wyszukiwanie. Wyszukiwanie binarne

Wykład 2. Poprawność algorytmów

1.1. Pozycyjne systemy liczbowe

WZÓR OGÓLNY CIĄGU GEOMETRYCZNEGO

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

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

Systemy liczenia. 333= 3*100+3*10+3*1

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

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Matematyka dyskretna

LICZBY POWTÓRKA I (0, 2) 10 II (2, 5) 5 III 25 IV Liczba (0, 4) 5 jest równa liczbom A) I i III B) II i IV C) II i III D) I i II E) III i IV

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

do instrukcja while(wyrażenie);

Arytmetyka. Działania na liczbach, potęga, pierwiastek, logarytm

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Sortowanie przez scalanie

Maria Romanowska UDOWODNIJ, ŻE... PRZYKŁADOWE ZADANIA MATURALNE Z MATEMATYKI

1. Systemy liczbowe. addytywne systemy w których wartośd liczby jest sumą wartości jej znaków cyfrowych.

Wojewódzki Przedmiotowy Konkurs z informatyki dla uczniów szkół gimnazjalnych ETAP REJONOWY 2008/2009 TEST

MADE IN CHINA czyli SYSTEM RESZTOWY

Kongruencje oraz przykłady ich zastosowań


ARCHITEKTURA KOMPUTERÓW Systemy liczbowe

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

Podstawy Informatyki



Algorytmy i struktury danych. Wykład 6 Tablice rozproszone cz. 2

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 4, strona 1. GOLOMBA I RICE'A

WHILE (wyrażenie) instrukcja;

Jarosław Wróblewski Matematyka Elementarna, zima 2015/16


Przykładowe zadania z teorii liczb


Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =

Matematyka Dyskretna Zestaw 2

W jaki sposób użyć tych n bitów do reprezentacji liczb całkowitych




Twierdzenie Eulera. Kongruencje wykład 6. Twierdzenie Eulera

X Olimpiada Matematyczna Gimnazjalistów

ARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia.


RODZAJE INFORMACJI. Informacje analogowe. Informacje cyfrowe. U(t) U(t) Umax. Umax. R=(0,Umax) nieskończony zbiór możliwych wartości. Umax.





Arytmetyka. Arytmetyka. Magdalena Lemańska. Magdalena Lemańska,

Technologie Informacyjne

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

Kod U2 Opracował: Andrzej Nowak

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 2 WSTĘP DO INFORMATYKI


WHILE (wyrażenie) instrukcja;

Grupy, pierścienie i ciała

LVIII Olimpiada Matematyczna

Granice ciągów liczbowych

EGZAMIN MATURALNY Z INFORMATYKI 11 MAJA 2018 POZIOM ROZSZERZONY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I WYBRANE: Czas pracy: 90 minut



LXV Olimpiada Matematyczna

Transkrypt:

Wykład B. POWTÓRKA, str. 1 Każda całkowita dodatnia liczba w daje się jednoznacznie przedstawić w postaci w=2 k z gdziezjestnieparzysta

Wykład B. POWTÓRKA, str. 1 Każda całkowita dodatnia liczba w daje się jednoznacznie przedstawić w postaci w=2 k z gdziezjestnieparzysta Wobec tego pętla while(w%2==0) { p=p*p;w=w/2; } (1) niezmieniawartościwyrażeniap w,apojejzakończeniuwjestnieparzysta.

Wykład B. POWTÓRKA, str. 1 Każda całkowita dodatnia liczba w daje się jednoznacznie przedstawić w postaci w=2 k z gdziezjestnieparzysta Wobec tego pętla while(w%2==0) { p=p*p;w=w/2; } (1) niezmieniawartościwyrażeniap w,apojejzakończeniuwjestnieparzysta.

Wykład B. POWTÓRKA, str. 2 Jeśliw>3,to x p w =(x p 2 ) p w 2

Wykład B. POWTÓRKA, str. 2 Jeśliw>3,to x p w =(x p 2 ) p w 2 Wobec tego, jeśli w jest nieparzysta, to pętla while(w>3) { x=x*p*p;w=w-2; } (2) niezmieniawartościwyrażeniax p w,apojejzakończeniuw=3.

Wykład B. POWTÓRKA, str. 2 Jeśliw>3,to x p w =(x p 2 ) p w 2 Wobec tego, jeśli w jest nieparzysta, to pętla while(w>3) { x=x*p*p;w=w-2; } (2) niezmieniawartościwyrażeniax p w,apojejzakończeniuw=3.

Wykład B. POWTÓRKA, str. 3 Dlatego po wykonaniu fragmentu x=1; while(w%2==0) { p=p*p;w=w/2; } while(w>3) { x=x*p*p;w=w-2; } (1) (2) wartośćwyrażeniax p 3 jestrównapoczątkowejwartościpotęgip w.

Wykład B. POWTÓRKA, str. 4 Ale program, zbudowany na tej zasadzie, wylicza potęgi nieprawidłowo

Wykład B. POWTÓRKA, str. 4 Ale program, zbudowany na tej zasadzie, wylicza potęgi nieprawidłowo: CALKOWITE DODATNIE POTEGI LICZBY 2 od 2.00^8 do 2.00^16 wykl 2.00^wykl --------+-------------- 8 16777216.00 9 512.00 10 1024.00 11 2048.00 12 4096.00 13 8192.00 14 16384.00 15 32768.00 16 281474976710656.00

Wykład B. POWTÓRKA, str. 4 Ale program, zbudowany na tej zasadzie, wylicza potęgi nieprawidłowo: CALKOWITE DODATNIE POTEGI LICZBY 2 od 2.00^8 do 2.00^16 wykl 2.00^wykl --------+-------------- 8 16777216.00 9 512.00 10 1024.00 11 2048.00 12 4096.00 13 8192.00 14 16384.00 15 32768.00 16 281474976710656.00

Wykład B. POWTÓRKA, str. 5 Stwierdzenie Wobec tego, jeśli w jest nieparzysta, to pętla while(w>3) { x=x*p*p;w=w-2; } (2) niezmieniawartościwyrażeniax p w,apojejzakończeniuw=3. jest nieprecyzyjne.

Wykład B. POWTÓRKA, str. 5 Stwierdzenie Wobec tego, jeśli w jest nieparzysta, to pętla while(w>3) { x=x*p*p;w=w-2; } (2) niezmieniawartościwyrażeniax p w,apojejzakończeniuw=3. jest nieprecyzyjne. Jeśliprzedtąpętląw=1,topojejzakończeniuw=1anie3.Wobec tegowtedyx p,aniex p 3,jestrównepoczątkowejwartościpotęgip w.

Wykład B. POWTÓRKA, str. 5 Stwierdzenie Wobec tego, jeśli w jest nieparzysta, to pętla while(w>3) { x=x*p*p;w=w-2; } (2) niezmieniawartościwyrażeniax p w,apojejzakończeniuw=3. jest nieprecyzyjne. Jeśliprzedtąpętląw=1,topojejzakończeniuw=1anie3.Wobec tegowtedyx p,aniex p 3,jestrównepoczątkowejwartościpotęgip w.

Wykład B. POWTÓRKA, str. 5 Stwierdzenie Wobec tego, jeśli w jest nieparzysta, to pętla while(w>3) { x=x*p*p;w=w-2; } (2) niezmieniawartościwyrażeniax p w,apojejzakończeniuw=3. jest nieprecyzyjne. Jeśliprzedtąpętląw=1,topojejzakończeniuw=1anie3.Wobec tegowtedyx p,aniex p 3,jestrównepoczątkowejwartościpotęgip w. Tak się dzieje wtedy, gdy początkowy wykładnik w jest potęgą liczby 2.

Wykład B. POWTÓRKA, str. 6 Niezmiennik pierwszej pętli: p w =podst wykl &wniejestpot.2 &x=1

Wykład B. POWTÓRKA, str. 6 Niezmiennik pierwszej pętli: p w =podst wykl &wniejestpot.2 &x=1 Poprawność pierwszej pętli: / p=podst&w=wykl&wniejestpot.2 &x=1 / while(w%2==0) { p=p*p;w=w/2; } / p w =podst wykl &wnieparzyste&wniejestpot.2 &x=1 /

Wykład B. POWTÓRKA, str. 6 Niezmiennik pierwszej pętli: p w =podst wykl &wniejestpot.2 &x=1 Poprawność pierwszej pętli: / p=podst&w=wykl&wniejestpot.2 &x=1 / while(w%2==0) { p=p*p;w=w/2; } / p w =podst wykl &wnieparzyste&wniejestpot.2 &x=1 / / x p w =podst wykl &wnieparzyste&w 3 /

Wykład B. POWTÓRKA, str. 7 Niezmiennik drugiej pętli: x p w =podst wykl &wnieparzyste&w 3

Wykład B. POWTÓRKA, str. 7 Niezmiennik drugiej pętli: x p w =podst wykl &wnieparzyste&w 3 Poprawność drugiej pętli: / x p w =podst wykl &wnieparzyste&w 3 / while(w>3) { x=x*p*p;w=w-2; } / x p 3 =podst wykl /

Wykład B. POWTÓRKA, str. 8 Pokazaliśmy, że / p=podst&w=wykl&wniejestpot.2 / cały program / x p 3 =podst wykl /

Wykład B. POWTÓRKA, str. 8 Pokazaliśmy, że / p=podst&w=wykl&wniejestpot.2 / cały program / x p 3 =podst wykl / alejeśliwykljestpotęgąliczby2,toztegostwierdzenianicniewynika.

y Wykład B. POWTÓRKA, str. 9 Przykład: (dzielenie binarne) 1010001:110

Wykład B. POWTÓRKA, str. 9 Przykład: (dzielenie binarne) 1 1010001:110 110 100

Wykład B. POWTÓRKA, str. 9 Przykład: (dzielenie binarne) 11 1010001:110 110 1000 110 10

Wykład B. POWTÓRKA, str. 9 Przykład: (dzielenie binarne) 110 1010001:110 110 1000 110 100 000 100

Wykład B. POWTÓRKA, str. 9 Przykład: (dzielenie binarne) 1101 1010001:110 110 1000 110 100 000 1001 110 11

Wykład B. POWTÓRKA, str. 10 Przykład: (dzielenie binarne) wynik q dzielnan :dzielnikk q k reszta r Podział liczby 1010 001 można zapisać tak: 1010 2 3 +001 & 001<2 3

Wykład B. POWTÓRKA, str. 11 Przykład: (dzielenie binarne) Zróbmy więc pętlę z niezmiennikiem n=(k q+r) 2 l +b&0 b<2 l &0 r k 1

Wykład B. POWTÓRKA, str. 11 Przykład: (dzielenie binarne) Zróbmy więc pętlę z niezmiennikiem n=(k q+r) 2 l +b&0 b<2 l &0 r k 1 Inicjalizacja(a=2 l ): a=1; while(a<=n) a=2*a; q=0; r=0; b=n;

Wykład B. POWTÓRKA, str. 12 Przykład: (dzielenie binarne) Zróbmy więc pętlę z niezmiennikiem n=(k q+r) 2 l +b&0 b<2 l &0 r k 1 Główna pętla: while(a>1) { a=a/2;q=q*2;r=r*2; if(a<=b) {b=b-a;r=r+1; } if(r>=k) {r=r-k;q=q+1; } }

Wykład B. POWTÓRKA, str. 13 Przykład: (dzielenie binarne) Dzieleniaimnożeniaprzez2tosąprzesunięciabitówo1miejscewprawo iwlewo.