Zapisywanie algorytmów w języku programowania wysokiego poziomu



Podobne dokumenty
Programowanie. Pascal - język programowania wysokiego poziomu. Klasa 2 Lekcja 9 PASCAL

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Programowanie w języku Python. Grażyna Koba

Programowanie w języku C++ Grażyna Koba

Zapisywanie algorytmów w języku programowania

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Programowanie i techniki algorytmiczne

Zapisywanie w wybranej notacji algorytmów z warunkami i iteracyjnych

Algorytmika i programowanie usystematyzowanie wiadomości

Warsztaty dla nauczycieli

Temat 20. Techniki algorytmiczne

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Język programowania PASCAL

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Temat 5. Programowanie w języku Logo

przedmiot kilka razy, wystarczy kliknąć przycisk Wyczaruj ostatni,

Pascal - wprowadzenie

ALGORYTMY I PROGRAMY

Technologie informacyjne - wykład 12 -

Programowanie komputerów

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

1 Podstawy c++ w pigułce.

Języki programowania zasady ich tworzenia

Cw.12 JAVAScript w dokumentach HTML

P R OGRA M OW A N I E KOMPUTERÓW Ćwiczenia laboratoryjne

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

Algorytmika i pseudoprogramowanie

Opis problemu i przedstawienie sposobu jego rozwiązania w postaci graficznej. Gimnazjum nr 3 im. Jana Pawła II w Hrubieszowie 1

Programowanie w Turbo Pascal

START. Wprowadź (v, t) S:=v*t. Wyprowadź (S) KONIEC

Wstęp do programowania. Wykład 1

Algorytm. a programowanie -

WIADOMOŚCI WSTĘPNE WPROWADZENIE DO JĘZYKA TURBO PASCAL. Klawisze skrótów. {to jest właśnie komentarz, moŝna tu umieścić dowolny opis}

Algorytmy zapisywane w pseudojęzyku programowania. Klasa 2 Lekcja 6

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else.

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

INSTRUKCJA PUSTA. Nie składa się z żadnych znaków i symboli, niczego nie robi. for i := 1 to 10 do {tu nic nie ma};

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

Sposoby przedstawiania algorytmów

Definicje. Algorytm to:

Podstawy programowania w języku C

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Instrukcja standardowa Writeln

Podstawy i języki programowania

1 Podstawy c++ w pigułce.

Algorytmika i programowanie

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Informatyczna Wieża Babel, czyli o różnych językach programowania. Informatyczna Wieża Babel, czyli o różnych językach programowania

TEMAT: Podejmowanie decyzji w programie instrukcja warunkowa (IF).

4. Funkcje. Przykłady

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu

Wstęp do programowania

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja cz. 1

Wprowadzenie komentarzy do programu

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Programowanie w środowisku Baltie

Języki i metodyka programowania

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Zapis algorytmów: schematy blokowe i pseudokod 1

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Algorytmika i Programowanie VBA 1 - podstawy

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

Paradygmaty programowania

Algorytmy od problemu do wyniku

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Podstawy Programowania

ForPascal Interpreter języka Pascal

Elementy języków programowania

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

2.8. Algorytmy, schematy, programy

11. Blok ten jest blokiem: a. decyzyjnym b. końcowym c. operacyjnym

Pętle. Dodał Administrator niedziela, 14 marzec :27

Podstawy Programowania. Wykład 1

3. Instrukcje warunkowe

Java EE produkcja oprogramowania

Wstęp do Informatyki. Program, proces tworzenia programu Środowisko programistyczne Języki programowania

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Procedury i funkcje - powtórzenie i uzupełnienia. Przykład funkcji potęgowanie przy wykładniku naturalnym

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

PASCAL. Etapy pisania programu. Analiza potrzeb i wymagań (treści zadania) Opracowanie algorytmu Kodowanie Kompilacja Testowanie Stosowanie

Teraz bajty. Informatyka dla szkoły podstawowej. Klasa VI

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Wstęp do Programowania Lista 1

Język ludzki kod maszynowy

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

WYMAGANIA EDUKACYJNE Z INFORMATYKI dla klasy III gimnazjalnej, Szkoły Podstawowej w Rychtalu

Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy

Program szkolenia VBA (VISUAL BASIC FOR APPLICATIONS) W EXCELU PODSTAWOWY.

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

Visual Basic for Applications. Wstęp

Transkrypt:

Temat 7 program Zapisywanie algorytmów w języku programowania wysokiego poziomu 1. Język programowania 1.1. Klasyfikacja języków programowania 2. Struktura programu w języku Pascal 3. Etapy programowania 3.1. Implementacja algorytmu 3.2. Kompilacja programu 3.3. Uruchomienie i wykonanie programu 3.4. Testowanie programu 4. Problemy z błędami kompilacji i wykonania 5. Zapis algorytmu z warunkami w języku Pascal 5.1. Warunek prosty 5.2. Warunek zagnieżdżony 6. Realizacja algorytmów iteracyjnych w Pascalu 6.1. Pętle proste 6.2. Pętle zagnieżdżone Warto powtórzyć 1. Wyjaśnij pojęcia: język programowania, program komputerowy, instrukcja, słowo kluczowe. 2. Omów ogólne zasady tworzenia programu w pseudojęzyku. 3. Przedstaw na konkretnym przykładzie postać i działanie instrukcji warunkowej i iteracyjnej w pseudojęzyku.

58 Temat 7 1. Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany w postaci programu komputerowego w konkretnym języku programowania może być zrealizowany przez komputer. Każdy język programowania posiada swój zbiór instrukcji, w tym słowa kluczowe. Podobnie jak języki naturalne, którymi posługują się ludzie na całym świecie, języki programowania posiadają odpowiednie zasady składni oraz właściwe słownictwo. Każdy język naturalny dysponuje własnymi słowami, służącymi określaniu czynności i nazywaniu rzeczy. Podobnie jest też z językami programowania. W każdym działają na podobnych zasadach instrukcje, które określają takie czynności, jak: wprowadzanie danych, wyprowadzanie wyników, wykonywanie obliczeń, określanie warunków czy realizacja powtórzeń. Ich postać jest zazwyczaj inna dla różnych języków. Inne są też konkretne zasady składni, ale ogólne zasady działania tych instrukcji są podobne. Język programowania = zasady składni + instrukcje Niezależnie od stosowanego języka programowania należy pamiętać, że: Język programowania jest językiem formalnym, co oznacza, że podlega jednoznacznym regułom. Cechy takiej nie mają języki naturalne, gdzie czasem sens zdania zależy od kontekstu, w którym zostało ono użyte, lub od naszej interpretacji. Postać instrukcji, w tym słów kluczowych, musi być bardzo precyzyjna zgodna z zasadami składni. W programie nie może zabraknąć ani jednego koniecznego znaku. Tłumaczenie programu na kod maszynowy połączone jest ze sprawdzaniem poprawności składniowej zapisanych instrukcji. Instrukcje błędnie zapisane nie będą mogły zostać przetłumaczone, a tym samym program nie zostanie wykonany. Kolejność zapisywania instrukcji powinna odpowiadać kolejności operacji realizujących dany algorytm (podobnie jak umieszczanie bloków w schemacie blokowym). Program jest bowiem wykonywany zgodnie z zapisem. 1.1. Klasyfikacja języków programowania Czy wiesz, że opublikowano już ponad 2000 języków programowania! Obecnie wciąż powstają na świecie nowe języki programowania oraz zmodyfikowane wersje już istniejących. Mogą one być przeznaczone do realizowania określonego typu zadań bądź też niektóre z zadań lepiej realizować w danym, konkretnym języku. Na przykład w ostatnim czasie pojawiło się wiele nowych języków programowania przeznaczonych do tworzenia stron internetowych. Niektóre języki można sklasyfikować na kilka sposobów. Język Pascal np. należy do języków wysokiego poziomu, jest także językiem strukturalnym (chociaż funkcjonuje również jego wersja obiektowa), kompilowanym oraz uniwersalnym (szerokie spektrum zastosowania). Na przykładzie tego języka omówimy metody programowania i związane z nimi pojęcia. Rodzaj podziału Opis Przykład poziom wykonywania programu sposób wykonania wysokiego poziomu niskiego poziomu (poziom maszynowy) interpretowane kompilowane Pascal, C i inne wymienione w tej tabeli poza assemblerami assemblery Basic, JavaScript, PHP, LOGO Pascal, C, C++, Java

