Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

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.

Podobne prezentacje


Prezentacja na temat: "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."— Zapis prezentacji:

1 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

2 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; begin Randomize; x:=random; //losuje liczbę rzecz. w przedziału (0 ;1) Edit2.Text:=FloatToStr(x) end; Funkcja random – generator liczb losowych

3 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;

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

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

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

7 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]; begin tekst:=edit1.Text; edit3.text:=tekst[0];//znak w pozycji 0 edit4.text:=IntToStr(ord(tekst[0])); // kod ASCII tego znaku end;

8 stałe trueprawda "1" tak falsefałsz "0 " nie Stałe, zmienne, wyrażenia i operacje logiczne 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 operatory nawiasy- ( ) 8

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

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

11 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. begin ciąg instrukcji end Instrukcja złożona (sekwencji) Postać :

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

13 UWAGA: instrukcja przed else nie może się kończyć średnikiem Przykłady 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 begin x:=x+10; y:=-2.1 end;

14 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

15 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

16 Schemat blokowy: 16

17 procedure TForm1.Button1Click(Sender: TObject); vara, b, c, // współczynniki równania delta: real; begin if (w_a.text='') or (w_b.text='') or (w_c.text='') then begin 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; Równanie kwadratowe

18 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; end else begin //instrukcja sekwencji 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;

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

20 Instrukcja case umożliwia alternatywne wykonanie wielu instrukcji w zależności od wartości wyrażenia typu porządkowego. Postać instrukcji: Instrukcja wyboru – case..of.. case w of s 1 :Instrukcja_1 ; s 2 :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ść, s 1, s 2, s n - lista wartości, s 1..s 2 - zakres wartości (okrojenie), możliwe połączenie listy i zakresów, np. s 1..s 2, s 3, s 4 20

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

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

23 RadioGroup 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;

24 ShowMessage - k omunikat informujący procedura ShowMessage( wyrażenie tekstowe ) - pokazuje tekst w dodatkowym oknie z przyciskiem OK - w pasku tytułowym nazwa aplikacji (programu.exe) 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 DELPHI - PODOKNA KOMUNIKATÓW 24 Można też zaprojektować Form i.. Form2.Show

25 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

26 DELPHI - WYJĄTKI 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

27 201EDivByZero całkowite218EPrivilege 202ERangeError219EInvalidCast 203EStackOverflow EVariantError 203EOutOfMemory 204EInvalidPointer 205EOverflow 206EUnderflow 207EInvalidOp 215EIntOverflow 216EAccessViolation 217 EControlC Niektóre błędy wykonania – klasa Exception: 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

28 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;

29 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); end; procedure TForm1.Button2Click(Sender: TObject); var x,y,wynik:real; begin x:=StrToFloat(Edit1.Text); y:=StrToFloat(Edit2.Text); try wynik:=x/y; except on EZeroDivide do ShowMessage( 'Dzielenie rzeczywiste przez zero' ); end; Edit3.Text:=FloatToStr(wynik); end;


Pobierz ppt "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."

Podobne prezentacje


Reklamy Google