Typy plikowe. 1. Wprowadzenie. 2. Podstawowe operacje na plikach. Przetwarzanie plików w języku Pascal 1

Wielkość: px
Rozpocząć pokaz od strony:

Download "Typy plikowe. 1. Wprowadzenie. 2. Podstawowe operacje na plikach. Przetwarzanie plików w języku Pascal 1"

Transkrypt

1 Przetwarzanie plików w języku Pascal 1 Typy plikowe 1. Wprowadzenie Jednym z typów złożonych języka Pascal jest typ plikowy. Zmienne typu plikowego stanowią programową reprezentację plików zewnętrznych. Pod pojęciem pliku rozumieć będziemy złożoną strukturę danych języka Pascal, natomiast mianem pliku zewnętrznego określać będziemy fizyczny plik danych umieszczony na takim nośniku masowym jak dysk, dyskietka, taśma magnetyczna itp. Pojęcie pliku pozwala abstrachować od fizycznej organizacji pliku zewnętrznego oraz rodzaju nośnika. Plik jest ciągiem (sekwencją) elementów tego samego typu. Liczba elementów pliku nie jest z góry znana, zmieniać się może w trakcie wykonania programu w szerokich granicach. Ograniczenie maksymalnej ilości elementów w pliku ma charakter techniczny, zależy głównie od ilości wolnego miejsca na nośniku oraz specyfiki stosowanej organizacji struktur plikowych na poziomie systemu operacyjnego. W każdej chwili bezpośrednio dostępny jest tylko jeden element pliku, określony przez aktualną pozycją w pliku. Zinterpretować to można w ten sposób, że w danym momencie zawsze istnieje bieżący element pliku, wyróżniony przez specjalny wskażnik pozycji w pliku. Plik znajduje się w pozycji początkowej, jeżeli elementem bieżącym jest pierwszy element w pliku. Plik znajduje się w pozycji końcowej, jeżeli bieżącym elementem jest ostatni element pliku. Liczba elementów danego pliku jest zwana długością pliku. Plik o długości zerowej nazywany jest plikiem pustym. Składnia deklaracji typu plikowego ma następującą postać: typ_plikowy = File Of typ_składowy gdzie typ_składowy to dowolny typ prosty lub złożony, za wyjątkiem typu plikowego lub takiego typu złożonego, którego składową jest typ plikowy. Mimo, iż autor języka w pozycji [2] podaje przykład pliku wielopoziomowego, jednak w standardzie jak i realnych implementacjach języka Pascal mechanizm ten nie jest dostępny. Przykłady deklaracji plików: PlikLiczb = File Of Integer;{ Plik liczb całkowitych } PlikZnakow = File Of Char;{ Plik znaków } PlikTablic = File Of Array[ ] Of Real; {Plik tablic rzeczywistych} W standardzie języka typy plikowe miały charakter czysto sekwencyjny, plik konstruuje się dołączając na końcu kolejne elementy, następnie zaś można go analizować stosując sekwencyjne przeglądanie. Implementacje języka firmy Borland (od Turbo Pascala 3.0 do Borland Pascala) umożliwiają również rozszerzenie możliwości o dostęp swobodny. W rozdziale tym pominięte zostaną klasyczne metody dostępu sekwencyjnego które znaleźć można we wspomnianej już pracy [2] oraz [1]. Rówież praca [3] zawiera systematyczny opis zarówno aspetków syntaktycznych jak i omówienie metod klasycznego przetwarzania sekwencyjnego. W pracy tej główny nacisk położony zostanie na praktycznie użyteczne metody wykorzystania plików z uwzględnieniem specyfiki języka Pascal w implementacjach firmy Borland. 2. Podstawowe operacje na plikach Pierwszym etapem pracy z plikami jest zadeklarowanie zmiennej plikowej. Odwolując się do poprzedniego przykładu można podać następujące definicje: DaneOZatrudnieninu : PlikLiczb; TekstOferty : PlikZnaków; BilansyMiesięczne : PlikTablic; lub wprowadzając opis typu bezpośrednio do definicji zmiennej: WskaznikiEkonomiczne : File Of Real; NotowaniaGiełdowe : File Of Array[ 1..IloscSpolek ] Of Real; Po definicji, zmienna plikowa jest reprezentantem typu plikowego, potocznie utożsamia się ją z plikiem. Nie reprezentuje ona jednak jeszcze żadnego pliku zewnętrznego. Zmienna plikowa kojarzona jest z plikiem zewnętrznym poprzez wywołanie procedury Assign. Deklaracje procedury ma następującą postać: Assign( var ZmiennaPlikowa; NazwaPlikuZewnętrznego : String );

2 Przetwarzanie plików w języku Pascal 2 Pierwszym parametrem procedury tej jest zmienna plikowa dowolnego typu plikowego. Drugim parametrem jest łańcuch znaków określający nazwę pliku zewnętrznego. Po wywołaniu procedury Assign a więc po skojarzeniu zmiennej plikowej z plikiem zewnętrznym, każda operacja na zmiennej plikowej powoduje odpowiednie działanie na pliku zewnętrznym. Wymaga się, aby zmienna plikowa nie reprezentowała już otwartego pliku. Skojarzenie pomiędzy zmienną plikową a plikiem zewnętrznym trwa tak długo, aż nie zostanie dokonane skojarzenie tej zmiennej plikowej z innym plikiem. Po realizacji skojarzenia zmiennej plikowej z plikiem zewnętrznym nie jest on jeszcze dostępny do zapisu czy odczytu. Należy dokonać otwarcia tego pliku. Do otwarcia służą procedury Reset, Rewrite, Append, ta ostatnia zostanie omówiona we fragmencie poświęconym plikom tekstowym. Procedura Reset sluży do otwarcia pliku istniejącego. W przypadku gdy plik nie istnieje powstaje błąd, który może objawić się w dwojaki sposób. W przypadku gdy dyrektywa przełączająca I jest włączona {$I+} wygenerowany zostanie błąd wykonania programu, powodujący jego zakończenie. W przypadku, gdy dyrektywa I jest wyłączona {$I-}, program nie jest przerywany a kontrola poprawności otwarcia spoczywa na programiście (bliższe informacje w dalszej części pracy). Po poprawnie zakończonym wykonaniu procedury Reset, plik jest ustawiany w pozycji początkowej. Procedura Rewrite służy do otwarcia pliku, przy czym staje się on plikiem pustym. Oznacza to, że gdy plik zewnętrzny istnieje to jego poprzednia zawartosć jest kasowana. Gdy plik nie istnieje, jest tworzony nowy, pusty plik. Poza tym inne informacje dotyczące procedury Reset mają zastosowanie w przypadku procedury Rewrite. Zarówno procedura Reset jak i Rewrite otrzymuja jako parametr zmienną plikową. W pewnych przypadkach wystąpić może drugi parametr, którego znaczenie zostanie omówione szczególowo we fragmencie poświęconym plikom amorficznym. Po pomyślnym otwarciu pliku można już wykonywać na nim operacje zapisu i odczytu. Zapis do pliku elementowanego jest realizowany przez procedurę Write, a odczyt przez procedure Read. Procesowi zapisu i odczytu podlegają zmienne zgodne w sensie przypisania z typem składowym pliku. Zawsze pierwszym parametrem wywołania obu procedur jest zmienna plikowa otwartego pliku. Zapis liczb 10, 20, 30 do pliku liczby.dat realizuje następujący fragment programu. Program P1; Liczby : File Of Integer; Assign( Liczby, liczby.dat ); Rewrite( Liczby ); Write( Liczby, 10 ); Write( Liczby, 20 ); Write( Liczby, 30 ); Close( Liczby ); End. Poniższy fragment ilustruje odczyt wcześniej zapisanych liczb (z wyświetleniem na ekranie ) - wyświetlone zostaną liczby 10 i 20: Program P2; Liczby : File Of Integer; L : Integer; Assign( Liczby, liczby.dat ); Reset( Liczby ); Read( Liczby, L ); WriteLn( L ); Read( Liczby, L ); WriteLn( L ); Close( Liczby ); End. Po realizacji planowanych operacji na pliku, wtedy gdy nie jest on już potrzebny, należy plik zamknąć. Realizuje to procedura Close, której wywołanie zawierają przedstawione wyżej programy. W trakcie jej wykonania następuje ostateczne zapisanie wszystkich informacji do pliku (oczekujących być może w buforach systemowych).

3 Przetwarzanie plików w języku Pascal 3 Typowe sekwencyjne przetwarzanie pliku ilustruje program P3. Zadaniem programu jest wyświetlenie na ekranie monitora zawartości pliku, którego elementy są typu Integer. Program P3; Liczby : File Of Integer; L : Integer; Assign( Liczby, liczby.dat ); Reset( Liczby ); { Dopóki nie osiągnięto końca pliku } While Not Eof( Liczby ) Do Read( Liczby, L ); { Czytaj liczbą z pliku } WriteLn( L ); { Wyświetl liczbę na ekranie } Close( Liczby ); End. Program otwiera plik liczby.dat, po uprzednim skojarzeniu go ze zmienną plikową Liczby. Plik znajduje się w pozycji poczatkowej. Iteracja While umożliwia odczytanie wszystkich elementów zapisanych w pliku i wyświetlenie ich na ekranie. Zakończenie iteracji gwarantuje warunek Not Eof( Plik ). W warunku tym występuje wywołanie funkcji Eof, umożliwiającej testowanie, czy w wyniku ostatniej operacji przeprowadzonej na pliku, nie osiągnięto pozycji końcowej. Rezultatem Funkcji Eof jest wartość True jeżeli został osiągnięty koniec pliku, natomiast wartość False w przeciwnym wypadku. Przetwarzanie pliku elementowego ilustruje program przykładowy nr 1 umieszczony na końcu rozdziału. Realizuje on ewidencję danych adresowych zapamiętywanych w pliku rekordów. 3. Rodzaje typów plikowych Oprócz omówionych wcześniej plików elementowych, dostępne są jeszcze: predefiniowany typ plik tekstowy Text oraz charakterystyczne dla implementacji Borlanda pliki amorficzne. 3.1 Pliki tekstowe Typ Text jest predefinowanym standardowym typem języka Pascal. Służy on do reprezentowania plików tekstowych. Elementami takiego pliku są wiersze tekstu będące ciągami znaków zakończonymi znacznikiem końca linii - najczęściej parą znaków Cr-Lf (tzw. powrót karetki i nowy wiersz ). Dla plików tekstowych zdefinowano dodatkowe procedury. Załóżmy, że dana jest następująca definicja: PlikTekstowy : Text; LiniaTekstu : String; Na takim pliku określone są operacje realizowane przez procedury: WriteLn( PlikTekstowy ) - dołącza znacznik końca wiersza do bieżącej linie w pliku PlikTekstowy. ReadLn( PlikTekstowy ) - powoduje pominięcie ciągu znaków w pliku PlikTekstowy aż do znaku występującego bezpośrednio po najbliższym znaczniku końca wiersza. EOLn( PlikTekstowy ) - funkcja o wartości logicznej, której rezultatem jest wartość True gdy aktualna pozycja pliku wskazuje na znacznik końca wiersza. Gdy tak nie jest, rezultatem jest wartość False. Wywołanie : Read( PlikTekstowy, LiniaTekstu); ReadLn( PlikTekstowy ); może być zastąpione wywołaniem: ReadLn( PlikTekstowy, LiniaTekstu ); Podobnie jest w przypadku procedur Write i WriteLn.