Temat 7 59 tworzenie aplikacji internetowych dostęp do baz danych obliczenia matematyczne Java, JavaScript, PHP SQL Fortran zastosowanie model programowania dydaktyczne inne (uniwersalne) programowanie wizualne opis danych tworzenie aplikacji współbieżnych przetwarzanie tekstu programowanie sztucznej inteligencji programowanie grafiki liniowe strukturalne zdarzeniowe obiektowe LOGO Pascal, C, C++ Visual C, Visual Basic, Delphi, Kylix PostScript, HTML, XML Ada, Occam PERL, REXX, Python LISP, Prolog OpenGL BASIC, Fortran Pascal, C Visual Basic C++, Object Pascal, Java Można by wskazać znacznie więcej klasyfikacji języków programowania. Stopniowo będziemy wyjaśniać znaczenie klasyfikacji wymienionych w tabeli. Rys. 1. Przykłady klasyfikacji języków programowania 2. Struktura programu w języku Pascal Konstrukcja prostego programu w języku Pascal jest podobna do struktury programu w pseudojęzyku (temat 4) i obejmuje: I. nagłówek programu, II. blok główny, a w nim część deklaracyjną i część wykonawczą. W części deklaracyjnej deklarujemy m.in. stosowane w programie zmienne (podajemy ich nazwy i typy). Część wykonawcza programu (inaczej program główny) to zapisany w postaci instrukcji (procedur) algorytm. Rozpoczyna się słowem, a kończy end (koniecznie z kropką!). Przykład 1 Program źródłowy w języku Pascal, realizujący algorytm obliczania średniej arytmetycznej z trzech liczb, ma postać podobną do programu w pseudojęzyku (patrz przykład 1 w temacie 4): program Srednia; var a, b, c, S, Sr: real; Readln(a, b, c); S := a + b + c; Sr := S/3; Writeln( Średnia wynosi:, Sr); {nagłówek programu} {część deklaracyjna} {zmienne zadeklarowane jako liczby rzeczywiste (real)} {część wykonawcza} {rozpoczęcie programu} {wprowadzanie danych} {obliczenie sumy} {obliczenie średniej} {wyprowadzanie komunikatów i wyników} {zakończenie programu}

60 Temat 7 Słowa kluczowe/ instrukcje/procedury Opis Uwagi program nazwa_programu; słowo kluczowe program, rozpoczynające nagłówek programu Po słowie program występuje nazwa programu. ciąg instrukcji; end; lub ciąg instrukcji; instrukcja złożona Może wystąpić w programie wiele razy. Grupuje ciąg instrukcji, tworząc zamiast nich jedną. Stosuje się ją wówczas, gdy składnia języka wymaga użycia jednej instrukcji, np. w instrukcji pętli. Rozpoczyna i kończy blok główny programu. Za słowem kluczowym nie stawia się średnika; natomiast kropką kończy się tylko jedno (ostatnie) end, pozostałe zaś średnikiem. var lista zmiennych: opis typu; słowo kluczowe var rozpoczynające deklarację zmiennych Może wystąpić kilka nazw zmiennych oddzielonych przecinkiem. Opis typu określa zbiór wartości przyjmowanych przez zmienne, np. liczby rzeczywiste, całkowite, naturalne, znaki. Write(lista argumentów); lub Writeln(lista argumentów); procedura wyprowadzania wyników na standardowe wyjście, np. na ekran monitora Argumentem może być tekst, wyrażenie arytmetyczne lub zmienna oddzielone przecinkami. Wyrażenie najpierw zostanie obliczone, a następnie zostanie wyprowadzona jego wartość. Wpisujemy je w nawiasach. Procedura writeln różni się tym od write, że po wykonaniu procedury writeln następuje przejście do nowego wiersza. Read(lista zmiennych); lub Readln(lista zmiennych); procedura wprowadzania (czytania) danych ze standardowego wejścia, np. z klawiatury Może wystąpić kilka nazw zmiennych oddzielonych przecinkami. Wpisujemy je w nawiasach. Nazwa_zmiennej := wyrażenie; instrukcja przypisania Zmiennej po stronie lewej zostanie przypisana wartość wyrażenia obliczona po stronie prawej. Wartość wyrażenia musi być zgodna z typem zmiennej, np. do zmiennej typu całkowitego nie można przypisać wartości rzeczywistej. If wyrażenie then instrukcja1 else instrukcja2; lub If wyrażenie then instrukcja1; instrukcja warunkowa Wyrażenie powinno przyjmować wartości logiczne True (prawda) lub False (fałsz). Jako instrukcja1 i instrukcja2 mogą wystąpić również instrukcje warunkowe lub instrukcja złożona... Rys. 2. Przykłady podstawowych poleceń w języku Pascal for zmienna := w1 to w2 do instrukcja; lub for zmienna := w1 downto w2 do instrukcja; instrukcja iteracyjna (pętli) dla Zmienna jest tzw. zmienną sterującą w pętli. Jako instrukcja może wystąpić również instrukcja pętli lub instrukcja złożona...end (przykład 6).

Temat 7 61 3. Etapy programowania Programowanie można podzielić na cztery etapy: I. implementację algorytmu, II. kompilację programu, III. uruchomienie i wykonanie programu, IV. testowanie programu. Narzędziami pomocnymi w ich realizacji mogą być: edytory narzędziowe (do implementacji), kompilatory (do kompilacji) lub interpretery (do interpretacji), debuggery (do śledzenia i testowania). Większość rozbudowanych środowisk programistycznych posiada wszystkie te narzędzia. Przebieg etapów programowania pokażemy na przykładzie kompilatora języka Turbo Pascal. 3.1. Implementacja algorytmu Zapisanie algorytmu w postaci ciągu instrukcji języka programowania wysokiego poziomu nazywamy implementacją. Powstaje wówczas tzw. program (kod) źródłowy. Algorytm można zaimplementować w dowolnym edytorze tekstu, ale najwygodniej jest skorzystać z edytora wbudowanego do programu kompilatora danego języka. Przykład 2 Napisz program, który umożliwi zapisanie na ekranie monitora tekstu: pierwszy program. Program w języku Pascal: program Napis; Writeln( pierwszy program ); Uwaga: Po każdej instrukcji powinien być umieszczony średnik. Pominąć można jedynie średnik za instrukcją zapisaną bezpośrednio przed słowem end kończącym program. Ćwiczenie 1 Wpisz powyższy tekst programu w oknie edytora Turbo Pascala. Zapisz program w pliku o nazwie Pierwszy we własnym folderze. W trakcie pisania programu należy pamiętać o jego nazwaniu i zapisaniu w pliku. Program (kod) źródłowy algorytm zapisany za pomocą instrukcji programowania. Implementacja zapisanie algorytmu w postaci kodu źródłowego. Pakiet Turbo Pascala to zintegrowany system oprogramowania, w skład którego wchodzą m.in. kompilator, edytor tekstu, narzędzie do śledzenia wykonywania programu (debugger). Wskazówki: Po uruchomieniu pakietu Turbo Pascala otwiera się zazwyczaj nowe okno edytora Pascala, w którym wpisuje się tekst programu. Posługiwanie się tym edytorem jest bardzo łatwe, mimo że jest to program w wersji angielskiej, działający w środowisku MS DOS. Wybór opcji menu jest podobny do menu w programach działających w środowisku Windows, np. zapisywanie pliku File (odpowiednik opcji Plik). W jednym oknie należy wpisać tekst tylko jednego programu. Rys. 3. Okno edytora w języku Turbo Pascal wraz z wpisanym programem przykładowym

62 Temat 7 3.2. Kompilacja programu Program źródłowy, który utworzyliśmy i zapisaliśmy w pliku (ćwiczenie 1), nie może być wykonywany przez komputer (procesor). Procesor bowiem nie może wykonać dokumentu tekstowego (w takim właśnie formacie zapisany jest program źródłowy). Pisząc program w języku programowania, przygotowujemy jedynie źródło do utworzenia kodu maszynowego, czyli programu rozumianego przez komputer. Komputer, a dokładniej procesor, wykonuje program w kodzie maszynowym (w języku wewnętrznym procesora). Tworzenie programów w takim języku jest bardzo trudne (patrz przykład na rys. 4), czasem wręcz niemożliwe. Dlatego programiści używają języków zrozumiałych dla człowieka. Język wysokiego poziomu charakteryzuje się przejrzystą strukturą; nie zależy od architektury komputera. Język niskiego poziomu posługuje się instrukcjami, które odpowiadają danym instrukcjom konkretnego procesora. Kod maszynowy program napisany w języku wewnętrznym (maszynowym), rozumianym przez procesor. Interpretacja tłumaczenie programu źródłowego na kod maszynowy instrukcja po instrukcji. Tłumaczenie następuje przy każdorazowym uruchomieniu programu. Kompilacja tłumaczenie programu źródłowego na kod maszynowy. Raz skompilowany program nie wymaga już powtórnego tłumaczenia. Program może występować w dwóch postaciach: jako program źródłowy postać zrozumiała dla programisty, jako kod maszynowy (program wykonywalny) zapisany w języku maszynowym, zrozumiałym dla komputera. Program napisany w języku wysokiego poziomu (w naszym przypadku w Pascalu) musi zostać przetłumaczony na język niskiego poziomu (język wewnętrzny komputera). Proces ten nazywamy translacją (z ang. translate tłumaczyć). Może ona przebiegać w formie kompilacji lub interpretacji, a używa się do tego celu specjalnego programu do tłumaczenia programu na kod maszynowy translatora. Programy tłumaczące, czyli translatory, dzielą się na: interpretery każde polecenie programu jest po jego uruchomieniu na bieżąco zamieniane na kod maszynowy, kompilatory cały program jest przekładany na kod maszynowy. Przykładem języka interpretowanego (interpretera) jest język LOGO (patrz tabela rys. 1), który często omawialiśmy na lekcjach informatyki w gimnazjum. W zadaniach rozwiązywanych w tym podręczniku będziemy używać m.in. kompilatora języka Turbo Pascal. Program w kodzie maszynowym (rys. 4) składa się z ciągu wartości binarnych, które oznaczają zarówno instrukcje, jak i dane. Postać kodu maszynowego zależy od procesora, na który dany Program źrółówy Rys. 4. Program w języku wysokiego poziomu (Pascal) oraz ten sam fragment programu w kodzie maszynowym i w assemblerze Aktualnie wykonywana instrukcja Program wynikowy w assemblerze

