Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Задания для самостоятельного выполнения лабораторной работы 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 нужно указать целое число, являющееся кодом цвета. Цвета кодируются в соответствии со следующей таблицей:

 

В1аск = 0 чёрный
В1uе = 1 синий
Green = 2 зелёный
Cyan = 3 циановый
Red = 4 красный
Magenta = 5 сиреневый
Brown = 6 коричневый
LightGray = 7 светло-серый
DarkGray = 8 тёмно-серый
LightBlue = 9 голубой
LightGreen =10 светло-зелёный
LightCyan =11 светло-циановый
LightRed =12 розовый
LightMagenta =13 светло-сиреневый
Yellow =14 жёлтый
White =15 белый

 

 

Если Вы хорошо знаете английский язык, то Вам будет удобнее ис­пользовать не числа, а соответствующие им идентификаторы; если же Вы английский знаете плохо, то всё равно полезнее запомнить английские названия цветов, чем запоминать числа, кодирующие цвета.

 

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 не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...