4 Przetwarzanie plików w języku Pascal 4 W przypadku plików tekstowych nieco inne znaczenie ma procedura Reset. Otwiera ona taki plik wyłącznie do odczytu. Procedura Rewrite natomiast otwiera plik tylko do zapisu. Dostępna jest również procedura Append otwierająca plik do dopisywania (w pozycji końcowej) w trybie tylko do zapisu. Program przykladowy nr 2 umieszczony na końcu rozdziału prezentuje w jaki sposób można wykorzystać pliki tekstowe do organizacji prostego programu narzędziowego wyświetlającego na ekranie zawartość pliku tekstowego. 3.2 Pliki amorficzne W wielu przypadkach trudno jest określić jakie mają być typy elementów pliku. Również bardzo często w plikach zewnętrznych składowana jest informacja tak zorganizowana, że trudno (bądź niemożna) zdefiniować typ plikowy, który umożliwiłby przetwarzanie takich plików. Typowym przykładem są pliki graficzne, dżwiękowe czy pliki baz danych integrujące w sobie nie tylko same dane a również informacje o ich organizacji i strukturze. W implementacjach języka Pascal firmy Borland dostępna jest możliwość przetwarzania plików o niezdefiniowanej strukturze wewnętrznej. Służy do tego typ File dla którego nie określa się typu składowego. Zakłada się jedynie, że na etapie otwarcia pliku określa się wyrażony w bajtach rozmiar bloku, takie właśnie bloki bądą mogły być z pliku czytane i doń zapisywane. Rozmiar bloku definiuje się na etapie otwierania plików za pośrednictwem procedur Reset i Rewrite, stanowi on drugi, opcjonalny parametr wywołania tych funkcji. W przypadku pominięcia rozmiaru bloku przyjmowany jest domyślnie rozmiar 128 bajtów. Górną granicą rozmiaru bloku jest 65535, czyli maksymalna wartość jaką można przedstawić przy użyciu typu Word, taki jest bowiem typ parametru określającego wielkość bloku (i taki jest maksymalny rozmiar segmentu danych). Dolne ograniczenie rozmiaru jest oczywiste-najmniejszy blok może mieć rozmiar jednego bajta. Ten przypadek jest szczególnie użyteczny, takie pliki są traktowane jak strumień bajtów, programista może swobodnie sterować strukturą zapisywanych informacji. Do realizacji zapisu i odczytu używa się procedur BlockWrite i BlockRead. Umożliwiają one zapis i odczyt pojedynczego bloku lub większej ich ilości. W szczególnym przypadku można jednym wywołaniem tych procedur zapisać lub odczytać cały (nieduży) plik. Procedury te otrzymują w postaci parametrów: 1. zmienną plikową typu File, 2. nazwę zmiennej stanowiącej bufor transferowy, 3. liczbę typu Word określającą ilość bloków, które mają zostać zapisane/odczytane, 4. opcjonalną zmienną typu Word określającą ile w rzeczywistości zapisano/odczytano bloków. Źródłem danych przy zapisie a miejscem gdzie będą umieszczone po odczycie, jest drugi parametr obu procedur. Wskazuje on miejsce w pamięci operacyjnej, wykorzystuje się tutaj wprowadzoną do implementacji firmy Borland możliwość przekazywania parametru przez zmienną bez konieczności specyfikowania typu. Z takim parametrem formalnym jest zgodny w sensie przypisania każdy parametr aktualny reprezentujący zmienną dowolnego typu. Zatem buforem transferowym może być np. pojedyncza zmienna typu Integer, dowolna tablica, rekord czy blok przydzielony dynamicznie na stercie programu. Rozmiar bufora transferowego musi być niemniejszy niż wynika to z przemnożenia rozmiaru bloku (określanego na etapie otwarcia plików) z trzecim parametrem określającym ilość bloków jakie maja być zapisane/odczytane. Należy tutaj zwrócić uwagę, że niedotrzymanie warunku nałożonego na rozmiar bufora transferowego może być grożne w skutkach. O ile przekazanie bufora o rozmiarze zbyt dużym jest zwykle jedynie marnotrawstwem pamięci o tyle bufor o rozmiarze zbyt małym jest niebezpieczny dla stabilności programu. Sumaryczna ilość danych (liczona w bajtach) do zapisu/odczytu przez omawiane funkcje wynika z przemnożenia rozmiaru bloku przez ilość bloków. Jeżeli jest ona większa niż rozmiar bufora transferowego, do pliku trafiają przypadkowe dane zapisane w pamięci operacyjnej tuż za końcem przekazanego bufora. Dużo groźniejsze następstwa ma zwykle odczyt danych do zbyt małego bufora, dodatkowe dane zostaną zapisane tuż za jego końcem, niszcząc umieszczoną tam zawartość pamięci operacyjnej, często zawierającej inne zmienne. Umieszczone niżej program prezentuje sposób wykorzystania procedur BlockRead i BlockWrite. Procedura ZapiszDane zapisuje do pliku dane.dat zawartość zmiennych typu Integer, Real, oraz tablicy łańcuchów znakowych. Procedura CzytajDane realizuje odczyt wcześniej zapisanych danych. Program P4; Dane : File; LiczbaInt : Integer; LiczbaReal : Real; Tablica : Array[ ] Of String[ 20 ]; Ile : Word;

5 Przetwarzanie plików w języku Pascal 5 Procedure ZapiszDane; { Przygotowanie danych do zapisu } LiczbaInt := 10; LiczbaReal := ; Tablica[ 1 ] := 'Pierwszy'; Tablica[ 2 ] := 'Drugi'; Tablica[ 3 ] := 'Trzeci'; Assign( Dane, 'dane.dat' ); { Otwarcie pliku z blokiem jednobajtowym } Rewrite( Dane, 1 ); { Zapis bloku o rozmiarze zmiennej Integer } BlockWrite( Dane, LiczbaInt, SizeOf( LiczbaInt ), Ile ); WriteLn('Zapisano ', Ile, ' bajtów dla Zmiennej LiczbaInt' ); { Zapis bloku o rozmiarze zmiennej Real } BlockWrite( Dane, LiczbaReal, SizeOf( LiczbaReal ), Ile ); WriteLn('Zapisano ',Ile, ' bajtów dla Zmiennej LiczbaReal' ); { Zapis bloku o rozmiarze zmiennej Tablica } BlockWrite( Dane, Tablica, SizeOf( Tablica ), Ile ); WriteLn('Zapisano ',Ile, ' bajtów dla Zmiennej Tablica' ); Close( Dane ); Procedure CzytajDane; { Wstępne zerowanie zmiennych globalnych } LiczbaInt := 0; LiczbaReal := 0; Tablica[ 1 ] := ''; Tablica[ 2 ] := ''; Tablica[ 3 ] := ''; Assign( Dane, 'dane.dat' ); { Otwarcie pliku z blokiem jednobajtowym } Reset( Dane, 1 ); { Odczt bloku o rozmiarze zmiennej Integer } BlockRead( Dane, LiczbaInt, SizeOf( LiczbaInt ), Ile ); WriteLn( 'Odczytano ', LiczbaInt ); { Odczt bloku o rozmiarze zmiennej Real } BlockRead ( Dane, LiczbaReal, SizeOf( LiczbaReal ), Ile ); WriteLn( 'Odczytano ', LiczbaReal ); { Odczt bloku o rozmiarze zmiennej Tablica } BlockRead ( Dane, Tablica, SizeOf( Tablica ), Ile ); WriteLn( 'Odczytano ', Tablica[ 1 ] ); WriteLn( 'Odczytano ', Tablica[ 2 ] ); WriteLn( 'Odczytano ', Tablica[ 3 ] ); Close( Dane ); ZapiszDane; CzytajDane; End. Program przykładowy nr 3 umieszczony na końcu rozdziału prezentuje sposób wykorzystania plików amorficznych do implementacji prostego programu narzędziowego realizującego kopiowanie plików zadanych parametrami wywołania programu.

6 Przetwarzanie plików w języku Pascal 6 4. Kontrola poprawności operacji dostępu do plików Operacje dostępu do plików zaliczane są do grupy operacji wejścia-wyjścia. W trakcie ich realizacji mogą wystąpić błędy, typowym przykładem jest próba otwarcia nieistniejącego pliku procedurą Reset, czy próba zapisu lub odczytu z pliku uprzednio nie otwartego. Domyślną reakcją na wystąpienie tego rodzaju błędów jest wystąpienie tzw. błędu wykonania programu powodującego jego awaryjne zakończenie z odpowiednim komunikatem w postaci: Runtime error num at ssss:oooo gdzie num to numer błędu wykonania a para ssss:oooo określa adres fragmentu kodu, który spowodował powstanie błędu. Taka strategia reakcji na błędy jest nie do przyjęcia w przypadku zastosowań praktycznych, w szczególnym przypadku komunikat w formie opisanej powyżej jest całkowicie nieczytelny dla typowego użytkownika komputerów. Implementacje języka Pascal firmy Borland umożliwiają przejęcie przez programistę kontroli poprawności wykonywanych operacji i realizację własnej strategii obsługi sytuacji błędnych. Aby uniknąć przymusowego zakończenia programu z błędem wykonania należy wykorzystać przełącznikową dyrektywę kompilatora I. Włączenie w kod programu dyrektywy{$i-} spowoduje, że błędy wejścia-wyjścia nie będą przerywaly wykonania programu. Dyrektywa w postaci {I+} powoduje włączenie kontroli poprawności wykonywanych operacji wejścia-wyjścia. We fragmentach kodu w którym kontrola jest wyłączona, programista jest zobowiązany do samodzielnej kontroli realizowanych operacji. W przeciwnym wypadku wystąpienie błędu spowodowować może nieprzewidywalne skutki. Do realizacji kontroli poprawności ostatnio wykonanej operacji służy funkcja IOResult. Jej rezultatem są wartości typu Integer. Wartość 0 oznacza brak błędu, inna wartość jest kodem błędu jaki został wykryty. Najczęściej spotykane błędy i ich interpretację zawiera tabela: Kod błędu Opis błędu 2 Plik nie został znaleziony 3 Nieprawidłowa scieżka 4 Zbyt wiele otwartych plików 5 Brak dostępu do pliku 6 Niewłaściwy identyfikator dostępu do pliku 12 Niewłaściwy tryb dostępu 15 Niewłaściwy numer stacji dysków 100 Błąd odczytu 101 Błąd zapisu 102 Plik nie skojarzony z plikiem zewnętrznym 103 Plik nie otwarty 104 Plik nie otwary do zapisu 105 Plik nie otwary do odczytu Tab. nr 1. Wybrane kody błędów wejścia-wyjścia Należy zwrócić uwagę na to, że funkcja IOResult działa w specyficzny sposób. Jej wywołanie po wystąpieniu błędu da w rezultacie jego kod. Jednak powtórne wywołanie funkcji (bez realizacji nastepnej operacji wejścia-wyjścia) IOResult da w rezultacie wartość 0, zatem jedynie pierwsze wywołanie po błędzie da wartość prawidłową. Jeżeli wartość kodu błędu jest dalej potrzebna (np. w celu wyświetlenia komunikatu o błędzie i jego przyczynie) wartość funkcji IOResult należy zapamiętac w zmiennej pomocniczej. Sposób wykorzystania dyrektywy I oraz funkcji IOResult prezentuje następujący przykład. Zalóżmy dla uproszczenia, że plik zewnętrzny dane.dat nie istnieje. Program P5; PlikPliczb : File Of Integer; Liczba : Integer; Assign( PlikLiczb, dane.dat ); Reset( PlikLiczb ); { Ponieważ procedura Reset wymaga istnienia pliku dane.dat, } { w trakcie jej wykonywania powstanie błąd wykonania } { a program zostanie przerwany }

