Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

производной от многочлена; 8) вычисление значение многочлена в точке x0.

Многочлен представить следующим типом:

Type Mnogochlen = Array [1] of integer;

Используя этот модуль, решить следующие задачи :

А) Найти наибольший общий делитель многочленов P(x) и Q(x).

В) Вычислить : PS(X) – QR(X) (S, R - натуральные).

188

15. Реализовать в виде модуля набор подпрограмм для выполнения

следующих операций над «длинными» действительными числами (числами,

выходящими за диапазон допустимых значений некоторого действительного

типа или не представимых в памяти ЭВМ) : 1) сложение; 2) вычитание; 3)

умножение; 4) нахождение частного от деления одного числа на другое с

заданным количеством знаков после запятой; 5) функции, реализующие

операции отношения (=, <>, >=, <=, >, <); 6) тригонометрические функции,

где аргументом и значением являются «длинные» действительные числа

(указание: использовать разложение соответствующей функции в ряд).

«Длинное» действительное число представить следующим типом:

Type Tsifra = 0 .. 9;

Chislo = Array[1] of Tsifra;

LongReal = Record

Znak : 0 ..1; {0- «плюс», 1 –«минус»}

Ts, Dr : Chislo; {целая и дробная части}

End;

Используя этот модуль, решить следующие задачи :

А) Возведение число в степень (основание – «длинное» действительное

число, показатель степени – «длинное» целое число)

В) Дан массив «длинных» действительных чисел. Упорядочить этот массив

по возрастанию.

Форма отчета о выполнении лабораторной работы.

Отчет должен содержать:

НЕ нашли? Не то? Что вы ищете?

1. Алгоритм решения задачи;

2. Программу реализации алгоритма;

3. Результат выполнения программы.

Блиц-тест.

1. Укажите вариант ответа, не входящий в структуру модуля:

A) Заголовок модуля.

B) Интерфейсный блок.

C) Блок реализации.

D) Локальный блок.

E) Блок инициализации.

2. Служебное слово, объявляющее реализацию модуля:

A) Unit

B) Implementation.

C) Interface.

D) Begin.

E) Uses.

3. Что такое модуль:

A) Программа, компилирующаяся независимо от основной.

B) Самостоятельно выполняющаяся программа.

C) Подпрограмма.

D) Основная программа.

189

E) Программа не компилирующаяся самостоятельно.

Контрольные вопросы.

1. Из каких частей состоит модуль?

2. Обязательно ли должны совпадать имя модуля и имя файла, в который

помещен модуль?

3. Обязательна ли секция инициализации в модуле?

4. Сколько раз выполняются операторы секции инициализации?

5. Как подключить к основной программе модуль пользователя?

Глоссарий.

Модуль – это автономно компилируемая программная единица для хранения

элементов, которые можно использовать в тех или иных программах.

В интерфейсной секции модуля определяются глобальные объекты,

доступные для программы и других модулей.

Исполнительная часть модуля включает все подпрограммы модуля в той

последовательности, в какой были даны их заголовки в интерфейсной части.

Секция инициализации содержит исполняемые операторы, которые

выполняются единственный раз в момент запуска программы, перед

обращением к модулю.

Литература.

1. «Turbo Pascal 7.0», М., Издательство «Нолидж», 1997

2. «Программирование на языке Турбо-Паскаль», Учебное

пособие, Алматы, АГУ,2000

3. TURBO PASCAL, СПб, Питер, 2000

4. . «Turbo Pascal 7.0», М., Финансы и статистика, 1998

5. Программирование на языке Паскаль./Под редакцией УСКОВОЙ О. Ф. –

СПб, Питер, 2002

Лабораторная работа №14.

ГРАФИЧЕСКИЕ ВОЗМОЖНОСТИ ТР

Цель: изучение базовых процедур и функций графических программ, изучение

методов построения и получение практических навыков создания программ

построения графиков функций.

Материалы и оборудование: ПК, среда Turbo Pascal, методические указания к

лабораторным работам.

Содержание и порядок выполнения работы:

1. Повторить теоретический материал по данной теме.

Инициализация графики

Видеорежимы

Прежде чем работать с графикой, необходимо установить наиболее

подходящий для Вашего монитора видеорежим. Turbo Pascal имеет

