Strony

piątek, 5 grudnia 2014

Zabawy rozwijające pamięć w Delphi cz 4

Komentarz:

1. Wstęp


     Jak widzimy, komponenty użyte w tej zabawie pozostają te same, co w poprzedniej. Tutaj nic się nie zmienia. Zmianie ulegnie tylko część kodu obsługująca działanie programu. Przede wszystkim nie wprowadzamy procedury Edit1KeyPress ograniczającej rodzaj wpisywanych znaków w pole edycyjne przeznaczone do podania odpowiedzi. Musieliśmy usunąć te ograniczenie, aby można było wpisywać litery. Pozostałe rozwiązania pozostają niezmienione, aż do procedury obsługującej przycisk START.


2. Gdy naciśniesz przycisk START


     Jak już wspominaliśmy, program jako maszyna matematyczna nie zna liter, musimy je dopiero zadeklarować. Wykorzystujemy do tego celu dwa nowe dla nas elementy: stałą i tablicę. Do tej pory nauczyliśmy się stosować zmienne jako miejsce przechowywania danych, które często się zmieniają. Tutaj sytuację mamy inną: z góry wiemy, jakie litery będą używane. Będzie to zatem stały element.

     Konkretne litery, po wylosowaniu w dalszej części procedury zostaną przypisane do zmiennych Litera, w których to program będzie je przechowywał podobnie, jak robił to wcześniej z liczbami. Sekcja ta jest zatem bazą, z której program będzie czerpał litery. Pozostaje jeszcze kwestia ich implementacji. Moglibyśmy to zrobić analogicznie jak w przypadku zmiennych, czyli każdą z liter deklarując osobno, na przykład tak:

const
    Znak1:= 'a';
    Znak2:= 'b';
    Znak3:= 'c';
              (...)
    Znak23:= 'z';

     Powyższe rozwiązanie jak widzimy generuje znaczny przyrost kodu i stratę naszego czasu. O wiele szybciej i prościej cały ten zbiór możemy zawrzeć w tablicy stałych:

       const
Tablica: array [1..23] of String     =('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p',

        'r','s','t','u','w','y','z');               //tablica liter


     Zamiast znacznika var (od angielskiej nazwy Zmienna) używamy tu znacznika const, czyli stała. W dalszej kolejności wprowadzamy nazwę tablicy. Nazwa może być dowolna, pamiętajmy jednak, że musi być ona jednoczłonowa. My przyjęliśmy prostą nazwę, czyli „Tablica”. Teraz musimy zadeklarować z ilu, i z jakich elementów będzie się składała, oraz po znaku równości, w nawiasie wymieniamy je, każdy element umieszczając w apostrofach i oddzielając go od innych elementów za pomocą przecinka. W naszym przypadku mamy 23 elementy (litery) typu string.

     Chcąc skorzystać w procedurze z tak przygotowanego zbioru, używamy nazwy tablicy i numeru elementu, który chcemy użyć, przykładowo, chcąc użyć literę „c” odwołujemy się do niej w następujący sposób: Tablica[3]. Litera „c” jest trzecim elementem tego zbioru, więc i taką matematyczną nazwę będzie w tym przypadku posiadała.

     Aby móc używać liter z naszej tablicy w tworzonej przez nas procedurze, musimy zadeklarować sześć zmiennych typu string (Litera1...6) do ich przechowywania. Ilość zmiennych uzależniona jest od ilości liter, jakie chcemy powtarzać. Przyjęliśmy, że powtórzenie sześciu liter z pamięci jest wystarczająco trudnym zadaniem, stąd też tyle zmiennych przygotowujemy.

     W rozpoczynającej się procedurze następuje wylosowanie jednego z elementów tablicy liter i przypisanie go do zmiennej Litera: 
 
                              Litera1:= Tablica[Random(23)+1].

     Każda ze zmiennych Litera przechowuje jedną literę do powtórzenia, wylosowaną z tego samego zbioru, czyli Tablica. Istnieje więc możliwość, że wśród tych liter niektóre mogą się powtarzać.

WYNIK:= (Litera1+Litera2+Litera3+Litera4+Litera5+Litera6);

     Po przypisaniu liter do zmiennych, następuje połączenie ich w jeden ciąg znaków i zapisanie do zmiennej globalnej WYNIK. Działanie to wymaga od nas, aby i my podali odpowiedź, wpisując jedna litera za drugą, bez oddzielania ich za pomocą spacji. Warto zwrócić uwagę na fakt, że litery jako znaki tekstowe nie wymagają od zmiennej WYNIK żadnej konwersji.

     Dalsza część procedury, jak i dalszy kod pozostają bez zmian w stosunku do pierwowzoru, więc pomijamy ją w tym komentarzu. Zwracamy tylko uwagę, aby zmienną WYNIK nie konwertować przy sprawdzaniu odpowiedzi, gdyż przecież jest ona w tym projekcie zmienną typu string, a więc tego samego typu, co zmienna Odp.

     W trzecim przykładzie zabawy z tej grupy, napiszemy program łączący obie wcześniejsze zabawy, czyli będzie losował dla nas zarówno litery, jak i liczby.


                   < Wstecz    1...4/5    Dalej >

Artykuł pochodzi z mojej książki pt. "Delphi w przykładach dla początkujących". Zapraszam na Stronę książki.

poradnik programowania Delphi

Brak komentarzy:

Prześlij komentarz