32
Turbo Pascal 7.0 Готовые алгоритмы, функции, процедуры 1 Turbo Pascal 7.0 Готовые алгоритмы, функции, процедуры Автор сборника и текстов программ: Дробот Виктор (Ghost) Дата создания: 02.01.2008 Время создания: 16.35 Йошкар-Ола 2008

Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Embed Size (px)

Citation preview

Page 1: Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Turbo Pascal 7.0 Готовые алгоритмы,

функции, процедуры

1

Turbo Pascal 7.0

Готовые алгоритмы, функции, процедуры

Автор сборника и текстов программ: Дробот Виктор (Ghost)

Дата создания: 02.01.2008

Время создания: 16.35

Йошкар-Ола

2008

Page 2: Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Turbo Pascal 7.0 Готовые алгоритмы,

функции, процедуры

2

Предисловие:

В этом сборнике собраны функции и процедуры, позволяющие Вам использовать их в процессе создания программы. Все функции и процедуры прекрасно компилируются, запускаются и включаются в программу. Здесь собраны функции работы с экраном, символами, строками, датами и годами.

Всем, хорошо знающим Turbo Pascal без труда удастся разобраться во всех кодах программ, переменных, которые используются в них, константах и многом другом.

Для работы ВСЕХ представленных кодов, необходим модуль TpCrt.

Приятной Вам работы с Turbo Pascal!!!

Page 3: Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Turbo Pascal 7.0 Готовые алгоритмы,

функции, процедуры

3

Содержание

Предисловие стр.2

Глава 1. Функции и процедуры работы с экраном стр.5

Процедура «Screen» стр.5

Функция «Ask» стр.5

Процедура «Message» стр.8

Процедура «Beep» стр.10

Глава 2. Функции и процедуры работы с символами и строками стр.11

Процедура «GetStrDig» стр.11

Процедура «Perevorot» стр.14

Функция «Revert» стр.14

Функция «Char_To_Upper» стр.15

Функция «Char_To_Lower» стр.16

Функция «Compare_String» стр.17

Функция «Is_Polindr» стр.17

Процедура «My_Write» стр.18

Функция «Int_To_Str» стр.19

Page 4: Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Turbo Pascal 7.0 Готовые алгоритмы,

функции, процедуры

4

Функция «Attr_Col» стр.19

Функция «Replicate» стр.19

Функция «Str_To_Small» стр.20

Функция «Str_To_Big» стр.21

Функция «Is_Glasn» стр.21

Функция «Calc_Glasn» стр.22

Функция «Is_Sog» стр.22

Функция «Calc_Sog» стр.23

Функция «Is_Char» стр.23

Функция «Fill_Right» стр.24

Функция «Fill_Left» стр.25

Функция «Fill_Middle» стр.25

Функция «Clr_Right» стр.26

Функция «Fill_Left» стр.27

Функция «Clr_Bound» стр.28

Функция «Visokosn» стр.28

Функция «Day_Of_Month» стр.28

Функция «Name_Month» стр.29

Глава 3. Функции и процедуры с файлами стр.31

Процедура «DosWinUltraSpeedCopyFile» стр.31

Page 5: Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Turbo Pascal 7.0 Готовые алгоритмы,

функции, процедуры

5

Функции и процедуры работы с экраном

Процедура «Screen»

Данная процедура очищает весь экран, задает цвет букв и цвет фона (экрана) и ставит курсор в левую верхнюю часть экрана. Код процедуры:

PROCEDURE SCREEN(COLOR_CHAR, COLOR_BACKGROUND : BYTE);

BEGIN

TEXTCOLOR(COLOR_CHAR);

TEXTBACKGROUND(COLOR_BACKGROUND);

CLRSCR;

GOTOXY(1,1);

END;

Комментарии:

COLOR_CHAR – переменная, определяющая цвет БУКВ

COLOR_BACKGROUND – переменная, определяющая цвет ФОНА (ЭКРАНА)

Функция «Ask»

Данная функция выводит в заданной позиции экрана табличку с заданным текстом вопроса, на который можно ответить только двумя способами: Да(Y)/Нет(N). Код функции:

Page 6: Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Turbo Pascal 7.0 Готовые алгоритмы,

функции, процедуры

6

