Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa

Podobne dokumenty
Informatyka 1. Przetwarzanie tekstów

Informatyka 1. Wyrażenia i instrukcje cd., ręczna symulacja, operacje wejścia/wyjścia

Informatyka 1. Procedury i funkcje, struktura programu w Pascalu

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

Programowanie Delphi obliczenia, schematy blokowe

Wstęp do programowania. Różne różności

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Pascal - wprowadzenie

INSTRUKCJA PUSTA. Nie składa się z żadnych znaków i symboli, niczego nie robi. for i := 1 to 10 do {tu nic nie ma};

typ zakres sposob zapamietania shortint integer bajty (z bitem znaku) longint byte word

Podstawy Programowania. Składnia wyrażeń i instrukcji, złożoności obliczeniowej, operacje wejścia i wyjścia, definicja

Informatyka 1. Algorytm, podstawowe notacje, typy danych i wyrażenia

Wstęp do programowania

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

Przykład programu Rozwiązanie równania postaci:

20. Pascal i łączenie podprogramów Pascala z programem napisanym w C

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Wstęp do programowania. Procedury i funkcje. Piotr Chrząstowski-Wachtel

Podstawy programowania w języku C i C++

Podstawy programowania

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

Instrukcje iteracyjne (pętle)

Algorytmy i struktury danych

Informatyka I. Wyk lad II Algorytm, podstawowe notacje, typy danych i wyrażenia

operator zmiany znaku operatory mnożenia, dzielenia, dzielenia modulo operatory dodawania, odejmowania

Odczyt danych z klawiatury Operatory w Javie

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Algorytmika i Programowanie VBA 1 - podstawy

Podstawy programowania

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

Wstęp do programowania

Instrukcje pętli przykłady. Odgadywanie hasła. 1) Program pyta o hasło i podaje adres, gdy hasło poprawne lub komunikat o błędnym haśle.

Wstęp do programowania

Warunki logiczne instrukcja if

Poprawność semantyczna

Konstrukcja alternatywy

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

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

Języki programowania zasady ich tworzenia

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

do MATLABa programowanie WYKŁAD Piotr Ciskowski

LibreOffice Calc VBA

Zasady Programowania Strukturalnego

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 2. Programowanie komputerowe

Programowanie komputerowe. Zajęcia 1

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

Podstawy programowania

Kiedy i czy konieczne?

Instrukcja standardowa Writeln

Analiza algorytmów zadania podstawowe

Programowanie w Turbo Pascal

Jerzy Nawrocki, Wprowadzenie do informatyki

Programowanie w języku Pascal

Programowanie RAD Delphi

Podstawy programowania skrót z wykładów:

Jerzy Nawrocki, Wprowadzenie do informatyki

ForPascal Interpreter języka Pascal

Wstęp do informatyki- wykład 7

Bloki anonimowe w PL/SQL

Visual Basic for Application (VBA)

WIADOMOŚ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}

Wstęp do Programowania potok funkcyjny

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

Podstawy programowania

1 Wprowadzenie do algorytmiki

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

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja cz. 1

Analiza leksykalna 1. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

Instrukcje podsumowanie. Proste: - przypisania - wejścia-wyjścia (read, readln, write, writeln) - pusta - po prostu ; (średnik) Strukturalne:

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Wstęp do programowania. Listy. Piotr Chrząstowski-Wachtel

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

Wstęp do informatyki- wykład 2

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

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

System operacyjny Linux

Analiza leksykalna 1. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

Lekcja 6: Pascal. Procedura i funkcja

Wykład III PASCAL - iteracja cz, 2, - liczby losowe, - tablice

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303

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

EGZAMIN MATURALNY OD ROKU SZKOLNEGO

dr inż. Jarosław Forenc

SCHEMAT OCENIANIA poziom rozszerzony arkusz II

PASCAL. Etapy pisania programu. Analiza potrzeb i wymagań (treści zadania) Opracowanie algorytmu Kodowanie Kompilacja Testowanie Stosowanie

PODSTAWY PROGRAMOWANIA

