Artykuł: C++ - Zmienne, warunki i pętle
Trochę matematyki
Jeżeli chcielibyśmy zrobić program, który potrafiłby dodawać, odejmować, mnożyć i dzielić liczby, należy pamiętać o poniższych znakach:
- + dodawanie,
- - odejmowanie,
- * mnożenie
- / dzielenie
Czym jest zmienna?
Zmienna - jest to wartość, która przechowuje nam dany tekst lub liczbę. Rodzaje zmiennych to np. string - wartość tekstowa i integer - wartość liczby całkowitej. Typów zmiennych liczbowych jest więcej i są to liczby w różnych zakresach. Poniżej przedstawiam listę typów zmiennych arytmetycznych (liczbowych) całkowitoliczbowych oraz ich zakresy:
- shortint: -128 ... 127
- smallint: -32768 ... 32767
- integer: -2147483648 ... 2147483647
- longint: -2147483648 ... 2147483647
- cardinal: 0 ... 4294967295
- int64: -2(63) ... 2(63)-1
- byte: 0 ... 255
- word: 0 ... 65535
- longword: 0 ... 4294967295
- Real48: 2.9 x 10(-39) ... 1.7 x 10 38)
- Single: 1.5 x 10(-45) ... 3.4 x 10(38)
- Double: 5.0 x 10(-324) ... 1.7 x 10(308)
- Extended: 3.6 x 10(-4951) ... 1.1 x 10(4932)
- Comp: -2(63)+1 ... 2(63)-1
Jak widać najlepiej jest korzystać ze zmiennej typu integer (to samo co longint).
Czas na praktykę
Otwieramy nasz projekt z poprzedniego artykułu (lub tworzymy nowy z przyciskiem kliknij na mnie o nazwie "przyciskKliknij") i deklarujemy dwie zmienne typu integer (ustawiamy pierwszą na 4, drugą na 5):
void __fastcall TForm1::przyciskKliknijClick(TObject *Sender)
{
int zmienna = 4, zmienna2 = 5;
}
ShowMessage(zmienna + zmienna2);
Close();
Forma aplikacji
Nie zaszkodzi napisać teraz trochę kodu. Edytujemy akcję OnClick dla przycisku "Kliknij na mnie":
void __fastcall TForm1::przyciskKliknijClick(TObject *Sender)
{
Wynik->Text = Liczba1->Text + Liczba2->Text;
}
void __fastcall TForm1::przyciskKliknijClick(TObject *Sender)
{
Wynik->Text = StrToInt(Liczba1->Text) + StrToInt(Liczba2->Text);
}
Procedura ta może wyglądać inaczej. Można wykorzystać zmienne w taki sposób:
void __fastcall TForm1::przyciskKliknijClick(TObject *Sender)
{
int PierwszaLiczba = StrToInt(Liczba1->Text), DrugaLiczba = StrToInt(Liczba2->Text);
Wynik->Text = PierwszaLiczba + DrugaLiczba;
}
void __fastcall TForm1::przyciskKliknijClick(TObject *Sender)
{
int PierwszaLiczba = StrToInt(Liczba1->Text),
DrugaLiczba = StrToInt(Liczba2->Text),
TrzeciaLiczba = PierwszaLiczba + DrugaLiczba,
CzwartaLiczba = TrzeciaLiczba - 10;
Wynik->Text = CzwartaLiczba;
}
void __fastcall TForm1::przyciskKliknijClick(TObject *Sender)
{
int PierwszaLiczba = StrToInt(Liczba1->Text),
DrugaLiczba = StrToInt(Liczba2->Text),
TrzeciaLiczba = PierwszaLiczba + DrugaLiczba - 10;
Wynik->Text = TrzeciaLiczba;
}
Przydatną rzeczą jest deklarowanie zmiennych globalnych. Dzięki temu dana zmienna globalna będzie dostępna w całym programie, a nie tylko w danej procedurze. Aby zadeklarować zmienną globalną otwieramy plik Unit1.h (gdzie Unit1 to nazwa naszego pliku z kodem) i odszukujemy linijki z kodem private: // User declarations, po czym dodajemy poniżej deklarację zmiennej:
int nazwazmiennej;
Ala Kalkulator
Nasz program potrafi narazie jedynie dodawać. Czas wzbogacić go o możliwość mnożenia, dzielenia i odejmowania. W tym celu najlepiej wykorzystać komponent ComboBox (lista rozwijalna). Wstawmy go nad polem wynik i nazwijmy "sprawdzacz". Wyedytujmy także w Inspektorze Obiektów wartość "Text" na "wybierz działanie" oraz dodajmy do wartości "Items" (która odpowiada za pozycje z liście) linie: "Dodawanie", "Odejmowanie", "Mnożenie", "Dzielenie".
Mniej więcej taki powinien być końcowy efekt
Wizualna sprawa załatwiona, trzeba zająć się w końcu kodem. Teraz najważniejsze będą warunki, czyli If warunek Then instukcje;. Warunek rozpoczynamy "If", po czym podajemy warunek, a jako "Then" posłuży nam znak "{". Teraz zademonstruję to na przykładzie naszego programu:
void __fastcall TForm1::przyciskKliknijClick(TObject *Sender)
{
int liczba = StrToInt(Liczba1->Text), liczba3 = StrToInt(Liczba2->Text);
if (sprawdzacz->Text == "Dodawanie") {
Wynik->Text = liczba + liczba3;
}
else if (sprawdzacz->Text == "Odejmowanie") {
Wynik->Text = liczba - liczba3;
}
else if (sprawdzacz->Text == "Mnożenie") {
Wynik->Text = liczba * liczba3;
}
else if (sprawdzacz->Text == "Dzielenie") {
Wynik->Text = liczba / liczba3;
}
else {
ShowMessage("Wybierz działanie z listy!");
}
}
- x > y - Przykład: if (x > y) - jeśli x jest większe od y (można też zapisać: if (x >> y))
- x < y - Przykład: if (x < y) - jeśli x jest mniejsze od y (można też zapisać: if (x << y))
- x >= y - Przykład: if (x >= y) - jeśli x jest większe lub równe y
- x <= y - Przykład: if (x <= y) - jeśli x jest mniejsze lub równe y
- x != y - Przykład: if (x != y) - jeśli x nie jest równe y
- warunek 1 && warunek 2 - Przykład: if (x != y && z == a) - jeśli [warunek 1] i jeśli [warunek2] (np. jeśli x nie jest równe y i z jest równe a)
Ależ to zapętlone
W programach często przydają się pętle. Na przykładzie listy pokażę jak je wykorzystać. Tworzymy nowy projekt (File -> News -> Application) i umieszczamy na formie komponent ListBox (lista). Zmieniamy nazwę obiektu na "lista" i dodajemy przycisk OK. Zróbmy tak, by po naciśnięciu OK na liście wyświetliły się 2 elementy o nazwach "pozycja1" i "pozycja2". W tym celu dodajemy poniższy kod:
void __fastcall TForm1::przyciskOKClick(TObject *Sender)
{
lista->Items->Add("pozycja1");
lista->Items->Add("pozycja2");
}
void __fastcall TForm1::przyciskOKClick(TObject *Sender)
{
int zmienna = 1;
while (zmienna <= 30) {
lista->Items->Add("pozycja" + IntToStr(zmienna));
zmienna++;
}
}

Po naciśnięciu OK
Drugim rodzajem pętli jest pętla "for", która jest łatwiejsza w zastosowaniu (przynajmniej łatwiej ją zrozumieć). Przykład takiej pętli:
int i;
for (i = 1; i <= 30; i++) {
/* tutaj procedura, która ma się powtarzać 30 razy */
}
W następnym artykule można przeczytać, jak już pisałem wcześniej, jak pokonywać błędy.
Dodano: 4 marca 2006, Wróć do "Pierwsza aplikacja " - Idź do "Pokonywanie błędów"



















