Wykład Pascal (6)

background image

1

POLITECHNIKA WARSZAWSKA

Instytut Automatyki i Robotyki

POLITECHNIKA WARSZAWSKA

Instytut Automatyki i Robotyki

ZASADY PROGRAMOWANIA KOMPUTERÓW

Język programowania:

Pascal

Ś

rodowisko programistyczne:

Delphi

Temat 3 :

Tablice, rekordy i pliki

Wykład 6 :

Pliki tekstowe

ZASADY PROGRAMOWANIA KOMPUTERÓW

Język programowania:

Pascal

Ś

rodowisko programistyczne:

Delphi

Temat 3 :

Tablice, rekordy i pliki

Wykład 6 :

Pliki tekstowe

background image

2

Pliki tekstowe

Pliki tekstowe

Pliki tekstowe – składają się ze znaków (widocznych lub niewidocznych) i są
podzielone na wiersze. Dostęp do plików tekstowych jest możliwy za pomocą

zmiennych plikowych

typu

text

,

które są logicznymi modelami plików

tekstowych.

Operacje na PLIKACH TEKSTOWYCH

– wykonywane są z użyciem podprogramów

assign

(

zmienna plikowa

, nazwa pliku)

- skojarzenie zmiennej plikowej z nazwą
rzeczywistego pliku dyskowego

reset

(

zmienna plikowa

) - przygotowanie pliku do odczytu

(„przewinięcie” na początek pliku)

rewrite

(

zmienna plikowa

) - przygotowanie pliku do zapisu od początku

append

(

zmienna plikowa

) - przygotowanie pliku do dopisywania

close

(

zmienna plikowa

) - zamknięcie pliku

eof

(

zmienna plikowa

) - funkcja typu boolean, która zwraca

informację, czy napotkano koniec pliku

background image

3

Operacje wykonywane na plikach

Operacje wykonywane na plikach

Wczytywanie danych z pliku

var

plik

:

text

;

...
begin
...

assign

(

plik

, nazwa_pliku);

reset

(

plik

);

...
readln
(

plik

, ...);

...

close

(

plik

);

...
end.

Wczytywanie kolejnych danych aż do
końca pliku:

while not

eof

(

plik

) do

begin

...

readln (

plik

, ...) ;

...

end

;

background image

4

Operacje wykonywane na plikach (1)

Operacje wykonywane na plikach (1)

Zapisywanie danych do pliku

var

plik

:

text

;

...
begin
...

assign

(

plik

, nazwa_pliku);

rewrite

(

plik

);

...
writeln
(

plik

, ...);

...

close

(

plik

);

...
end.

Uwaga: Jeśli plik o podanej
nazwie nie istnieje, zostanie
utworzony; je
śli zaś istnieje,
to zostanie zapisany now
ą
zawartością.

Dopisywanie na końcu danych do pliku

var

plik

:

text

;

...
begin
...

assign

(

plik

, nazwa_pliku);

append

(

plik

);

...
writeln
(

plik

, ...);

...

close

(

plik

);

...
end.

Uwaga: plik o podanej
nazwie musi istnie
ć.

background image

5

Wczytywanie danych z pliku

Wczytywanie danych z pliku

Instrukcja czytania

read

(

zmienna_plikowa

, zmienna_1, zmienna_2, ... , zmienna_n);

lub

readln

(

zmienna_plikowa

, zmienna_1, zmienna_2, ... , zmienna_n);

Za pomocą instrukcji

readln

można wczytać jedynie zmienne typu:

integer

char

real

string

Nie można natomiast wczytać zmiennej logicznej (typu boolean), ani tablicy (w
cało
ści), ani rekordu (w całości).

Uwaga 1: Łańcuchy wczytujemy zawsze instrukcją readln, nie read.

readln

(

zmienna_plikowa

) – powoduje przejście do następnego wiersza pliku

background image

6

Zapisywanie danych do pliku

Zapisywanie danych do pliku

Instrukcja zapisywania ( drukowania )

write