7 Przetwarzanie plików w języku Pascal 7 Read( PlikLiczb, Liczba ); Close( PlikLiczb ); Program P6; PlikPliczb : File Of Integer; Liczba : Integer; Assign( PlikLiczb, dane.dat ); {$I+} {Wyłączenie kontroli błędów } Reset( PlikLiczb ); KodBledu = IOResult; {$I+} { Włączenie kontroli błędów } If KodBledu <> O Then WriteLn( Otwarcie pliku niemożliwe, kod błędu :, KodBledu ); Else Read( PlikLiczb, Liczba ); Close( PlikLiczb ); W programie P6 programista przejmuje kontrolę nad operacją otwarcia pliku. W przypadku gdy nie zakończyła się ona sukcesem, wyświetlany jest odpowiedni komunikat, którego formę definiuje programista, program nie jest przerywany, następuje jego normalne zakończenie, tak jak przewiduje aktualna ścieżka wykonania. Należy zwrócić uwagę na to, że zarówno wywołanie procedury Read jak i Close nie jest zabezpieczone przed przerwaniem z błędem wykonania. Podejście takie może się wydawać niekonsekwentnym. Jednak w zastosowaniach praktycznych najczęściej realizuje się wyspecjalizowaną kontrolę błędów w fragmentach najbardziej narażonych na ich powstanie, takich właśnie jak np. otwieranie czy tworzenie plików. Drobiazgowa kontrola poprawności wykonania każdej operacji wejścia-wyjścia znacznie powiększa program i obniżyć może jego efektywność. Wyważenie proporcji pomiędzy fragmentami skrupulatnie kontrolowanymi a takimi, co do których przewidujemy, że nie spowodują błędów jest trudne, a stosowane kryteria umowne i zależne od konkretnego zastosowania. 5. Informacje uzupełniające W procesie realizacji operacji na plikach bardzo użyteczne są dodatkowe procedury i funkcje dostępne w implementacjach języka Pascal firmy Borland. Oto ich zwięzły opis. Procedura Seek realizuje ustawianie odpowiedniej pozycji pliku. Pierwszy parametr to zmienna plikowa, drugi (typu LongInt) oznacza przesunięcie elementu bieżącego liczone względem początku pliku. Pierwszy element w pliku ma numer 0. Zatem wywołanie funkcji Seek dla dowolnej zmiennej plikowej Plik w postaci: Seek( Plik, 0 ) spowoduje ustalenie początkowej pozycji w pliku-elementem bieżącym jest pierwszy element. Procedura umożliwia niesekwencyjne przetwarzanie plików. Funkcji ne można stosować dla plików tekstowych. Funkcja FileSize umożliwia określenie ilości elementów danego pliku. Rezultat tej funkcji jest typu LongInt. Jeżeli plik jest pusty rezultat funkcji FileSize jest równy zero. Uwaga, wywołanie: Seek( Plik, FileSize( Plik ) - 1 ) umożliwia ustawienie się na ostatnim elemencie w pliku, natomiast wywołanie: Seek( Plik, FileSize( Plik ) ) umożliwia ustawienie się na końcu pliku. Funkcji nie można stosować dla plików tekstowych. Funkcja FilePos udostępnia bieżącą pozycję w pliku, określająca numer bieżącego elementu w pliku w stosunku do jego początku. Jeżeli bieżący element jest pierwszym w pliku, rezuktatem funkcji FilePos jest wartość 0. Jeżeli bieżaca pozycja pliku to jego koniec (tzn. rezultat funkcji Eof jest równy True), rezultat funkcji FilePos jest rówy rezultatowi funkcji FileSize. Funkcja nie może byc stosowana do plików tekstowych. Analiza programów przykładowych nr 2 i 3 wymaga znajomości metody przetwarzania parametrów wywołania programu. W implementacjach języka Turbo Pascal służą do tego funkcje ParamCount i ParamStr. Rezultatem pierwszej jest ilość parametrów wywołania programu. Wywołanie funkcji ParamStr( 1 ) udostępnia łańcuch znaków zawierający pierwszy

8 Przetwarzanie plików w języku Pascal 8 parametr wywołania programu, ParamStr( 2 ) drugi itd. Umieszczony niżej program wyświetla na ekranie wszystkie parametry z którymi został wywołany. Program P7; I : Integet; For I := 0 To ParamCount Do WriteLn ( Parametr nr:, I, to, ParamStr( I ) ); End. Zakładając, że program wykonywalny ma nazwę p7.exe, jego wywołanie z linii poleceń systemu DOS w postaci: p7 aa bb cc spowoduje wyświetlenie następujących wyników: Parametr nr: 1 to aa Parametr nr: 2 to bb Parametr nr: 3 to cc Szczegółwy opis prezentowanych w tym rozdziale procedur i funkcji oraz metod ich wykorzystania znaleźć można w pracach [4] i [5]; 6. Programy przykładowe Program przykładowy numer 1 Opis programu: Program prezentuje metody wykorzystywania plików elementowych do realizacji prostego programu spełniającego funkcje kartoteki adresowej. Program BazaDanych; Uses Crt; Const NazwaPliku : String='osoby.bd'; {Domyślna nazwa pliku z danymi osobowymi} Type { Rekord opisu danych osobowych } OpisOsoby = Record Imie : String[ 20 ]; Nazwisko : String[ 20 ]; Wiek : Integer; { Zbiór znaków, deklaracja niezbędna dla funkcji CzekajNaDozwolonyZnak } ZbiorZnakow = Set Of Char; PlikOsob : File Of OpisOsoby; {Zmienna plikowa identyfikująca plik danych } Rezultatem funkcji jest kopia lancucha S pozamianie wszystkich malych liter na litery duze. Parametry : S to zrodlowy lancuch znakow. Rezultat : kopia lancucha S po zamianie na duze litery. Wejscie : parametry.

9 Przetwarzanie plików w języku Pascal 9 Wyjscie : rezultat. Funkcja ma charakter pomocniczy. Function DuzeLitery( S : String ) : String; PozycjaWLancuchu : Integer; Roboczy : String; For PozycjaWLancuchu := 1 To Length( S ) Do Roboczy[ PozycjaWLancuchu] := UpCase( S[ PozycjaWLancuchu ] ); Roboczy[ 0 ] := Chr( Length( S ) ); DuzeLitery := Roboczy; Funkcja umozliwa wczytanine jednego ze znakow wchodzacych w sklad zbioru znakow bedacego parametrem DozwoloneZnaki. Znaki nie wystepujace w zbiorze sa ignorowane. Parametry : zbor znakow zawierajacy znaki ktore uzytkownik moze wprowadzic. Rezultat : jeden ze znakow wystepujacych z zborze dozwolone znaki. Wejscie : parametr DozwoloneZnaki. Wyjscie : rtezultat funkcji. Funkcja ma charakter pomocniczy. Function CzekajNaDozwolonyKlawisz( DozwoloneKlawisze: ZbiorZnakow ): Char; Klawisz : Char; Repeat Klawisz := ReadKey; Until Klawisz In DozwoloneKlawisze; CzekajNaDozwolonyKlawisz := Klawisz; Funkcja otwiera plik zawierajacy dane osobowe. Poszukiwany jest plik o nazwie opisanej zmienna globalna NazwaPliku. Jezeli otwarcie sie powiodlo, tzn. istnieje plik o podanej nazwie, funkcja konczy dzialanie z wartoscia True. W przeciwnym przypadku funkcja probuje utworzyc nowy, pusty plik o takiej nazwie. Jeesi ta operacja zakonczy sie sukcesem rezultatem funkcji jest wartosc True, jezeli plik nie zostanie utworzony funkcja konczy dzialanie z wartoscia False. Parametry : brak. Rezultat : wartosc logiczna informujaca o tym, czy plik zostal otwarty. Wejscie : globalna zmienna plikowa PlikOsob, nieskojarzona z zadnym plikiem, stala NazwaPliku zawierajaca nazwe pliku z danymi. Wyjscie : rezultat funkcji oraz zmienna plikowa PlikOsob skojarzona z otwartym plikiem gdy rezultat funkcji rowny wartosci True. Function PlikOsobOtwarty : Boolean; {$I-} { Wylaczenie kontroli poprawnosci operacji wejscia-wyjscia } Assign( PlikOsob, NazwaPliku ); Reset( PlikOsob ); If IOResult <> 0 Then { Sprawdzenie czy plik otwarty poprawnie }

