Динамикалық жады түсінігі
Мазмұны
Кіріспе...……………………………………………………………………..............4
1 Аналитикалық бөлім..………………………………………………….................5
1.1 Есептің қойылуы мен бейнеленуі.....…………………………….....................5
1.2 Ақпаратты өңдеу кезеңдерін негіздеу, бағдарламаның жалпы
концепциясы, оның құрамы мен құрылымы…………………………...................5
1.3 Инструментальды құралдарды таңдаудың негізі...………………...................7
2 Технологиялық бөлім………...………………………………………...................9
2.1 Құру мақсаты мен қызметі……………………………………...........................9
2.1.2 Динамикалық жады түсінігі……………………………………......................9
2.1.3 Көрсеткіштермен жұмыс жасауға арналған процедуралар мен
функциялар…………………………………………………......................................112.1.4 Екібағытты жазбалық тізім. Екібағытты жазбалық тізімді ұйымдастыру.............................................................................................................12
2.1.5 Циклдік тізімдерді ұйымдастыру……………………………………………………………………….12
2.2 Жүйеге талаптар ………………………………………………………………14
2.3 Диалогтық схемалар мен функционалдіқ мүмкіншіліктердің
сипаттамасы……………………………………………………………………….14
2.4 Енгізу және шығару деректерінің тізімі мен оларды
2.5 Қолдануға және қанаудауға басшылық ……………………………………...14
2.6 Тәжірибелік тексеру нәтижелері………………………………………………14
Қорытынды…………………………………………………………………............15
Қолданылған әдебиеттер тізімі……………………………………………............16
Қосымша А – Бағдарлама листингісі …………………………………….............17
Қосымша Б – Бағдарлама блок-схемасы……………………………………........21
Кіріспе
Курстық жобаның негізгі мақсаты үлкен көлемді мәліметтер базасы(МБ)
Адамның қатысуы ықтимал, автоматтық құралдармен өңдеуге жарамды түрде
Қарапайым МБ, мысалы ретінде телефон анықтамалығын, поездар қозғалысы
Менің тақырыбым кітапханадағы кітаптардың екібағытты циклдік тізімі.
Электронды МБ-сының басты қасиеті - ақпаратты тез іздестіру
Осы ауқымда жұмыс жасау үшін тиімді өріс бұл
Жүйе PasсalABC бағдарламалау жүйесіне негізделен. Курстық жұмыстың ендігі
Аналитикалық бөлім
1.1 Есептің қойылуы мен бейнеленуі
Курстық жұмыста мен кітапханадағы кітаптарға база құрып, бұл
1.2 Ақпаратты өңдеу кезеңдерін негіздеу, бағдарламаның жалпы концепциясы,
Курстық жобаны бағдарламалау кезеңі келесі сатылардан тұрады:
Теориялық мағұлматтар жинау және нақтылау;
Бағдарлама алгоритімін құру;
Бағдарламаның құрылымын дайындау;
Бағдарламаның мәтінін дайындау;
Бағдарламаны тестілеу;
Түсінік хатты дайындау.
Бадарламаның құрамына бағдарламаның денесі және негізгі 11 процедура
Файл құру:
PROCEDURE CFILE;
Файлды көру:
PROCEDURE PROS;
Екібағытты тізім құру:
PROCEDURE CPIC;
Тізімді экранға шығару:
PROCEDURE PRINT;
Тізім элементтерін файлға жазу:
PROCEDURE ZFILE;
Тізімге тағы бір элемент қосу, яғни біздің жағдайда
PROCEDURE DOB;
Тізімнен элементті алып тастау:
PROCEDURE DEL;
Кітап аты бойынша іріктеу процедурасы:
PROCEDURE SORT;
Кітап аты бойынша тізімнен іздеу процедурасы:
PROCEDURE POISK;
Қолдағы кітаптардың барлығын тізім соңына көшіру:
PROCEDURE PEREM;
Дайын тексттік файлдағы мәліметтерді қолдану үшін файлға көшіру:
PROCEDURE READSFILE;
Бағдарлама құрылымы 1.1-сурет:
1.3 Инструментальды құралдарды таңдаудың негізі
Pascal ABC жүйесі оқушылар мен кіші курс студенттеріне
Алғашқы оқу авторлар пікірі бойынша қарапайым және ұқсас
Delphi Pascal тілінің негізінде Pascal ABC жүйесі салынған.
Мысалға: интерфейс секциясын және орындау секциясын модульде жасауға
Pascal ABC бағдарламалау жүйесінің арнайы оқу мақсатында жасалған
Events модулі қарапайым оқиғалы бағдарламалар мен объектілерді қолданусыз
Timers және Sounds модульдері таймерлер және дыбыстар, сонымен
Containers - контейнер кластарының модульі негізгі құрылымдармен (динамикалық
ABC Objects векторлық графика модульінің негіздері объекті- хабарланған
VCL визуальді компоненттер модулі Delphi стильінде негізгі оқиғалы
Pascal ABC тілінде арифметикалық операцияларды типтік көрсеткішке келтіруге,
Сондықтанда мен осы Паскаль ортасы, яғни, Паскаль бағдарламалау
2 ТЕХНОЛОГИЯЛЫҚ БӨЛІМ
2.1 Құру мақсаты мен қызметі
XXI ғасыр электрониканың ғасыры, яғни комьютер кезеңі. Сол
2.1.2 Динамикалық жады түсінігі
Бағдарлама трансляциясы кезінде тіл негіздік құралдарының жетіспеушіліктерінің бірі,
Мысалы, бағдарламада 100дік жиым анықталсын:
VAR A:ARRAY[1..100] OF INTEGER;
Сонда осы жиымда айнымалыларды сақтау үшін 200 байт
Мәселе айнымалы ретінде жолдық қатарлы айнымалы болғанда ләзге
Мұндай жағдайда компьютер төмендегідей қателіктерді көрсетуі мүмкін:
ERROR 22: STRUCTURE TOO LARGE -
Тым ұзақ құрылым, немесе
ERROR 96: TOO MANY VARIABLE -
Барлық бейнеленген мәлімет көлемі 64 килобайттан асуы мүмкін
Яғни, бағдарламаға берілген жады көлемі 1сегементтен, 64К-тан аспауы
Мәліметтер үшін жадыны катаң қадағалап тарату – статистикалық
Жадыны динамикалық түрде ұйымдастыру идеясының негізі болып: сегментке
Көрсеткіштер – бұл арнайы ЭВМ жадындағы ұяшықтың физикалық
Мәліметтерді қарапайым бейнелеуден гөрі көрсеткіштермен жұмыс істеудің артықшылықтарын
Бағдарлама ағымдағы компьютердің барлық бос жадысын толығымен қолдана
Босаған жады бөліктерін пайдалану;
Динамикалық жады ең тиімді пайдаланылатын орта: жады көлемі
Паскаль тілінде компьютердің динамикалық жадысы «куча» деп аталады,
Динамикалық жадының жұмыс механизмна сондай үңілмей-ақ, көрсеткіштер арқылы
2.1.3 Көрсеткіштермен жұмыс жасауға арналған процедуралар мен функциялар
NEW (I) процедурасы айнымалыға қажет динамикалық жадтты бөліп
DISPOSE-процедурасы көрсеткішінің (адресінің) мағынасын, яғни ссылканы немесе ішіндегі
NIL- арнайы резервтелген «нөлдік» адрес, оны кез-келген көрсеткішке
MARK- динамикалық жадыда ағымдағы бос учаскінің мағынасын сақтайды.
RELEASE- MARK көрсеткіші арқылы динамикалық жадттың
Келесі жұп процедура GETMEM және FREEMEM үйіндідегі
FREEMEM процедурасы GETMEM процедурасынан кейін жұмыс істейді. Ол
Келесі функциялар көрсеткіштермен жұмыс жасағанда қолданылады. Олар үйіндінің
MemAvail функциясы , Longint типінде, динамикалық жадттың бос
MaxAvail Longint типінде, динамикалық жадттың ең үзіксіз учаскесін
SizeOf () Integer типіндегі функция берілген көрсеткіштің
Екінші топқа келесі функциялар жатады:
Cseg функциясы Word типті , С микропроцесорының
Dseg Seg функциясы Word типті , D
Seg () айнымалы орналасқан сегмент адресін анықтайды. Айнымалы
Ofs () айнымалы мағынасы орналасқан адрес жылжуын
Prt (< >,< >:word) типі pointer, көрсеткішті
Addr () функциясы қайсыбір айнымалының мағынасы орналасқан адресін
2.1.4 Екібағытты жазбалық тізімді ұйымдастыру
Қарапайым бірбағытты тізімнің басты кемшілігі, түрлі іздеу алгоритмдерін
Іздеу мүмкіншілігін кеңейту үшін жазбаға тағы бір өріс
Қосымша көрсеткіштің болуы іздеу мүмкіндігін кеңейтеді, жәнеде оның
2.1.5 Циклдік тізімдерді ұйымдастыру
Тізімнің екі атауы болған әр кезде тиімді емес,
2.1.1сурет.
ZAGOL1және ZAGOL2 көрсеткіштері тізімнің қатар тұрған екі
2.1.2 сурет. Тақырыбы ерекшеленбеген циклдік тізім.
Беріліп отырған циклдік тізімнің басқалардан ерекшелігі элементтердің толық
Бірақ көптеген іздеу жұмыстарының алгоритмі элементтер ақпараты белгілі
2.1.5 сурет Ерекшеленген тақырыбы бар циклдік тізім.
2.2 Жүйеге талаптар
Осы бағдарламаның сіздің компьютеріңізде істеуі үшін келесі жүйе
- Операциалық жүйе Windows 98/XP/NT/Vista/Seven
- ОЗУ 256 Mb
- Процессор Pentium 4 2.0 Gg
- Бейнеокарта GForce FX 5200 128 Mb
- Тінтуір (мышь);
2.3 Диалогтық схемалар мен функционалдіқ мүмкіншіліктердің сипаттамасы
Осы бағдарламамен қолданушы оңай әрі тез жұмыс істеу
Сурет 2.3.1 – Бас мәзір.
Бұл бөлімдер қолданушыға бағдарламамен оңай басқаруға көмектеседі.
Кез-келген бір пунктіні таңдап алу үшін, сол пункттің
2.4 Енгізу және шығару деректерінің тізімі
Динамикалық жадыдағы мәліметтің адресіне сілтеме немесе көрсеткіш типті
ZAGOL,TEK1,TEK2,TEK3,ZVENO:UKAZ;
Жазба типті айнымалы:
BIB, BIBF RECORD;
Жолдық қатар айнымалысы:
NAZ , AVTOR, GANR, IZDATEL, SODR ,S NAZ1:
Бүтін сандар типі айнымалылары:
I,N,W ,INVNOM, NOMCHIT, GODIZD: INTEGER;
BIB типінің айнымалылары:
F, A;
2.5 Қолдануға және қанаудауға басшылық
Бұл бағдарламаны қолдану үшін:
1. Осы жұмыстың бағдарламасы болу керек.
2. Жүйелік талаптар орындалуы қажет.
Ең бірінші осы бағдарламаның солжақ батырмасымен екі рет
2.6 Тәжірибелік тексеру нәтижелері
Бағдарламаны тестілеу нәтижесінде қателіктер болмады, және алға қойылған
Қорытынды
Екібағытты тізім қолданысқа дайын. Осы бағдарламамен және мәзір
Тапсырылған түсінік хат осы бағдарламаның принципін көрсетеді. Осы
Қолданылған әдебиеттер тізімі
Ж.Қ.Масанов, Б.А.Бельгибаев: Turbo Pascal. Алматы: Бастау, 2004.
О. Камардинов. Информатика. Оқу құралы. Алматы: Ғылым, 2004
Ғ.Ш.Тойкенов. Паскаль тілінде программалау: Алматы, Дәнекер, 2001
Б. Бөрібаев, Б. Нақысбеков, Г. Мадиярова: Информатика және
Б.Бөрібаев, Р.Дүзбаева, А.Махметова: Информатика және есептеуіш техника негіздері.
Зуев Е.А. Язык программирования Turbo Pascal, М.: Унитех,
Никифоров В.Л. Программирование на языке Turbo Pascal, метод.
Фаронов В.В. Программирование на ПЭВМ в среде ТР
С.А.Немнюгин . «Turbo Pascal» - СПб, Питер,
«Информатика» под ред. Макаровой, СПб – 2000г.
И.Г.Семакин, А.П.Шестаков. Основы программирования: Учебник. – М.: Мастерство,
11.В.Л Никифоров, Н.В. Никифорова – Динамическое программирование
Қосымша А
Бағдарлама листингісі
PROGRAM biblioteka;
TYPE
UKAZ=^BIB;
BIB=RECORD
NAZ:STRing;
AVTOR:STRing;
GANR:STRing;
INVNOM:INTEGER;
NOMCHIT:INTEGER;
GODIZD:INTEGER;
IZDATEL:STRING;
SODR:STRING;
NEXT,OLD:UKAZ;
END;
BIBF=RECORD
NAZ:STRing;
AVTOR:STRing;
GANR:STRing;
INVNOM:INTEGER;
NOMCHIT:INTEGER;
GODIZD:INTEGER;
IZDATEL:STRING;
SODR:STRING;
END;
VAR
ZAGOL,TEK1,TEK2,TEK3,ZVENO:UKAZ;
F:FILE OF BIBF;
A:BIBF;
S:STRing;
I,N,W:INTEGER;
NAZ1:STRING;
tt:text;
PROCEDURE CFILE;
{Процедура создания файла}
BEGIN
ASSIGN(F,'BIBL.DAT');
REWRITE(F);
WRITELN(' Сколько всего книг введем?');
READLN(N);
FOR I:=1 TO N DO
BEGIN
WRITELN(I,'-ая книга');
WRITELN('Название книги');
READLN(A.NAZ);
WRITELN('Автор книги');
READLN(A.AVTOR);
WRITELN('Жанр книги?');
READLN(A.GANR);
WRITELN('Инвертарный номер?');
READLN(A.INVNOM);
WRITELN('Номер читателя у которого на руках эта книга,
READLN(A.NOMCHIT);
WRITELN('Год издания книги?');
READLN(A.GODIZD);
WRITELN('Издатель?');
READLN(A.IZDATEL);
WRITELN('Краткое содержание книги?');
READLN(A.SODR);
WRITE(F,A);
END;
CLOSE(F);
END;
PROCEDURE PROS;
BEGIN
ASSIGN(F,'BIBL.DAT');
RESET(F);
I:=1;
BEGIN
WHILE NOT EOF(F)DO
READ(F,a);
WRITELN('!',TEK1^.NAZ:6,' !',TEK1^.AVTOR:10,'!',TEK1^.GANR:12,
'!',TEK1^.INVNOM:4,'!',TEK1^.NOMCHIT:5,'!',
TEK1^.GODIZD:6,'!',TEK1^.IZDATEL:17,'!',TEK1^.SODR:8,'!');
I:=I+1;
END;
writeln('======>Процедура просмотр выполнена!');
writeln('======>Для возврата в ГЛАВНОЕ МЕНЮ нажмите ENTER.');
readln;
CLOSE(F);
END;
PROCEDURE CPIC; {СОЗДАНИЯ
BEGIN
ASSIGN(F,'BIBL.DAT');
RESET(F);
NEW(ZAGOL);
TEK1:=ZAGOL;
TEK1^.NEXT:=TEK1;{циклический }
TEK1^.OLD:=TEK1;{указатель на себя }
WHILE NOT EOF(F) DO
BEGIN
READ(F,A);
NEW(ZVENO);
ZVENO^.NAZ:=A.NAZ;
ZVENO^.AVTOR:=A.AVTOR;
ZVENO^.GANR:=A.GANR;
ZVENO^.INVNOM:=A.INVNOM;
ZVENO^.NOMCHIT:=A.NOMCHIT;
ZVENO^.GODIZD:=A.GODIZD;
ZVENO^.IZDATEL:=A.IZDATEL;
ZVENO^.SODR:=A.SODR;
ZVENO^.NEXT:=ZAGOL;
{присваеваем ZAGOLу ZVENO}
TEK1^.NEXT:=ZVENO;
{предыдущий смотрит на следующий элемент}
ZAGOL^.OLD:=ZVENO;
{1ый элемент смотрит на последний}
ZVENO^.OLD:=TEK1;
TEK1:=ZVENO; {TEK1 жылжу керек , чтобы цикл двигался}
END;
writeln('======>Процедура создания списка выполнена!');
writeln('======>Для возврата в ГЛАВНОЕ МЕНЮ нажмите ENTER.');
readln;
CLOSE(F);
END;
PROCEDURE PRINT;
BEGIN
writeln(' ________________________________________________________________________________________________________)');
writeln('| Название
writeln('| книги
writeln('|————————————————------|———————————----|————————————|—————————————|---------|--------|-----------|------------|');
TEK1:=ZAGOL^.NEXT;
WHILE TEK1ZAGOL DO BEGIN
WRITELN('!',TEK1^.NAZ:6,'! ',TEK1^.AVTOR:9,'!',TEK1^.GANR:12,
' !',TEK1^.INVNOM:6,'!',TEK1^.NOMCHIT:7,'!',
TEK1^.GODIZD:8,'!',TEK1^.IZDATEL:19,'!',TEK1^.SODR:9,'!');
TEK1:=TEK1^.NEXT;
//READLN;
END;
WRITELN('-------------------------------------------------------------------------------------------------------- ');
WRITELN('Нажмите ENTER');
READLN;
END;
PROCEDURE ZFILE;
BEGIN
ASSIGN(F,'BIBL.DAT');
REWRITE(F);
TEK1:=ZAGOL^.NEXT;
WHILE TEK1ZAGOL DO
BEGIN
A.NAZ:=TEK1^.NAZ;
A.AVTOR:=TEK1^.AVTOR;
A.GANR:=TEK1^.GANR;
A.INVNOM:=TEK1^.INVNOM;
A.NOMCHIT:=TEK1^.NOMCHIT;
A.GODIZD:=TEK1^.GODIZD;
A.IZDATEL:=TEK1^.IZDATEL;
A.SODR:=TEK1^.SODR;
WRITE(F,A);
TEK1:=TEK1^.NEXT;
END;
CLOSE(F);
END;
PROCEDURE DOB;{ПРОЦЕДУРА ДОБАВЛЕНИЯ}
BEGIN
WRITELN(' Название книги за которой добаляется новая книга?');
READLN(NAZ1);
TEK1:=ZAGOL^.NEXT;
WHILE TEK1ZAGOL DO
BEGIN
IF TEK1^.NAZ=NAZ1 THEN
BEGIN
NEW(ZVENO);
WRITELN('Название добаляемой книги?');
READLN(ZVENO^.NAZ);
WRITELN('Автор??');
READLN(ZVENO^.AVTOR);
WRITELN('Жанр?');
READLN(ZVENO^.GANR);
WRITELN('Инвентарный номер?');
READLN(ZVENO^.INVNOM);
WRITELN('Номер читателя у которого на руках эта книга,
READLN(ZVENO^.NOMCHIT);
WRITELN('год издания книги?');
READLN(ZVENO^.GODIZD);
WRITELN('Издатель?');
READLN(ZVENO^.IZDATEL);
WRITELN('Краткое содержание книги?');
READLN(ZVENO^.SODR);
ZVENO^.NEXT:=TEK1^.NEXT;
TEK1^.NEXT:=ZVENO;
ZVENO^.NEXT^.OLD:=ZVENO;
ZVENO^.OLD:=TEK1;
TEK1:=TEK1^.NEXT;
END;
TEK1:=TEK1^.NEXT;
END;
END;
PROCEDURE DEL;{ПРОЦЕДУРА УДАЛЕНИЯ}
BEGIN
WRITELN('Название удаляемой книги?');
READLN(NAZ1);
TEK1:=ZAGOL^.NEXT;
WHILE TEK1ZAGOL DO
BEGIN
IF TEK1^.NAZ=NAZ1 THEN
BEGIN
ZVENO:=TEK1;
TEK1:=ZVENO^.OLD;
ZVENO^.NEXT^.OLD:=TEK1;
TEK1^.NEXT:=ZVENO^.NEXT;
DISPOSE(ZVENO);
END;
TEK1:=TEK1^.NEXT;
END;
END;
PROCEDURE SORT;
BEGIN
N:=0;
TEK1:=ZAGOL^.NEXT;
WHILE TEK1ZAGOL DO
BEGIN
N:=N+1;
TEK1:=TEK1^.NEXT;
END;
TEK2:=ZAGOL^.NEXT;
WHILE TEK2ZAGOL DO
BEGIN
TEK2:=TEK2^.NEXT;
TEK1:=ZAGOL;
FOR I:=2 TO N DO
BEGIN
TEK1:=TEK1^.NEXT;
IF TEK1^.NAZ>TEK1^.NEXT^.NAZ THEN
BEGIN
A.NAZ:=TEK1^.NAZ;
A.AVTOR:=TEK1^.AVTOR;
A.GANR:=TEK1^.GANR;
TEK1^.NAZ:=TEK1^.NEXT^.NAZ;
TEK1^.AVTOR:=TEK1^.NEXT^.AVTOR;
TEK1^.GANR:=TEK1^.NEXT^.GANR;
TEK1^.NEXT^.NAZ:=A.NAZ;
TEK1^.NEXT^.AVTOR:=A.AVTOR;
TEK1^.NEXT^.GANR:=A.GANR;
END;
END;
END;
END;
PROCEDURE POISK;
TYPE
MAS=RECORD
NA:STRing;
UK:UKAZ;
END;
VAR
A:ARRAY[1..100] OF MAS;
S,SN,L:INTEGER;
OK,OKY:BOOLEAN;
BEGIN
N:=0;
TEK1:=ZAGOL^.NEXT;
WHILE TEK1ZAGOL DO
BEGIN
N:=N+1;
A[N].NA:=TEK1^.NAZ;
A[N].UK:=TEK1;
TEK1:=TEK1^.NEXT;
END;
WRITELN(' Введите название искомой книги ?');
READLN(NAZ1);
I:=0;
L:=N DIV 2;
S:=N;
SN:=0;
OK:=TRUE;
OKY:=TRUE;
WHILE OK DO
BEGIN
I:=I+1;
IF A[L].NA=NAZ1 THEN OK:=FALSE
ELSE
BEGIN
IF A[L].NA > NAZ1 THEN
BEGIN
S:=L;
L:=L-((S-SN) DIV 2);
END
ELSE
BEGIN
SN:=L;
L:=L+((S-SN+1) DIV 2);
END;
END;
IF I>N THEN
BEGIN
OK:=FALSE;
OKY:=FALSE;
END;
END;
IF OKY THEN
BEGIN
TEK1:=A[L].UK;
WRITELN(' Книга найдена ');
WRITELN(' Название :',TEK1^.NAZ);
WRITELN(' Автор :',TEK1^.AVTOR);
WRITELN(' Жанр :',TEK1^.GANR);
END
ELSE WRITELN(' Книги нет ');
WRITELN(' Нажмите ENTER');
READLN;
END;
PROCEDURE PEREM;
BEGIN
TEK1:=ZAGOL^.OLD;//встали на начало списка
WHILE TEK1ZAGOL DO //пока тек1 не равен заголовку
BEGIN
IF TEK1^.NOMCHIT>0 THEN // если номерчит.больше нуля то
BEGIN
TEK3:=TEK1^.OLD; // тек3 присваеваем следующ.эл после найденного
ZVENO:=TEK1;
ZVENO^.OLD^.NEXT:=ZVENO^.NEXT;
ZVENO^.NEXT^.OLD:=ZVENO^.OLD;
ZAGOL^.OLD^.NEXT:=ZVENO;
ZVENO^.OLD:=ZAGOL^.OLD;
ZVENO^.NEXT:=ZAGOL;
ZAGOL^.OLD:=ZVENO;
END;
IF TEK1^.NOMCHIT>0 THEN TEK1:=TEK3 ELSE TEK1:=TEK1^.OLD;
WRITELN('*',TEK1^.NOMCHIT, TEK1^.AVTOR);
END;
writeln('======>Процедура перемещения книг выполнена!');
writeln('======>Для возврата в ГЛАВНОЕ МЕНЮ нажмите ENTER.');
readln;
END;
PROCEDURE READSFILE;
begin
assign(tt,'tt.txt');
assign(f,'BIBL.DAT');
reset(tt);
rewrite(f);
while not eof(tt) do begin
readln(tt,a.NAZ);
readln(tt,a.AVTOR);
readln(tt,a.GANR);
readln(tt,a.INVNOM);
readln(tt,a.NOMCHIT);
readln(tt,a.GODIZD);
readln(tt,a.IZDATEL);
readln(tt,a.SODR);
write(f,a);
end;
close(tt); close(f);
reset(f);
while not eof(f) do begin
read(f,a); readln;
writeLN(a.NAZ,' ',a.AVTOR,' ',a.NOMCHIT,'',a.INVNOM,' ',a.NOMCHIT,' ',a.GODIZD,'
end;
close(f);
end;
BEGIN
WHILE W < 12 DO
BEGIN
WRITELN(' Добро пожаловать, в базу данных библиотеки!!!');
WRITELN(' Вы можете :');
WRITELN('1 - Создать файл ');
WRITELN('2 - Просмотр файла ');
WRITELN('3 - Создать список ');
WRITELN('4 - Записать список в файл ');
WRITELN('5 - Напечатать список ');
WRITELN('6 - Добавить элемент в список ');
WRITELN('7 - Удалить элемент из списка ');
WRITELN('8 - Сортировка списка по названию ');
WRITELN('9 - Двоичный поиск книги по названию ');
WRITELN('10 - Переместить все книги, находящиеся у читателей
WRITELN('11 - Прочесть с текстового файла и записать
WRITELN('12 - Выйти из программы ');
WRITELN(' Ваши действия ?');
READLN(W);
CASE W OF
1:CFILE;
2:PROS;
3:CPIC;
4:ZFILE;
5:PRINT;
6:DOB;
7:DEL;
8:SORT;
9:POISK;
10:PEREM;
11:READSFILE;
END;
END;
END.
Қосымша Б
21
12 – Бағдарламадан шығу
Сіздің әрекетіңіз ?
1 – Файл құру
2 – Файлды қарау
3 – Тізім құру
4 – Тізімді файлға жазу
5 – Тізімді басып шығару
6 – Тізімге элемент қосу
7 – Тізімнен элементті жою
8 – Тізімді алфавит бойынша сорттау
9 – Кітапты аты бойынша екілік іздеу
10 – Оқырман колында деп белгіленген кітаптарды тізім
11 – Дайын тексттік файылдан тізім құрастыру
Процедура тізімінен белгілі бір ретпен процедураларды таңдау
Негізгі бағдарлама
OLD
NEXT
ЗП 2
OLD
NEXT
ЗП 3
OLD
NEXT
ЗП 1
OLD
NEXT
ЗП N
…
…
ZAGOL 2
ZAGOL 1
OLD
NEXT
ЗП 2
OLD
NEXT
ЗП 3
OLD
NEXT
ЗП 1
OLD
NEXT
ЗП N
…
…
ZAGOL
OLD
NEXT
ЗП 1
OLD
NEXT
ЗП 2
OLD
NEXT
OLD
NEXT
ЗП N
…
…
ZAGOL
Бағдарламаны тестілеу
САНДЫҚ ТЕХНИКАДА ҚОЛДАНЫЛАТЫН ЕСЕПТЕУ ЖҮЙЕЛЕРІН ҰЙЫМДАСТЫРУ
СИ тіліндегі динамикалық жады
СИ бағдарламалау тілінде жадыны басқару
Процесс - орындалатын бағдарлама
Файлдармен жұмыс
Автоматты басқару және ақпараттар теориясынан мәліметтер
Шашка ойынын Паскаль программалау тілінде құру
Нақты жұмыс кезеңдер немесе осы кезеңдердің есептерін шешуде қолданылатын технологиялар
Жады