Wykład 3 przykłady operacje na tekstach wyrażenia logiczne

Slides:



Advertisements
Podobne prezentacje
Katarzyna Szafrańska kl. II ti
Advertisements

Programowanie wizualne
Programowanie Wizualne WYKŁAD 1
typy całkowite (całkowitoliczbowe)
PROGRAMOWANIE STRUKTURALNE
Jan Aleksander Wierzbicki
Projektowanie i implementacja programów obsługujących gniazdka Wykład II Zbigniew Brożbar Paweł Baranowski.
OBJECT PASCAL Marzena Szałas.
Instrukcje warunkowe Zajęcia 5.
ZŁOŻONOŚĆ OBLICZENIOWA
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.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 2: Wstęp do programowania w Pascalu © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 5: Typy porządkowe, wyliczeniowe i okrojone. Definiowanie.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 4: Wyrażenia i operatory. Podstawowe instrukcje języka.
Podstawy programowania
Wykład 2 struktura programu elementy języka typy zmienne
Instrukcja skoku GO TO etykieta Np. GO TO 100 ….. 100WRITE (*,*) Przeskok do instrukcji 100 Uwaga! NIE WOLNO skakać do wnętrzna złożonych instrukcji warunkowych.
1 Języki i techniki programowania prowadzący dr Grzegorz Filipczyk.
PASCAL Dr Anna Kwiatkowska.
Wprowadzenie do programowania w języku Turbo Pascal
Typy wyrażenia, schematy blokowe, writeln, readln, if, pętle
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ć
PROGRAMOWANIE STRUKTURALNE
PROGRAMOWANIE STRUKTURALNE WYKŁAD 2
Schemat Hornera Mgr inż. Michał Szucki.
Podstawy programowania
AWK Zastosowania Informatyki Wykład 1 Copyright, 2003 © Adam Czajka.
Podstawy programowania
Obiekty dynamiczne Tworzenie klas 3 MPDI Programowanie obiektowe W4.
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.
Metodyka nauczania Informatyki
© A. Jędryczkowski – 2006 r. © A. Jędryczkowski – 2006 r.
Wyrażenia w Turbo Pascalu.
Wykład 5 – typy – stałe – tablice – elementy grafiki.
1. Język ObjectPascal - typ tablicowy (array)
PL/SQL Zajęcia nr II PL/SQL(2) M. Rakowski - WSISiZ.
Programowanie w środowisku DELPHI
PHP: warunki, pętle, switch, break, continue
ANNA BANIEWSKA SYLWIA FILUŚ
1 Wykład 8 Podprogramy. 2 Pojęcie i istota stosowania dzielenie programu na części (logicznie spójne) - nazwane - niezależne od pozostałych części - z.
Programowanie strukturalne i obiektowe
Instrukcja warunkowa i wyboru
Elżbieta Fiedziukiewicz
PROGRAMOWANIE KOMPUTERÓW
Programowanie baz danych
Informatyka MZT1 Wykład 6 Iteracje while i repeat Tablice Rekordy
Wykład 10 typ zbiorowy rekurencja.
1 Wykład 7 sortowanie BitButton format tekstu rysunki typ rekordowy.
Ogólna struktura programu w TP
Projektowanie stron WWW
Podstawy języka Instrukcje - wprowadzenie
Informatyka 2 MPDI Wykład 9 Delphi tablice, rekordy.
Temat 7: Instrukcje warunkowe
Zmienne i typy danych w C#
Technologie internetowe Wykład 7 Kontrola danych użytkownika.
PWSW Mechatronika Wykład 7 Matlab cd.
Podstawowe struktury danych. Typy danych.
Podsumowanie wiedzy MPDI2 sem.3 INFORMATYKA. tworzenie nowego pliku i katalogu, nawigacja po katalogach, listowanie zawartości katalogu, zmiana nazw,
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
Wykład 5 Informatyka MPDI 3 semestr Język JavaScript.
Dominik Benduski Michał Mandecki Podstawy Visual Basic w Excelu.
P ASCAL Definicje, deklaracje, podstawowe instrukcje 1.
 Formuła to wyrażenie algebraiczne (wzór) określające jakie operacje ma wykonać program na danych. Może ona zawierać liczby, łańcuchy znaków, funkcje,
Visual Basic w programie Microsoft Excel
Zapis prezentacji:

