Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Функції і процедур, визначувані програмістомСодержание книги Поиск на нашем сайте
Завдання 1: Скласти програму, використовуючи процедури. Умови завдань приведені в таблиці 7.1. Завдання 2: Скласти програму обчислення функції Z використовуючи функції, визначені програмістом (таблиця 7.2).
У мові Паскаль існує два типи підпрограм - процедури і функції. Найбільш ефективним засобом для вирішення складних завдань є програми, написані ієрархічним шляхом. Програму, що складається тільки з великого числа інструкцій, називають монолітною. Програму, що складається з процедур і функцій, називають модульною. Модульна програма має ієрархічну структуру.
Процедури У Паскалі процедурою називають частину програми, що має ім'я і призначену для вирішення певного завдання. Процедуру, так само як і решту всіх об'єктів програми, перед використанням необхідно оголосити. Оголошення процедур і функцій здійснюється після оголошення змінних і перед тілом програми (перед першим словом BEGIN), тобто процедура і функція оголошуються останніми в розділі оголошень. У Паскалі прийнятий наступний порядок оголошень:
· мітка LABEL; · константи CONST; · типи TYPE; · змінні VAR; · процедури і функції PROCEDURE, FUNCTION;
Кожна процедура визначається тільки один раз, але може використовуватися багато разів в наступних частинах програми, задаючи її ім'я.
Загальна форма запису: PROCEDURE ім'я (список параметрів); оголошення; BEGIN тіло процедури END;
Процедури, що мають внутрішні описи (оголошення), повинні слідувати тим же правилам розташування описів, що і основна програма. Таким чином, процедури треба сприймати як програму в мініатюрі. У них можуть бути власні змінні, власні описи типів і навіть власні процедури і функції.
Змінні, використовувані тільки усередині процедури, називаються локальними. Змінні, які використовуються і в процедурі і в основній програмі називаються глобальними.
Приклад. program prim; var a,b:integer; procedure pas(i:integer); var b:real;k:integer; begin a:=0; for k:=1 to i do a:=a+k; b:=cos(a); end; begin { основна програма} a:=a+1;b:=0; pas(5); writeln('a=',a,'b=',b); end.
У даному прикладі змінна А є глобальною, оскільки вона визначена тільки в основній частині програми, і відома як в викликанній програмі, так і в процедурі, але тільки в тому разі якщо в процедурі немає іншого оголошення А. змінна К є локальною, вона оголошена в процедурі і не доступна для викликанної програми. Будь-яке оголошення ідентифікатора в процедурі робить недоступним об'єкт, що має те ж ім'я і оголошений в зовнішньої по відношенню до процедури частини програми. Наприклад, для програми. У є цілій змінній, але в процедурі PAS є своя власна змінна,щовідноситься до типу REAL. Процедурі PAS недоступна змінна В з головної програми. Всі зміни, що відбуваються із змінній в процедурі PAS, стають неістотними при виході з цієї процедури. Отже, після виклику процедури і виконання інструкції WRITELN, на екрані з'явиться А=16 В=0.
Паскаль дає можливість задавати параметри, що набувають певних значень в процедурі. Такі змінні називаються формальними параметрами. Таким формальним параметром є змінна i, розташована в дужках при описі процедури, і далі в зухвалій програмі цієї змінної при виклику привласнено значення, рівне 5.
Функції
Функція відрізняється від процедури тільки тим, що завжди повертає в точку виклику скалярне значення. Таким чином, визначення функції схоже на визначення процедури. Відмітні особливості функції:
Загальна форма запису: FUNCTION ім'я (список параметрів): тип результату; FUNCTION ім'я: тип результату;
Тип результату представляється ідентифікатором типу, який описує тип значення, що отримується після виконання функції. Список параметрів будується з параметрів даної функції. Якщо список параметрів не визначений, то функції ніякі аргументи не передаються. Тип результату функції є або порядковим, або REAL. Результат функції не може бути масивом або іншим структурованим типом. Тип параметра може бути будь-яким, включаючи структурований.
Приклад.
program summa; var a:integer; function sum(b,c:integer):integer; begin sum:=b+c; end; begin {тіло основної програми} a:=sum(5,4); writeln('сума дорівнює ',a:2); end.
Таблиця 7.1 - Варіанти завдань для лабораторної роботи № 7 (процедури)
Таблиця 7.2 - Варіанти завдань для лабораторної роботи № 6 (функції)
ЛАБОРАТОРНА РОБОТА № 8 МОДУЛІ І ДИНАМІЧНО ЗВ'ЯЗУВАНІ БІБЛІОТЕКИ.
Завдання: написати модуль і динамічну бібліотеку, для створення особистих бібліотек процедур і функцій. Розробити програму з використанням модуля і динамічної бібліотеки.
Модулі призначені для підтримки принципів модульного програмування при розробці програм. Згідно цьому принципу взаємовплив логічно незалежних фрагментів програми повинен бути зведений до мінімуму. У мові Borland Pascal модулі використовуються переважно для створення бібліотек процедур, функцій і об'єктів, які потім можуть використовуватися в програмах, що розробляються користувачем.
Структура модулів Модуль складається з 4 частин: Заголовка модуля; Розділу оголошень або інтерфейсу; Розділу реалізації; Розділу ініціалізації.
UNIT M; INTERFACE IMPLEMENTATION END.
Заголовок модуля починається із зарезервованого слова UNIT, за яким слідує ім'я модуля.
Інтерфейсний розділ позначається словом INTERFACE, після чого при необхідності можуть розташовуватися: розділ підключення модулів розділ опису констант розділ опису типів змінних розділ опису змінних розділ заголовків процедур і функцій.
Розділ реалізації починається словом IMPLEMENTATION, який у свою чергу при необхідності може складатися з розділів: розділ підключення модулів розділ опису міток розділ опису констант розділ опису типів змінних розділ опису змінних розділ описів процедур і функцій.
Розділ ініціалізації закінчується, словом END. У ньому можуть знаходитися оператори, які задають стартові значення для викликаючої програми.
Використовуючи модулі важливо правильно указувати їх імена. При підключенні стандартні модулі досить коректно записати їх ідентифікатори в пропозиції USES. При розробці власних модулів необхідно пам'ятати деякі особливості: ♦ не допускається одночасне використання модулів з однаковими іменами; ♦ ідентифікатор модуля, вказаний в заголовку (UNIT ), повинен співпадати з іменами файлів, що містять початковий (.раs) і об'єктний (.трu,.трр,.трw) код; ♦ якщо ідентифікатор модуля довший за вісім символів, то він повинен співпадати з іменами файлів по перших восьми символах.
Динамічно зв'язувані бібліотеки - Dynamically Linked Libraries (DLL) - надають собою прикладним програмам, які згодом можна використовувати разом із стандартними. Цінність бібліотек DLL полягає в тому, що вони після завантаження в оперативну пам'ять можуть спільно використовуватися декількома прикладними програмами. Хоча DLL для DOS працюють в захищеному режимі DOS, проте вони повністю сумісні з DLL для Windows. Ця властивість дозволяє розробникам створювати програми що працюють як в DOS, так і в Windows. DLL підтримують "багатоязикові" проекти в програмах, написаних на мові Borland Pascal допускається використання DLL, створених на інших мовах, а в програмах, написаних на інших мовах, допускається використання DLL, створених на Borland Pascal. Синтаксис опису динамічно зв'язуваної бібліотеки має наступний вигляд:
Бібліотека заголовок бібліотеки; пропозиція USES блок розділ експорту розділ ініціалізації.
Мовна конструкція "динамічно зв'язувана бібліотека" з одного боку є продовженням і розвитком конструкції "модуль", а з іншого боку має деякі обмеження в порівнянні з нею. Особливості DLL полягають в наступних відмінностях: компоновка модулів з головною програмою виконується статично під час компіляції, а DLL - динамічно, під час виконання програми. Це дозволяє для декількох одночасно працюючих програм тримати в оперативній пам'яті тільки по одній копії процедур і функцій.
♦ Код і ресурси DLL, на відміну від модуля, не компонуються з програмою, що використовує її, а знаходяться в окремому виконуваному файлі з розширенням. DLL, який повинен бути доступним при виконанні програми. Процедури і функції DLL, що викликаються програмою, зв'язуються з нею динамічно; ♦ Обмеженість DLL в порівнянні з модулями полягає в тому, що модулі можуть експортувати різні мовні одиниці (типи, константи, змінні і так далі), а DLL тільки процедури і функції. Хоча DLL може містити змінні, проте модулі не зможуть імпортувати їх для використання. Будь-який доступ до змінних DLL повинен здійснюватися через процедурний інтерфейс; ♦ При запуску створеної користувачем програми на компіляцію, DLL, використовувані в ній автоматично, не компілюються як модулі. DLL потрібно компілювати окремо.
ЛАБОРАТОРНА РОБОТА № 9 МНОЖИНИ І ОПЕРАЦІЇ НАД НИМИ Завдання. Робота з множинами. Умови завдань приведені в таблиці 9
Множиною називається сукупність об'єктів. Множина відноситься до структурованих типів даних. Загальна форма запису: ім'я: SET OF тип компонент; Членами множини можуть бути значення порядкового типу. Тип, якому повинні належати всі члени множини, називаються базовим типом множини і максимально можливе число елементів, що входять в одну множину, 255.
Оголошення: SET OF CHAR;
SET OF 1...50;
У програмі множина задається у вигляді списку елементів, взятих в квадратні дужки. Як елемент може виступати константа, змінна, вираз або інтервал значень. Отже, в Паскалі можна використовувати наступні інструкції привласнення: M:=[]; (*порожня множина *) M:=[MAR]; (*множину включає один елемент *) M:=[JAN...APR,AUG,OKT...DEC]; (*у множину входять елементи JAN,FEB,MAR,APR,AUG,OKT,NOV,DEC *)
M:=[RED,A]; (*у множину входять елементи RED і значення змінної M *)
Операції над множинами
Операція приналежності множині. У мові Паскаль існує можливість визначення приналежності деякого значення безлічі його елементів. Ця можливість реалізується операцією IN. Наприклад: red IN color; Операнд, розташований зліва від слова IN, - значення базового типу операнд, що стоїть справа, - ім'я множини. Результатом є значення типу BOOLEAN: TRUE, якщо значення є елементом множини; FALSE, якщо немає. Наприклад:
if today in week days then writeln (' сьогодні робочий день') else writeln (' сьогодні день відпочинку')
Об'єднання множин Об'єднання двох множин є множина, складена з елементів обох множин. Для позначення операції об'єднання множин використовується знаком "плюс" ("+"). Наприклад:
[red, blue]+[yelloy] = [red,blue,yelloy]
Перетин множин Перетином двох множин є множина, що складається з елементів, які входять одночасно в обидві множини. Для позначення операції перетину множин використовується знак "зірочка" ("*"). Наприклад: [red,blue]*[red,yellou,green] =[red]
Різниця множин Різницею двох множин є множина, що складається з елементів першої множини, які не є елементами другої множини. Для позначення операції різниці двох множин застосовується знак "мінус" ("-"). Наприклад: [red,blue]-[green,red]=[blue]
Таблиця 9 - Варіанти завдань для лабораторної роботи № 9
ЛАБОРАТОРНА РОБОТА № 10 КОМБІНОВАНІ ТИПИ (ЗАПИСИ) Завдання. Написати програму з використанням записів. Умови завдань приведені в таблиці 10.
Записом є сукупність різнотипних даних. Запису зручно використовувати, коли різноманітні дані, що відносяться до одного і того ж об'єкту, необхідно об'єднати. До компонентів запису необхідно звертатися по імені. Наприклад, в запис про студентів можуть входити: Ім'я Прізвище Дата народження Рік навчання і так далі
Комбінованих типів, об'єктами яких є записи, здійснюється за допомогою ключового слова RECORD. Записи складаються з фіксованого числа компонент, званих полями. При оголошенні повинні бути вказані ім'я і тип кожного поля. Ім'ям поля може бути будь-який ідентифікатор. Оголошення запису закінчується зарезервованим словом END.
Приклади оголошень запису: type date = record day:1...31; month:(jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec); year:integer; end; Тип date включає три поля: day, month і year. day відноситься до інтервального типу, month - до перераховуваного і year - до цілого. Після введення типу date можна визначити змінні, значення яких належать цим типам. var secondary,firstday:date;
Інструкція WITH Для компактнішого запису привласнення значень всім полям запису в Паскалі передбачена інструкція WITH. Загальна форма запису: WITH ім'я запису DO оператор
В цьому випадку програміст тільки один раз згадує в програмі ім'я запису, а імена полів використовує як прості змінні. Наприклад: with firstday do begin day:=3; month:='jun'; year:=1989; end; Таким чином, за допомогою інструкції WITH встановлюється область, усередині якої до компонентів запису можна звертатися на ім'я полів, не вживаючи ні імені запису, ні крапки.
Таблиця 10 - Варіанти завдань для лабораторної роботи № 10
ЛАБОРАТОРНА РОБОТА № 11 ФАЙЛИ І РОБОТА З НИМИ Завдання. Створити три типи файлів: типізований, текстовий і нетипізований. Умови завдань приведені в таблиці 11.
Файлом називається послідовність компонент, що відносяться до одного і того ж типу. Виділяються два основні типи файлів: файли послідовного і прямого доступу.
Файли послідовного доступу. Послідовний файл читають (записують) послідовно від початку до кінця, причому під час одного звернення прочитується (записується) один елемент файлу. Послідовний файл можна обробляти тільки з початку. Нові елементи завжди додаються в кінці файлу. Перед початком роботи з файлом його потрібно оголосити, наприклад: Type abc = file of integer; (*опис змінної файлу*) var f:abc; Файл може бути описаний і безпосередньо при описі змінної, наприклад : var f:file of real.
Робота з файлом (F) проводиться за допомогою наступних стандартних процедур: RESET(F) - підготовка до читання інформації з файлу з ім'ям F READ(F) - читання компоненти файлу F і перехід до наступної компоненти. До компоненти файлу можна звернутися як до значення буферної змінної. REWRITE(F) - підготовка до запису інформації в початок файлу F. WRITE (F) - запис значення буферної змінної у файл F.
В процесі зчитування інформації, що зберігається у файлі, необхідно перевіряти, чи є ще дані у файлі. У Паскалі це робиться за допомогою стандартної функції EOF(F), де F - ім'я файлу. Функція EOF (END OF FILE - кінець файлу) набуває значення TRUE, якщо всі записані у файл дані зчитані. Використання EOF дозволяє працювати з файлами невизначеної довжини.
Приклад. program raspozn(f); var f: file of integer (*оголошення файлу*) begin l:=1; (*об'єм файлу*) reset(f,'at:pp','dat',l);(* відкриття файлу для зчитування*) while not eof(f) do begin if f^<0 then writeln(' число від’ємне ') else if f^>0 then writeln(' число додатнє') else writeln('число дорівнює нулю') end; end.
Проте в кінці файлу відсутня ознака кінця файлу, тому функція EOF не завжди забезпечує правильну індикацію кінця файлу. Вирішувати цю проблему можна, застосувавши оператора, що закриває файл CLOSE(F).
Текстові файли
Текстовим називається файл, компонентами якого є символи. Тип текстового файлу (TEXT) в трансляторі з Паскаля зумовлений як TEXT = FILE OF CHAR (описувати в програмі цей тип не потрібний). Для запису в текстовий файл F значення символьної змінної S можна скористатися процедурою WRITE (F,s). Аналогічно для читання з текстового файлу можна використовувати процедуру READ (F,s). Якщо необхідно прочитати N символів і перейти до нового рядка файлу F, то можна використовувати оператора READLN (F, V1, V2...,VN).
Таблиця 11 - Варіанти завдань для лабораторної роботи № 11
ЛАБОРАТОРНА РОБОТА № 12
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2017-01-25; просмотров: 212; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.135.209.20 (0.015 с.) |