© W. Treichel, Podstawy Informatyki, sem. 2, Wydział Inżynierii Środowiska
Strona 1 z 4
B4. Instrukcje wyboru
Select Case ... End Select
Z a d B 4 . O k r e ś l e n i e p o r y d n i a . Napisać program, który na podstawie odczytanej
informacji o czasie systemowym komputera, stwierdzi jaka jest to pora dnia i wypisze
odpowiedni komunikat.
Wskazówki do rozwiązania
1. Tworzenie formularza
1.1. Utwórz nowy projekt typu Windows Form Application. Zmień nazwę tworzonego
projektu na Czas. W panelu Solution Explorer zmień nazwę utworzonego formularza
z Form1 na Czas oraz w panelu właściwości zmień napis (Text) na pasku formularza
na Pora dnia.
1.2. Umieść na formularzu napis Określenie pory dnia na podstawie czasu systemowego
w postaci etykiety (Label). Zmień właściwość AutoSize na False. Zadbaj o
odpowiednie położenie (wycentrowanie) oraz czcionkę (Times New Roman, 14,
Pogrubiona)
1.3. Umieść na formularzu ramkę, kontener grupy (GroupBox). Nazwij ją (Name)
RamkaCzasu oraz wyczyść jej tytuł (Text). W miejscu tytułu program będzie
wpisywał informację o aktualnym czasie.
1.4. Umieść wewnątrz ramki etykietę (Label) i nazwij ją lblPoraDnia. Możesz
wycentrować tekst (nadać właściwości TextAlign wartość MiddleCenter), zwiększyć
i pogrubić czcionkę do Times New Roman, 12, Pogrubiona. Wyczyść teraz zawartość
tego pola (wyczyść właściwość Text). W miejscu tytułu program będzie wpisywał
informację o aktualnej porze dnia.
1.5. Umieść na formularzu przycisk akcji (Button), nadaj mu nazwę (Name) btnDane oraz
zmień napis na nim na Nowe Dane.
1.6. Na koniec, umieść na formularzu jeszcze jeden przycisk akcji (Button), nadaj mu
nazwę btnKoniec oraz zmień napis na nim na Koniec.
1.7. Zapisz na dysku utworzony projekt nadając mu nazwę Czas. Wybierz odpowiedni
katalog roboczy i upewnij się, że zaznaczona jest opcja „Utwórz nowy katalog dla
rozwiązania”.
2. Pisanie kodu programu
2.1. Dwukrotne kliknięcie przycisku btnKoniec przeniesie cię do okna kodu, do procedury
obsługi zdarzenia kliknięcia tego przycisku, czyli do procedury
Private
Sub
btnKoniec_Click(...)
.
Wpisz wewnątrz tej procedury polecenie
Close()
powodujące zakończenie programu.
© W. Treichel, Podstawy Informatyki, sem. 2, Wydział Inżynierii Środowiska
Strona 2 z 4
2.2. Analizę aktualnego czasu przeprowadzimy w osobnej procedurze, którą nazwiemy
PoraDnia
. Procedura ta powinna znaleźć się w osobnym module, który może
zawierać również inne nasze funkcje i procedury. Z menu
Project
wybierzmy opcję
AddModule
i nazwijmy nowo tworzony moduł MojeProcedury. Zacznijmy pisać
procedurę
PoraDnia
:
Public
Sub
PoraDnia()
Zauważ, że Visual Basic automatycznie dołoży zakończenie tej procedury, czyli
End
Sub
2.3. Przyjmiemy założenie, że w całym projekcie będzie istniała zmienna globalna t typu
Date
, która będzie przechowywała informację o aktualnym czasie, który należy
przeanalizować. Aby zmienna ta była widziana we wszystkich procedurach modułu
musisz zadeklarować ją jako zmienną publiczną na samym początku modułu (w
sekcji Declarations) jako:
Public
t
As
Date
2.4. W procedurze
PoraDnia
zbadamy jaką wartość ma zmienna t i w zależności od tej
wartości wypiszemy odpowiedni komunikat. W tym celu wykorzystamy instrukcję
wyboru
Select Case
. Fragment kodu może wyglądać następująco (uzupełnij miejsca
wykropkowane):
Select
Case
t
Case
Is
< #7:00:00 AM#
Czas.lblPoraDnia.Text =
"Bardzo wcze
ś
nie rano"
Case
#7:00:00 AM#
To
#11:59:59 AM#
Czas.lblPoraDnia.Text =
"Przed południem"
Case
#12:00:00 PM#
Czas.lblPoraDnia.Text =
"Dokładnie południe"
...
Case
Else
...
End
Select
Zwróć uwagę, że odwołując się do obiektów umieszczonych na formularzu Czas przed
nazwą obiektu (np. nazwą etykiety lblPoraDnia) trzeba podać nazwę tego formularza.
Zwróć również uwagę na cztery różne typy rozpatrywanych przypadków (Case). Jeśli
w jakimś
Case
chcemy sprawdzać, czy obliczona wartość jest mniejsza lub większa od
zadanej liczby to można używać odpowiednich operatorów relacji oraz słowa
kluczowego
Is
.
Jeśli sprawdzana wartość ma się znajdować w pewnym zakresie od dolnej do górnej
wartości to używamy słowa kluczowego
To
. Można też sprawdzać, czy zmienna
sterująca instrukcją
Select Case
przyjmuje konkretną wartość, wtedy wystarczy
podać tą wartość. I w końcu, jeśli żaden z przypadków nie wystąpił, to można
oprogramować przypadek "w przeciwnym razie", czyli
Case Else
.
Nie zapomnij o zakończeniu instrukcji
Select Case
zdaniem
End Select
.
2.5. Przed instrukcją
Select Case
wypiszemy jeszcze aktualny czas w tytule ramki
RamkaCzasu, dbając o konwersję zmiennej
t
na tekst za pomocą funkcji
CStr(),
czyli:
© W. Treichel, Podstawy Informatyki, sem. 2, Wydział Inżynierii Środowiska
Strona 3 z 4
Czas.RamkaCzasu.Text =
"Jest godz. "
&
CStr
(t)
2.6.Wróć ponownie do okna projektowania formularza. Odczytanie aktualnego czasu
systemowego oraz wywołanie napisanej procedury
PoraDnia
umieścimy w
procedurze, która uruchamia się w momencie rozpoczynania pracy programu, czyli w
momencie ładowania głównego formularza do pamięci. Klikając dwukrotnie na
formularz Czas przeniesiemy się do okna kodu do obsługi tego zdarzenia, czyli
Private
Sub
Czas_Load(...)
.....
End
Sub
2.7. Wewnątrz tej procedury nadamy zmiennej globalnej t wartość aktualnego czasu
systemowego podanego przez funkcję
TimeOfDay()
oraz wywołamy naszą procedurę
PoraDnia
, zatem:
t = TimeOfDay()
PoraDnia()
Możesz przetestować teraz działanie programu (nie zapomnij zapisać wprowadzonych
zmian).
2.8. Aby umożliwić sprawdzenie działania programu dla innych danych, nie tylko dla
czasu systemowego, oprogramujmy przycisk NoweDane, umożliwiając podanie nowej
wartości dla zmiennej t za pomocą formularza dialogowego InputBox. Procedura
obsługi zdarzenia kliknięcia przycisku NoweDane może zawierać:
- wywołanie formularza InputBox
NowyCzas = InputBox("Podaj godzin
ę
w formacie gg:mm")
- nadanie zmiennej t odpowiednio skonwertowanej wartości zmiennej NowyCzas
t = CDate(NowyCzas)
- oraz wywołanie procedury
PoraDnia()
.
Należy też zadeklarować na początku tworzonej właśnie procedury zmienną
NowyCzas
jako
String
,
Pamiętamy, że zmienna
t
jest zmienną globalną typu
Date
, czyli
Dim
NowyCzas
As
String
2.9. Zapisz swój projekt, a następnie uruchom go i przetestuj jego działanie na kilku
danych.
© W. Treichel, Podstawy Informatyki, sem. 2, Wydział Inżynierii Środowiska
Strona 4 z 4
Poniżej, dla sprawdzenia, przytoczono kod programu dla tego zadania.
Public
Class
Czas
Private
Sub
btnKoniec_Click(
ByVal
sender
As
System.Object,
ByVal
e
As
System.EventArgs)
Handles
btnKoniec.Click
Close()
End
Sub
Private
Sub
btnNowe_Click(
ByVal
sender
As
System.Object,
ByVal
e
As
System.EventArgs)
Handles
btnNowe.Click
Dim
NowyCzas
As
String
NowyCzas = InputBox(
"Podaj godzin
ę
w formacie gg:mm"
)
t =
CDate
(NowyCzas)
PoraDnia()
End
Sub
Private
Sub
Czas_Load(
ByVal
sender
As
System.Object,
ByVal
e
As
System.EventArgs)
Handles
MyBase
.Load
t = TimeOfDay()
PoraDnia()
End
Sub
End
Class
Module
MojeProcedury
Public
t
As
Date
Public
Sub
PoraDnia()
Czas.RamkaCzasu.Text =
"Jest godz. "
&
CStr
(t)
Select
Case
t
Case
Is
< #7:00:00 AM#
Czas.lblPoraDnia.Text =
"Bardzo wcze
ś
nie rano"
Case
#7:00:00 AM#
To
#11:59:59 AM#
Czas.lblPoraDnia.Text =
"Przed południem"
Case
#12:00:00 PM#
Czas.lblPoraDnia.Text =
"Dokładnie południe"
Case
#12:00:01 PM#
To
#6:00:00 PM#
Czas.lblPoraDnia.Text =
"Po południu"
Case
#6:00:00 PM#
To
#10:00:00 PM#
Czas.lblPoraDnia.Text =
"Wieczór"
Case
Else
Czas.lblPoraDnia.Text =
"Noc"
End
Select
End
Sub
End
Module