Turbo Pascal. Programowanie

Turbo Pascal.
Programowanie

Autor: Tomasz M. Sadowski
Format: B5, stron: 136

Copyright © 1996 by Wydawnictwo Helion
wersja spakowana

helion.pl

Struktura programu

Wiemy już, w jakiej formie będziemy przechowywać informację; kolejnym krokiem jest ustalenie sposobu jej przetwarzania odpowiedniego do używanych w programie struktur danych. Przede wszystkim musimy zatem ustalić, jakie operacje na danych program powinien wykonywać, a następnie zaprojektować odpowiadające im procedury lub funkcje (jako że programujemy porządnie, czyli strukturalnie - wykorzystując procedury i funkcje). Po skonsultowaniu się z listą życzeń (zobacz strona 75) stwierdzamy, że nasz program powinien umożliwiać:

Powyższa lista może zostać bezpośrednio przetłumaczona na zestaw podstawowych procedur tworzących program (rzecz jasna, trzeba będzie jeszcze dorzucić kilka procedur pomocniczych, no i oczywiście część operacyjną). Z formalnego punktu widzenia wymagany jest jeszcze schemat blokowy lub przynajmniej słowny zapis algorytmu, aby jednak uniknąć przerostu formy nad treścią, ograniczymy się do ogólnego schematu działania programu:

  1. wyświetl menu dostępnych operacji
  2. w zależności od wybranej opcji:
    wprowadź nowy rekord (dodanie książki do katalogu), lub
    zmień zawartość pola Wypozyczajacy (wypożyczenie książki), lub
    wyszukaj rekord zawierający dany tytuł (wyszukiwanie książki), lub
    wyświetl wszystkie rekordy uporządkowane według tytułów lub nazwisk autorów, lub
    zakończ pracę programu
  3. wróć do punktu (1)

Jak widać, część operacyjna sprowadza się w zasadzie do wywoływania odpowiednich procedur stosownie do wybranej przez użytkownika funkcji (doskonałe miejsce dla instrukcji case). Ponieważ przedstawianie schematów poszczególnych procedur zajęłoby zbyt dużo miejsca, poprzestaniemy na zaprezentowaniu ich zapisu w Pascalu. Metoda, którą wykorzystamy do tworzenia naszego programu, jest typowym przykładem projektowania wstępującego: najpierw utworzymy zestaw odpowiednich procedur (realizujących poszczególne zadania podrzędne), a następnie powiążemy je w całość, czyli działający program.

Zanim jednak do tego dojdzie, zastanówmy się przez chwilę nad przekazywaniem danych do i z odpowiednich procedur i funkcji. W myśl dobrej praktyki nie będziemy do tego celu wykorzystywać efektów ubocznych, lecz stosownie zaprojektowane listy parametrów. Rozważmy jako przykład procedurę wprowadzania zawartości rekordu z klawiatury. Powinna ona przyjmować jako argument "pusty" rekord i zwracać tenże rekord wypełniony wpisanymi przez użytkownika danymi. Musimy więc wykorzystać mechanizm przekazywania parametru przez nazwę. Ale jak zadeklarować sam parametr? Nagłówek w postaci:

  procedure Wprowadz(var r : record
    Tytul : string[30];
    Autor : string[25];
    Wypozyczajacy : string[25];
    Licznik : word);

wygląda co najmniej podejrzanie. Istotnie: próba skompilowania podobnej konstrukcji skończy się wyświetleniem komunikatu Type identifier expected (spodziewany identyfikator typu).

Rozwiązaniem tego problemu zajmiemy się w następnym rozdziale. Znajdzie się w nim również kilka słów o tak zwanych stałych symbolicznych.

Poprzedni | Spis treści | Następny | Wersja spakowana |