Temat 7 63 program jest przeznaczony. Język maszynowy jest językiem niskiego poziomu. Elementy tego języka odwzorowują architekturę komputera instrukcje zależą od tego, jaki mamy komputer program nie będzie działał na innym sprzęcie. Natomiast język Pascal należy do języków wysokiego poziomu na każdym komputerze działa tak samo; im bardziej zbliżony jest do języka naturalnego, tym jego poziom jest wyższy. Ćwiczenie 2 Skompiluj program utworzony w ćwiczeniu 1. Wskazówki: Aby skompilować program, wybieramy opcję Compile. 3.3. Uruchomienie i wykonanie programu Uruchomiony i wykonywany może być program, który jest skompilowany poprawnie. W trakcie wykonywania programu procesor rozpoznaje i wykonuje instrukcje swojego wewnętrznego języka. W jednej z części procesora arytmometrze są wykonywane operacje arytmetyczne (patrz więcej temat 16). Po wykonaniu programu wyniki pojawią się na wybranym urządzeniu zewnętrznym. W naszym przypadku na ekranie monitora, ale mogą być również wyprowadzone do pliku (czyli w nim zapisane) lub wydrukowane. Rys. 5. Po udanym zakończeniu kompilacji pojawi się informacja w takim oknie Rys. 6. Na ekranie monitora widoczny jest efekt wykonania programu w postaci zapisu Pierwszy program Ćwiczenie 3 Uruchom swój pierwszy program. Wskazówki: Należy wybrać opcję Run program zostanie uruchomiony i wykonany. Jeśli wcześniej nie wykonasz kompilacji, to wybranie opcji Run spowoduje, że i tak zostanie ona przeprowadzona. 3.4. Testowanie programu Prosty program, który tworzyliśmy w pierwszych ćwiczeniach, nie wymaga praktycznie testowania. Efektem działania tego programu było wyprowadzenie tekstu na ekran monitora. Program trudniejszy, w którym występuje wiele zmiennych i różne na nich działania, należy przetestować prześledzić jego działanie dla kilku różnych wartości zmiennych. Podobnie postępowaliśmy w przypadku prezentacji algorytmu w postaci listy kroków czy schematu blokowego. Uwaga: Aby zobaczyć efekt wykonania programu, trzeba nacisnąć Alt + F5, bo po wykonaniu programu bardzo szybko następuje powrót do edytora i na ekranie nie widać wyprowadzonych wyników. Ćwiczenie 4 Wpisz w oknie edytora Pascala tekst programu z przykładu 1. Skompiluj i uruchom ten program. Sprawdź jego działanie dla różnych wartości zmiennych. Wskazówki: 1. Możesz skorzystać z pliku tego programu zapisanego na CD. 2. Pamiętaj, że procedura Readln czyta dane z klawiatury, więc w momencie jej realizacji następuje zatrzymanie wykonywania programu i oczekiwanie na wprowadzenie danych z klawiatury. Aby prześledzić wykonywanie programu, można skorzystać z gotowego narzędzia tzw. debuggera często wbudowywanego do programu kompilatora. Nazywa się go też odpluskwiaczem (z ang. bug pluskwa). Nazwa debugger powstała w 1945 roku. Wyniknęła z faktu, że w przekaźnikach używanego wówczas elektromechanicznego komputera Mark II zagnieździły się... karaluchy.

64 Temat 7 4. Problemy z błędami kompilacji i wykonania Ćwiczenie 5 1. Przepisz dokładnie program w podanej postaci i wykonaj jego kompilację. program Test Writeln( drugi program ) end 2. W oknie edytora pojawi się opis błędu ( ; expected oznacza, że brakuje średnika po nazwie programu). Popraw program, wstawiając ten średnik. Skompiluj ponownie. 3. Program jest sprawdzany od początku, ale kompilator wykrył kolejny błąd Unexpected end of file. Jak sądzisz, jaki to błąd? Można spotkać się z następującymi rodzajami błędów: Błędy kompilacji wykrywane w czasie kompilacji, np. błędnie zapisane słowo kluczowe, zła postać instrukcji, źle wstawiony znak interpunkcyjny lub jego brak. Wśród błędów wykrywanych podczas kompilacji są też błędy syntaktyczne np. zastosowanie zbyt wielu wyjść z instrukcji (warunkowej). Błędy wykonania np. dzielenie przez zero, brak wolnej pamięci, brak dostępu do pliku. Błędy te nie są wykrywane podczas kompilacji, a dopiero w trakcie wykonywania programu (są to sytuacje, w których kontynuacja wykonania programu nie jest możliwa). Błędy logiczne (specyfikacji) np. zapętlenie programu, nieokreślone wartości zmiennych; przy wprowadzaniu pewnych wartości zmiennych program działa dobrze, przy wprowadzaniu innych źle. Ogólnie program nie robi tego, czego się od niego oczekuje. Błędy te nie są wykrywane podczas kompilacji. Niemożliwe jest automatyczne wykrycie takiego błędu, ponieważ komputer nie wie, co tak naprawdę chcemy osiągnąć. 5. Zapis algorytmu z warunkami w języku Pascal 5.1. Warunek prosty Postać instrukcji warunkowej w języku Pascal jest podana w tabeli na rys. 2. Wyrażenie, które występuje po słowie kluczowym if, może być warunkiem logicznym prostym, np. x > 0, a <> 9, liczba <= -5, lub złożonym, np. (x > -5) and (y >= 0). W przypadku warunku złożonego potrzebne są nawiasy. Stosujemy następujące operatory logiczne: = (równy), > (większy) < (mniejszy), >= (większy lub równy), <= (mniejszy lub równy), <> różny, or (alternatywa), and (koniunkcja), not (negacja). Podajemy dwie formy instrukcji warunkowej (patrz tabela na rys. 2). W tej, w której brak części zaczynającej się od słowa else, w przypadku niespełnienia warunku jest wykonywana od razu kolejna instrukcja zapisana po instrukcji warunkowej. Przykład 3 Algorytm znajdowania wartości bezwzględnej liczby rzeczywistej. Uwagi: 1. Aby ekran monitora był wyczyszczony przed każdorazowym uruchomieniem programu, można skorzystać ze standardowej procedury bez parametrów ClrScr, którą należy zapisać na początku programu. Procedura ta zdefiniowana jest w standardowym module Crt, dlatego w części deklaracyjnej dodajemy: uses Crt.

Temat 7 65 2. W nazwie programu i nazwach zmiennych należy stosować tylko litery i cyfry, gdyż nie mogą występować w nich tzw. znaki specjalne, takie jak spacja, :, %, * ). Spację zastępuje się znakiem podkreślenia. W nazwach nie stosujemy polskich znaków diakrytycznych; wielkie i małe litery są nierozróżnialne, np. nazwa suma oznacza to samo, co Suma. Polskie litery można stosować tylko w napisach, np. w procedurze Writeln. Ćwiczenie 6 program Liczba_bezwgledna; uses Crt; var x,w: real; ClrScr; readln(x); if x >= 0 then w := x else w := -x; Writeln( wartość bezwzględna liczby x =, w); Przepisz program podany w przykładzie 3, korzystając z kompilatora Pascala. Zapisz program w pliku, a następnie porównaj go z zapisem tego samego algorytmu w postaci listy kroków (patrz przykład 5 w temacie 1), zwracając uwagę na zapis instrukcji warunkowej. Skompiluj i wykonaj program dla kilku różnych wartości zmiennych. 5.2. Warunek zagnieżdżony Realizację algorytmów zawierających warunki zagnieżdżone prezentowaliśmy w postaci listy kroków i schematów blokowych (temat 3) oraz w pseudojęzyku (temat 4). Instrukcje warunkowe if również mogą się zagnieżdżać. Należy przestrzegać zasady, że każda część else przyporządkowana jest najbliższej, poprzedzającej ją części then. Przykład 4 Algorytm wyboru najmniejszej z trzech liczb całkowitych. Uwagi: 1. Zmienne zostały zadeklarowane jako liczby typu całkowitego integer; do typu integer należą liczby z zakresu od -32768 do 32767. 2. W przypadku instrukcji zagnieżdżonych zaleca się pisać słowo kluczowe else bezpośrednio pod odpowiadającym mu słowem then (dla zachowania czytelności). 3. Tylko zewnętrzna instrukcja warunkowa powinna kończyć się średnikiem. 4. Umieszczenie pod koniec programu procedury Readln bez parametrów spowoduje, że powrót do okna edytora nastąpi dopiero po naciśnięciu klawisza Enter. Ćwiczenie 7 program Minimum; uses Crt; var a, b, c, min: integer; ClrScr; Writeln( podaj trzy liczby ); Readln(a, b, c); if a < b then if a < c then min := a else min := c else if b < c then min := b else min := c; Writeln( minimum wynosi =, min); Readln; Przepisz program podany w przykładzie 4, korzystając z kompilatora Pascala. Zapisz program w pliku. Zwróć uwagę na zapis zagnieżdżonych instrukcji warunkowych. Skompiluj i uruchom program. Przetestuj go dla następujących wartości zmiennych: (3; -56; 0), (76; 123; -2), (44; 44; 44); (-70; -40; -40), (56; 68; 88), (100; 0; 2).

