Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00077 009774 10452218 na godz. na dobę w sumie
COBOL - książka
COBOL - książka
Autor: Liczba stron: 672
Wydawca: Helion Język publikacji: polski
ISBN: 83-7197-534-1 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie >> inne - programowanie
Porównaj ceny (książka, ebook, audiobook).

Książka omawia programowanie w języku COBOL. Język ten jest obecnie rzadko używany, ale zajmuje on poczesne miejsce w historii informatyki. Pomimo, iż jest to dzisiaj język trochę egzotyczny dla 'przeciętnego' informatyka, to jednak warto się z nim zapoznać, ponieważ do dnia dzisiejszego znajduje on zastosowania w specyficznych dziedzinach np. bankowości (dotyczy to starszych systemów) czy też w kolejnictwie (przynajmniej w Polsce).

Książka jest przeznaczona dla osób, które chcą poszerzyć już posiadaną wiedzę o COBOL- u, bądź też, chcą go poznać od podstaw. Została opracowana w taki sposób, aby informacje w niej zawarte można było wykorzystać na większości platform i dla zdecydowanej większości kompilatorów języka COBOL. Jak można się spodziewać, pomiędzy różnymi platformami i wersjami kompilatorów mogą występować dość znaczące różnice w sposobie chociażby metod komunikacji z użytkownikiem.

Wszystkie zaprezentowane przykłady powinny bez żadnych trudności działać z takimi wersjami kompilatorów jak: Micro Focus COBOL, ACUCOBOL, Fuijtsu COBOL97 oraz IBM Visual Age COBOL dla platform UNIX i DOS, a także dla wersji VAX COBOL na platformie VAX VMS. Bez specjalnych kłopotów nasze programy powinny również działać z kompilatorami IBM COBOL na platformie AIX, oraz kompilatorami RM COBOL oraz Realia COBOL.

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