Wykład 3 przykłady operacje na tekstach wyrażenia logiczne instrukcja sekwencji instrukcja warunkowa i wyboru CheckBox i Radiogroup obsługa błędów

Funkcja random – generator liczb losowych procedure TForm1.Button1Click(Sender: TObject); var x:integer; begin Randomize; //inicjacja generatora x:=random(100);// losuje ze zbioru 100 liczb całkowitych Edit1.Text:=IntToStr(x) end; procedure TForm1.Button2Click(Sender: TObject); var x:real; Randomize; x:=random; //losuje liczbę rzecz. w przedziału (0 ;1) Edit2.Text:=FloatToStr(x)

Operator mod - przykład procedure TForm1.Button1Click(Sender: TObject); var a,b,reszta:integer; begin a:=StrToInt(Edit1.text); b:=StrToInt(Edit2.text); reszta:=a mod b; //UWAGA na spacje Edit3.Text:= IntToStr(reszta); end;

Standardowe komponenty graficzne VCL Formularz (okno) - Form właściwości name: string - nazwa obiektu (formularza) caption: string - tytuł okna menu: - główne - obiekt popUpMenu: - kontekstowe - obiekt Przycisk akcji - Button właściwości name: string - nazwa obiektu (przycisku) caption: string - tytuł przycisku (&z - litera klawisza skrótu) zdarzenia i metody onClick - obsługa kliknięcia 4

Pole edycji jednowierszowej – Edit otrzymywanie lub wprowadzanie danych tekstowych pełna edycja informacji zaznaczanie wycinka tekstu i operacje właściwości (ważniejsze) text: string - treść wiersza zdarzenia i metody właściwość text := wartość_tekstowa ustawienie (wpisanie) zdarzenie onClick - obsługa kliknięcia z. onChange - dowolna zmiana zawartości procedura clear - wyzerowanie pola Edit1.Clear; 5

Stałe, zmienne i wyrażenia tekstowe stałe - znakowe i tekstowe napisy - pojedyncze znaki, ciągi (łańcuchy) znaków postać '.....' Przykłady: 'Nowak' stałe znakowe - typ char , np. 'A' zmienne łańcuchowe (tekstowe) - typ string np. 'Pan Kowalski' - deklaracja zmiennej string[ rozmiar ] istnieje mechanizm selekcji znaku zmienna[ pozycja ]  znak wyrażenia tekstowe - podobnie jak arytmetyczne: argumenty: - stała tekstowa - zmienna znakowa lub tekstowa - wywołanie funkcji o wartości znakowej lub tekstowej operator - jeden łączenia (konkatenacji) "+" Np.: 'Object' + 'Pascal'  ObjectPascal 6

Długość tekstu procedure TForm1.Button1Click(Sender: TObject); begin edit2.Text:=IntToStr(Length(Edit1.Text)); end; procedure TForm1.Button2Click(Sender: TObject); var tekst:string[100]; tekst:=edit1.Text; edit3.text:=tekst[0];//znak w pozycji 0 edit4.text:=IntToStr(ord(tekst[0])); // kod ASCII tego znaku

Stałe, zmienne, wyrażenia i operacje logiczne stałe true prawda "1" tak false fałsz "0 " nie zmienne logiczne - typ boolean np.: var jest_zwolniony: boolean; wyrażenia logiczne - podobnie jak arytmetyczne: argumenty: - stałe logiczne - zmienne logiczne - funkcje o wartościach logicznych - relacje nawiasy - ( ) operatory 8

relacja (porównanie) W1 operator W2  wartość true | false W1, W2  obydwa wyrażenia numeryczne (typu Real lub Integer) obydwa znakowe lub tekstowe (porównanie alfabetyczne) operator znaczenie = równy <> nierówny > większy >= większy lub równy < mniejszy <= mniejszy lub równy Np.: k > 2 suma <= 10.0 sin( 2*x + a) >= 0.5 nazwisko >= 'K' ostrożnie z operatorem = dla wyrażeń rzeczywistych 9

Operatory logiczne negacja not arg np.: not( k<5 )  k >= 5 koniunkcja (iloczyn logiczny) WB1 and WB2 np.: ( k >= -5 ) and ( k <= 5 )  -5  k  +5 alternatywa (suma logiczna) WB1 or WB2 np.: ( k < -5 ) or ( k > 5 )  | k | > 5 Wykorzystanie relacji i wyrażeń logicznych: w instrukcji przypisania (do zmiennej typu Boolean) w instrukcji warunkowej w iteracjach warunkowych 10