10 Przetwarzanie plików w języku Pascal 10 { Plik nie istnieje, tworzony jest nowy } Rewrite( PlikOsob ); If IOResult <> 0 Then { Sprawdzenie czy plik zostal utworzony } WriteLn( 'Nie mozna otworzyc nowego pliku bazy danych' ); PlikOsobOtwarty := False; End Else PlikOsobOtwarty := True; End Else PlikOsobOtwarty := True; {$I+} { Wlaczenie kontroli poprawnosci operacji wejscia-wyjscia } Procedura realizuje zestaw przykladowych operacji na pliku danych osobowych. Operacje te obejmuja dopisanie nowego rekordu do pliku, wyswietlenie danych w formie tabeli, wyszukiwanie danych osobowych wedlug nazwiska. Parametry : brak. Wejscie : globalna zmienna plikowa PlikOsob skojarzona z plikiem danych. Wyjscie : Byc moze zmodyfikowany (w przypadku dopisania nowego rekordu) plik dyskowy identyfikowany przez zmienna globalna PlikOsob. Procedure WykonajOperacjeNaPliku; Klawisz : Char; { Zmienna sluzaca do obslugi klawiatury } KoniecProgramu : Boolean; { Zmienna sygnalizujaca zakonczenie programu } Procedura wyswietla na ekranie proste menu, opisujace zestaw operacji jakie moga byc wykonane na pliku danych osobowych. Funkcja lokalna w procedurze WykonajOperacjeNaPliku Procedure WyswietlZestawOperacji; TextColor( LightCyan ); TextBackground( Blue ); ClrScr; WriteLn( '1. Dopisanie nowej osoby' ); WriteLn( '2. Przegladanie spisu osob' ); WriteLn( '3. Wyszukiwanie opisu osoby' ); WriteLn( '4. Zakonczenie' ); Procedura dopisuje nowy rekord do pliku danych, po uprzednim wczytaniu informacji z klawiatury. Wejscie Wyjscie : globalna zmienna plikowa PlikOsob. : zmodyfikowany plik identyfikowany przez zmienna PlikOsob. Funkcja lokalna w procedurze WykonajOperacjeNaPliku

11 Przetwarzanie plików w języku Pascal 11 Procedure DopiszDaneNowejOsoby; Osoba : OpisOsoby; ClrScr; { Wczytanie danych nowej osoby do pol rekordu Osoba } Write( 'Podaj imie : ' ); ReadLn( Osoba.Imie ); Write( 'Podaj nazwisko: ' ); ReadLn( Osoba.Nazwisko ); Write( 'Podaj wiek : ' ); ReadLn( Osoba.Wiek ); {Aby uniknac niejednoznacznosci do pliku zapisujemy napisy z duzych liter} Osoba.Imie := DuzeLitery( Osoba.Imie ); Osoba.Nazwisko := DuzeLitery( Osoba.Nazwisko ); { Zapis rekordu do pliku osob } Seek( PlikOsob, FileSize( PlikOsob ) ); Write( PlikOsob, Osoba ); Procedura realizuje prosty przeglad danych zapisanych w pliku danych. Informacje sa wyswietlane w formie tabeli, wyswietlanie jest zatrzymywane po zapelnieniu ekranu. Parametr Filtr steruje wyswietlaniem - jezeli parametr ten jest lancuchem pustym (tzn. '') wyswietlane sa wszystkie rekordy, w przeciwnym wypadku wyswietlane sa te rekordy, ktorych pole Nazwisko jest rowne parametrowi Filtr. Parametr jest wykorzystywanie w procedurze realizujaca wyszukiwanie. Parametry : Filtr - steruje wyswietlaniem rekordow jak opisano wyzej. Wejscie : parametr, globalna zmienna plikowa PlikOsob. Wyjscie : informacje wyswietlane na ekranie. Funkcja lokalna w procedurze WykonajOperacjeNaPliku Procedure PrzegladDanychOsobowych( Filtr : String ); Const MaksIloscLinii = 23; {Opisuje maks. ilosc linii informacyjnych na ekranie} Osoba : OpisOsoby; { Roboczcy rekord opisu osoby } LiczbaLinii : Integer; { Licznik Wyswietlonych linii } Procedura wyswietla naglowek tabeli oraz czysci ekran. Funkcja lokalna w procedurze PrzegladDanychOsobowych Procedure WyswietlNaglowek; ClrScr; TextColor( White ); WriteLn( 'Imie': 25, 'Nazwisko' : 25, 'Wiek' : 10 ); TextColor( LightCyan ); {PrzegladDanychOsobowych } { Wszystkie dane zapisane w pliku skladaja sie z duzych liter } Filtr := DuzeLitery( Filtr ); WyswietlNaglowek; { Ustawienie wskaznika pozycji na poczatku pliku } Seek( PlikOsob, 0 ); LiczbaLinii := 0;

12 Przetwarzanie plików w języku Pascal 12 While Not Eof( PlikOsob ) Do { Odczyt rekordu danych osobowych } Read( PlikOsob, Osoba ); { Wyswietlenie informacji na ekranie } If ( Filtr = '' ) Or ( Osoba.Nazwisko = Filtr ) Then WriteLn( Osoba.Imie : 25, Osoba.Nazwisko : 25, Osoba.Wiek : 10 ); LiczbaLinii := Succ( LiczbaLinii ); { Zatrzymanie wyswietlania po zapelnieniu ekranu } If LiczbaLinii Mod MaksIloscLinii = 0 Then Write( '=>Nacisnij Enter aby kontynuowac przeglad' ); ReadLn; WyswietlNaglowek; LiczbaLinii := 0; If LiczbaLinii < MaksIloscLinii Then Write( '=>Nacisnij Enter aby zakonczyc przeglad' ); ReadLn Procedura realizuje wyszukiwanie dasnych wszystkich osob o nazwisku takim jak podane przez uzytkownika z klawiatury. Wejscie Wyjscie : globalna zmienna plikowa PlikOsob. : zmodyfikowany plik identyfikowany przez zmienna PlikOsob. Funkcja lokalna w procedurze WykonajOperacjeNaPliku Procedure WyszukiwanieOsoby; Nazwisko : String; ClrScr; Write( 'Podaj nazwisko szukanej osoby: ' ); ReadLn( Nazwisko ); PrzegladDanychOsobowych( Nazwisko ); { WykonajOperacjeNaPliku } KoniecProgramu := False; Repeat WyswietlZestawOperacji; Klawisz := CzekajNaDozwolonyKlawisz( [ '1', '2', '3', '4' ] ); Case Klawisz Of '1' : DopiszDaneNowejOsoby; '2' : PrzegladDanychOsobowych( '' ); '3' : WyszukiwanieOsoby; '4' : KoniecProgramu := True; Until KoniecProgramu;

13 Przetwarzanie plików w języku Pascal 13 Procedura ZamknijPlikOsob zamyka plik skojarzony z globalna zmienna plikowa PlikOsob. Parametry : brak. Wejscie : globalna zmienna plikowa PlikOsob, skojarzona plikiem danych osobowych. Wejscie : plik skojarzony z globalna zmienna PlikOsob jest zamkniety. Procedure ZamknijPlikOsob; Close( PlikOsob ); If PlikOsobOtwarty Then WykonajOperacjeNaPliku; ZamknijPlikOsob; End. Program przykładowy numer 2 Opis funkcjonalny programu: Program prezentuje jeden ze sposobów wykorzystania plików tekstowych. Program wyświetla na ekranie zawartość pliku tekstowego, którego nazwa podawana jest przez użytkownika w linii poleceń, jest zatem parametrem wywołania programu. Wyświetlanie jest zatrzymywane co 24 linie, kontynuacja następuje po naciśnięciu klawisza Enter. Program WyswietlPlikTekstowy; PlikTekstowy : Text; { Zmienna plikowa dla pliku do wyswietlenia } Funkcja PlikOtwarty dokonuje otwarcia pliku, ktorego nazwa zostala podana w linii polecen (jako parametr wywolania programu). W przypadku gdy nie podano zadnego parametru, lub podano wiecej niz jeden funkcja wyswietla komentarz opisujacy sposob wywolania programu i konczy swe dzialnie z wartoscia False. Jezeli podano jeden parametr, funkcja probuje otworzyc plik o nazwie zadanej parametrem. Jezeli otwarcie sie powiodlo, tzn. istnieje plik o podanej nazwie, funkcja konczy dzialanie z wartoscia True. W przeciwnym przypadku funkcja wyswietla komunuikat o bledzie i konczy dzialanie z z wartsca False. Parametry : brak. Rezultat : wartosc logiczna informujaca o tym, czy plik zostal otwarty. Wejscie : globalna zmienna plikowa PlikTekstowy, nieskojarzona z zadnym plikiem. Wyjscie : rezultat funkcji oraz zmienna plikowa PlikTekstowy skojarzona z otwartym plikiem gdy rezultat funkcji rowny wartosci True. Function PlikOtwarty : Boolean; If ParamCount <> 1 Then { Czy w linii polecen jeden parametr? }

14 Przetwarzanie plików w języku Pascal 14 { Niepoprawna ilosc parametrow wywolania programu, funkcja konczy } { dzialnie z wartoscia False } WriteLn; WriteLn( 'Wywolanie programu: wyswietl <nazwa_pliku_tekstowego>' ); PlikOtwarty := False; End Else {Skojarzenie pliku identyfikowanego przez pierwszy parametr wywolania} {programu z globalna zmienna plikowa PlikTekstowy, nastepnie otwarcie} { z domniemaniem, ze plik istnieje. } {$I-} { Wylaczenie kontroli poprawnosci operacji wejscia-wyjscia } Assign( PlikTekstowy, ParamStr( 1 ) ); Reset( PlikTekstowy ); {$I+} { Wlaczenie kontroli poprawnosci operacji wejscia-wyjscia } If IOResult <> 0 Then { Sprawdzenie czy plik otwarty poprawnie } { Blad otwarcia pliku, funkcja konczy dzialanie z wartoscia False } Write( 'Plik ', ParamStr( 1 ), ' nie moze byc otwarty.' ); PlikOtwarty := False; End Else {Poprawne otwarcia pliku, funkcja konczy dzialanie z wartoscia True} PlikOtwarty := True; Procedura WyswietlPlik wyswietla na ekranie zawartosc pliku tekstowego identyfikowanego przez globalna zmienna PlikTekstowy. Wyswietlania jest zatrzymywane co 24 linie, tak aby uzytkownik mogl obejrzec zawartosc ekranu. Przeglad jest kontynuowany po nacisnieciu klawisza Enter. Parametry : brak. Wejscie : globalna zmienna plikowa PlikTekstowy, skojarzona plikiem do wyswietlenia, wskaznik plikowy pokazuje na poczatek pliku. Wejscie : globalna zmienna plikowa PlikTekstowy, skojarzona plikiem do wyswietlenia, wskaznik plikowy umieszczony na koncu pliku. Procedure WyswietlPlik; LiniaTekstu : String; { Lancuch znakow, tu beda czytane linie z pliku } LicznikLinii : Integer; { Licznik linii odczytanych z pliku } WriteLn; LicznikLinii := 0; While Not Eof( PlikTekstowy ) Do ReadLn( PlikTekstowy, LiniaTekstu ); { Odczyt linii z pliku } WriteLn( LiniaTekstu ); { Wyswietlenie linii na ekranie } LicznikLinii := Succ( LicznikLinii ); { Inkrementacji licznika linii } If LicznikLinii Mod 24 = 0 Then { Wyswietlono kolejne 24 linie tekstu, zatrzymanie wyswietlania } Write( '---Nacisnij Enter aby kontynuowac przeglad---' ); ReadLn; LicznikLinii := 0; End

