Turbo Pascal 7.0 - Moduł System
Zmienne |
Stałe |
Funkcje matematyczne |
Funkcje i procedury przydziału dynamicznego |
Procedury kontrolne |
Funkcje i procedury wejścia-wyjścia |
Funkcje i procedury porządkowe |
Funkcje wskaźnikowe i adresów |
Funkcje i procedury łańcuchowe |
Funkcje i procedury plików tekstowych |
Procedury plików blokowych |
Funkcje konwersji |
Pozostałe funkcje i procedury |
Niewiele osób w ogóle wie, że używa tego modułu - jest to moduł dołączany automatycznie podczas kompilacji zawiera funkcje wyświetlające, wczytujące dane oraz podstawowe funkcje matematyczne. Zmienne
Stałe
Funkcje matematyczne Abs(X): (typ_parametru); X - liczba całkowta lub rzeczywistaZwraca wartość bezwzględną (moduł) z podanej liczby. ArcTan(X: Real): Real; X - liczba rzeczywistaZwraca arcustangens podanej liczby. Cos(X: Real): Real; X - wartość kąta podana w radianachZwraca cosinus podanego kąta. Exp(X: Real): Real; X - liczba rzeczywistaZwraca eksponantę (ex) podanej liczby. Frac(X: Real): Real; X - liczba rzeczywistaZwraca część ułamkową podanej liczby z uwzględnieniem znaku liczby. Int(X: Real): Real; X - liczba rzeczywistaZwraca część całkowitą podanej liczby z uwzględnieniem jej znaku, ale bez zaokrągleń. Ln(X: Real): Real; X - liczba rzeczywistaZwraca logarytm naturalny podanej liczby. Pi: Real; Zwraca liczbę Π = 3.1415926535897932385.
Sin(X: Real): Real; X - wartość kąta podana w radianachZwraca sinus podanego kąta. Sqr(X): (typ_parametru); X - liczba całkowita lub rzeczywistaZwraca kwadrat podanej liczby o typie zgodnym z typem podanego argumentu. Sqrt(X:Real): Real; X - liczba rzeczywistaZwraca pierwiastek 2 stopnia (kwadratowy) podanej liczby. Funkcje i procedury porządkowe Dec(var X[ ; N: Longint]); X - zmienna typu porządkowego lub PChar, jeżeli uzywasz trybu rozszerzonego N - wyrażenie typu całkowitegoDekrementacja zmiennej: wartość X jest zmniejszana o 1 lub o N, jeżeli zostało ono podane. Inc(var X[ ; N: Longint]); X - zmienna typu porządkowego lub PChar, jeżeli uzywasz trybu rozszerzonego N - wyrażenie typu całkowitegoInkrementacja zmiennej: wartość X jest zwiększana o 1 lub o N, jeżeli zostało ono podane. Odd(X: Longint): Boolean; X - zmienna typu całkowitegoZwraca True X, jeżeli parametr jest liczbą nieparzystą. Pred(X): {typ_parametru}; X - zmienna typu porządkowegoZwraca poprzednik zmiennej X. Succ(X): {typ_parametru}; X - zmienna typu porządkowegoZwraca następnik zmiennej X. Funkcje i procedury wejścia-wyjścia Assign(var f; Nazwa_pliku: String);Przypisuje nazwę pliku dyskowego do zmiennej plikowej F. Wszystkie operacje wykonywane na zmiennej F będą działały na pliku zewnętrznym. Po wywołaniu Assign związek między F a zewnętrznym plikiem istnieje do czasu następnego wywołania Assign dla tej zmiennej plikowej F. Jeśli Nazwa_pliku ma formę np. a:\nazwa.rozszerzenie, to nazwa może mieć długość najwyżej 8 znaków, a rozszerzenie 3 znaki. W przypadku nie podania ścieżki dostępu zostanie przyjęty dysk i katalog bieżący. Assigned(var P): Boolean; P - zmienna wskaźnikowa lub proceduralna.Określa czy wskaźnik lub zmienna proceduralna jest nil. Jest równoważne wyrażeniu P <> nil dla zmiennej wskaźnikowej i @P <> nil dla zmiennej proceduralnej. ChDir(S: String); S - nazwa nowego katalogu bieżącegoZmienia bieżący katalog. Jeżeli ścieżka zawiera również literę dysku, to zmieniany jest również dysk bieżący. Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie. Close(var F); F - zmienna plikowa dowolnego typu plikowegoZamyk plik otwarty wcześnie przez Reset lub Rewrite. Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie. Eof(var F): Boolean; { Eof (var F: Text): Boolean; {Zwraca status końca pliku (podaje czy osiągnięto koniec pliku), tzn. Eof(F) = TRUE jeżeli osiągnięto koniec pliku (wskaźnik pliku znajduje się na końcu pliku, za ostatnim składnikiem). Eof(F) = TRUE również wtedy, gdy plik nie zawiera żadnych elementów, w przeciwnym przypadku Eof(F) = FALSE. Erase(var F); F - zmienna plikowaKasuje plik skojarzony poleceniem Assign ze zmienną F. Plik musi być zamknięty. Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie. FilePos(var F): Longint; F - zmienna plikowaJeżeli wskaźnik pliku znjduje się na początku, to FilePos zwraca 0. Jeżeli wskaźnik znajduje się na końcu pliku, to FilePos = FileSize. Nie może być używane dla plików tekstowych. Plik musi być otwarty. Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie. FileSize(var F): Longint; F - zmienna plikowaZwraca aktualną ilość elementów w pliku. Nie może być używane dla plików tekstowych. Plik musi być otwarty. Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie. GetDir(D: Byte; var S: String); D - dysk: 0 = bieżący, 1 = A, 2 = B, 3 = C,...Zwraca bieżący katalog podanego dysku. Jeżeli podanego dysku nie ma, to S zwróci X:\. IOResult: Integer; Zwraca status ostatniej operacji wejścia-wyjścia: 0 w przypadku powodzenia, a w przeciwnym razie - numer błędu.
MkDir(S: String);Zakłada nowy katalog. Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie. Rename(var F; NowaNazwa: String);Zmienia nazwę pliku. Plik musi być zamknięty. Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie. Reset(var F [: File; Recsize: Word ] );Otwiera istniejący plik. F jest zmienną dowolnego typu plikowego skojarzoną z plikiem przez Assign. Opcjonalny parametr RecSize podaje wielkość rekodu (domyślnie 128 bajtów) i może być podany tylko dla plików bez zdefiniowanego typu. Pliki tekstowe otwierane są w trybie tylko do odczytu. Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie. Rewrite(var F: File [; Recsize: Word ] );Tworzy i otwiera nowy plik. F jest zmienną dowolnego typu plikowego skojarzoną z plikiem przez Assign. Opcjonalny parametr RecSize podaje wielkość rekodu (domyślnie 128 bajtów) i może być podany tylko dla plików bez zdefiniowanego typu. Pliki tekstowe otwierane są w trybie tylko do zapisu. Jeżeli plik istnieje, to jest kasowany i zakładany od nowa. Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie. RmDir(S: String);Kauje pusty katalog. Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie. Seek(var F; N: Longint); F - zmienna plikowa (nie może być plikiem tekstowym)Przesuwa wskaźnik pliku do podanego elementu. Pierwszy element pliku ma numer 0. Aby rozpocząć dopisywanie na końcu pliku należy użyć: Seek(F, FileSize(F)). Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie. Truncate(var F);Usuwa wszystkie elementy pliku poczynając od bieżącej pozycji, a bieżąca pozycja staje się końcem pliku (Eof). Plik musi być otwarty. Procedury nie można używać dla plików tekstowych. Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie. Funkcje i procedury łańcuchowe Concat(s1 [, s2,..., sn]: String): String;Łączy sekwencję łańcuchów znakowych w jeden łańcuch. Jeżeli długość wyniku przekracza 255 znaków, to jest obcinana do tej długości. Funkcja może być zastąpiona operatorem plus (+). Copy(S: String; indeks: Integer; ile: Integer): String;Zwraca fragment łańcucha S: ile znaków poczynając od znaku indeks (znaki w łańcuchu numerowane są od 1). Jeżeli indeks jest wiekszy od ilości znaków w łańcuchu, to funkcja zwraca pusty łańcuch znaków. Delete(var S: String; indeka: Integer; ile:Integer);Usuwa z łańcucha S ile znaków poczynając od pozycji indeks (znaki w łańcuchu numerowane są od 1). Jeżeli indeks jest wiekszy od ilości znaków w łańcuchu, to żaden znak nie jest usuwany. Insert(wstaw: String; var S: String; indeks: Integer);Wstawia do łańcucha S ciąg znaków wstaw poczynając od pozycji indeks (znaki w łańcuchu numerowane są od 1). Pozostałe znaki łańcucha sa przesuwane na dalsze pozycje. Jeżeli długość wyniku przekracza 255 znaków, to jest obcinana do tej długości. Length(S: String): Integer;Zwraca aktualną długość łańcucha w bajtach. Pos(szukaj: String; S: String): Byte;Wyszukuje pierwsze wystąpienie szukaj w łańcuchy S. Zwraca numer znaku w łańcuchu S, od którego rozpoczyna się szukaj. Jeżeli łańcuch S nie zawiera szukaj, to funkcja zwraca 0. Str(X [: zn [: dz ]]; var S:string);Konwertuje liczbę dowolnego typu X na łańcuch znakowy i zapisuje go w zmiennej S. Opcjonalny parametr zn podaje na ilu znakach ma być zapisana liczba (0 - automatycznie dopasowuje ilość znaków do wielkości liczby). Opcjonalny parametr dz podaje ilość miejsc po kropce dziesiętnej (liczba jest zaokrąglana do podanej ilości miejsc). Val(S; var V; var blad: Integer);Konwertuje łańcuch znaków S na liczbę całkowita lub rzeczywistą i zapisuje ją w zmiennej V. Zmienna blad zawiera kod błedu po wykonaniu konwersji (0 oznacza, że konwersja przebiegła pomyślnie). Funkcje konwersji Chr(X: Byte): Char;Zwraca znak o podanym w parametrze kodzie ASCII. Ord(X): Longint; X - wyrażenie typu porządkowegoZwraca wartość dziesiętną odpowiadającą podanemu wyrażeniu. Round(X: Real): Longint;Zaokrągla liczbę rzeczywistą do najbliższej wartości całkowitej. Trunc(X: Real): Longint;Zwraca część całkowtą liczby rzeczywistej bez zaokrąglania. Funkcje i procedury plików tekstowych Append(var f: Text);Umożliwia dopisywanie nowych danych do pliku dyskowego (plik musi istnieć). Jeżeli plik jest otwarty, to zostanie zamknięty i otworzony ponownie. Wskaźnik zostaje ustawiony za ostatnim bajtem w pliku. Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie. Eoln [(var F: Text) ]: Boolean;Zwraca status końca wiersza (end-of-line) dla pliku tekstowego F. Jeżeli wskażnik pliku znajduje się na koncu wiersza lub końcu pliku, to funkcja zwraca wartość True, w przeciwnym razie zwracana jest wartość False. Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie. Flush(var F: Text);Opróżnia bufor pliku tekstowego F otwartego do zapisu za pomocą Rewrite lub Append. Dla plików otwartych do odczytu nie daje żadnego efektu. Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie. Read(F , V1 [, V2,...,Vn ] ); Read( [ var F: Text; ] V1 [, V2,...,Vn ] ); { plik tekstowy } ReadLn( [ var F: Text; ] V1 [, V2,...,Vn ] );Czyta z pliku zewnętrznego związanego ze zmienną plikową F zmienne v1, v2, ..., vn. Po przeczytaniu każdej zmiennej wskaźnik pliku jest przesuwany do następnej składowej pliku. Gdy wskaźnik pliku znajduje się na końcu pliku, tzn. jeśli Eof(F) = TRUE, próba czytania z pliku spowoduje błąd wejścia/wyjścia. jeżeli dla pliku tekstowego ponięto parametr F, to plikiem wejściowym jest konsola (klawiatura). SeekEof [ (var F: Text) ]: Boolean;Zwraca staus końca pliku (end-of-file) tekstowego F. Plik musi być otwarty. SeekEoln [ (var F: Text) ]: Boolean;Zwraca staus końca wiersza (end-of-line) tekstowego F. Plik musi być otwarty. SetTextBuf(var F: Text; var Buf [ ; Size: Word ] );Przypisuje bufor wejścia/wyjścia do pliku tekstowego F. Zwiększając rozmiar bufora można uzyskać szybszy odczyt danych z pliku. Nie wolno używać procedury dla otwartego pliku, ale może być ona wywołana kazdorazowo po Reset, Rewrite lub Append. Write(F, V1 [, V2,...,Vn ] ); Write( [ var F: Text; ] P1 [,P2,...,Pn ] ); { pliki tekstowe } Writeln( [ var F: Text; ] P1 [,P2,...,Pn ] );Zapisuje do pliku zewnętrznego związanego z F zmienne v1, v2, ..., vn (muszą być tego samego typu, co typ podstawowy zmiennej plikowej F). Po zapisie każdej pozycji wskaźnik pliku jest przesuwany do następnej składowej pliku. Jeżeli wskaźnik jest na końcu pliku, czyli Eof(F) = TRUE, to plik jest rozszerzony (nowe informacje są dopisywane na końcu pliku). Plik musi być otwarty do zapisu. Dla plików tekstowych P1,P2, ..., Pn są zapisywanymi do pliku wyrażeniami, z których każde może może zawierać inforamcje o ilości wyświetlanych znaków i miejsc po kropce dziesiętnej. Jeżeli ponięto parametr F, to plikiem wyjściowym jest konsola (monitor). Procedury plików blokowych BlockRead(var F: File; var Buf; Count: Word [; var Result: Word]); F - zmienna pliku niezdefiniowanego Buf - dowolna zmienna Count - wyrażenie typu Word Result - zmienna typu WordWczytuje z pliku F do zmiennej Buf Count rekordów. Result zwraca ilość rzeczywiście wczytanych rekordów. Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie. BlockWrite(var f: File; var Buf; Count: Word [; var Result: Word]);Zapisuje do pliku F ze zmiennej Buf Count rekordów. Result zwraca ilość rzeczywiście zapisanych rekordów. Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie. Procedury kontrolne Exit;Przerywa wykonywanie aktualnego bloku kodu (pętli, procedury, funkcji). Jeżeli bieżącym blokiem kodu jest program, to Exit kończy pracę programu. Halt [ ( kod_powrotu: Word ) ];Przerywa wykonanie programu i powraca na poziom systemu operacyjnego. Opcjonalny parametr ustawia wartość zmiennej ERRORLEVEL systemu, która może być sprawdzana w zadaniu wsadowym DOS. RunError [ ( Errorcode: Byte ) ];Przerywa wykonywanie programu generując błąd wukonani (run-time error) o podanym numerze. Funkcje i procedury przydziału dynamicznego Dispose(var P: Pointer);Niszczy zmienną dynamiczną P. P musi być zainicjowane i różne od nil. Wartość P po wykonaniu Dispose nie jest określona przez opis języka (czyli z punktu widzenia programisty jest zmienną niezainicjowaną). FreeMem(var P: Pointer; Size: Word);Zwalnia pamięć uprzednio przydzieloną zmiennej wskaźnikowej P procedurą GetMem. Wymagane jest, aby rozmiar Size miał taką samą wartość jak podczas tworzenia zmiennej. GetMem(var P: Pointer; Size: Word);Tworzy zmienną dynamiczną o nazwie P i rozmiarze Size podanym w bajtach. Gdy wystąpi błąd i pamięć nie zostanie przydzielona, zmienna P przyjmuje wartość nil. Zmienna P przechowuje adres w pamięci wartości, na którą wskazuje, a nie samą wartość. Aby uzyskać dostęp do wartości należy po nazwie zmiennej dodać znak: ^ czyli: P^. New(var P: Pointer);Przydziela fragment pamięci mieszczący obiekt typu bazowego i przypisuje jego adres na P. MaxAvail: Longint; Podaje w bajtach rozmiar największego wolnego bloku w segmencie przeznaczonym na zmienne dynamiczne.
Minimalny i maksymalny rozmiar stosu może być określony za pomocą dyrektywy kompilatora {$M ...}.
MemAvail: Longint; Podaje w bajtach sumę rozmiarów wszystkich wolnych bloków w segmencie przeznaczonym na zmienne dynamiczne.
Minimalny i maksymalny rozmiar stosu może być określony za pomocą dyrektywy kompilatora {$M ...}.
Funkcje wskaźnikowe i adresów Addr(X): pointer;Zwraca adres obiektu X w pamięci. CSeg: Word; Zwraca aktualną wartość rejestru CS procesora.
DSeg: Word; Zwraca aktualną wartość rejestru CS procesora.
Ofs(X): Word;Zwraca przesunięcie (offset) w segmencie pamięci, w którtm znajduje się obiekt X. Ptr(Seg, Ofs: Word): Pointer;Zwraca wskaźnik do obiektu w pamieci znajdujacego się pod wskazanym adresem segmentu i przesunięcia (offsetu). Seg(X): Word;Zwraca adres segmentu pamięci przydzielonej dla obiektu X. SPtr: Word; Zwraca aktualną wartość rejestru SP procesora.
SSeg: Word; Zwraca aktualną wartość rejestru SS procesora.
Pozostałe funkcje i procedury Exclude(var S: set of T; I: T);Usuwa element T ze zbioru wartości S. FillChar(var X; Count: Word; value: Byte | Char);Wypełnia pamięć zajmowaną (wskazywaną) przez zmienną X elementami value. Count określa liczbę bajtów, które należy wypełnić. Aby uniknąć przekroczenia zakresu pamięci zajmowanej przez zmienną należy licznik podawać jako SizeOf(X). Hi(X): Byte;Zwraca bardziej znaczący bajt parametru X (X może być typu Word lub Integer). High(X): {typ_parametru | indeks_typu_parametru}Dla typu porządkowego zwraca najwyższą możliwą wartość parametru. Jeżeli X jest tablicą, to zwraca maksymalny indeks. Jeżeli X jest tablicą otwartą, to zwraca jej aktualny rozmiar. Jeżeli X jest łańcuchem, to zwraca jego długość. Include(var S: set of T; I: T);Dołącza element T do zbioru wartości S. Lo(X): Byte;Zwraca mniej znaczący bajt parametru X (X może być typu Word lub Integer). Low(X): {typ_parametru | indeks_typu_parametru}Dla typu porządkowego zwraca najmniejszą możliwą wartość parametru. Jeżeli X jest tablicą, to zwraca jej minimalny indeks. Jeżeli X jest tablicą otwartą, to zwraca 0. Jeżeli X jest łańcuchem, to zwraca 0. Move(var Source, Dest; Count: Word);Kopiuje Count bajtów począwszy od pierwszego ze zmiennej Source do zmiennej Dest. ParamCount: Word; Zwraca ilość parametrów przekazanych do programu z wiersza poleceń (separatorami parametrów są spacje i tabulatory).
ParamStr(Index): String;Zwraca parametr o numerze Index z jakim został wywołany program (0 - ścieżka i nazwa uruchomionego programu). Random [ ( X: Word) ]: {typ_parametru};Generuje liczbę pseudolosową. Jeżeli podano parametr, to generowana jest liczba całkowta n z zakresu 0 <= n < X, w przeciwnym przypadku generowana jest liczba rzeczywista z zakresu 0 <= n < 1. Randomize;Inicjuje generator liczb pseudolosowa. SizeOf(X): Integer;Wielkość pamięci w bajtach zajmowanej przez zmienną X. Swap(X: Integer | Word): {typ_parametru};Zamienia bardziej znacząy bajt z mniej znaczącym w liczbie X. UpCase(Ch: Char): Char;Zamienia znak Ch na wielką literę. Inne znaki są ignorowane.
|