FUNCTION ASK(XL,YL:BYTE;VOPROS:STRING; COLVOP:BYTE; ZAGOL:STRING; COLZAG:BYTE):BOOLEAN;

VAR

XR,YR,SAVEX,SAVEY,SAVEATTR:BYTE;

SAVEEKRAN:POINTER;

C:CHAR;

BEGIN

SAVEX:=WHEREX;

SAVEY:=WHEREY;

SAVEATTR:=TEXTATTR;

XR:=XL+LENGTH(VOPROS)+10;

YR:=YL+2;

IF SAVEWINDOW(XL,YL,XR,YR,TRUE,SAVEEKRAN) THEN

BEGIN

FRAMEWINDOW(XL,YL,XR,YR,COLVOP,COLZAG,ZAGOL);

WINDOW(XL+1,YL+1,XR-1,YR-1);

TEXTATTR:=COLVOP;

CLRSCR;

WRITE(' '+VOPROS+' (Y/N) ');

REPEAT

C:=READKEY;

C:=CHAR_TO_UPPER(C);

CASE C OF

'Y','H':

BEGIN

WRITE('Y');

ASK:=TRUE;

BREAK;

END;

Page 7: Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Turbo Pascal 7.0 Готовые алгоритмы,

функции, процедуры

7

'N',' Т':

BEGIN

WRITE('N');

ASK:=FALSE;

BREAK;

END;

ELSE C:=C;

END;

UNTIL FALSE;

TEXTATTR:=SAVEATTR;

WINDOW(1,1,80,25);

RESTOREWINDOW(XL,YL,XR,YR,TRUE,SAVEEKRAN);

GOTOXY(SAVEX,SAVEY);

END

ELSE

BEGIN

ASK:=FALSE;

END;

END;

Комментарии:

XL, YL – это переменные, определяющие положения левого верхнего угла ОКНА ВОПРОСА

VOPROS – текст вопроса

COLVOP – параметры, определяющие цвет текста ВОПРОСА

ZAGOL – текст заголовка ОКНА ВОПРОСА

Page 8: Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Turbo Pascal 7.0 Готовые алгоритмы,

функции, процедуры

8

COLZAG – параметры, определяющие цвет текста ЗАГОЛОВКА

Процедура «Message»

Данная процедура выводит в определённой части экрана сообщение с заданным текстом, в ответ на которое программа предлагает следующее: «Для продолжения нажмите "ENTER"» заголовком и цветами этих параметров. Необходимые функции и процедуры: Fill_Middle. О данной функции будет рассказано в разделе «Работа с символами и строками». Код процедуры:

PROCEDURE MESSAGE(XL,YL:BYTE;TXT:STRING; COLTXT:BYTE; ZAGOL:STRING; COLZAG:BYTE);

CONST

MY_TXT='ДЛЯ ПPОДОЛЖЕНИЯ НАЖМИТЕ "ENTER"';

VAR

XR,YR,SAVEX,SAVEY,CC,SAVEATTR,LEN_MY,LENTXT:BYTE;

SAVEEKRAN:POINTER;

C:CHAR;

BEGIN

SAVEX:=WHEREX;

SAVEY:=WHEREY;

SAVEATTR:=TEXTATTR;

LENTXT:=LENGTH(TXT);

LEN_MY:=LENGTH(MY_TXT);

IF LENTXT>LEN_MY THEN LEN_MY:=LENTXT;

LEN_MY:=LEN_MY+2;

XR:=XL+LEN_MY+2;

Page 9: Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Turbo Pascal 7.0 Готовые алгоритмы,

функции, процедуры

9

YR:=YL+3;

IF SAVEWINDOW(XL,YL,XR,YR,TRUE,SAVEEKRAN) THEN

BEGIN

FRAMEWINDOW(XL,YL,XR,YR,COLTXT,COLZAG,ZAGOL);

WINDOW(XL+1,YL+1,XR-1,YR-1);

TEXTATTR:=COLTXT;

CLRSCR;

WRITE(FILL_MIDDLE(TXT,' ',LEN_MY));

WRITE(FILL_MIDDLE(MY_TXT,' ',LEN_MY));

REPEAT

C:=READKEY;

CC:=ORD(C);

CASE CC OF