66 Temat 7 program Obliczanie_iloczynu; uses Crt; var i, n, iloczyn: word; ClrScr; iloczyn := 1; Writeln( podaj liczbę danych ); Readln(n); for i := 1 to n do iloczyn := iloczyn*i; Writeln( iloczyn =, iloczyn); Readln; 6. Realizacja algorytmów iteracyjnych w Pascalu 6.1. Pętle proste Programy komputerowe tworzy się dla czynności wielokrotnie powtarzanych, stąd znaczenie instrukcji pętli w programowaniu jest bardzo duże. Postać instrukcji iteracyjnej for w języku Pascal została podana w tabeli na rys. 2. Instrukcję tę stosujemy, gdy liczba kroków iteracji jest znana. Dokładne jej działanie zostało omówione w temacie 4 na przykładzie odpowiadającej jej instrukcji DLA w pseudojęzyku. Pozostałe dwie instrukcje iteracyjne Pascala, w których nie trzeba z góry określać liczby powtórzeń, zostaną omówione w temacie 10. Wartość w1 i w2 musi być zgodna w sensie przypisania z typem zmiennej sterującej. Ponadto w postaci ze słowem kluczowym do powinien być spełniony warunek: w1 <= w2, a w postaci ze słowem kluczowym downto odwrotnie. Instrukcja pętli może mieć postać: for i := 1 to k do Writeln( x ) lub for i := 1 to n + 1 do Writeln( x ) lub for i := 20 downto 1 do Writeln( x ). Przykład 5 Algorytm obliczania iloczynu n kolejnych liczb naturalnych (począwszy od 1). Uwagi: 1. Zmienne zostały zadeklarowane jako liczby typu całkowitego nieujemnego word; do typu word należą liczby z zakresu od 0 do 65535. 2. Zmiennej iloczyn na początku programu przypisujemy wartość 1, aby była poprawnie określona w wykonywanej po raz pierwszy instrukcji przypisania iloczyn := iloczyn i. Gdybyśmy tego nie zrobili, może zostać jej przypisana przypadkowa wartość, np. zero. Ćwiczenie 8 Na CD w pliku T7-przykład5 zapisany jest program z przykładu 5: 1. Uruchom i przetestuj program dla kilku różnych wartości zmiennych. 2. Zmień typ wszystkich zmiennych na typ całkowity byte (są to liczby z zakresu od 0 do 255). Omów skutki tej zmiany, testując program kolejno dla wartości n: 3, 5, 7, 10. Ćwiczenie 9 6.2. Pętle zagnieżdżone Napisz program realizujący algorytm sumowania n dowolnych liczb rzeczywistych. Odwołaj się do schematu blokowego tego algorytmu i programu zapisanego w pseudojęzyku (przykład 3 i 4 w temacie 5) porównaj wszystkie sposoby przedstawienia iteracji. Instrukcje iteracyjne for mogą się zagnieżdżać, czyli po słowie do może wystąpić kolejna instrukcja iteracyjna, np. for i := 1 to n do for j := 1 to m do instrukcja. Liczba kroków tej iteracji określona jest przez iloczyn: n m. Przykład 6 Algorytm, który umożliwi wyprowadzenie na ekran monitora prostokąta narysowanego za pomocą znaków x o bokach n, m (m liczba znaków x w poziomie, n liczba znaków x w pionie). Wnętrze prostokąta ma być również wypełnione znakami x. Program w języku Pascal i schemat blokowy (patrz ramka i rys. 7 na drugiej stronie).

Temat 7 67 Uwaga: Procedura Writeln bez parametrów oznacza przejście kursora do nowego wiersza. Ćwiczenie 10 program Prostokat; uses Crt; var i, j, n, m : integer; ClrScr; Writeln( podaj wymiary prostokąta ); Readln(n, m); for i := 1 to n do for j := 1 to m do Write( x ); Writeln; end; Readln; Na CD w pliku T7-przykład6 zapisany jest program z przykładu 6. 1. Uruchom i przetestuj program dla kilku różnych wartości zmiennych. 2. Dlaczego zapis Write( x ) jest bez końcówki ln? Dodaj tę końcówkę i sprawdź działanie programu. TAK START Wprowadź(n, m) i := 1 Czy i > n? j := 1 NIE Warto zapamiętać Aby algorytm był zrozumiały dla komputera, trzeba go zapisać w postaci programu w konkretnym języku programowania. Języki te klasyfikujemy według różnych kryteriów. Wyróżniliśmy cztery etapy programowania: implementację, kompilację (interpretację), uruchomienie i wykonanie, testowanie. Pytania, problemy 1. Wymień te cechy języka programowania, które odróżniają go od języka natu ralnego. 2. Omów cechy charakteryzujące języki wysokiego i niskiego poziomu. Podaj przykłady takich języków. 3. Na czym polega kompilacja programu? 4. Przedstaw i omów na konkretnym przykładzie etapy programowania. 5. Omów rodzaje błędów, które występują podczas programowania. Z jakimi błędami najczęściej spotyka się niedoświadczony programista? Zadania 1. Napisz program realizujący algorytm znajdowania większej z dwóch liczb rzeczywistych (bez sprawdzania warunku, czy liczby są równe). 2. Tak zmodyfikuj program z zadania 1, aby w przypadku liczb równych wyprowadzał napis: liczby są równe. 3. Sprawdź następujący fragment programu (powinien realizować algorytm wyboru najmniejszej z trzech liczb). Program w całości zapisany jest na CD w pliku T7-zadanie3. Skompiluj i uruchom go, a następnie przetestuj dla różnych wartości. Z jakim rodzajem błędu się tu spotkałeś? if a < b then if a < c then min := a else if b < c then min := b else min := c; TAK Czy j > m? Wyprowadź( x ) j := j + 1 Przejdź do nowego wiersza i := i + 1 KONIEC NIE Rys. 7. Schemat blokowy algorytmu z pętlami zagnieżdżonymi

