asyan.org
добавить свой файл
  1 ... 10 11 12 13 14 15 16

for <лічильник циклу> : = <вираз 1> to <вираз 2> do <тіло циклу>

де <лічильник циклу> - змінна будь-якого типу, <вираз 1> і <вираз 2> - вирази такого самого типу; <тіло циклу> - будь-яка послідовність операторів, що повторюється доти, доки <лічильник циклу> не набере значення <вираз 2>. <Лічильник циклу> збільшується на 1 після кожного виконання циклу. Для його зменшення на 1 зарезервоване слово to змінене на слово downto.

2. Цикл-поки (з передумовою)

До нього входять як базові такі структури: блок перевірки умови Р і блок S, що називається тілом циклу. Блок перевірки умови розташований раніше тіла циклу і керує роботою циклу. Оскільки тіло циклу S розташоване після перевірки умови Р, то може статися, що за певних умов блок S не буде виконано жодного разу.

Циклічні програми з передумовою мовою Паскаль реалізовані за допомогою оператора циклу while:

while <вираз> do <оператор>

де <вираз> - будь-який вираз логічного типу (що виробляє в результаті True або False); <оператор> - оператор (складений оператор) мови Паскаль. Якщо вираз набуде значення True, то виконується <оператор>, в іншому разі виконання циклу завершується.

3. Цикл-до (з постумовою)

Характеризується тим, що перевірка умови Р стоїть після тіла циклу. Під час роботи циклу з постумовою тіло циклу S виконується принаймі один раз і буде виконуватися доти, доки не справдиться умова Р. Справдження умови Р в цьому випадку – умова закінчення циклу. Циклічні програми з постумовою мовою Паскаль реалізовані за допомогою оператора циклу repeat:

repeat

<тіло циклу>

until

де <тіло циклу> - будь-яка послідовність операторів, що повторюється доти, доки <вираз> не набере значення True.

Опис процедур та функцій процедурною мовою програмування. Формальнi та фактичнi параметри.

Підпрограма – це самостійна частина програми, що реалізує певний алгоритм. Підпрограми зручно використовувати, коли в програмі доводиться виконувати ті самі дії, але з різними даними. Розрізняють два типи підпрограм: процедури і функції. Процедури використовуються для задання послідовності дій, спрямованих на зміну зовнішньої по відношенню до неї програмної обстановки. Прикладами таких змін є визначення нових змінних, запис інформації у зовнішній файл. Виклик процедури здійснюється вказуванням її імені у тому місці програми, де передбачається виконання операторів, заданих в процедурі. Функції служать насамперед для визначення алгоритма обчислення деякого значення простого типу. Відповідно до цього виклик функції є одним з допустимих операндів виразу, визначаючи в ньому те значення, яке обчислює, повертає функція.

Формальні параметри – це параметри, описані в заголовку процедури. Значення величини, що вказується у виклику процедури, називається фактичним параметром процедури, або параметром виклику процедури. Кількість і тип фактичних параметрів мають суворо відповідати кількості й типам формальних параметрів. Зміст використовуваних фактичних параметрів залежить від того, у якому порядку вони перераховані при виклику процедури. Фактичний параметр є значенням, що замінює собою формальний параметр при виконанні процедури; з цим значенням параметра виконується викликана процедура. Локальні змінні (від лат. – місце) – це змінні, описані в розділі описів підпрограми. Локальні змінні можуть використовуватися й мінятися тільки операторами даної підпрограми. Локальні об’єкти створюються при вході в процедуру і знищуються при виході з неї.

1. Локальні змінні недоступні поза процедурою чи функцією.

2. Зміни, що відбуваються із змінними у процедурі, не впливають на значення змінних з тими ж іменами, але які описані поза даною процедурою

Глобальні змінні – це змінні, описані в розділі описів головної програми.

1. Глобальні змінні доступні поза процедурою чи функцією.

2. Будь-яка зміна глобальної змінної у процедурі змінює її значення поза процедурою.

Процедури:

1. Стандартні (є частиною ТУРБО-системи і можуть бути викликані без оголошення): процедури для роботи з рядками; з файлами; процедури розміщення динамічних параметрів; введння-виведення; процедури завершення

2. Які визначаються користувачем (оголошуються у розділі описів)

Для використання процедур у програмі широко розповсюдженою мовою програмування Паскаль їх необхідно описати в розділі описів головної програми. Опис міститься в програмі після розділу опису змінних і складається і з заголовка і тіла процедури. Заголовок процедури складається із службового слова procedure, ідентифікатора процедури і списку формальних параметрів, взятого в круглі дужки. Елементи списку параметрів відокремлюються один від одного комами:

procedure <ім’я процедури> (<параметри>);

Тіло процедури за структурою аналогічне програмі, тобто містить описи об’єктів: міток, констант, типів, змінних, а також розділ операторів. Розглянемо як приклад процедуру обчислення дискримінанта квадратного рівняння:

procedure Discr (A, B, C, D: real);

begin

