Delphi – lab4
Instrukcja wyboru.
Instrukcja wyboru.
W programowaniu często mamy do czynienia z sytuacją, gdy wykonanie różnych operacji jest
uzależnione od wartości pewnej zmiennej. Pomocnicza może okazać się tu instrukcja wyboru,
której ogólna postać jest następująca:
lub
Case
wyrażenie
of
Sekwencja-instrukcji-wyboru
End;
Case
wyrażenie
of
Sekwencja-instrukcji-wyboru
Else
instrukcja;
End;
gdzie wartość wyrażenia, zwanego selektorem, musi być
typu porządkowego
.
Sekwencja instrukcji wyboru składa się z instrukcji, przy czym każda z nich poprzedzona jest
jedną lub kilkoma stałymi, zwanymi
stałymi wyboru
, które od instrukcji oddzielone są
dwukropkiem
. Poszczególne stałe wyboru oddzielone są przecinkami i mogą mieć postać:
•
stała , stała
lub
• może być podany zakres „od – do”
stała .. stała
.
Instrukcja może być dowolną
instrukcją prostą
lub
strukturalną
.
Przykłady:
Case
dana
of
1
:
x:=1;
2,3,4
: x:=2;
5..10
:
begin
x:=3;
y:=1;
end;
12,15,20..30
:x:=7;
End;
Case
dana
of
1
: x:=1;
2
: x:=5;
Else
x:=9;
End;
pora:=wiosna;
Case
pora
of
wiosna
: Edit2.Text:='wiosna';
lato
: Edit2.Text:='lato';
End;
znal:=false;
Case
znal
of
true
: Edit2.Text:='Tak';
false
:Edit2.Text:='Nie';
End;
zn:='B';
Case
zn
of
'A'
: Edit2.Text:='litera A';
'B'
: Edit2.Text:='litera B';
End;
Typ porządkowy.
Typami porządkowymi nazywamy wszystkie typy proste z wyjątkiem typów rzeczywistych.
Do typów porządkowych zaliczamy:
• Typ wyliczeniowy ,
• Typy całkowite Integer,Byte,Int64,SmalIint,Word,LongWord
• Typ logiczny
Boolean
• Typ okrojony
• Typ znakowy
Char
Typ wyliczeniowy.
Typ wyliczeniowy stosuje się zwykle dla zbiorów o niewielkiej liczbie elementów, na których
nie wykonuje się operacji arytmetycznych. Definicja jest następująca:
Typ identyfikator-typu = ( lista-identyfikatorów )
W liście identyfikatorów specyfikuje się identyfikatory (nazwy) , które tworzą zbiór wartości
danego typu wyliczeniowego. Elementy typu wyliczeniowego są uporządkowane zgodnie z
kolejnością ich wyliczenia w definicji typu i posiadają liczby porządkowe odpowiednio 0,1,2
itd.
Type pora_roku
= (wiosna, lato, jesien, zima);
Type tydzien
= (poniedzialek,wtorek,środa,czwartek,piątek,sobota,niedziela)
Type zbior
= (a,b,c,d);
Typ okrojony.
Służy do ograniczenia zakresów wartości dowolnego z opisanych typów porządkowych.
Definicja typu okrojonego ma postać:
Typ identyfikator-typu = stała .. stała
Gdzie stała oznacza liczbę całkowitą, literał znakowy, literał logiczny, nazwę literału,
identyfikator ze zbioru wartości typu wyliczeniowego lub wyrażenie stałe.
Przykłady:
Type litera = ’A’..’Z’;
Type tydzien = (poniedzialek,wtorek,środa,czwartek,piątek,sobota,niedziela)
Dni_robocze = poniedziałek..piątek;
Type zakres s= 0..50;
Zadania
1. Napisz program, który wyświetli ocenę podaną cyfrą w postaci słownej.
2. Napisz program obliczający pole wybranej figury geometrycznej np. koło, kwadrat,
prostokąt.
3. Napisz program sprawdzający poprawność wczytanej daty.
4. Napisz program, który dla zadanej wartości całkowitej k z przedziału <1,25>
wyświetli wprowadzoną liczbę słownie.
5. Dla zadanego dnia i miesiąca wyświetlić porę roku.
6. Dana jest liczba naturalna n<=100 określająca wiek osoby. Opracować program, który
podaje ten wiek z dopiskiem „rok”, „lata”, „lat”.
7. Napisać program, który czyta z klawiatury znak i wyświetla napis: „cyfra”, „mała
litera”, „wielka litera”, „inny znak”.
8. Dana jest liczba k określająca odpowiedni miesiąc. Wyświetlić, który to kwartał.
9. Dana jest liczba n<=100. Wyświetlić ją w postaci rzymskiej.
Rozwiązanie 1
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Label3: TLabel;
Edit2: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
ocena :2..5;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
ocena:=StrToInt(Edit1.Text);
case ocena of
2: Edit2.Text:='niedostateczny';
3: Edit2.Text:='dostateczny';
4: Edit2.Text:='dobry';
5: Edit2.Text:='bardzo dobry';
else Edit2.Text:='błąd';
end;
end;
end.