begin end Instrukcja złożona (sekwencji) Przy konieczności wykonania więcej niż jednej instrukcji wewnątrz dowolnej instrukcji strukturalnej stosujemy tzw. instrukcję złożoną (sekwencji). Także instrukcje bloku programowego stanowią instrukcję sekwencji. Postać: begin ciąg instrukcji end

Instrukcja warunkowa "if. then. else" ("jeśli. to Instrukcja warunkowa "if.. then..else" ("jeśli..to.. w przeciwnym przypadku„) strukturalna – w jej skład wchodzi inna instrukcja Zastosowanie: sytuacje decyzyjne postać skrócona if wyrażenie_logiczne then instrukcja; Wb postać pełna if wyrażenie_logiczne then instrukcja_1 else instrukcja_2; Instrukcją może być dowolna instrukcja (także inny if lub instrukcja sekwencji, jeśli ma być wykonane kilka działań) 12

Przykłady UWAGA: instrukcja przed else nie może się kończyć średnikiem if x>0 then x:=x-100; if x>0 then x:=x-100 else x:=x+10; if (x>0) or (y-2>=5) then begin x:=x-100; y:= 2.7 end else x:=x+10; y:=-2.1 end; UWAGA: instrukcja przed else nie może się kończyć średnikiem

- zmiana a, b lub c  chowa pola wyników i napis przykład: Założenia: - zmiana a, b lub c  chowa pola wyników i napis - gdy delta < 0  tylko napis "Wynik - brak pierwiastków" - gdy delta = 0  napis "Wynik - jeden pierwiastek podwójny" widać jedno pole wyniku i wartość pierwiastka - gdy delta > 0  napis "Wynik - dwa pierwiastki" widać dwa pola wyniku i dwie wartości pierwiastków - i inne, np. podwójne kliknięcie w tło okna  kasuje pola współczynników, chowa pola wyników 14

składowe okna i programu: - w_a, w_b, w_c - pola współczynników - wynik - etykieta Label - tekst informacyjny o wyniku - x1, x2 - pola Edit wyniku - a, b, c, delta - zmienne wewnętrzne procedury wyznaczania wyniku - wyznacz, koniec - procedury obsługi kliknięcia przycisków 15

Schemat blokowy: 16

Równanie kwadratowe procedure TForm1.Button1Click(Sender: TObject); var a, b, c, // współczynniki równania delta: real; begin if (w_a.text='') or (w_b.text='') or (w_c.text='') then ShowMessage ('Wpisz dane współczynniki'); exit; // zakończenie procedury end; a := strToFloat(w_a.text); b := strToFloat(w_b.text); c := strToFloat(w_c.text); delta := b*b - 4*a*c;

if delta < 0 then begin form1.wynik.Caption := 'Wynik - brak pierwiastków'; x1.visible := false; x2.visible := false; end else if delta = 0 then begin //instrukcja sekwencji form1.wynik.Caption := 'Wynik - pierwiastek podwójny'; x1.text := 'x1=x2='+floatToStr( -b/2/a ); x1.visible := true; x2.visible := false; else delta := sqrt( delta ); form1.wynik.Caption := 'Wynik - dwa pierwiastki:'; x1.text := 'x1 = ' + floatToStr( ( -b - delta )/2/a ); x2.text := 'x2 = ' + floatToStr( ( -b + delta )/(2*a) ); x1.visible := true; x2.visible := true; end;

Jeszcze jedno zastosowanie operatora mod if (x mod 2)=0 then Edit1.Text:='Liczba parzysta' else Edit1.Text:='Liczba nieparzysta');

Instrukcja wyboru – case..of.. Instrukcja case umożliwia alternatywne wykonanie wielu instrukcji w zależności od wartości wyrażenia typu porządkowego. Postać instrukcji: case w of s1 :Instrukcja_1 ; s2 :Instrukcja_2 ; .... [ else Instrukcja_k ] end ; w - wyrażenie–selektor typu porządkowego (np. całkowitego, znakowego), s - stałe wyboru (etykiety wyboru) w możliwej postaci: s - pojedyncza wartość, s1, s2, sn - lista wartości, s1..s2 - zakres wartości (okrojenie), możliwe połączenie listy i zakresów, np. s1..s2, s3, s4 20

