Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Процедуры и параметры.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
192 Кб
Скачать

Стандартты процедуралар және параметрсіз процедуралар

Бағдарламалау практикасында бағдарламаны орындау барысында бірдей есептеулер бірнеше рет қайталанатын жағдайлар кездеседі. Бірдей жазбалар қайталанбас үшін және бағдарламаны жеңіл әрі қарапайым ету мақсатында бағдарламаның бұл бөлігін ерекшелеп, жеке бөлігі ретінде алып қарастыруға болады. Мұндай әрекеттерді параметрсіз процедуралар іске асыра алады.

Параметрсіз процедуралардың жалғыз ерекшелігі лоардың атауында формальды параметрлер қолданылмайды. Параметрсіз процедураны шақыру үшін бағдарлма денесінде процедураның атын жазу керек. Процедура аты оператор ретінде айқындалады. Осы оператор іске асырылғанда процедура жұмысы жүреді.

Cөз тіркестерімен жұмыс істейтін процедуралар мен функциялар.

Функция аты

Функция қызметі

Concat (<1 тіркес>, <2 тіркес>,..)

Сөз тіркестерін біріктіру

Concat (‘A’, ’BC’, ’_1’) = ’ABC_1’

Copy (<тіркес>, <позиция>, <саны>)

Сөз тіркесінің берілген бөлігін көрсетілген позициядан бастап көшіру

Copy (‘INFORMATION’,3,5) = ‘FORMA’

Length (<тіркес>)

Ағымдағы сөз тіркесінің ұзындығын анықтау Length(‘Астана’) = 6

Pos (<ішкі тіркес>, <толық сөз тіркесі>)

Сөз тіркесіне оның ішкі бөлігінің кіру позициясын анықтау

Pos (‘т’, ‘Анықтама’) = 5

Pos (‘к’, ‘Анықтама’) = 0

Concat функциясы үшін сөз тіркесінің жалпы ұзындығы 256 байттан аспауы керек. Сөз тіркестері үшін орындалатын “+” белгісі оның символдары үшін конкатенация (біріктіру) операциясының атқарылатынын білдіреді.

Copy функциясы үшін көрсетілген позиция сөз тіркесінің ұзындығынан үлкен болса, функция нәтижесі бос жол болады. Егер <позиция> + <саны> сөз тіркесінің ұзындығынан үлкен болса, онда тек соңғы символдар көшіріледі. Егер <позиция> нөмірі [1,255] аралығында жатпаса, онда программа орындалуында қате болады.

Процедура аты

Процедураның қызметі

Delete (<тіркес>, <позиция>, <саны>)

Берілген позициядан бастап сөз тіркесінің бөлігін алып тастау

  1. S:=’abcdegh’;

Delete (S,2,4);

Нәтиже: S=’afgh’

  1. S:=’abcdegh’;

Delete (S,2,10);

Нәтиже: S=’a’

Insert (<ішкі тіркес>,(<толық тіркес>, <позиция>)

Берілген позициядан бастап бір сөз тіркесін екінші сөз тіркесіне кірістіру

S:=’abcdefgh’;

Insert (‘XXL’,S,3);

Нәтиже: S=’ abXXLcdefgh’

Str(<сан>, <символдар тіркесі>)

Cандық мәнді символдар тіркесіне түрлендіру

  1. Str (567,A);

Нәтиже: A=’567’

  1. B:=567; {B:integer}

Str (B:5,A);

Нәтиже: А=’ 567’

  1. B:=567E+3; {B:real}

Str (B:8:0,A);

Нәтиже: А=’ 5670’

Val (<сөз тіркесі, <сан>, <код>)

Сөз тіркесін сандық мәнге түрлендіру (егер қате жоқ болса, онда <код>=0)

  1. A:=’135’;

Val (A,R,Code)

Нәтиже: R=135; Code=0;

  1. A:=’ 135’;

Val (A,R,Code)

Нәтиже: R=анықталмаған; Code=1;

  1. A:=’2.5E+4’;

Val (A,R,Code)

Нәтиже: R=25000; Code=0;



Delete процедурасы үшін, егер <позиция> символдар тіркесінің үлкен болса, онда ол өзгермейді. Егер <позиция> + <саны> тіркес ұзындығынан үлкен болса, онда көрсетілген позициядан бастап сөз тіркесінің соңы өшіріледі. Егер <позиция> нөмірі [1,255] аралығына жатпайтын болса, онда программаорындалуында қате пайда болады.

Insert процедурасында, егер бір символдар тіркесін кірістіру нәтижесінде бастапқы берілген сөз тіркесінің максимальды ұзындығынан артық тіркес шықса, онда кірістірілетінсөз тіркесінің соңғы символдары қойылмайды. Егер <позиция> нөмірі бастапқы тіркестің Length функциясымен анықталған нақты ұзындығынан артық болса, онда нәтиже жалғастырылған сөз тіркесі болып саналады.

Val процедурасы үшін сөз тіркесіне түрлендірілетін сан алдында және соңында бос орындар болмауы тиіс.

Басқа стандартты процедуралар:

Функция аты

Модулі

Процедура қызметі

ClrScr

Crt

Экранды тазалау процедурасы

Delay (X)

Crt

Программаның орындалуын Х миллисекундында тоқтатады.

Exit

System

Процедураның, функцияның немесе негізгі программаның уақытынан бұрын аяқталуын іске асырады.

FillChart (X,Count,Value)

System

X айнымалысының тізбек байттарының берілген Count санын Value мәнімен толтырады.

GetDate (<жыл>, <ай>, <күн>, <апта күні>)

Dos

Ағымдағы датаның мәнін береді.

GotoXY (X,Y)

Crt

Курсорды экранның координатасы көрсетілген жеріне жылжытады.

Window (X1,Y1,X2,Y2)

Crt

Экрандағы мәтіндік терезе көлемін анықтайды (X1, Y1 – сол жақ жоғарғы бұрыш координатасы; X2, Y2 – оң жақ төменгі бұрыш координатаы)

Турбо Паскаль тілінде мәндерді енгізу стандартты READ немесе READLN процедуралары (операторлары), ал мәндерді шығару WRITE немесе WRITELN процедуралары (операторлары) арқылы орындалады. READ және READLN процедуралары символдарды (мәндер типі CHAR), сөз тіркестерін (мәндер типі STRING) немесе сандық мәндерді (мәндер типі INTEGER, BYTE, REAL және т.б.) енгізу үшін қолданылады.

READ процедурасын шақыру:

READ ([<файл аты>], <айнымалылар тізімі>);

READLN процедурасы үшін сәйкесінше:

READLN ([<файл аты>], <айнымалылар тізімі>);

Егер <файл аты> көрсетілмесе, онда мәндерді оқу стандартты INPUT файлынан жүргізіледі, бұл жағдайда стандартты құрылғы INPUT файлымен байланысқан пернетақта немесе дисплей болып саналады.

Әр енгізу операторының тізімінде көрсетілген айнымалыларға меншіктелетін тұрақты мәндері бар өз мәндер жиыны бар. Енгізу тізіміне мәндерді меншіктеу айнымалылардың орналасу ретіне байланысты, солдан оңға қарай жүргізіледі.

  • Айнымалылар және тұрақтылар типі сәйкес болу керек (тек REAL типті мәндерін енгізерде, INTEGER типті айнымалылар мен тұрақтыларды көрсетуге болады).

  • Енгізілетін сандық мәндер бір немесе бірнеше бос орындармен ажыратылуы керек; санның таңбасын және цифрларын бос орын арқылы бөлуге болмайды.

  • Егер сөз тіркесі, яғни жол енгізілетін болса (мәндер типі STRING), онда READ операторы VAR сипатталуында көрсетілген максимальды ұзындықтан аспайтын символдар тізбегін ғана оқиды.

  • Символдар тізбегі (мәндер типі CHAR немесе STRING) олар енгізілмеген жағдайда, бос орын ретінде қабылданады.

READ стандартты процедурасына мысалдар:

А) Сандық мәндерді енгізу:

VAR B, A, D: REAL;

K: INTEGER; Енгізілетін мәндер:

. . . 2.5 -4.95 20 1.25Е2

READ (A, D); Енгізілгеннен кейін:

READ (K, B); A=2.5; D=-4.95; K=20; B=125;

Ә) Сандық және тіркестік (жолдық) мәндерді енгізу:

VAR A: REAL;

B: INTEGER;

C1, C2, C3: CHAR; Енгізілетін мәндер:

D: STRING[5]; 2.5 10 ЖОЛБАРЫС

. . .

Енгізілгеннен кейін:

READ (A, B, C1, C2, C3, D); A=2.5; B=10; C1=’ ’;

C2=’K’; C3=’L’; D=’ ЛБАРЫ’

Мысалдан көріп отырғандай, мәндерді араластырып (сандық және жолдық) енгізу дұрыс орындалмайды. Егер енгізілетін мәндер тізбегінен кейін бос орын қалдырмаса, онда енгізуде қате орын алады. Сондықтан сандық мәндер мен тіркестік немесе символдық мәндерден жеке-жеке бөле отырып енгізу керек.

READ операторын орындаған кезде енгізу жолының соңы (<Enter> пернесін басу), мәндер элементтерін ажырататын бос орын енгізумен бірдей болып саналады, сондықтан енгізудің келесі жолына көшу орындалмайды. Ал енгізілетін мәндер тәзбек бойынша сәйкес айнымалыға меншіктеледі.

Мысалы, ұқсас операторлар үшін енгізілетін мәндер тізбегі әр түрлі болуы мүмкін:

READ (A, B, C); Енгізілетін мәндер: 2 9 5

READ (D, E); Енгізілетін мәндер: 3 7