(

zmienna plikowa

, wyrażenie_1, wyrażenie_2, ... wyrażenie_n)

lub

writeln

(

zmienna plikowa

, wyrażenie_1, wyrażenie_2, ... ,wyrażenie_n)

Wyrażenia liczbowe

wyr

można wyprowadzać w jednej z następujących postaci:

wyr wyr

:

m

wyr

:

m

:

n

m

- minimalna szerokość pola przeznaczonego na liczbę; jeśli wartość

m

jest za duża,

pole będzie wypełnione spacjami przed liczbą; jeśli wartość

m

jest za mała, liczba zajmie

tyle miejsca, ile potrzeba.
Zatem – je
śli chcemy drukować liczby pod sobą w równych kolumnach (np. elementy
tablicy dwuwymiarowej), to szeroko
ść pola

m

musi być na tyle duża, by wszystkie liczby

się w tym polu mieściły z jakimś nadmiarem.

n

- liczba miejsc po kropce dziesiętnej (podaje się

tylko dla liczb rzeczywistych

)

writeln

(

zmienna plikowa

) – powoduje wstawienie znaku końca wiersza do pliku

Każde zapisywane wyrażenie może być jednego z następujących typów:

integer real char string boolean

background image

7

Łańcuchy ( napisy ) i operacje na nich

Łańcuchy ( napisy ) i operacje na nich

Łańcuch służą do reprezentowania ciągu znaków. Elementami typu łańcuchowego są
łańcuchy o maksymalnej zdefiniowanej ilości znaków.

Typ łańcuchowy

string

(

ilość znaków < 0, 255 > )

lub

string [

ilosc

]

( ilość znaków < 0, ilosc > )

Do znaków łańcucha odwołujemy się jak do elementów wektora poprzez indeksy

zaczynając od 1

Rozmiar łańcucha (liczbę znaków) można wyznaczyć za pomocą funkcji

length ( )

Łańcuchy można ze sobą łączyć za pomocą operatora

+

i porównywać operatorami

relacji

var imie : string [ 20 ];
...
Begin
...
imie := ’Kacper’;
writeln ( imie [1] );

// pierwsza litera

writeln ( imie [ length(imie)–1] );

// przedostatnia litera

end.

’K’ ’a’ ’c’ ’p’ ’e’ ’r’

1 2 3 4 5 6 7 20

imie[1]

imie[ length(imie)-1 ]

background image

8

Przykład 1 – Plik jako zbiór znaków

Przykład 1 – Plik jako zbiór znaków

Dany jest plik ’znaki.txt’, zawierający ciąg znaków zakończony znakiem ’?’. Wydrukować
trzeci od końca znak, będący literą.

ALGORYTM

z3

z2

z1

z3

z2

z1

z

( gdy z jest literą )

program p1;
var

f

: text;

z,z1,z2,z3

: char;

begin

assign(f,’znaki.txt’);

reset(f);
z3:=‘ ‘; z2:=‘ ‘;

z1:=‘ ‘;

repeat

read(f,z);
if UpCase(z) in [’A’..’Z’] then begin z3:=z2; z2:=z1; z1:=z end

until z=’?’;
close(f);
writeln(z3)

end.

background image

9

Przykład 2 – Plik jako zbiór wierszy

Przykład 2 – Plik jako zbiór wierszy

Z pliku o wczytanej nazwie przepisać do pliku ‘wyniki.pas’ 10 ostatnich wierszy.

program p2;
var

f

: text;

naz, s

: string;

a

:array[1..10] of string;

w, i

: integer;

begin

repeat
write(‘Podaj nazw
ę istniejącego pliku: ‘);
readln(naz);
until FileExists (naz);

{ FUNKCJA

FileExists

jest specyficzna dla Delphi –

przyjmuje wartość true, jeśli plik o nazwie podanej
w nawiasie istnieje, i false, je
śli nie ma takiego pliku. }

assign(f, naz);
reset(f);
w:=0;
for i:=1 to 10 do a[i]:=‘ ‘;

