I
INFORMATYKA- zespół dyscyplin naukowych i technicznych zajmuj --> [Author:M] ących się przetwarzaniem informacji, zwłaszcza przy użyciu środków automatycznych.
INFORMACJA- każdy czynnik, dzięki któremu obiekt odbierający go może polepszyć swoją znajomość otoczenia i bardziej sprawnie przeprowadzić celowe działanie.
DANA- informacja przedstawiona w sposób dogodny do przechowywania, przesyłania lub przetwarzania.
KOMPUTER- urządzenie elektroniczne przeznaczone do automatycznego przetwarzania informacji według zadanych algorytmów. Istotna cecha komputera odróżniającą go od innych urządzeń przetwarzających informacje: możliwość zmiany algorytmów w zależności od potrzeb i rodzaju przetwarzanych danych.
ALGORYTM- zbiór reguł postępowania, mający na celu w skończonej liczbie kroków przetworzenie informacji wejściowych w informacje wyjściowe.
PROCESOR- główny element komputera, którego zadaniem jest wykonywanie rozkazów i sterowanie pracą wszystkich pozostałych bloków(pamięci, układów wejścia-wyjścia). W jego skład wchodzą: zegar, układ sterowania, jednostka arytmetyczno-logiczna oraz zespół rejestrów służących np. do pamiętania wyników przejściowych.
JEDNOSTKA arytmetyczno-logiczna - układ wykonujący podstawowe operacje arytmetyczno-logiczne.
REJESTR- blok funkcjonalny służący do pamiętania danych cyfrowych, tj. danych reprezentowanych przez ciąg cyfr.
PODSTAWOWE PARAMERTY PROCESORA: - długość słowa ; - liczba rejestrów i ich przeznaczenie ; - lista rozkazów ; - szybkość działania.
SŁOWO KOMPUTERA- ciąg bitów o ustalonej długości, który w różnych operacjach wewnętrznych jest traktowany niepodzielnie.
BIT: 1) pozycja lub cyfra słowa reprezentującego liczbę zapisaną w kodzie dwójkowym
2) jednostka ilości informacji; określa ilość informacji zawartą w komunikacie o występowaniu jednej z
dwóch możliwości.
PAMIĘĆ OPERACYJNA- pamięć główna; przechowywane są w niej informacje sterujące oraz dane podlegające przetwarzaniu. Wykonywana jest jako pamięć ulotna o dostępie swobodnym.
PAMIĘĆ ULOTNA- pamięć, której zawartość ulega zniszczeniu z chwilą wyłączenia zasilania.
PAMIĘĆ o dostępie swobodnym RAM- pamięć, w której czas dostępu do danej nie zależy od miejsca jej zapisania (adresu) w odróżnieniu od pamięci o dostępie sekwencyjnym.
PARAMETRY PAMIĘCI OPERACYJNEJ: pojemność, czas dostępu. JEDNOSTKI pojemności pamięci:
1B - bajt; 1B jest równy 8 bitom
1KB - kilobajt; 1KB= 1024B (210B)
1MB - megabajt; 1MB= 1024KB (220B)
1GB - gigabajt; 1GB= 1024MB (230B)
PAMIĘĆ TYPU ROM- pamięć stała; w czasie normalnej pracy jej zawartość może być tylko odczytywana.
PAMIĘĆ PODRĘCZNA(CACHE)- pamięć ulotna o stosunkowo niewielkiej pojemności, ale o czasie dostępu znacznie mniejszym niż pamięć operacyjna, do której stale jest wpisywana część zawartości pamięci operacyjnej z aktualnie wykonywanym fragmentem programu. Z niej pobierane są rozkazy i dane do procesora. Wyniki operacji wykonanych przez procesor zapisywane są również do pamięci operacyjnej. Pozwala przyspieszyć realizację programów.
PAMIĘĆ ZEWNĘTRZNA- pamięć masowa; zlokalizowana w zasadzie poza komputerem, zwykle o dużej pojemności i czasie dostępu znacznie większym niż czas dostępu pamięci operacyjnej. Traktowana jako urządzenie zewnętrzne. Stanowi uzupełnienie pamięci operacyjnej. Służy do przechowywania biblioteki programów i danych, nie wykorzystywanych na bieżąco, pełni rolę archiwum.
PAMIĘĆ DYSKOWA- najczęściej rodzaj pamięci magnetycznej, w której cienka warstwa materiału magnetycznego jest nałożona na wirującą płaską tarczę(dysk).
URZĄDZENIA ZEWNĘTRZNE- urządzenia dołączone do komputera za pośrednictwem układów wejścia-wyjścia. Służą do komunikacji komputera ze światem zewnętrznym.
UKŁADY WEJŚCIA-WYJŚCIA- układami dopasowującymi konwersję danych i to zarówno postaci jak i sposobu przesyłania, konwersję poziomu sygnałów elektrycznych, wzajemne dopasowanie szybkości.
OPRACOWANIE ALGORYTMÓW
Problemy: 1. Uniwersalność; 2. Szczegółowość; 3.Jednoznacznośc; 4. Kompleksowość;
5. Podbudowa teoretyczna
SIEĆ DZIAŁAŃ- schemat blokowy- poglądowa forma graficznego przedstawienia algorytmu.
SYMBOLE STOSOWANE W SIECIACH DZIAŁAŃ
NAZWA OPERACJI |
WYJAŚNIENIE |
SYMBOL |
|
Operacja lub grupa operacji, w wyniku których ulega zmianie wartość, postać lub miejsce zapisu danych |
|
|
|
|
|
Operacja określająca wybór jednej z wielu dróg działania |
|
|
Modyfikacja rozkazu lub grupy rozkazów powodująca zmianę w przebiegu procesu przetwarzania |
|
|
Proces zdefiniowany poza programem |
|
|
Więź operacyjna między poszczególnymi operacjami procesu przetwarzania |
|
|
Wskazanie kierunku przepływu danych, gdy nie jest on jednoznaczny |
|
|
|
|
|
Oznaczenie miejsca rozpoczęcia, zakończenia lub przerwania działania programu |
|
|
Oznaczenie miejsca na komentarz |
|
|
Wejście lub wyjście z wyodrębnionych fragmentów schematu znajdujących się na jednej stronie |
|
|
Wejście lub wyjście z wyodrębnionych fragmentów schematu znajdujących się na jednej stronie |
|
Przykład1. Narysować schemat blokowy programu,
w którym przewidziane jest wprowadzenie danych
wejściowych i wyprowadzanie wyników wykonanych
obliczeń.
Przykład2. Utworzyć schemat blokowy dla zadania poszukiwania max. Elementu z ciągu danych n liczb a1,a2,..,an przy założeniu n>1.
PROGRAMOWANIE- jednoznaczne formułowanie zadań oraz sposobu ich rozwiązywania na komputerze prowadzące do wykonania szeregu czynności, takich jak: -sformułowanie problemu; -określenie metody rozwiązania; -dyskusja warunków rozwiązania; -tworzenie sieci działań; -kodowanie algorytmu w wybranym języku programowania; -uruchomienie testowe programu; -opracowanie dokumentacji.
PROGRAMOWANIE STRUKTURALNE -programowanie hierarchiczne metodą zstępującą (z góry na dół).
Jest to sposób programowania wymuszający podział problemu na podproblemy, tych na następne, przy czym podział tan jest realizowany tak długo, jak długo jest to możliwe. Jest zalecane zarówno do formułowania algorytmu, jak i do zapisu go w postaci programu.
PODSTAWOWE STRUKTURY STOSOWANE W PROGRAMOWANIU STRUKTURALNYM
1.Instrukcja jako ciąg instrukcji prostszych
i1,i2,...,in;
2a. Instrukcja warunkowa o postaci
if W then I (jeżeli W wykonwj I)
tak nie
2b.Instrukcja warunkowa o postaci
if W then I1 else I2 (jeżeli W wykonaj I1, w
przeciwnym przypadku wukonaj I2). Tak Nie
3.Instrukcja iteracyjna o postaci
while W do I (powtarzaj I dopóki jest spełnioneW)
nie
tak
4.Instrukcja iteracyjna o postaci
repeat I until W ( powtarzaj I aż do spełnienia W)
nie
tak
SCHEMAT POSTĘPOWANIA PRZY TWORZENIU PROGRAMU (algorytmu) zgodnie z ideą programowania strukturalnego:
Na podstawie wstępnego sformułowania problemu budowa początkowego algorytmu jako liniowej sekwencji instrukcji (zadań, poleceń).
Rozłożenie instrukcji z punktu 1 na instrukcje prostsze z wykorzystaniem struktur instrukcji warunkowych i iteracyjnych.
Kontynuacja procesu z punktu 2 aż do uzyskania instrukcji elementarnych w danym języku programowania.
ETAPY OPRACOWANIA PROGRAMU:
Analiza problemu i sformułowanie algorytmu.
Zakodowanie programu w języku programowania
Wprowadzenie tekstu programu źródłowego do komputera
Tłumaczenie programu
Poprawienie błędów formalnych(składniowych)
Uruchamianie programu i poprawienie błędów logicznych
Opracowanie dokumentacji.
CECHY DOBREGO PROGRAMU:
Poprawność
Przystosowalność
Odporność
Stabilność
Optymalność ( zwykle mamy do czynienia z kompromisem pomiędzy oszczędnością czasu wykorzystania procesora, oszczędnością pamięci, krótkim czasem reakcji systemu, krótkim czasem oczekiwania na obsługę).
ŹRÓDŁA BŁĘDÓW W REALIZACJI NA KOMRUTERZE ALGORYTMÓW DOKŁADNYCH
Stosowanie metod numerycznych, zakładających:
wykorzystanie metod przybliżonych, np. zastąpienie pochodnej jej ilorazem różnicowym
obcinanie procesów nieskończonych do skończonych, np. zastąpienie całkowania obliczaniem skończonych sum.
2. Operowanie przez komputer na liczbach mających skończone rozwinięcie dwójkowe.
II
PROGRAM- algorytm przetwarzania danych zapisany w określonym języku programowania.
JĘZYK PROGRAMOWANIA- język, za pomocą którego można zapisywać algorytmy przetwarzania danych dla komputera.
OPROGRAMOWANIE KOMPUTERA- zbiór wszystkich programów, które komputer jest w stanie wykonać.
Zwykle wyróżniane są dwie podstawowe kategorie oprogramowania: - oprogramowanie podstawowe; -oprogramowanie użytkowe.
OPROGRAMOWANIE PODSTAWOWE obejmuje: system operacyjny, translatory języków programowania, standardowe programy usługowe, programy diagnostyczne.
OPROGRAMOWANIE UŻYTKOWE - obejmuje wszystkie programy przeznaczone do wykonywania określonych zadań wynikających z potrzeb użytkownika komputera i tworzone we własnym zakresie przez tego użytkownika lub dostarczane przez wyspecjalizowane firmy.
SYSTEM OPERACYJNY- zbiór specjalnych programów zarządzających pracą systemu komputerowego i ułatwiających zarówno tworzenie, jak i wykonywanie programów użytkowych. Jest pośrednikiem pomiędzy użytkownikiem a komputerem.
GŁÓWNE ZADANIA SYSTEMU OPERACYJNEGO:
optymalizacja wykorzystania zasobów komputera (procesora, pamięci, urządzeń zewnętrznych).
ochrona programów i danych przed przypadkowym lub celowym uszkodzeniem.
maksymalne uniezależnienie programów użytkowych od ewentualnych zmian w konfiguracji systemu komputerowego
ułatwienie pracy z komputerem poprzez udostępnienie dodatkowych funkcji i zasobów nie istniejących w nie oprogramowanym komputerze.
PLIK (FILE)- zbiór wzajemnie powiązanych zapisów, dotyczących określonego problemu, zapisanych na nośniku w ten sposób, że może być traktowany w procesie komputerowego przetwarzania danych jako wyodrębniona całość. Nazwa pliku składa się z nazwy właściwej(max. 8 znaków) i ewentualnie rozszerzenia(max 3 znaki) oddzielonego od nazwy właściwej kropką.
SYSTEM DOS - Nazwy zarezerwowane dla nazw urządzeń:
CON - konsola, tj. klawiatura i ekran
AUX lub COM1 - pierwszy asynchroniczny adapter komunikacji
COM2 - drugi asynchroniczny adapter komunikacji
LPT1 lub PRN - pierwsza drukarka równoległa
LPT2 - druga drukarka... LPT3 - trzecia drukarka...
NUL - urządzenie fikcyjne stosowane do celów testowych.
Zastrzeżone nazwy plików: Io.sys ; config.sys ; Msdos.sys ; autoexec.bat ; command.com ;
KARTOTEKA - katalog (directory) ; zbiór nazw plików na dysku. Kartoteka i tzw. tablica alokacji plików pozwalają systemowi operacyjnemu rozpoznawać i organizować pliki na dysku.
TABLICA ALOKACJI PLIKÓW- File Allocation Table (FAT); obszar plików systemowych dysku, w którym pamiętana jest lokalizacja poszczególnych plików na dysku i lokalizacja wolnych obszarów dysku.
DRZEWKO KARTOTEK - hierarchiczna struktura kartotek istniejących na dysku. Korzeń drzewa kartotek stanowi kartoteka systemowa (główna), która jest zakładana podczas przygotowywania dysku do wykorzystania na komputerze (tzw. formatowania).
ŚCIEŻKA DOSTĘPU DO PLIKU - identyfikator dysku i lista nazw kartotek pomiędzy kartoteką główną a kartoteką, w której znajduje się plik, łącznie z nazwą tej kartoteki oraz nazwa pliku oddzielone ukośnikami \. Katalog główny nie ma nazwy, więc pełna lista kartotek rozpoczyna się od ukośnika.
ORGANIZACJA SYSTEMU OPERACYJNEGO DOS - system operacyjny DOS ma strukturę modułową, tj. składa się z wielu samodzielnych części zwanych modułami. Przechowywany jest na dysku twardym lub dyskietce, a do pamięci operacyjnej wprowadzane są tylko moduły potrzebne w danej chwili.
PODZIAŁ KOMEND SYSTEMU DOS:
komendy wewnętrzne ( są obsługiwane przez program command.com, który jest wczytywany do pamięci RAM w czasie inicjacji systemu i pozostaje tam, aż do wyłączenia komputera, chyba że inny program usunie go z pamięci)
komendy zewnętrzne (są obsługiwane przez programy, które pozostają na dysku i są wczytywane do pamięci RAM dopiero po wydaniu tych komend.
OPERACJE NA KARTOTEKACH - komendy:
DIR- wyświetlanie listy plików i podkartotek w kartotece
dir/p zatrzymywanie obrazu na ekranie po jego zapełnieniu
dir/w wyświetlanie po pięć nazw w wierszu
dir/a wyświetlanie plików z podanymi atrybutami
dir/o wyświetlanie plików w wybranym porządku
dir/s wyświetlanie plików w kartotece i we wszystkich jej podkartotekach
dir/b wyświetlanie samych nazw plików bez informacji wiodącej i kończącej
dir/l wyświetlanie małymi lirerami
CD (CHDIR) - zmiana kartoteki bieżącej albo wyświetlanie kartoteki bieżącej we wskazanym napędzie
MD (MKDIR) - tworzenie kartoteki
RD (RMDIR) - usuwanie kartoteki
OPERACJE NA PLIKACH - komendy:
COPY- kopiowanie jednego albo większej liczby plików w nowe miejsce
DEL (ERASE) - usuwanie pliku lub plików
UNDELETE - odtworzenie pliku albo plików, które poprzednio były usuwane
REN (RENAME) - zmiana nazwy pliku lub plików
TYPE - wyświetlanie zawartości pliku tekstowego
MORE - wyświetlanie pliku tekstowego partiami po jednej stronie
PRINT - drukowanie pliku tekstowego na drukarce
XCOPY - kopiowanie plików (bez ukrytych i systemowych) i kartotek
/s- kopiowanie kartoteki i niepustych podkartotek
/e- kopiowanie dowolnych podkartotek, również pustych
/v- weryfikacja poprawności zapisu nowych plików
/w- kopiowanie dopiero po naciśnięciu dowolnego klawisza klawiatury
OPERACJE NA DYSKACH - komendy:
FORMAT - formatowanie dysku (/v - określenie etykiety; /f - określenie pojemności pamięci dyskowej po sformatowaniu; /s kopiowanie zbiorów systemowych na dysk).
LABEL - nadawanie, zmiana lub kasowanie etykiety dysku umieszczonego w napędzie
VOL - wyświetlanie etykiety i numeru seryjnego
SYS - kopiowanie zbiorów systemowych i interpretacja poleceń command.com z napędu1 do napędu2
DISKCOPY - kopiowanie zawartości dyskietki w napędzie1 na dyskietkę w napędzie2.
POLECENIA KONFIGURACYJNE - komendy:
DATE - ustawienie daty systemowej
TIME - usuwanie zegara systemowego
VER - wyświetlanie wersji systemu operacyjnego
PATH - ustawianie ścieżki poszukiwań
III
PISANIE PRODRAMÓW W TP - informacje ogólne
ZNAKI PRZEWIDZIANE DO TWORZENIA konstrukcji językowych w TP
litera alfabetu łacińskiego oraz znak podkreślenia
cyfry arabskie
symbole specjalne: + - * / = > < [ ] . , ( ) : ; ^ ` @ { } $ #
znak odstępu (spacja)
znaki sterujące ASCII o kodach od 0 d0 31
słowa kluczowe
Niektóre znaki specjalne pełnią rolę operatorów, są to:
operatory arytmetyczne (+ dodawanie; - odejmowanie; * mnożenie; / dzielenie)
operatory relacji( = równy, < mniejszy, > większy)
operator adresowy @
operator przepisania :=
operator relacji: <> różny, <= mniejszy równy, >= większy równy
niektóre elementy języka jak: (. .) odpowiedniki znaków [ (lewego nawiasu kwadratowego) oraz ] (prawego nawiasu kwadratowego)
(* *) odpowiedniki znaków { (lewego nawiasu klamrowego) oraz } (prawego nawiasu klamrowego).
KOD ASCII - kod dwójkowy służący do reprezentacji: znaków alfanumerycznych ( litery i cyfry); znaków przystankowych; innych znaków występujących w tekstach (apostrof, gwiazdka itd.); znaków sterujących pracą urządzeń, nie mających reprezentacji graficznej.
SŁOWO KLUCZOWE JĘZYKKA TP - słowo o specjalnym znaczeniu. Niedopuszczalne jest użycie takiego słowa w sposób inny, niż to wynika z reguły języka.
IDENTYFIKATOR (nazwa)- ciąg następujących po sobie znaków, przy czym pierwszy znak musi być literą bądź znakiem podkreślenia, a każdy z następujących: literą, znakiem podkreślenia bądź cyfrą. Nie jest określona w sposób jawny maksymalna liczba znaków w identyfikatorze. Ustalone jest jedynie, że 63 pierwsze znaki są znakami znaczącymi.
ZASADA UNIKALNOŚCI IDENTYFIKATORÓW -jeden identyfikator może być wykorzystywany w jednym tylko znaczeniu, chyba że możliwe jest podanie różnych kwalifikatorów dla identyfikatora.
KOMENTARZ - ciąg znaków stosowany w celu podania informacji użytecznych dla użytkownika lub w celu zwiększenia czytelności programu.
jest to ciąg znaków zawarty w nawiasach klamrowych{} albo pomiędzy parami znaków (* oraz *).
może on być umieszczony w dowolnym miejscu programu tj. przed, wewnątrz tekstu programu. Nie może występować wewnątrz identyfikatorów, słów kluczowych oraz liczb
nie ma ograniczeń co do liczby wierszy tekstu, który ma on stanowić.
KOMENTARZ ZAGNIEŻDŻONY- komentarz występujący wewnątrz innego komentarza. Można umieszczać jeden komentarz wewnątrz drugiego, o ile ograniczniki pierwszego z nich są różne od ograniczników drugiego.
Ogranicznik komentarza nie może wystąpić wewnątrz komentarza.
Np.: {jest to przykład zagnieżdżania komentarzy(*komentarz zagnieżdżony*)}
DYREKTYWA KOMPILATORA- polecenie dla kompilatora; komentarz o ściśle określonej treści. Pierwszym znakiem takiego komentarza jest znak $. Po nim bezpośrednio występuje nazwa jedno-bądź kilkuznakowa charakterystyczna dla danej dyrektywy, a następnie parametry kompilatora. Miejsce wystąpienia dyrektywy kompilatora związane jest z celem jej zastosowania.
PODZIAŁ DYREKTYW:
dyrektywy globalne - skutki odnoszą się do całego programu (muszą być umieszczone przed początkiem programu)
dyrektywy lokalne - skutki mają charakter lokalny (mogą być umieszczane wewnątrz programu).
IV
ZASADY PISANIA PROGRAMÓW W TP.
POSTAĆ PROGRAMU- składa się z: nagłówka programu ( program nazwa_programu) i bloku programu (1.części opisowej; 2.części wykonawczej.)
CZĘŚĆ WYKONAWCZA(operacyjna) bloku programu - część programu, w której wyszczególniane są czynności wykonywane przez program.
Przykład prostego programu:
program przykład(Input,Output); (nagłówek programu)
begin
Writeln;
Writeln(` *Jest to program przykładowy *');
Writeln
end.
INSTRUKCJA W TP- przepis wykonania określonej operacji. Stanowi elementarny składnik programu. Jest ona ściśle określona w danym języku programowania. -Liczba linii programu, w których ma być zapisana jedna instrukcja nie jest ograniczona. -Poszczególne instrukcje oddziela się od siebie za pomocą średnika. -Dopuszczalne jest umieszczanie dwóch średników obok siebie.
INSTRUKCJA PUSTA- instrukcja nie powodująca wykonania żadnej czynności, zapisywana za pomocą pustego ciągu znaków, tj. bez użycia jakiegokolwiek znaku. -Drugi spośród dwóch średników umieszczonych obok siebie jest traktowany jako separator oddzielający tę instrukcję od instrukcji następnej. -Instrukcja ta jest wprowadzana w to miejsce programu, w którym winna wystąpić instrukcja, ale chce się uniknąć wykonania jakichkolwiek akcji. -Stosuje się ją w celu: a) uproszczenia problemów związanych ze składnią, tj. z zapisem programu; b) ułatwienia strukturalnego projektowania programów.
CZĘŚĆ WYKONAWCZA cd. -oprócz instrukcji w części wykonawczej programu mogą wystąpić: -lokalne dyrektywy kompilatora; -komentarze. Przy wprowadzaniu instrukcji do części wykonawczej często zachodzi konieczność użycia literałów lub identyfikatorów. Tylko takie identyfikatory mogą być użyte, które są: identyfikatorami predefiniowanymi ; zdefiniowane bądź zadeklarowane w programie (w części opisowej)
LITERAŁ- stała, której postać jest ściśle określona. Nie jest zdefiniowany w programie. Takie literały jak: liczby, znaki, łańcuchy nie są związane z żadną definicją ani deklaracją w programie.
Literałami są: 1- liczba całkowita dziesiętna; $F1- liczba całkowita szesnastkowa; -372.43e+0- liczba rzeczywista w postaci wykładniczej; `Z'- znak Z; `PASCAL'- łańcuch znaków.
IDENTYFIKATOR PREDEFINIOWANY(nazwa predefiniowana) - identyfikator, który bez wcześniejszego określenia w programie jego znaczenia może być w tym programie stosowany. Znaczenie jego zostało określone na etapie tworzenia tego języka. W TP identyfikatory predefiniowane zostały zgrupowane w tzw. modułach standardowych. By móc wykorzystywać identyfikatory predefiniowane, które są definiowane w innych modułach niż system, należy podać deklarację wykorzystania właściwych modułów.
Deklaracja wykorzystania modułów:
uses lista_nazw_modułów;
(deklaracja ta musi wystąpić na samym początku części opisowej programu)
Przykład programu z deklaracją wykorzystania modułu.
program czyszczenie_ekranu;
uses Crt;
begin
clrscr {Identyfikator predefiniowany w module Crt}
end.
CZĘŚĆ OPISOWA- część programu gdzie określa się znaczenie identyfikatorów wprowadzanych w programie? Znaczenie wszystkich identyfikatorów, nie będących identyfikatorami predefiniowanymi ustala się przed ich wykorzystaniem w definicjach albo deklaracjach w części opisowej programu.
Przykład programu z częścią opisową
program czytanie_wektora;
uses Crt;
const n=10;
type zakres=-n..n;
var i: zakres;
A: array[zakres] of Real;
begin
clrscr;
writeln(`Czytanie kolejnych elementów wektora');
for i:=-n to n do Read(a[i]);
readln
end.
ZASADY OKREŚLENIA KOLEJNOŚCI DEFINICJI I DEKLARACJI W CZĘŚCI OPISOWEJ PREGRAMU.
Istnieje duża dowolność w ustalaniu kolejności definicji i deklaracji w części opisowej programu. Nieliczne zasady, które należy przy tym przestrzegać są następujące: 1. Jeżeli w programie występuje deklaracja wykorzystania modułów, to musi ona być na samym początku części opisowej przed wszystkimi innymi deklaracjami i definicjami. 2. Znaczenie każdego identyfikatora wykorzystywanego w definicji bądź deklaracji jakiegoś innego identyfikatora powinno być wcześniej określone.
STRUKTURY DANYCH W TP
TYP DANEJ- cecha danej wskazująca zbiór wartości (odpowiednik dziedziny w matematyce), które może dana przyjmować oraz zbiór możliwych operacji, jakie można wykonywać na tych wartościach. Może mieć swój identyfikator.
Typy danych:
1. Proste ( a)porządkowe; b)rzeczywiste)
2. Łańcuchowe
3. Strukturalne ( a)tablicowe, b)rekordowe, c)zbiorowe, d)plikowe )
4. Wskaźnikowe
5. Proceduralne
6. Obiektowe
TYP PROSTY - definiuje uporządkowany zbiór wartości
TYP PORZĄDKOWY- charakteryzuje się tym że: - dowolne w nim wartości stanowią zbiór uporządkowany; każda dopuszczalna wartość jest ściśle skojarzona z jej numerem porządkowym w tym zbiorze. - każda wartość z wyjątkiem pierwszej ma swojego poprzednika i każda wartość z wyjątkiem ostatniej ma swojego następnika.
Dzielą się na: całkowite, znakowy, logiczny, okrojone, wyliczeniowe.
PIERWSZY KROK W PROGRAMOWANIU
WYŚWIETLANIE LICZB I NAPISÓW NA EKRANIE MONITORE
Postać wydruku na ekranie: PROGRAM
Wizytówka program Wizytówka ;
begin
writeln(`Wizytówka');
end. {Wizytówka}
Wizytówka 1 program Wizytówka;
Begin
Writeln(`Wizytówka 1');
End. {Wizytówka}
Wizytówka 1 program Wizytówka;
Begin
Writeln(`Wizytówka',' 1');
End. {Wizytówka}
Postać wydruku na ekranie PROGRAM
Wizytówka 1 program Wizytówka;
Begin
Writeln(`Wizytówka', 1);
End. {Wizytówka}
Wizytówka 1 program Wizytówka;
Begin
Write(`Wizytówka');
Writeln(1);
End. {Wizytówka}
Przykład zapisu instrukcji wyjścia
Lp. |
Instrukcja wyjścia |
Wydruk na ekranie |
1 |
Writeln |
|
2 |
Writeln(68); |
68 |
3 |
Wireln(-43); |
-43 |
4 |
Writeln(5.3); |
5.3000000000E+00 |
5 |
Writeln(-5.3); |
-5.3000000000E+00 |
6 |
Write(3,78); |
378 |
7 |
Write(3,-78) |
3-78 |
8 |
Write(3,7.8) |
3 7.8000000000E+00 |
9 |
Writeln(356:1); |
356 |
10 |
Writeln(38:4); |
38 |
11 |
Writeln(5.14:1); |
5.1E+00 |
12 |
Writeln(5.18:1); |
5.2E+00 |
13 |
Writeln(0.53728E2:5); |
5.4E+01 |
14 |
Writeln(`Z':0); |
Z |
15 |
Writeln(`Z':4); |
Z |
16 |
Writeln(`Kowalski':0); |
Kowalski |
17 |
Writeln(`Kowalski':10); |
Kowalski |
18 |
Writeln(5.3:2:1) |
5.3 |
19 |
Writeln(53.728:10:5); |
53.72800 |
20 |
Writeln(5.3:2:0); |
5 |
21 |
Writeln(5.2:0:0); |
5 |
22 |
Writeln(5.3:20:25); |
5.30000000000 |
DRUGI KROK W PROGRAMOWANIU
WYKORZYSTANIE KOMPUTERA DO WYKONYWANIA PROSTYCZ OBLICZEŃ MATEMAT.
Zadanie. Należy na ekranie wyświetlić wartość wyrażenia: 101.1-2.4*104
3
3.14 +
5
3.14 2 +
99*0.643
PROGRAM
program Wyświetlanie;
begin
Writeln;
Write(`Wartość wyrażenia: `);
Writeln((101.1- 2.4E4)/(3.14+3/(3.14*3.13+5/(99*0.643))));
End.
WYRAŻENIE STAŁE- wyrażenie, którego wartość może być obliczona przez komputer bez wykonywania programu. Może to być wprost liczba lub napis.
PRIOPRYTETY OPERATORÓW:
operatory jednoargumentowe: operator adresowy@, operator negacji not
operatory multiplikatywne: *, /, div, mod, and, shl, shr
operatory addytywne: + , -, or, xor
operatory relacji (porównania): =. <>, <, >, <=, >=, in.
REGUŁY INTERPRETACJI WYRAŻEŃ
argument znajdujący się pomiędzy dwoma operatorami różniącymi się priorytetem jest związany z operatorem o wyższym priorytecie
argument znajdujący się pomiędzy dwoma operatorami o tym samym priorytecie jest związany z operatorem znajdującym się po jego lewej stronie
wyrażenia w nawiasach są obliczane najpierw, następnie traktowane są one jako argumenty
operacje o tym samym priorytecie są wykonywane od lewej do prawej.
Do samodzielnego opracowania:
zapis liczb całkowitych w systemie szesnastkowym
zapis znaków z wykorzystaniem # oraz ^
formatowanie wydruku liczb rzeczywistych
operatory arytmetyczne: +, -, *, /, div, mod
operatory logiczne: or, xor, and
operatory relacji: =, <>, <=, >=, <, >
potęgowanie.
V
Przykład1. Oblicz pole prostokąta o wymiarach 6x8cm.
Program PoleProstokąta;
usus Crt;
begin
Clrscr;
Writeln(`Pole prostokąta=', 6*8:3,'cm kw.');
End.
Przykład2. Oblicz pole trójkąta o podstawie 10 cm i wysokości 6cm.
Program PoleTrójkąta;
uses Ctr;
begin
Clrscr;
Writeln(`Pole trójkąta=', 0.5*10*6:6:2,'cm kw.');
End.
Przykałd3.(wykorzystanie wyrażeń stałych). Oblicz pole prostokąta o wymiarach 6x8cm, pole trójkąta o podstawie 10cm i wysokości 6cm, pole koła o promieniu 3cm oraz sumę tych pól. Wydrukuj wszystkie policzone wartości oraz informację czy pole trójkąta jest większe niż prostokąta.
Program SumowaniePol;
usus Crt;
begin
Clrscr;
Writeln(`Pole prostokąta=', 6*8:3,'cm kw.');
Writeln(`Pole trójkąta=', 0.5*10*6:6:2,'cm kw.');
Writeln(`Pole koła =',3.14*3*3:6:2,'cm kw.');
Writeln(`Suma pól=',6*8+0.5*10*6+3.14*3*3:6:2,'cm kw.');
Writeln(`Czy pole trójkąta jest większe niż prostokąta `,5.0*10*6>6*8);
End.
TRZECI KROK W PROGRAMOWANIU
STOSOWANIE NAZW DLA DANYCH W PROGRAMIE
Przykład1.(wykorzystanie nazw). Oblicz pole prostokąta o wymiarach 6x8cm, pole trójkąta o podstawie 10cm i wysokości 6cm, pole koła o promieniu 3cm oraz sumę tych pól. Wydrukuj wszystkie policzone wartości oraz informację czy pole trójkąta jest większe niż prostokąta.
Program SumowaniePol;
Const a=6; {a- stała, bok krótszy prostokąta}
b=8; {bok dłuższy prostokąta}
podst=10; {podstawa trójkąta}
h=6; {wysokość trójkąta}
r=3; {promień koła}
var PolePros: Integer; {PolePros- zmienna}
PoleTroj,PoleKola,SumaPol: Real;
Begin
PolePros:=a*b; {wynik mnożenia zapisywany w zmiennej PolePros}
PoleTroj:=0.5*podst*h; {wynik zapisywany w zmiennej PoleTroj}
PoleKola:=Pi*sgr(r); {standardowe funkcje Pi i Sgr}
SumaPol:=PolePros+PoleTroj+PoloKola; {wynik zapisywany w zmiennej SumaPol}
Writeln(`Pole pr.=', PolePros:3,'Pole tr.=', PleTroj:6:2,'Pole kola= `,PoleKola:6:2,'Suma pol=',SumaPol:6:2);
Writeln(`Pole trojk.jest większe niż prostok.:',PoleTroj>PolePros); {porównanie}
End.
UZASADNIENIA STOSOWANIA NAZW DLA DANYCH W PROGRAMIE
Literały:
- występujące w wielu miejscach programu `suche' liczby - Program nie jest czytelny, jest trudny do
albo napisy niosą bardzo ograniczoną informację. przeanalizowania
- zmiana konkretnej wartości wymaga znalezienia wszystkich - Trudno jest modyfikować program
miejsc w programie, w których ta wartość występuje i w każdym
miejscu dokonanie jej korekty
Zmienne- z założenia dane te mają ulegać zmianie w programie - brak możliwości określenia z góry
wartości danej
DEFINIOWANIE NAZW STAŁYCH
Const sekwencja_definicji_stałych
Sekwencja_definicji_stałych ma postać:
Identyfikator_stałej_1= Wyrażenie_stałe_1;
Identyfikator_stałej_2= Wyrażenie_stałe_2;
Identyfikator_stałej_n= Wyrażenie_stałe_n;
Wyrażenie_stałe_i może zawierać następujące funkcje standardowe: Abs, Chr, Hi, Length, Lo, Odd, Ord, Pred, Ptr, Round, SizeOf, Succ, Swap, Trunc.
DEKLAROWANIE ZMIENNYCH
Var sekwencja_deklaracji
Sekwencja_deklaracji ma postać:
Lista_1_nazw_zmiennych : określenie_typu;
Lista_2_nazw_zmiennych : określenie_typu;
Lista_n_nazw_zmiennych : określenie_typu;
Przykład:
Var Maksimum: Byte;
Licznik, ile: Integer;
Znak : Char;
DEFINICJA ZMIENNYCH Z NADANIEM WARTOŚCI POCZĄTKOWYCH
Const sekwencja_deklaracji,
Deklaracja ma postać:
Identyfikator_zmiennej: określenie_typu= wyrażenie_stałe;
Przykład:
Const LiczbaObiektów: Byte=10;
Współczynnik: Real=1.3;
Znah: Char ='A';
ZMIENNA GLOBALNA- zmienna deklarowana w programie głównym. Może być wykorzystywana w całym bloku programu.
ZMIENNA LOKALNA- zmienna deklarowana wewnątrz procedury albo funkcji. Może być wykorzystywana tylko w procedurze albo funkcji.
WYKORZYSTYWANIE DANUCH PRZYJMUJĄCYCH WARTOŚCI CAŁKOWITE
TYPY CAŁKOWITE(predefiniowane):
Longint (długi) [-2147483648, 2147483647] 4 bajty
Word (słowny) [0,65535] 2 bajty
Integer [-32768, 32767] 2 bajty
Byte (bajtowy) [0,255] 1 bajt
ShortInt (krótki) [-128, 127] 1 bajt
STAŁE PREDEFINIOWANE
MaxInt = 32767;
MaxLongInt = 21474483647
Przykład definicji nazw stałych całkowitych
Const zakres=100;
min= -50;
max= min*zakres;
Przykład deklaracji zmiennych typu całkowitego
Var i, j, licznik: Integer;
ile: Byte;
maksimum: LongInt
Przykład definicji zmiennych z nadaniem wartości początkowych
Const Maksimum: Byte= 100;
Minimum: Integer= -100;
DOPUSZCZALNE OPERACJE DANYCH TYPÓW CAŁKOWITYCH- operatory relacji( <, <=, = >=, > <>), operatory addytywne( +, -), operatory multiplikatywne(*, div, mod). Wynik tych operacji jest wartością standardowego typu logicznego (Boolean): prawda lub fałsz.
FUNKCJE KONWERSJI( o wyniku całkowitym typu LnogInt)
Trunc(x) obcięcie części ułamkowej argumentu x typu rzeczywistego
Round(x) zaokrąglenie wartości x typu rzeczywistego do najbliższej liczby całkowitej
FUNKCJE ARYTMETYCZNE
Abs(x) moduł argumentu x dowolnego typu całkowitego lub rzeczywistego
Sgr(x) kwadrat x dowolnego typu całkowitego lub rzeczywistego
FUNKCJE PORZĄDKOWE
Ord(x) określa numer porządkowy argument x (typu LongInt)
Odd(x) testowanie nieparzystości i (typu LongInt); wartość jest typu logicznego (Boolean) i jest to True, gdy i jest nieparzyste
PROCEDURY PORZĄDKOWE
Inc(i,n ) nadaje wartość zmiennej i o numerze porządkowym o n większym od numeru porządkowego początkowej wartości i
Dec(i,n) nadaje wartość zmiennej i o numerze porządkowym o n mniejszym od numeru porządkowego początkowej wartości i
FUNKCJE OPERUJĄCE NA ARGUMENTACH TYPU INTEGER LUB WORD
Lo(i) mniej znaczący bajt wartości i. Wynik jest typu Byte.
Hi(i) bardziej znaczący bajt wartości i. Wynik jest typu Byte.
Swap(i) zamiana mniej znaczącego z bardziej znaczącym bajtem wartości i
REGUŁY REALIZACJI OPERACJI ARYTMETYCZNYCH Z ARGUMENTAMI CAŁKOWITYMI
przed wykonaniem operacji dwuargumentowych oba argumenty są sprowadzone do typu wspólnego. Wynik jest też typu wspólnego
przed wykonaniem jakichkolwiek operacji każdy argument o rozmiarze bajtu jest zamieniany na pośredni argument słowny
typ stałej całkowitej jest tym predefiniowanym typem całkowitym, który zawiera w zbiorze dopuszczalnych wartości wartość nadaną stałej podczas jej definiowania i zajmuje najmniej pamięci.
TYP WSPÓLNY- typ obejmujący swoim zakresem dopuszczalne wartości rozpatrywanych typów i jednocześnie jego wartości zajmują najmniej pamięci.
WYKORZYSTANIE DANYCH PRZYJMUJĄCYCH WARTOŚCI RZECZYWISTE
TYPY RZECZYWISTE(predefiniowane)
Real [2.8E-39, 1.7E38] 6 bajtów 11(12) cyfr zn.
Comp [-2 63+ 1,2 63- 1] 8 bajtów 19(20) cyfr zn.
Extended [1.9E-4951, 1.1E4932] 10 bajtów 19(20) cyfr zn.
Double [5.0E-324, 1.7E308] 8 bajtów 15(16) cyfr zn.
Single [1.5E-45, 3.4E38] 4 bajty 7(8) cyfr zn.
Przykład definicji nazw stałych rzeczywistych
Const a=5.25;
b=10e-4;
c=a+b;
Ln10= 2.302585;
Ln10R= 1/Ln10;
Przykład deklaracji zmiennych typu rzeczywistego
Var delta, x, y: Real;
Pole, objętość : Double;
SumaPol: Double;
Przykład definicji zmiennych z nadaniem wartości początkowych
Const czynnik: Real= 0.01;
suma: Single= 0.0;
DOPUSZCZALNE OPERACJE NA DANYCH TYPÓW RZECZYWISTYCH- operatory relacji( <, <=, = >=, > <>), operatory addytywne( +, -), operatory multiplikatywne(*, /). Wynik tych operacji jest wartością standardowego typu logicznego (Boolean): prawda lub fałsz.
FUNKCJE ARYTMETYCZNE
Frac(x) część ułamkowa argumentu
Int(x) część całkowita argumentu
Abs(x) moduł argumentu x dowolnego typu całkowitego lub rzeczywistego
Sgr(x) kwadrat x dowolnego typu całkowitego lub rzeczywistego
Sqrt(x) pierwiastek kwadratowy argumentu
Exp(x) e do potęgi x
Ln(x) logarytm naturalny x
Pi wartość stałej Pi (3.1415926535897932385)
FUNKCJE TRYGONOMETRYCZNE I CYKLOMETRYCZNY
Sin(x) sinus
Cos(x) cosinus
ArcTan(x) arcus tangens
KONSEKWENCJE UŻYCIA RÓŻNYCH TYPÓW RZECZYWISTYCH- porównanie dwóch zmiennych różnych typów rzeczywistych, którym przypisano tę samą wartość, nie zawsze daje w wyniku wartość
logiczną TRUE.
VI
OGÓLNA CHARAKTERYSTYKA INSTRUKCJI
INSTRUKCJE dzielą się na:
proste ( a)pusta, b)przypisania, c)bezwarunkowego skoku, d)wywołania procedury, e)inline)
strukturalne ( a)złożona, b)warunkowe, c)iteracyjne, d)wiążąca, e)asemblerowa )
INSTRUKCJA PROSTA- instrukcja nie zawierająca w swojej konstrukcji innych instrukcji jako składowych. Np. instrukcje wywołania procedur drukowania Write, Wroteln, oraz instrukcja wywołania procedur czyszczenia ekranu ClrScr.
INSTRUKCJA STRUKTURALNA- instrukcja budowana zgodnie z pewnym schematem; z sekwencji innych, składowych instrukcji. Instrukcje składowe mogą być instrukcjami prostymi lub strukturalnymi. Instrukcje skladowe wykonywane są w jeden z następujących sposobów: a)sekwencyjnie, b)warunkowo, c)w pętli.
NADAWANIE WARTOŚCI ZMIENNYM
SPOSOBY NADAWANIA WARTOŚCI ZMIENNYM
poprzez określenie wartości przed rozpoczęciem programu (określenie wartości początkowej)
poprzez operacje w czasie realizacji programu (wczytywanie wartości i przypisywanie wartości)
INSTRUKCJA PRZYPISANIA nazwa_zmiennej:=wyrażenie;
W części operacyjnej funkcji może także wystąpić w postaci: nazwa_funkcji:=wyrażenie;
Wyrażenie po prawej stronie sumbolu przypisania:= obliczane jest niezależnie od typu zmiennej występującej po jego lewej stronie.
Przykład instrukcji przypisania:
X:=6.0
Y:= cos(Pi/2)+0.5*sin(X);
I:=I+1;
X:=X+Z;
INSTRUKCJA CZYTANIA ZE STANDARDOWEGO YRZĄDZENIAWEJŚCIOWEGO - Z KLAWIATURY
Read(lista_nazw_zmiennych);
Albo
Readln(lista_nazw_zmiennych);
Separatorem liczb wczytywanych za pomocą instrukcji wejścia jest spacja, tabulacja (klawisz TAB) lub znak końca lini, uzyskiwany poprzez wciśnięci klawisza Enter.
Przykład1.(wczytywanie danych)
W programie zadeklarowane są zmienne:
Var i, j: Integer;
x, y: Real;
Należy wczytać najpierw zmienne i, x, a później j, y.
Program - wariant1
Program Czytanie;
uses Crt;
var i, j: Integer;
x, y: Real;
begin
ClrScr;
Readln(i,x);
..... {instrukcje programu, bez instrukcji czytania}
readln(j,y);
end.
Program - wariant2
Program Czytanie;
uses Crt;
var i, j: Integer;
x, y: Real;
begin
ClrScr;
Read(i,x);
..... {instrukcje programu, bez instrukcji czytania}
Read(j,y);
end.
Przykład2.(wczytywanie danych)
Jak należy podawać dane z klawiatury w przypadku wystąpienia w programie instrukcji Readln(i,x), gdzie i, x są deklarowane jak w przykładzie 1?
WARIANT1
Echo Wprowadzanych danych na ekranie PROGRAM
10 35.08 Program Czytanie;
- uses Crt;
var i, j: Integer;
x, y: Real;
begin
ClrScr;
Read(i,x);
..... {instrukcje programu}
end.
WARIANT2
Echo Wprowadzanych danych na ekranie PROGRAM
10 Program Czytanie;
35.08 uses Crt;
- var i, j: Integer;
x, y: Real;
begin
ClrScr;
Readln(i,x);
..... {instrukcje programu}
end.
WARIANT3
Echo Wprowadzanych danych na ekranie PROGRAM
10 35.0820:3.5 Program Czytanie;
- uses Crt;
var i, j: Integer;
(te dane zostaną pominięte) x, y: Real;
begin
ClrScr;
Readln(i,x);
..... {instrukcje programu}
end.
WARIANT4
Echo Wprowadzanych danych na ekranie PROGRAM
10 Program Czytanie;
35.0820:3.5 uses Crt;
- var i, j: Integer;
x, y: Real;
(te dane zostaną pominięte ) begin
ClrScr;
Readln(i, x);
..... {instrukcje programu}
end.
Przykład3.(wczytywanie danych)
Jak należy podawać dane z klawiatury w przypadku wystąpienia w programie instrukcji Read(i,x), gdzie i, x są tak deklarowane jak w przykładzie 1?
W tym przypadku dane mogą być podawane tak, jak to jest w wariancie 1, 2 w przykładzie 2. Dodatkowo dane występujące po drugiej danej (wariant 3, 4) nie muszą być pominięte, o ile w programie po instrukcji Read(i, x) występuje instrukcja czytania z klawiatury z niepustą listą wejścia.
Przykład4. (wczytywanie danych)
Czy wszystkie dane -10 35.08 88 105.5<Enter> zostaną wczytane do poniżej podanego programu? Tak
WARIANT1.
Echo Wprowadzanych danych na ekranie PROGRAM
-10 35.08 Program Czytanie;
88 105.5 uses Crt;
- var i, j: Integer;
x, y: Real;
begin
ClrScr;
Readln(i, x);
Readln(j, y);
..... {instrukcje programu}
end.
WARIANT2
Echo Wprowadzanych danych na ekranie PROGRAM
-10 Program Czytanie;
35.08 uses Crt;
88 var i, j: Integer;
105.5 x, y: Real;
- begin
ClrScr;
Readln(i, x);
Readln(j, y);
..... {instrukcje programu}
end.
Przykład5.(wczytywanie danych)
Obliczyć pole prostokąta, trójkąta, koła i sumę ich pól. Wartość potrzebnych parametrów wczytać z klawiatury.
PROGRAM
Program SumowaniePol;
Uses Crt;
Var a, b, podst., h, r, PolePros, PoleTroj, PoleKola, SumaPol : Real;
Begin
Clr;
Write(` Podaj dlugość dwoch bokow prostokata: a='); Read(a);
Write(`':39,'b='); Readln(b);
PolePros:=a*b;
Write(`Podaj dlugosc podstawy i wysokosc trojkata: podst='); Readln(podst);
Write(`':48,'h='); Readln(h);
PoleTroj:=1/2*podst*h;
Write(`Podaj promien kola r='); Readln®;
PoloKola:=Pi*Sgr®;
SumaPol:=PolePros+PoleTroj+PoleKola;
Writeln; Writeln(`WYDRUK WYNIKOW':50); Writeln;
Writeln(`Pole prost.=':20, PolePros:6:2); Wruteln(`Pole troj.=':20, PoleTroj:6:2);
Writeln(`Pole kola=':20, PoleKola:6:2); Writeln(`Suma pol=':20, SumaPol:6:2);
Repeat until KeyPressed;
End.
ZMIANA KOLEJNOŚCI WYKONYWANYCH OPERACJI
Zmiana kolejności wykonywanych operacji
Zmiana bezwarunkowa Zmiana warunkowa
(instrukcja skoku GOTO) (instrukcja IF(`jeśli..') i instrukcja CASE (`w przypadku gdy...')
INSTRUKCJA SKOKU - goto etykieta;
DEKLARACJA ETYKIET - label lista_etykiet; Etrkietą może być: liczba z zakresu 0 do 9999, lub identyfikator. Np. label et1,77,et2;
OGRANICZENIA W STOSOWANIU INSTRUKCJI SKOKU:
Etykieta, do której odwołuje się instrukcja GOTO musi być w tym samym bloku co goto, innymi słowy, nie można `wskoczyć' z programu głównego do procedury lub funkcji.
Niedopuszczalny jest skok z zewnątrz instrukcji strukturalnej do jej wnętrza
Przykład programu z etykietami
Program Skok;
Label et1;
Var i, j: Integer;
Begin
... {ciąg instrukcji}
goto et1;
... {ciąg instrukcji}
et1: writeln(`koniec:', i:3, j:5);
end.
INSTRUKCJA WARUNKOWA IF - postać1
If warunek then I1; False
Przykład: True
If licznik <20 then Inc(licznik);
INSRTUKCJA WARUNKOWA IF - postać2
If warunek then I1 else I2
True False
Przykład:
If x >y then a:=x else a:=y;
NAJCZĘŚCIEJ POPEŁNIANE BŁĘDY PRZ STOSOWANIU INSTRUKCJI IF
umieszczanie średnika przed słowem else
nieuwzględnienie przy tworzeniu instrukcji warunkowej zagnieżdżonej w innej instrukcji warunkowej zasady: Każde słowo else odnosi się do tego najbliższego słowa then, które jeszcze nie jest związane z żadnym słowem else.
Przykład (wykorzystanie instrukcji IF).
Należy zapisać instrukcję If realizującą czynności wskazane przez poniżej podany schemat blokowy.
Tak Tak Tak
Nie Nie Nie
Zagnieżdżona instrukcja IF
If i> 50
Then if c=0
Then if u < w
Then c:= w
Else {instrukcja pusta}
Else {instrukcja pusta}
Else c:=2.0;
Przykład (wykorzystanie instrukcji If (postać1) oraz GOTO)
Należy tak zorganizować wprowadzanie danych z klawiatury by tylko liczba z przedziału [1, 12] mogła być wczytywana.
PROGRAM
Program CzytanieZeSprawdzaniem;
Uses Crt;
Label Czyt;
Var Liczba: String;
Kod: Integer;
L: Byte;
Begin
Czyt: ClrScr;
Write(`Podaj liczbe calkowita z przedzialu [1, 12]: `);
Readln(Liczba);
Val(liczba, L, Kod);
If Kod<>0 then goto Czyt;
Writeln;
Writeln(`Wczytano: `, L:4);
Readln
End.
INSTRUKCJA ZŁOŻONA
Begin Przykład:
Instrukcja_1; begin
Instrukcja_2; liczba:=77
... suma:= liczba+44
Instrykcja_n; begin
End. Suma:= suma*suma;
K:=liczba/10
end
end.
INSTRUKCJA WYBORU CASE - postać krótsza
Case wyrażenie of
Sekwencja_wyboru Przykład
End; case miesiac of
1,3,5,7,8,10,12:dni:=31;
Dopuszczalne zapisy w sekwencji wybory: 2 :dni:=28;
Stała: instrukcja; 4,6,9,11 :dni:=30
Stała_1, stała_2: instrukcja; end.
Stała_1..stała_3: instrukcja; miesiąc, dni są zmiennymi np. typu Byte.
INSTRUKCJA WYBORU CASE - postać pełna
Case wyrażenie of Przykład
Sekwencja_wyboru case B of
Else instrukcja True; case liczba of
End. 1..10 :Writeln(`Pierwsza dziesiatka”);
11..20 :Writeln(`Druga dziesiatka');
.... {podobnie dalej}
else Writeln(`Powyzej 100')
end;
end;
Przykład (wykorzystanie instrukcji CASE)
Napisać program obliczanie pola powierzchni trójkąta, prostokąta lub koła, przy czym dopiero po uruchomieniu programu użytkownika określi jakiej figury pole chce liczyć.
PROGRAM
Program Wykorzystanie_Instr_wyboru;
Uses Crt;
Var JakaFigura: Byte; a, h, PoleTr, b1, b2, PolePr, r, PoleKo: Real;
Begin
Clrscr;
Writeln(`Podaj co chcesz liczyc, odpowiedz : `);
Wrote(`1- jeśli trojkat, 2- jeśli prostokat, 3- jeśli kolo: `); Readln(JakaFigura);
Clrscr;
Case JakaFigura of
1: begin {trojkat}
write(`Podaj podstawe i wysokosc trojkata: `); Readln(a, h);
PoleTr:=0.5*a*h; Writeln(`Pole Trojkata = `, PoleTr:6:2);
End:
2: begin {prostokat}
write(`Podaj dlugosc dwoch bokow prostokata:'); Readln(b1, b2);
PolePr:=b1*b2; Writeln(`Pole Prostokata= `,PolePr:6:2);
End:
3: begin {kolo}
write(`podaj dlugosc promienia: `); Readln(r);
PoleKo:=Pi*r*r; Writeln(`Pole Kola= `, PoleKo:6:20;
End
Else Wruteln9'Podales zla dana!');
End;
Readln
End.
DO samodzielnego przestudiowania; standardowe typ znakowy; standardowe funkcje związane z typem znakowym( Chr, UpCase); typy łańcuchowe; operacje porównania i konkatenacji (łączenia) na łańcuchach (napisach); standardowe funkcje związane z typem łańcuchowym (Concat, Copy, Lenght, Pos); standardowe procedury związane z typem łańcuchowym (Delete, Insert, Str, Val); standardowy typ logiczny.
VII
TWORZENIE PROSTEJ STRUKTURY DANYCH - TYP TABLICOWY
TABLICA- jest to zbiór określonej liczby elementów tego samego typu. - Typ elementu tablicy nazywany jest typem składowym. - Dostęp do poszczególnych elementów tablicy uzyskuje się za pomocą indeksowania. - Nie ma literałów stałych (wyrażeń stałych) typu tablicowego. W postaci tablic reprezentowane są regularne układy danych, np.: wektory i macierze.
DEFINIOWANIE TYPU TABLICOWEGO
Type Id_typu = array [Lista_typów_indeksów} of Typ_składowy; Ze względu na ograniczenie pamięci dla pojedynczej struktury danych typ indeksów (typ porządkowy) nie może być typem LongInt ani okrojonym tego typu LongInt. Liczba wymiarów tablicy nie jest limitowana.
Przykład.
Type LicznikCyfr = array[`0'..'9'] of Integer;
Trzy = 1..3;
DwaWymiary = array[Boolean, Trzy] of Byte;
Tablica jednowymiarowa Tablica wielowymiarowa
1 2 3 Indeks2
Indeks `0' `1' `2' `3' `4' `5' `6' `7' `8' `9' False
True
Indeks1
RÓŻNE MOŻLIWOŚCI DEFINIOWANIA TYPÓW TABLICOWYCH.
Tablice dwuwymiarowe
Type IdTypuT2 = array[Typ_indeksu2] of Typ_składowy;
IdTypuT1 = array[Typ_indeksu1] of Td_typuT2;
Type IdTypuT2 = array[Typ_indeksu2] of array[Typ_indeksu2] of Typ_składowy;
Type IdTypuT1 = array[Typ_indeksu1, Typ_indeksu2] of Typ_składowy;
- przy większej liczbie wymiarów niż 2 także istnieje możliwość stosowania różnych sposobów definiowania typów tablicowych.
Przykład definicji typu tablicowego
Type Pole = (puste, pion, skoczek, goniec, wieza, hetman, krol);
WierszeSzachownicy = array[`a'..'h'] of Pole;
Szachownica = array[1..8] of WierszeSzachownicy;
Type Pole = (puste, pion, skoczek, goniec, wieza, hetman, krol);
Szachownica = array[1..8] of array[`a'..'h'] of Pole;
Type Pole = (puste, pion, skoczek, goniec, wieza, hetman, krol);
Szachownica = array[1..8,'a','h'] of Pole;
Przykład deklaracji zmiennych
Type Tablica=array[1..3, 1..10] of Integer;
Var ZmTab:Tablica;
Var ZmTam:array[1..3, 1..10] of Integer;
Przykład definicji zmiennych z nadaniem wartości początkowych
Const JedenW: array[1..3] of Byte=(8,6,9);
Type Pole=(puste,pion1, dama1,pion2,dama2);
Const Warcaby: array[1..8,'a'..'h'] of Pole =
((pion1, puste, pion1, puste, pion1, puste, pion1, puste),
(puste, pion1, puste, pion1, puste, pion1, puste, pion1),
(puste, puste, puste, puste, puste, puste, puste, puste),
(puste, puste, puste, puste, puste, puste, puste, puste),
(puste, puste, puste, puste, puste, puste, puste, puste),
(puste, puste, puste, puste, puste, puste, puste, puste),
(pion2, puste, pion2, puste, pion2, puste, pion2, puste),
(puste, pion2, puste, pion2, puste, pion2, puste, pion2));
Na ekranie: `a' `b' `c' `d' `e' `f' `g' `h' Indeks2
1 pion1 puste pion1 puste pion1 puste pion1 puste
2 puste pion1 puste pion1 puste pion1 puste pion1
3 puste puste puste puste puste puste puste puste
4 puste puste puste puste puste puste puste puste
5 puste puste puste puste puste puste puste puste
6 puste puste puste puste puste puste puste puste
7 pion2 puste pion2 puste pion2 puste pion2 puste
8 puste pion2 puste pion2 puste pion2 puste pion2
Indeks1
Przykład definicji zmiennych z nadaniem wartości początkowych
Type TT3C= array{1..2, 1..2, 1..2] of Char;
Const Samogłoski: array [1..6] of Char= (`a','e','i','o','u','y');
Litery: array[1..3,1..2] of Char= ((`a','b'), (`c','d'), (`e','f'));
T3C:TT3c= (((`a','b'), (`c','d')),((`e','f'),(`g','h')));
Type TT3C= array{1..2, 1..2, 1..2] of Char;
Const Samogłoski: array [1..6] of Char= `aeiouy';
Litery: array[1..3,1..2] of Char= (`ab', `cd', `ef');
T3C:TT3C= ((`ab', `cd'), (`ef', `gh'));
ZMIENNA INDEKSOWA
Zmienna o postaci
Nazwa_zmiennej[indeks]
Albo
Nazwa_zmiennej[Lista_indeksów]
Lub
Nazwa_zmiennej[indeks1][indeks2]...[indeksn]
Zmienna o postaci - Nazwa_zmiennej[indeks] pozwala odwołać się do elementów tablicy, jak i pojedynczych znaków zmiennej łańcuchowej. Zmienna o postaci Nazwa_zmiennej[lista_indeksów] pozwala odwołać się do elementów tablicy.
ODWOŁANIA DO TABLICY Z MNIEJSZĄ LICZBĄ INDEKSÓW ANIŻELI W DEFINICJI TYPU TABLICOWEGO
Gdy w programie jest deklaracja
Ver ZmTab=array [Lista_n_typIndeksów] of TypSkładowy;
to możliwe są następujące odwołania:
ZmTab
ZmTab[Indeks]
ZmTab[Indeks1, Indeks2]
ZmTab[lista_indeksów]
Przy czy lista_indeksów obejmuje co najwyżej n indeksów (wyrażeń).
NADAWANIE WARTOŚCI ZMIENNEJ TYPU TABLICOWEGO
Każdemu elementowi z osobna całej tablicy
wczytywanie wartości w instrukcji przypisania w instrukcji przypisania
( for i:=1 to 3 do ZmTab[i,j]:=237; ZmTab2: =ZmTab1;
for j:=1 to 10 do for i:=1 to 3 do
Read(ZmTab1[i,j]); for j:=1 to 10 do
ZmTab2[i,j]: =ZmTab1[i,j];
WYŚWIETLANIE WARTOŚCI ZMIENNEJ TYPU TABLICOWEGO
Każdego elementu z osobna w każdym przypadku całej tablicy tylko w przypadku tablic z elementami
typu Char
for i:=1 to 3 do Write(Samogłoski);
for j:=1 to 10 do
Write(ZmTab1[i,j]);
Przykład (wykorzystanie tablic)
Wczytać wierszami elementy dwuwymiarowej tablicy liczb całkowitych. Znaleźć największy element tablicy. Wyświetlić wartość tego elementu oraz numery wiersza i kolumny, w których znaleziony element się znajduje.
PROGRAM
Const ZakresW=3; ZakresK=5;
Var I, J, NrW, NrK: Byte;
Max: Integer;
T2: array[1..ZakresW, 1..ZakresK] of Integer;
Begin
ClrScr;
Writeln(`Podaj wierszami wartość elementów tablicy dwuwymiarowej.',#13#10,'(3 wiersze po 5 elementów):');
For I:=1 to ZakresW do
For J:=1 to ZakresK do
If T2[I,J]>Max then
Begin Max:=T2[I,J]; NrW:=I; NrK:=J; end;
Writeln; Writeln;
Writeln(`maksymalny element w tablicy T2 jest w `,NrW:2,'wierszu i', Nrk:2,'kolumnie',#13#10, `jego wartość to: `,Max:4);
VIII
DEFINIOWANIE STRUKTURY DANYCH UWZGLĘDNIAJĄCYCH POWIĄZANIE ZE SOBĄ ELEMENTÓW RÓŻNYCH TYPÓW -TYP REKORDOWY
REKORD- struktura, w skład której mogą wchodzić elementy różnych typów.
POLE REKORDU - element składowy rekordu. Pole rekordu ma swój identyfikator (nazwę).
DEFINIOWANIE TYPU REKORDOWEGO (o stałej liczbie pól)
Type identyfikator_typu= reckord
Lista_deklaracji_pól
End;
(każda deklaracja_pól ma postać: Lista_nazwa_pól: opis_typu;
Przykład deklaracji zmiennych;
Type Tdata = reckord
Rok: Integer;
Miesiąc: 1..12;
Dzien: 1..31
End;
Var AktualnaData: Tdata;
Var AktualnaData: reckord
Rok: Integer;
Miesiąc: 1..12;
Dzien: 1..31
End;
DEKLAROWANIE ZMIENNEJ Z WARTOŚCIĄ POCZĄTKOWĄ TYPU REKORDOWEGO
Const Nazwa_zmiennej: Typ_rekordowy= (Pole_1: wartość_1;
Pole_2: wartość_2;
Pole_n: wartość_n);
Przykład:
Type Tdata = reckord Rok: Integer; Miesiac: 1..12; Dzien:1..31 end;
Const DataPocz: Tdata = (Rok:1992; Miesiac:9; dzien:20);
Punkt: reckord
X, Y: Real
End= (X:1.5; Y:8.7);
Type Tpunkt = reckord x,y: Real end;
Const Trojkat: array[1..3] of Tpunkt = ((X:1; Y:1),
(X:2; Y:1),
(X:1.5; Y:2));
DYSYGNATOR POLA(deskryptor pola) - odwołanie do pojedynczego pola rekordu. Ma postać:
Identyfikator_zmiennej_rekordowej.identyfikator_pola
NADAWANIE WARTOŚCI ZMIENNEJ TYPU REKORDOWEGO
Każdemu polu z osobna całemu rekordowi
Zależnie od typu pola w instrukcji przypisania
INSTRUKCJA WIĄŻĄCA WITH
With lista_zmiennych_rekordowych do instrukcja;
Instrukcja wiążąca with upraszcza odwoływanie do pól rekordów.
Przykład wykorzystania instrukcji WITH:
Część opisowa:
Type Tpracownik = record
Imie, Nazwisko; string[20]; Stawka_godz: Intreger;
Czas_pracy: array[1..6] of Real
End;
Var Data: reckord Rok: Intreger; Miesiac:1..12; Dzien:1..31 end;
Pracownik: TPracownik;
Trojkat: array[1..3] of record X,Y: Real end;
Część wykonawcza
With Data do Readln(rpk, miesiac, dzien);
With Pracownik do
Begin
Nazwisko: ='Kowalski'; Imie:='Jan';
For i:=1 to 6 do Czas_pracy[i]:=8
End;
For i:= 1 to 3 with trojkat[i] do Writeln(`X:',X:6:2, `Y; `,Y:6:2);
INSTRUKCJA WITH Z KILKOMW ZMIENNYMI REKORDOWYMI
With Zm1, Zm2,...,Zmn do Instrukcja;
With Zm1 do
With Zm2 do
................
with Zmn do Instrukcja;
Przykład:
Część opisowa.
Type TTabRek =array[1..3] of record Pole1:Integer; Pole2, pole3: Char end;
TrekRek= record
Pole1: Intreger;
Pole2: record Podpole1, Podpole2: Char end
Var TabRek: TtabRek;
RekRek: TrekRek;
Część wykonawcza
With TabRek[2], RekRek. Pole2 do
Begin
Pole1:=1;
Podpole1:='a'
End;
TabRek[2]. Pole1 =1;
RekRek.Pole2. Podpole2:='a';
DEFINIOWANIE TYPU REKORDOWEGO(o zmiennej liczbie pól)
Type identyfikator_typu = record
Część_stała_listy_pól;
Case deklaracja_pola_wyróżnikowego of
Wykaz_wariantów
End;
Deklaracja_pola_wyróżnikowego ma postać:
Identyfikator-pola_wyróznikowego: określenie_typu_porządkowego
Element sekwencji wykaz_wariantów ma postać:
Lista_etykiet_wyboru : (lista_deklaracji_pól);
OGRANICZENIE PRZY DEFINIOWANIU REKORDÓW:
wszystkie identyfikatory pól danego rekordu muszą być różne, nawet jeśli występują w różnych wariantach
wszystkie stałe wyboru w wykazie wariantów rekordu muszą być różne
każdej wartości typu porządkowego, użytego w definicji części zmiennej rekordu musi odpowiadać jakiś wariant( w szczególności może to być pusty wariant)
część zmienna rekordu zawsze musi występować na końcu rekordu tj. po części stałej.
IX
WYODRĘBNIENIE FRAGMENTÓW PROGRAMU W PODPROGRAMY
PROGRAM- zapis wyróżnionego fragmentu algorytmu, dla którego pisany jest program, posiadający: określoną nazwę, ustalony sposób komunikacji z pozostałą częścią programu. W TP podprogramy to funkcje lub procedury
PRZYCZYNY STOSOWANIA PODPROGRAMÓW: - dążenie do unikania powtórzeń, - podział zadania na zadania prostsze, - dążenie do zwiększenia przejrzystości i czytelności programu, - możliwość efektywniejszej gospodarki pamięcią.
FUNKCJA- podprogram wywoływany poprzez podanie w wyrażeniu jego nazwy i ewentualnie parametrów aktualnych ujętych w nawiasy okrągłe Np. A:=B+Srednia(C);
POSTACIE NAGŁÓWKÓW FUNKCJI:
Function nazwa_funkcji : typ_war_funkcji;
Function nazwa_funkcji (lista_par_from): typ_wart-funkcji;
Przykłady nagłówków funkcji przyjmujących wartości różnych typów:
Function Pierwszy: Intreger;
Function Drugi: Real;
Function Trzeci: Boolean;
Function Znaki: Char
Przykład1 (definiowanie funkcji przyjmującej wartości typu rzeczywistego)
Należy zdefiniować funkcję pozwalającą określić wartość minimalną wczytywanego ciągu liczb rzeczywistych.
Definicja funkcji
Function Min: Real;
Var I,L: Word;
A,Amin:Rea';
Begin
Write (`Liczba wczytywanych liczb ='); Readln (L); {L>O}
Writeln (`Dane (po napisaniu liczby naciśnij ENTER):');
Readln (Amin);
For I:=2 to L do
Begin
Readln (A);
If Amin > A then Amin:=A;
End;
Min:=Amin;
End;
Przykład2 ( definiowanie funkcji przyjmującej wartości typu napisowego)
Należy zdefiniować funkcję zamieniającą każdą małą literę we wczytanym ciągu znaków na literę dużą.
Fragment części opisowej wraz z definicją funkcji
Const N=15;
Type String = string[N];
Function LancuchZnaków: Stringn;
Var I: Byte;
Lancuch: string;
Begin
Write (`Nazwa:'); Readln (Lancuhc);
For I:=1 to Length (Lancuch) do Lancuch[I]:=UpCase(Lancuch[I]);
LancuchZnaków:=Lancuch
End;{LancuchZnaków}
Przykład3 (definiowanie funkcji przyjmującej wartość typu okrojonego)
Należy zdefiniować funkcję pozwalającą wczytać liczbę całkowitą różną od 0 i nie większą od zadanej liczby M.
Fragment części opisowej
Const M.=100;
Type TypOkrojony = 1..M;
Function Liczba: TypOkrojony;
Var S:string;
I, Kod: Intreger;
Begin
Repeat
Write(`Dodatnia liczba całkowita rozna od 0 i nie wieksza od',M.,':');
Readln (s);
Val(S,I,Kod);
Until (Kod = 0) and (I>0) and ( I<=M);
Liczba:=I
End;
POJEDYNCZA DEKLARACJA PARAMETRÓW FORMALNYCH TP7
Parametry otwarte łańcuchowe przekazywane przez zmienną określonego typu
Var lista_nazw_parametrów_formalnych: OpenString;
Parametry otwarte tablicowe przekazywane przez zmienną określonego typu
Var lista_nazw_parametrów_formalnych: array of nazwa_typu;
Parametry przekazywane przez wartość
Lista_nazw_parametrów_foramlnych: array of nazwa_typu;
Parametry otwarte tablicowe przekazywane przez stałą określonego typu
Const lista_nazw_parametrów_formalnych: array of nazwa_typu;
Parametry przekazywane przez stałe określonego typu
Const lista_nazw_parametrów_formalnych: nazwa_typu;
Parametry przekazywane przez stałe nieokreślonego typu
Const lista_nazw_parametrów_formalnych;
Przykład1(definiowanie funkcji z parametrem przekazywanym przez wartość)
Należy zdefiniować funkcję pozwalającą obliczyć moduł liczby zespolonej o wskazanym numerze po wcześniejszym wczytanie jej rzeczywistej oraz urojonej.
Definicja funkcji
Function Modul (nr:Byte): Real;
Var A,B: Real;
Begin
Write (`czesc rzeczywista liczby zespolonej nr: `, Nr:1, `='); Readln (a);
Writa (` czesc urojona liczby zespolonej nr: `, Nr:1, `=') readln (B);
Modul:= Sgrt (sgr(A) + Sgr(B) );
End;
Przykład2 ( definiowanie funkcji z parametrami przekazywanymi przez zmienne określonego typu oraz z
parametrami przekazywanym przez wartość)
Należy zdefiniować funkcję pozwalającą obliczyć iloczyn skalarny wektorów ( suma iloczynów elementów wektorów o tych samych numerach), z których każdy posiada L składowych.
Fragment części opisowej:
Const M.=20;
Type Wektor = array [1..m] of Real;
Function IloczynSkalarny (var X,Y :Wektor; L:byte):Real;
Część wykonawcza
Var I:Byte;
A:Real;
Begin
A:=0;
For I:=1 to L do A:=A+X[I]*Y[I];
IloczynSkalarny:=A;
End;
Przykład3 (definiowanie funkcji z parametrami przekazywanymi przez stałe określonego typu oraz z parametrem przekazywanym przez wartość)
Należy zdefiniować funkcję pozwalającą stwierdzić, że rozpatrywana liczba rzeczywista jest nieujemna i jej wartość zawiera się w przedziale [A,B].
Function Sprawdzenie (const A,B: Real X:Raal):Boolean;
Var X2:real;
Begin
X2:=Sgr(x);
Sprawdzenie :=(X>= A) and (X2 <= B0;
End;
OGRANICZENIA CO DO TYPU PARAMETRÓW FORMALNYCH
nie ma ograniczenia w przypadku parametrów formalnych przekazywanych przez zmienne
typ parametrów formalnych przekazywanych przez wartości nie może być typu plikowego ani żadnym z typów strukturalnych, w skład których wchodzi ten typ
OGRANICZENIA CO DO LICZBY PARAMETRÓW FORMALNYCH
nie ma ograniczenia w przypadku parametrów formalnych przekazywanych przez zmienne
istnieją, jeśli parametry są przekazywane przez wartości oraz wykorzystywany jest koprocesor, a wspomniane parametry są typy Single, Duble, Extended albo Comp. Liczba takich parametrów nie może przekraczać 8.
PROCEDURA - podprogram, który wywoływany jest za pomocą tzw. instrukcji procedury.
Przykład (definiowanie procedury)
Należy zdefiniować procedurę zamiany liczby zespolonej z postaci kanonicznej na postać wykładniczą
Fragment części opisowaj:
Type Zespolona = record
Skl1, Skl2: Real
End
Procedure Zamiana (A: Zeapolona; var W: Zeaspolona);
Begin
W.Skl1:=Sgrt(Skr (A.Skl1) + Sgr (A.Skl2));
W.Skl2:=Arctan(A.Skl2/A.Skl1)
End.
INSTRUKCJA PROCEDURY -tworzona jest przez nazwę procedury, po której -o ile procedura ma parametry- podawane są w nawiasach okrągłych parametry aktualne
PROGRAM REKURENCYJNY - podprogram, w którego bloku następuje jego wywołanie.
PRICEDURA EXIT- standardowa bezparametrowa procedura z modułu System; powoduje wyjście z bloku, w którym ona występuje.
X
PRZECHOWYWANIE DANUCH W PAMIĘCI TRWAŁEJ KOMPUTERA
PLIK - uporządkowany ciąg składowych tego samego typu. Pojęcie plik w TP wykorzystuje się do reprezantacji fizycznego zbioru danych. Plik dziali się na: zdefiniowany, niezdefiniowany, tekstowy.
PRZYKŁAD FIZYCZNYCH ZBIORÓW DANYCH
dane przechowywane w pamięci zewnętrznej, tj. na dysku twardym lub dysku elastycznym
dane wprowadzane do komputera za pomocą klawiatury
dane wyprowadzane z komputera w postaci dokumentacji dokumentu drukowanego
tekst wyświetlany na ekranie monitora
PLIK TEKSTOWY- plik typu Text, który jest predefiniowany w module System. Plik taki zawiera znaki zorganizowane w linie.
możliwe jest tu operowanie zarówno znakami, jak i liniami
koniec lini stanowi para znaków #13 oraz #10
koniec pliku stanowi znak #26.
WYKORZYSTANIE PLIKÓW TEKSTOWYCH:
obsługa urządzeń tekstowych, takich jak: klawiatura, ekran, drukarka
obsługa fizycznych zbiorów tekstowych na dyskach twardych lub elastycznych
PREDEFINIOWANE (standardowe) ZMIENNE PLIKOWE
Input - z modułu System, obsługa standardowego wejścia (klawiatury)
Output - z modułu System, obsługa standardowego wyjścia (ekranu)
Lst - z modułu Printer, obsługa drukarki
Zmienne te są typu Text.
CZYNNOŚCI ORGANIZACYJNE ZWIĄZANE Z WYKONYWANIEM OPERACJI NA PLIKU
Przed wykonaniem operacji na pliku
zdefiniowanie właściwej zmiennej plikowej,
związanie zmiennej plikowej z fizycznym zbiorem danych
otwarcie pliku w celu przygotowania go do wykonania zamierzonych operacji
Po wykonaniu operacji na pliku
zamknięcie pliku
WIĄZANIE ZMIENNEJ PLIKOWEJ Z FIZYCZNYM ZBIOREM DANYCH
Assign(zmienna_plikowa; nazwa_fizycznego_zbioru_danych);
związanie zmiennej plikowej z zewnętrznym zbiorem danych jest tak długo jak długo nie nastąpi jej związanie z innym zbiorem za pomocą kolejnego wywołania procedury Assing
parametrem procedury Assing nie może być plik, który jest otwarty.
OTWIERANIE PLIKU: Możliwe przypadki
otwarcie pliku związanego z istniejącym fizycznym zbiorem danych bez naruszenia zawartości tego zbioru
otwarcie pliku związanego z istniejącym fizycznym zbiorem danych ze skasowaniem dotychczasowej zawartości tego zbioru
utworzenie nowego zbioru i otworzenie pliku z nim związanego
Liczba jednoczesnych otwartych plików jest określona przez parametry systemu komputerowego; jeżeli jest ona inna niż domyślna, to jest podawana w pliku konfiguracyjnym CONFIG.SYS.
Otwieranie istniejącego pliku tekstowego do odczytu od samego początku: Reset(zmienna_plikowa);
Otwierania istniejącego pliku tekstowego do zapisu na jego końcu: Append(zmienna_plikowa);
Otwieranie istniejącego pliku tekstowego do zapisu( od jego początku): Rewrtie)zmienna_plikowa);
Zamykanie pliku : Close(zmienna_plikowa);
W czasie zamykania pliku następuje ostateczne uaktualnienie fizycznego zbioru danych.
Czytanie pliku takstowego : Rada lub Radln(zmienna_plikowa, lista_nazw_zmiennych);
Przy czytaniu z klawiatury plikiem tekstowym, z którego następuje czytanie, jest standardowy plik
tekstowy INPUT
Nazwa tego pliku nie musi, aczkolwiek może, być podawana w wywołaniach procedur Read i Readln.
Zapis do pliku tekstowego: Write lub Writeln(zmienna_plikowa, lista_wyrażeń);
W przypadku drukowania na ekran wykorzystywany jest standardowy plik tekstowy Output. Nazwa tego pliku nie musi być podawana w wywołaniach procedur Writeln, Write.
WYKRYWANIE KOŃCA ZBIORU DANYCH - funkcja EOF - standardowa funkcja modułu System.
Wywołanie: Eof(zmienna_plikowa). Przyjmuje wartości typu logicznego (Boolean).
Wykrywanie końca zbioru danych, przed którym pozostały tylko spacje, znaki tabulacji lub puste linie:
Funkcja SEEKEOF - standardowa funkcja modułu System. Wywołanie: SeekEof(zmienna_plikowa). Przyjmuje wartości stany logicznego (Boolean).
Wykrywanie końca lini w piku tekstowym - Funkcja EOLN - standardowa funkcja modułu System
Wywołanie: Eoln(zmienna_plikowa). Przyjmuje wartości stany logicznego (Boolean).
Wykrywanie końca lini w pliku tekstowym, przed którym pozostały tylko spacje, znaki tabulacji:
Funkcja SEEKEOLN - standardowa funkcja modułu System. Wywołanie: SeekEof(zmienna_plikowa). Przyjmuje wartości stany logicznego (Boolean).
Kontrola poprawności wykonywania operacji na plikach (operacje wejścia, wyjścia) - Funkcja IOResult
Standardowa funkcja z modułu System. Wywołanie IOResult. Przujmuje wartości typu Integer - 0 , gdy ostatnio wykonywana operacja wejścia/wyjścia była poprawna albo numer błędu w przypadku przeciwnym.
Gdy funkcja ta przyjmuje wartość=0 przestają być wykonywane dalsze operacje wejścia/wyjścia. Warunkiem wznowienia tych operacji jest wywołanie funkcji IOResult.
Dyrektywa kompilatora I- steruje systemową kontrol,ą operacji wejścia/wyjścia.
{$I-}- wyłączenie systemowej kontroli operacji wejścia/wyjścia,
{$I+} - włączenie systemowej kontroli operacji wejścia/wyjścia.
PLIK ZDEFINIOWANY - plik, którego elementy są definiowane przez użytkownika. Składowej pliku i jego pozycji przypisany jest numer. Pierwsza składowa ma numer 0.
Podstawowe procedury przetwarzania plików zdefiniowanych:
Wiązanie zmiennej plikowej z fizycznym zbiorem danych: Assing(zmienna_plikowa,
nazwa_fizycznego_zbioru_danych);
Otwieranie istniejącego pliku : Reset(zmienna_plikowa);
Otwieranie nowego pliku do zapisu: Rewite(zmienna_plikowa);
Czytanie pliku: Read(zmienna_plikowa, lista_nazw_zmiennych);
Zapisywanie do pliku: Write(zmienna_plikowa, lista_nazw_zmiennych);
Zamykanie pliku: Close(zmienna_plikowa);
Pomocnicze operacje na plikach zdefiniowanych
Kontrola poprawności wykonywania operacji na plikach (operacje wejścia/wyjścia): funkcja IOResult
Wykrywanie końca zbioru danych: funkcja Eof(zmienna_plikowa);
Określanie liczby elementów pliku zdefiniowanego - funkcja FILESIZE. Standardowa funkcja modułu System.
Wywołanie FileSize(zmienna_plikowa). Przyjmuje wartość typu LongInt.
Określenie numeru aktualnej pozycji pliku - funkcja FILEPOS. Standardowa funkcja z modułu System.
Wywołanie FilePos. Przyjmuje wartość typu LongInt.
AKTUALNA POZYCJA PLIKU- pozycja pliku, z której może być realizowane czytanie- jeżeli jest na niej jakiś element- albo na którą może nastąpić zapis elementu.
Zmiana aktualnej pozycji pliku - procedura Seek. Standardowa funkcja z modułu System. Wywołanie Seek(zmienna_plikowa, numer_pozycji_pliku).
Kasowanie końcowej części pliku zdefiniowanego- procedura TRUNCATE . Standardowa funkcja z modułu System, Wywołanie Truncate(zmienna_plikowa).
Opracować samodzielnie: ChDir, GetDir, MkDir, RmDir, Erase, Rename, SetTextBuf, Flush.
(moduł System)
START
Czytanie danych wejściowych
Obliczanie
Drukowanie wyników
STOP
START
Czytanie n, a1,a2,an
max:= a1
i: =2
a1>max
i:=i+1
max:= a1
i=n
Drukowanie max
STOP
START
i1
in
STOP
W
I
W
I1
I2
W
I
I
W
warunek
I1
warunek
I1
I2
warunek
i> 50
warunek
C;= w
C;= 2.0