Сибірський Державний Унівеверсітет Телекамунікацій та Інформатики
| |
| | | Кафедра ВТ та ТЗ |
| Курсова робота |
| | Дисципліни: Інформатика |
| | ВИКЛАДАЧ: Моренкова Ольга Ілінічна |
| | ТЕМА: Модулі, записи й файли. |
| | ВИКОНАВЕЦЬ: Грязіним Дмитра Володимировича |
| | |
| Новосибірськ |
| 2000р. | p>
С О Д Е Р Ж А Н И Е p>
Вступ 3
Глава 1. Модулі в Турбо Паскалі. 6
1.1. Призначення і структура модуля 6
1.2. Компіляція модулів. 9
Глава 2. Алгоритми 11
2.1. Зухвала програма 12
2.2.Процедура формування масиву А 13
2.3. Процедура виведення масиву А 14
2.4. Процедура твір елементів масиву А 15 p>
2.5. Функція пошуку максимального елемента векторного масиву С ... .... ... ... .16 P>
Глава 3. Модуль основної програми 17
Глава 4. Основна програма 19
Глава 5. Результати першої частини курсової роботи 21
Глава 6. Записи. 22 p>
Глава 7. Файли. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 24 p>
7.1. Операція з файлами як єдине ціле. 24
7.2. Структура файлів 26
Глава 8. Завдання другій частині курсової роботи 30
Глава 9. Алгоритм основної програми 31
Глава 10. Основна програма 32 p>
Глава 11. Результати другої частини курсової роботи ... ... ... ... ... ... ... ... ... ... ... ... .34 p>
Висновок 35 p>
Список використаних джерел: 36 p>
Введення p>
Метою курсового проектування є придбання і закріпленнянавичок в організації обчислювальних процесів і програмування наалгоритмічній мовою ПАСКАЛЬ. Основний акцент в роботі приділяєтьсярозгляду модульного програмування, використання процедур і функцій.
Крім того, велика увага приділяється роботі з файлами, детальнорозглядаються функції відкриття та закриття файлу. Отримані знаннядопоможуть у майбутньому більш ефективно підходити до процесу розробкипрограмного забезпечення. p>
Мова програмування Pascal був розроблений в 1968-1971 рр.. Ніклаус
Віртом в Цюріхському Інституті інформатики (Швейцарія). Початкова метарозробки мови диктувалася необхідністю інструменту "для навчанняпрограмуванню як систематичній дисципліні ". Проте дуже скоровиявилася надзвичайна ефективність мови Pascal в найрізноманітнішихдодатках, від вирішення невеликих задач чисельного характеру до розробкискладних програмних систем - компіляторів, баз даних, операційних системі т.п. До теперішнього часу Pascal належить до групи найбільшпоширених і популярних у світі мов програмування. Існуютьчисленні реалізації мови практично для всіх машинних архітектур;розроблено десятки діалектів і проблемно-орієнтованих розширень
Pascal;навчання програмуванню та науково-технічні публікації в значніймірою базуються на цій мові. p>
Характеристика та особливості мови. Існує ряд об'єктивних причин,обумовили видатний успіх мови Pascal. Серед них у першу чергунеобхідно вказати наступні:
1. Мова в природній і елегантною формі відбив найважливіші сучасніконцепції технології розробки програм: розвинена система типів,орієнтація на принципи структурного програмування, підтримка процесупокрокової розробки.
2. Завдяки своїй компактності, концептуальній цілісності таортогональності понять, а також вдалому початкового опису,запропонованому автором мови, Pascal виявився дуже легким для вивчення таосвоєння. На противагу громіздким багатотомні описи такихмов, як PL/I, Cobol, FORTRAN, достатньо повний опис мови Pascalзаймає близько 30 сторінок тексту, а його синтаксичні правила можнарозмістити на одній сторінці.
3. Незважаючи на відносну простоту мови, він виявився придатний длядуже широкого спектру додатків, у тому числі для розробки дужевеликих і складних програм, наприклад операційних систем.
4. Pascal дуже технологічний для реалізації практично для всіх, у томучислі і нетрадиційних, машинних архітектур. Стверджується, що розробка
Pascal-транслятора "майже не перевищує за трудомісткістю гарну дипломнуроботу випускника вузу ". Завдяки цьому для багатьох ЕОМ існуєкілька різних реалізації мови, що відображають ті чи інші практичніпотреби програмістів.
Мова Pascal стандартизована в багатьох країнах. У 1983 році був прийнятийміжнародний стандарт (ISO 7185:1983). Готується (відомості на 1989 рік)стандарт РЕВ на Pascal.
Розглянемо основні особливості мови Pascal.
1. Pascal є традиційним алгоритмічним мовою програмування,продовжують лінію Algol-60. Це означає, що програма на мові Pascalявляє собою спеціально організовану послідовність кроків зперетворення даних, що приводить до вирішення деякої задачі. Це відрізняє
Pascal від так званих непроцедурного мов типу Prolog, по сутіщо представляють собою формалізму для запису початкових умов деякоїзавдання і синтезують рішення за допомогою вбудованих механізмівлогічного висновку.
2. Мова Pascal містить зручні засоби для представлення даних.
Розвинена система типів дозволяє адекватно описувати дані, що підлягаютьобробці, і конструювати структури даних довільної складності. Pascalє універсальна мова, що означає фіксацію типів змінних приїх описі, а також строгий контроль перетворень типів і контрольдоступу до даних відповідно до їх типом (як на етапі компіляції, так іпри виконанні програм).
3. Набір операторів мови Pascal відображає принципи структурногопрограмування і дозволяє записувати досить складні алгоритми вкомпактною і елегантною формі.
Pascal є процедурним мовою з традиційною блокової структурою істатично певними частинами дії імен. Процедурне механізмпоєднує в собі простоту реалізації та використання і гнучкі засобипараметризації.
4. Синтаксис мови досить нескладний. Програми записуються у вільномуформаті, що дозволяє зробити їх наочними і зручними для вивчення. p>
Глава 1. Модулі в Турбо Паскалі. P>
1.1. Призначення і структура модуля p>
Модуль - це автономно компільовані програмна одиниця, що включає всебе різні компоненти розділу описів (типи, константи,змінні, процедури і функції) і, можливо, деякі виконуютьсяоператори ініціації частини. У модулях Turbo PASCAL явнимчином виділяється деяка "видима" інтерфейсна частину, в якійсконцентровані описи глобальних типів, констант і змінних, атакож приводяться заголовки глобальних процедур і функцій.
Поява об'єктів в інтерфейсній частини робить їх доступними для іншихмодулів і основної програми. Тіла процедур і функцій розташовуються у виконуваній частині модуля, яка може бути прихована від користувача.
Модулі являють собою прекрасний інструмент для розробкибібліотек прикладних програм і потужний засіб модельногопрограмування. Важлива особливість модуля полягає в тому,що компілятор Turbo PASCAL розміщує їх програмний код в окремомусегменті. Модуль має наступну структуру: p>
UNIT; p>
INTERFACE p>
IMPLEMENTATION p>
BEGIN p>
END. P >
Тут UNIT - зарезервоване слово, починає заголовокмодуля;
- ім'я модуля (повинне збігатися з ім'ям файлу, вякий поміщений модуль);
IMPLEMENTATION - зарезервоване слово (виконання), починаєвиконувану частину; BEGIN - зарезервоване слово, починаєініціюючу частина (частина модуля BEGIN необов'язкова); END - зарезервоване слово, ознака кінця модуля. p>
Заголовок модуля складається з зарезервованого слова UNIT інаступного за ним ім'я модуля. Для правильної роботи Turbo PASCAL іможливості підключення засобів, що полегшують розробку великих програм,це ім'я повинне збігатися з ім'ям файлу, у який поміщається вихіднийтекст модуля. Ім'я модуля служить для його зв'язку з іншими модулями й основною програмою. Цей зв'язок установлюється спеціальним додатком
USES. Тут USES - зарезервоване слово; - список модулів, з якими встановлюється зв'язок,елементами списку є імена модулів, відокремлюються один від одногокомами. Якщо оголошення USES використовується, то воно повинне відкриватирозділ описів основної програми. Модулі можуть використовувати іншімодулі. Пропозиція USES в модулях може випливати або відразу зазарезервованим словом INTERFACE, або відразу за словом
IMPLEMENTATION. Інтерфейсна частина відкривається зарезервованим словом
INTERFACE. У цій частині містяться оголошення всіх глобальнихоб'єктів модуля (типів, констант, змінних та підпрограм), якіповинні стати доступними основній програмі і (або) іншим модулів.
При оголошенні глобальних підпрограм в інтерфейсній частині вказується тільки їхній заголовок. Оголошення підпрограм в інтерфейсній частиниавтоматично супроводжується їхньою компіляцією з використаннямдалекої моделі пам'яті. Таким чином, забезпечується доступ допідпрограм з основної програми й інших модулів. Порядокпояви різних розділів оголошень і їх кількість може бутидовільним. Частина, що виконується починається зарезервованимсловом IMPLEMEN-TATION і містить опису підпрограм, оголошених вінтерфейсній частини. У ній можуть оголошуватися локальні для модуля об'єкти --допоміжні типи, константи, змінні і блоки, а також мітки, якщовони використовуються в ініціації частини. Опису підпрограми, оголошеноїв інтерфейсній частині модуля, що виконується в частині маєпередувати заголовок, у якому можна опускати список формальнихзмінних (і тип результату для функції), так як вони вже описані вінтерфейсній частини. Але якщо заголовок програми приводиться в повномувигляді, тобто, зі списком формальних параметрів, то він повинен збігатися із заголовком, оголошеним в інтерфейсній частини. Ініціюєчастину завершує модуль. Вона може бути відсутнім разом зпочатківцем її словом BEGIN або бути порожній - тоді за BEGIN відразу слідознака кінця модуля (слово END і наступна за ним точка). Уініціації частини розміщуються виконуються оператори, які містятьлише певну частину програми. Ці оператори виконуються до передачіуправління основній програмі і звичайно використовуються для підготовки їїроботи. Наприклад, у них можуть ініціюватися змінні, відкриватисяпотрібні файли, можуть встановлюватися зв'язки з іншими ПК покомунікаційних каналах і т.п. Не рекомендується робити ініціюючучастину порожньою, краще її опустити: порожня частина містить порожній оператор, якому буде передане керування при запуску програми. p>
1.2. Компіляція модулів. P>
У середовищі Turbo PASCAL є засоби, керуючі способомкомпіляції модулів і полегшують розробку великих програмнихпроектів. Зокрема, визначені три режими компіляції: COMPILE, MAKEі BUILD. Режими відрізняються тільки способами зв'язку компільованімодуля й основної програми з іншими модулями, оголошеними в додатку
USES. При компіляції модуля або основної програми в режимі
COMPILE компілюється тільки файл, що знаходиться в активному вікні.
За умовчанням передбачається, що використовувані модулі вжевідкомпілювати і результати поміщені в однойменні файли зрозширенням. TPU; файл з розширенням. TPU (від англійського Turbo Pаscal
Unit) створюється в результаті компіляції модуля. У режимі МАКЕЄВкомпілятор перевіряє наявність TPU-файлів для кожного оголошеногомодуля. Якщо який-небудь із файлів не виявлений, то система намагаєтьсявідшукати однойменний файл з розширенням. PAS, тобто файл із вихіднимтекстом модуля. Якщо PAS-файл знайдений, то відбувається його компіляція.
Крім того, в цьому режимі система стежить за можливими змінамивихідного тексту будь-якого використовуваного модуля. Якщо в PAS-файл
(вихідний текст модуля) внесені які-небудь зміни, то незалежно відтого, чи є вже в каталозі відповідний TPU-файл чи ні, системаздійснює його компіляцію перед компіляцією основної програми. Якщозміни внесені в інтерфейсну частину модуля, то будутьперекомпіліровать також і всі інші модулі, які звертаються до нього.
Режим МАКЕЄВ істотно полегшує процес розробки великих програм з безліччю модулів. У режимі BUILD існуючі TPU-файлиігноруються, і система намагається відшукати й компілювативідповідний PAS-файл для кожного оголошеного в пропозиції USESмодуля. Після компіляції в режимі BUILD програміст може бути впевнений уте, що враховано всі зроблені ним зміни в будь-якому з модулів. p>
Підключення модуля до основної програми та їх можливакомпіляція здійснюється в порядку їх оголошення в пропозиції
USES. При переході до чергового модуля система попередньовідшукує всі модулі, на які він посилається. Посилання модулів одинна одного можуть утворювати деревоподібну структуру будь-якої складності,однак забороняється явне або непряме обіг модуля до самого себе.
Справа в тому, що Turbo PASCAL дозволяє посилання на часткововідкомпілювалися модулі, що приблизно відповідаєвипереджальному опису підпрограми. Якщо інтерфейсні частини будь-яких двох модулів незалежні, Turbo PASCAL зможе ідентифікувати всіглобальні ідентифікатори в кожному з модулів, після чого відкомпілюєтіла модулів звичайним способом. p>
Глава 2. Завдання першої частини курсової роботи p>
Розробити модуль (схеми алгоритмів і програми), що містять процедури іфункції, які вирішують поставлене завдання: p>
Варіант № 21 p>
Обчислити добуток елементів кожного стовпця матриці: p>
Визначити максимальне значення твори: p>
Розробити викликає програму (алгоритм і текст програми), передбачившипроцедуру очищення екрана і виведення інформації на екран з текстовимикоментарями. Наприклад: p>
Курсову роботу виконав студент групи А - 61 Іванов Роман Борисович p>
Варіант № 21 p>
Розроблений модуль містить наступні програми: p>
Процедуру формування елементів матриці в інтервалі -1.0 до 1.0. p>
Функцію визначення суми елементів тієї строки, де знаходиться максимальний елемент. p>
Процедуру виведення елементів матриці. p>
Результати : p>
Сформована матриця: p>
------------------------------ p>
------------------------------ p>
Сума елементів рядка, де знаходиться максимальний елемент = ... .... P>
2.1. Зухвала програма p>
2.2.Процедура формування масиву А p>
PROCEDURE FORM p>
2.3.Процедура ввивода масиву А p>
PROCEDURE VIVOD p>
2.4.Процедура твори елементів масиву А p>
PROCEDURE PR p>
2.5.Функція пошуку максимального елемента в векторному масиві С p>
FUNCTION MAX p>
Глава 3. Модуль основної програми p>
unit kurp1;interfaceconst n = 5;type matr = array [1 .. n, 1 .. n] of real; vect = array [1 .. n] of real;procedure form (var a: matr);procedure vivod (var a: matr);function max (c: vect): real;procedure pr (a: matr; var c: vect);implementationprocedure vivod (var a: matr); var i, j: integer; begin for i: = 1 to n dobegin for j: = 1 to n dowrite (a [i, j]: 6:2); writeln; end; writeln; end;procedure form (var a: matr);var i, j: integer; begin randomize; for i: = 1 to n do for j: = 1 to n doa [i, j]: = random * 2-1; end;function max (c: vect): real;var i: integer; m: real;beginm: =- 2;for i: = 1 to n do if c [i]> m then m: = c [i];max: = mend;procedure pr (a: matr; var c: vect);var i, j: integer;beginc [i]: = 1;for i: = 1 to n do begin for j: = 1 to n do c [i]: = a [j, i] * c [i]; writeln ( 'Твір', i, '-го стовпця =', c [i]: 6:4); end; writeln;end;end. p>
Глава 4. Основна програма p>
program kursovik; uses crt, kurp1; var a: matr; c: vect; begin clrscr; window (45,2,75,7); writeln ( 'Курсова робота з інформатики'); writeln ( 'Факультет АЕС група А-92'); writeln ( 'студента: Грязіним Дмитра'); window (1,1,80,25); writeln ( 'варіант 21'); window (10,8,80,20 ); writeln ( 'Розроблений модуль містить наступні програми:'); writeln ('1. Процедуру формування елементів матриці в інтервалі від 1.0 до 1.0. '); writeln ('2. Процедуру виводу матриці на екран.'); writeln ( ' 3.Процедуру визначення твори кожного стовпця матриці. '); writeln ('4. Функцію визначення максимального проізвелденія.'); window (1,1,80,25); gotoxy (10,24); writeln ( 'Для продовження натисніть пробіл '); clrscr; form (a); writeln (' Сформована матриця '); vivod (a); pr (a, c); writeln (' Максимальна твір = ', max (c): 6:4); readln; end. p>
Глава 5. Результати першої частини курсової роботи p>
Сформована матриця
-0.68 0.22 0.58 -0.62 -0.14
0.25 -0.11 -0.90 0.41 -0.57
0.24 -0.69 -0.84 0.28 0.71
-- 0.46 -0.26 0.16 0.49 -0.73
0.60 0.17 0.28 -0.77 -0.61 p>
Твір 1-го стовпця = 0.0112
Твір 2-го стовпця =- 0.0007
Твір 3-го стовпця = 0.0187
Твір 4-го стовпця = 0.0264
Твір 5-го стовпця = 0.0243 p>
Максимальне твір = 0.0264 p>
Глава 6. Записи. P>
Запис - це структура даних, що складається з фіксованого числакомпонентів, які називаються полями запису. На відміну від масиву, компоненти
(поля) запису можуть бути різного типу. Щоб можна було посилатися на тойабо інший компонент записи, поля іменуються. p>
Структура оголошення типу запису така: p>
= RECORD END p>
Тут - правельний індіфікатор; p>
RECORD, END - зарезервовані слова (запис, кінець); p>
- список полів; являють собою послідовність p>
розділів записи, між якими ставиться крапка з запитом. p>
Кожен розділ запису складається з одного або декількох індіфікаторов полів,відокремлюваних один від одного комами. За індіфікатором ставиться двокрапка іопис типу поля наприклад: p>
type birthday = record day, month: byte; year: word: end; var a, b: Birthday; p>
. . . . . . . . p>
У повму прикладі тип Birthday є запис з полями DAY, MONTH, і YEAR;змінні А і В містять записи типу Birthday.
Як у масиві, значення змінних типу запису можна привласнювати іншимзмінним того ж типу, наприклад: a: = b;
До кожного з компонентів записи можна отримати доступ, якщо використовуватискладене ім'я, тобто вказати ім'я змінної, потім крапку і ім'я поля: a.day: = 27; b.year: = 1991;
Щоб спростити доступ до полів запису, використовується оператор приєднання
WITH: p>
WITH DO p>
Тут WITH, DO - ключові слова (с, робити); p>
- ім'я змінної типу запис, за яким, можливо, слід список вкладених полів; p>
- будь-який оператор Турбо Паскаля.
Наприклад: with c.bd do month: = 9;
Імена полів повинні бути унікальними в межах тієї записи, де вониоголошено, однак, якщо записи містять поля - записи, тобто вкладена в одиніншу, імена можуть повторюватися на різних рівнях вкладеності. p>
. p>
Глава 7. Файли. P>
Під файлом розуміється іменована область пам'яті на магнітному носії,яка використовується для довготривалого зберігання деякої логічно пов'язаноїінформації. У цю область зовнішньої пам'яті можна як помістити певнідані, так і витягти їх з неї. Ці дії мають спільну назву - ввід -висновок. p>
7.1. Операція з файлами як єдине ціле. P>
Програмування доступу до файлу у мові Turbo Pascal починається зопису файлової змінної (змінної файлового типу). Цей описбудується за допомогою службового слова file, після якого (після службовогослова of) може бути вказаний тип окремих елементів файла, наприклад:var
F: file of integer; p>
При необхідності можна окремо визначити деякий файловий тип,яким надалі користуватися при описі файлових змінних:type
RecordFile = file of record p>
А, В: real; end;var
Fl, F2: RecordFile; p>
Дуже важливо розрізняти власне файл (область пам'яті на магнітномуносії з деякою інформацією) і змінну файлового типу в деякій
Turbo Pascal-програмі. Вважається, що файлова змінна єпредставником деякого дискового файлу в програмі. Для того, щобреалізувати доступ до файлу па магнітному диску, програма повинна зв'язати йогоз файлової змінної. Для цього необхідно зіставити змінну з ім'ямфайлу. Це ім'я представляється у вигляді рядка, що містить повне ім'я файлу і,може, ланцюжок осяжний каталогів та позначення дисководу. Такарядок носить назву маршруту (або колії) до файлу і формується за загальнимиправилами MS-DOS.
Зв'язування маршруту та файлової змінної проводиться стандартноїпроцедурою Assign, якій передаються два параметри: ім'я змінноїфайлового типу та рядок з ім'ям (маршрутом) дискового файлу, наприклад:
Assign (F, 'з: booksbook4test3. Разів');
Крім маршруту, у другому параметрі може бути вказано умовне
(символічне) позначення деякого «псевдофайла» MS-DOS, тобто файлу,пов'язаного з конкретним фізичним пристроєм. Допускаються імена, восновному збігаються з прийнятими в MS-DOS позначеннями ( 'con' - консоль,тобто екран дисплея і/або клавіатура, 'lpti' або 'prn' - друкуючийпристрій і т. д.).
До тих пір, поки файлова змінна не пов'язана з яким-небудь дисковимфайлом, ніякі операції з нею в програмі неможливі, Зауважимо, що можназв'язати файлову змінну з ще не існуючим дисковим файлом. Цеможе бути виправдане для випадку подальшого створення Turbo Pascal -програмою файлу з даними ім'ям за допомогою деякої системної процедури.
Після того, як файлова змінна з допомогою процедури Assign пов'язана зконкретним дисковим файлом, можна виконати будь-яку допустиму операцію зним. Тут розглянемо дві операції загального характеру, що дозволяютьперейменовувати і знищувати існуючі дискові файли. Такі операціївиконуються системними підпрограмами Rename і Erase з наступнимиспецифікаціями:
Rename (var f; nevname: string);
Erase (var f); p>
Основним параметром цих процедур є файлова змінна (вонаможе ідентифікувати файл будь-якого типу, і до неї повинна була бути ранішезастосована процедура Assign), а процедурою Rename додатково передаєтьсянове ім'я файлу. Дія зазначених процедур грунтується навідповідних DOS-функціях і функціонально еквівалентно командам ren іdel командного процесора. p>
7.2. Структура файлів p>
7.2.1Откритіе і закриття файлів
У цьому і наступному розділах розглядаються файли традиційної для мови
Pascal структури, які описуються в програмі в термінах складовихкомпонент. Крім таких файлових змінних (вони також називаються
"типізований" файлами), у мові Turbo Pascal є також файлиспеціального типу - текстові файли, які введені для підтримки одногопрактично важливого окремого випадку файлових структур, і нетипізованіфайли, які використовуються для більш ефективної організації обмінів нанизькому рівні.
Найважливішим моментом при використанні змінних файлових типів єінтерпретація файлу як потенційно нескінченного списку значень одного ітого ж (базового) типу. Наприклад, опис змінної F виду var
F: file of integer;розуміється як визначення в програмі під ім'ям F списку невизначеногокількості цілих чисел, розташованого на деякому зовнішньому запам'ятовуючомупристрої (наприклад, на магнітному диску). p>
З кожної змінної файлового типу також пов'язано поняття поточногопокажчика файлу. Поточний покажчик можна розуміти як приховану змінну
(тобто змінну, неявно описану разом з файловоюзмінної), яка позначає ( "вказує" на) деякий конкретнийелемент файлу. Таким чином, можна графічно так представитиінтерпретацію файлу, пов'язаного зі змінною F: 0 1 2 p>
N p>
| Ціле | Ціле | Ціле |. . . | Ціле |. . . |
| | | |. . | | | P>
Поточний покажчик -----< br> Як правило, всі дії з файлом (читання з файлу, запис у файл)виробляються поелементно, причому в цих діях бере участь той елементфайлу, який позначається поточним покажчиком. У результаті вчиненняоперацій поточний покажчик може переміщатися, налаштовуючись на той чи іншийелемент файлу. Всі елементи файлу вважаються пронумерованими; початковийелемент має нульовий номер. Є можливість явної установки поточноговказівника на певний елемент файлу.
Зауважимо, що один і той же зовнішній файл у різних Turbo Pascal -програмах (або навіть в різних частинах однієї і тієї ж програми) можеінтерпретуватися по-різному, наприклад, як послідовність цілихчисел, або як послідовність символів, або як послідовністьдеяких записів, і т. д. Ця можливість дуже важлива і часто використовуєтьсяв роботі з файлами складної структури. Наприклад, в процесі роботи звнутрішнім поданням файлів баз даних (зокрема, з DBF-файлами)може знадобитися інтерпретувати файл по-різному в залежності від того,яку його компоненту (заголовок або змістовну частину) ми обробляємо.
Потрібно також відзначити, що всі операції з файлами у мові Turbo Pascalреалізовані з використанням базових засобів операційної системи; вЗокрема, поняття поточного покажчика файлу підтримано у MS-DOS. Проте всіпереміщення по файлу (як явне управління покажчиком, так і зрушення приобмінах) виконуються в термінах байтів. Таким чином, всі аспекти,пов'язані з типізацією вмісту файлів, являють собою системнунадбудову мови Turbo Pascal.
Для виконання деякої операції по вводу-висновку необхідно перш за всевідкрити дисковий файл (нагадаємо, що попередньо потрібно зв'язати файловузмінну з дисковим файлом за допомогою процедури Assign). Під відкриттям уданому випадку розуміється підготовка до обміну з файлом з боку програми,що полягає перш за все в пошуку файлу на зовнішньому носії, установційого поточного вказівника на певний (як правило, нульовий елемент) іформуванні буфера в оперативній пам'яті, за допомогою якого будутьвироблятися обміни.
Звичайні типізовані файли відкриваються за допомогою однієї з двох системнихпроцедур - Reset або Rewrite, єдиним параметромяких в даному випадку є файлова змінна. Обидві ці процедуривідкривають файл для обміну. Різниця між ними полягає в початковихдії з файлом.
Процедура Reset припускає, що відкривається дисковий файл вжеіснує, в іншому випадку виникає помилка. Процедура Rewriteприпускає, що відкривається файл може ще не існувати, в цьому випадкувона створить заданий файл. Якщо ж файл існує, то Rewrite очищає його.
Повторимо, що в обох випадках поточний покажчик файлу встановлюється найого нульовий елемент. Слід мати на увазі, що обидві операції допускають уНадалі як читання з файлу, так і запис у нього (це буде обговорюватисяв наступному розділі).
Зрозуміло, дві введені процедури носять в основному підготовчийхарактер, однак можна вказати практично важливі випадки їх цілкомсамостійного використання. Так, процедура Rewrite може застосовуватисядля стирання вмісту файла без його видалення з диска або для створеннянового файлу. p>
Процедура close завершує дії з файлом, який вказується вяк її єдиного параметра. При цьому буфер, що утворився привідкриття файлу, ліквідується. Після цього файлову змінну можназв'язати за допомогою процедури Assign з яким-небудь іншим дисковим файлом.
Зауважимо, що при закінченні роботи всієї програми відбувається автоматичнезакриття всіх файлів, відкритих у програмі. Однак хорошим правиломє явне закриття файлів процедурою close після закінчення роботи зними. p>
Крім закриває процедури close, в системі Turbo Pascal також єдодаткова процедура Flush (її параметр - файлова змінна). Flushвикористовується для завершення обмінів з файлом без його закриття. Обміни зфайлами завжди реалізуються через деякий буфер в оперативній пам'яті,тому в процесі запису на файл останні записувані елементи можуть щезнаходитися ( "застрягти") в буфері. Процедура Flush викликає примусовийскидання цих елементів у файл. Ця процедура має сенс у тому випадку, якщо зфайлом проводилися операції запису і використовується рідко, тому що процедураclose виробляє такі ж дії. p>
Глава 8. Завдання по другій частині курсової роботи p>
У файлі міститися довідкові відомості про підприємства-задолжніках посплату податків p>
| № | ІНН | Найменування | Засіб на | Нараховано | Сплачено |
| | | Підприємства | початок року | податків в | податків в |
| | | | | Звіт. період | отч. Період |
| ... ... ... | ... ... ... ... .. | ... ... ... ... ... ... | ... ... ... ... .... | ... ... ... ... ... ... | ... ... ... ... .. |
| ... ... ... | ... ... ... ... .. | ... ... ... ... ... ... | ... ... ... ... .... | ... ... ... ... ... ... | ... ... ... ... .. |
| Відомості на кінець звітного періоду |
| ... ... ... ... ... ... ... .. | ... ... ... ... ... .... | ... ... ... ... ... | ... ... ... ... ... ... | ... ... ... .... |
| ... ... ... ... ... ... ... .. | ... ... ... ... ... .... | ... ... ... ... .... | ... ... ... ... ... .. | ... ... ... .... | p>
Тип полів: p>
№ - тип INTEGER [3]
ІПН - тип STRING [12]
Найменування
Підприємства - тип STRING [20]
Інші поля - INTEGER p>
Розробити алгоритм і програму для обробки файлу згідно варіантузавдання p>
Варіант № 26
Видати інформацію про підприємства, які не нараховують податки у звітномуперіоді. p>
Відомості видати у вигляді таблиці з відповідним заголовком. p>
НАПРИКЛАД: p>
ГРУПОВІ ЗАДОЛЖНІКАХ> 20 тис. p>
Глава 9 . Алгоритм другій частині курсової роботи p>
Глава 10. Основна програма p>
program part2; p>
uses crt; p>
type table = recordn: integer;inn: string [12];
Name: string [20];
Sng: integer;
Nop: integer;
Uop: integer;
Skop: integer;
End;
Varf: file of table;x: table;beginclrscr;window (45,2,75,7);textcolor (5);writeln ( 'Курсова робота з інформатики');writeln ( 'Факультет АЕС група А-92');writeln ( 'студента: Грязіним Д.');window (1, 1, 80, 25);gotoxy (30, 5);writeln ( 'Частина 2');window (10, 8, 80, 20);writeln ( 'У файлі table.txt містяться довідкові відомості');writeln ( 'про підприємства-задолжніках зі сплати податків');writeln;writeln ( 'Завдання');writeln ( 'Видавати повні відомості про підприємства, які не');writeln ( 'нараховували податки у звітний період.');window (1, 1, 80, 25);gotoxy (10, 24);textcolor (4 + blink);writeln ( 'Для продовження натисніть Enter');readln;textcolor (10);clrscr;assign (f, table.txt);reset (f);writeln ( 'Відомості про підприємства, які не нараховували');writeln ( 'податки у звітний період');writeln ('+----------------------------------+');writeln ( '| № | ІНН | Найменування | 1 | 2 | 3 | 4 |');writeln ( '| ---+----------+----------------+----+----+---- +-----| ');while not Eof (f) dobeginread (f, x);with x doif Nop = 0 thenbeginwriteln ( '|' №: 3 '|', Inn: 12, '|', Name: 20, '|', Sng: 4, '|', Nop:
4, '|', Uop: 4, '|');writeln (Skop: 4, '|');end;end;writeln ('+---------------------------------------------- -------------------< br>------+');writeln;writeln ('1 - Відомості на початок року ');writeln ('2 - Нараховано податків в звітний період ');writeln ('3 - Сплачено податків у звітний преріод ');writeln ('4 - Відомості на кінець звітного преіода ');writeln;readln;end.
Глава 11. Результати другої частини курсової роботи p>
Відомості про підприємства які не нараховувалиподатки в звітний період.
+------------------------------------------------- ----------------------+< br>| № | ІНН | Найменування | 1 | 2 | 3 | 4 |
|-----+-----------------+------------------------+ ----+----+----+-----|< br>| 3 | 54090903618 | Дитячий садок № 275 | -8 | 0 | 8 | 0 |
| 10 | 54091032618 | Школа № 25 | -7 | 0 | 7 | 0 |
+------------------------------------------------- -----------------------+ p>
1 - Відомості на початок року
2 - Нараховано податків в звітний період
3 - Сплачено податків у звітний період
4 - Відомості на кінець звітного періоду p>
Висновок p>
Отриманий мною практичний досвід стосовно до програмування на
ПАСКАЛЬ дозволяє використовувати ефективне модульне програмування.
Крім того, вивчивши представлений в курсовому проектуванні матеріал, япридбав практичні навички використання процедур, функцій. Поряд з цимя навчився правильно використовувати файлові функції операційної системи MS-
DOS, що є одним з основних питань програмування. P>
Список використаних джерел: p>
Фаронов В. В., Турбо Паскаль 7.0., Навчальний посібник. - М.: «Нолидж», 1999. P>
Бляшкін И. И. Буров А. А. Нові можливості Турбо Паскаля 6.0. - СПб.:
Видавництво «Макет», 1992. P>
Фаронов М.М. Програмування на персональних ЕОМ в середовищі Турбопаскаль. -
М.: Издательство МГТУ, 1990. P>
----------------------- Початок p>
i: = 0 max: = 0 p>
Висновок упорядкованих відомостей p>
Дані про студента і про програму p>
кінець p>
f, 'table.txt'
' p>
Відкрити f p>
Заголовок p>
not eof (f) p>
f, x p>
Not Eof ( f) p>
Max: = sng p>
N1: = i p>
Read (f, x) p>
WITH x1 [i]
Sng> 0 p>
I: = i +1 p>
B [i]: = x p>
Sng> max p>
Вхід p>
randomize p>
I = 1, n p>
J = 1, n p>
a [i, j]: = random * 2-1; p>
Кінець p>
Вхід p>
a [i, j]: 6:2 p>
Вхід p>
I = 1, n p>
J = 1, n p>
Кінець p>
C [i] = 1 p>
I = 1, n p>
J = 1, n p>
C [i] = a [i, j] * c [i] p>
Кінець p>
Вхід p>
M = -2 p>
I = 1, n
C [i]> m p>
M = C [1] p>
MAX = M p>
Кінець p>
На початок p>
Дані про студента і про програму p>
FORM (A) p>
VIVOD (A) p>
PR (A) p >
MAX (C) p>
Висновок сформувалиний матриці та результатів p>
Кінець p>