IDZ DO IDZ DO PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ SPIS TRE(cid:140)CI SPIS TRE(cid:140)CI COBOL KATALOG KSI¥flEK KATALOG KSI¥flEK KATALOG ONLINE KATALOG ONLINE ZAM(cid:211)W DRUKOWANY KATALOG ZAM(cid:211)W DRUKOWANY KATALOG Autor: Mo Budlong T‡umaczenie: Grzegorz Kowalczyk Tytu‡ orygina‡u: Teach Yourself COBOL in 21 Days ISBN:83-7197-534-1 Liczba stron: 658 No(cid:156)nik: CD TW(cid:211)J KOSZYK TW(cid:211)J KOSZYK DODAJ DO KOSZYKA DODAJ DO KOSZYKA CENNIK I INFORMACJE CENNIK I INFORMACJE ZAM(cid:211)W INFORMACJE ZAM(cid:211)W INFORMACJE O NOWO(cid:140)CIACH O NOWO(cid:140)CIACH ZAM(cid:211)W CENNIK ZAM(cid:211)W CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥flEK ONLINE FRAGMENTY KSI¥flEK ONLINE Ksi„¿ka omawia programowanie w jŒzyku COBOL. JŒzyk ten jest obecnie rzadko u¿ywany, ale zajmuje on poczesne miejsce w historii informatyki. Pomimo i¿ jest to dzisiaj jŒzyk trochŒ egzotyczny dla (cid:132)przeciŒtnego(cid:148) informatyka, to jednak warto siŒ z(cid:160) nim zapozna(cid:230), poniewa¿ do dnia dzisiejszego znajduje on zastosowania w(cid:160) specyficznych dziedzinach np. bankowo(cid:156)ci (dotyczy to starszych system(cid:243)w) czy(cid:160) te¿(cid:160) w kolejnictwie (przynajmniej w Polsce). Ksi„¿ka jest przeznaczona dla os(cid:243)b, kt(cid:243)re chc„ poszerzy(cid:230) ju¿ posiadan„ wiedzŒ o(cid:160) COBOL- u, b„d(cid:159) te¿ chc„ go pozna(cid:230) od podstaw. Ksi„¿ka zosta‡a opracowana w taki spos(cid:243)b, aby informacje w niej zawarte mo¿na by‡o wykorzysta(cid:230) na wiŒkszo(cid:156)ci platform i dla zdecydowanej wiŒkszo(cid:156)ci kompilator(cid:243)w jŒzyka COBOL. Jak mo¿na siŒ spodziewa(cid:230), pomiŒdzy r(cid:243)¿nymi platformami i wersjami kompilator(cid:243)w mog„ wystŒpowa(cid:230) do(cid:156)(cid:230) znacz„ce r(cid:243)¿nice w sposobie chocia¿by metod komunikacji z u¿ytkownikiem. Wszystkie zaprezentowaneprzyk‡ady powinny bez ¿adnych trudno(cid:156)ci dzia‡a(cid:230) z takimi wersjami kompilator(cid:243)w jak Micro Focus COBOL, ACUCOBOL, Fuijtsu COBOL97 oraz IBM Visual Age COBOL dla platform UNIX i DOS a tak¿e dla wersji VAX COBOL na platformie VAX VMS. Bez specjalnych k‡opot(cid:243)w nasze programy powinny r(cid:243)wnie¿ dzia‡a(cid:230) z(cid:160) kompilatorami IBM COBOL na platformie AIX, oraz kompilatorami RM COBOL oraz(cid:160) Realia COBOL. Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl Wstęp ...................................................z............................................9 Rozdział 1. Pierwsze programy w języku COBOL .................................................13 Czym jest komputer?...................................................k...................................................k...13 Czym jest program? ...................................................k...................................................k....16 Czym jest język programowania? ...................................................k..................................18 Czym jest COBOL? ...................................................k...................................................k....19 „Hello World” — pierwszy program w języku COBOL ..................................................20 Z jakich części składa się program w języku COBOL?...................................................k.25 Czym jest szablon programu? ...................................................k........................................31 Rozdział 2. Zastosowanie zmiennych i stałych...................................................z.33 Czym jest zmienna ustalona (stała)? ...................................................k..............................33 Czym jest zmienna? ...................................................k...................................................k....36 Definiowanie zmiennych numerycznych ...................................................k.......................36 Konwencje nadawania nazw zmiennym ...................................................k........................40 Zastosowanie polecenia DISPLAY...................................................k................................41 Definiowanie i zastosowanie zmiennych ...................................................k.......................42 Definiowanie obrazów zmiennych...................................................k.................................44 Zastosowanie polecenia MOVE...................................................k.....................................45 Formatowanie wyników działania programów ...................................................k..............48 Poprawa czytelności kodu źródłowego ...................................................k..........................50 Znaki kontynuacji...................................................k...................................................k........52 Rozdział 3. COBOL jako język strukturalny — podstawy ......................................53 Nowy szablon programu ...................................................k................................................53 Kolejność wykonywania programu...................................................k................................54 Definiowanie nazw bloków programu ...................................................k...........................55 Polecenie STOP RUN ...................................................k...................................................k.57 Polecenie PERFORM...................................................k...................................................k..59 Kiedy można korzystać z polecenia PERFORM?...................................................k..........63 Rozdział 4. Podejmowanie decyzji ...................................................z...................73 Polecenie IF...................................................k...................................................k.................73 Zastosowanie polecenia IF do sterowania sekwencjami poleceń .....................................77 Jakie warunki można testować przy użyciu polecenia IF .................................................79 Sprawdzanie wielu warunków jednocześnie...................................................k..................84 Zastosowanie polecenia IF-ELSE ...................................................k..................................87 4 Cobol Rozdział 5. Zastosowanie polece* PERFORM, GO TO oraz IF do sterowania przebiegiem działania programu ..................................93 Zastosowanie polecenia GO TO ...................................................k....................................93 Zastosowanie wielokrotnego wywołania polecenia PERFORM ......................................98 Czym jest pętla przetwarzania?...................................................k....................................105 Zastosowanie polecenia PERFORM do sterowania pętlą...............................................107 Zastosowanie polecenia PERFORM VARYING UNTIL ..............................................110 Rozwiązanie problemu Press ENTER… ...................................................k...............112 Zastosowanie polecenia IF END-IF...................................................k.............................115 Zastosowanie polecenia PERFORM END-PERFORM..................................................118 Rozdział 6. Zastosowanie operatorów w języku COBOL .......................................119 Inicjalizacja zmiennych...................................................k................................................119 Spacje dopełniające i zera wiodące ...................................................k..............................123 Obcinanie wartości ...................................................k...................................................k....124 Zastosowanie polecenia MOVE do nadawania wartości wielu zmiennym jednocześnie......127 Dane dziesiętne ...................................................k...................................................k.........128 Reprezentacja liczb dodatnich i ujemnych...................................................k...................129 Wyświetlanie liczb dziesiętnych oraz liczb ze znakiem .................................................130 Usuwanie zer wiodących...................................................k..............................................131 Zastosowanie operatorów numerycznych w języku COBOL .........................................135 Rozdział 7. Podstawy projektowania programów ...............................................141 Do czego są potrzebne programy? ...................................................k...............................141 Tworzenie opisu problemu...................................................k...........................................142 Rozkładanie złożonego problemu na zadania składowe .................................................143 Identyfikacja pętli przetwarzania ...................................................k.................................144 Wyodrębnianie głównej pętli przetwarzania...................................................k................152 Podsumowanie etapów tworzenia programu...................................................k................154 Program obliczający procent składany...................................................k.........................155 Rozdział 8. Struktury danych...................................................z.........................163 Czym są struktury danych? ...................................................k..........................................163 Jak używać zmiennych strukturalnych? ...................................................k.......................165 Zastosowanie słowa kluczowego FILLER...................................................k...................168 Obliczanie rozmiaru struktur danych ...................................................k...........................169 Rozmieszczenie struktur danych w pamięci ...................................................k................170 Zagnieżdżone zmienne strukturalne...................................................k.............................172 Do czego nie należy używać struktur danych? ...................................................k............177 Czym jest poziom 77? ...................................................k..................................................180 Czym jest poziom 88? ...................................................k..................................................181 Rozdział 9. Operacje wejlcia-wyjlcia na plikach ...............................................187 Czym jest plik?...................................................k...................................................k..........187 Czym jest rekord?...................................................k...................................................k......188 Czym jest pole? ...................................................k...................................................k.........189 Tworzenie plików w języku COBOL...................................................k...........................190 Opis pliku logicznego w języku COBOL ...................................................k....................191 Opis pliku fizycznego w języku COBOL ...................................................k....................192 Otwieranie i zamykanie plików...................................................k....................................194 Dodawanie rekordów do pliku ...................................................k.....................................195 Odczytywanie rekordów z pliku ...................................................k..................................198 Tworzenie pętli przetwarzania plików ...................................................k.........................202 Spis trelci 5 Rozdział 10. Drukowanie...................................................z.................................205 Podstawy drukowania ...................................................k..................................................205 Sterowanie drukarką...................................................k...................................................k..208 Drukujemy — pierwszy program...................................................k.................................209 Tworzenie prostych raportów...................................................k.......................................213 Tworzenie testowego zestawu danych ...................................................k.........................216 Planowanie rozmieszczenia elementów raportu ...................................................k..........220 Rozdział 11. Operacje wejlcia-wyjlcia na plikach indeksowanych .........................227 Czym jest plik indeksowany?...................................................k.......................................227 Tworzenie plików indeksowanych w języku COBOL...................................................k.230 Dodawanie rekordów do pliku indeksowanego ...................................................k...........234 Obsługa błędów związanych z operacjami na plikach...................................................k.237 Odczytywanie rekordów z plików indeksowanych...................................................k......244 Formatowanie wyświetlania długich rekordów ...................................................k...........246 Rozdział 12. Pliki indeksowane dla zaawansowanych..........................................253 Polecenie COPY...................................................k...................................................k........253 Zastosowanie polecenia COPY w praktyce ...................................................k.................256 Raporty kompilacji...................................................k...................................................k....258 Modyfikacja rekordów w plikach indeksowanych...................................................k.......263 Rozdział 13. Usuwanie rekordów i inne operacje na plikach indeksowanych ........273 Nowy szablon programów w języku COBOL ...................................................k.............273 Usuwanie rekordów z plików indeksowanych...................................................k.............274 Wyświetlanie rekordów z plików indeksowanych...................................................k.......279 Ulepszona metoda dodawania rekordów do pliku ...................................................k.......283 Drukowanie rekordów w plikach indeksowanych ...................................................k.......286 Rozdział 14. Pliki indeksowane — podsumowanie ..............................................291 Tworzenie plików indeksowanych...................................................k...............................291 Otwieranie i zamykanie plików indeksowanych...................................................k..........293 Odczytywanie rekordów z plików indeksowanych...................................................k......293 Dodawanie rekordów do plików indeksowanych ...................................................k........294 Wyszukiwanie rekordów w plikach indeksowanych ...................................................k...294 Modyfikacja rekordów w plikach indeksowanych...................................................k.......295 Usuwanie rekordów z plików indeksowanych...................................................k.............295 Tworzenie uniwersalnego programu narzędziowego...................................................k...296 Rozdział 15. Zagadnienia integralnolci danych...................................................z309 Czym jest integralność danych? ...................................................k...................................309 Czym jest kontrola poprawności danych?...................................................k....................310 Jak podjąć decyzję o zastosowaniu kontroli poprawności danych?................................312 Kiedy należy dokonywać kontroli poprawności danych?...............................................313 Wymuszenie wprowadzania danych ...................................................k............................314 Standardowa metoda wprowadzania danych ...................................................k...............322 Modyfikacja rekordów ...................................................k.................................................325 Drukowanie pliku danych ...................................................k............................................327 Konwersja z małych liter na wielkie ...................................................k............................330 Rozdział 16. Wyszukiwanie rekordów i zastosowanie tablic.................................335 Zastosowanie wyszukiwania rekordów do weryfikacji wprowadzanych danych...........335 Wyszukiwanie niepoprawnych informacji w plikach danych.........................................341 Poprawianie błędnych informacji zapisanych w plikach danych....................................346 Czym jest tablica? ...................................................k...................................................k.....350 Wyszukiwanie danych w tablicach ...................................................k..............................359 Zastosowanie tablic w programie...................................................k.................................359 6 Cobol Rozdział 17. Klucze dodatkowe...................................................z.......................367 Czym jest klucz dodatkowy?...................................................k........................................367 Tworzenie plików z kluczami dodatkowymi ...................................................k...............370 Struktura pliku danych ...................................................k.................................................370 Tworzenie nowych plików na bazie plików istniejących................................................374 Praca z plikami posiadającymi klucze dodatkowe ...................................................k.......378 Czym jest ścieżka klucza?...................................................k............................................379 Zastosowanie ścieżki klucza ...................................................k........................................380 Wyszukiwanie rekordów przy użyciu kluczy dodatkowych...........................................389 Ułatwianie życia użytkownikowi ...................................................k.................................394 Rozdział 18. Wywoływanie innych programów...................................................z..403 Wywoływanie jednego programu z wnętrza drugiego...................................................k.403 Zastosowanie polecenia STOP RUN ...................................................k...........................404 Wywoływanie innych programów ...................................................k...............................407 Tworzenie dużych systemów menu opartych na wywoływaniu zewnętrznych programów. 416 Programy obsługi menu ...................................................k...............................................419 Rozdział 19. Problemy zwizane z wprowadzaniem danych złoronych...................425 Czym jest plik kontrolny? ...................................................k............................................426 Tworzenie plików kontrolnych ...................................................k....................................428 Zarządzanie plikami kontrolnymi ...................................................k................................429 Zarządzanie jednym plikiem danych przez kilka programów narzędziowych ...............434 Projektowanie systemu przetwarzania płatności...................................................k..........435 Tworzenie pliku dowodów kasowych...................................................k..........................438 Sposoby zapisu dat ...................................................k...................................................k....438 Sposoby wyświetlania dat ...................................................k............................................440 Sposoby wprowadzania dat...................................................k..........................................441 Redefiniowanie zmiennych ...................................................k..........................................443 Kontrola poprawności wprowadzania dat ...................................................k....................447 Uniwersalne metody przetwarzania dat ...................................................k.......................454 Rozdział 20. Złorone zagadnienia wprowadzania danych .....................................465 Zarządzanie plikiem dowodów kasowych ...................................................k...................465 Wybieranie dowodów kasowych ...................................................k.................................469 Implementacja pełnego cyklu płatności dowodów kasowych ........................................475 Rozdział 21. Selekcja i sortowanie danych oraz tworzenie raportów ....................481 Kontynuacja prac nad systemem przetwarzania płatności ..............................................481 Wybieranie rekordów ...................................................k...................................................k482 Sortowanie zawartości pliku ...................................................k........................................490 Drukowanie podsumowań...................................................k............................................504 Programowanie punktów kontrolnych ...................................................k.........................505 Tworzenie raportu zapotrzebowania na gotówkę...................................................k.........513 System przetwarzania płatności — etap końcowy ...................................................k.......520 Rozdział 22. Punkty kontrolne w raportach...................................................z......527 Zmienne używane w punktach kontrolnych...................................................k.................528 Mechanika punktów kontrolnych...................................................k.................................529 Poziomy punktów kontrolnych ...................................................k....................................532 Implementacja punktów przetwarzania...................................................k........................533 Zastosowanie punktów kontrolnych do tworzenia sum pośrednich................................534 Zastosowanie punktów kontrolnych do formatowania wydruków .................................543 Wielopoziomowe punkty kontrolne ...................................................k.............................551 Zastosowanie wielopoziomowych punktów kontrolnych.........................................553 Spis trelci 7 Rozdział 23. Składnia niektórych polece* języka COBOL.....................................567 Tablice wewnętrzne...................................................k...................................................k...568 Zastosowanie tablic wewnętrznych ...................................................k.......................570 Polecenie STRING...................................................k...................................................k....580 Polecenie UNSTRING ...................................................k.................................................582 Polecenie INSPECT ...................................................k...................................................k..583 Polecenie CALL USING...................................................k..............................................584 Polecenie ACCEPT FROM DATE lub TIME ...................................................k.............591 Zastosowanie pól obliczeniowych ...................................................k...............................602 Numerowanie podprogramów...................................................k......................................604 Kwalifikowane nazwy elementów danych...................................................k...................605 Polecenie MOVE CORRESPONDING ...................................................k.......................606 Znaki kontynuacji...................................................k...................................................k......607 Polecenie EVALUATE ...................................................k................................................608 Rozdział 24. Funkcje wewnętrzne języka COBOL.................................................611 Czym jest funkcja wewnętrzna?...................................................k...................................611 Funkcja wewnętrzna CURRENT-DATE ...................................................k.....................612 Przekazywanie argumentów do funkcji wewnętrznych ..................................................615 Ograniczenia funkcji wewnętrznych ...................................................k............................617 Funkcje wewnętrzne operujące na ciągach znaków...................................................k.....617 Numeryczne funkcje wewnętrzne ...................................................k................................619 Dodatki ...................................................z...................................................z......623 Dodatek A ORDER FORM ...................................................z.............................625 Dodatek B Zestaw znaków ASCII ...................................................z.................627 Dodatek C Edycja, kompilacja i konsolidacja ...................................................z629 Instalacja...................................................k...................................................k....................629 Przestrzeń robocza...................................................k...................................................k.....630 Windows ...................................................k...................................................k.............630 MS-DOS ...................................................k...................................................k.............630 UNIX...................................................k...................................................k...................630 VAX VMS..................................................k...................................................k..................631 Edycja...................................................k...................................................k........................631 Nazwy plików ...................................................k...................................................k...........632 Kompilacja ...................................................k...................................................k................632 Konsolidacja...................................................k...................................................k..............633 Uruchamianie ...................................................k...................................................k............633 Dodatek D Odszukiwanie i usuwanie błędów kompilacji....................................635 Metody lokalizacji błędów ...................................................k...........................................635 Najbardziej prawdopodobne obszary wystąpienia błędów .............................................635 Wybrane błędy wskazywane przez niektóre kompilatory...............................................636 Dodatek E ACUCOBOL w praktyce ...................................................z...............639 Nowe polecenia kompilatora ACUCOBOL...................................................k.................639 Instalacja...................................................k...................................................k....................640 Przestrzeń robocza...................................................k...................................................k.....640 Windows ...................................................k...................................................k.............640 MS-DOS ...................................................k...................................................k.............640 Edycja...................................................k...................................................k........................641 Pracujemy z edytorem EDIT ...................................................k.................................641 Nazwy plików ...................................................k...................................................k...........642 8 Cobol Kompilacja ...................................................k...................................................k................642 Konsolidacja...................................................k...................................................k..............643 Uruchamianie ...................................................k...................................................k............644 Zastosowanie polecenia ACCEPT OMITTED ...................................................k............644 Tworzymy raport kompilacji...................................................k........................................645 Pracujemy z debuggerem (programem uruchomieniowym) ...........................................651 Przygotowania do uruchamiania programu ...................................................k...........651 Uruchamianie debuggera...................................................k..............................................651 Uruchamianie programu w trybie krokowym...................................................k........651 Przeglądanie zmiennych ...................................................k........................................652 Zatrzymywanie programu w określonym wierszu...................................................k.653 Funkcje wewnętrzne...................................................k...................................................k..654 Object COBOL oraz graficzne interfejsy użytkownika ..................................................654 Dodatek F Transakcyjne przetwarzanie danych ................................................655 Podstawy transakcyjnego przetwarzania danych ...................................................k.........655 Kolejne etapy transakcji ...................................................k...............................................655 Dlaczego system transakcyjny? ...................................................k...................................656 Transakcje w języku COBOL ...................................................k......................................657 Projektowanie systemów transakcyjnych...................................................k.....................658 Skorowidz...................................................z...................................................z...655 Rozdział 7. Zapoznałeś się już z wieloma aspektami programowania w języku COBOL i prak- tycznie możesz tworzyć swoje własne programy. Do tworzenia programów warto jednak podejść w usystematyzowany sposób. W niniejszym rozdziale zapoznasz się z następującymi zagadnieniami: JJJJ Do czego potrzebne są programy? JJJJ Tworzenie opisu problemu. JJJJ Rozkładanie złożonego problemu na zadania składowe. JJJJ Identyfikacja pętli przetwarzania. JJJJ Czym jest pseudokod i jak z niego korzystać? JJJJ Wyodrębnianie głównej pętli przetwarzania. JJJJ Etapy projektowania programu. JJJJ Program obliczający procent składany. Do czego są potrzebne programy? Zasadniczym zadaniem większości programów jest wykonywanie rozbudowanych, powtarzających się zadań, które człowiekowi zajęłyby długie godziny żmudnej, nużącej pracy i zredukowanie problemu do sekwencji dobrze zdefiniowanych poleceń wykony- wanych przez maszynę. Dany problem dobrze nadaje się do rozwiązywania przez program wtedy, kiedy wymaga realizacji pewnych zadań w powtarzalny sposób. Dobrym przykładem może być pro- gram zarządzający biblioteką, gdzie należy regularnie przeglądać listę wypożyczo- nych książek, sprawdzać ich terminy zwrotu, wyszukiwać książki, które powinny już 142 Cobol zostać zwrócone i drukować upomnienia dla nierzetelny ch czytelników. Rzeczywiście jest to powtarzalne zadanie, ponieważ każda książka musi zostać sprawdzona według poniższego wzorca: 1. Sprawdź datę wypożyczenia. 2. Sprawdź, czy nie minął termin zwrotu. 3. Jeżeli tak, to wydrukuj upomnienie. Dany problem można również rozwiązać, stosując omawiany program, wtedy, kiedy operacja jest wykonywana jednorazowo, ale program może być wykorzystywany później wielokrotnie. Przykładowo, taki program może być przydatny do projektowa- nia i drukowania etykiet na potrzeby sklepu. Dopóki nie zależy Ci na tym, aby każda etykieta była na swój sposób niepowtarzalna, taki program może znakomicie spełnić swoje zadanie. Z drugiej strony, jeżeli planujesz np. okazjonalną wyprzedaż używanych narzędzi, to tworzenie osobnego programu na potrzeby tego wydarzenia nie jest chyba zbyt do- brym pomysłem (chyba, że organizujesz taką wyprzedaż prz ynajmniej raz na tydzień). W pierwszych rozdziałach naszej książki przedstawiono kilka programów, które w zasa- dzie nie były zbyt dobrymi kandydatami na „prawdziwe” programy. Celem przyświe- cającym utworzeniu takich programów jak /3;36. była chęć zilustrowania zasad pisania programów w języku COBOL. Utworzenie programów liczących i wyświetlających tabliczkę mnożenia także było jak najbardziej usprawiedliwione — wykonują one powtarzające się operacje, pole- gające na wyliczaniu kolejnych iloczynów i wyświetlan iu otrzymanych wyników. Niestety, niektóre powtarzalne zadania są trudne do implementacji w programach po prostu ze względu na fizyczne ograniczenia komputerów. Przykładowo załóżmy, że codziennie rano robisz sobie filiżankę kawy zawsze w ten sam sposób — jest to jak najbardziej powtarzalne zadanie, aczkolwiek napisanie programu, który by je realizował może być trudne. Ekspres do kawy jest standardowym urządzeniem wejścia-wyjścia póki co w… niewielkiej ilości komputerów. Jeżeli zadanie wymaga przetwarzania danych, to mogę się założyć, że dobry program może być tutaj bardzo pomocny (choć i to nie zawsze jest prawdą… Wyobraź sobie powtarzalne zadanie polegające na wyborze spośród wszystkich Twoich znajomych 50 osób, które zaprosisz na party. Dopóki komputer nie będzie wiedział, kogo tak naprawdę lubisz, nie poradzi sobie z tym problemem, mimo że jest to problem powta- rzalny i wymagający przetwarzania danych…). Tworzenie opisu problemu Kiedy już zadecydujesz, czy dane zadanie będzie się dobrze nadawało do rozwiązania przez program, to kolejnym krokiem przybliżającym Cię do sukcesu będzie stworzenie Rozdział 7.  Podstawy projektowania programów 143 opisu tego zadania. Opis nie musi być bardzo szczegółowy, ale na pewno musi być precyzyjny. Opisy do niektórych programów prezentowanych w poprzednich rozdzia- łach mogłyby wyglądać tak: JJJJ Sprawdź wypożyczone książki i wyślij upomnienia do wsz ystkich czytelników, którzy nie oddali książek w terminie. JJJJ Pobierz treść etykiety podaną przez użytkownika, utwórz etykietę zgodnie z ustalonym wzorcem, a następnie wydrukuj jedną lub ki lka kopii. JJJJ Wyświetl wybraną przez użytkownika liczbę wierszy tabl iczki mnożenia dla podanej mnożnej z zakresu od 1 do 99. JJJJ Wyświetl wybraną przez użytkownika liczbę wierszy tabl iczki mnożenia dla podanej mnożnej z zakresu od 1 do 99, łącząc wyświetlane wiersze w grupy. Zwróć uwagę na różnicę pomiędzy ostatnimi dwoma zadaniami. Jest to przykład pre- cyzyjnego, ale pozbawionego większych szczegółów opisu zadania — opisy dwóch ostatnich zadań są bardzo do siebie zbliżone, ale jednak in ne. Rozkładanie złoronego problemu na zadania składowe Po utworzeniu opisu zadania powinieneś przystąpić do rozkładania problemu na prost- sze zadania składowe. Na tym etapie projektowania musisz już posiadać pewną wiedzę na temat możliwości języka, w którym będziesz implemen tował dany program. Nie przejmując się kolejnością poszczególnych zadań, dokonaj rozbioru problemu na za- dania składowe, krótko opisując, co komputer będzie musiał w każdym z nich wykonać. „Normalny” opis zadania Opis zadania, które musi wykonać komputer Wyświetlaj kolejne tabliczki mnożenia Wyświetlaj w pętli kolejne tabliczki mnożenia Dla dowolnej mnożnej z zakresu od 1 do 99 Poproś użytkownika o wprowadzenie numeru tabeli (czyli inaczej mnożnej) z zakresu 1 – 99 Wyświetl wybraną ilość kolejnych iloczynów 1. Poproś użytkownika o wprowadzenie ilości wierszy do wyświetlenia 2. Wyświetlaj iloczyny mnożnej i kolejnych mnożników od 1 do liczby podanej przez użytkownika Takie „małe” zadania, jak te powyżej, mogą z reguły zostać podzielone na jeszcze bardziej elementarne części. Proces rozbijania problemu na coraz mniejsze zadania musi być realizowany dopóty, dopóki wszystkie zadania nie zostaną zapisane w sposób, który będzie bardziej „zrozumiały” dla komputera. 144 Cobol Identyfikacja ptli przetwarzania Poszczególne pętle przetwarzania zaczynają się wyłaniać w momencie rozbijania złożo- nego problemu na zadania składowe. Jak zapewne sobie przypominasz, w rozdziale 5., Zastosowanie poleceń PERFORM, GO TO oraz IF do sterowania przebiegiem dzia- łania programu, pętlę zdefiniowaliśmy jako dowolne zadanie, które jest powtarzane wielokrotnie w jednej sekwencji. Na obecnym etapie realizacji zadania powinieneś już być w stanie wyodrębnić dwie pętle. Pierwsza z nich wyświetla całą tabelę iloczynów dla podanego mnożnika (nu- meru tabeli), z kolei druga wyświetla kolejne iloczyny mnożnej i mnożnika, aż do momentu osiągnięcia przez mnożnik wartości zadanej p rzez użytkownika. Po zdefiniowaniu pętli warto na nią spojrzeć z nieco innej perspektywy i spróbować ją sobie wyobrazić jako pętlę, która wielokrotnie wykonuje tylko jedno zadanie, a nie kilka zadań naraz. Tabela 7.1 ilustruje różnicę pomiędzy tradycyjnym i „komputero- wym” podejściem do zadań wykonywanych przez pętle. Tabela 7.1. Myślenie tradycyjne kontra „komputerowe” Myllenie tradycyjne „Komputerowe” podejlcie do zagadnienia Wyświetl kilka różnych tabel iloczynów Wyświetl tabelę kolejnych iloczynów dla podanej mnożnej Wyświetlaj w pętli tabelę iloczynów, za każdym razem zmieniając wartości mnożnej Wyświetlaj w pętli kolejne iloczyny dla podanej mnożnej, za każdym razem zmieniając wartości mnożnika Pseudokod — to wygodna forma zapisu kodu programu, pozwalająca na bardzo swo- bodne potraktowanie składni poleceń. Pseudokod umożliwia również pozostawianie wolnych miejsc w zapisie „programu”, np. wtedy, kiedy nie wiesz jeszcze, jak rozwiązać dany fragment zadania. Dobry pseudokod powinien być bardzo zbliżony do rzeczywi- stego języka programowania — w praktyce nie ma żadnych ścisłych reguł określają- cych zasady zapisu „programu” w pseudokodzie, poza jedną: pseudokod powinien Ci pomóc w tworzeniu programu. Na obecnym etapie posiadasz już ściśle zdefiniowany problem, określone poszcze- gólne zadania składowe, wyznaczone główne pętle przetwarzania; najwyższy więc czas, aby zabrać się za próbę połączenia tych elementów w jednym programie — na razie napisanym w pseudokodzie. Pierwszym etapem będzie utworzenie głównego zadania całego programu. W tym miejscu musisz zastanowić się, co tak naprawdę program będzie robił? Z punktu widzenia użytkownika można powiedzieć, że będzie wyświetlał tabliczkę mnożenia, jednak myśląc po „komputerowemu”, należałoby raczej powiedzieć, że zadaniem programu jest wy- świetlanie serii kolejnych iloczynów, których parametry zmieniają się za każdym przebie- giem programu. W listingu 7.1 przedstawiono pseudokod rea lizujący takie zadanie. Rozdział 7.  Podstawy projektowania programów 145 Zwróć uwagę, że pseudokod używany w tym przykładzie nie jest do końca zgodny z zasadami składni języka COBOL — nie wszystkie słowa zostały napisane wielkimi literami, a poszczególne polecenia nie muszą kończyć się kropkami. Jest to typowa cecha pseudokodu — jest jak COBOL, ale stosując go, nie musisz przestrzegać wszyst- kich zasad składni. Listing 7.1. Pierwszy program zapisany w pseudokodzie $(cid:4)   # (cid:4)(cid:4)$3:/6+2.3:/6 Określenie over and over, czyli oględnie mówiąc, wykonywanie pewnych operacji „w kółko”, jest być może wystarczająco dokładne dla programisty, ale komputer wymaga bardziej precyzyjnych poleceń, aby wiedzieć, kiedy zatrzymać działanie. Takie in- strukcje przekładają się w prosty sposób na warunek $. Zastosowanie tej klauzuli ilustruje kolejny program przedstawiony w listingu 7.2. Listing 7.2. Główne zadanie programu zapisane w pseudokodzie $(cid:4)   # (cid:4)(cid:4)$ $;+692/)+3q-/2+ W kolejnym etapie przyjrzymy się blokowi # (cid:19)(cid:19)$. Jakie operacje muszą zostać wykonane, aby na ekranie została wyświetlona jedna tabela iloczynów? W uproszczeniu można powiedzieć, że potrzebne będą tylko dwie operacje: pobranie numeru tabeli i wyświetlenie tej tabeli. W listingu 7.3 przedstawiono pseudokod roz- szerzony o opisane kroki. Listing 7.3. Nowa wersja pseudoprogramu $(cid:4)   # (cid:4)(cid:4)$ $;+692/)+3q-/2+ # (cid:4)(cid:4)$ $(cid:4) (cid:4)$ # (cid:4)$(cid:4)$ Zapis $(cid:19)$(cid:19)$ może zostać w języku COBOL przełożony na proste polecenia, które wyświetlają na ekranie odpowiedni komunikat, a następnie pobierają wartość podaną przez użytkownika. OK, a co należy zrobić, aby wyświetlić tabelę? Tutaj także będziesz musiał wykonać dwie operacje. Po pierwsze, pobierz ilość pozycji do wyświe- tlenia (czyli maksymalną wartość mnożnika). Następnie wyświetlaj kolejne iloczyny, za każdym razem zwiększając wartość mnożnika dopóty, dopóki nie zostanie osią- gnięta maksymalna wartość mnożnika. W listingu 7.4 przedstawiono kolejną wersję programu, z rozbudowanymi blokami $(cid:19) (cid:19)$ oraz # (cid:19)$(cid:19)$. 146 Cobol Listing 7.4. Kolejna wersja pseudoprogramu $(cid:4)   # (cid:4)(cid:4)$ $;+692/)+3q-/2+ # (cid:4)(cid:4)$ $(cid:4) (cid:4)$ # (cid:4)$(cid:4)$ $(cid:4) (cid:4)$ #  -8+,/ (cid:4))  $$(cid:4)$ # $(cid:4)$ $(cid:4) (cid:4)(cid:4)$ # # (cid:4)(cid:4)$   $;778/)3-2);;/832/ W tym momencie możesz już zastosować nabytą do tej pory wiedzę o języku CO- BOL. Program powinien wyświetlać kolejne iloczyny dla mnożników od 1 do warto- ści podanej przez użytkownika. Jest to znakomita okazja, aby zastosować klauzulę  . Pseudoprogram przedstawiony w listingu 7.5 zawiera rozbudowaną wersję bloku # (cid:19)$(cid:19)$ oraz blok umożliwiający użytkownikowi wprowadzenie ilości wierszy do wyświetlenia (czyli maksymalnej wartości mnożnika). Listing 7.5. Program zaczyna nabierać kształtu… $(cid:4)   # (cid:4)(cid:4)$ $;+692/)+3q-/2+ # (cid:4)(cid:4)$ $(cid:4) (cid:4)$ # (cid:4)$(cid:4)$ $(cid:4) (cid:4)$ #  -8+,/ (cid:4))  $$(cid:4)$ # $(cid:4)$ $(cid:4) (cid:4)(cid:4)$ # # (cid:4)(cid:4)$    $(cid:4)$     $$(cid:4)$  (cid:4)(cid:4)$ # $(cid:4) (cid:4)(cid:4)$ # # 3;+2/286/7 (cid:4))  $ (cid:4)(cid:4)$ # Ostatnim etapem jest wyświetlenie pojedynczego wiersza (iloczynu). Listing 7.6 przed- stawia niemal zakończony pseudokod programu. Rozdział 7.  Podstawy projektowania programów 147 Listing 7.6. Szkielet programu zapisany w pseudokodzie $(cid:4)   # (cid:4)(cid:4)$ $;+692/)+3q-/2+ # (cid:4)(cid:4)$ $(cid:4) (cid:4)$ # (cid:4)$(cid:4)$ $(cid:4) (cid:4)$ #  -8+,/ (cid:4))  $$(cid:4)$ # $(cid:4)$ $(cid:4) (cid:4)(cid:4)$ # # (cid:4)(cid:4)$    $(cid:4)$     $$(cid:4)$  (cid:4)(cid:4)$ # $(cid:4) (cid:4)(cid:4)$ # # 3;+2/286/7 (cid:4))  $ (cid:4)(cid:4)$ # # (cid:4)(cid:4)$   $$(cid:4)  $$(cid:4)$2$(cid:4)$  # $(cid:4)$2 $(cid:4)$  $(cid:4)  $ Zapewne nie chcesz, aby program był wykonywany w pętli nieskończonej, więc powinie- neś jeszcze dopisać warunek zakończenia programu w klauzuli $ — powinien on umożliwiać zakończenie działania programu na życzenie użytkownika. Możesz to osią- gnąć poprzez zadanie użytkownikowi pytania, czy chce k ontynuować działanie programu. W jakim momencie należy zadać to pytanie? Odpowiedź brzmi: po zakończeniu wyświetlania pełnej tabeli iloczynów dla podanej mnożnej. Jak pamiętasz, dwoma kluczowymi miejscami każdej pętli są jej początek i koniec. Powyższe pytanie może być zadawane na końcu bloku # (cid:19)(cid:19)$. Listing 7.7 przedstawia pseudokod programu uzupełniony o wywołanie bloku (cid:19) oraz definicję tego bloku. W blo- ku (cid:19) mogłem umieścić rozbudowany podprogram sprawdzający np. czy użyt- kownik wprowadził jedną z odpowiedzi , , , 2, a w przypadku udzielenia innej odpowiedzi wyświetlający odpowiedni komunikat — choć w tak prostym programie byłby to chyba już przerost formy nad treścią… Zamiast tego program sprawdza tylko, czy odpowiedź użytkownika brzmi  lub  — każda inna odpowiedź jest traktowana jako wprowadzenie odpowiedzi . Listing 7.7. Prawie ukończona wersja pseudokodu… $(cid:4)   # (cid:4)(cid:4)$ $#(cid:4) # (cid:4)(cid:4)$ 148 Cobol $(cid:4) (cid:4)$ # (cid:4)$(cid:4)$ (cid:4) $(cid:4) (cid:4)$ #  -8+,/ (cid:4))  $$(cid:4)$ # $(cid:4)$ $(cid:4) (cid:4)(cid:4)$ # # (cid:4)(cid:4)$    $(cid:4)$     $$(cid:4)$  (cid:4)(cid:4)$ # (cid:4) # 31+2  )  $#(cid:4) #(cid:4)  $#(cid:4) #(cid:4)$  $#(cid:4) $(cid:4) (cid:4)(cid:4)$ # # 3;+2/286/7 (cid:4))  $ (cid:4)(cid:4)$ # # (cid:4)(cid:4)$   $$(cid:4)  $$(cid:4)$2$(cid:4)$  # $(cid:4)$2 $(cid:4)$  $(cid:4)  $ Nadszedł wreszcie czas na uporządkowanie i ostateczne uzupełnienie naszego dzieła. Po pierwsze, spójrzmy krytycznym okiem na pętle. Definicja pierwszej pętli w pro- gramie może kryć w sobie potencjalny problem. Przypomnijmy sobie, w jaki sposób powinna działać dobrze zaprojektowana pętla: 1. Nadaj zmiennym sterującym działaniem pętli wartości po czątkowe. 2. Wykonaj pętlę. 3. Zmodyfikuj zmienną sterującą — możesz tego dokonać albo w ostatnim poleceniu pętli, albo po każdym wykonaniu pętli. Dla pętli realizowanej w bloku # (cid:19)(cid:19)$ nie został dopełniony warunek 1 — możesz jednak bardzo łatwo naprawić ten „błąd” poprzez wymuszenie nadania zmiennej #(cid:19) początkowej wartości . Takie postępowanie zapewnia prawidłowe, pierwsze wykonanie tej pętli. $(cid:4)    $#(cid:4) # (cid:4)(cid:4)$  $#(cid:4) Rozdział 7.  Podstawy projektowania programów 149 Kolejną sprawą, którą musimy się jeszcze zająć jest problem wyświetlania max. 15 wierszy jednocześnie. Możesz go rozwiązać poprzez umieszczenie na początku pętli # (cid:19)(cid:19)$  poleceń wyświetlających komunikat 6/77 $ i zatrzymu- jących wyświetlanie, a na końcu pętli — polecenia inkrementacji licznika wyświetla- nych wierszy (zmienna # (cid:19)#). Ponieważ program może wyświetlać kilka tabel iloczynów po 15 wierszy w każdym, to przed wyświetleniem kolejnych 15 wierszy zmiennej # (cid:19)# powinna być nada- wana wartość . W listingu 7.8 przedstawiono finalną wersję pseudokodu p rogramu. Listing 7.8. Finalna wersja pseudokodu programu $(cid:4)    $#(cid:4) # (cid:4)(cid:4)$  $#(cid:4) # (cid:4)(cid:4)$ $(cid:4) (cid:4)$ # (cid:4)$(cid:4)$ (cid:4) $(cid:4) (cid:4)$ #  -8+,/ (cid:4))  $$(cid:4)$ # $(cid:4)$ $(cid:4) (cid:4)(cid:4)$ #   $# (cid:4)# # (cid:4)(cid:4)$    $(cid:4)$     $$(cid:4)$  (cid:4)(cid:4)$ # (cid:4) # 31+2  )  $#(cid:4) #(cid:4)  $#(cid:4) #(cid:4)$  $#(cid:4) $(cid:4) (cid:4)(cid:4)$ # # 3;+2/286/7 (cid:4))  $ (cid:4)(cid:4)$ # # (cid:4)(cid:4)$  # (cid:4)#   ##(cid:4)$  $$(cid:4)  $$(cid:4)$2$(cid:4)$  # $(cid:4)$2 $(cid:4)$  $(cid:4)  $  $# (cid:4)# ##(cid:4)$ #  6/77$ 83-32829/  $(cid:4)  150 Cobol Co teraz? Tworząc powyższy program, starałem się tak dobierać pseudokod, aby można go było łatwo zapisać w języku COBOL — pamiętaj, że nadrzędnym celem stosowania pseudokodu jest pomoc w projektowaniu i tworzeniu docelowego programu. Jeżeli przyjrzysz się listingowi 7.8, to z pewnością zauważysz, że nasz zapis w pseu- dokodzie jest bardzo zbliżony do rzeczywistej składni ję zyka COBOL. Prace nad konwersją pseudokodu powinieneś rozpocząć od uzupełniania interpunkcji programu (wstawianie kropek w odpowiednich miejscach). Następnie dodaj niezbędne polecenia   , utwórz sekcję  (cid:19)#$  oraz definicje odpowiednich zmiennych i wreszcie skompiluj, uruchom i przetestuj cały program. Istniejący pseu- dokod jest niemal identyczny jak polecenia, które powinny znaleźć się w obszarze    #. Pamiętaj, że wiele kompilatorów języka COBOL, m.in. ACU- COBOL, wymaga podawania pełnych wartości liczbowych, łącznie z zerami wiodą- cymi (np.  zamiast ). Zwróć uwagę, że podanie ujemnych wartości w odpowiedzi na pytania zadawane przez program może przynieść nieprzewidziane rezultaty. Jako samodzielne ćwiczenie możesz spróbować poprawić kod programu tak, aby poradził sobie z nieprawidłowymi danymi wejściowymi. Listing 7.9. Pełny program zapisany w języku COBOL $$ #    (cid:4)  $   2(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)  2 6316+48+9 83;2+  2329/68+,-23 /2+@63+68+,-  2+2+78B42/;;/8+8B8+,-B23 /2+  2.+;+683-3. .3 (cid:4)  2  2 ;/8+2//7846/6;+2/43+ .-3/2- ;/67+- 2(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)   $ #  $ #    (cid:4)#$ #$    $(cid:4)$    $(cid:4)$     $(cid:4)  $     (cid:4)(cid:4)$ #    # (cid:4)#     (cid:4)      #(cid:4)       #     (cid:4)   $#(cid:4)     # (cid:4)(cid:4)$   $#(cid:4)  Rozdział 7.  Podstawy projektowania programów 151    (cid:4)  #$     # (cid:4)(cid:4)$     $(cid:4) (cid:4)$     # (cid:4)$(cid:4)$     (cid:4)   $(cid:4) (cid:4)$  #    -984-+8328+,/ (cid:4))   $$(cid:4)$   # (cid:4)$(cid:4)$     $(cid:4) (cid:4)(cid:4)$ #     $# (cid:4)#      # (cid:4)(cid:4)$     $(cid:4)$        $$(cid:4)$  (cid:4)(cid:4)$ #   (cid:4)  # 31+2  )   $#(cid:4)  #(cid:4)   $#(cid:4)  #(cid:4)$   $#(cid:4)   $(cid:4) (cid:4)(cid:4)$ #  #   3;+2/286/7;39.39/ (cid:4))   $ (cid:4)(cid:4)$ #   # (cid:4)(cid:4)$    # (cid:4)#       ##(cid:4)$   $$(cid:4)  $$(cid:4)$2$(cid:4)$   #   $(cid:4)$2$(cid:4)$ $(cid:4)  $    $# (cid:4)#    ##(cid:4)$  #  6/77$ 83-32829/      $(cid:4)     $# (cid:4)#  152 Cobol Wyodrbnianie głównej ptli przetwarzania Główna pętla przetwarzania programu, czyli główne zadanie realizowane przez pro- gram, nie zawsze jest zadaniem powtarzanym wielokrotnie. Przykłady takich pętli znajdziesz we wcześniejszych wersjach programu wyświetlającego tabliczkę mnożenia, z którymi spotkałeś się w rozdziale 5. naszej książki. Powstaje tutaj pytanie: jeżeli główna pętla przetwarzania nie musi tak naprawdę być pętlą, to jak można ją zidentyfikować w programie? Jednym ze sposobów jest założenie, że każde zadanie realizowane przez program będzie wykonywane wielokrotnie. Przy- kładowo, jeżeli oryginalny opis zadania mówił, że program będzie wyświetlał tylko jedną tabliczkę mnożenia, to projektując program, możesz założyć, że będzie on wie- lokrotnie wyświetlał tabliczki mnożenia. Po zastosowaniu tego prostego triku do opisu głównego zadania programu (czyli w praktyce do głównej pętli przetwarzania) przekształcenie programu do wersji jed- nopętlowej (czyli z wyodrębnioną główną pętlą przetwarzania) nie powinno już spra- wiać większych kłopotów. Interesującą cechą wszystkich pętli jest fakt, że działają one dla jednej iteracji dokładnie tak samo, jak dla wielu iteracji. W listingu 7.10 przedstawiono program mult08.cbl, który jest dokładną kopią programu mult07.cbl, z tym tylko, że niektóre wiersze oryginal- nego programu zostały oznaczone jako komentarz. Jest to bardzo często stosowana prak- tyka — zamiast usuwania całego wiersza programu wystarczy umieścić w kolumnie 7 znak , co powoduje, że cały wiersz jest traktowany jako komentarz i pomijany przez kompilator. Daje to taki sam efekt, jak usunięcie wiersza, ale pozwala na pozostawienie go w kodzie źródłowym. Zazwyczaj takie rozwiązanie stosuje się w sytuacji, kiedy kod programu jest modyfikowany, ale istnieje potrzeba odwołania się do oryginalnego kodu programu. Listing 7.10. Konwersja programu mult08.cbl do wersji jednopętlowej $$ #    (cid:4)  $   2(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)  2 6316+48+9 83;2+  2329/68+,-23 /2+@63+68+,-  2+2+78B42/;;/8+8B8+,-B23 /2+  2.+;+683-3. .3 (cid:4)  2  2 ;/8+2//7846/6;+2/43+ .-3/2- ;/67+- 2(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)(cid:4)   $ #  $ #    (cid:4)#$ #$    $(cid:4)$    $(cid:4)$     $(cid:4)  $  Rozdział 7.  Podstawy projektowania programów 153    (cid:4)(cid:4)$ #    # (cid:4)#     (cid:4)     2 #(cid:4)         #     (cid:4)  2 $#(cid:4)     # (cid:4)(cid:4)$  2 $#(cid:4)     (cid:4)  #$     # (cid:4)(cid:4)$     $(cid:4) (cid:4)$     # (cid:4)$(cid:4)$  2   (cid:4)   $(cid:4) (cid:4)$  #    -984-+8328+,/ (cid:4))   $$(cid:4)$   # (cid:4)$(cid:4)$     $(cid:4) (cid:4)(cid:4)$ #     $# (cid:4)#      # (cid:4)(cid:4)$     $(cid:4)$        $$(cid:4)$  (cid:4)(cid:4)$ #   2(cid:4)  2# 31+2  )  2 $#(cid:4)  2#(cid:4)  2 $#(cid:4)  2#(cid:4)$  2 $#(cid:4)   $(cid:4) (cid:4)(cid:4)$ #  #   3;+2/286/7;39.39/ (cid:4))   $ (cid:4)(cid:4)$ #   # (cid:4)(cid:4)$    # (cid:4)#       ##(cid:4)$   $$(cid:4)  $$(cid:4)$2$(cid:4)$   #   $(cid:4)$2$(cid:4)$ $(cid:4)  $    $# (cid:4)# 154 Cobol    ##(cid:4)$  #  6/77$ 83-32829/      $(cid:4)     $# (cid:4)#  Modyfikacje wprowadzone w listingu 7.10 usuwają cały kod powodujący, że program zadaje użytkownikowi pytanie, czy ponownie wykonać program i powtarzający go, jeżeli użytkownik da odpowiedź twierdzącą. Z programu oryginalnego zostały usunięte (oznaczone jako komentarz) wiersze o nume- rach  ,  ,  ,  oraz od  do  . Powstały w wyniku tej operacji program różni się od oryginału tym, że tylko jednokrotnie wyświetla tablicz- kę mnożenia dla zadanej mnożnej. Program mult07.cbl został więc „przykrojony” tak, że zostaje wykonany tylko raz — a dokonano tego wyłącznie przez przemyślane umieszczenie w kodzie źródłowym kilku gwiazdek . Wyodrębnienie pętli przetwarzania nie zawsze jest takie oczywiste. Oryginalne wersje poprzednich programów wyświetlających tabliczkę mnożenia (mult01.cbl do mult06.cbl), z którymi pracowałeś w rozdziale 5., również wykonywały tylko jeden przebieg głównej pętli przetwarzania. Jeżeli projektujesz program, który wykonuje tylko jeden przebieg danego zadania, to możesz zasymulować proces zilustrowany w listingu 7.10, mult08.cbl. Powinieneś wtedy założyć, że program wykonuje wiele przebiegów, zaprojektować cały program, a następnie tak „obciąć” kod programu za pomocą komentarzy, aby główna pętla przetwarzania wykonywana była tylko jeden raz. Jest to prosty trik pozwalający na wyobrażenie sobie zadania realizowanego przez program jako pętli, nawet wtedy, kiedy jest ono wykonywane jeden, jedyny raz. Podsumowanie etapów tworzenia programu Zanim rozpoczniemy realizację następnego projektu przypomnijmy sobie, jaka powinna być właściwa kolejność kroków prowadzących do powstania programu (poniższa lista obejmuje etapy zarówno projektowania, jak i implement acji): 1. Utwórz opis zadania. Powinien on precyzyjne, ale niekon iecznie bardzo szczegółowo formułować przeznaczenie programu. 2. Podziel główne zadanie na mniejsze zadania składowe. W ty m miejscu musisz dołożyć nieco szczegółowych instrukcji dotyczących wyko nania, a sam podział na zadania składowe powinien być prowadzony tak długo, aż poszczególne zadania będą mogły być w prosty sposób zrealizowane prze z komputer (program). Rozdział 7.  Podstawy projektowania programów 155 3. Wyodrębnij poszczególne pętle przetwarzania. 4. Wyodrębnij główną pętlę przetwarzania (jeżeli nie udało Ci się tego dokonać w punkcie 3). 5. Zapisz program, wykorzystując polecenia pseudokodu. 6. Dokonaj konwersji pseudokodu do postaci prawidłowego k odu źródłowego. 7. Zapisz kod źródłowy, a następnie skompiluj program. 8. Uruchom i przetestuj program. 9. Popraw ewentualne błędy poprzez dokonanie niezbędnych mo dyfikacji w kodzie źródłowym. 10. Powtarzaj kroki 8. i 9. dopóty, dopóki program nie będzie dz iałał poprawnie. To normalne, że realizacja punktów od 1. do 5. zajmuje więcej czasu niż punktów od 6. do 10., zwłaszcza, jeżeli bardzo gruntownie i rzetelnie zajmiesz się fazą sa
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

COBOL
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: