Главная » Просмотр файлов » Основы программирования

Основы программирования (947332), страница 47

Файл №947332 Основы программирования (Иванова Г.С. Основы программирования) 47 страницаОсновы программирования (947332) страница 472013-09-15СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 47)

Процедура Pieslice (х, у, stangle, endangle, radius:word) - рисует за­штрихованный сектор или окружность (если конечный угол равен начально­му). Углы отсчитываются от положительного направления оси абсцисс про­тив часовой стрелки и указываются в градусах.19. Процедура Ellipse (х, у, stangle, endangle, radiusX, radiusY: word) рисует эллипс или его дугу.275Часть 1. Основы алгоритмизации и процедурное программирование20. Процедура Sector (х, у, stangle, endangle, radiusX, radiusY: word) рисует заштрихованный эллипс или его сектор.21. Процедура FillEllipse (х, у, radiusX, radiusY: word) - рисует заштри­хованный эллипс.Процедуры и функции управления текстом. Текст в графическом ре­жиме можЛ^ быть выведен процедурами Write и WriteLn, но при этом управ­ление выполняется аналогично текстовому режиму.

Специально для работыс текстом в графическом режиме модуль Graph предлагает следующие про­цедуры и функции.1. Процедура SetTextStyle(font,direction,charsize:word) - устанавливаеттекущий шрифт font, направление вывода строки direction и размер шрифтаcharsize.Для установки шрифта используют специальные константы:DefaultFont=^0;TriplexFont=l;SmallFont=2;SanserifFont=3;GothicFont=4;{обычный}{полужирн ы й}{м ел ки й}{п ря мой}{готический}Направление вывода может быть либо горизонтальным, либо вертикаль­ным:HorizDir-0;VertDir=l;{горизонтальное направление}{вертикальное направление}Размер шрифта указывается значением, на которое необходимо умно­жить исходный размер шрифта (8x8 точек). Таким образом, шрифт можноувеличивать в целое число раз.2.

Процедура SetTextJustify(horiz, vert :word) - устанавливает способ вы­равнивания для горизонтального goriz и вертикального vert направлений вы­вода. Способ выравнивания определяется относительно некоторой точки спомощью специальных констант:LeftText=0;CenterText=l;{точка слева от текста}{точка по центру текста при горизонтальном направ­лении вывода}RightText=2;{точка справа от текста}BottomText=0; {точка под текстом}CenterText=l; {точка по центру текста при вертикальном направле­нии вывода}TopText=2;{точка над текстом}3. Функция TextHeight(st:string):word - возвращает высоту строки st вточках.2768. Управление техническими средствами и взаимодействие с MS DOS4.

Функция TextWidth(st:string):word - возвращает ширину строки st вточках.5. Процедура OutText (sUstring) - выводит строку, выравнивая ее задан­ным способом относительно текущей точки.6. Процедура OutTextXY(x,y:word; sUstring) - выводит строку st, вырав­нивая ее в соответствии с установленными режимами вертикального и гори­зонтального выравнивания относительно точки (х, у).Процедуры управления окнами, страницами.

Помимо управленияцветом, рисования примитивов и вывода текстов модуль Graph содержит спе­циальные процедуры управления окнами и страницами.1. Процедура ClearDevice - очищает экран.2. Процедура SetVlewPort (х1, у1, х2, y2:word; clip:boolean) - устанавли­вает окно. Параметры xl, у1, х2, у2 определяют размеры окна, а параметрclip - будут ли видимы фрагменты рисунка, вышедшие за границы окна.3. Процедура GetViewSettings(Var mn:ViewPortType) - возвращает пара­метры последнего окна через параметр-переменную win типа ViewPortType:Туре ViewPortType^ recordxl,yl,x2,y2:word; {координаты}Clip:boolean; {отсечение}end;...4. Процедура ClearViewPort - очищает окно, связывая все точки этогоокна с О регистром палитры.5. Процедура SetActivePage(pageNumber:word) - переключает активнуюстраницу - делает активной страницу с указанным номером pageNumber.

Наактивной странице строится нужное изображение, в то время как высвечи­ваться продолжает прежняя страница. Когда изображение готово, осуществ­ляют переключение видимости страниц и появляется новое изображение.6. Процедура SetVisualPage(pageNumber:word) - переключает види­мость страниц.Например:SetVisualPage(O): {установили видимой О страницу}SetActivePage(l); {установили активной 1 страницу}Rectangle(10, 60, 30, 80); {вывели прямоугольник}Readln;{убедились, что он не видим}SetVisiialPage(l); {установили видимой 1 страницупрямоугольник стал видимым}Процедуры и функции создания движущихся изображений. МодульGraph предоставляет некоторые ресурсы для создания движущихся изобра­жений.277Часть L Основы алгоритмизации и процедурное программирование1.

