Раздел 5. Ввод и вывод данных.
Рассмотрим схему, по которой происходит исполнение программы на языке Pascal ABC:
-
ВВОД исходных данных с клавиатуры, из файла или с носителя информации;
-
ОБРАБОТКА данных с помощью операторов языка Pascal ABC;
-
ВЫВОД результатов обработки на экран, принтер, в файл или на носитель информации.
Для того, чтобы ввести или вывести данные, необходимо выполнить определённые команды (
процедуры). Процедура, которая в режиме диалога с клавиатуры присваивает значение для переменной величины, называется
процедурой ввода.
В языке Pascal эта команда выглядит следующим образом:
read(список переменных);
Например,
Var
X : real; Y: integer; Z : char;
Begin
read(X, Y, Z)
End.
При запуске программы на исполнение, встретив строку read(X, Y, Z), программа останавливает свою работу, и в нижней части окна программы появляется поле для ввода данных. В него необходимо ввести с клавиатуры значения переменных (X,Y,Z), в соответствии с их типом. Если вводимое значение не будет соответствовать объявленному типу переменной, то программа завершится сообщением об ошибке. Ввод каждого значения переменной завершается нажатием клавиши Enter.
Процедура, которая выводит содержимое переменных на экран, называется
процедурой вывода на экран.
В языке Pascal эта команда выглядит следующим образом:
write (список переменных);
Например:
Var X : real; Y: integer; Z : char;
Begin
read(X, Y, Z)
write (X, Y, Z)
End.
Строка (write) интерпретируется: “Вывести на экран через запятую, значения переменных соответственно, как X, Y, Z ”.
В ЯП Паскаль для ввода и вывода данных, также имеются процедуры readln
и writeln, отличающиеся от описанных выше, только тем, что при своём выполнении осуществляют перевод курсора на следующую строку.
Формат вывода данных можно задать в скобках, указав после двоеточия (:) количество символов выделяемых для выводимого значения переменных. Например, если x, y - целые переменные (типа integer), то при выполнении программы:
var x,y: integer;
begin
x:=-9999; y:=11111;
writeln(x:6,'Здравствуй!':12);
writeln(y:8);
writeln(‘Паскаль’:10);
end.
будет выведен следующий текст:
6 12 6 - количество выделяемых символов;
-9999 Здравствуй! (ширина поля вывода)
11111
8
Паскаль
10
Для вещественных чисел можно также использовать формат с двумя указателями writeln(x:m:n);, где x - значение переменной типа real,
m - ширина всего поля вывода, а n -
количество знаков после десятичной точки (имеет приоритет). Например:
writeln(-11.789:10:3); // ___-11.789
writeln(-11.789:10:5); // _-11. 8900
writeln(-11.789:10:2); // ____-11.79
writeln(-11.789:10:0); // _______-12
writeln(-11.789:10:7); // -11.7890000
writeln((0,151):10:1); // _______0.2
(символом _ изображены пробелы).
Раздел 6. Работа с графикой.
После запуска PascalABC, по умолчанию, запускается текстовый режим. Для работы с графикой служит отдельное графическое окно. Чтобы его открыть, необходимо подключить модуль GraphABC. В этом модуле содержится обширный набор процедур и функций, предназначенных для работы с графическим экраном, а также некоторые встроенные константы и переменные, которые могут быть использованы в программах с графикой. С их помощью можно создавать разнообразные графические изображения и сопровождать их текстовыми надписями. Подключение осуществляется в разделе описаний.
Формат подключения модуля GraphABC:
uses GraphABC;
Начало координат графического окна модуля находится в верхнем левом углу. Ось
x направлена вправо, а ось
y - вниз. Координаты исчисляются в пикселях.
Все команды библиотеки GraphABC являются подпрограммами и описаны в виде процедур и функций. Для того, что бы команда выполнилась необходимо указать команду и задать значения параметрам.
Некоторые команды библиотеки GraphABC.
Имя и параметры команды
|
Действие команды
|
Line(x1,y1,x2,y2)
|
Рисует отрезок из точки с координатами (x1,y1) в точку с координатами (x2,y2)
|
LineTo(x, y)
|
Рисует отрезок из текущей точки в точку с координатами (x, y) (соответствует команде сместиться_в с опущенным пером для исполнителя Чертежник)
|
Rectangle(x1,y1,x2,y2)
|
Рисует контур прямоугольника со сторонами параллельными сторонам экрана. Точки с координатами (x1, y1) и (x2, y2) определяют диагональные вершины прямоугольника.
|
RoundRect(x1,y1,x2,y2,w,h)
|
Рисует прямоугольник со скругленными краями; (x1,y1) и (x2,y2) задают пару противоположных вершин, а w и h – ширину и высоту эллипса, используемого для скругления краев.
|
FillRect(x1,y1,x2,y2);
|
Заливает прямоугольник, заданный координатами противоположных вершин (x1,y1) и (x2,y2), цветом текущей кисти.
|
Circle(x,y, radius);
|
Рисует окружность с центром в точке с координатами (x,y) и радиусом radius.
|
Ellipse(x1,y1,x2,y2);
|
Рисует эллипс, заданный своим описанным прямоугольником с координатами противоположных вершин (x1,y1) и (x2,y2).
|
MoveTo(x, y)
|
Переводит текущую точку в положение новое положение, в точку с координатами (x, y) (соответствует команде сместиться_в с поднятым пером для исполнителя Чертежник)
|
TextOut (x, y, text)
|
Выводит Text на экран. Начало текста в точке с координатами (x, y)
|
SetPixel(x,y,color)
|
Закрашивает цветом color точку с координатами (x, y)
|
SetPenColor(color)
|
Задает цвет рисования линий. Параметр color – число в промежутке от 0 до 2563-1.
|
SetPenStyle(ps)
|
Устанавливает стиль пера, задаваемый параметром ps.
Стили пера задаются следующими именованными константами:
Значение
|
Описание
|
Вид линии
|
psSolid
|
Сплошная линия
|
|
psDash
|
Штриховая линия
|
|
psDot
|
Пунктирная линия
|
|
psDashDot
|
Штрихпунктирная линия
|
|
psDashDotDot
|
Линия - штрих и два пунктира
|
|
psClear
|
Отсутствие линии
|
|
|
Arc(x,y,r,a1,a2)
|
Рисует дугу окружности с центром в точке (x,y) и радиусом r, заключенной между двумя лучами, образующими углы a1 и a2 с осью OX (a1 и a2 – вещественные, задаются в градусах и отсчитываются против часовой стрелки).
|
Pie(x,y,r,a1,a2)
|
Рисует сектор окружности, ограниченный дугой (параметры процедуры имеют тот же смысл, что и в процедуре Arc).
|
Chord(x,y,r,a1,a2)
|
Рисует фигуру, ограниченную дугой окружности и отрезком, соединяющим ее концы (параметры процедуры имеют тот же смысл, что и в процедуре Arc).
|
FloodFill(x,y,color);
|
Заливает область одного цвета цветом color, начиная с точки (x,y).
|
SetBrushColor(color)
|
Устанавливает цвет кисти, задаваемый параметром color
|
SetBrushStyle(bs);
|
Устанавливает стиль кисти, задаваемый параметром bs.
Стили кисти задаются следующими именованными константами:
Константа
|
Стиль
|
Константа
|
Стиль
|
bsSolid
|
|
bsClear
|
|
bsCross
|
|
dsDiagCross
|
|
bsHorizontal
|
|
bsVertical
|
|
bsBDiagonal
|
|
bsFDiagonal
|
|
|
SetFontColor(color);
|
Устанавливает цвет шрифта
|
SetFontSize(sz);
|
Устанавливает размер шрифта в пунктах.
|
SetFontName(name: string);
|
Устанавливает наименование шрифта
По умолчанию установлен шрифт, имеющий наименование MS Sans Serif. Наиболее распространенные шрифты – это Times, Arial и Courier New. Наименование шрифта можно набирать без учета регистра.
|
SetFontStyle(fs);
|
Устанавливает текущий стиль шрифта.
Стили шрифта задаются следующими именованными константами:
fsNormal – обычный;
fsBold – жирный;
fsItalic – наклонный;
fsBoldItalic – жирный наклонный;
fsUnderline – подчеркнутый;
fsBoldUnderline – жирный подчеркнутый;
fsItalicUnderline – наклонный подчеркнутый;
fsBoldItalicUnderline – жирный наклонный подчеркнутый.
|
ClearWindow;
|
Очищает графическое окно белым цветом
|
ClearWindow(c);
|
Очищает графическое окно цветом (c).
|
SetWindowSize(w,h)
|
Устанавливает ширину и высоту графического окна.
|
Модуль GraphABC содержит константы и функции для работы с цветами. Тип ColorType, описывающий цвет, определен следующим образом:
type ColorType=integer;
Стандартные цвета задаются символическими константами:
clBlack – черный
clPurple – фиолетовый
clWhite – белый
clMaroon – темно-красный
clRed – красный
clNavy – темно-синий
clGreen – зеленый
clBrown – коричневый
clBlue – синий
clSkyBlue – голубой
clYellow – желтый
clCream – кремовый
|
|
clAqua – бирюзовый
clOlive – оливковый
clFuchsia – сиреневый
clTeal – сине-зеленый
clGray – темно-серый
clLime – ярко-зеленый
clMoneyGreen – цвет зеленых денег
clLtGray – светло-серый
clDkGray – темно-серый
clMedGray – серый
clSilver – серебристый
|
Для работы с цветами используются следующие функции.
function RGB(r,g,b: integer): ColorType;
Возвращает целое значение, являющееся кодом цвета, который содержит красную, зеленую и синюю составляющие с интенсивностями R,G и B соответственно (R,G и B – целые в диапазоне от 0 до 255, причем, 0 соответствует минимальной интенсивности, 255 – максимальной).
function GetRed(color: ColorType): integer;
Выделяет красный цвет интенсивностью (целое число от 0 до 255);
function GetGreen(color: ColorType): integer;
Выделяет зеленый цвет интенсивностью (целое число от 0 до 255);
function GetBlue(color: ColorType): integer;
Выделяет синий цвет интенсивностью (целое число от 0 до 255).
Пример графической программы, рисующей изображение дома:
Program Domik;
uses graphABC; //подключение модуля graphABC
begin
SetWindowWidth(800); //ширина окна программы
SetWindowHeight(600); //высота окна программы
SetFontStyle(fsBold); //жирный стиль шрифта
SetFontSize(18); //размер шрифта
SetFontColor(clRed); //цвет шрифта
TextOut(100,100,'Домик'); //текст
Rectangle(200,300,600,600); //дом
Circle(400,225,40); //круг
SetBrushColor(clAqua); //цвет заливки окна
FillRect(300,400,500,500); //процедура заливки окна
Rectangle(300,400,500,500); //окно
Line(400,400,400,500); //окно
Line(300,450,500,450); //окно
Line(200,300,400,150); //крыша
Line(400,150,600,300); //крыша
Line(480,210,480,160); //труба
Line(480,160,520,160); //труба
Line(520,160,520,240); //труба
end.
Программа рисующая фигурку:
Program Figurka;
uses GraphABC;
var w,r,c: integer;
begin
SetPenWidth(3);
SetBrushColor(clFuchsia);
SetWindowSize(500,500);
Circle(225,160,50);
Line(225,160,225,180);
Line(210,190,240,190);
Line(225,210,225,250);
Line(100,100,200,260);
Line(200,260,400,260);
Line(210,350,200,480);
Line(240,350,250,480);
Rectangle(200,230,250,350);
SetBrushColor(clLime);
FillRect(0,480,500,500);
SetBrushColor(clWhite);
Circle(205,150,10);
Circle(245,150,10);
end.
Раздел 7. Разработка программ.
<предыдущая страница | следующая страница>