фиксированное число драйверов, каждый из которых поддерживает от одного

до трех видеорежимов. Тип драйвера и видеорежим задаются как число или как

символическая константа. Для режимов адаптера VGA используются

константы:

190

VGALo = 0 - графика низкого разрешения для VGA (640*200 точек, 16 цветов,

4 видеостраницы)

VGAMed = 1 - графика среднего разрешения для VGA (640*350 точек, 16

цветов, 2 видеостраницы)

VGAHi = 2 - графика высокого разрешения для VGA (640*480 точек, 16 цветов,

1 видеостраница)

Инициализация и закрытие видеорежима

После подключения модуля Graph программисту доступны все находящиеся в

нем подпрограммы. В первую очередь вызывается процедура InitGraph,

которая устанавливает один из возможных графических режимов. Формат

процедуры:

Initgraph(<драйвер>, <режим>, <путь>); где

<драйвер> - пременная типа integer, задающая тип графического драйвера;

<режим> - пременная типа integer, определяющая режим работы графического

адаптера;

<путь> - выражение типа string, содержащее путь к файлу графического

драйвера (если он находится в активном каталоге, то вместо указания пути

ставятся два апострофа - ' ').

Если Вы не знаете тип дисплея, то для задания типа драйвера можно

использовать стандартную константу Detect или ноль (0).

Начало программы для работы с графикой будет выглядеть так:

Program77;

Uses Crt, Graph;

Var

driver, regim: integer;

Begin

driver:=detect;

Initgraph (driver, regim,'');

Для закрытия графического режима используется не имеющая

параметров процедура Closegraph. В процессе ее выполнения освобождается

память, распределенная под драйверы графики, файлы шрифтов и

промежуточные данные и восстанавливается режим работы видеоадаптера до

состояния, в котором он находился до инициализации графического режима.

Процедура Restorecrtmode служит для кратковременного возврата в

текстовый режим. В отличие от процедуры Closegraph, не сбрасываются

установленные параметры графического режима и не освобождается память,

выделенная для размещения графического драйвера. Выполнив необходимые

действия в текстовом режиме, можно вернуться в графический процедурой

setgraphmode (getgraphmode).

Для очистки графического экрана используется процедура ClearDevice.

Производится очистка всего экрана с отменой всех настроек экрана, процедур и

функций, сделанных до этого и графический курсор устанавливается на первую

точку экрана (0,0).

Процедура Graphdefaults сбрасывает все установленные пользователем

типы линий, заполнения, шрифтов и пр.

191

Установка видеостраницы

Память видеобуфера подразделяется на несколько частей, которые называются

видеостраницами. Их количество зависит от текущего режима и типа адаптера.

Нумерация страниц начинается с нуля.

В каждый отдельный момент на экране может быть отображена только одна

страница - она называется видимой. Такая организация памяти видеобуфера

позволяет с помощью процедур и функций модуля Graph формировать

изображения на любой из страниц.

Процедура SetActivePage (Page: word) устанавливает активную страницу для

построения изображения, например:

SetActivePage (1); Здесь активной устанавливается страница 1. Построение