68 Temat 7 4. Napisz program sprawdzający, czy z odcinków o długościach wprowadzonych przez użytkownika z klawiatury można zbudować trójkąt (warunek istnienia trójkąta). Liczby zadeklaruj jako byte. Program ma sprawdzać dziesięć takich trójek liczb i zależnie od rezultatu wyprowadzać komunikaty: można zbudować trójkąt lub nie można zbudować trójkąta. 5. Napisz program sprawdzający, czy wprowadzone trzy liczby naturalne są bokami trójkąta prostokątnego. Liczby zadeklaruj jako byte. Program ma sprawdzać dziesięć takich trójek liczb i zależnie od rezultatu wyprowadzać komunikaty tak lub nie. 6. Na podstawie następujących fragmentów programów napisz, jakie są wyniki ich działania: a. for i := 1 to 20 do Write( $ ); writeln; b. for i := 1 to 20 do Writeln( $ ); 7. Uzupełnij program z przykładu 3 o możliwość wykonywania go dla n danych (n wprowadzane z klawiatury). 8. Zapisz następujące zadania w postaci programów, na podstawie gotowych schematów blokowych: a. zadanie 2 w temacie 3, b. zadanie 5 w temacie 3; dodatkowo program ma działać dla n dowolnych liczb rzeczywistych (n wprowadzane z klawiatury). 9. Zapisz zadanie 2 (temat 4) w postaci programu w języku Pascal na podstawie jego zapisu w pseudojęzyku. 10. Napisz w języku Pascal program rozwiązywania równania liniowego na podstawie listy kroków (przykład 8 w temacie 3). Dodatkowo program ma działać dla n par współczynników (skorzystaj też z zadania 5 w temacie 4 jeśli je rozwiązałeś). 11. Napisz program realizujący algorytm sumowania n dowolnych liczb rzeczywistych (patrz przykład 4 w temacie 5 gdzie ten sam algorytm został zrealizowany w pseudojęzyku). Dla zainteresowanych 12. Napisz program realizujący algorytm, który umożliwi wyprowadzenie na ekran monitora prostokąta o bokach n x m, składającego się z liter A i B, występujących co drugi wiersz (m liczba znaków A lub B w poziomie, n liczba znaków A lub B w pionie). 13. Napisz program realizujący algorytm, który umożliwi wyprowadzenie na ekran monitora szachownicy składającej się z zer i jedynek. 14. Napisz program realizujący algorytm rozwiązywania równania kwadratowego (patrz schemat blokowy w ELI ćwiczenie 8 w temacie 3). 15. Omów szczegółowo klasyfikacje języków programowania według kryteriów podanych w tabeli na rys. 1. 16. Zapoznaj się z debuggerem wbudowanym do kompilatora języka Pascal. 17. Wyjaśnij, na czym polega konsolidacja (linkowanie). Poszukaj informacji w dodatkowych źródłach. Warto jeszcze wiedzieć Język Pascal powstał w 1971 roku. Zaprojektował go Niklaus Wirth z politechniki w Zurychu. Później zaczęły powstawać liczne wersje tego języka przeznaczone dla mikrokomputerów, takich jak ZX Spectrum, Commodore, Atari. Wielką popularność zdobyła w 1983 roku jego odmiana Turbo Pascal, zaprojektowana przez firmę Borland i przeznaczona dla mikrokomputerów klasy IBM. Turbo Pascal ma dobrze zintegrowane środowisko: edytor, debugger i projekty, doskonałą pomoc, jak również możliwość programowania obiektowego.