K – ішкі цикл параметрі.
⇐ ПредыдущаяСтр 6 из 6 Program M2 (input, output); Var F, J, K, z: integer; Begin For F:=1 to 5 do For J:=2 to 12 do Begin While K<11 do Begin Z:=2*F+2*J+K; Writeln(‘F=’, F, ‘J=’, J, ‘K=’, K, ‘z=’, z); K:=K+1; End; End; End. Өзін тексеру сұрақтар 1. Циклдық алгоритм дегеніміз не? 2. Каково назначение и формат записи оператора цикла с предусловием? Как представить в виде блок-схемы работу оператора цикла с предусловием? 3. Каково назначение и формат записи оператора цикла с постусловием? Как представить в виде блок-схемы работу оператора цикла с постусловием? 4. Каково назначение и формат записи оператора цикла с параметром? Как представить в виде блок-схемы работу оператора цикла с параметром?
Әдебиет: (1) бет. 71-80
Дәріс №8. Ішкіпрограммалар
Дәріс жоспары 1. Ішкі программа ұғымы. 2. Процедура және Функциялар. 3. Процедура құрылымы, оның сипаты және шақыру операторы. 4. Формальды және нақтылы параметрлер, олардың сәйкестік ережелері. 5. Амалдарды өзгерту - параметрлер – мәндер. 6. Нәтиже алу - параметрлер - айнымалылар. 7. Функцияның құрылымы. 8. Функцияны шақыру. 9. Процедура және функция арасындағы айырмашылық (бір ғана шешім алу). 10. Айнымалылар сатысы.
Программада қолданылатын стандартты функциялар мен процедуралар бар, мысалы, процедуралар:
1. Параметрлер-мәндер (енгізу параметрлер). 2. Параметрлер-айнымалылар(шығару параметрлер). 3. Параметрлер-процедуралар. Параметрлер-мәндер былайша сиптатталады: Функция мәтіні мына бөлімде орналасқан: function. Функцияның сипаты: function <аты>(<формальды параметрлер тізімі>):<тип>; label const type var procedure function begin <операторлар>; <имя>:= <нәтиже>; end; Өзін-өзі тексеру сұрақтары немесе тестер
1. Процедураның құрылымы қандай? Процедура қандай бөлімде сипатталады? 2. Негізгі программада процедураны қалай шақыруға болады? 3. Формальды және фактілік параметрлер деген не? 4. Формальды мәндер - параметрлер және формальды айнымалы – параметрлер деген не? Негізгі программадан параметрлердің берілуі қалай орындаладыжәне керсінше мәндер - параметрлер мен айнымалы – параметрлер пайдаланған жағдайда? Дәріс №9. Деректердің құрылымданған типі: массивтер. Массивтер Қарапайым типтер қатарына жататын стандартты (Integer, real) және қолданушылар (тізбектелген тип) типтерінде бір айнымалыны сақтау үшін, негізінен компьютер жадысының бір ғана ұяшығы қолданылады. Бірақ көпетген программаулау есептерінің шешімін табу барысында әрбір элементтің деректерін жеке айнымалыға сақтау орнына, оларды тізбектеп бір жерде сақтау анағұрлым тиімді болып табылады. 1. Бір өлшемді массивтер Бір типтес берілгендерден құралып, барлық элементтеріне бір ортақ атау берілген жиынды массив деп атаймыз. Массив құрылымдық типтер қатарына жатады. Массив элементтері нөмірленеді. Массивтің әрбір элементіне индексін көрсету арқылы жұмыс істеуге болады. Массивке мысал ретінде векторларды қарастыруға болады. Егерм массивке кестелік берілгендер жазылса (матрица), онда элементтері екі индекс бойынша нөмірленеді. Массив сипаттамалары: · Типі – массив элементтерінің жалпы типі; · Көлемі – массив индексінің саны; · Шектелімі - әрбір индекстардің шектеу бойынша сәйкестігі; · Пішімі – көлем және шектеулер жиындары. Массивтер элементтерімен жұмыс жасау барысында, массив атауынан кейін міндетті түрде тік жақшаға алынған индекс көрсетіледі. Индекс ретінде сандар қолданылады. Жалпы жазылу түрі: Массив типінің атауы = array [индекс типі] of элемент типі; Var
Массив атауы: массив типінің атауы; Мысалы: Type GRUP = array [1…8] of integer;
Берілген массивтің кез келген элементтеріне арифметикалық операцияларды, салыстыру және меншіктеу операторларын қолдануға болады. Сонымен қатар, массивтерге Turbo Pascal программалау тіліндегі айнымалы типіне сәйкес келетін барлық стандартты процедуралар және функциялар қолданылады.
Өзін-өзі тексеру сұрақтары 1. Шектелген типті айнымалылар қалай сипатталады? 2. Диапазондық типті айнымалылар қалай сипатталады? 3. Массив деген не? 4. Массивтің өлшемділігі деген не? 5. Программада бірөлшемді, екіөлшемді массивтер қалай сипатталады? 6. Массив элементіне қалай қарасады? 7. Массивті қалай толтыру керек?
Массивті экранға шығару Массивтер
2. Бір өлшемді массивтер Бір типтес берілгендерден құралып, барлық элементтеріне бір ортақ атау берілген жиынды массив деп атаймыз. Массив құрылымдық типтер қатарына жатады. Массив элементтері нөмірленеді. Массивтің әрбір элементіне индексін көрсету арқылы жұмыс істеуге болады. Массивке мысал ретінде векторларды қарастыруға болады. Егерм массивке кестелік берілгендер жазылса (матрица), онда элементтері екі индекс бойынша нөмірленеді. Массив сипаттамалары: · Типі – массив элементтерінің жалпы типі; · Көлемі – массив индексінің саны; · Шектелімі - әрбір индекстардің шектеу бойынша сәйкестігі; · Пішімі – көлем және шектеулер жиындары. Массивтер элементтерімен жұмыс жасау барысында, массив атауынан кейін міндетті түрде тік жақшаға алынған индекс көрсетіледі. Индекс ретінде сандар қолданылады. Массивтерді қолдану үшін оларды типтер (type) немесе айнымалыларды сипаттау (var) бөлімінде хабарлану қажет. Жалпы жазылу түрі: A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]
Берілген массивтің кез келген элементтеріне арифметикалық операцияларды, салыстыру және меншіктеу операторларын қолдануға болады. Сонымен қатар, массивтерге Turbo Pascal программалау тіліндегі айнымалы типіне сәйкес келетін барлық стандартты процедуралар және функциялар қолданылады. Массивтерді программада қолдану үшін Turbo Pascal програмаллау тілінде оларды бірден var бөлімінде сипаттау жолы қарастырылған. Жалпы жазылу түрі: Var Массив атауы: array (индекс типі) of элемент типі; Мысалы, бөлшек сандарға арналған он сегіз элементтен тұратын GR массивін сипаттау: Var GR: array [1...18] of real; Берілген тоғыз элементтен тұратын А масчсивіне бөлшек сандар енгізіп, оларды дисплей бетіне ретімен шығару программасын қарастырайық: {$ R+} PROGRAM MASSIV; {Программа атауы} Type { Типтерді сипаттау бөлімі } Өзін тексеру сұрақтары 1. Екі өлшемді массивті сипаттау? 2. Екіөлшемді массив элементіне қатысу? 3. Екі өлшемді массивті толтыру? 4. Екіөлшемді массивті экранға шығару?
Дәріс №11. Деректерді сұрыптау әдістері Массивтің минималды және максималды элементтерін анықтау Ең алдымен массивтің ең кіші немесе ең үлкен элементі деп жорамалмен 1-ші элементі алынады. Ары қарай массивтің ең кіші немесе ең үлкен элементін табу үшін цикл орындалады, яғни сол элемент басқа элементтермен салыстырылады. Егер ағымды элемент басқаларға қарағанда ең үлкен болса, онда сол элемент ізделінді элемент болғаны, басқа жағдайда ең үлкен элемент өзгеріссіз қалады. Оны математикалық формула түрінде былай жазуға болады
Сәйкесінше ең кішіні табу: Сұрыптау. Қарапайым таңдау әдісімен сұрыптау. Қарапайым ауыстыру әдісімен сұрыптау. Тікелей қосу әдісімен сұрыптау. Араласу әдісімен сұрыптау. Бөлу әдісімен сұрыптау. (Хоар сұрыптауы). Сұрыптау – бұл қандай да бір жиынның элементтерін кему немесе өсу ретімен ауыстыру процесі. Массивтерді сұрыптау алгоритмдері бірнешеу. Тиімділік критерийі бойынша қарапайым және жақсартылған болып бөлінеді. Қарапайым:
Жақсартылған әдіс
Тікелей таңдаулы сұрыптау a1, a2, …, an сандар берілген, соларды азаюы бойынша орналасатындай етіп орналастыру керек. Ол үшін массивтегі элементтен ең үлкен элемент алынып, ол бірінші орынға қойылады, ал бірінші элемент жанағы ең үлкен элементтең орнына қойылады. Сонан соң. Екіншіден басталыр әлгі процедура қайталанады. Қарапайым айырбастау сұрыптауы a1, a2, …, an сандар берілген, соларды өсуі бойынша орналасатындай етіп орналастыру керек. Ол үшін массивтегі 2 көрші элемент салыстырылып, егер ai> ai+1 болса, ауыстыру орындалады. Осылайша, барлық элементтер өсу ретімен орналасқанша орындала береді. 1. Массивтің максималды (минималды) элементін табу алгоритмі? 2. Массивті сорттау деген не? 3. Тікелей таңдау әдісі бойынша массивті сұрыптау алгоритмі? 4. Қарапайым айырбастау әдісі бойынша массивті сұрыптау алгоритмі? Әдебиет: (1) бет. 140-153
Апта Дәріс №12. Деректер типі – Жазбалар. Массив анықтамасында айтылғандай, массив дегеніміз құрылымына және қолдану тәсіліне байланысты, бір типті нөмірленген тізімдідер. Егер әртүрлі типтегі мәліметтер берілген болсын. Осы тізімнен белгілі бір жлыдар аралығында туған оқушыларды сұрыптап бөліп алу керек болсын. · атауы; · саны; · бағасы; · сертификаттың болуы және т.б. Бұл мысалдағы шамалар типі мынадай: · атауы – string, · саны – integer, · бағасы – real, · сертификаттың болуы – boolean. Осындай объектілерді сипаттауда Паскальда –жазбалар қолданылады. · Жазба атауы Тізім · Өрістің атауы Фамилия Аты Туған жылы · Өрістер мәні Ахметов Алдияр 1980 Жазбаны өңдеу элементар объектә түрінде шығады. Мұндай объект типі – record (жазба) деп аталады. Олай болса, мәліметтердің типтеріне байланысты шектеулер алынып тасталады. Жазбаларды сипаттау үшін, оның атауы, берілген өрісте сақталатын мәліметтердің атауы және типі көрсетілуі керек. Жазбалардың жалпы түрде сипатталуы келесідегідей: Type<жазба атауы>=Record <2 өріс>:<2 тип>; ;
Егер өрістерді былай берсек: № - N Атауы – Name Саны – K Бағасы – C Шыққан жылы – G Онда сипатталу мынадай болады: type T1=record N,K,G:integer; Name:string; C:real; end; var X:T1; Өзін тексеру сұрақтары 1. Жол деген не? 2. Программада жолдық айнымалыларды қалай сипаттайды? 3. Жолдық өрнек деген не? 4. Жолдық деректермен қандай амалдар жасауға болады? 5. Жолдың жеке символына қалай қарасуға болады? 6. Жолдармен жұмыстың қандай процедуралары мен функциялары бар? Әдебиет: (1) бет. 130-140
Дәріс №13. Деректердің типтері - файлдар. File (ағылшын тілінен аударылғанда) бума, іс қағаздар жинағы, сонымен қатар ақпаратты сақтау деген мағынаны білдіреді. Borland Pascal-да файлдарды екі негізгі белгісі бойынша топтастыруға болады: файлдың типі бойынша (оның логикалық құрылымына) файл элементтеріне қатынау тәсілі бойынша Типтері бойынша файлдар шартты тұрде үш түрге бөлінеді: мәтіндік файл; типтік файл; типтік емес файл. Біз көбінесе мәтіндік және типтік файлдармен жұмыс істейміз. Қатынау тәсілі бойынша файлдар келесідей бөлінеді: Тікелей қатынау файлдары Кезекпен қатынау файлдары Олардың айырмашылығы тікелей қатынау файлдарында арнайы процедуралар және функцияларды пайдалана отырып, мәліметтерді, олардың файлдағы орнына тәуелсіз, оқуға немесе жазуға болады, ал кезекпен қатынау файлында оның ортасында немесе соңында тұрған мәліметті оқу үшін, оның алдындағы мәліметтердің барлығын оқуға тура келеді. Мәтіндік файлдар кезекпен қатынау файлдарына жатады, ал типтік файлдар тікелей қатынау файлдарыа жатады. Мәтіндік файлға мәліметтер жазу Ең қарапайым файл типі мәтіндік файл болып табылады. Бұл файлдағы мәліметтер типтік және типтік емес файлдардағыдай машиналық кодта емес, сан, әріп және басқа пернетақта символдары түрінде (ASCII кодында) беріледі. Сондықтан мұндай файлдар мазмұны оңай қаралады, оңай өзгереді және оларды кез келген мәтіндік редактордың, соның ішінде Borland Pascal ортасының да көмегімен өзгертуге болады. Өздеріңіз білетіндей 2.1.2.-ні қара, мәтінді теру кезінде жаңа жолды енгізу үшін "Enter” пернесін басу керек, осы кезде арнайы код гинерацияланады—ол жол соңы коды, ал файлды сыртқы сақтау құрылғысына жазған кезде де арнайы код гинерацияланады—ол файл соңы коды. Мәтіндік файлды оқығанда бұл кодтар көрінбейді. Келесі есепті шешіп көрейік: Пернетақтадан бірнеше сандар енгізіп, оларды "mayFile.in” атты мәтіндік типтегі файлға жазу керек. Есепті кезеңдерге бөлейік: пернетақтадан мәліметтерді енгізу оларды "mayFile.in” атты файлға жазу керек. Бірінші кезеңді орындау үшін: пернетақтадан енгізілетін сандардың мөлшерін (массив өлшемін) көрсету керек Сан мөлшерін білген соң, параметрлі циклді қолдану арқылы массив элементтеріне осы сандардың нақты мәндерін меншіктейміз Осы әрекеттерді орындау үшін қолданылатын айнымалыларды сипаттаймыз. Айталық, санымыз 100-ден көп емес және олар басқа да процедураларда қолданылатындықтан, оларды ауқымды айнымалыларды баяндау блогында сипаттаймыз. рrogram Misal_F1; var i, SanMolcher: integer;
Мәліметтерді енгізу процедурасы келесі түрде болады: procedure init; begin readln (SanMolcheri); for i:=1 to SanMolcheri do begin readln(San[i]); procedure work; begin var Одан кейін біз программаға, "мәтіндік” типтегі FileOut атты айнымалының, біздің "mayFile. in” атты нақты файлмызды белгілейтінін көрсетуіміз керек. Ол үшін assign(Name Var, Name File)процедурасы қолданылады. Name Var—бұл файлды белгілеу үшін берілген айнымалы аты, біздің жағдайда Name Var—дың орнына File Out сөзін жазасыз. NameFile—бұл біз жұмыс істейтін файлдың аты, біздің жағдайда”mayFile.in”. Файл аты мен оның кеңейтілуінен басқа орналасқан орнына қарай сипатталатыны да белгілі. Мысалы,”c,\bp\bin\MyFile.in”. Ал егер толық аты берілмеген жағдайда, үнсіз келісім бойынша сіздің программаңыз орналасқан ағымдағы каталог қолданылады. Енді сіз берілген файлды ашып, оған мәліметтер жазылатындығын көрсетуіңіз керек. Ол үшін rewrite (Name Var)процедурасы қолданылады. Мұндағы, Name Var-бұл файлды белгілеу үшін берілген айнымалы аты, біздің жағдайда Name Var—дың орнына FileOut атауы жазылады. rewrite( Name Var) процедурасы—файлды жазу үшін ашады және көрсеткішті файлдың басына орналастырады. Енді мәліметтерді файлға жазуға бәрі дайын. Ол үшін бұрынан белгілі Write() және Write() процедураларын қолданамыз. Жазулар экранға емес файлға жазылуы үшін, мәліметтерді шығару бағытын көрсетеміз. Яғни, жақшаның ішіндегі мәліметтерді жазатын айнымалы атауының алдында, бізді файлмен байланыстыратын assign() процедурасындағы айнымалы атуын көрсетеміз. Айталық, берілгендерді шығыс файлына бір жолға жазу керек болсын, бұл жағдайда бірінші мән ол енгізілетін сандардың мөлшері болады. Жаңа жолға көшу болмайтындықтан,Write() процедурасын қолданып, бастапқыда файлға SanMolcheri айнымалысын мәнін жазамыз да, содан кейін параметрлі циклді пайдаланып енгізу процедурасында енгізілген сандарды жазамыз. Барлық мәліметтер файлға жазылып болған соң, файлды жазу керек. Ол Close() процедурасының көмегімен орындалады. Close(Name Var) процедурасы—файлдың соңына, файл соңы белгісін жазып, оны жабады. Егер файл Close() процедурасымен жабылмаған болса, онда мәліметтер сақталынбайды. Мәліметтерді файлға жазу процедурасы қандай болатынын қарастырып көрелік: procedure exi; var for i=1 to SanMolcheri do write(FileOut,San[i]); begin init; work; exi; end. Осы программаны ‘Misal_F1’ атымен дискіге жазып, оны орындауға жіберіңіз. Программа жұмысын аяқтағаннан кейін, BP редакторының көмегімен біздің программамыз құрған `mayFile.in` файлын ашып, оның мазмұнын көріңіз. Өкінішке орай сандар файлда бос орынсыз тіркесіп жазылған болып шығады. Мұндай жазбадан қандай сандар жазылғанын анықтау қиындық тудырады. Бұл жағдайды қалай түзетуге болады? Ол үшін, сандары бір бірінен дәл ажыратудың екі мүмкіндігі бар: а.әрбір мәнді бос орын (``)белгісі арқылы бөліп жазу в.әрбір мәнді жаңа жолға жазу (баған бойынша). Бірінші жағдайда енгізілетін айнымалы атауынан кейін бос орын (``) белгісін қоямыз. for i:= to SanMolcheri do write(FileOut,San[i],``); writeln(FileOut,SanMolcheri); writeln(FileOut, San[i]); Мәтiндiк файлдан мәлiметтердi оқу Өткен тақырыптарда сіздер, мәліметтерді мәтіндік файлға жазуды үйреніңіздер. Енді оларды қайтадан файлдан қалай оқуға болатынын қарастырамыз. Ол үшін `mayFile1/in` файлын пайдаланамыз. Мәліметтерді файлға жазу кезіндегідей, біздің файлмызды байланыстыратын айнымалыға атау беруіміз керек. Айталық, ол атау Fileln болсын, содан кейін біз оны мәтіндік файл ретінде сипаттауымыз керек. Бұл айнымалыны біз енгізу процедурасында пайдаланатын болғандықтан, сол процедураның жергілікті айнымалысы ретінде сипаттаймыз. var `mayFile1.in` атауымен берілген нақтылы файлмызды белгілейтіндігін көрсетуіміз керек. Ол үшін assing(NameVar,NameFile)-процедурасын қолданады. Енді файлдан мәліметтерді оқу үшін, берілген файлды ашуымыз керек. Ол үшін, reset(NameVar)—процедурасында қолданады, мұндағы NameVar-сіздің файлды белгілеуге берген айнымалыңыздың атауы, біздің жағдайымызда, ол NameVar-Fileln. Reset(NameVar)-процедурасы, мәліметтерді оқуға файлды ашады және курсорды файлдың басына орналастырадв. Егер ондай жоқ болса, қателік туралы хабарлама береді. Енді мәліметтерді файлдан оқуға барлығы дайын болды. Ол үшін өзімізге бұрынан таныс Read() және Readln() процедураларын пайдаланамыз. Мәліметтерді оқу пернетақтадан емес, файлдан жүзеге асу үшін, мәліметтерді оқудың жолын көсетеміз. Яғни, жақшалардың ішіне, assing()- процедурасының көмегімен біздің файлмызды байланыстырып тұрған, айнымалының атауын көрсетеміз. `MayFile.in`файлындағы бірінші сан, файлдағы барлық сандардардың мөлшерін көрсетеді. Сондықтан, алдымен файлдан Sanau айнымалысының мәнін оқытамыз,содан кейін параметрлі циклді қолданып, файлдағы сандардың мәндерін оқимыз. Мәліметтер толық оқылып болған соң, өзімізге таныс Close() процедурасын пайдаланып, файлды жабу керек. procedure lnit; var read(Fileln,San[i]); procedure lnit; var Fileln:text; begin assing(Fileln,`mayFile5.in`); reset(File); readln(Fileln,JolSany,BaganSany); for:=1 to JolSany do read(Fileln,San[i,j]); close(Fileln); Егер мәтіндік файлдардағы жазбалар саны белгілі болса, онда мәліметтерді оқу онша қиын емес. Ал, егер мәтіндік файлдағы жазбалар саны белгісіз болса ше, онда не істейміз? Егер сізге орындалатын әрекеттердің саны белгісіз болса, онда қайталану саны белгісіз цикл операторларын қолдануға болатындығын білесіз.2.8.2 тақырыбында мәтіндік файлдардың қасиеттерін сипаттаған болатынбыз, онда файлдың соңына файл соңын көсететін белгі код қойылатыны жайлы айтылған. Олай болса, мәліметтерді оқу файлдың соңы табылғанша жалғаса береді. Егер файл бос болса, яғни онда ешқандай жазба жоқ, онда одан мәліметтерді оқуға болмайды. Осы айтылғандарды тұжырымдай келе, алғы шарт циклін қолдану керек екеніне көзіміз жетті. Файл соңы белгісін анықтау үшін, EOF(Name Var)-процедурасын қолданады ағылшын тілінде EndOf File—файл соңы деген сөзден қысқартылып алынған. Жақшаның ішіне assing() процедурасында көрсетілген файлдың нақтылы атымен байланыстыратын айнымалы атауы жазылады. EOF(Name Var)-процедурасының мәні, False(жалған)-болады егер файл соңына жетпеген болса Ture(ақиқат)-болады, егер файлдың соңы анықталған болса. Олай болса, алғы шарт циклін қолданғанда Not EOF(Fileln)-шарты әзірше ақиқат болса, онда цикл орындала береді, яғни файл соңы анықталғанша. Бұл жағдайда мәліметтерді енгізу процедурасы келесідей болады: procdure lnit; var Fileln:text; assing(fileln,`mayFile1.in`); reset(Fileln); Sanau:=0; Begin inc(Sanau); read(Fileln,San[i]); close(Fileln); Var Sanau: byte; Жазбалар саны белгісіз файлдан мәліметтерді оқу жұмысының дұрыстығын тексеру үшін, оқылған мәліметтер массивін экранға баған түрінде шығарамыз: procedure exi; var begin begin Енді екі өлшемді массив мәліметтерін файлдан қалай оқуға болатындығын қарастырыралық. Жоғарыда айтылғандай мәліметтерді файлдан оқу, оның файл соңын анықтайтын белгісіне байланысты екен. Бірақ екі өлшемді массивтерді жазғанда оның элементтері жол бойынша және баған бойынша жазылады. Сондықтан файлдан мәліметтерді оқығанда, алдымен алғашқы жол бойынша файл соңы белгісі анықталады. Жолдағы мәліметтер толығымен оқылып болған соң келесі жолды оқуды бастау керек. Мәтіндік файлдар қасиеттерін қарастырғанда айтылғандай, онда әрбір жол, жол соңы белгісімен кодымен аяақталады. Осы белгіні анықтау үшін стандартты EOLn(Name Var) процедурасын қолданады. EOLn(), ағылшын тілінде End of length жол соңы сөзінің қысқартылған түрі. Жақшаның ішіне assing() процедурасында көрсетілген файлдың нақтылы атымен байланыстыратын айнымалы атауы жазылады. EOLn(Name Var)-процедурасының мәні, False(жалған)-болады, егер жолдың соңына жетпеген болса, Ture(ақиқат)-болады егер жолдың соңы анықталған болса. Олай болса мәліметтерді оқу жалғаса береді егер Not EOF(Fileln) шарты ақиқат болса, яғни жол соңы анықталғанша. Бұл жағдайда мәліметтерді оқу процедурасының түрі келесідей болады: procedure lnit; var {айнымалы атауын мәтiндiк файл түрiнде сипаттау} Fileln:text; assing(fileln,`mayFile5.in`); reset(Fileln); Sanau Jol:=0; {массив элементтерiн жол бойынша оқу} while Not EOF (Fileln)do begin inc(Sanau Jol); {бағанда санауыштың бастапқы мәнi} SanauBagan:=0; while Not EOF (Fileln)do begin inc(Sanau Bagan); {массив элементтерiн оқу} read(Fileln, San[i,j]); end; read(Fileln, San[i,j]); end; close(Fileln); Келесі есепті қарастырып көрелік: Мәтіндік файлға төрт таңбалы 50 сан жазу керек. Әрбір сан жеке жолдарға жазылатын болсын. Нәтижесіндегі файлдың өлшемі қандай болады? Оны жуықтап бағалап көрелік. Әрбір таңба 1 байт орын алады. Ондай таңбалардың саны 50×4=200. Мәтіндік файлдарға берген анықтама бойынша әрбір жолдың соңында файл соңы белгісі болғандықтан, файл өлшемі 250 байттан асып кетеді. Бұл мәліметтерді кіші өлшемдегі файлдарда сақтауға бола ма? Біздің программамыз мәліметтерді өңдей алуы үшін, біз оған алдын ала оперативті жадыдан белгілі бір орын бөлуіміз керек. Жадыдан бөлінетін орынның өлшемі мәліметтердің типіне байланысты болғандықтан, бір элементті сақтау үшін, integer типті элементтерге 2 байт, byte типті бір элементке 1 байт орын бөлінеді. Мұндай амалдарды мәліметтерді файлда сақтау кезінде қолдануға бола ма? Болады екен. Типті файл деп аталатын арнайы файлдық типтер бар. Типті файл – барлық элементтері бір типті мәліметтер болып келетін файл түрі. Типті файл элементтері файлдық типетен басқа кез-келген тип бола алады. Әр элементті файлға жазу үшін, мәліметтердің типіне байланысты, міндетті белгіленген мөлшерде орын бөледі. Типті файлдарды смпаттау бөлімінде ашу үшін, мәтіндік файлды смпаттағандай, файл мәліметтерді смпаттайтын тип жазылады. <файл атауы>:file of<мәліметтер типі> Біздің жағдайымызда: FileOut:File of interger Бұл жазу, берілген файлдағы мәліметтер – 32768-ден 32767 аралығында жататын бүтін сандар екенін көрсетеді. Сонымен қатар, типті файлдармен жұмыс істегенде де, assign() - процедурассының көмегімен нақтылы файл аты мен байланыстыратын атауды көрсетеміз. Assign(<файл атауы>,<файлдың нақты атауы>) Біздің жағдайымызда: Assign(FileOut,’may.dat’) Типті файлдармен жұмыс жасағанда мәтіндік файлдардағы секілді оларды жазуға және оқуға ашуға болады. Ол үшін стандартты функциялар қолданады: Rewrite(<файл атауы>) – процедурасын файлды жазуға ашады және курсорды файлдың басына орналастырады. Типті файлдарға мәліметтерді жазу write() процедурасы арқылы жүзеге асырылады. Ол мәтіндік файлдардағы write() процедурасына ұқсас. Алайда write() процедурасын типті файлдарда қолдануында біршама өзгешелік бар. Әрекетті орындау кезінде көрсеткіш келесі жазу блогына көшеді. Типті файлдарда writeln() процедурасын қолдану қателік көрсетеді. Типті файлдарға writeln() процедурасын қолдануға болмайды. Типті файлдармен жұмыс аяқталған соң Close<файл атауы>) – процедурасы көмегімен файл жабылады. Енді тақырып басында берілген есепті шешуді жалғастырайық. 2.8.2 тақырыбындағы Мisal_F1 мәліметтерді шығару программасына келесідегідей өзгертулер енгіземіз: Procedure Exi; Var I:integer; Begin Rewrite(FileOut); Write (FileOut, San[i]); Close(f); Типті файл. Типті файлдарға мәліметті оқу Титі файлдар тікелей қатынау файлдарына жатады, ол оның қатал ұйымдастырылғанына байланысты. Бұрында айтып өткеніміздей, типті файлдың компоненттері біркелкі, қатаң тәртіптегі көлемде орын алады. Сонымен тұтас блок бар делік және оған қатынауды ұйымдастырғанда, оған олардың орналасуы жайлы қосымша ақпараттарды сақтау қажет емес. Типті файлдардан мәліметтерді оқуға арналған негізгі проуедураларды қарастырамыз. Типті файлдармен жұмыс жасар алдында, мәтіндік файлдардағыдай, файл атауын жариялау және файлдағы мәліметтердің типін көрсету керек, нақтылы файл атауын байланыстыратын айнымалы атауын сипаттауымыз кереек (2.8.5 тақырыбын қараңыз). Reset(<файл атауы>) – процедурасы файлдф оқуға ашады және көрсеткішті файлдың басына орналстырады. Типті файлдан мәліметтерді оқу үшін read() процедурасын қолданады. Берілген процедураның жұмысы кезінде, блоктан мәліметті оқыған соң, көрсеткіш автоматтты түрде келесі жазбаға ауысады. Егер көрсеткіш соңғы жазбаның соңынан тұрса, онда программа орындалуында қателік болады. Бұл қиындықтан шығу үшін FileSize() функциясын қолдануға болады. FileSize(<файл атауы>):longint – функциясы файлдағы компоненттер санын анықтайды. Яғни, бізге файлдағы барлық мәліметтерді оқу керек болса, оқу процедурасын FileSize() рет орындауымыз керек. Мisal_F8 программасымен құралған типті файлдан мәліметтерді оқудың программасының мәтінінен үзінді келтіреміз: Procedure Init; Var I, Sanau: integer; San:array[1..100] of integer; begin reset (FileInput); Sanau:=FileSize(FileInput); For i:=1 to Sanau do Read(FileInput, San [i]); Close(FileInput)’ Көрсеткішті қажетті мәліметті оқуға қою үшін, Seek() – процедурасын қолданады. Оның түрі келесідегідей болады: Seek(<файл атауы>, <жазбаның нөмері>); Сонымен қатар типті файлдарда нөмірлеу нөлден басталатыны есте ұстау керек, яғни бірінші лементтің нөмері "Нөл". Олай болса, біз көрсеткішті үшінші элементті оқуға көшіру үшін, Seek() - процедурасын қолдануды ескеруіміз керек. Мысалы: Seek(FileInput, 2); немесе
Өзін тексеру сұрақтары 1. Файл деген не? 2. Файлдардың қандай ерекшеліктері бар? 3. Файлдарды деректерді өңдеуге қолданудың қандай артықшылықтары бар? 4. Ішкі және сыртқы файлдар деген не? 5. Что такое файлы последовательного и прямого доступа? 6. Типтелген, типтелмеген, мәтіндік файлдар деген не? 7. Программада типтелген файлдарды қалай сипаттайды? 8. Типтелген файлдармен жұмыс істеудің қандай процедуралары мен функциялары бар? 9. Программада мәтіндік файлдарды пайдалануды қалай сипаттайды? 10. Мәтіндік файлдармен жұмыс істеудің қандай процедуралары мен функциялары бар? Әдебиет: (1) бет. 158-167
Тақырып 12. Модульдер ұғымы · System · Dos · Overlay · Graph · Crt · Printer және т.б. Модульдер System, Dos, Overlay, Crt, Printer біріктірілген және Turbo.tpl файлында сақталады. Graph модулі Graph.tpu файлында сақталады. Dos модулі көбісі MS-DOS командаларына эквивалентті стандартты процедуралар мен функцияларды қамтиды. Overlay модулі Оверлейлер жүйесін қолдауды қамтамасыз етеді. (Оверлей – арнайы программа, негізгі программаға мәндер беріп тұрады) Printer модулі ақпаратты баспаға басып шығаратын баспа құрылғысының драйверін сақтайды және баспаға шығаруды ұйымдастырады. Graph модулі монитор экранының графиктік режимде жұмыс істеуін қамтамасыз етеді. Процедураны немесе қандай да бір модульді пайдалану үшін оны программаға қосу қажет. Бұл uses бөлімінде орындалады, оның түрі мынадай: Стандартты модульдер. CRT модулі. GRAPH модулі. 1. Мәтіндік режимді қою Мәтіндік режим компьютердің кодтық кестесінің символдарын көрсету қызметін атқарады және жолдардағы символдар саны мен экрандағы жолдар санымен сипатталады. Мәтіндік режим TextMode(M) процедурасымен орнатылады, мұндағы М – режим. 2.Курсорды басқару Курсордың орны жолдың нөмірі мен курсордың координаталары ретінде есептеуге болатын жолдағы позициясымен анықталады. 3. Түсті басқару Келесі үрдістерді пайдалануға болады: TextColor(C); енгізілетін символдардың түсін қою үшін. TextBackGround(C); фонның түсін қою үшін. Экранды, жолдарды тазалау,жолдарды жою және жолдар қою ClrScr; - экранды толық тазалайды, мұнда курсор экранның сол жақ жоғары бұрышына орналасады. ClrEol; - курсордың тұрған орнынан бастап жолодың соңына дейін барлық символдарды өшіреді. DelLine; - курсор орналасқан жолды жояды, барлық астыңғы жолдарды бір позиция жоғары көтереді. Программаның орындалуының кідіруі Delay(N); - программаның орындалуын N миллисекундқа кідіртеді. 6. Пернетақтамен жұмыс Әрбір перненің өз коды бар, ол пернетақтаның панелінде перненің орнына тәуелді және пернедегі салынған бейнеге қатысы жоқ.. 1. Функция Ord(C) – C символының кодын анықтайды. 2. Функция Chr(X) – Коды X – ке тең символды анықтайды. Дәріс №14.Өзін-өзі тексеру сұрақтары 1. Модуль дегеніміз не? 2. Стандарттық модульдердің қандай түрі бар және олар не үшін қажет? 3. программаға модульді қалай қосу керек? 4. Қандай модуль програмаға автоматты түрде қосылады? 5. CRT модулі не үшін қолданылады? 6. CRT модулінің қандай процедураларымен функциялары бар және олар не үшін қолданылады? Дәріс №015. Модуль 1. Адаптер ұғымы, адаптер типтері, драйверлер және режимдер ұғымы Графикалық режимде кез – келген монитор экранындағы бейне көптеген пиксельдерден тұрады. Монитор экранының графикалық режимде жұмыс істеуін графикалық адаптер деп аталатын арнаулы электрондық схема қамтамасыз етеді. Адаптерлердің негізгі иптері: CGA, EGA, VGA SVGA. Графикалық режимнің жұмысын драйвер деп аталатын арнайы программа. ТР драйверлер BGI өсімшелі файлдарда сақталады. Пайдаланылған драйвер әртүрлі режимде жұмыс істеуі мүмкін. 2. Инициализация және графикалық режимнен шығу Graph модулін қосқан соң, алдымен мүмкін бір графикалық режимді орнататын процедура шақырылады. 3. Координат жүйесі Экранда бейнені тұрғызу үшін координаттар жүйесі қолданылады
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|