program Zamiana_tekstu_na_liczbe;
{$N+} uses crt;
var n:integer;
liczba,potega255:extended;
tekst:string;
procedure zamienTekstNaLiczbe(tekst:string);
begin
liczba:=0;
potega255:=1;
for n:=length(tekst) downto 1 do
liczba:=liczba+ord(tekst[n])*potega255;
potega255:=potega255*255;
end;
clrScr;
tekst:='Kom';
zamienTekstNaLiczbe(tekst);
writeLn(tekst,'=',liczba:1:0);
readLn;
end.
program Binarne_na_rzeczywiste;
uses crt;
var n: longInt;
RZ, p: real;
Bin: string;
Bin:='1010101,1100110011';
p:=1;
n:=2;
while (Bin[n]<>',') and (n<=length(Bin)) do
p:=p*2;
n:=n+1;
write(Bin,' -> ');
Rz:=0;
for n:=1 to length(Bin) do
if Bin[n]='1' then Rz:=Rz+p;
if Bin[n]<>',' then p:=p/2;
write(Rz:1:11);
Program Dziesietne_na_binarne;
var liczbaDz:integer;
liczBin:string;
liczbaDz:=85;
write(liczbaDz,' - ');
liczBin:='';
repeat
liczBin:=chr(liczbaDz mod 2+48) +liczBin;
liczbaDz:=liczbaDz div 2;
until liczbaDz=0;
writeLn(liczBin);
program sortowanie_liczb;
var tab:array[1..25] of integer;
n,k,x:integer;
clrscr; randomize;
for n:=1 to 25 do begin tab[n]:=round(random(100));write(tab[n],' ');end;
for n:=1 to 25 do
for k:=n+1 to 25 do begin if tab[n]>tab[k] then begin
x:=tab[n]; tab[n]:=tab[k]; tab[k]:=x; end; end;
writeln; for n:=1 to 25 do write(tab[n],' ');
readln;
Samą zmienną plikową deklaruje się w sposób następujący:
nazwa : file of typ { dla pliku elementowego }nazwa : text { dla pliku tekstowego }
Po zadeklarowaniu odpowiedniej zmiennej plikowej można przystąpić do właściwych operacji związanych z zapisywaniem i odczytywaniem danych. Przede wszystkim musimy skojarzyć zmienną plikową z fizycznym plikiem znajdującym się na dysku. Służy do tego procedura assign:
assign(zmienna-plikowa, nazwa-pliku)
Dwiema podstawowymi procedurami używanymi w Pascalu do otwierania plików są reset i rewrite:
reset(zmienna-plikowa)rewrite(zmienna-plikowa)
odczyt i zapis pliku
read(zmienna-plikowa, lista-elementów)write(zmienna-plikowa, lista-elementów)
zamknięcie pliku jest praktycznie jedynym sposobem na bezpieczne zapisanie w nim wszystkich danych.
Na szczęście zamknięcie pliku jest bardzo proste. Realizuje je procedura close:
close(zmienna-plikowa)
procedure ZapiszNaDysku(NazwaPliku : string); var f : file of Ksiazka; i : integer; begin assign(f, NazwaPliku); { skojarz plik ze zmienną plikową } rewrite(f); { otwórz (utwórz) plik } for i := 1 to LbPoz do { zapisz kolejne rekordy } write(f, Katalog[i]); close(f); { zamknij plik } end;
procedure OdczytajZDysku(NazwaPliku : string); var f : file of Ksiazka; i : integer; begin assign(f, NazwaPliku); { skojarz plik ze zmienną plikową } reset(f); { otwórz plik (musi istnieć!) } i := 0; { wyzeruj licznik rekordów } while not eof(f) do { czytaj aż do końca pliku } begin Inc(i); { kolejny rekord } read(f, Katalog[i]); end; LbPoz := i; { wczytano tyle rekordów } close(f); end;
procedure ZapiszNaDysku(NazwaPliku : string); var f : text; { tym razem plik tekstowy } i : integer; begin assign(f, NazwaPliku); { skojarz plik ze zmienną plikową } rewrite(f); { utwórz plik } for i := 1 to LbPoz do { zapisz kolejne rekordy } with Katalog[i] do { wyprowadź poszczególne pola rekordu } begin writeln(f, 'Pozycja katalogu: ', i); writeln(f, 'Tytul: ', Tytul); writeln(f, 'Autor: ', Autor); if Wypozyczajacy = '' then { nikt nie wypożyczył } writeln(f, 'Ksiazka znajduje sie na polce.') else { pole zawiera nazwisko wypożyczającego } writeln(f, 'Wypozyczajacy: ', Wypozyczajacy); writeln(f); end; close(f); { zamknij plik } end;
michal_jonhy