Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Задания для самостоятельного выполнения лабораторной работы 5
1 Ввести номер дня недели и вывести соответствующий ему день недели на русском и английском языках.
2 Ввести номер месяца и вывести соответствующее ему название на русском языке.
3 Введите номер месяца. Напечатайте соответствующее месяцу время года: "зима", "весна", "лето", "осень".
4 Введите время (только часы). Напечатайте соответствующее этому времени сообщение: "Доброе утро", "Добрый день", "Добрый вечер", "Доброй ночи".
5 Зведите количество посадочных мест. Напечатайте соответствующий этому количеству вид транспорта: "велосипед", "мотоцикл", "легковой автомобиль", "микроавтобус", "автобус". (Возможны другие варианты)
6 Составить программу, которая выводит сообщение о своих возможностях {Введите номер необходимой операции:1 - сумма; 2 - разность; 3 - произведение; 4 - частное; }
7 Составить программу, которая выводит сообщение о своих возможностях {Введите номер необходимой функции:1 - квадрат; 2 - корень квадратный; 3 - синус; 4 - косинус}
8 Напишите программу, выводящую сообщение о возможных сообщениях {1 – фамилия ; 2- имя; 3 – отчество; 4 - год рождения}
9Напишите программу для вычисления степени введённого с клавиатурычисла. Степень в диапазоне 0 .. 9.
10Определите количество символов, из которых состоит целое положительное число х.
Лабораторная работа 6. Управляющие конструкции языка. Оператор безусловного перехода.
В языке программирования Паскаль, и следовательно в системе программирования TurboPascal 7.0 поддерживаются современные методологии проектирования программ (нисходящее, модульное проектирование, структурное программирование). Концепция структурного программирования пришла в своё время на смену линейному программированию, реализованному в таких языках программирования как Бейсик. 3 настоящее время наиболее применяемой является структурная концепция программирования. 3 структурном программировании принят естественный порядок выполнения программы: все операторы выполняются последовательно один за другим в том порядке, как они записаны. Для структурированных программ характерны легкость отладки и корректировка, низкая частота ошибок. Описанный в данной лабораторной работе безусловный оператор, строго говоря, просто "запрещён" структурной концепцией как грубо нарушающий её основные принципы, и является "атавизмом" оставшимся как воспоминание о более примитивном линейном программировании. Система программирования TurboPascal 7.0 обладает достаточно мощными средствами, позволяющими полностью отказаться от применения этого оператора. Учитывая все описанные выше причины, настоятельно рекомендуется вообще отказаться от использования оператора безусловного перехода, или свести его применение к минимуму. Если же вы всё-таки решили применить его в своей программе, то вы должны помнить, что использовать этот оператор следует крайне осторожно. Широкое его применение без особых на то оснований ухудшает понимание логики работы программы. 5е-зусловный переход можно осуществлять далеко не из каждого места программы. Так, нельзя с помощью этого оператора перейти из основной программы в подпрограмму, или выйти из подпрограммы, не рекомендуется осуществлять переход внутрь структурированного (составного) оператора, т.к. он может дать неправильный результат, с помощью оператора перехода, расположенного вне условного оператора или оператора цикла, нельзя перейти внутрь этого условного оператора или оператора цикла и т.д.
Оператор безусловного перехода.
Оператор безусловного (быстрого) перехода GOTO позволяет изменить стандартный последовательный порядок выполнения операторов и перейти к выполнению программы, начиная с заданного оператора.
Форма записи оператора.
GOTO<метка>
Он указывает, что дальнейшая работа программы должна продолжатся с оператора, на котором стоит <метка>. Оператор, на который происходит переход, должен быть помечен меткой. Эта же метка должна быть указана в операторе GOTO, и описана в разделе описания меток.
Описание меток.
Метки используемые в TP, могут быть двух типов: целым числом в диапазоне от 0 до 9999; обычным идентификатором. Все перечисленные метки должны быть перечислены в разделе объявления меток, начинающимся зарезервированным словом label, например: label 1, 2, MetJca;
Одной меткой можно пометить только один оператор. Метка от помеченного оператора отделяется двоеточием. Метка может устанавливаться перед любым оператором, в том числе и перед пустым оператором. Например: 1: Write(‘Привет’);
Пустой оператор.
Пустой оператор не предписывает никаких действий. По определению он представляет собой пустую совокупность символов. Как и все операторы, пустой оператор может быть помечен меткой.
Примеры программ.
Пример 1. Найти частное от деления целых чисел. PROGRAM Ех_1; LabelOut; {описаниеметки} Var X,Y,Res: Integer;{описание переменных} Begin Write(‘Введите делимое: ‘); {вывод сообщения на экран} Readln(X); {ввод числа} Write( ‘Введите делитель: ‘); Redln(Y); if Y = 0 then {ветвление} begin {составной оператор} Writeln(‘деление на ноль’); GOTO Out; {использование GOTO} end; Res := X div Y; Write (‘Частное = ‘,Res); Out: {метка на "пустой" оператор} End.
ПРИМЕР2 Программа определения частного действительных чисел, исключающая деление на ноль, и производящая запрос об окончании работы программы. PROGRAMM Ех_2 ; Label1, 2; Varх,у,res: real; s: byte; Begin 1: Write(‘Введитеделимое:’); Readln(x); Write(‘Введитеделитель:’); Readln(у); if Y = 0 then beginWriteln(‘делениенаноль’); GOTO 2; end; res := x/y; Writeln(‘Частное =’ ,res); 2: Write(‘Продолжитьвычисления? 1-да, 2-нет. :’); Readln(s); if s = 1 then GOTO 1; End.
Контрольные вопросы. 1 Назовите причины нежелательного использования оператора безусловного перехода. 2 Что такое метка? Как она описывается и используется? 3 Что такое пустой оператор?
Задания для самостоятельного выполнения лабораторной работы 6: 1 Напишите программу "калькулятор", позволяющую вычислять по выбору одну из четырёх основных арифметических операций. Снабдите программу запросом об окончании работы.
2 Напишите программу выбора наибольшего из трёх, введённых с клавиатуры действительных чисел, и производящую запрос об окончании работы.
3 Напишите программу вычисления квадратного корня из числа введённого с клавиатуры. Исключите вычисление корня из отрицательных чисел и нуля. Снабдите программу запросом об окончании работы.
4 Напишите программу, которая выводит название дня недели по номеру дня введённому с клавиатуры. Исключите несуществующие номера дней недели и снабдите программу запросом об окончании работы.
5 Напишите программу, которая возводит действительное число, введённое с клавиатуры, в степень, введённую с клавиатуры в диапазоне от 2 до 9. Исключите несуществующие (меньше 2 и больше 9) степени, и снабдите программу запросом об окончании работы.
6 Напишите программу, которая выводит на экран квадраты целых чисел от числа а до числа b.
7 Напишите программу вычисления значения функции у=х2-16х+32 для х от 1 до 10 с шагом 0,25.
8 Напишите программу вычисления функции y=х3, при х>0 у =х2, при -2>=х>=0 y=х, в остальных случаях для х в диапазоне от -5 до 5 с шагом 0,5.
9 Напишите программу вычисления функцииf(х) =4х2+16(х+2) для х от а до b с шагом d введённым с клавиатуры.
10 Напишите программу определения времени года по порядковому номеру недели. Снабдите программу запросом об окончании работы. Лабораторная работа 7. Графические возможности. Графический режим. Система координат
В настоящей лабораторной работе мы познакомимся с некоторыми графическими возможностями ТР. Система программирования Turbo Pascal снабжена несколькими модулями или "библиотеками" в которых хранятся все её процедуры и функции. Каждая такая библиотека специализирована, т.е. содержит процедуры и функции, поддерживающие одно устройство, выполняющие подобные действия и т.д.
GRAPH.TPU
Библиотека содержащая процедуры и функции для поддержки графического режима носит имя GRAPH.TPU.
Подключение графической библиотеки.
Для того, чтобы компилятор "узнавал" названия процедур и функций содержащихся в библиотеке GRAPH.TPU, мы должны после заголовка программы разместить строчку следующего вида:
Uses Graph;
(что можно перевести на русский язык как выражение "используется графика", или "модуль GRAPH.TPU подключён"). Формально эта строка разрешает нам использовать процедуры и функции библиотеки GRAPH.TPU.
Инициализация (включение) графического режима.
До сих пор, во время нашей работы за компьютером, экран всегда находился в текстовом режиме (поэтому на экране можно было видеть только лишь символы). Для рисования прямых, окружностей и пр. необходимо перевести экран в графический режим. Для включения графического режима используется процедура InitGraph. Простейшая программа, использующая графические возможности, может иметь вид:
Program Ех_1; Uses Graph; Var Gd,Gm.: Integer; Begin Gd:=VGA; { графический адаптер VGA } Gm:=VGAhi; { графический режим VGAhl (640x430)xl6 } Initgraph (Gd, Gm) ; { Включить графический режим Драйвер в текущем каталоге} if GraphResult = grOJcthen { Если режим включился успешно } begin line(0,0,639,479); { нарисовать отрезок прямой } Readln; CloseGraph; { выключений графического режима } end; End.
InitGraph(Gd,Gm:integer; Path:string);
Мы видим, что у процедуры InitGraph три параметра. В качестве первых двух параметров должны стоять имена целых (integer) переменных. Первый параметр Gd является кодом графического адаптера (т.е. электронной схемы, управляющей выводом информации на экран). Дело в том, что на IBM-совместимых компьютерах применяется ряд стандартных графических адаптеров, носящих названия CGA, EGA, VGA. По нашей программе можно догадаться, что в используемых нами компьютерах используется адаптер VGA (и компилятор сам "узнаёт" слово VGA и заменит его на нужное целое число). Каждый графический адаптер позволяет использовать несколько графических режимов, отличающихся количеством цветов и разрешающей способностью. Второй из параметров Gm как раз предназначен для того, чтобы указать, какой из режимов следует включить. Третий параметр Path является строкой (string), содержащей путь к файлу, который называется egavga.bgi. В этом файле содержится драйвер (такая специальная программа), необходимый для работы мониторов EGA и VGA в графическом режиме. И, как видно из нашего примера, файл этот находится в текущем каталоге.
GraphResult: integer;
Эта функция, при обращении к ней, возвращает специальный код (целое число), в зависимости от того, как прошло выполнение любой графической процедуры или функции. Код 0 (grOJc) - успешное выполнение. В приведённом выше примере программы Ех_1, данная функция применяется для проверки того, как прошла инициализация графического режима. Дальнейшая работа этой программы возможна лишь тогда, когда код функции GraphResult равен grOJc.
CloseGraph
Выключение графического режима.
Всё вышеизложенное необходимо знать каждому грамотному пользователю IВM-совместимых компьютеров. Однако, в нашей лабораторной работе - достаточно использовать конструкцию, использованную в первом примере, для включения графического режима. (И не страшно, если в ней не всё понятно.)
Система координат.
Для того, чтобы мы могли что-либо нарисовать на экране, нам нужно уметь задавать положение на экране того, что мы рисуем. Для этого с экраном связывается система координат следующего вида:
(0,0) X
Y
Обратите внимание. Точка (0,0) находится в левом верхнем углу. Привычная для нас система координат "перевёрнута". Каждая точка на экране на самом деле представляет собой очень маленький прямоугольник (и поскольку это не совсем точка, то иногда используют специальный термин - "пиксел"). Количество точек (пикселов), умещающихся на экране по вертикали и горизонтали, называют разрешающей способностью. Разрешающая способность экрана в режиме VGAhi - 640x430. Это означает, что по горизонтали на экране умещается 640 точек, а по вертикали - 480.
Описание некоторых графических процедур и функций.
Line (xl, yl, х2, у2: integer);
Как Вы уже догадались, процедура Line(xl,yl,x2,у2) рисует на экране отрезок, соединяющий точки (xl,yl) и (х2,у2). Например:
Program Ех_2; { нарисовать треугольник } Uses Graph; Var Gd, Gm.: integer; Begin Gd:=VGA; { графический адаптер VGA } Gm:=VGAhi; { графический режим VGAhi (640x430)xl6 } Initgraph (Gd, Gm) ; { Включить графический режим Драйвер в текущем каталоге} ifGraphResult = grOJcthen { Если режим включился успешно } begin line(120,210,520,210); { основание } line(120,210,320,10); { левая сторона } line(320,10,520,210); { правая сторона } end; End.
Текущий цвет рисования.
При выполнении описанной выше программы мы получим изображение треугольника из белых линий. Обладая цветным монитором VGA, мы можем создавать рисунки, используя различные цвета и оттенки. В любом случае рисование происходит так называемым "текущим цветом рисования". По умолчанию, текущий цвет рисования белый.
SetColor(Color: word);
Для изменения текущего цвета рисования, т.е. для задания цвета рисования прямых, окружностей, точек и пр. используется процедура SetColor. В качестве единственного её параметра Color нужно указать целое число, являющееся кодом цвета. Цвета кодируются в соответствии со следующей таблицей:
Если Вы хорошо знаете английский язык, то Вам будет удобнее использовать не числа, а соответствующие им идентификаторы; если же Вы английский знаете плохо, то всё равно полезнее запомнить английские названия цветов, чем запоминать числа, кодирующие цвета.
Program Ех_3; { цветной треугольник } Uses Graph; Var Gd, Grr.:Integer; Begin Gd:=VGA; { графический адаптер VGA } Gm:=VGAhi; { графический режим VGAhi (640x430)xl6 } Initgraph (Gd, Gm) ; { Включить графический режим Драйвер в текущем каталоге} ifGraphResult = grOJcthen { Если режим включился успешно } begin setcolor(lightmagenta); line(120,210,520,210); { основание } setcolor(lightcyan); line(120,210,320,10); { левая сторона } setcolor(green); line(320,10,520,210); { правая сторона } end; end.
GetColor: word; Возвращает текущий цвет рисования. SetBkColor(color: word);
Вам ещё не один раз придётся столкнутся с понятием-характеристикой - "текущий". Текущий цвет, текущая координата, текущее значение и т.д. Данная процедура устанавливает текущий цвет фона. По умолчанию текущий цвет фона - чёрный.
GetBJcColor: word; Возвращает текущий цвет фона.
ClearDevice Очищает графический экран закрашивая его в текущий цвет фона, устанавливает указатель текущей позиции в точку с координатами (0,0).
PutPixel(х,у:integer; Pixel:word); Рисует точку с координатами (х,у) цветом Pixel.
GetPixel(х,у: integer): word; Возвращает цвет точки с координатами (х,у).
Rectangle(xl,yl,х2,у2:integer) ; Строит контур прямоугольника из линий текущего цвета.
Circle(х,у:integer; г:word); Для рисования окружностей используется процедура Circle с тремя целочисленными параметрами: х,у - координаты центра окружности; г - радиус.
Arc(х,у:integer; StA,EndA,Radius:word); Нарисует дугу окружности текущим цветом. х,у - координаты центра окружности данной дуги; Sta - начальный угол; (в градусах) EndA - конечный угол; (в градусах) Radius – радиус дуги.
Ellipse(х,у:integer; stA,endA:word; xr,yr: word); Рисует дугу эллипса текущим цветом. х,у - координаты центра эллипса; stA - начальный угол; endA - конечный угол; хг,уг - горизонтальная и вертикальная полуоси эллипса.
SetLineStyle(Ln,Р,Т) Рисование линий, окружностей и их элементов, контуров прямоугольников осуществляется линиями. Процедура SetLineStyle позволяет изменять параметры этих линий. Параметры этой процедуры - целые числа. Ln - стиль линии: = сплошная; = пунктирная; = штрихпунктирная; = штриховая; = заданная пользователем. Т - толщина линии: 1 = нормальная; 3 = толстая. Р - шаблон: 0 - во всех случаях для Ln от 0 до 3; Для Ln = 4 устанавливается шаблон линии в виде двухбайтового числа, каждый бит которого равен 1, если его надо высветить и 0 - в противном случае. Например линия в виде 1111111100000000 в шестнадцатиричной форме следует записать $АА00.
Кратко описанные в данной лабораторной работе графические процедуры и функции составляют лишь небольшую часть богатого арсенала библиотеки GRAPH.TPU. Несмотря на то, что в последствии мы изучим все основные возможности этой библиотеки, вы в любой момент можете сделать это самостоятельно, воспользовавшись системой помощи. Для этого необходимо войти в раздел HELP главного меню, и выбрав разделы подменю StandartUnits и Graph, выбрать описание необходимой процедуры или функции.
Контрольные вопросы.
1 Как называется и как подключается библиотека графических процедур и функций? 2 Как инициализируется графический режим? 3 Как выключается графический режим? 4 Как изменяются параметры линий рисования? 5 Опишите процедуру рисования линий. 6 Опишите процедуры рисования окружности, дуги окружности и дуги эллипса . 7 Опишите процедуру рисования контура прямоугольника. 8 Опишите процедуры изменения текущего цвета рисования и текущего цвета фона. 9 Как изменить (установить) цвет точки экрана.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2018-04-12; просмотров: 409. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |