image Strona poczÂątkowa       image Ecma 262       image balladyna_2       image chili600       image Zenczak 2       image Hobbit       

Podstrony

[ Pobierz całość w formacie PDF ]

własność ReadOnlR (z ang. tylko do odczytu) zmieniamy na true. %7łeby wyraznie za-
znaczyć, że nie jest to pole, którego wartość będzie dostępna do edycji, proponuję
zmienić kolor jego tła na identyczny z kolorem formy (rysunek 3.1). W tym celu
z rozwijanej listy w inspektorze obiektów przy własności Color wybieramy pozycję
clBtnFace. Tę samą domyślną wartość ma własność Color formy.
2
O tym, jak wykonać te czynności, dowiedzieliśmy się w pierwszym rozdziale.
48 Część I f& Zintegrowane środowisko programistyczne i język programowania C++
Rysunek 3.1.
Interfejs aplikacji
znajdujÄ…cej
rozwiązania równania
kwadratowego
Obok tych komponentów kładziemy jeszcze przycisk TButton. Za pomocą inspektora
własności zmieniamy jego własność Caption np. na Oblicz (rysunek 3.1). Następnie
klikamy go dwukrotnie, aby utworzyć domyślną metodę zdarzeniową. Przeniesieni zo-
staniemy do edytora, gdzie zobaczymy utworzoną metodę  przez najbliższy czas bę-
dzie to nasz cały ogródek, w którym będziemy uczyć się programowania w C++.
Deklarowanie zmiennych
W C++ nie ma wydzielonego miejsca, w którym należy deklarować zmienne. Ogromne
znaczenie ma jednak to, czy zadeklarujemy jÄ… wewnÄ…trz, czy na zewnÄ…trz metody
Button1Click. W drugim przypadku będziemy mieli do czynienia ze zmienną globalną
istniejącą przez cały czas działania programu. W pierwszym  ze zmienną lokalną
tworzonÄ… tylko na czas wykonywania metody Button1Click. RozwiÄ…zanie drugie ogra-
nicza ilość wykorzystywanej pamięci. Jest również znacznie bezpieczniejsze, bo ła-
twiej kontrolować wartość zmiennej, która nie może być zmieniana nigdzie indziej jak
tylko w metodzie Button1Click.
Musimy obliczyć wartość delty. Zadeklarujmy więc w metodzie Button1Click zmienną
lokalnÄ… Delta typu double. W tym celu w metodzie wpisujemy typ double, a po spacji
nazwę zmiennej Delta (listing 3.1). Typ double potrafi przechowywać liczby rzeczy-
wiste. Na ich przechowywanie posiada 64-bity (8 bajtów), co daje mu możliwość
przechowywania liczb o wartoÅ›ci ponad ±10300.
Listing 3.1. Deklaracja zmiennej Delta typu Double
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double Delta;
}
Jeżeli więcej zmiennych ma ten sam typ, to możemy je zadeklarować razem. Dodajmy
jeszcze trzy zmienne o nazwach a, b i c typu double (listing 3.2). Zmienne te będą
przechowywać wartości współczynników równania kwadratowego.
Listing 3.2. W metodzie zadeklarowane sÄ… teraz cztery zmienne lokalne
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double a,b,c,Delta;
}
Rozdział 3. f& Typy zmiennych i instrukcje sterujące 49
Podkreślmy, że są to zmienne lokalne metody Button1Click. To znaczy, że powstają
w momencie wywołania tej metody, a usuwane są z pamięci w momencie jej zakoń-
czenia. Jak wspomniałem, można również tworzyć zmienne globalne, tzn. zmienne,
których życie trwa przez cały okres działania programu. Przykładem takiej zmiennej
jest Form1 zadeklarowane w interfejsie modułu Unit1. Ogólnie rzecz biorąc, należy
jednak ograniczać korzystanie ze zmiennych globalnych, a wszystkie niezbędne dane
przesyłać przez argumenty funkcji i metod. %7łeby dać Czytelnikowi dobry przykład,
w tym rozdziale i w całej książce w ogóle nie będziemy używać zmiennych globalnych.
Inicjacja i przypisanie wartości zmiennej
Zmienne zadeklarowane w listingu 3.1 i 3.2 nie sÄ… automatycznie inicjowane! To oznacza,
że rezerwowana jest pamięć, w której przechowywana będzie zmienna, ale jej zawartość
nie jest czyszczona. W konsekwencji wartość tak zadeklarowanej zmiennej jest przy-
padkowa. Każda deklarowana zmienna powinna być inicjowana, tj. powinniśmy przypi-
sać jej wartość w momencie utworzenia (takie sformułowanie dotyczy zmiennych lokal-
nych, do których ograniczamy się w tej książce). Należy to zrobić w następujący sposób:
double a=1;
Zmienna, która została zainicjowana, może oczywiście zmieniać wartość w trakcie
działania programu. W takiej sytuacji mówimy o operacji przypisania, np.
double a=1;
a=2;
W przypadku typów prostych, jak int, obie te czynności można utożsamiać. Różnice
pojawiają się w przypadku klas, ale to temat wykraczający poza zakres tej książki3.
Dygresja na temat typów rzeczywistych
w C++Builderze
C++Builder nie ma zbyt wielu typów rzeczywistych, ale są one w zupełności wystar-
czające. Wszystkie (raptem trzy) wymienione zostały w tabeli 3.1. [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • kskarol.keep.pl