Сторінка
5

Паскаль: область дії, модулі, структури

4. Приклади створення та використання модулів Приклад 7.4. Ще раз повернемося до задачі 3.21 і напишемо варіант її розв'язання, реалізувавши поняття "точка площини" і "пряма площини" у новому модулі Geoplan. Його інтерфейсний розділ має починатися з означень імен типів для множин точок і прямих: type Point : record x, y : real end; Line : record a, b, c : real end; Далі запишемо заголовки підпрограм normcoef і oneside, указавши замість пар і трійок дійсних параметрів параметри типу Point і Line: procedure normcoef(p1, p2 : Point; var lin : Line); function oneside(p1, p2 : Point; lin : Line) : boolean; Далі додамо заголовок підпрограми "читання точки", яку природно викликати в програмах, що мають справу з точками: procedure RdPoint(var p : Point); Далі нам будуть потрібні інші типи та підпрограми – додаватимемо їх до модуля за необхідності. А поки інтерфейсний розділ на цьому закінчується. У розділі реалізації запишемо блоки підпрограм із скороченими заголовками, описавши обробку параметрів через обробку їх компонентів: procedure normcoef; begin if p1.x=p2.x then begin lin.b:=0; lin.a:=1; lin.c:=-p1. x end else begin lin.b := 1; lin.a := (p1.y - p2.y)/(p2.x - p1.x); lin.c := -p1.y - lin.a * p1.x end end; function oneside; begin oneside:=(lin.a*p1.x+lin.b*p1.y+lin.c)*(lin.a*p2.x+lin.b*p2.y+lin.c)>0 end; Читання точки задається через читання її координат: procedure RdPoint; begin readln(p.x, p.y) end; От, власне, і весь модуль Geoplan – його остаточне оформлення залишаємо як вправу (див. підрозділи 7.1, 7.2). З використанням цього модуля програма Intriang набуває вигляду: program intriang(input, output); uses Geoplan; var p, {точка} pt1, pt2, pt3 : Point; {вершини} lin1, lin2, lin3: Line; {прямі} begin writeln('задайте координати точки площини:'); RdPoint(p); writeln('задайте координати трьох точок площини:'); RdPoint(pt1); RdPoint(pt2); RdPoint(pt3); normcoef(pt3, pt2, lin1);

normcoef(pt3, pt1, lin2);

normcoef(pt1, pt2, lin3); if oneside(p, pt1, lin1) and oneside(p, pt2, lin2) and oneside(p, pt3, lin3) then writeln('Так, точка всередині трикутника ') else writeln('Ні, точка зовні трикутника ') end. Задачі 7. Розв'язати задачі 3.20–3.22 з використанням модуля Geoplan, за необхідності додавши в нього нові означення. 8. Написати програму перевірки: а) чи лежать три точки площини на одній прямій; б) чи проходить пряма через дану точку площини; в)*чи належить точка площини заданому многокутнику (про його завдання див. приклад 7.5). 9. Раціональне число подається нескоротним дробом A/B, де B>0. Написати модуль, що містить означення типу раціональних чисел, підпрограми їх читання й запису, підпрограми застосування алгебраїчних операцій та порівняння (приклад 7.2). Додати в розділ реалізації модуля допоміжні підпрограми обчислення найбільшого спільного дільника двох цілих і скорочення дробу. З використанням модуля написати "найпростіший калькулятор" раціональних чисел (див. приклад 5.3).

Перейти на сторінку номер:
 1  2  3  4  5 


Інші реферати на тему «Інформатика»: