Главная страница
Случайная страница
Разделы сайта
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Пример программы суммирования векторов
Program summa; Var a, b, c: array [1..100] of integer; I, n: byte; Begin Write (‘введите размерность массивов: ’); Readln(n); For i: =1 to n do Readln (a[i]); { ввод массива a} For i: =1 to n do Readln (b[i]); { ввод массива b} For i: =1 to n do C[i]: =a[i]+b[i]; { вычисление суммы массивов } For i: =1 to n do write (c[i], ’ ‘); { вывод массива с } end.
РІШЕННЯ ЗАДАЧ - ПРИКЛАДІВ
В якості прикладу розглянемо вирішення двох завдань з одномірним і двомірним масивами.
Приклад 1. Створити одновимірний речовинний масив з 25 елементів. Визначити максимальний та мінімальний елементи масиву і поміняти їх місцями. Отриманий результат вивести на екран.
Текст програми на мові Turbo Pascal:
PROGRAM MAS;
VAR
M: ARRAY [1.. 25] OF REAL; {Речовий масив}
MAX, MIN, MN: REAL;
I, K, N: INTEGER; {Допоміжні змінні}
BEGIN
{Введення речового масиву з 25 елементів}
FOR I: = 1 TO 25 DO READ (M [I]);
{Змінним MAX і MIN присвоюємо значення першого елемента масиву}
MAX: = M [1]; K: = 1;
MIN: = M [1]; N: = 1;
{Визначаємо максимальний та мінімальний елементи масиву і їх індекси}
FOR I: = 2 TO 25 DO
BEGIN
IF M [I]> MAX THEN
BEGIN
MAX: = M [I];
K: = I;
END;
IF M [I] < MIN THEN
BEGIN
MIN: = M [I];
N: = I;
END;
END;
{Міняємо місцями максимальний та мінімальний елементи}
MN: = M [K];
M [K]: = M [N];
M [N]: = MN;
{Висновок отриманого масиву на екран}
FOR I: = 1 TO 25 DO WRITELN (M [I]);
END.
Принципи структурного програмування. Поняття “підпрограми”. Визначення процедур та функцій користувачем. Порівняльна характеристика процедури та функції: опис, використання. Локальні, глобальні змінні. Фактичні та формальні параметри. Параметри–значення, параметри–змінні.
Підпрограмою називається іменована, логічно закінчена група операторів мови, яку можна викликати для виконання будь-яку кількість разів із різних місць програми. У мові Паскаль для організації підпрограм використовуються процедури і функції. Процедура - це незалежна поіменована частина програми, призначена для виконання визначених дій. Вона складається з тіла і заголовка. За структурою її можна розглядати як програму в мініатюрі. Після однократного опису процедуру дозволяється викликати за іменем з наступних частин програми. Використання імені процедури в програмі називається викликом процедури. Ім'я процедури не може знаходитися у виразі у якості операнду. Функція відрізняється від процедури тим, що, по-перше, передає в точку виклику скалярне значення (результат своєї роботи), а по-друге, ім'я функції може входити у вирази, як операнд. Функція, якщо вона зустрічається у виразі, називається покажчиком функції або звертанням до функції. Усі процедури і функції мови Паскаль підрозділяються на дві групи: вбудовані; визначені користувачем. Вбудовані (стандартні) процедури і функції є частиною мови і можуть викликатися за іменем без попереднього опису в розділі описового блока. З багатьма з них ви вже знайомилися в попередніх розділах. Процедури і функції користувача організовуються самим програмістом відповідно до синтаксису мови і являють собою локальні блоки. Попередній опис процедур і функцій користувача є обов'язковим. Функція, визначена користувачем, складається з заголовка і тіла функції. Заголовок містить зарезервоване слово Function, ідентифікатор (ім'я) функції та, укладений у круглі дужки, необов'язковий список формальних параметрів і тип значення, що повертається функцією. Формат опису: Function < ім'я> [(формальні параметри)]: < тип результату>; Ім'я функції - унікальний у межах блока ідентифікатор. Результат, що повертається, може мати будь-який простий тип і тип string. Тіло функції являє собою локальний блок, за структурою аналогічний програмі: Function < ім'я> [(формальні параметри)]: < тип результату>; [< розділи описів>; ] begin < розділ операторів> end; У розділі операторів повинен перебувати хоча б один оператор, що присвоює ідентифікатору функції значення. Якщо таких операторів декілька, то результатом виконання функції буде значення останнього оператора присвоювання. Звертання до функції здійснюється за іменем з необов'язковою вказівкою списку аргументів. Кожен аргумент повинен відповідати формальним параметрам, зазначеним у заголовку, і мати той же тип. Формат звертання: Y: =< ідентифікатор функції > [(фактичні параметри)]; Функції можуть повертати значення цілих, дійсних, булівских, літерних і рядкових типів. Опис процедури включає заголовок (ім'я) і тіло процедури. Заголовок складається з зарезервованого слова Procedure, ідентифікатора (імені) процедури і необов'язкового списку формальних параметрів із вказівкою їх типу, який укладається в круглі дужки. Формат опису: Procedure < ім'я> [(формальні параметри)]; Приклад: Procedure Korrekt; Procedure Sort (A: byte); Ім'я процедури - ідентифікатор, унікальний у межах програми. Тіло процедури являє собою локальний блок, за структурою аналогічний програмі: Procedure < ім'я> [(формальні параметри)]; [< розділи описів>; ] begin < розділи операторів> end; Зверніть увагу, що як формальні параметри, так і розділ описів у процедурі може бути відсутній. Щоб звернутися до процедури, треба використати оператор виклику процедури. Він складається з ідентифікатора (імені) процедури і списку фактичних параметрів, що відділені один від одного комами і знаходяться у круглих дужках. Якщо процедурі не передається ніяких параметрів, то фактичні параметри не вказуються. Формат виклику процедури: < ідентифікатор> [(фактичні параметри)]; Параметри забезпечують механізм заміни, який дозволяє виконувати процедуру з різними початковими даними. Між фактичними параметрами в операторі виклику процедури і формальними параметрами у заголовку опису процедури встановлюється взаємо-однозначна відповідність у результаті їхнього перебору зліва направо. Фактичні параметри за кількістю і типами повинні дорівнювати кількості і типам формальних параметрів. Параметри, за допомогою яких здійснюється обмін значеннями змінних між підпрограмами та програмою, що їх викликає, можуть мати будь-який тип, в тому числі структурований. Існують два типи параметрів: параметр-значення; параметр-змінна. Група параметрів, перед якими відсутнє зарезервоване слово Var, називається параметрами-значеннями. Наприклад, в описі Procedure Korrect(S, K: real) S і K - параметри-значення. Формальний параметр-значення обробляється, як локальна стосовно процедури або функції, змінна. Зміни формальних параметрів-значень не впливають на відповідні значення фактичних параметрів. Група параметрів, перед якими знаходиться ключове слово Var, називається параметрами-змінними. Наприклад, в описі Procedure Obr(Var A, B: integer); А та В - параметри-змінні. Параметр-змінна використовується в тому випадку, якщо значення повинно бути передане з процедури в блок, що її викликає. При активізації процедури або функції формальний параметр-змінна заміщується фактичною змінною, а тому будь-які зміни в значенні формального параметра-змінної відбиваються на фактичному параметрі. І в тому, і в іншому випадку тип фактичного параметра повинен збігатися з типом формального. Якщо формальний параметр має рядковий тип, йому надається атрибут довжини, рівний 255, а тому і фактичний параметр в цьому випадку повинен також мати рядковий тип з атрибутом довжини, що дорівнює 255. У якості параметра-змінної може використовуватися будь-який тип, в тому числі файловий. Область дії ідентифікаторів. Для правильного визначення області дії ідентифікаторів при використанні в програмі процедур і функцій необхідно притримуватися наступних правил:
1. Кожний ідентифікатор повинен бути описаний перед тим, як він буде використаний. 2. Ідентифікатор діє у межах блоку, в якому він описаний. 3. Всі ідентифікатори в одному блоці повинні бути унікальними, тобто не повторюватися. 4. Однакові ідентифікатори можуть бути по-різному визначені у кожному окремому блоці, але це вважається поганим стилем програмування і тому не рекомендується в різних блоках програми використовувати змінні з однаковими іменами.. 5. Якщо ідентифікатор підпрограми користувача збігається з ім'ям стандартної процедури або функції, то вони стають недоступними в межах області дії підпрограми, оголошеної користувачем, тобто стандартна функція ігнорується, а виконується програма користувача.
Кожна процедура або функція, тобто допоміжний алгоритм, це - " держава в державі, мініпрограма в програмі. Структура процедур та функцій така сама, як і всієї програми. Проте все, що описано в процедурах та функціях, доступно лише цим процедурам та функціям і не поширюється на всю програму. Логічно ці можливості назвати локальними. А всі можливості, що передбачені в основній програмі, доступні як основній програмі, так і всім процедурам та функціям, що в ній описані. Вони називаються глобальними.
Усе це поширюється, в першу чергу, на змінні. Цікавий сам процес виконання процедур та функцій. Усім змінним, що описані в них, місце в пам'яті відводиться тільки на час виконання цих процедур або функцій. Після того, як процедура або функція відпрацює, пам'ять від них звільняється. Це наводить на думку, що в різних процедурах та функціях програми, та й у самій цій програмі можуть використовуватися однакові ідентифікатори, і змінні, що їм відповідають, не будуть заважати одні одним. Схематично принцип дії глобальних та локальних змінних можна простежити на такому прикладі:
| A, B, C - глобальні змінні;
X, Y - локальні змінні для підпрограми 1 та глобальні змінні для підпрограми 2;
M, N - локальні змінні для підпрограми 2;
K, L - локальні змінні для підпрограми 3.
| 14. Програмування на Turbo Pascal - це в першу чергу написання деяких процедур або функцій, тобто готових до використання в середовищі Turbo Pascal програм. Якщо ви хочете включити текст процедури або функції прямо в текст програми (а не викликати його з бібліотеки), то його необхідно помістити в тексті програми безпосередньо перед основним блоком програми (перед описом констант, типів та змінних). Загальна структура процедур та функцій має такий вигляд:
Program назва програми; Label підрозділ опису локальних міток; Const підрозділ опису глобальних констант; Type підрозділ опису глобальних типів; Var підрозділ опису глобальних змінних;
Procedure назва процедури (список параметрів); Label підрозділ опису локальних міток; Const підрозділ опису локальних міток Type підрозділ опису локальних типів; Var підрозділ опису локальних змінних; Begin Основний блок процедури або функції; End;
|