Wstęp do programowania

EGZAMIN MATURALNY 2011 INFORMATYKA

PL/SQL. Część 1 Bloki PL/SQL. Piotr Medoń

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Informatyka 1. Dokumentacja programu, moduły programowe, typy tablicowe

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

Powtórka algorytmów. Wprowadzenie do języka Java.

Ilość cyfr liczby naturalnej

Wprowadzenie komentarzy do programu

Transkrypt:

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 DIV i MOD, zagadnienia złożoności obliczeniowej, instrukcja warunkowa IF-THEN, forma zapisu programu, instrukcje pętli WHILE-DO i FOR-TO-DO. Copyright c 2001 2005 Robert Muszyński Niniejszy dokument zawiera materiały do wykładu na temat podstaw programowania w językach wysokiego poziomu. Jest on udostępniony pod warunkiem wykorzystania wyłącznie do własnych, prywatnych potrzeb i może być kopiowany wyłącznie w całości, razem ze stroną tytułową. Skład FoilTEX

Wyrażenia i instrukcje, złożoność obliczeniowa 1 Składnia wyrażeń wyrazenie = proste-wyrazenie [operator-relacyjny proste-wyrazenie]. operator-relacyjny = "=" "<>" "<" ">" "<=" ">=" "IN". proste-wyrazenie = [znak-liczby] skladnik {operator-addytywny skladnik}. operator-addytywny = "+" "-" "><" "OR" "OR_ELSE". skladnik = czynnik {operator-multiplikatywny czynnik}. operator-multiplikatywny = "*" "/" "DIV" "MOD" "AND" "AND_THEN". czynnik = zmienna stala-bez-znaku wywolanie-funkcji konstruktor-zbioru "(" wyrazenie ")" "NOT" czynnik identyfikator-graniczny. stala-bez-znaku = liczba-bez-znaku napis identyfikator-stalej "NIL".

Wyrażenia i instrukcje, złożoność obliczeniowa 2 Przykładowe wyrażenia 2.0 3.5 argumenty i wartość typu REAL (2 + 8) 16 argumenty i wartość typu INTEGER X>2.5 lewy argument typu REAL lub INTEGER, prawy REAL, wynik typu BOOLEAN N 25 INTEGER lub REAL, zależnie od typu N Z= T argumenty typu CHAR, wynik BOOLEAN Z=15 jeśli Z jest CHAR, to wyrażenie jest niepoprawne, (mówimy: nielegalne), zawiera niezgodność typów (X>0) AND (Z= T ) wyrażenie poprawne, wynik BOOLEAN

Wyrażenia i instrukcje, złożoność obliczeniowa 3 Wyrażenia dalsze przykłady i:=11; x:=-2.0; b:=false; z:= a ; i * x >= ORD(z) (z <= SUCC(z)) = TRUE ( i * x >= 0 ) < ( z = Z ) AND b i DIV i + x i DIV (i + x) PRED( b )=CHR(ORD( c )-1) SUCC(PRED( b ))=CHR(ORD( b ))

Wyrażenia i instrukcje, złożoność obliczeniowa 4 Wyrażenia dalsze przykłady x,y:integer; V,W:BOOLEAN; a,b:char; NOT V AND W OR (x = y) OR (a <> b) x MOD y = x DIV y (((x=y)=v)=w) (NOT V = W) AND (NOT x = y) OR (NOT a <> b) (V = NOT W) AND NOT (x < y) AND (a > b) (x = x DIV y) AND (NOT y = x MOD y)

Wyrażenia i instrukcje, złożoność obliczeniowa 5 Wyrażenia dalsze przykłady Czy wyrażenie odpowiada formule matematycznej? a + b (a + b) / a * b ab e 2x sin 5x sin(5x) * exp(2x) 5 sin a 2 + 1 2 cos(tx) 5*sin(a/2)+1/3*cos(t*x) a + b c : def g 2x cos x sin x + e sin(x) (a+b)/c/d*e*f/g + exp(2*x*cos(x))

Wyrażenia i instrukcje, złożoność obliczeniowa 6 Drzewa rozbioru gramatycznego b b 4.0 a c 0.0 R R R R R R czynnik R czynnik R czynnikr czynnikr czynnikr czynnik R operator operator operator multip. multip. multip. składnik R operator addytywny składnik R składnik R proste wyrażenie R proste wyrażenie R operator relacyjny wyrażenie B

Wyrażenia i instrukcje, złożoność obliczeniowa 7 Drzewa rozbioru gramatycznego Dowodzą zgodności wyrażenia z regułami języka. Nie dowodzą zgodności typów. Nie w pełni odpowiadają porządkowi obliczeń.

Wyrażenia i instrukcje, złożoność obliczeniowa 8 Drzewa rozbioru gramatycznego X > 5 = TRUE czynnik czynnik czynnik składnik I operator składniki operator składnik relacyjny relacyjny proste wyrażenie I I I I proste wyrażenie I I I I B B B proste wyrażenie B wyrażenie?

Wyrażenia i instrukcje, złożoność obliczeniowa 9 Drzewa wyliczania wartości wyrażeń X > 5 = TRUE 10 I 5 I TRUE B TRUE B TRUE B

Wyrażenia i instrukcje, złożoność obliczeniowa 10 Drzewa wyliczania wartości wyrażeń w ( x + y ) z 5I 10 I 11 I 7 I 21 I 105 I 735 I

Wyrażenia i instrukcje, złożoność obliczeniowa 11 Drzewa wyliczania wartości wyrażeń Są podobne do drzew rozbioru gramatycznego. Odzwierciedlają porządek obliczeń od lewej do prawej i priorytety operatorów. Pozwalają sprawdzić zgodność typów oraz wyliczyć wartości wyrażeń (czasami).

Wyrażenia i instrukcje, złożoność obliczeniowa 12 Drzewa wyliczania wartości wyrażeń b b 4.0 a c 0.0 R R R R R R 4.0R 4.0R 4.0 R 1.0 R 2.0 R 0.0 R 4.0 R 16.0 R 8.0 R (a=1.0) (b=4.0) (c=2.0) 8.0 R TRUE B

Wyrażenia i instrukcje, złożoność obliczeniowa 13 Drzewa wyliczania wartości wyrażeń a x b? I? I? I? B Niezgodność typów?