READ операторының READLN операторынан ерекшелігі, READLN операторында соңғы айнымалы оқылғаннан кейін сөз тіркесінің қалған бөлігі қабылданбайды. Бұдан кейінгі READ немесе READLN операторы мәндерді жаңа жолдың басынан бастап оқиды, демек READLN операторы жолдың соңын (<Enter> пернесін басу) қабылдамайды. Жолдың соңына жетіп, енгізілген мәндердің келесі жолына ауысуда READLN операторын параметрсіз қолдануға болады; мұндайда енгізу мәндерінің келесі жолына шартсыз көшу орындалады.

Мысалы, екі өлшемді жиымның элементтерін енгізудің әр түрлі тәсілдерін қарастырайық:

  1. FOR I:=1 TO 2 DO

BEGIN

FOR J:=1 TO 3 DO

READ (A[I, J]);

READLN;

END;

Енгізілетін мәндер: 3 5 1, -4 7 9 (Мәндер екі жолда орналасады)

  1. FOR I:=1 TO 2 DO

FOR J:=1 TO 3 DO

READ (A[I, J]);

Енгізілетін мәндер: 3 5 1, -4 7 9 (Мәндер екі жолда орналасады)

  1. FOR I:=1 TO 2 DO

FOR J:=1 TO 3 DO

READLN (A[I, J]);

Енгізілетін мәндер: 3 5 1 -4 7 9 (Мәндер бір қатарға тізбектеліп орналасады).

Келесі мысалда READLN операторын қолданғанда, жолдың соңындағы мәндерін қабылданбайтындығын анық көруге болады.

VAR A, B, C, D: INTEGER; Енгізілетін мәндер:

1 жол: 10 20 30 40 50

. . . 2 жол: 60

READLN (A, B, C); Нәтиже:

READLN (D); A=10; B=20; C=30; D=60;

Мәндерді шығару процедурасы. WRITE процедурасы (операторы) келесі типтегі өрнектерді шығаруға арналған: Integer, Byte, Real, Char, String, Boolean және т.б.

WRITE ([<файл немесе құрылғы аты>], <өрнектер тізімі>);

Егер <файл аты> көрсетілмесе, онда шығару стандартты OUTPUT файлына (дисплей экранына) орындалады. Егер <файл аты> көрсетілсе, онда бұл файл сипатталуы немесе алдын-ала дайындалуы қажет.

Баспадан шығару үшін LST логикалық құрылғысы қолданылады. Мұндайда стандартты PRINTER модулі іске қосылуы керек (демек, программа басында Uses Printer сөздері тұруы керек).

WRITE операторы тізімдегі өрнектерден мәндерін ағымдағы жолға ол толғанша шығарады. Егер бұдан кейін тағы да шығару операторы тұрса, пл ағымдағы жол толмаған жағдайда, мәндерді осы жолға жалғастырып шығара береді.

Мысалы:

X:=5; Y:=10;

WRITE (‘X=’, X); Экранда Х=5 Y=10

WRITE (‘Y=’, Y);

Турбо Паскаль тілінде стандартты типтегі шамаларды баспаға шығару үшін белгілі бір сандар позициясы беріледі. Шығарылатын мәндер үшін өріс енін (позиция санын) формат арқылы анықтауға болады.

Форматы бар шығару операторының жазылуы:

WRITE ([< файл немесе құрылғы аты >,] R1:N1, R2:N2 …, Rm:Nm);

Мұндағы – R1, R2 …, Rm – шығарылатын айнымалылар атаулары;

N1, N2 …, Nm - өріс ендері.

Егер өріс ені мәннен үлкен болса, онда мәндердің сол жағында бос орын қалдырады. Ал, шығарылатын мән өріс еніне сыймаса, онда формат қабылданбайды да, баспаға нақты мәндер толық шығарылады.

Нақты мәндерді шығару ерекшеліктері.

Егер нақты типтегі айнымалы сипатталса, онда оны шығарудың төмендегідей нұсқаларын пайдалануға болады:

1. Write (R); Шығару қалыпты түрде іске асырылады (экспоненциальды формада).

{ | -}d.ddddddddddd E{ + | -} dd

2. Write (R:N); Бүтін сан шығарудың қалыпты түрі, өріс ұзындығы N, оң жақ шекарасы бойынша тураланған. N-нің ең кіші мәні 8-ге тең. Өріс ені бұдан кіші болған жағдайда, компилятор мәндер разрялын 8-ге дйін автоматты түрде өсіреді.

3. Write (R:N:M); Бекітілген нүкте арқылы шығару, нүктеден кейін М (0<=M<=24) ондық таңба көрсетіледі, мұнда N>M+2 болуы тиіс (2 орын – сан таңбасы мен ондық нүкте үшін).

Мысалы,

VAR B, D: REAL;

C: INTEGER;

A: STRING;

. . .

A:=’КІТАП’;

B:=1253E-5;

C:=12;

D:=1253E2;

WRITE (LST, ‘B=’, B:10:3, ‘ C=’ , C:8, ‘ A=’ , A:7, ‘ B1=’, B:8, ‘ D=’, D:6);