Przykład: var miesiac : 1..12 ; dni : 1..31 ; begin miesiac := StrToInt (Edit1.Text) ; case miesiac of 2 : dni := 28 ; {pojedyncza wartość} 4, 6 , 9, 11 : dni := 30 ; {lista} 1..12 : dni := 31 ; {zakres} {lub else dni := 31} end ; end; 21

Wykorzystanie instrukcji warunkowej i wyboru CheckBox – pole wyboru opcji typu Tak/Nie Właściwości: Checked:Boolean State:(cbUnchecked,cbChecked, cbGrayed ) if Checkbox1.Checked then.... else .. if jakiś warunek then.... Checkbox1.State:=cbChecked

RadioGroup Obsługa programowa: zdarzenie onClick Właściwości Items:TStrings => edytor elementów grupy Itemindex:Integer – numer wybranego elementu liczony od 0 Obsługa programowa: zdarzenie onClick case Radiogroup1.Itemindex of 0: Instrukcja1; 1: Instrukcja2; 2: Instrukcja3; end;

DELPHI - PODOKNA KOMUNIKATÓW ShowMessage - komunikat informujący związane są z osobnymi oknami przekazują informację dla użytkownika, wymagającą podjęcia przez niego decyzji: - komunikat informujący - możliwy też komunikat z dialogiem ShowMessage - komunikat informujący procedura ShowMessage( wyrażenie tekstowe ) - pokazuje tekst w dodatkowym oknie z przyciskiem OK - w pasku tytułowym nazwa aplikacji (programu .exe) Można też zaprojektować Form i.. Form2.Show 24

Błędy składniowe – kompilacja się nie uda wykonania (np. dzielenie przez 0) Obsługa błędów wykonania: przy pomocy instrukcji if, np. if y<>0 then wynik:= x/y else ShowMessage('Dzielnik równy 0'); - przy pomocy instrukcji try – obsługa wyjątków

DELPHI - WYJĄTKI try ... except try ... finally błąd generowany w czasie wykonywania programu, np. gdy dzielimy przez zero inne zdarzenie generowane w czasie wykonywania programu, np. stwierdzamy, że jest jakaś sytuacja niedopuszczalna do obsługi sytuacji wyjątkowych służą konstrukcje try ... except try ... finally instrukcja: try . . . // instrukcje wykonywane na bieżąco z podejrzeniem błędu except . . . // instrukcje wykonywane . . . // w razie wystąpienia błędu end try . . . except on typ_wyjątku do instrukcja .... else instrukcja; ... end

Niektóre błędy wykonania – klasa Exception: 201 EDivByZero całkowite 218 EPrivilege 202 ERangeError 219 EInvalidCast 203 EStackOverflow 220-225 EVariantError 203 EOutOfMemory 215 EIntOverflow 204 EInvalidPointer 216 EAccessViolation 205 EOverflow 217 EControlC 206 EUnderflow 207 EInvalidOp dla konwersji – EConvertError dzielenie rzeczywiste przez 0 - EZeroDivide Obsługa wyjątków standardowo tylko poza Delphi – uruchomienie pliku exe Chyba, że w Tools –Debugger Options - Language Exceptions odznaczymy pole Stop on Delphi exceptions to wówczas wyjątki obsługiwane w środowisku

Przykład 1: try ... except on EZeroDivide do showMessage( 'Dzielenie przez zero' ); on EOverflow do showMessage( 'Przekroczenie zakresu' ); on EMathError do showMessage( 'Błąd matematyczny' ); end;

Przykład 2: procedure TForm1.Button1Click(Sender: TObject); var x,y,wynik:integer; begin x:=StrToInt(Edit1.Text); y:=StrToInt(Edit2.Text); try wynik:=x div y; except on EDivByZero do ShowMessage( 'Dzielenie całkowite przez zero' ); end; Edit3.Text:=IntToStr(wynik); procedure TForm1.Button2Click(Sender: TObject); var x,y,wynik:real; x:=StrToFloat(Edit1.Text); y:=StrToFloat(Edit2.Text); wynik:=x/y; on EZeroDivide do ShowMessage( 'Dzielenie rzeczywiste przez zero' ); Edit3.Text:=FloatToStr(wynik);