Wyrażenia i instrukcje, złożoność obliczeniowa 14 Drzewa wyliczania wartości wyrażeń a x AND x b? I? I? I? I Niezgodność typów (znowu :-(!)? Jak wyglądałoby wyliczanie powyższego wyrażenia w przypadku a, b i x typu BOOLEAN?

? B W końcu! Wyrażenia i instrukcje, złożoność obliczeniowa 15 Drzewa wyliczania wartości wyrażeń ( a x ) AND ( x b )? I? I? I? I? B? B

Wyrażenia i instrukcje, złożoność obliczeniowa 16 Operatory DIV i MOD Dla dowolnch x i y zachodzi x = y * (x DIV y) + (x MOD y) Przykładowo procentowy wynik wyborów: (IloscZa * 100) DIV IloscGlosow ale nie IloscZa DIV IloscGlosow * 100

Wyrażenia i instrukcje, złożoność obliczeniowa 17 Operatory DIV i MOD k-ta cyfra w rozwinięciu liczby n określonej w układzie pozycyjnym o podstawie p n k = ( n DIV p (k 1)) MOD p w szczególności w układzie dziesiętnym n k = ( n DIV 10 (k 1)) MOD 10

Wyrażenia i instrukcje, złożoność obliczeniowa 18 Liczymy więc przykładowo (853 DIV 1) MOD 10 = 3 (853 DIV 10) MOD 10 = 5 (853 DIV 100) MOD 10 = 8 i piszemy program FUNCTION Potega(a, b : INTEGER) : INTEGER; BEGIN m := 1; FOR i := 1 TO b DO m := m * a; Potega := m; END;... (* Algorytm 1 *) NrCyfry := 1; WHILE??? DO BEGIN Cyfra := Liczba DIV Potega(10,NrCyfry-1) MOD 10; NrCyfry := NrCyfry + 1 END;

Wyrażenia i instrukcje, złożoność obliczeniowa 19 cyfr podstawień mnożeń dodawań porównań 3 30 12 6? 6 69 33 12? n n 2 +5n+3 n 2 2 + 5n 2 2n?

Wyrażenia i instrukcje, złożoność obliczeniowa 20 Napisaliśmy: FUNCTION Potega(a, b : INTEGER) : INTEGER; BEGIN m := 1; FOR i := 1 TO b DO m := m * a; Potega := m; END;... (* Algorytm 1 *) NrCyfry := 1; WHILE??? DO BEGIN Cyfra := Liczba DIV Potega(10,NrCyfry-1) MOD 10; NrCyfry := NrCyfry + 1 END; Można prościej:... (* Algorytm 2 *) Dzielnik := 1; WHILE Dzielnik < Liczba DO BEGIN Cyfra := Liczba DIV Dzielnik MOD 10; Dzielnik := Dzielnik * 10; END;

Wyrażenia i instrukcje, złożoność obliczeniowa 21 Obecnie: A mieliśmy: cyfr podstawień mnożeń dodawań porównań 3 7 9 0 4 6 13 18 0 7 n 2n + 1 3n 0 n + 1 cyfr podstawień mnożeń dodawań porównań 3 30 12 6? 6 69 33 12? n n 2 +5n+3 n 2 2 + 5n 2 2n?

Wyrażenia i instrukcje, złożoność obliczeniowa 22 Lub jeszcze prościej: WHILE Liczba > 0 DO BEGIN (* Algorytm 3 *) Cyfra := Liczba MOD 10; Liczba := Liczba DIV 10; END; co daje krok Cyfra Liczba 0 853 1 3 85 2 5 8 3 8 0 4 STOP Teraz: cyfr podstawień mnożeń dodawań porównań 3 6 6 0 4 6 12 12 0 7 n 2n 2n 0 n + 1

Wyrażenia i instrukcje, złożoność obliczeniowa 23 Podsumowując: Złożoność obliczeniowa - zarys algorytm podstawień mnożeń dodawań porównań złożoność 1 n 2 + 5n + 3 n 2 2 + 5n 2 2n? O(n 2 ) 2 2n + 1 3n 0 n + 1 O(n) 3 2n 2n 0 n + 1 O(n) dla n = 100 algorytm podstawień mnożeń dodawań porównań 1 10503 5250 200? 2 201 300 0 101 3 200 200 0 101

Wyrażenia i instrukcje, złożoność obliczeniowa 24 Instrukcja warunkowa IF-THEN instrukcja-if = "IF" wyrazenie-logiczne "THEN" instrukcja "IF" wyrazenie-logiczne "THEN" instrukcja "ELSE" instrukcja. Porządkowanie liczb Można też tak ;-) IF x > y THEN BEGIN Wieksza := x; Mniejsza := y END ELSE BEGIN Wieksza := y; Mniejsza := x END; IF x>y THEN BEGIN Wieksza:=x; Mniejsza:=y END ELSE BEGIN Wieksza:=y; Mniejsza:=x END;

Wyrażenia i instrukcje, złożoność obliczeniowa 25 Instrukcja IF-THEN przykłady Porządkowanie liczb inny przykład IF x > y THEN BEGIN x := y; y := x END; IF x > y THEN BEGIN tmp := x x := y; y := tmp END;

Wyrażenia i instrukcje, złożoność obliczeniowa 26 Instrukcja IF-THEN przykłady Składanie instrukcji warunkowych IF warunek1 THEN IF warunek2 THEN instrukcja1 ELSE instrukcja2 IF warunek1 THEN IF warunek2 THEN instrukcja1 ELSE instrukcja2 ELSE instrukcja3 IF warunek1 THEN IF warunek2 THEN instrukcja1; ELSE instrukcja2 IF warunek1 THEN IF warunek2 THEN instrukcja1 ELSE instrukcja2; ELSE instrukcja3