15 Przetwarzanie plików w języku Pascal 15 Procedura ZamknijPlik zamyka plik skojarzony z globalna zmienna plikowa PlikTekstowy. Parametry : brak. Wejscie : globalna zmienna plikowa PlikTekstowy, skojarzona plikiem do wyswietlenia. Wejscie : plik skojarzony z globalna zmienna PlikTekstoey jest zamkniety. Procedure ZamknijPlik; Close( PlikTekstowy ); { Program glowny } If PlikOtwarty Then WyswietlPlik; ZamknijPlik; End. Program przykładowy numer 3 Opis programu: Program prezentuje sposoby wykorzystania plikow amorficznych do realizacji szybkiego, blokowego odczytu i zapisu danych. Program realizuje kopiowanie plikow. Nazwa pliku zrodlowego stanowi pierwszy parametr wywolania programu, drugi parametr reprezentuje nazwe pliku docelowego. Program Kopiuj; Const DlugoscBufora = 1024; { Rozmiar bufora kopiowania } PlikZrodlowy : File; { Plik z ktorego beda pobierane dane } PlikDocelowy : File; { Plik do ktorego beda dane zapisywane } Bufor : Array[ 1.. DlugoscBufora ] Of Byte; { Bufor kopiowania } Funkcja PlikiOtwarte dokonuje otwarcia plikow, ktorych nazwy zostaly podane w linii polecen (jako parametry wywolania programu). W przypadku gdy podano bledna ilosc parametrow funkcja wyswietla komentarz opisujacy sposob wywolania programu i konczy swe dzialnie z wartoscia False. Jezeli podano dwa parametry, funkcja probuje otworzyc pliki. Jezeli otwarcie sie powiodlo,tzn. istnieja pliki o podanych nazwach, funkcja konczy dzialanie z wartoscia True. W przeciwnym przypadku funkcja wyswietla komunuikat o bledzie i konczy dzialanie z wartosca False. Parametry : brak. Rezultat : wartosc logiczna informujaca o tym, czy pliki zostaly otwarte. Wejscie : globalne zmienne plikowe PlikZrodlowy i PlikDocelowy, nieskojarzona z zadnym plikiem. Wyjscie : rezultat funkcji oraz zmienne PlikZrodlowy i PlikDocelowy skojarzona z otwartymi plikiami gdy rezultat funkcji rowny True. Function PlikiOtwarte : Boolean; If ParamCount <> 2 Then { Czy w linii polecen dwa parametry? }

16 Przetwarzanie plików w języku Pascal 16 { Niepoprawna ilosc parametrow wywolania programu, funkcja konczy } { dzialnie z wartoscia False } WriteLn; WriteLn( 'Wywolanie programu:' ); WriteLn( 'kopiuj <nazwa_pliku_zrodlowego> <nazwa_pliku_docelowego>' ); PlikiOtwarte := False; End Else {Skojarzenie pliku identyfikowanego przez pierwszy parametr wywolania} {programu z globalna zmienna plikowa PlikZrodlowy, nastepnie otwarcie} {z istniejacego pliku, rozmiar bloku rowny jednemu bajtowi } {$I-} { Wylaczenie kontroli poprawnosci operacji wejscia-wyjscia } Assign( PlikZrodlowy, ParamStr( 1 ) ); Reset( PlikZrodlowy, 1 ); {$I+} { Wlaczenie kontroli poprawnosci operacji wejscia-wyjscia } If IOResult <> 0 Then { Sprawdzenie czy plik otwarty poprawnie } WriteLn; { Blad otwarcia pliku, funkcja konczy dzialanie z wartoscia False } Write( 'Plik zrodlowy ', ParamStr( 1 ), ' nie moze byc otwarty.' ); PlikiOtwarte := False; End Else {Skojarzenie pliku identyfikowanego przez drugi parametr programu} {z globalna zmienna PlikDocelowy, nastepnie otwarcie nowego pliku} {do zapisu} {$I-} { Wylaczenie kontroli poprawnosci operacji wejscia-wyjscia } Assign( PlikDocelowy, ParamStr( 2 ) ); Rewrite( PlikDocelowy, 1 ); {$I+} { Wlaczenie kontroli poprawnosci operacji wejscia-wyjscia } If IOResult <> 0 Then { Sprawdzenie czy plik otwarty poprawnie } { Blad otwarcia pliku, wyjscie z wartoscia False } Close( PlikZrodlowy ); WriteLn; Write( 'Plik docelowy', ParamStr(2), ' nie moze byc otwarty.'); PlikiOtwarte := False; End Else { Poprawne otwarcia plikow, wyjscie z rezultatem True } PlikiOtwarte := True; End { If IOResult <> 0... } {If ParamCount <> 0... } Procedura KopiujPlik realizuje kopiowanie zawartosci pliku inedntyfikowanego prezez zmienna plikowa PlikZrodlowy do pliku identyfikowanego przez PlikDocelowy. Kopiowanie odbywa sie poprzez bufor kopiowania Bufor o rozmiarze DlugoscBufora. Zarowno odczytowi jak i zapisowi podlegaja bloki o rozmiarze jednego bajta w ilosci DlugoscBufora. Parametry : brak. Wejscie : globalne zmienne plikowe PlikZrodlowy i PlikDocelowy, skojarzone plikami zadanymi parametrami wywolania, wskazniki plikowe ustawione na poczatkach plikow.

17 Przetwarzanie plików w języku Pascal 17 Wejscie : globalne zmienne plikowe PlikZrodlowy i PlikDocelowy, skojarzone plikami zadanymi parametrami wywolania, wskazniki plikowe ustawione na koncach plikow. Procedure KopiujPlik; BladKopiowania : Boolean; OdczytaneBloki, ZapisaneBloki : Word; WriteLn( 'Trwa kopiowanie ', ParamStr( 1 ), ' do ', ParamStr( 2 ), '...' ); Repeat { Odczyt blokow jednobajtowych w ilosci DlugoscBufora do zmiennej Bufor } { z zapamietaniem ilosci rzeczywiscie przeczytanych blokow w zmiennej } { OdczytaneBloki. } BlockRead( PlikZrodlowy, Bufor, DlugoscBufora, OdczytaneBloki ); { Zapis tylu jednobajtowych blokow ile uprzednio przeczytano z zapamie- } { taniem ilosci rzeczywiscie zapisanych blokow w zmiennej ZapisaneBloki.} BlockWrite( PlikDocelowy, Bufor, OdczytaneBloki, ZapisaneBloki ); { Jezeli ilosc odczytanych blokow rozni sie od ilosci blokow zapisanych } { to w trakcie kopiowania wystapil blad-zmienna BladKopiowania otrzymuje} { wtedy wartosc True, kopiowanie jest przerywane } BladKopiowania := ZapisaneBloki <> OdczytaneBloki; { Kopiowanie konczy sie w momencie gdy procedura BlockRead nie odczyta } { zadnego bloku lub wystapil blad w trakcie kopiowania } Until ( OdczytaneBloki = 0 ) Or BladKopiowania; If BladKopiowania Then WriteLn( 'Blad w czasie kopiowania!' ) Else WriteLn( 'Kopiowanie zakonczone.' ); Procedura ZamknijPliki zamyka pliki skojarzony z globalnymi zmiennymi plikowymi PlikZrodlowy i PlikDocelowy. Parametry : brak. Wejscie : globalne zmienne plikowe PlikDocelowy i PlikZrodlowy skojarzone z plikami uczastniczacymi w kopiowaniu. Wejscie : pliku skojarzone z globalnymi zmiennymi plikowymi PlikDocelowy i PlikZrodlowy sa zamkniete. Procedure ZamknijPliki; Close( PlikZrodlowy ); Close( PlikDocelowy ) { Program glowny } If PlikiOtwarte Then KopiujPlik; ZamknijPliki; End. 7. Zadania

18 Przetwarzanie plików w języku Pascal Napisać program SLOWA otrzymujący jako parametr wywołania nazwę pliku zawierającego dowolny tekst ASCII..Zadaniem programu jest wyświetlenie na ekranie poszczególnych słów zawartych w pliku w kolejnych wierszach ekranu, po jednym słowie w jednej linii. Jako słowo należy traktować każdy ciąg liter, cyfr rozpoczynający się od litery. 2. Napisać program OBLICZ otrzymujący jako parametr wywołania nazwę pliku zawierającego liczby Integer (File of Integer). Zadaniem programu jest realizacja następujących operacji: wyznaczenie wartości minimalnej, wyznaczenie wartości maksymalnej, wyznaczenie wartości średniej. Wszystkie wyniki mają zostać wyświetlone na ekranie. 3. Napisać program STAT otrzymujący jako parametr wywołania nazwę pliku zawierającego dowolny tekst ASCII. Zadaniem programu jest wyświetlenie na ekranie statystyki pliku obejmującej informację o:ilości wszystkich znaków w pliku, ilości dużych i małych liter, ilości cyfr. 4. Napisać program HISTO otrzymujący jako parametr wywołania nazwę pliku zawierającego dowolny tekst ASCII. Zadaniem programu jest wyświetlenie na ekranie histogramu częstości występowania znaków w zadanym pliku. Histogram ma być wyświetlony w orientacji pionowej. 5. Napisać program FILTR otrzymujący jako parametr wywołania nazwę pliku zawierającego dowolny tekst ASCII. Zadaniem programu jest wyświetlenie na ekranie tych linii tekstu, które zawierają łańcuch znaków podany jako drugi parametr wywołania programu. 6. Napisać program NAGLOWKI otrzymujący jako parametr wywołania nazwę pliku zawierającego dowolny tekst źródłowy programu w języku Pascal. Zadaniem programu jest wyświetlenie na ekranie tylko tych linii tekstu źródłowego, które zawierają nagłówek procedury lub funkcji. 7. Napisać program KOMENT otrzymujący jako parametr wywołania nazwę pliku zawierającego dowolny tekst źródłowy programu w języku Pascal. Zadaniem programu jest wyświetlenie na ekranie współczynnika skomentowania programu, liczonego jako wyrażony w procentach stosunek ilości znaków zawartych w komentarzach do ogólnej ilości znaków w pliku. 8. Napisać program KLEJ realizujący łączenie plików. Pierwszy parametr wywołania programu zawiera nazwę pliku, w którym ma być zapisana połączona zawartość plików, których nazwy stanowią kolejne parametry wywołania programu (począwszy od parametru drugiego). 9. Napisać program SZYFRUJ realizujący szyfrowanie i deszyfrowanie zawartości pliku o nazwie podanej w drugim parametrze wywołania programu. Pierwszym parametrem ma być znak S lub D strujący wykonaniem programu: S oznacza wykonanie szyfrowania, D oznacza deszyfrowanie. Należy zastosować najprostszy podstawieniowy szyfr Cezara. 10. Napisać program WYSWIETL realizujący wyświetlanie na ekranie lub wyprowadzający na drukarkę zawartość pliku ASCII, o nazwie podanej w drugim parametrze wywołania programu. Pierwszy parametr to odpowiednio E jeżeli zawartość pliku ma być wyświetlana na ekranie lub D jeżeli ma być wyprowadzona na drukarkę. 11. Napisać program EWTOW realizujący funkcje ewidencjonowania towarów. Towar ma być opisany jego nazwą, ilością opakowań, ceną zakupu. Program ma umożliwiać dopisanie towaru do ewidencji, skasowanie, aktualizację ilości i ceny, wyszukiwanie według nazwy towaru, wyszukiwanie towaru o minimalnej i maksymalnej ilości, informowanie o aktualnej sumarycznej wartości towaru w danym asortymencie oraz o globalnej wartości wszystkich towarów w magazynie. 12. Napisać program EWCD realizujący funkcje ewidencjonowania zbiory płyt kompaktowych. Pojedyncza płyta ma byc opisana nazwą wykonawcy, nazwą płyty, czasem trwania, statusem informującym czy jest wypożyczona, jeżeli tak to powinno być wiadomo komu (imię, nazwisko). Program ma umożliwiać dopisanie płyty do kolekcji, skasowanie, aktualizację błędnie wprowadzonego opisu płyty, rejestrowanie zjawiska wypożyczenia płyty (kiedy, komu), wyszykiwanie płyty według nazwy, nazwy wykonawcy, wyszukiwanie płyt wypożyczonych.