ALGORYTM

1

2

3

4

5

6

7

8

9

10

Uwaga: Jeśli jako nazwę pliku
podamy

‘con’

(konsola), to

wczytywanie będzie się
odbywać z klawiatury
(analogicznie zapis do pliku o
nazwie ‘con’ oznacza
wyświetlenie wyników na
ekranie).

W przypadku wczytywania z
klawiatury koniec danych
(eof...) sygnalizuje się
wciskając naraz klawisze

Ctrl-

Z

.

background image

10

Przykład 2 – c.d.

Przykład 2 – c.d.

Z pliku o wczytanej nazwie przepisać do pliku ‘wyniki.pas’ 10 ostatnich wierszy.

while not eof(f) do begin
readln(f, s);
w:=w+1;
if w<=10 then a[w]:=s else begin
for i:=1 to 9 do a[i]:=a[i+1];
a[10]:=s

end

end;
close(f);

assign(f,’wyniki.pas’);
rewrite(f);
for i:=1 to 10 do writeln(f, a[i]);
close(f)

end.

ALGORYTM

1

2

3

4

5

6

7

8

9

10

background image

11

Przykład 3 – Plik jako zbiór wartości liczbowych

Przykład 3 – Plik jako zbiór wartości liczbowych

Dany jest plik tekstowy, zawierajacy w
kazdym wierszu wspólrzedne (x,y)
punktów. Wydrukowac wspólrzedne i
odleglosc od poczatku ukladu
wspólrzednych 100-ego od konca punktu.

program p3;
Type Tpkt = record x,y : real end;
Var f : text;
bp : Tpkt;
a : array[1..100] of Tpkt;
w,k : integer;
naz : string;
begin
readln(naz);
assign(f,naz); reset(f);
w:=0; k:=1;
while not eof(f) do
begin
readln(f,bp.x,bp.y);
w:=w+1;
if w<=100 then a[w]:=bp else
begin

a[k]:=bp;

k:=k+1; if k>100 then k:=1

end
end;
close(f);
if w<100 then writeln(‘Brak 100 punktow’)
else with a[k] do

writeln(x,y,sqrt(sqr(x)+sqr(y)))

end.

100

1

2

3

.

.

.

.

.

.

.

ALGORYTM

Bufor cykliczny

wpisany punkt

100- ny od końca punkt


Wyszukiwarka

Podobne podstrony:
Wykład z Pascala 2
Wykład z Pascala 3
Wykład z Pascala 2
Sem II Transport, Podstawy Informatyki Wykład XXI Object Pascal Komponenty
Sem II Transport, Podstawy Informatyki Wykład XIV i XV Object Pascal Funkcje i procedury
Podstawy Informatyki Wykład XI Object Pascal Podstawy programowania w Object Pascalu
Podstawy Informatyki Wykład XVI Object Pascal Obiekty
Sem II Transport, Podstawy Informatyki Wykład XII Object Pascal Instrukcje sterujące
Podstawy Informatyki Wykład XIII Object Pascal Funkcje i procedury
Podstawy Informatyki Wykład XVII Object Pascal Komponenty
Tp w 10 Programowanie modularne w Turbo Pascalu, INFORMATYKA, PROGRAMOWANIE, wykłady
Podstawy Informatyki Wykład XV Object Pascal Grafika
Sem II Transport, Podstawy Informatyki Wykład XIX i XX Object Pascal Obiekty
Podstawy Informatyki Wykład XII Object Pascal Instrukcje sterujące
Informatyka Wykład Turbo pascal 7
Sem II Transport, Podstawy Informatyki Wykład XVIII Object Pascal Grafika
Podstawy Informatyki Wykład X Object Pascal Jezyki programowania, Proste typy danych
Podstawy Informatyki Wykład XIV Object Pascal Tablice, rekordy i zbiory
Sem II Transport, Podstawy Informatyki Wykład XVI i XVII Object Pascal Tablice, rekordy i zbiory

więcej podobnych podstron