Przeglądaj wersję html pliku:

wiczenie 10_11


cwicz_10_11

H M P R O G R A M O W A N I E

str. 23
W D E L P H I

ĆWICZENIE 10 – Instrukcja warunkowa, operatory relacji.
Poznałeś zasady tworzenia interfejsu użytkownika (okien) i wymiany informacji między użytkownikiem a komputerem poprzez ekran, zasady deklarowania zmiennych i przypisywania im wartości oraz umiesz pisać instrukcje z wykorzystaniem podstawowych operatorów arytmetycznych. Zaczniesz stosować instrukcje warunkowe, w sytuacjach, kiedy sposób obliczeń nie jest jednoznaczny. Przypomnij sobie instrukcję warunkową JEŻELI stosowaną w arkuszu kalkulacyjnym. Kiedy zachodziła potrzeba użycia reguły z tą instrukcją ? Trudno np. jest zaakceptować rozkaz wykonania dzielenia, gdy użytkownik wprowadził dzielnik o wartości równej 0. Zanim więc zostanie wykonana instrukcja dzielenia, program musi dokonać sprawdzenia wartości zmiennych, a potem zachować się odpowiednio do wyniku sprawdzenia. Schemat postępowania w tej przykładowej sytuacji pokazuje poniższy rysunek.

Odczytaj dane: a, b

Sprawdź wartość b czy b≠0 ? nie

tak

Wykonaj dzielenie c=a/b

Dalsze operacje ....... Takie warunkowe wykonanie instrukcji dzielenia realizuje się w Delphi poprzez zapis

if b<>0 then c:=a/b;
co oznacza: jeśli b jest nierówne 0, wtedy wynik dzielenia a przez b przypisz do c. Operacja dzielenia zostanie wykonana tylko wtedy, gdy warunek jest spełniony. W każdym przypadku wykonywana jest później instrukcja następna po instrukcji warunkowej. Ogólnie można to zapisać następująco

if warunek then instrukcja;
23

cwicz_10_11

H M P R O G R A M O W A N I E

str. 24
W D E L P H I

Trzymamy się dalej naszego przykładu. Jeśli chcielibyśmy np. aby program ostrzegł użytkownika, że wprowadził on złe dane, to powinniśmy użyć instrukcji warunkowej, której schemat działania jest następujący.

Odczytaj dane: a, b

Wyprowadź ostrzeżenie

nie

Sprawdź wartość b czy b≠0 ?

tak

Wykonaj dzielenie /

Dalsze operacje ....... Takie warunkowe wykonanie jednego z dwóch wariantów działania realizuje się w Delphi poprzez zapis

if warunek then instrukcja1 else instrukcja2;
co oznacza: jeśli warunek jest spełniony, wtedy wykonaj instrukcję1, a w przeciwnym przypadku wykonaj instrukcję2. Nigdy nie zachodzi przypadek wykonania obu instrukcji. Warunki formułowane za słowem if mogą być bardzo proste i bardzo złożone. Do formułowania prostych warunków wystarczą operatory relacyjne. Oto zestawienie podstawowych z nich. Operatory relacyjne: = równy < mniejszy <= nie większy

<> > >=

nierówny większy nie mniejszy

W programie Kalkulator - podstawowy, do procedury obsługującej wykonanie działania dzielenia, wstaw instrukcję warunkową, która uniemożliwi wykonanie tej operacji, jeśli dzielnik jest równy 0. Wykonaj polecenia. 24

cwicz_10_11

H M P R O G R A M O W A N I E

str. 25
W D E L P H I

1. Przywołaj w Delphi okno programu Kalkulator - podstawowy. 2. Dwukrotnie kliknij na przycisk . Jesteś edytorze Delphi we właściwej procedurze. 3. Wpisz instrukcję warunkową analogicznie jak pokazano to niżej.

w

procedure TForm1.Kl_dzielClick(Sender: TObject); var dana1, dana2, rezultat: real; wynik_dzial: string[20]; begin dana1:=8888.88; dana2:=9999.99; rezultat:=9999.99; wynik_dzial:=’xxxxxxxxxxxxx’; Dzialanie.Caption:='Wynik dzielenia'; dana1:=StrToFloat(Ed_liczba1.Text); dana2:=StrToFloat(Ed_liczba2.Text); if dana2<>0 then rezultat:=dana1/dana2; wynik_dzial:=FloatToStr(rezultat); Wynik.Caption:=wynik_dzial end;
4. Sprawdź, czy program dobrze reaguje na każdy wariant danych do dzielenia. Powinien nie wykonywać dzielenia, gdy dzielnik ma wartość równą 0. 5. Zmodyfikuj treść procedury (przez użycie jeszcze jednej instrukcji warunkowej) tak, by w przypadku błędnej danej zamiast „przypadkowego” wyniku wypisywany był tekst - „Dzielnik = 0 !!!”. Powinieneś otrzymać następujący rezultat.

25

cwicz_10_11

H M P R O G R A M O W A N I E

str. 26
W D E L P H I

6. Wstaw instrukcje sprawdzające poprawność dzielnika w procedurach uruchamianych po kliknięciu na przyciskach działań div i mod. Zwróć przy tym uwagę na to, że zmienne dla tych operatorów muszą być typu całkowitego. 7. Wytestuj program. Spodziewam się, że popełniłeś kilka błędów. 8. Niezależnie od tego, czy wyczyściłeś program dokładnie ze wszystkich błędów, zapisz go w folderze roboczym.

ĆWICZENIE 11 – Instrukcja złożona.
Jeśli program działa poprawnie, to jest to Twój sukces. Być może zauważyłeś, że przydałaby się taka możliwość, by gałąź then lub else instrukcji warunkowej if mogła zawierać wiele instrukcji. Pokazuje to poniższy schemat. else Instrukcja 1 Instrukcja 2 ......... then Instrukcja 1 Instrukcja 2 .........

if

Dalsze instrukcje .............. Taka grupa instrukcji traktowana jest logicznie jak jedna instrukcja. Jest to tzw. instrukcja złożona. Treść instrukcji złożonej mieści między słowami

begin . . . . . . . . . . . . . . . . end; .
Te dwa słowa należy traktować w pewnym sensie jak nawiasy: otwierający i zamykający. Przyjmijmy, że między te „nawiasy” można wstawić każdą „potrzebną w konkretnym przypadku” instrukcję. W programie Kalkulator- podstawowy zreorganizuj ciąg instrukcji w procedurze „obsługującej” operację dzielenia tak, by w zależności od tego czy dzielenie jest wykonalne czy nie jest, okno miało zawartość przedstawioną niżej. Jeśli dzielenie jest wykonalne:

26

cwicz_10_11

H M P R O G R A M O W A N I E

str. 27
W D E L P H I

Jeśli dzielenie nie jest wykonalne:

Wykonaj polecenia. 1. Przywołaj w Delphi okno programu Kalkulator - podstawowy. 2. Dwukrotnie kliknij na przycisk . Jesteś w edytorze Delphi we właściwej procedurze. 3. Zmodyfikuj grupę instrukcji stosując instrukcje złożone analogicznie do poniższego przykładu.

procedure TForm1.Kl_dzielClick(Sender: TObject); var dana1, dana2, rezultat: real; wynik_dzial: string[20]; begin dana1:=8888.88; dana2:=9999.99; rezultat:=9999.99; wynik_dzial:='xxxxxxxxxxxx'; Dzialanie.Caption:='Wynik dzielenia'; dana1:=StrToFloat(Ed_liczba1.Text); dana2:=StrToFloat(Ed_liczba2.Text); if dana2<>0 then begin rezultat:=dana1/dana2; wynik_dzial:=FloatToStr(rezultat); Wynik.Caption:=wynik_dzial end else begin Wynik.Caption:='Dzielnik = 0 !!!'; Dzialanie.Caption:='Dzielenia nie wykonano' end end;
4. Wytestuj program. Zobacz, jaka przejrzysta jest jego treść. 5. W procedurach uruchamianych przez naciśnięcie przycisków div i mod zmodyfikuj ciągi instrukcji w sposób analogiczny jak wyżej. 6. Dla porządku - wypełnij instrukcjami procedury, które są uruchamiane po kliknięciu na przyciski „Zeruj pierwszą” i „Zeruj drugą”. 7. Zapisz projekt w folderze roboczym. 27

cwicz_10_11

H M P R O G R A M O W A N I E

str. 28
W D E L P H I

Zadania do samodzielnego wykonania
Instrukcja warunkowa
(kontynuacja poprzedniej serii ćwiczeń)

Zadanie 1. W programie liczącym całkowity roczny dochód pracownika i jego
średni zarobek miesięczny wprowadź instrukcje warunkowe, które sprawdzą, czy użytkownik nie wpisał ujemnych zarobków miesięcznych.

Zadanie 2. W programie do obliczeń pola przekroju i naprężeń wprowadź
instrukcje warunkowe, które nie pozwolą dokonać obliczeń, gdy wymiary przekrojów nie są większe od 0.

Zadanie 3. W programie, który będzie kalkulatorem inżynierskim wprowadź
instrukcje warunkowe, które sprawdzą dane i odpowiednio ułożą sposoby obliczania wyników lub komunikaty.

Zadanie 4. W programie do różnych działań na dwóch liczbach zespolonych
wprowadź instrukcje warunkowe, które sprawdzą dane odpowiednio ułożą sposoby obliczania wyników lub komunikaty. i

28

 
statystyka