19 Przetwarzanie plików w języku Pascal 19 Bibliografia 1. Niklaus Wirth: Wstęp do programowania systematycznego, Wydawnictwo Naukow-Techniczne, Warszawa Niklaus Wirth: ALGORYTMY + STRUKTURY DANYCH = PROGRAMY, Wydawnictwo Naukow-Techniczne, Warszawa Michał Iglewski, Jan Madey, Stanisław Matwin: Pascal, Wydawnictwo Naukowo-Techniczne Borland International, Inc:Turbo Pascal, ver. 6.0, Library Reference, Borland International, Inc:Turbo Pascal, ver. 6.0, Programmer s Guide, 1983.

OPERACJE NA PLIKACH. Podstawowe pojęcia:

OPERACJE NA PLIKACH. Podstawowe pojęcia: OPERACJE NA PLIKACH Podstawowe pojęcia: plik fizyczny, zbiór informacji w pamięci zewnętrznej wykorzystywany do trwałego przechowywania danych lub jako przedłużenie pamięci operacyjnej w przypadku przetwarzania

Bardziej szczegółowo

Wykład PASCAL - Pliki tekstowe

Wykład PASCAL - Pliki tekstowe Podstawy programowania Wykład PASCAL - Pliki tekstowe 1 dr Artur Bartoszewski - Podstawy prograowania, sem. 1- WYKŁAD Rodzaje plików Dane przechowywane w pliku mogą mieć reprezentację binarną (taką samą,

Bardziej szczegółowo

Pliki. Operacje na plikach w Pascalu

Pliki. Operacje na plikach w Pascalu Pliki. Operacje na plikach w Pascalu ścieżka zapisu, pliki elementowe, tekstowe, operacja plikowa, etapy, assign, zmienna plikowa, skojarzenie, tryby otwarcia, reset, rewrite, append, read, write, buforowanie

Bardziej szczegółowo

Język programowania PASCAL

Język programowania PASCAL Język programowania PASCAL (wersja podstawowa - standard) Literatura: dowolny podręcznik do języka PASCAL (na laboratoriach Borland) Iglewski, Madey, Matwin PASCAL STANDARD, PASCAL 360 Marciniak TURBO

Bardziej szczegółowo

Wszystkie zmienne typu plikowego, z wyjątkiem Output i Input muszą być zadeklarowane w sekcji deklaracji programu, który z nich korzysta.

Wszystkie zmienne typu plikowego, z wyjątkiem Output i Input muszą być zadeklarowane w sekcji deklaracji programu, który z nich korzysta. Programowanie strukturalne - pliki 1 LEKCJA 29. TYPY STRUKTURALNE - PLIKI Wprowadzenie Zmienne proste, tablice i rekordy są wykorzystywane w programie do przechowywania danych podczas wykonywania programu;

Bardziej szczegółowo

Podstawy programowania

Podstawy programowania Podstawy programowania Część ósma Tablice znaków i przetwarzanie napisów Autor Roman Simiński Kontakt siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura

Bardziej szczegółowo

Pliki. Ze względu na typ zawartych w nich danych rozróżnia się trzy podstawowe rodzaje plików:

Pliki. Ze względu na typ zawartych w nich danych rozróżnia się trzy podstawowe rodzaje plików: Pliki Dotychczas operowaliśmy danymi, które zapamiętywane były w pamięci operacyjnej komputera (RAM). Program Turbo Pascal umożliwia zapisywanie i odczyt danych, co zapewnia możliwość wielokrotnego ich

Bardziej szczegółowo

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu Programowanie strukturalne Opis ogólny programu w Turbo Pascalu STRUKTURA PROGRAMU W TURBO PASCALU Program nazwa; } nagłówek programu uses nazwy modułów; } blok deklaracji modułów const } blok deklaracji

Bardziej szczegółowo

PASCAL Kompendium. Środowisko TURBO PASCAL Skróty klawiaturowe. Edycja kodu Pomoc spis treści. Skopiowanie zaznaczonego bloku do schowka

PASCAL Kompendium. Środowisko TURBO PASCAL Skróty klawiaturowe. Edycja kodu Pomoc spis treści. Skopiowanie zaznaczonego bloku do schowka PASCAL Kompendium Środowisko TURBO PASCAL Skróty klawiaturowe Edycja kodu F1 Pomoc spis treści CTRL + F1 Pomoc kontekstowa SHIFT + strzałki Zaznaczanie bloku CTRL + INSERT Skopiowanie zaznaczonego bloku

Bardziej szczegółowo

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych: Zmienna i typ Pascal typy danych Zmienna to obiekt, który może przybierać różne wartości. Typ zmiennej to zakres wartości, które może przybierać zmienna. Deklarujemy je w nagłówku poprzedzając słowem kluczowym

Bardziej szczegółowo

PLIKI TEKSTOWE F C E 30 0D 0A 42 6F 72 6C 61 6E 64 1A T U R B O _ P A S C A L _ 7. 0

PLIKI TEKSTOWE F C E 30 0D 0A 42 6F 72 6C 61 6E 64 1A T U R B O _ P A S C A L _ 7. 0 PLIKI TEKSTOWE plik_liczb : file of integer; plik_znakow : file of char; plik_linii : text; deklaracja zmiennej plikowej Przykład sekwencji bajtów: 54 55 52 42 4F 20 50 41 53 43 41 4C 20 37 2E 30 0D 0A

Bardziej szczegółowo

Ćwiczenie 2 Wczytywanie i zapisywanie do plików tekstowych

Ćwiczenie 2 Wczytywanie i zapisywanie do plików tekstowych Ćwiczenie 2 Wczytywanie i zapisywanie do plików tekstowych 1. Wczytywanie z plików tekstowych. Wczytywanie z pliku tekstowego wymaga: a) skojarzenia zmiennej plikowej z plikiem procedura assignfile b)

