Informatyka1 wyklad


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

0x08 graphic
Przetwarzanie

Operacja lub grupa operacji, w wyniku których ulega zmianie wartość, postać lub miejsce zapisu danych

0x08 graphic
Wprowadzanie, wyprowadzanie danych

0x08 graphic
Decyzja

Operacja określająca wybór jednej z wielu dróg działania

0x08 graphic
Przygotowanie

Modyfikacja rozkazu lub grupy rozkazów powodująca zmianę w przebiegu procesu przetwarzania

0x08 graphic
0x08 graphic
0x08 graphic
Proces zdefiniowany

Proces zdefiniowany poza programem

0x08 graphic
Droga przepływu danych

Więź operacyjna między poszczególnymi operacjami procesu przetwarzania

0x08 graphic
Droga we wskazanym kierunku

Wskazanie kierunku przepływu danych, gdy nie jest on jednoznaczny

0x08 graphic
0x08 graphic
Skrzyżowanie dróg przepływu danych bez powiązania między nimi

0x08 graphic
Początek, koniec lub przerwa

Oznaczenie miejsca rozpoczęcia, zakończenia lub przerwania działania programu

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
Komentarz

Oznaczenie miejsca na komentarz

0x08 graphic
Łącznik między stronicowy

Wejście lub wyjście z wyodrębnionych fragmentów schematu znajdujących się na jednej stronie

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
Łącznik stronicowy

Wejście lub wyjście z wyodrębnionych fragmentów schematu znajdujących się na jednej stronie

0x08 graphic
Przykład1. Narysować schemat blokowy programu,

w którym przewidziane jest wprowadzenie danych

0x08 graphic
wejściowych i wyprowadzanie wyników wykonanych

0x08 graphic
obliczeń.

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic

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.

0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

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

0x08 graphic
i1,i2,...,in;

0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic
2a. Instrukcja warunkowa o postaci

0x08 graphic
0x08 graphic
if W then I (jeżeli W wykonwj I)

0x08 graphic

0x08 graphic
tak nie

0x08 graphic

0x08 graphic

0x08 graphic

2b.Instrukcja warunkowa o postaci

0x08 graphic
if W then I1 else I2 (jeżeli W wykonaj I1, w

przeciwnym przypadku wukonaj I2). Tak Nie

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
3.Instrukcja iteracyjna o postaci

0x08 graphic
0x08 graphic
while W do I (powtarzaj I dopóki jest spełnioneW)

0x08 graphic
nie

0x08 graphic
0x08 graphic

0x08 graphic

tak

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic
4.Instrukcja iteracyjna o postaci

0x08 graphic
repeat I until W ( powtarzaj I aż do spełnienia W)

0x08 graphic

0x08 graphic

nie

0x08 graphic

0x08 graphic

tak

SCHEMAT POSTĘPOWANIA PRZY TWORZENIU PROGRAMU (algorytmu) zgodnie z ideą programowania strukturalnego:

  1. Na podstawie wstępnego sformułowania problemu budowa początkowego algorytmu jako liniowej sekwencji instrukcji (zadań, poleceń).

  2. Rozłożenie instrukcji z punktu 1 na instrukcje prostsze z wykorzystaniem struktur instrukcji warunkowych i iteracyjnych.

  3. Kontynuacja procesu z punktu 2 aż do uzyskania instrukcji elementarnych w danym języku programowania.

ETAPY OPRACOWANIA PROGRAMU:

  1. Analiza problemu i sformułowanie algorytmu.

  2. Zakodowanie programu w języku programowania

  3. Wprowadzenie tekstu programu źródłowego do komputera

  4. Tłumaczenie programu

  5. Poprawienie błędów formalnych(składniowych)

  6. Uruchamianie programu i poprawienie błędów logicznych

  7. Opracowanie dokumentacji.

CECHY DOBREGO PROGRAMU:

  1. Poprawność

  2. Przystosowalność

  3. Odporność

  4. Stabilność

  5. 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

  1. Stosowanie metod numerycznych, zakładających:

  1. wykorzystanie metod przybliżonych, np. zastąpienie pochodnej jej ilorazem różnicowym

  2. 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:

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:

OPERACJE NA KARTOTEKACH - komendy:

DIR- wyświetlanie listy plików i podkartotek w kartotece

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

Niektóre znaki specjalne pełnią rolę operatorów, są to:

(* *) 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.

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:

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');

0x08 graphic
end. {Wizytówka}

Wizytówka 1 program Wizytówka;

Begin