D:=B*B-4*A*C;

end;

Відмінність функцій від процедур полягає у тому, що результати обчислень, виконаних процедурою, присвоюються певним аргументам процедури, в той час як результат обчислення функції присвоюється самій функції. Для використання функції в програмі мовою Паскаль її необхідно описати в розділі головної програми. Опис функції починається з заголовка function і закінчується типом даних значення, що повертається:

function <ім’я функції> (<параметри>): <тип даних>;

Складений оператор, що розташовується в описі функцій після заголовка і, можливо, після опису локальних міток і змінних, повинен обов’язково містити у собі оператор присвоювання, у якому ліворуч від := розміщене ім’я функції.

Розглянемо як приклад функцію обчислення площі трикутника за формулою Герона:

function Geron (a,b,c: real): real;

var p: real;

begin

p:=(a+b+c)/2;

Geron:=Sqrt(p*(p-a)*(p-b)*(p-c))

end;

Рекурсивнi алгоритми. Реалізація рекурсивних алгоритмів процедурною мовою програмування

Рекурсія – спосіб звернення процедури або функції до самої себе, але із зміненими вхідними даними. Рекурсію зручно використовувати в задачах, що зводяться до розв’язання підзадач одного типу, але різної розмірності. Наприклад, обчислення факторіала числа n можна подати через звертання до обчислення факторіала числа n-1:

n!=n(n-1)!

Рекурсивний алгоритм – це алгоритм при виконанні якого зустрічається вказівка про виконання його самого. Рекурсія може бути прямою (безпосередньою) – якщо в алгоритмі є вказівки про виконання цього ж алгоритму, або опосередкованою – в алгоритмі немає прямих вказівок про виконання цього ж алгоритму, але є вказівки про виконання інших алгоритмів, в яких є вказівки про виконання даного алгоритму. В такий спосіб в алгоритмі можуть бути опосередковані посилання через інші алгоритми на цей самий алгоритм.

Будь-яка рекурсія містить три елементи: 1) початкове значення проміжного результату (на нульовому кроці) перед початком прямого ходу; 2) спосіб одержання проміжного результату на і-му кроці прямого ходу через проміжний результат, одержаний на (і-1)-му кроці; 3) умова завершення процесу.

Розглянемо приклад рекурсивного виклику на обчисленні степеня числа х^n, де х - будь-яке дійсне число, а n - ціле, додатне число. Очевидно, що



В даному випадку зупинкою для обчислень буде обчислення x0, так як відомо, що нульова степінь будь-якого числа дорівнює 1. Тобто рекурсивна функція для обчислення степеня числа буде мати наступний вигляд:

Function Step(x:real; n:integer):real:

Begin

If n = 0

then Step:=1

else Step:=Step(x,n-1)*x;

End;

Проаналізуємо роботу цієї функції на прикладі знаходження значення 23. При першому виклику функції значення змінних буде дорівнювати відповідно:

x = 2

n = 3.

Так як значення n не дорівнює 0 спрацює гілка else, тобто почне виконуватись такий оператор

Step:=Step(x,n-1)*x;

де x буде дорівнювати 2, і n - теж 2.

Цей оператор містить виклик функції step, тому виконання підпрограми перерветься і виконається виклик тієї ж самої функції step, але з параметрами x=2 та n=1. При виконанні повторного виклику функції ситуація повториться, так як n поки ще не дорівнює 0 і тільки на четвертому виклику функції step параметр n досягне нульового значення, після чого спрацює гілка then, яка присвоїть значення функції 1.

В даній найпростішій рекурсії ніякі дії при вході в рекурсію не відбуваються, але при виході з рекурсії необхідно знати точки, з яких здійснювався вхід в чергову функцію, щоб мати можливість повернутися в них. Ці точки виклику запам'ятовуються у спеціалізованій пам'яті, що зветься стек, і потім по черзі являються тими точками повернення, які використовує система при зворотному русі з рекурсії.