13:BREAK;

ELSE C:=C;

END;

UNTIL FALSE;

TEXTATTR:=SAVEATTR;

WINDOW(1,1,80,25);

RESTOREWINDOW(XL,YL,XR,YR,TRUE,SAVEEKRAN);

GOTOXY(SAVEX,SAVEY);

END

ELSE

BEGIN

END;

END;

Page 10: Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Turbo Pascal 7.0 Готовые алгоритмы,

функции, процедуры

10

Процедура «Beep»

Данная процедура при нужной ситуации создаёт писк, количество которых Вы можете задавать. Код процедуры:

PROCEDURE BEEP (N : BYTE);

VAR

K : BYTE;

BEGIN

FOR K:=1 TO N DO

WRITE(#7);

END;

Page 11: Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Turbo Pascal 7.0 Готовые алгоритмы,

функции, процедуры

11

Функции и процедуры работы с символами и

строками

Процедура «GetStrDig»

Данная процедура выводит сообщение на экран, с просьбой ввести число. Если вы ошиблись при вводе, программа выводит на экран сообщение с текстом предупреждения и заставляет работать процедуру Beep. После завершения ввода, программа преобразовывает введённое Вами число в виде строки в его числовое представление. Код процедуры:

PROCEDURE GETSTRDIG(VAR X:WORD; N : BYTE; CODE : CH AR; KEY : BOOLEAN);

VAR

S :STRING;

P :BYTE;

WX,WY :BYTE;

SIM :CHAR;

C :BYTE ABSOLUTE SIM;

CERR,Z :INTEGER;

MISTAKE :BYTE;

CONST

ENTER=#13;

ESC=#21;

MAX=5;

Page 12: Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Turbo Pascal 7.0 Готовые алгоритмы,

функции, процедуры

12

MYSAY: ARRAY [1..MAX] OF STRING [50]=

(' ОШИБКА! БУДЬ ВНИМАТЕЛЬНЕЕ!',' ТЫ ПPИКИДЫВАЕШЬСЯ ТУПЫМ? ПИШИ НОPМАЛЬНО!!',' ИЗДЕВАЕШЬСЯ?',' ОХPЕНЕЛ?',

' ТЫ, БЫДЛА НЕДОДЕЛАННАЯ! ЗАДОЛБАЛ!!!');

PROCEDURE MYTALK(N:BYTE);

VAR

S,S2 : STRING;

BEGIN

IF N=0 THEN N:=1;

S2:=' ОШИБКА '+INT_TO_STR ( N,0)+' ';

IF N>MAX THEN N:=MAX;

S:=MYSAY[N];

MESSAGE(1,1,S,ATTR_COL(WHITE,BLACK),S2,ATTR_COL(WHI TE,BLACK));

END;

BEGIN

WX:=WHEREX;

WY:=WHEREY;

MISTAKE:=0;

IF KEY THEN

BEGIN

S:='';

FOR P:=1 TO N DO

S:=' '+S;

END;

WRITE(S:N);

P:=1;

WHILE P<=N DO

BEGIN

GOTOXY(WX+P-1,WY);

Page 13: Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Turbo Pascal 7.0 Готовые алгоритмы,

функции, процедуры

13

SIM:=READKEY;

CASE SIM OF

'0'..'9' :

BEGIN

WRITE(SIM);

S[P]:=SIM;

P:=P+1;

END;

ENTER, ESC :

BEGIN

BREAK;

END;

ELSE

BEGIN

BEEP;

MISTAKE:=MISTAKE+1;

MYTALK(MISTAKE);

END;

END;

END;

REPEAT

VAL(S,X,CERR);

IF CERR<>0 THEN DELETE(S,CERR,1);

UNTIL CERR=0;

CODE:=SIM;

END;

Page 14: Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Turbo Pascal 7.0 Готовые алгоритмы,

функции, процедуры

14

Процедура «Perevorot»

Данная процедура переворачивает введённую Вами строку. Код процедуры:

PROCEDURE PEREVOROT( VAR S : STRING);

VAR

X,N,N1 : BYTE;

KA : CHAR;

BEGIN

N:=LENGTH(S);

N1:=N DIV 2;

FOR X:=1 TO N1 DO

BEGIN

KA:=S[X];

S[X]:=S[N+1-X];

S[N+1-X]:=KA;

END;

END;

Функция «Revert»

Данная функция почти такая же, как и предыдущая процедура. Отличие только в том, что это – ФУНКЦИЯ, которая возвращает результат – т.е., строка, которую Вы задали, может быть присвоена другим строкам. Код функции:

FUNCTION REVERT( S : STRING) : STRING;

VAR

X,N,N1 : BYTE;

Page 15: Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Turbo Pascal 7.0 Готовые алгоритмы,

функции, процедуры

15

KA : CHAR;

BEGIN

N:=LENGTH(S);

N1:=N DIV 2;

FOR X:=1 TO N1 DO

BEGIN

KA:=S[X];

S[X]:=S[N+1-X];

S[N+1-X] :=KA;

END;

REVERT:=S;

END;

Функция «Char_To_Upper»

Данная функция преобразует заданный символ в ЗАГЛАВНЫЙ. Код функции:

FUNCTION CHAR_TO_UPPER(S : CHAR):CHAR;

CONST

BIG:STRING=

'QWERTYUIOPASDFGHJKLZXCVBNMЙЦУКЕHГШЩЗХЪФЫВАПPОЛДЖЭЯЧСМИТЬБЮ';

SMALL:STRING=

'qwertyuiopasdfghjklzxcvbnm йцукенгшщзхъфывапpолджэячсмитьбю';

VAR

L : BYTE;

BEGIN

L:= POS(S,SMALL);

IF L<>0

Page 16: Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Turbo Pascal 7.0 Готовые алгоритмы,

функции, процедуры

16

THEN S:=BIG[L];

CHAR_TO_UPPER:=S;

END;

Функция «Char_To_Lower»

Данная функция работает почти также, как и предыдущая, только она преобразовывает заданный символ в маленький символ. Код функции:

FUNCTION CHAR_TO_LOWER(S : CHAR) : CHAR;

CONST

BIG:STRING=

'QWERTYUIOPASDFGHJKLZXCVBNMЙЦУКЕHГШЩЗХЪФЫВАПPОЛДЖЭЯЧСМИТЬБЮ';

SMALL:STRING=

'qwertyuiopasdfghjklzxcvbnm йцукенгшщзхъфывапpолджэячсмитьбю';

VAR

L : BYTE;

BEGIN

L:= POS(S,BIG);

IF L<>0

THEN S:=SMALL[L];

CHAR_TO_LOWER:=S;

END;

Page 17: Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Turbo Pascal 7.0 Готовые алгоритмы,

функции, процедуры

17

Функция «Compare_String»

Данная функция сравнивает две строки на равенство. Код функции:

FUNCTION COMPARE_STRING( S,W : STRING) : BOOLEAN;

VAR

LS,LW ,J : BYTE;

F : BOOLEAN;

BEGIN

LS:=LENGTH(S);

LW:=LENGTH(W);

IF LS<>LW

THEN COMPARE_STRING:=FALSE

ELSE

BEGIN

F:=TRUE;

FOR J:=1 TO LS DO

F:=F AND (CHAR_TO_UPPER(S[J])=CHAR_TO_UPPER(W[J]));

COMPARE_STRING:=F;

END;

END;

Функция «Is_Polindr»

Данная функция проверяет, является ли слово палиндромом. Если это так, функция возвращает значение True. Код функции:

FUNCTION IS_POLINDR(S:STRING):BOOLEAN;

VAR K,N,N2:BYTE;

Page 18: Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Turbo Pascal 7.0 Готовые алгоритмы,

функции, процедуры

18

P:BOOLEAN;

BEGIN

N:=LENGTH(S);

N2:=N SHR 1;

P:=TRUE;

FOR K:=1 TO N2 DO

BEGIN

P:=P AND (CHAR_TO_UPPER(S[K])=CHAR_TO_UPPER(S[N+1-K ]));

END;

IS_POLINDR:=P;

END;

Процедура «My_Write»

Данная процедура печатает заданный Вами текст в заданной позиции экрана с заданной цветовой настройкой (цвет символов и фона (экрана)). Код процедуры:

PROCEDURE MY_WRITE(X,Y,ATTR:BYTE;S:STRING);

VAR

SAVE:BYTE;

BEGIN

SAVE:=TEXTATTR;

TEXTATTR:=ATTR;

GOTOXY(X,Y);

WRITE(S);

TEXTATTR:=SAVE;

END;

Page 19: Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Turbo Pascal 7.0 Готовые алгоритмы,

функции, процедуры

19

Функция «Int_To_Str»

Данная функция переводит число в строку и печатает его на определённой позиции. Код функции:

FUNCTION INT_TO_STR(X:LONGINT;N:BYTE):STRING;

VAR

S:STRING;

BEGIN

STR(X:N,S);

INT_TO_STR:=S;

END;

Функция «Attr_Col»

Данная функция устанавливает цветовые параметры экрана, строки, заголовка окна и т.д. Код функции:

FUNCTION ATTR_COL(BUKVA,FON:BYTE):BYTE;

BEGIN

BUKVA:=BUKVA AND 15;

FON:=FON AND 7;

ATTR_COL:=(FON SHL 4) OR BUKVA;

END;

Функция «Replicate»

Данная функция печатает заданную строку заданное количество раз. Код функции:

FUNCTION REPLICATE(S:STRING;N:BYTE):STRING;

Page 20: Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Turbo Pascal 7.0 Готовые алгоритмы,

функции, процедуры

20

VAR

Z:STRING;

BEGIN

Z:='';

FOR N:=N DOWNTO 1 DO

Z:=Z+S;

REPLICATE:=Z;

END;

Функция «Str_To_Small»

Данная функция преобразовывает все символы в строке в маленькие символы. Код функции:

FUNCTION STR_TO_SMALL( SIM : STRING) : STRING;

VAR

N : BYTE;

BEGIN

N:=LENGTH(SIM);

FOR N:=N DOWNTO 1 DO

SIM[N]:=CHAR_TO_LOWER(SIM[N]);

STR_TO_SMALL:=SIM;

END;

Page 21: Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Turbo Pascal 7.0 Готовые алгоритмы,

функции, процедуры

21

Функция «Str_To_Big»

Данная функция отличается от предыдущей лишь тем, что все символы в строке преобразовываются в ЗАГЛАВНЫЕ. Код функции:

FUNCTION STR_TO_BIG( SIM : STRING) : STRING;

VAR

N : BYTE;

BEGIN

N:=LENGTH(SIM);

FOR N:=N DOWNTO 1 DO

SIM[N]:=CHAR_TO_UPPER(SIM[N]);

STR_TO_BIG:=SIM;

END;

Функция «Is_Glasn»

Данная функция проверяет, является ли заданный символ гласным. Код функции:

FUNCTION IS_GLASN( SIM : CHAR) : BOOLEAN;

CONST

ALL_GLASN='УЕЫАОЭЯИЮУЕЫАОЭЯИЮEUIOAEUIOA';

BEGIN

IS_GLASN:=POS(SIM,ALL_GLASN)<>0;

END;

Page 22: Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Turbo Pascal 7.0 Готовые алгоритмы,

функции, процедуры

22

Функция «Calc_Glasn»

Данная функция считает, сколько гласных в данной строке. Код функции:

FUNCTION CALC_GLASN( S : STRING) : INTEGER;

VAR

SUM : INTEGER;

I,N : BYTE;

BEGIN

N:=LENGTH(S);

SUM:=0;

FOR I:=1 TO N DO

BEGIN

IF IS_GLASN(S[I])

THEN SUM:=SUM+1;

END;

CALC_GLASN:=SUM;

END;

Функция «Is_Sog»

Данная функция проверяет, является ли данный символ согласным. Код функции:

FUNCTION IS_SOG( SOG : CHAR) : BOOLEAN;

BEGIN

IS_SOG:=IS_CHAR(SOG) AND (NOT IS_GLASN(SOG));

END;

Page 23: Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Turbo Pascal 7.0 Готовые алгоритмы,

функции, процедуры

23

Функция «Calc_Sog»

Данная функция вычисляет, сколько согласных в заданной строке. Код функции:

FUNCTION CALC_SOG( G : STRING) : INTEGER;

VAR

SUM : INTEGER;

I,N : BYTE;

BEGIN

N:=LENGTH(G);

SUM:=0;

FOR I:=1 TO N DO

BEGIN

IF IS_SOG(G[I])

THEN SUM:=SUM+1;

END;

CALC_SOG:=SUM;

END;

Функция «Is_Char»

Данная функция проверяет, является ли данный символ буквой. Код функции:

FUNCTION IS_CHAR ( GL : CHAR ) : BOOLEAN;

CONST

BIG_CHAR: STRING='QWERTYUIOPASDFGHJKLZXCVBNMЙЦУКЕHГШЩЗХЪФЫВАПPОЛДЖЭЯЧСМИТЬБЮ';

Page 24: Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Turbo Pascal 7.0 Готовые алгоритмы,

функции, процедуры

24

SMALL_CHAR: STRING='qwertyuiopasdfghjklzxcvbnm йцукенгшщзхъфывапpолджэячсмитьбю';

BEGIN

IS_CHAR:=POS(GL,BIG_CHAR+SMALL_CHAR)<>0;

END;

Функция «Fill_Right»

Данная функция помещает текст с левой стороны экрана, а справа от него заполняет указанным символом. Код функции:

FUNCTION FILL_RIGHT(S : STRING; C : CHAR;LONG : BYT E) : STRING;

VAR

N : BYTE;

BEGIN

N:=LENGTH(S);

IF N>=LONG

THEN S:=COPY(S,1,LONG)

ELSE

BEGIN

N:=LONG-N;

FOR N:=N DOWNTO 1 DO

S:=S+C;

END;

FILL_RIGHT:=S;

END;

Page 25: Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Turbo Pascal 7.0 Готовые алгоритмы,

функции, процедуры

25

Функция «Fill_Left»

Данная функция помещает текст с правой стороны экрана, а слева от него заполняет указанным символом. Код функции:

FUNCTION FILL_LEFT(S : STRING; C : CHAR;LONG : BYTE ) : STRING;

VAR

N : BYTE;

BEGIN

N:=LENGTH(S);

IF N>=LONG

THEN S:=COPY(S,1,LONG)

ELSE

BEGIN

N:=LONG-N;

FOR N:=N DOWNTO 1 DO

S:=C+S;

END;

FILL_LEFT:=S;

END;

Функция «Fill_Middle»

Данная функция помещает текст по центру экрана, а по обеим от него заполняет указанным символом. Код функции:

FUNCTION FILL_MIDDLE(S : STRING; C : CHAR;LONG : BY TE) : STRING;

VAR

N,N1 : BYTE;

Page 26: Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Turbo Pascal 7.0 Готовые алгоритмы,

функции, процедуры

26

BEGIN

N:=LENGTH(S);

IF N>=LONG

THEN S:=COPY(S,1,LONG)

ELSE

BEGIN

N1:=(LONG-N) DIV 2;

S:=FILL_LEFT(S,C,N+N1);

S:=FILL_RIGHT(S,C,LONG)

END;

FILL_MIDDLE:=S;

END;

Функция «Clr_Right»

Данная функция убирает из заданной строки справа заданный символ. Код функции:

FUNCTION CLR_RIGHT(S:STRING; SIM:CHAR): STRING;

VAR

N : BYTE;

BEGIN

REPEAT

N:=LENGTH(S);

IF N<>0 { СИМВОЛЫ ЕСТЬ}

THEN

BEGIN

IF S[N]=SIM

THEN DELETE(S,N,1)

Page 27: Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Turbo Pascal 7.0 Готовые алгоритмы,

функции, процедуры

27

ELSE BREAK;

END

UNTIL N=0;

CLR_RIGHT:=S;

END;

Функция «Clr_Left»

Данная функция убирает из заданной строки слева заданный символ. Код функции:

FUNCTION CLR_LEFT(S: STRING; SIM : CHAR): STRING;

VAR

N : BYTE;

BEGIN

REPEAT

N:=LENGTH(S);

IF N<>0 { СИМВОЛЫ ЕСТЬ}

THEN

BEGIN

IF S[1]=SIM

THEN DELETE(S,1,1)

ELSE BREAK;

END

UNTIL N=0;

CLR_LEFT:=S;

END;

Page 28: Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Turbo Pascal 7.0 Готовые алгоритмы,

функции, процедуры

28

Функция «Clr_Bound»

Данная функция убирает из заданной строки с обеих сторон заданный символ. Необходимые функции и процедуры: Clr_Left, Clr_Right. Код функции:

FUNCTION CLR_BOUND(S:STRING; SIM:CHAR): STRING;

BEGIN

S:=CLR_LEFT(S,SIM);

S:=CLR_RIGHT(S,SIM);

CLR_BOUND:=S;

END;

Функция «Visokosn»

Данная функция проверяет, является ли заданный год високосным. Код функции:

FUNCTION VISOKOSN(G:WORD):BOOLEAN;

BEGIN

VISOKOSN:=((G MOD 4)=0) AND ( ((G MOD 400)=0) OR (( G MOD 100)<>0) );

END;

Функция «Day_Of_Month»

Данная функция считает, сколько дней в данном месяце в данном году (високосном, или нет). Необходимые функции и процедуры: Visokosn. Код функции:

FUNCTION DAY_OF_MONTH(MONTH : BYTE; YEAR : WORD) : BYTE;

VAR

Page 29: Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Turbo Pascal 7.0 Готовые алгоритмы,

функции, процедуры

29

DAY : BYTE;

BEGIN

CASE MONTH OF

2:BEGIN

IF VISOKOSN(YEAR)

THEN DAY:=29

ELSE DAY:= 28;

END;

4,6,9,11:DAY:=30;

ELSE

BEGIN

IF (MONTH<1) OR (MONTH>12)

THEN DAY:=0

ELSE DAY:=31

END;

END; { CASE }

DAY_OF_MONTH:=DAY;

END;

Функция «Name_Month»

Данная функция выводит имя месяца по его номеру. Код функции:

FUNCTION NAME_MONTH(MONTH : BYTE) : STRING;

BEGIN

CASE MONTH OF

1: NAME_MONTH:=' ЯHВАPЬ';

2: NAME_MONTH:=' ФЕВPАЛЬ';

Page 30: Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Turbo Pascal 7.0 Готовые алгоритмы,

функции, процедуры

30

3: NAME_MONTH:=' МАPТ';

4: NAME_MONTH:=' АПPЕЛЬ';

5: NAME_MONTH:=' МАЙ';

6: NAME_MONTH:=' ИЮHЬ';

7: NAME_MONTH:=' ИЮЛЬ';

8: NAME_MONTH:=' АВГУСТ';

9: NAME_MONTH:=' СЕHТЯБPЬ';

10: NAME_MONTH:=' ОКТЯБPЬ';

11: NAME_MONTH:='H ОЯБPЬ';

12: NAME_MONTH:=' ДЕКАБPЬ';

ELSE NAME_MONTH:='ОШИБКА В H ОМЕPЕ МЕСЯЦА';

END; {CASE}

END;

Page 31: Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Turbo Pascal 7.0 Готовые алгоритмы,

функции, процедуры

31

Функции и процедуры работы с файлами

Процедура «DosWinUltraSpeedCopyFile»

Данная процедура гениально сделана. Она позволяет копировать файлы как в DOSе, так и WINDOWSе. Максимальная скорость копирования составляет 70 MB/sec. Код процедуры:

PROCEDURE WINCOPYFILE(STARTFILEPATH,CLONEFILEPATH:STRING);

VAR

F,C:FILE;

BUF : POINTER;

MAXLENBUF : LONGINT;

LENBUF : WORD;

BEGIN

ASSIGN(F,STARTFILEPATH);

RESET(F);

MAXLENBUF:=MAXAVAIL;

IF MAXLENBUF>65535

THEN MAXLENBUF:=65535;

GETMEM(BUF,MAXLENBUF);

ASSIGN(C,CLONEFILEPATH);

REWRITE(C);

WHILE NOT EOF(F) DO

BEGIN

BLOCKREAD(F,BUF^,MAXLENBUF,LENBUF);

Page 32: Turbo Pascal 7.0 - Готовые Алгоритмы и Программы

Turbo Pascal 7.0 Готовые алгоритмы,

функции, процедуры

32

BLOCKWRITE(C,BUF^,LENBUF);

END;

FREEMEM(BUF,MAXLENBUF);

CLOSE(F);

CLOSE(C);

END;