Процедура GetImage(xl,ylyx2yy2:word;varp:pointer) - сохраняет в па­мяти прямоугольный фрагмент изображения. Параметры х1,у1,х2,у2 опреде­ляют прямоугольник. Параметр р должен содержать адрес буфера в памяти,куда копируется изображение. Размер этого буфера определяется с помощьюспециальной функции ImageSize.2. Функция ImageSize(xl,yl,x2,y2:word):wordвозвращает размер буфе­ра, необходимого для сохранения прямоугольного фрагмента изображения.3. Процедура PutImage(x,y:word; var p:pointer; bitblt:word) - выводитсохраненное изображение на экран в прямоугольную область с координата­ми верхнего левого угла (х, у). Параметр р должен содержать адрес буфера.Способ наложения bitbit определяется специальными константами:NormalPut=0;XorPut=l;OrPut=2;AndPut=3;NotPut=4';{наложение со стиранием}{побитное «исключающее или»}{побитное «или»}{побитное «и»}{побитное «не»}Так, если цвет точки был розовым (12 = 1IOO2) и на нее накладываетсяточка того же цвета (12 = 1IOO2), то при разных способах наложения и стан­дартной палитре мы получимNormalPut - 1100 - точка розового цвета;XorPut - 0000 - точка черного цвета (цвета фона);OrPut - 1100 - точка розового цвета;AndPut - 1100 - точка розового цвета;NotPut - 0011 - точка голубого цвета.Буфер под образ обычно размещается в динамической памяти.

Напри­мер:Size:= ImageSize(0A99,99);GetMem(p,Size); {выделяем память под буфер для сохранения изобра­жения}х:=0;у:=0;Pieslice(50,50,0J60J7); {рисуем закрашенный круг}Getlmage(0,0,99,99,p^); {сохраняем изображение в памяти}repeatPutImage(x,y,p^yO); {выводим изображение на экран, стираниевыполняется чистым краем образа}delay (] 00);{задержка}х:=х+3;у:=у+1;2788, Управление техническими средствами и взаимодействие с MS Duntil x>getmaxx'50; {выход по достижении конца экрана}FreeMemfp, Size);{освобождаем динамический буфер}8.6. Практикум* Построение графиков и диаграммРезультаты решения многих задач целесообразно представлять в видеграфиков. Задачи построения графиков существенно различаются по исход­ной постановке.

Так, может потребоваться график одной функции или сразунескольких функций в одном или различных масштабах. Функции могутбыть заданы аналитически или таблично, причем при табличном задании мо­жет потребоваться интерполяция функции. График может строиться в обыч­ном или логарифмическом масштабе, включать или нет координатную сетку,включать или нет оси координат и т.п. Однако основные принципы построе­ния графиков при этом остаются неизменными.Для построения графика функции необходимо каждой точке графика по­ставить в соответствие точку на экране. Координаты точки на экране опреде­ляются относительно координат области графика с учетом масштаба и того,что ось Оу экрана направлена вниз (рис. 8.6).Масштабы по осям х н у рассчитывают исходя из интервалов возмож­ных значений и размеров области графика на экране:кхк - кхпniy -•^к " ^1кУк - купУтах " Утшгде кХд, куп, kxj^, kyj^ - координаты области окна графика на экране; Ущах»ii Уmax/"^оminXп\i\Рис.

8.6. Определение координат точек графика:а - фафик; б - его отображение в окне на экране279Часть L Основы алгоритмизации и процедурное программированиеУт1п ~ максимальное и минимальное значения функции на заданном интергвале; Х], Xj^ - первое и последнее значения аргумента, входящие в заданныйинтервал.Координаты точек графика рассчитывают следующим образом:kxj = 1 (Xj - Х|) X т^^ Г + кХр ,^У\ = 1 (Утах - yj) X т у Г + ку^,,где 1 Г- означает взятие целой части числа.График строится как набор линий или ломаная линия, проходящая черезвсе рассчитанные точки.Расчет координат для построения координатной сетки выполняется ана­логично.Рассмотрим построение графика на конкретном примере.Пример 8.5.

Разработать программу, которая строит график функцииy=cos(x+2)/2 в заданном окне с определенным количеством точек на указан­ном интервале и наносит на график координатную сетку, состоящую из за­данного количества вертикальных и горизонтальных линий.Ниже представлен текст программы с подробными комментариями. Длясокращения размера программы все редко изменяемые значения параметровграфика заданы константами.Program Gr;Uses Crt, Graph;Constn=5;{количество позиций на число}т=2; {размер мантиссы при выводе значений}к=100;{количество точек просчета}пх=^5; пу=5;{количество линий сетки по х и у}Ьп=60; кхк=бОО;куп=45; кук^'ЗЗО; {параметры окна}Туре агг = array[1.

.100 ] of real;ari = array[L. 100] of integer;Vargd,gmj:integer; {тип и режим адаптера}X, y:arr;{массивы для значений функции и аргумента}кх, ky:ari;{массивы для координат точек по х и у}ymin, ymax:real; {экстремальные значения у}dx,dy:real;{шаг сетки по х и у на графике}dkx,dky:integer; {шаг сетки по х и у на экране}mx,my:real;{масштабные коэффициенты}st:string[5];{рабочая строка}h хп, хк: real;{шаг, интервал по оси х}2808. Управление техническими средствами и взаимодействие с MS DOSBeginClrScr;Write СВведите начало и конец интервала:');ReadLn(xn,xk);h:=(xk-xn)/(k-l);{определяем шаг по оси х}х[1]: =хп;ymin:=le30;ymax:=-lelO;for i:=] to к do {табулируем функцию и ищем экстремумы}beginyfiJ:=cos(x[iJ+2)/2;if y[i]>ymax then ymax:=y[ij;if y[i]<ymin then ymin:=y[ij;if iolOOthenx[i+]J:=x[iJ+h;end;mx:=(kxk-kxn)/(xfkj'xf]j);{определяем масштаб по оси х}my:=(kyk-kyn)/(ymax-yminj; {определяем масштаб по оси у}for i:=J to к do{определяем координаты точек}beginkxfij: =round{(xfiJ'X[lJ) *тх) +кхп;kyfij: =round((ymax-y[iJ) *ту) +куп;end;gd: =detect;InitGraph(gd,gm, "); {инициализируем графический режим}SetColor(4);{текущий цвет - красный}OutTextXY( 180,20, T=cos(x-^2J/2'); {выводим заголовок}SetColor(17);{цвет рисования - голубой}SetBKColor(7);{на сером фоне}Rectangle(кхп,куп,кхккук);{рисуем прямоугольник для выводаграфика}SetColor(4);{текущий цвет ~ красный}for i:=l to к-1 do{выводим график}Line (kx[i],ky[i],kx[i+l],ky[i^l]);dkx:='round((kxk'kxn)/nx);{определяем шаг сетки по х}dky:=round((kyk'kyn)/ny);{определяем шаг сетки по у}SetColorf] 7);{текущий цвет - светло-синий}for i:=J to пх do{рисуем сетку, параллельную оси х}Line(kxn+dkx*r,kyn,kxn-^dkx*i,kyk);for i:=] to ny do{рисуем сетку, параллельную оси у}Line(kxn,kyk-dky*i,kxk,kyk'dky*i);dx:=(x[kJ'X[]JJ/nx;{определяем шаг для сетки по х}dy:=(ymax-ymin)/ny; {определяем шаг для сетки по у}SetTextJustify(1,2);{выравнивание «по центру снизу»}281Часть 1.

Основы алгоритмизации и процедурное программированиеY = cos(x+2)/20.500.310.12-0.07-0.26-0.462.003.004.005.006.007.00Рис. 8.7. Результат работы программыfor i:=J to пх+1 do{выводим значения аргумента}beginStr((xflJ+dx*(i-])):n:m,st);{преобразуем число в строку}OutTextXY(kxn+dkx*(i'l), kyk+6,st); {вывод значений под лини­ей сетки}end;SetTextJustijy(2J);{выравнивание «слева по центру»}for i:=l to ny+I do{выводим значения функции}beginStr((ymin+dy*(i'l)):n:m,stJ;{преобразуем число в строку}OutTextXY(kxn-6,kyk'dky*(i'l),st); {вывод слева от оси у}end;ReadLn; {ожидаем нажатия ENTER}Closegraph;End.Результатом работы программы является график функции на заданноминтервале изменения аргумента, представленный на рис. 8.7.Помимо графиков для представления результатов также могут использо­ваться диаграммы и гистограммы различных видов.

Характеристики

Тип файла
PDF-файл
Размер
13,06 Mb
Тип материала
Учебное заведение
Неизвестно

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6353
Авторов
на СтудИзбе
311
Средний доход
с одного платного файла
Обучение Подробнее