Очевидно, що виконання рекурсії є досить складним процесом, який крім того вимагає суттєвих витрат додаткових ресурсів (що найменше пам'яті). Тому використання рекурсії не рекомендується в тих випадках, коли вона просто замінюється ітеративним процесом (як в наведеному прикладі). Однак, існує велика кількість досить складних алгоритмів, які без використання рекурсії мають дуже заплутану логіку роботи.

Модульне програмування та його реалізація в системах процедурного програмування.

Модульне програмування — парадигма програмування, основна ідея полягає в:

- реалізації обчислювальних процесів у вигляді окремих програмних одиниць - модулів;

- звертанні до цих модулів в інших програмах з передачею даних, необхідних для обчислювального процесу.

Якщо в деякій програмі використовуються власні процедури досить великого розміру, то ці процедури найкраще оформити в вигляді окремого модуля. Модуль – це автономно компілююча програмна одиниця, що включає в себе різні компоненти розділу описів (типи, константи, змінні, процедури і функції). По-перше, модуль може зберігатися як в вихідному виді в PAS-файлі, так і в відкомпільованому файлі з розширенням TPU (Turbo Pascal Unit - модуль ТУРБО ПАСКАЛЬ). Усі процедури не компілюються щораз при перекомпіляції основної програми, а просто їхній код, що міститься в tpu-файлі, компонується з кодом основної програми. Це значно заощаджує час загальної компіляції задачі. По-друге, винесення множини процедур в окремий модуль розвантажує текст основної програми від зайвої захаращеності, робить його більш компактним і зрозумілим для сприйняття. По-третє, модулі з процедурами, що часто зустрічаються в різноманітних програмах, заощаджують час при написанні нових програм. Для цього достатньо помістити потрібний tpu-файл в каталог із новим проектом, в основній програмі підключити цей модуль в рядку uses і далі просто використовувати процедури з цього модуля в тексті основної програми. Будова модуля нагадує створення нової програми. в окремому pas-файлі записується заголовок модуля, константи, змінні, процедури і функції, які використовуються в цьому модулеві:

Структура

Unit <ім’я>;

Interface <інтерфейсна частина>; (розділ описів)

Const глобальні_константи;

Var глобальні_змінні;

Procedure Ім’я (параметри);

Function Ім’я (параметри): тип; ...

Implementation <виконуюча частина>;{розділ реалізації}

Const локальні_константи;

Var локальні_змінні;

Procedure Ім’я; ...

Function Ім’я; ...

Begin <ініціююча частина>;

End.

Огляд стандартних модулів

В ТР є 8 стандартних модулів: system, dos, crt, printer, graph, overlay, turbo3, graph3.

system. До нього входять всі стандартні процедури і функції Паскаля, а також вбудовані процедури і функції, що не ввійшли в інші стандартні модулі.

printer. Вивід тексту на принтер

crt. Входять процедури і функції, що забезпечують управління текстовим режимом роботи екрана. Можна переміщувати курсор в будь-яку позицію екрана, змінювати колір символів і фону.

30. Об’єктно-орієнтоване та візуальне програмування. Основні положення методології об’єктно-орієнтованого і візуального програмування. Об’єктна модель системи об’єктно-орієнтованого візуального програмування: поняття класу, властивостей класу, методів класу та їх використання в процесі реалізації взаємодії об’єктів. Інкапсуляція, успадкування, поліморфізм.
Об’єктна модель системи об’єктно-орієнтованого візуального програмування: поняття класу, властивостей класу, методів класу та їх використання в процесі реалізації взаємодії об’єктів.

Об'єктно́-орієнтоване́ програмува́ння (ООП) — одна з парадигм програмування, яка розглядає програму як множину «об'єктів», що взаємодіють між собою. В ній використано декілька технологій від попередніх парадигм, зокрема успадкування, модульність, поліморфізм та інкапсуляцію. Не зважаючи на те, що ця парадигма з'явилась в 1960-тих роках, вона не мала широкого застосування до 1990-тих. На сьогодні багато із мов програмування (зокрема, Java, ActionScript 3, C#, C++, Python, PHP, Ruby та Objective-C) підтримують ООП.

Клас визначає абстрактні характеристики деякої сутності, включаючи характеристики самої сутності (її атрибути або властивості) та дії, які вона здатна виконувати (її поведінки, методи або можливості). Наприклад, клас Собака може характеризуватись рисами, притаманними всім собакам, зокрема: порода, колір хутра Класи вносять модульність та структурованість в об'єктно-орієнтовану програму. Як правило, клас має бути зрозумілим для не-програмістів, що знаються на предметній області, що, у свою чергу, значить, що клас повинен мати значення в контексті. Також, код реалізації класу має бути досить самодостатнім. Властивості та методи класу, разом називаються його членами.

Метод

Можливості об'єкту. Оскільки Сірко — Собака, він може гавкати. Тому гавкати() є одним із методів об'єкту Сірко. Він може мати і інші методи, зокрема: місце(), або їсти(). В межах програми, використання методу має впливати лише один об'єкт; всі Собаки можуть гавкати, але треба щоб гавкала лише одна окрема собака.

Приховування інформації (інкапсуляція)

Приховування деталей про роботу класів від об'єктів, що їх використовують або надсилають їм повідомлення. Так, наприклад, клас Собака має метод гавкати(). Реалізація цього методу описує як саме повинно відбуватись гавкання (приміром, спочатку вдихнути() а потім видихнути() на обраній частоті та гучності). Петро, хазяїн пса Сірка, не повинен знати як він гавкає. Інкапсуляція досягається шляхом вказування, які класи можуть звертатися до членів об'єкту

Успадкування

В деяких випадках, клас може мати «підкласи», спеціалізовані версії класу. Наприклад, клас Собака може мати підкласи Коллі та Пікінес. В цьому випадку, Сірко буде екземпляром класу Вівчарка. Підкласи успадковують атрибути та поведінку своїх батьківських класів, і можуть вводити свої власні.



<< предыдущая страница   следующая страница >>