Wyrażenia i instrukcje, złożoność obliczeniowa 27 Instrukcja IF-THEN przykłady IF TRUE THEN IF FALSE THEN WRITELN( false ) ELSE WRITELN( true ); IF FALSE THEN IF FALSE THEN WRITELN( false ) ELSE WRITELN( true ); IF FALSE THEN BEGIN IF FALSE THEN WRITELN( false ) END ELSE WRITELN( true ); IF FALSE THEN BEGIN IF TRUE THEN WRITELN( true ) END ELSE WRITELN( false );

Wyrażenia i instrukcje, złożoność obliczeniowa 28 Instrukcja IF-THEN przykłady BEGIN... a:=10; b:=5; c:=20; d:= @ ; e:=true; IF NOT (a MOD b = c) AND e OR (d = # ) THEN a := 2 * a ELSE IF e OR (d = & ) THEN d := # ELSE b:= a + c; e := FALSE; WRITELN ((a = c) AND (e = FALSE)); WRITELN ((a = 20) AND (d = # ));... END.

Wyrażenia i instrukcje, złożoność obliczeniowa 29 Instrukcja pętli WHILE-DO instrukcja-while = "WHILE" wyrazenie-logiczne "DO" instrukcja. Sprawdzanie czy liczba jest pierwsza Pierwsza := TRUE; Dzielnik := 2; WHILE Dzielnik < N DO BEGIN IF (N MOD Dzielnik) = 0 THEN Pierwsza := FALSE; Dzielnik := Dzielnik + 1; END;

Wyrażenia i instrukcje, złożoność obliczeniowa 30 Instrukcja pętli FOR-TO-DO instrukcja-for = "FOR" zmienna ":=" wartosc-poczatkowa ("TO" "DOWNTO") wartosc-koncowa "DO" instrukcja. wartosc-poczatkowa = wyrazenie. wartosc-koncowa = wyrazenie. Sprawdzanie czy liczba jest pierwsza JestPierwsza := TRUE; FOR Dzielnik := 2 TO N-1 DO IF (N MOD Dzielnik) = 0 THEN JestPierwsza := FALSE;

Wyrażenia i instrukcje, złożoność obliczeniowa 31 Zachowanie instrukcji FOR-TO-DO zmienna sterująca musi być zadeklarowana w programie, wartości początkowa i końcowa są obliczane dokładnie raz, przed rozpoczęciem realizacji pętli, zmiennej sterującej przypisana zostaje wartość początkowa, wartość zmiennej sterującej jest zwiększana (a w przypadku wystąpienia słowa DOWNTO zmniejszana), po każdym wykonaniu instrukcji wewnętrznej, wartość zmiennej sterującej nie może być zmieniana przez instrukcję wewnętrzną, jeżeli wartość zmiennej sterującej jest większa (mniejsza w przypadku DO- WNTO) od wartości końcowej, to instrukcja wewnętrzna nie jest wykonywana, po zakończeniu wykonywania instrukcji FOR-TO-DO wartość zmiennej sterującej jest nieokreślona.

Wyrażenia i instrukcje, złożoność obliczeniowa 32 Równoważność instrukcji WHILE-DO i FOR-TO-DO { FOR I := E0 TO Ek DO X; } I := E0; WHILE I <= Ek DO BEGIN X; I := I + 1; END;

Wyrażenia i instrukcje, złożoność obliczeniowa 33 Instrukcja pętli FOR-TO-DO inny przykład PROGRAM Przyklad(INPUT,OUTPUT); TYPE Miesiace = (styczen, luty, marzec, kwiecien, maj, czerwiec, lipiec, sierpien, wrzesien, pazdziernik, listopad, grudzien); Dni = 1..31; VAR m : Miesiace; d : Dni; BEGIN FOR m := styczen TO grudzien DO FOR d := 1 TO DniWMiesiacu(m) DO IF SwietoPanstwowe(m,d) THEN WRITELN ( Swieto dnia,d, miesiaca,ord(m)); END.