Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
UMK_ASDiP_25-06-2012_kz.doc
Скачиваний:
81
Добавлен:
13.03.2015
Размер:
1.79 Mб
Скачать

Қосымша әдебиет: 6 [73-80], 7 [227-265]

Бақылау сұрақтары

1. Қандай жағдайда массивтің сұрыптауы орындалады?

2. Таңдау бойынша сұрыптау алгоритмін сипаттаңыз.

3. Айырбастау бойынша сұрыптау алгоритмін сипаттаңыз.

4. Қарапайым ендірмелер арқылы сұрыптау алгоритмін сипаттаңыз.

5. Сұрыптау алгоритмдердің айырмашылығы қандай?

6 –дәріс. Жолдар. Жолдарға амалдар қолдануға арналған процедуралар мен функциялар

Ұзындығын алдын-ала анықтау қиын STING типі Паскаль тілінде жолдарға көп қолданады. Ол көбінесе бір өлшемді ARRAY [0..N] OF CHAR массивіне ұқсас, бірақ та сиволдар жолының артықшылығы жолдағы символдар саны 0 ден N айнымаласына дейін өзгереді, мұнда N –жолдағы символдардың максималды саны. N мәні STINIG [N] типінің анықталуымен баяндалады және 255-тен аспайтын кез-келген реттік тұрақты сан бола алады. Егер сипатталуда N көрсетілмесе, мұндай жағдайда жол ұзындығы ең үлккен мүмкіндікті алады, яғни N=255. жолдың кез-келген символына кіру бір өлшемді массив элементтері сияқты жүзеге асырылады.

Жолдармен және символдармен істелетін негізгі әрекеттер төмендегі стандартты процедуралар мен функциярар арқылы жүзеге асырылады.

LENGTH (ST)- INTEGER типті функция; ST жолының ағымдағы ұзындығын анықтыйды.

CONCAT (ST1[ST2,…, STK]) – STINIG типті функция; ST1, ST2,…, STK параметр- жолдар ұстасуын (сцепление) қайтарады.

COPY (ST, IND, COUNT) - STINIG типті функция;; IND номерлі символдан бастап, ST жолынан COUNT символдарын көшіреді.

DELETE (ST, IND, COUNT) – процедура; IND номерлі символдан бастап, ST жолынан COUNT символдарын өшіреді.

INSERT (SUBST, ST, IND) - процедура; IND номерлі символдан бастап, ST жолына SUBST ішкі жолды қояды.

POS (SUBST, ST) - INTEGER типті функция; ST жолынан SUBST ішкі жолының бірінші кіруін тауып, осыдан басталатын оның позициясын қайтарады, егер ішкі жол табылмаса, онда ноль қайтарады.

STR (X, ST) - процедура; Х санын ST символдар жолына түрлендіреді.

VAL (ST, X, CODE) - процедура; ST символдар жолын Х айнымалысының ішкі түсінігіне түрлендіреді, егер CODE параметрі ноль болса, түрлендіру сәтті өткен, кері жағдайда STжолында қате символдардың позиция номерлерінен тұрады, бұл жағдайда, Х құрамы өзгермейді.

UPCASE (CH) - CHAR типті функция; CH- символды мән үшін бас әріп орнына сәйкес кіші әріп ауыстырады.

Негізгі әдебиет: 1[107-109], 2[135-140], 4[154-165]

Қосымша әдебиет: 4 [57-82].

Бақылау сұрақтары

  1. Қатарларды өңдегенде қандай функциялар пайдаланылады?

  2. Қатарларды өңдегенде қандай процедуралар пайдаланылады?

  3. Символдардан тұратын бір өлшемді массив және қатардың қандай айырмашылығы бар?

  4. Қатардың максималды ұзындығы қандай?

  5. Қатардың бірінші байттық индексі қандай?

7–дәріс. Процедуралар мен функциялар. Қосалқы программаның сипаттамасы. Параметрсіз процедура. Параметрлі процедура

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

Қосалқы программаны пайдалану төмендегідей мүмкіншіліктер береді:

  • негізгі программаның көлемі кішіриеді;

  • негізгі программада пайдаланған айнымалыларды қосалқы программада паидалануға болады.

  • қосалқы программада берілген жады ұяшықтарын ол орындалмай тұрғанда бос ұяшық ретінде (бос айнымалы ретінде) пайдалануға болады;

  • қосалқы программаны пайдалану құрылымдық программалауға мүмкіндік береді.

Паскаль тілінде алгоритмдік тіл тәрізді қосалқы программаның 2 түрі пайдаланады олар процедура (PROCEDURE) және функция (FUNCTION). Бір программада бір немесе бірнеше процедура және функция пайдалануы мүмкін. Паскаль тілінде процедурамен функциялар программаның айнымалылар баяндау бөлімінен (VAR) кейін жазылады.

Процедураның жалпы түрі:

Procedure <процедураның аты> [(<формальді параметрлер тізімі>)];

<Баяндау бөлімі>

BEGIN

<Операторлар бөлімі>

END;

Негізгі программада процедураны шақыру түрі төмендегідей болады:

<Процедураның аты> [(<Нақтылы параметрлер тізімі>)];

Негізгі программада баяндалған атау негізгі және қосалқы программада да пайдаланыла алады. Мұндай атаулар глобальды атаулар деп аталады. Қосалқы программада баяндалған атаулар тек қосалқы программада ғана пайдаланады. Мұндай атауларды локальды атаулар дейді.

Формальді және нақтылы параметрлер үшін келесі талаптар орындалу қажет:

а) формальді және нақтылы параметрлер саны бірдей болу керек;

б) Формальді және нақтылы параметрлердің типтері және орналасу реті бірдей болу қажет.

Турбо Паскаль тілінде формальді параметрлердің үш түрі бар:

  1. Параметр-мән

  2. Параметр-айнымалы.

  3. Параметр-константа.

Мысал:

Program prim;

Var a,b:integer;

Procedure chan (var x,y: integer);

Var z:integer;

Begin

z:=x; x:=y; y:=z;

end;

begin

readln(a,b);

chan(a,b); writeln(a,b);

char(a,b); writeln(a,b);

end.

Мысал:

PROGRAM LAB4;

CONST N=5;

TYPE MATRIX= ARRAY [1.. N, 1..N] OF INTEGER;

VAR A, B, C, D: MATRIX;

I,J: INTEGER;

PROCEDURE MULT(R: MATRIX);

VAR I,J: INTEGER;

BEGIN

FOR I:=1 TO N DO

FOR G:=1 TO DO

READ(R[I,J]);

END;

PROCEDURE MULT(X,Y: MATRIX; VAR Z: MATRIX);

VAR I,J,K,S: INTEGER;

BEGIN

FOR I:=1 TO N DO

FOR J:=1 TO DO

BEGIN

S:=0;

FOR K:=1 TO N DO

S:=S+ X[I,K]*Y[K,J];

C[I,J]:=S;

END;

END;

BEGIN

VV(A);

VV(B);

VV(C);

VV(D);

MULT( A,B,A); MULT(A,C,A); MULT (A,D,A);

FOR I:=1 TO N DO

BEGIN

FOR J:=1 TO N DO

WRITE (A[I,J]:4);

WRITELN;

END;

END.

Негізгі әдебиет:1[161-181]

Қосымша әдебиет: 5[16-19], 6[104-116], 7[187-211].

Бақылау сұрақтары

  1. Глобальды және локальды айнымалылардың айырмашылығы қандай?

  2. Процедура және функция баяндауындағы ерекшеліктері қандай?

  3. Формальды параметрлер дегеніміз не?

  4. Параметр-мәндер мен параметр-айнымалылардың ерекшеліктері қандай?

  5. Формальды және нақтылы параметрлер үшін қандай талаптар орындалу қажет ?

8–дәріс. Процедура-функция. Рекурсия және озу сипаттамасы. Аттарын локализациялау.

Егер нәтиже ретінде бір мән қайтарылатын болса, онда қосалқы программаны функция ретінде жазған қолайлы болады.

Функцияның жалпы түрі

Function <функцияның аты> [(<формальді параметрлер тізімі>)]:<тип> ;

<Баяндау бөлімі>

BEGIN

<Операторлар бөлімі>

END;

Функция нақтылы параметрлердің мәндері берілгеннен кейін өз аты арқылы шақырылады. Сонымен қатар функцияны тікелей өрнектің ішінде шақыруға болады.

Program factor;

Var f:real;

M,k:integer;

Function fact (n:integer) :real;

Var i:integer; p:real;

Begin

p:=1;

for I:=1 to n do

p:=p*I;

fact:=p;

end;

begin

readln(m,k);

f:=fact(m) –fact(k);

writeln(‘f=’,f);

end.

Рекурсивтік функциялар. Егер қосалқы программа оны құрастыратын операторлардың орындалу барысында өзіне қатынас жасайтын болса, онда осындай қосалқы программалар реккурсивті деп аталады.

Рекурсияның кейбір деңгейінде жалған болатын шарт бойынша рекурсивті қосалқы программаның жүктеліп орындалуы рекурсивті қосалқы программаларға қойылатын негізгі талап болып есептеледі.

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

Мысал:

PROGRAM OFACT;

{$$+} {}

VAR n: INTEGER;

FUNCTION FACT(n: INTEGER): REAL;

{}

begin{ FACT}

IF n<0 THEN WRITELN (‘n’)

ELSE IF n=0 THEN FACT:= 1

ELSE FACT:= n* FACT(n-1);

end{FACT};

{ _ _ _ _}

BEGIN {main}

REPEAT

READLN (n);

WRITELN(‘n!=’, FACT(n));

UNTIL EOF;

END.

Негізгі әдебиет:1[161-181]

Қосымша әдебиет: 5[16-19], 6[104-116], 7[187-211], 12[121-134].

Бақылау сұрақтары

  1. Қандай жағдайда қосалқы программа функция ретінде жазалады?

  2. Процедура және функция баяндауындағы ерекшеліктері қандай?

  3. Формальды және нақтылы параметрлер дегеніміз не?

  4. Рекурсивті функцияны іске асыру үшін қандай негізгі талап қойылады?

  5. Рекурсивті функцияның мысалын келтіру керек.

9– дәріс. Жазбалар. Жазбаларды қолдану мысалдары

Жазба- өріс деп аталатын компоненттерден құралған мәліметтердің структурасы (компоненттер саны шектеулі). Өрістің мәліметтері бірдей типке жатады,ал әр түрлі өрістерде олар әртүрлі болуы мүмкін. Жазбалар ең жалпы және икемді тип деп саналады. Әртүрлі элементтерден мәліметтердің структурасын қалыптастыруға болады. Жазбаның массивтерден айырмашылығы:

  • Жазбаны құрастырушы элементтер(өрістер) бірыңғай типтерге жатуы мүмкін.

  • Жазба, құрастырушы элементтерінің (өрістерінің) атауларынан ғана (Өріс идентификаторы) тікелей анықталады .

Тұрақты өрісті жазбалар.

Record типті анықтағанда әр компоненттің типі және идентификаторы көрсетіледі. Record типінің баяндалуының жалпы түрі, типтер бөлімінде былай баяндалады.

TYPE< жаңа тип атауы >= RECORD

Id11, id12,...,id1n: Тип_1 <өрістердің типтері>;

---------------------------

id11.id12,...,idkn:Тип_k;

end;

Var <жазба атауы>:< тип_атауы >;

Мысалы: Паскаль тілінде комплексттік сандар үшін стандартты Type белгіленген. Программа құрылымында комплексттік стандартты қолдану үшін жазба типін (Record) пайдаланған ыңғайлы болады. (жазба типі екі нақты типті (real) өрістерден тұрады.)

Type student=record

Wo, Ma:real;

End;

Var x,y: stydent;

Student- жазба аты.

Wo, Ma- өрістердің айнымалылары.

X,Y-Student типтегі аинымалылар(жазба).

Мысалы: data жазбасы, шектелген типтен анықталған үш өрістен (күні,айы,жылы) құрылған болса:

Type data=Record

den:1..31;

mec: 1..12;

god: 1900..2012;

End;

Var

D: data;

Жазба айнымалысының өрісін программа денесінде пайдаланғанда жазба айнымалысының идентификаторы мен нүктемен бөлектелген өрістің идентификаторы көрсетіледі, мысалы:

X.re:=2.5; X.im:=3.4; D.den:=16; D.mec:=6; D.god:= 1984;

Паскаль тілінде жазба типін басқадай күрделі типтерді ұйымдастыру үшін пайдалануға болады. Мысалы, жазба типіне сәйкес массивті былай анықтауға болады:

Type grup=(st1,st2,st3, st4);

Var a : array[grup] of data;

Мұнда, data жазбасы жоғарыда баяндалған жазба типі. a массиві, grup мүшелерінің туған датасын белгілеуге ыңғайлы, жазбаларынан тұрады.

Жазба өрісінің типін Record типін баяндауға тікелей анықтауға немесе бұрынырақ баяндалған типтің атауымен көрсетуге болады.

Мысалы:

a[st1].den:=25;

a[st1].mec:=10;

a[st1].god:=1992;

With нұсқауы

Бұл нұсқау жазбаның элементтеріне оңай оралуға мүмкіндік береді. Бұл жағдайда жазба аты жалғастыру нұсқауының тақырыбында жазылады да, ал блокта тек элементтердің аты ғана пайдаланылады.

With<жазба типті айнымалы> Do

Begin

<жазба элементтердің аттарын қамтитын нұсқау>

End;

Мысалы: жоғарыда қарастырылған мысалды With арқылы жазу керек:

WITH A [ST1] DO

BEGIN

DEN: =25;

MEC: =10;

GOD: =1992;

END;

WITH операторында бірнеше жазбаларды сипаттау керек болса үтір операциясын қолдануға болады. Бірінің ішіне бірі енген WITH операторларды қысқартып жазу үшін үтір операциясы пайдаланады.

Оператор WITH a, b do ... WITH a do WITH b do ... эквивалентті болады.

Сонымен, ішкі операторда екі жазбаның компоненттерін пайдалануға болады.

Мысалы

TYPE KRUG: =RECORD

RADIUS: REAL;

CENTER: RECORD

X, Y: REAL

END;

END;

VAR K: KRUG;

K айнымалысына радиусы 2.5 тең және центрі (0,1.8) нуктеде орналасқан шеңберге сәйкес болатын мәнін меншіктеу керек

  1. WITH K DO

BEGIN

RADIUS: =2.5;

CENTER.X: = 0;

CENTER.Y: =1.8;

END;

  1. WITH K DO

BEGIN

RADIUS: =2.5;

WITH CENTER DO

BEGIN

X: =0;

Y: =1.8;

END;

  1. WITH K, CENTER DO

BEGIN

RADIUS: =2.5;

X: =0;

Y: =1.8;

END;

Негізгі әдебиет: 1 [104-108]

Қосымша әдебиет: 5 [19-22], 6 [95-99], 7 [321-338]

Бақылау сұрақтары

1. Жазба дегеніміз не?

2. WITH операторын қандай жағдайда пайдаланады?

3. Бірінің ішіне бірі енген жазбалар қандай жағдайда пайдаланылады?

4. Жазбаның компоненттері қалай өңделеді?

5. Массив және жазбаның айырмашылығы қандай?

10– дәріс. Файлдар. Типтелген файлдар.

ДК-дің сыртқы жадысының (қатты дискінің, иілгіш дискетаның, электронды «виртуалды дискінің») аты бар облысын немесе логикалық құрылғы – потенциалды негізді немесе ақпаратты қабылдаушыны файл деп атайды.

Кез келген файлдың үш өзіне тән ерекшеліктері бар: 1) Файлдың аты программаға бірнеше файлдармен бір мезетте жұмыс жасауға мүмкіндік береді; 2) Файл біртипті компоненттерден тұрады. Файлдардан басқа, Турбо Паскальдың кез келген типі компоненттер типі бола алады. 3) Жаңа құрылған файлдың ұзындығы оны жариялауда көрсетілмейді және сыртқы жады құрылғыларының сыйымдылығымен ғана шектеледі.

FILE типін сипаттаудың жалпы түрі:

TYPE NTYPE = FILE OF TC;

мұндағы NTYPE – файлдық типтің идентификаторы.

Файлдық типті немесе файлдық типтің айнымалысын келесі үш тәсілдің біреуімен беруге болады:

NTYPE = FILE OF TC;

NTYPE = TEXT;

NTYPE = FILE;

мұндағы TEXT – мәтіндік файлдардың стандартты типінің аты.

Жариялау тәсіліне байланысты файлдардың үш түрін анықтауға болады:

а) типтелген файлдар (FILE OF … сөзімен беріледі);

ә) мәтіндік файлдар (TEXT типімен анықталады);

б) типтелмеген файлдар (FILE типімен анықталады).

Мысалы:

type

stud = RECORD

FIO : STRING;

ADR : STRING;

GOD : INTEGER;

END;

text80 = file of string [80];

VAR

f1 : file of char;

f2 : text; {f1, f4, f5 – типтелген файлдар,

f3 : file; f2 – мәтіндік файл,

f4 : text80; f3 – типтелмеген файл}

f5 : file of stud;

Жалпы айтқанда, файлдың аты ақпараттарды файлда сақтау тәсілін анықтайды.

Логикалық құрылғылар.

ДК-дің стандартты аппараттық құралдары, яғни пернетақта, дисплей экраны, басып шығарушы құрылғы (принтер) және енгізу-шығарудың коммуникациялық каналдары Турбо Паскальда логикалық құрылғылар деп аталатын арнайы атаулармен анықталады. Олардың барлығы Турбо Паскальда потенциалды негіздері немесе мәтіндік ақпараттарды қабылдауыштар ретінде қарастырылады .

CON – консоль-клавиатураны немесе дисплей экранын анықтайтын логикалық атау.

PRN – принтердің логикалық атауы. Егер ДК-ге бірнеше принтер қосылса, оларға қатынау LPT1, LPT2 және LPT3 логикалық атаулары бойынша жүзеге асырылады.

AUX – ДК-ді басқа машиналармен байланыстыру үшін қолданылатын коммуникациялық каналдың логикалық атауы. Коммуникациялық канал мәліметтерді беруді және қабылдауды жүзеге асыра алады. ДК құрамында COM1 және COM2 логикалық құрылғылардың атаулары берілетін екі коммуникациялық канал бар.

NUL – «бос» құрылғының логикалық атауы. Бұл құрылғы барлығынан бұрын жөндеу режимінде қолданылады және шексіз сыйымдылықтағы ақпараттарды қабылдаушы-құрылғы ретінде айтылады. NUL-ге қатынаған кезде ақпарат көзі ретінде файлдың соңы EOF белгісі беріледі. Логикалық құрылғыны файлдық айнымалымен байланыстыру ASSIGN процедурасымен жүзеге асырылады. Файлдық айнымалы файлдың атымен ASSIGN стандартты процедурасына келесі түрде қатынаудың нәтижесінде байланысады:

ASSIGN (<ф.айн.>, <файлдың аты немесе логикалық құрылғы>),

мұндағы <ф.айн.> - файлдық айнымалы (программада файлдық типтің айнымалысы ретінде жарияланатын дұрыс идентификатор);

<файлдың аты немесе логикалық құрылғы> - файлдың атынан немесе логикалық құрылғыдан тұратын мәтіндік өрнек.

Файл атының алдына фалға жол көрсетілуі мүмкін: дискінің аты және/немесе ағымдағы каталог аты және жоғарғы деңгейдегі каталогтардың аттары.

Файлдың инициациясы

Турбо Паскальда файлдан ақпаратты оқуға, файлға ақпаратты жазуға және ақпаратты бір уақытта оқып-жазу үшін файлды ашуға болады.

Файлдан ақпаратты оқу үшін RESET стандартты процедурасының көмегімен инициалданады:

RESET (<ф.айн.>);

мұндағы <ф.айн.> - логикалық құрылғы немесе файлмен ASSIGN процедурасы арқылы байланысқан файлдық айнымалы.

Осы процедураны орындау барысында дискілік файл немесе логикалық құрылғы ақпаратты оқуға дайындалады. Нәтижесінде осы файлмен байланысқан арнайы айнымалы-көрсеткіш файлдың басына, яғни реттік нөмірі 0 болатын компонентті көрсетеді.

REWRITE (<ф.айн.>) стандартты процедурасы алдын-ала файлдық айнымалымен (<ф.айн.>) байланысқан логикалық құрылғыға немесе файлға ақпаратты жазу үшін файлды инициалдайды.

REWRITE процедурасы арқылы бұрын ұйымдастырылған дискілік файлға ақпарат жазуды инициалдауға болмайды: бұл процедура орындалғанда ескі файл жойылады (бұл туралы ешқандай хабарлама болмайды). Ал жаңа файл ақпарат қабылдауға дайындалады және оның көрсеткіші 0-ге тең мәнді қабылдайды.

APPEND (<ф.айн.>) стандартты процедурасы бұрын болған мәтіндік файлды кеңбұрын болған мәтіндік файлды кеңейту үшін оған ақпаратты жазуға файлды инициалдайды, бұл кезде файлдың көрсеткіші файлдың соңына көрсетеді.

CLOSE (<ф.айн.>) – файлды жабу үшін қолданылады (ASSIGN процедурасы арқылы файлдық айнымалы және файлдың атымен орнатылған байланыс сақталады).

Файлды инициалдау дегеніміз осы файл үшін мәліметтерді беру бағытын көрсетуді білдіреді.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]