- •Министерство общего и профессионального образования Российской Федерации Уральский государственный технический университет Основы программирования на языке Паскаль
- •Структура программы на паскале
- •Типы данных
- •Правила программирования арифметических операций
- •Арифметические функции
- •Операции отношения (сравнения)
- •Логические операции
- •Приоритет операций
- •Операторы турбо-паскаля ввод и вывод данных
- •Составной оператор
- •Условный оператор
- •Оператор выбора
- •Операторы повторений (циклов) счетный цикл
- •Оператор цикла с предусловием
- •Оператор цикла с постусловием
- •Использование массивов
- •Процедуры и функции
- •Описание и использование функций
- •Описание и использование процедур
- •Взаимодействие подпрограмм
- •Стандартные модули
- •Использование модуля crt
- •Практический пример. Программа "меню"
- •Использование модуля graph
- •Установка цветов
- •Изображение точек и линий
- •Практический пример. Построение графика функции
- •Работа с текстом
- •Практический пример. Построение спирали
- •Программирование с использованием нестандандартных типов данных перечисляемый тип
- •Множества
- •Основы программирования на языке Паскаль
Использование модуля crt
В этом модуле расположены процедуры и функции позволяющие перемещать курсор, менять цвета символов и фона, управлять звуками и др. Рассмотрим некоторые из этих процедур.
Процедура
CLRSCR;
предназначена для очистки экрана.
Процедура
GoToXY(col,row);
осуществляет перемещение курсора в точку с горизонтальной координатой col и вертикальной - row. Значения этих параметров должны быть целыми величинами. Начало координат - точка (1,1) - расположена в верхнем левом углу экрана.
Пример:
Program No12;
Uses CRT;
Const
text='Пример вывода текста в середине длины строки';
BEGIN
CLRSCR;
GoToXY((80-LENGTH(text)) div 2, 10);
write(text);
END.
В данной программе использована стандартная функция LENGTH, позволяющая определить длину ее аргумента строкового типа.
Некоторые другие процедуры модуля CRT:
ClrEOL - очищает строку от курсора до ее конца;
DelLin - удаляет строку, на которой находится курсор, а те, что ниже, поднимает на строку вверх;
TextColor(c) - задает цвет символов, с - целая величина - номер цвета;
TextBackGround(c) - задает цвет фона.
Функция ReadKey - читает символ, вводимый с клавиатуры, без его отображения на экране; приостанавливает выполнение программы до нажатия любой клавиши, кроме Shift, Ctrl, Alt, CapsLock, NumLock, ScrollLock.
Практический пример. Программа "меню"
Здесь мы рассматриваем пример программы, управляемой с помощью меню. На первом этапе разработки ограничимся самым простым случаем: для выбора нужного пункта меню пользователь должен ввести его номер. В качестве действий, выполняемых при выборе того или иного пункта, программа просто печатает его номер. В программе используется одна нестандандартная процедура WriteMenu, которая выводит текст меню в указанном заранее месте экрана. При выводе меню изменяются цвета символов и фона.
Program No13;
uses CRT;
Type
massiv=array [1..4] of string;
Const
Nm=4; r=5; c=20;
M:massiv= (' Пункт 1 ', ' Пункт 2 ', ' Пункт 3 ',' Выход ');
Var
i,k: integer;
{-------------------------------------------------------------------------------}
Procedure WriteMenu(col,row,N: integer; Mnu: massiv);
Var
i: integer;
Begin
textcolor(15); textbackground(7);
gotoxy(col,row);
For i:=1 to N do
begin
write(Mnu[i]);
gotoxy(col,row+i)
end;
End;
{********************************************************************}
BEGIN
clrscr;
WriteMenu(c,r,Nm,M);
k:=1;
Repeat
begin
gotoxy(c,r+7); write('Укажите пункт меню '); read(k); {***}
Case k of
1: begin gotoxy(c, r+8);writeln('Пункт 1') end;
2: begin gotoxy(c, r+8);writeln('Пункт 2') end;
3: begin gotoxy(c, r+8);writeln('Пункт 3') end;
4: begin gotoxy(c, r+8);writeln('Пункт 4') end;
end;
end;
Until k=Nm;
textbackground(0); textcolor(15);
END.
В разделе описаний заданы следующие константы: Nm - количество пунктов меню, r , c - координаты левого верхнего угла меню. При работе программы меню печатается на экране на светлом фоне.
После того, как мы убедимся, что программа работает правильно, можно приступать к ее усовершенствованию. Например, поочередно вводить в нее тексты процедур, реализующих выполнение каждого из пунктов меню. Мы же усовершенствуем само меню - предоставим пользователю возможность выбора того или иного пункта с помощью клавиш управления курсором. Для активизации выбранного пункта он должен нажать клавишу <ENTER>. Процесс выбора и активизации пунктов меню оформим в виде процедуры, поэтому в главной программе изменения будут минимальными: оператор чтения номера пункта меню заменится на обращение к процедуре:
Procedure Menu(col,row,N: integer; Mnu: massiv; var k:integer);
Var
punkt: integer;
ch : char;
Begin
textbackground(7);
Repeat
punkt:=k;
textcolor(4); gotoxy(col,row-1+punkt);
write(Mnu[punkt]);
ch:=readKey;
if ch=char(0) then
begin
ch:=readkey;
case ch of
char(72):if k>1 then k:=k-1;
char(80):if k<N then k:=k+1;
end;
end;
textcolor(15); gotoxy(col,row-1+punkt);
write(Mnu[punkt]);
punkt:=k; gotoxy(col,row-1+punkt);
write(Mnu[punkt]);
Until ch=char(13);
textbackground(0);
End;
Обращение к этой процедуре
Menu(c,r,Nm,M,k);
должно заменить строку
gotoxy(c,r+7); write('Укажите пункт меню '); read(k);
примера Program No13.