Bardziej szczegółowo

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania Wykład: 9 Łańcuchy znaków 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Rodzaje plików Dane przechowywane w pliku mogą mieć reprezentację binarną (taką samą, jak

Bardziej szczegółowo

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

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. 1. Instrukcję case t of... w przedstawionym fragmencie programu moŝna zastąpić: var t : integer; write( Podaj

Bardziej szczegółowo

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0 Uwaga: DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0 1. Zostały pominięte diagramy: CYFRA, CYFRA SZESNASTKOWA, ZNAK i LITERA. Nie została uwzględniona możliwość posługiwania się komentarzami. 2. Brakuje

Bardziej szczegółowo

Programowanie w Turbo Pascal

Programowanie w Turbo Pascal Skróty: ALT + F9 Kompilacja CTRL + F9 Uruchomienie Struktura programu: Programowanie w Turbo Pascal Program nazwa; - nagłówek programu - blok deklaracji (tu znajduje się VAR lub CONST) - blok instrukcji

Bardziej szczegółowo

Pascal. 1. Pliki tekstowe. Przykład 1.1. Zapis do pliku tekstowego

Pascal. 1. Pliki tekstowe. Przykład 1.1. Zapis do pliku tekstowego Pascal 1. Pliki tekstowe Przykład 1.1. Zapis do pliku tekstowego {deklaracja zmiennej tekstowej 'plik'} plik: text; {skojarzenie zmiennej plikowej 'plik' z plikiem na dysku (podajemy lokalizacje)} {tworzenie

Bardziej szczegółowo

Podstawy programowania

Podstawy programowania Podstawy programowania Część dziewiąta Procedury i funkcje Autor Roman Simiński Kontakt siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów

Bardziej szczegółowo

Informatyka 1. Przetwarzanie tekstów

Informatyka 1. Przetwarzanie tekstów Informatyka 1 Wykład IX Przetwarzanie tekstów Robert Muszyński ZPCiR ICT PWr Zagadnienia: reprezentacja napisów znakowych, zmienne napisowe w Sun Pascalu, zgodność typów, operowanie na napisach: testowanie

Bardziej szczegółowo

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński Języki programowania Część siódma Przetwarzanie plików amorficznych Konwencja języka C Autorzy Tomasz Xięski Roman Simiński Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie

Bardziej szczegółowo

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

INSTRUKCJA PUSTA. Nie składa się z żadnych znaków i symboli, niczego nie robi. for i := 1 to 10 do {tu nic nie ma}; INSTRUKCJA PUSTA Nie składa się z żadnych znaków i symboli, niczego nie robi Przykłady: for i := 1 to 10 do {tu nic nie ma}; while a>0 do {tu nic nie ma}; if a = 0 then {tu nic nie ma}; INSTRUKCJA CASE

Bardziej szczegółowo

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre) Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie

Bardziej szczegółowo

PLIKI. Składnia deklaracji zmiennej plikowej: file of <typ>

PLIKI. Składnia deklaracji zmiennej plikowej: file of <typ> PLIKI Plik jest struktura składającą się z elementów tego samego typu. Liczba elementów składowych pliku jest zmienna. Nie ma zadanych ograniczeń na liczbę elementów pliku, poza rozmiarami pamięci masowych

Bardziej szczegółowo

Kompendium wiedzy z Pascala

Kompendium wiedzy z Pascala Kompendium wiedzy z Pascala Niektóre rzeczy (np. skróty klawiszowe) odnoszą się do wersji Turbo Pascala 5.5 lub 7.0 (w których my nie pracujemy). Jednak zostawiam te informację poniewaŝ dobrze jest wiedzieć

Bardziej szczegółowo

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

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe Podstawy programowania Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe 1 I. Składnia Składnia programu Program nazwa; Uses biblioteki; Var deklaracje zmiennych;

Bardziej szczegółowo

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Turbo Pascal jest językiem wysokiego poziomu, czyli nie jest rozumiany bezpośrednio dla komputera, ale jednocześnie jest wygodny dla programisty,

Bardziej szczegółowo

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania 1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja nie ma parametru i zwraca wartość na zewnątrz. nie ma parametru i nie zwraca wartości na zewnątrz. ma parametr o nazwie void i zwraca

Bardziej szczegółowo

Programowanie w języku Python. Grażyna Koba

Programowanie w języku Python. Grażyna Koba Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część jedenasta Przetwarzanie plików amorficznych Konwencja języka C Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie

Bardziej szczegółowo

Lekcja 6: Pascal. Procedura i funkcja

Lekcja 6: Pascal. Procedura i funkcja Lekcja 6: Pascal. Procedura i funkcja S. Hoa Nguyen 1 Materiał Książka: Programowanie w języku Pascal. Rozdział 9. Podprogramy Podprogramy - motywacja Skrócenie zapisu (wielokrotne powtórzenia tej samej

Bardziej szczegółowo

Podstawy Programowania C++

Podstawy Programowania C++ Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:

Bardziej szczegółowo

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

WIADOMOŚCI WSTĘPNE WPROWADZENIE DO JĘZYKA TURBO PASCAL. Klawisze skrótów. {to jest właśnie komentarz, moŝna tu umieścić dowolny opis} 1 WIADOMOŚCI WSTĘPNE Programowanie komputerów najogólniej mówiąc polega na zapisaniu pewniej listy poleceń do wykonania przez komputer w pewnym umownym języku Taką listę poleceń nazywamy programem Program

Bardziej szczegółowo

Wprowadzenie Tablica jednowymiarowa Tablice wielowymiarowe Algorytmy Rekordy Pliki Zadania Bibliografia

Wprowadzenie Tablica jednowymiarowa Tablice wielowymiarowe Algorytmy Rekordy Pliki Zadania Bibliografia Program Rozwojowy Potencjału Dydaktycznego Politechniki Świętokrzyskiej w Kielcach: kształcenie na miarę sukcesu. Priorytet IV Szkolnictwo wyższe i nauka. Działanie 4.1 Wzmocnienie i rozwój potencjału

Bardziej szczegółowo

Podstawy programowania

Podstawy programowania Podstawy programowania Część siódma Tablice różne zastosowania Zbiory Autor Roman Simiński Kontakt siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura

Bardziej szczegółowo

Pascal - wprowadzenie

Pascal - wprowadzenie Pascal - wprowadzenie Ogólne informacje o specyfice języka i budowaniu programów Filip Jarmuszczak kl. III c Historia Pascal dawniej jeden z najpopularniejszych języków programowania, uniwersalny, wysokiego

Bardziej szczegółowo

Wykład 4. Tablice. Pliki

Wykład 4. Tablice. Pliki Informatyka I Wykład 4. Tablice. Pliki Dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Tablice Tablica uporządkowany zbiór elementów określonego typu Każdy element tablicy posiada

Bardziej szczegółowo

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe Oprócz zmiennych w programie mamy też stałe, które jak sama nazwa mówi, zachowują swoją wartość przez cały czas działania programu. Można

Bardziej szczegółowo

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe Wykład 15 Wprowadzenie do języka na bazie a Literatura Podobieństwa i różnice Literatura B.W.Kernighan, D.M.Ritchie Język ANSI Kompilatory Elementarne różnice Turbo Delphi FP Kylix GNU (gcc) GNU ++ (g++)

Bardziej szczegółowo

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

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja cz. 1 Podstawy programowania Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja cz. 1 1 I. Składnia Składnia programu Program nazwa; Uses biblioteki; Var deklaracje zmiennych; Begin

Bardziej szczegółowo

Wstęp do programowania. Różne różności

Wstęp do programowania. Różne różności Wstęp do programowania Różne różności Typy danych Typ danych określa dwie rzeczy: Jak wartości danego typu są określane w pamięci Jakie operacje są dozwolone na obiektach danego typu 2 Rodzaje typów Proste

Bardziej szczegółowo

Podstawy programowania skrót z wykładów:

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

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

P R OGRA M OW A N I E KOMPUTERÓW Ćwiczenia laboratoryjne 1. Wstęp Turbo Pascal jest jednym z najpopularniejszych języków programowania wyższego poziomu. Program napisany w tym języku jest ciągiem zdań opisującym określony algorytm. Nazywamy go postacią źródłową

Bardziej szczegółowo

Kilka prostych programów

Kilka prostych programów Ćwiczenie 1 Kilka prostych programów Ćwiczenie to poświęcone jest tworzeniu krótkich programów, pozwalających na zapoznanie się z takimi elementami programowania jak: definiowanie stałych, deklarowanie

Bardziej szczegółowo

Podstawy programowania

Podstawy programowania Podstawy programowania Część trzecia sterujące wykonaniem programu wprowadzenie Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści

Bardziej szczegółowo

2.Sprawdzanie czy podana liczba naturalna jest pierwsza Liczba pierwsza to liczba podzielna tylko przez 1 i przez siebie.

2.Sprawdzanie czy podana liczba naturalna jest pierwsza Liczba pierwsza to liczba podzielna tylko przez 1 i przez siebie. CZEŚĆ A. Przykłady, cd. 1.Obliczanie wartości pierwiastka kwadratowego - algorytm Newtona-Raphsona http://pl.wikipedia.org/wiki/metoda_newtona (pierwszy przykład na stronach Wiki) Dane: Liczba a (a>0)

Bardziej szczegółowo

Instrukcja standardowa Writeln

Instrukcja standardowa Writeln Instrukcja standardowa Writeln Instrukcja Writeln umożliwia wprowadzenie danych na ekran monitora powodując automatycznie późniejsze przejście kursora do nowej linii. Jest to ustawienie domyślne w działaniu

Bardziej szczegółowo

Wprowadzenie komentarzy do programu

Wprowadzenie komentarzy do programu Wprowadzenie komentarzy do programu W programach mogą wystąpić objaśnienia, uwagi zamykane w klamrach { } lub nawiasach z gwiazdką (* *). Komentarze ułatwiają zrozumienie programów. Przyjmijmy, że komentarze

Bardziej szczegółowo

Instrukcje podsumowanie. Proste: - przypisania - wejścia-wyjścia (read, readln, write, writeln) - pusta - po prostu ; (średnik) Strukturalne:

Instrukcje podsumowanie. Proste: - przypisania - wejścia-wyjścia (read, readln, write, writeln) - pusta - po prostu ; (średnik) Strukturalne: Instrukcje podsumowanie Proste: - przypisania - wejścia-wyjścia (read, readln, write, writeln) - pusta - po prostu ; (średnik) Strukturalne: - grupująca end - warunkowa if

Bardziej szczegółowo

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach Laboratorium Systemów Operacyjnych Ćwiczenie 4. Operacje na plikach Wykonanie operacji wymaga wskazania pliku, na którym operacja ma zostać wykonana. Plik w systemie LINUX identyfikowany jest przez nazwę,

Bardziej szczegółowo

Delphi Laboratorium 3

Delphi Laboratorium 3 Delphi Laboratorium 3 1. Procedury i funkcje Funkcja jest to wydzielony blok kodu, który wykonuje określoną czynność i zwraca wynik. Procedura jest to wydzielony blok kodu, który wykonuje określoną czynność,

Bardziej szczegółowo

Zasady Programowania Strukturalnego

Zasady Programowania Strukturalnego Zasady Programowania Strukturalnego Rafał Jakubowski Zespół Teoretycznej Biofizyki Molekularnej rjakubowski@fizyka.umk.pl www.fizyka.umk.pl/~rjakubowski Tel: 33 46 Konsultacje w sem. letnim 11/12: środa,

Bardziej szczegółowo

Podstawy programowania

Podstawy programowania Podstawy programowania Część druga Pierwsze programy Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów

Bardziej szczegółowo

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie Część X C++ Typ znakowy służy do reprezentacji pojedynczych znaków ASCII, czyli liter, cyfr, znaków przestankowych i innych specjalnych znaków widocznych na naszej klawiaturze (oraz wielu innych, których

Bardziej szczegółowo

Biblioteka standardowa - operacje wejścia/wyjścia

Biblioteka standardowa - operacje wejścia/wyjścia Biblioteka standardowa - operacje wejścia/wyjścia Przemysław Gawroński D-10, p. 234 Wykład 6 15 stycznia 2019 (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 1 / 14 Outline

Bardziej szczegółowo

Ćwiczenie: JavaScript Cookies (3x45 minut)

Ćwiczenie: JavaScript Cookies (3x45 minut) Ćwiczenie: JavaScript Cookies (3x45 minut) Cookies niewielkie porcje danych tekstowych, które mogą być przesyłane między serwerem a przeglądarką. Przeglądarka przechowuje te dane przez określony czas.

Bardziej szczegółowo

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku System plików 1. Pojęcie pliku 2. Typy i struktury plików 3. etody dostępu do plików 4. Katalogi 5. Budowa systemu plików Pojęcie pliku (ang( ang. file)! Plik jest abstrakcyjnym obrazem informacji gromadzonej

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część trzynasta Tablice struktur, pliki struktur Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści

Bardziej szczegółowo

Programowanie w językach

Programowanie w językach Programowanie w językach wysokiego poziomu Obsługa plików za pomocą strumieni Elektronika i Telekomunikacja, semestr III rok akademicki 2013/2014 dr inż. Paweł Myszkowski Plan zajęć a) otwieranie i zamykanie

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. ABAP/4 Instrukcja IF Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. [ELSEIF warunek. ] [ELSE. ] ENDIF. gdzie: warunek dowolne wyrażenie logiczne o wartości

Bardziej szczegółowo

Wstęp do programowania. Procedury i funkcje. Piotr Chrząstowski-Wachtel

Wstęp do programowania. Procedury i funkcje. Piotr Chrząstowski-Wachtel Wstęp do programowania Procedury i funkcje Piotr Chrząstowski-Wachtel Po co procedury i funkcje? Gdyby jakis tyran zabronił korzystać z procedur lub funkcji, to informatyka by upadła! Procedury i funkcje

Bardziej szczegółowo

Polecenia wewnętrzne:

Polecenia wewnętrzne: Polecenia wewnętrzne DOS-u znajdują się w pamięci operacyjnej komputera, realizowane przez procesor poleceń COMMANDCOM Polecenia zewnętrzne DOS-u są to pliki ściągane do pamięci operacyjnej każdorazowo

Bardziej szczegółowo

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Laboratorium Podstaw Informatyki Strona 1 Laboratorium Podstaw Informatyki Kierunek Elektrotechnika Ćwiczenie 4 Obsługa plików Kraków 2010 Laboratorium Podstaw Informatyki Strona 2 Obsługa plików Zanim

Bardziej szczegółowo

Podstawy programowania

Podstawy programowania Podstawy programowania Część czwarta Wariacje na temat instrukcji iteracyjnych Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu,

Bardziej szczegółowo

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Informatyka I Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 1 Plan wykładu

Bardziej szczegółowo

Podstawy programowania

Podstawy programowania Podstawy programowania Część piąta Proste typy danych w języku Pascal Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura

Bardziej szczegółowo

Języki programowania obiektowego Nieobiektowe elementy języka C++

Języki programowania obiektowego Nieobiektowe elementy języka C++ Języki programowania obiektowego Nieobiektowe elementy języka C++ Roman Simiński roman.siminski@us.edu.pl www.programowanie.siminskionline.pl Przetwarzanie tablic znaków Łańcuchy znakowe jako tablice znaków

Bardziej szczegółowo

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

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja

Bardziej szczegółowo

Instrukcja użytkownika

Instrukcja użytkownika SoftwareStudio Studio 60-349 Poznań, ul. Ostroroga 5 Tel. 061 66 90 641 061 66 90 642 061 66 90 643 061 66 90 644 fax 061 86 71 151 mail: poznan@softwarestudio.com.pl Herkules WMS.net Instrukcja użytkownika

Bardziej szczegółowo

Zasady programowania Dokumentacja

Zasady programowania Dokumentacja Marcin Kędzierski gr. 14 Zasady programowania Dokumentacja Wstęp 1) Temat: Przeszukiwanie pliku za pomocą drzewa. 2) Założenia projektu: a) Program ma pobierać dane z pliku wskazanego przez użytkownika

Bardziej szczegółowo

typ zakres sposob zapamietania shortint integer bajty (z bitem znaku) longint byte word

typ zakres sposob zapamietania shortint integer bajty (z bitem znaku) longint byte word Pascal - powtórka Alfabet, Nazwy W odróŝnieniu do C w Pascal nie odróŝnia małych i duŝych liter. Zapisy ALA i ala oznaczają tę samą nazwę. Podobnie np. słowo kluczowe for moŝe być zapisane: FOR. W Pascalu

Bardziej szczegółowo

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

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie

Bardziej szczegółowo

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy, Lista 3 Zestaw I Zadanie 1. Zaprojektować i zaimplementować funkcje: utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy, zapisz

Bardziej szczegółowo

Funkcje zawarte w bibliotece < io.h >

Funkcje zawarte w bibliotece < io.h > PLIKOWE OPERACJE WEJŚCIA - WYJŚCIA Język C/C++ nie ma wbudowanych żadnych instrukcji umożliwiających wykonywanie operacji wejścia-wyjścia! Służą do tego funkcje biblioteczne. Funkcje zawarte w bibliotece

Bardziej szczegółowo

Pliki wykład 2. Dorota Pylak

Pliki wykład 2. Dorota Pylak Pliki wykład 2 Dorota Pylak Struktura programu działającego na plikach 1) Dyrektywa preprocesora #include //zapewnia dostęp do strumieni ifstream i ofstream 2) deklaracja zmiennej (strumienia)

Bardziej szczegółowo

Informatyka 1. Wyrażenia i instrukcje cd., ręczna symulacja, operacje wejścia/wyjścia

Informatyka 1. Wyrażenia i instrukcje cd., ręczna symulacja, operacje wejścia/wyjścia Informatyka 1 Wykład IV Wyrażenia i instrukcje cd., ręczna symulacja, operacje wejścia/wyjścia Robert Muszyński ZPCiR IIAiR PWr Zagadnienia: instrukcja warunkowa CASE-OF-END, instrukcja pętli REPEAT-UNTIL,

Bardziej szczegółowo

Podstawy Programowania Podstawowa składnia języka C++

Podstawy Programowania Podstawowa składnia języka C++ Podstawy Programowania Podstawowa składnia języka C++ Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Szablon programu w C++ Najprostszy program w C++ ma postać: #include #include

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania wykład 2 Piotr Cybula Wydział Matematyki i Informatyki UŁ 2012/2013 http://www.math.uni.lodz.pl/~cybula Język programowania Każdy język ma swoją składnię: słowa kluczowe instrukcje

Bardziej szczegółowo

Obsługa klawiszy specjalnych

Obsługa klawiszy specjalnych 13 Obsługa klawiszy specjalnych Oprócz klawiszy alfanumerycznych na klawiaturze peceta jest sporo klawiszy specjalnych. Najlepiej stosować klawisze specjalne zgodnie z ich typowym przeznaczeniem. 13.1.

Bardziej szczegółowo

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo

Podstawy programowania 2. Temat: Wprowadzenie do wskaźników. Przygotował: mgr inż. Tomasz Michno

Podstawy programowania 2. Temat: Wprowadzenie do wskaźników. Przygotował: mgr inż. Tomasz Michno Instrukcja laboratoryjna 1 Podstawy programowania 2 Temat: Wprowadzenie do wskaźników Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny Rysunek przedstawia najważniejszą różnicę pomiędzy zmiennymi,

Bardziej szczegółowo

Programowanie w językach wysokiego poziomu

Programowanie w językach wysokiego poziomu Programowanie w językach wysokiego poziomu zajęcia nr 2 Elektronika i Telekomunikacja, semestr III rok akademicki 2014/2015 Plan dzisiejszych zajęć Pliki tekstowe 1. Operacje na plikach - wprowadzenie

Bardziej szczegółowo

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

Bardziej szczegółowo

INFORMATYKA Studia Niestacjonarne Elektrotechnika

INFORMATYKA Studia Niestacjonarne Elektrotechnika INFORMATYKA Studia Niestacjonarne Elektrotechnika Wydział Elektrotechniki i Informatyki dr inż. Michał Łanczont Wydział Elektrotechniki i Informatyki p. E419 tel. 81-538-42-93 m.lanczont@pollub.pl http://lanczont.pollub.pl

Bardziej szczegółowo

Algorytmy i struktury danych

Algorytmy i struktury danych Algorytmy i struktury danych Zmienne Proste typy danych Strukturalne typy danych Witold Marańda maranda@dmcs.p.lodz.pl 1 Zmienne Liczby (i struktury danych) występują w algorytmach i programach komputerowych

Bardziej szczegółowo

I. Interfejs użytkownika.

I. Interfejs użytkownika. Ćwiczenia z użytkowania systemu MFG/PRO 1 I. Interfejs użytkownika. MFG/PRO w wersji eb2 umożliwia wybór użytkownikowi jednego z trzech dostępnych interfejsów graficznych: a) tekstowego (wybór z menu:

Bardziej szczegółowo

Zadanie 04 Ktory z ponizszych typow danych w jezyku ANSI C jest typem zmiennoprzecinkowym pojedynczej precyzji?

Zadanie 04 Ktory z ponizszych typow danych w jezyku ANSI C jest typem zmiennoprzecinkowym pojedynczej precyzji? Zadanie 01 W przedstawionym ponizej programie w jezyku ANSI C w miejscu wykropkowanym brakuje jednej linii: #include... int main() { printf("tralalalala"); return 0; } A. B. "iostream" C.

Bardziej szczegółowo

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

Bardziej szczegółowo

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w obrębie skryptu. Wyrażenia include() i require() są niemal

Bardziej szczegółowo

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 12 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Obsługa łańcuchów znakowych getchar(), putchar()

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists()

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists() Paweł Gmys PHP strona 1 Lekcja 10 Uprawnienia Aby skrypt PHP mógł odwołać się do pliku, musi mieć odpowiednie uprawnienia. Szczegóły są zależne od serwera. Najczęściej chyba skrypt ma uprawnienia takie,

Bardziej szczegółowo

Krótki kurs obsługi środowiska programistycznego Turbo Pascal z 12 Opracował Jan T. Biernat. Wstęp

Krótki kurs obsługi środowiska programistycznego Turbo Pascal z 12 Opracował Jan T. Biernat. Wstęp Krótki kurs obsługi środowiska programistycznego Turbo Pascal 7.0 1 z 12 Wstęp Środowisko programistyczne Turbo Pascal, to połączenie kilku programów w jeden program. Środowisko to zawiera m.in. kompilator,

Bardziej szczegółowo

Wykład IV PASCAL - łańcuch znaków, - procedury i funkcje, - sortowanie bąbelkowe

Wykład IV PASCAL - łańcuch znaków, - procedury i funkcje, - sortowanie bąbelkowe Podstawy programowania Wykład IV PASCAL - łańcuch znaków, - procedury i funkcje, - sortowanie bąbelkowe 1 Podstawy programowania Część I Łańcuchy znaków 2 I. Zmienne łańcuchowe Klasyfikacja zmiennych statycznych

Bardziej szczegółowo

Bloki anonimowe w PL/SQL

Bloki anonimowe w PL/SQL Język PL/SQL PL/SQL to specjalny język proceduralny stosowany w bazach danych Oracle. Język ten stanowi rozszerzenie SQL o szereg instrukcji, znanych w proceduralnych językach programowania. Umożliwia

Bardziej szczegółowo

Programowanie strukturalne

Programowanie strukturalne Programowanie strukturalne wykład pliki tekstowe Agata Półrola Wydział Matematyki UŁ sem. letni 2011/2012 http://www.math.uni.lodz.pl/~polrola Pliki wewnętrzne i zewnętrzne Dotychczas przy pobieraniu danych

Bardziej szczegółowo

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ; Ogólna postać definicji tablicy: TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ; np. int tablica [ 10 ]; // 10-cio elementowa tablica liczb całkowitych char tekst

Bardziej szczegółowo

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

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++ Programowanie Wstęp p do programowania Klasa 3 Lekcja 9 PASCAL & C++ Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany w postaci programu

Bardziej szczegółowo

Funkcje zawarte w bibliotece < io.h >

Funkcje zawarte w bibliotece < io.h > PLIKOWE OPERACJE WEJŚCIA - WYJŚCIA Język C/C++ nie ma wbudowanych żadnych instrukcji umożliwiających wykonywanie operacji wejścia-wyjścia! Służą do tego funkcje biblioteczne. Funkcje zawarte w bibliotece

Bardziej szczegółowo