Writeln(`Wizytówka 1');

End. {Wizytówka}

0x08 graphic

Wizytówka 1 program Wizytówka;

Begin

Writeln(`Wizytówka',' 1');

0x08 graphic
End. {Wizytówka}

Postać wydruku na ekranie PROGRAM

Wizytówka 1 program Wizytówka;

Begin

Writeln(`Wizytówka', 1);

End. {Wizytówka}

0x08 graphic

Wizytówka 1 program Wizytówka;

Begin

Write(`Wizytówka');

Writeln(1);

End. {Wizytówka}

0x08 graphic

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

0x08 graphic
3

0x08 graphic
3.14 +

5

0x08 graphic
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:

0x08 graphic
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Ń

Do samodzielnego opracowania:

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):

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)

FUNKCJE ARYTMETYCZNE

FUNKCJE PORZĄDKOWE

PROCEDURY PORZĄDKOWE

FUNKCJE OPERUJĄCE NA ARGUMENTACH TYPU INTEGER LUB WORD

REGUŁY REALIZACJI OPERACJI ARYTMETYCZNYCH Z ARGUMENTAMI CAŁKOWITYMI

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)

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

FUNKCJE TRYGONOMETRYCZNE I CYKLOMETRYCZNY

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:

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

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

0x08 graphic
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;

0x08 graphic
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

0x08 graphic
0x08 graphic

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:

Przykład programu z etykietami

Program Skok;

Label et1;

Var i, j: Integer;

Begin

... {ciąg instrukcji}

goto et1;

... {ciąg instrukcji}

0x08 graphic
et1: writeln(`koniec:', i:3, j:5);

end.

0x08 graphic
INSTRUKCJA WARUNKOWA IF - postać1

If warunek then I1; False

0x08 graphic
0x08 graphic

0x08 graphic
Przykład: True

0x08 graphic
If licznik <20 then Inc(licznik);

0x08 graphic

0x08 graphic

INSRTUKCJA WARUNKOWA IF - postać2

0x08 graphic
If warunek then I1 else I2

True False

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

Przykład:

If x >y then a:=x else a:=y;

0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic

NAJCZĘŚCIEJ POPEŁNIANE BŁĘDY PRZ STOSOWANIU INSTRUKCJI IF

Przykład (wykorzystanie instrukcji IF).

Należy zapisać instrukcję If realizującą czynności wskazane przez poniżej podany schemat blokowy.

0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
Tak Tak Tak

0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
Nie Nie Nie

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

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.

0x08 graphic
Type LicznikCyfr = array[`0'..'9'] of Integer;

Trzy = 1..3;

0x08 graphic
DwaWymiary = array[Boolean, Trzy] of Byte;

Tablica jednowymiarowa Tablica wielowymiarowa

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
1 2 3 Indeks2

0x08 graphic
0x08 graphic
0x08 graphic
Indeks `0' `1' `2' `3' `4' `5' `6' `7' `8' `9' False

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
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ń).

0x08 graphic
0x08 graphic
NADAWANIE WARTOŚCI ZMIENNEJ TYPU TABLICOWEGO

Każdemu elementowi z osobna całej tablicy

0x08 graphic
0x08 graphic
0x08 graphic

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

0x08 graphic
0x08 graphic

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

0x08 graphic
0x08 graphic
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;

0x08 graphic
0x08 graphic
0x08 graphic

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;

0x08 graphic
0x08 graphic
0x08 graphic

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



Wyszukiwarka

Podobne podstrony:
Sem II Transport, Podstawy Informatyki Wykład XXI Object Pascal Komponenty
Podstawy Informatyki Wykład XIX Bazy danych
Podstawy Informatyki Wykład V Struktury systemów komputerowych
Informatyka - wykład II, Inne materiały
INFORMATYKA WYKŁADY
Technologie informacyjne - wykład 2-4, AM SZCZECIN, Informatyka - Wykłady
System informatyczny zarządzania, WSB Bydgoszcz, Informatyka wykłady
Technologia Informacyjna wykład 1, ściągnięte, IT, Technologia Informacyjna(5)
Teoria Informacji Wykład 6 (08 04 2015)
Cykl życia systemu informatycznego, WSB Bydgoszcz, Informatyka wykłady
infa wykłady INFORMATYKA WYKŁAD
Zagadnienia egzamin podstawy informatyki, Elektronika i Telekomunikacja, z PENDRIVE, Politechnika -
Podstawy informatyki, wykład 7
Internet jako środowisko informacyjne wykłady
Sem II Transport, Podstawy Informatyki Wykład XIV i XV Object Pascal Funkcje i procedury
Informa, Wykład 2 Instrukcje sterujące
Podstawy Informatyki Wykład VI Reprezentacja informacji w komputerze
Informa wyklad petle id 716506 Nieznany

więcej podobnych podstron