изображения производится незаметно для пользователя (активная страница

может не совпадать с видимой страницей. Сформированную страницу можно

показать на экране с помощью процедуры:

SetVisualPage (Page: word);

Обработка ошибок

Графическая программа может содержать ошибки, поэтому программист

должен предусмотреть все возможное для их своевременного обнаружения и

нейтрализации. Для этого имеются две функции: GraphResult,

GraphErrorMsg. Возможные ошибки и их коды приведены в таблице 1.

Таблица 1. Коды ошибок.

Константа

Значен

ие

Описание

GrOK

GrNoInitGraph

grNoDetected

grFileNottFound

grInvalidDriver

grNoLoadMem

grNoScanMem

grNoFloodMem

grFontNoFound

grNoFontMem

grInvalidMode

grError

grIOerror

grInvalidFont

grInvalidFontNu

m

0

-1

-2

-3

-4

-5

-6

-7

-8

-9

-10

-11

-12

-13

-14

Нет ошибок

Графика не инициализирована

Графическое устройство не обнаружено

Файл драйвера устройства не найден

Неправильный файл драйвера устройства

Недостаточно памяти для загрузки драйвера

Выход за пределы памяти при заполнении (scan

fill)

Выход за пределы памяти при заполнении (flood

fill)

Файл шрифта не найден

Недостаточно памяти для загрузки шрифта

Неверный графический режим для этого драйвера

Графическая ошибка

Ошибка графического ввода-вывода

Неверный файл шрифта

Неверный номер шрифта

Можно пользоваться как кодом ошибки, так и соответствующей константой,

например:

Uses Graph, CRT; Var ErrorNumber: integer; BEGIN

ErrorNumber:=GraphResult;

192

В переменной GraphResult содержится код ошибки. В программе

организовывается сообщение:

If ErrorNumber <> grOK then Writeln ('Обнаружена ошибка');

Базовые процедуры и функции графических программ

Система координат

Для построения изображений на экране монитора используется система

координат. Отсчет начинается от левого верхнего угла экрана (0,0); значение Х

увеличивается слева направо, значение Y - сверху вниз.

Управление графическим курсором, цветами фона и вывода.

Процедура MoveTo(x, y); устанавливает курсор по заданным координатам (х, у).

Функции GetX и GetY определяют текущие координаты курсора.

Процедура SetColor(<цвет>:word) устанавливает текущий цвет для

последующего вывода графической и текстовой информации на графический

экран в этом цвете, где <цвет>:word - выражение для номера цвета. В модуле

graph определены следующие константы для задания цвета:

const black =0; {черный} blue =1; { синий}

green =2; {зеленый } cyan =3; {голубой}

red =4; { красный} magenta =5; { фиолетовый}

brown =6; { коричневый} lightgrey =7; { светло - серый}

darkgrey =8; { темно - серый} lightblue =9; { ярко - синий}

lightgreen =10; { ярко - зеленый} lightcyan =11; {ярко -

голубой }

lightred =12; {розовый } lightmagenta =13; { малиновый}

yellow =14; {желтый} white =15; {белый}.

Функция GetColor выдает номер текущего цвета вывода.

Функция GetMaxColor выдает максимальный номер цвета вывода.

Процедура SetBkColor(<цвет>:word) сразу, при исполнении, изменяет

текущий цвет фона графического экрана на заданный цвет, где <цвет>:word -

выражение для номера цвета.

Функция GetBkColor выдает номер текущего цвета фона вывода.

Функция GetMaxColor выдает максимальный номер цвета вывода.

Процедура SetLineStyle(вид:word, образец:word, толщина:word);

устанавливает стиль вычерчиваемых линий. Вид линий определяется

следующими константами:

const solidln =0; { сплошная линия}

dottedln =1; { точечная линия}

centerln =2; {штрихпунктирная линия}

dashedln =3; { пунктирная линия}

uerbitln =4; { вид линии определяется пользователем}.

Для всех видов линий от 0 до 3 значение образец задается равным 0; для

пользовательского вида задается собственный шаблон.

Параметр толщина задает толщину линий и может принимать одно из

двух значений:

const normwidth =1; { толщина в одну точку}

193

thickwidth =3; { толщина в три точки}.

Процедура SetFillStyle(тип:word, цвет:word); устанавливает стиль заполнения

фигур.

Тип заполнения определяется следующими константами:

const emptyfill =0; {заливка цветом фона}

solidfill =1; { заливка назначенным цветом}

linefill =2; {штриховка линиями}

itslashfill =3; {штриховка ////////}

slashfill =4; { штриховка утолщенными ////////}

bkslashfill =5; { штриховка \\\\\\\}

itbkslashfill =6; { штриховка утолщенными \\\\\\\\}

hatchfill =7; { штриховка +++++}

xhatchfill =8; { штриховка xxxxxx}

interleavefill =9; { штриховка в клетку}

widedotfill =10; { штриховка редкими точками}

closedotfill =11; { штриховка частыми точками}

userfill =12; {определяется пользователем}.

Построения на графическом экране

Процедура PutPixel(x, y,цвет); выводит на экран графическую точку по

заданным координатам заданным цветом.

Процедура Outtextxy(x, y,текст); выводит текст на экран с точки, заданной

координатами х, у.

Процедура Line(х1,у1,х2,у2); строит текущим цветом отрезок по заданным

координатам его начала и конца.

Процедура LineTo(x, y); строит текущим цветом отрезок от позиции

графического курсора до точки с заданными координатами.

Процедура LineRel(dx, dy); строит текущим цветом отрезок от позиции

графического курсора до точки, определяемой заданными приращениями к

координатам курсора.

Процедура RecTangle(x1,y1,x2,y2); вычерчивает прямоугольник, со сторонами

параллельными осям координат экрана, по указанным координатам двух

вершин на его диагонали.

Процедура Bar3d(x1,y1,x2,y2,<глубина>,<верх. грань>); вычерчивает текущим

цветом трехмерное изображение прямоугольного параллелепипеда и

закрашивает его переднюю грань.

Процедура Circle(x, y,r); вычерчивает окружность радиуса r с центром (x, y).

Процедура Arc(x, y,нач. угол, кон. угол, r); вычерчивает дугу радиуса r с

центром (x, y). Нач. угол, кон. угол - выражения типа word, задающие начальный

и конечный углы дуги, углы отсчитываются против часовой стрелки и

указываются в градусах.

Процедура Pieslice(x, y,нач. угол, кон. угол, r); вычерчивает сектор окружности

радиуса r с центром (x, y). Нач. угол, кон. угол - выражения типа word, задающие

начальный и конечный углы сектора, углы отсчитываются против часовой

194

стрелки и указываются в градусах. Построенный сектор заполняется текущим

цветом и стилем.

Процедуры Ellipse(x, y,нач. угол, кон. угол, rx, ry); Fillellipse(x, y,rx, ry);

Sector(x, y,нач. угол, кон. угол, rx, ry); вычерчивают эллипсную дугу, эллипс или

его сектор. x, y - центр, нач. угол, кон. угол - выражения типа word, задающие

начальный и конечный углы дуги, углы отсчитываются против часовой стрелки

и указываются в градусах, rx, ry - выражения типа word, определяющие

горизонтальный и вертикальный радиусы эллипса. Эллипс, построенный

процедурой Fillellipse, или его сектор (sector) заполняется текущим цветом и

стилем.

Процедура FloodFill(x, y, цвет границы); закрашивает текущим цветом и

стилем произвольную замкнутую фигуру, x, y - координаты любой точки внутри

замкнутой фигуры.

2. Разобрать пример построения графика функции

Построение графиков функций

График может служить хорошим примером представления информации

на экране. Основу его построения составляет черчение линий по заданным

точкам. Проще всего такие точки выбирать в соответствии с делениями оси Х.

Т. к. на экране мы не можем уместить весь график функции на интервале от

минус бесконечности до плюс бесконечности, то мы сможем посмотреть только

часть графика, ограниченного прямоугольником, координаты левого нижнего и

правого верхнего углов которого хранятся в переменных (x2,y2) и (x1,y1)

соответственно.

Поскольку размер этой прямоугольной плоскости может не совпадать с

размером экрана (640x480), то нам надо ввести две переменные dx и dy. Они

будут хранить коэффициент растяжения прямоугольной плоскости на экран

монитора. Их значения задаются формулами: dx:= (x1 - x2)/640 (растяжение по

оси OX) и dy:= (y1 - y2)/480 (растяжение по оси OY).

После того, как нашли коэффициент, на экране надо нарисовать координатные

оси, если они входят в нашу прямоугольную плоскость. Чтобы это сделать

потребуется оси спроектировать на экран. Для этого найдём x0 и y0. x0:= round

(0-x2/dx), т. е. мы от начала координат отнимаем координату левого края нашей

прямоугольной плоскости и переводим в экранные координаты, поделив на

коэффициент dx. После этого рисуем прямую на экране от точки (x0,0) до

(x0,480) - получили на мониторе ординату координатной плоскости.

Аналогично поступим с абсциссой: y0:= round (0-y2/dy) и прямая (0,y0)-

(640,y0).

Теперь переходим непосредственно к построению графика:

1. Задаём цикл i от нуля до 640 (от левого края экрана до правого);

2. Проектируем экранную точку с x-координатой, равной i, на координатную

ось: x:= x2 + i * dx;

3. Находим с помощью заданной функции y(x);

4. Проектируем точку на экран: yx:=-round((y2+y)/dy). Т. к. начало отсчёта в

графическом режиме на мониторе начинается с левого верхнего угла, то без

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20