- •Пояснительная записка
- •Программирование на алгоритмическом языке pascal
- •«Ознакомление с работой в интегрированной среде Borland Pascal»
- •Задание 1
- •Ход работы:
- •Загрузите систему Borland Pascal.
- •После входа в систему появляется рабочий экран (рис. 2).
- •Изучите пункты главного меню.
- •Задание 2
- •Методические указания к лабораторным занятиям для учащихся.
- •Лабораторная работа №1
- •Вопросы для самоподготовки:
- •Краткие теоретические сведения
- •Задание 1
- •Ход выполнения работы.
- •Задание 2
- •Лабораторная работа №2
- •Краткие теоретические сведения
- •Правила работы с условным оператором.
- •Вопросы для самоподготовки:
- •Задание 1
- •Задание 2.
- •Задание 3
- •Правила организации цикла с параметром.
- •Вопросы для самоподготовки:
- •Задание 1
- •Задание 2
- •Решение:
- •Задачи для самостоятельного решения.
- •Лабораторная работа №4. Тема: «Разработка, отладка и испытание простых циклических алгоритмов и программ с неизвестным числом повторений».
- •Краткие теоретические сведения
- •Вопросы для самоподготовки:
- •Задание 1
- •Решение:
- •Задание 2
- •Домашнее задание
- •Вопросы для самоподготовки:
- •Определим необходимые формулы:
- •Составим графическую схему алгоритма.
- •Составим таблицу соответствия переменных.
- •В соответствии с пунктами 2 и 3 составьте программу.
- •Задание 2
- •Задание 3
- •Решение:
- •Составим графическую схему алгоритма:
- •Составим таблицу соответствия переменных
- •Составим программу на языке Pascal.
- •Задание 4
- •Лабораторная работа №6. Тема: «Разработка, отладка и испытание циклических алгоритмов и программ с известным числом повторений с внутренними ветвлениями».
- •Задание
- •Задание 2
- •Решение:
- •Задание 3
- •Решение:
- •Задание 4 (задачи повышенной сложности)
- •Решение:
- •Задания для самостоятельного решения. Напишите программы с использованием процедур.
- •Дана последовательность слов. Напечатайте все слова, предварительно преобразовав каждое из них по следующему правилу:
- •Задание 5
- •Решение:
- •Задание 8 (повышенной сложности)
- •Решение:
- •Задание для самостоятельного решения:
- •(Повышенной сложности)
- •Лабораторная работа №8. Тема: «Разработка алгоритмов и программ методом пошаговой детализации. Обработка двумерных массивов. Организация ввода-вывода с помощью текстовых файлов».
- •Вопросы для самоподготовки:
- •Краткие теоретические сведения
- •Задание 1
- •Задание 2
- •Решение:
- •Составим графическую схему алгоритма.
- •Составляем таблицу соответствия переменных.
- •Составляем программу на языке программирования Pascal.
- •Задание 3
- •Задание 4
- •Лабораторная работа №9. Тема: «Разработка алгоритмов и программ решения различных задач с использованием библиотечных модулей пользователя».
- •Краткие теоретические сведения
- •Задание
- •Задача для самостоятельного решения.
- •Лабораторная работа №10. Тема: «Разработка алгоритмов и программ обработки строк. Использование множеств для решения задач».
- •Вопросы для самоподготовки:
- •Задание 6
- •Решение:
- •Задачи для самостоятельного решения:
- •Лабораторная работа №11. Тема: «Разработка алгоритмов и программ с использованием методов внутренней сортировки».
- •Задание
- •Решение:
- •Для каждой команды в одной строке введите через пробел
- •Задание для самостоятельного решения:
- •Лабораторная работа №12. Тема: «Разработка рекурсивных алгоритмов и программ».
- •Краткие теоретические сведения
- •Задание.
- •Лабораторная работа №13. Тема: «Разработка алгоритмов и программ с использованием процедур и функций модулей crt и dos».
- •Краткие теоретические сведения
- •Задание 1
- •Задание 2
- •Задание 3
- •Задание.
- •Краткие теоретические сведения
- •Решение:
- •Задание 2
- •Андреев
- •Задание для самостоятельного решения.
- •Лабораторная работа №16. Тема: «Разработка алгоритмов и программ с использованием динамических структур данных».
- •Краткие теоретические сведения
- •Задание
- •Задание для самостоятельного решения
- •Задача о «Ханойских башнях».
- •Решение:
- •Задания для самостоятельного решения.
- •Задание для самостоятельного решения:
- •Задания для самостоятельного решения:
- •Лабораторная работа №22. Тема: «Разработка программ обработки созданных файлов».
- •Постановка задачи
- •Содержание отчета
- •Варианты задания:
- •Лабораторная работа №23. Тема: «Разработка программ с использованием прерываний bios и dos, процедурных типов».
- •Краткие теоретические сведения
- •Константы
- •Задание
- •Задание для самостоятельного решения.
- •Лабораторная работа №25. Тема: «Разработка простейших программ с использованием компонентов страницы Standart».
- •Вопросы для самоподготовки:
- •Задание 1
- •Лабораторная работа №26. Тема: «Разработка программ обработки массивов с использованием компонентов страницы Standart».
- •Задание
- •Procedure tForm1.Button2Click (Sender: tObject); {обработка массива}
- •Лабораторная работа №32. Тема: «Разработка программ создания и использования мультимедийных возможностей».
- •Задание
- •Лабораторная работа №34. Тема: «Создание и использование справочной системы».
- •Краткие теоретические сведения
- •Задание
- •Ход работы:
- •Лабораторная работа №35. Тема: «Создание установочного диска».
- •Задание
Задание 1
Напишите программу, которая определяет код нажатой клавиши. Программа завершает работу при нажатии клавиши <Esc>.
Program key;
uses crt;
var
ch: char;
begin
repeat
ch:=ReadKey;
if ch=chr (0) then {нажата служебная клавиша}
begin
writeln (‘Служебная клавиша’);
ch:=ReadKey;
end;
writeln (ord (ch));
until ord (ch)=27; {пока не нажата клавиша Esc}
end.
Задание 2
Напишите программу, которая выводит список задач (пунктов меню), выделяя название первой задачи цветом. При нажатии клавиши «стрелка вниз» выделяется следующий пункт меню, при нажатии клавиши «стрелка вверх» - предыдущий. Нажатие клавиши <Esc> активизирует процедуру, связанную с выбранным пунктом (в данном случае – процедуру-заглушку).
Program menu2;
uses Crt;
const
NORM=$17; {цвет не выделенного пункта}
SEL=$70; {цвет выделенного пункта}
N=3;
Var
menu: array [1..N] of string[12]; {названия пунктов меню}
punkt: integer; {номер выделенного пункта}
ch: char; {введенный символ}
x, y: integer; {координаты первой строки меню}
procedure punkt1;
begin
ClrScr;
writeln (‘Процедура 1.Нажмите <Enter> для продолжения’);
readln;
end;
procedure punkt2;
begin
ClrScr;
writeln (‘Процедура 2.Нажмите <Enter> для продолжения’);
readln;
end;
procedure MenuToScr; {вывод меню на экран}
var i: integer;
begin
ClrScr;
for i:=1 to N do begin
GoToXY (x, y+i-1);
write (menu[i]);
end;
TextAttr:=SEL;
GoToXY (x, y+punkt-1);
write (menu[punkt]); {выделим стоку меню}
TextAttr:=NORM;
end;
{основная программа}
begin
menu[1]:=’Действие 1’;
menu[2]:=’Действие 2’;
menu[3]:=’Выход ’;
punkt:=1;
x:=5;
y:=5; TextAttr:=NORM;
MenuToScr;
repeat
ch:=ReadKey;
if ch=chr(0) then begin
ch:=ReadKey;
case ch of
chr(80): {стрелка вниз}
if punkt<N then begin
GoToXY(x,y+punkt-1);
write(menu[punkt]);
punkt:=punkt+1;
TextAttr:=SEL;
GoToXY(x,y+punkt-1);
write(menu[punkt]);
TextAttr:=NORM;
end;
chr(78): {стрелка вверх}
if punkt<1 then begin
GoToXY(x,y+punkt-1);
write(menu[punkt]);
punkt:=punkt-1;
TextAttr:=SEL;
GoToXY(x,y+punkt-1);
write(menu[punkt]);
TextAttr:=NORM;
end;
end;
end
else
if ch=chr(13) then begin { нажата клавиша <Enter>}
case punkt of
1:punkt1;
2:punkt2;
3:ch:=chr(27); {выход}
end;
MenuToScr;
end;
until ch:=chr(27); {27- код<Esc>}
end.
Задание 3
Напишите программу, которая предназначена для шифрования файла, имя которого передается ей в качестве параметра при запуске.
Program crypt;
uses
Dos;
type
FileChar=file of Char;
var
coded_file, workfile: FileChar;
file_in_name, password: String;
Dir: DirStr;
Ext: ExtStr;
procedure header;
begin
writeln;
writeln (‘Программа шифрования файлов’);
writeln (‘ ’);
writeln (‘Для справки наберите crypt /? ’);
writeln ;
end;
procedure help;
begin
writeln (‘Вызов программы:’);
writeln (‘crupt [file password] ’);
writeln (‘file – имя кодируемого декодируемого файла’);
writeln (‘password – пароль (не более 5 символов)’);
writeln;
writeln (‘Один и тот же пароль используется для ’);
writeln (‘кодирования и для декодирования файла.’);
writeln (‘Зашифрованный файл имеет расширение .cod.’);
writeln ;
end;
procedure input (var file_to_be_coded, pass: string);
begin
if ParamStr (1) = ‘/?’ then help;
if Paramcount <>2 then
begin
writeln (‘file_in :’);
readln (file_to_be_coded);
writeln (‘password: ’);
readln (pass);
end
else
begin
file_to_be_coded:=ParamStr (1);
pass:=ParamStr (2);
end;
end;
procedure encryption (var fname, fencr: FileChar; pass: string);
var
ch: char;
k, n: byte;
tmp: word;
begin
tmp:=0; n:=Length (pass);
for k:=1 to n do
begin
tmp:=tmp+Ord (pass[k]);
end;
RandSeed:=tmp;
while not Eof (fname) do
begin
read (fname, ch);
ch:=Chr (Ord (ch) xor Random (256));
write (fencr, ch);
end;
end;
begin
header;
input (file_in_name, password);
Assign (workfile, file_in_name);
{$i-}
resetworkfile);
{$i+}
if IOResult <>0 then
begin
writeln (‘Ошибка открытия файла’, file_in_name);
Halt;
end;
Fsplit (file_in_name, Dir, Name, Ext);
file_in_name:=Name+’.cod’;
Assign (coded_file, file_in_name);
Rewrite (coded_file);
encryption (workfile, coded_file, password);
Close (workfile);
Close (coded_file);
End.
Задачи для самостоятельного решения.
Напишите программу, которая восстанавливает исходный файл.
Написать программу, которая строит таблицу тригонометрических функций, одновременно выводя ее на экран частями по 5 строк и записывая в текстовый файл.
Лабораторная работа №14.
Тема: «Разработка алгоритмов и программ с использованием процедур и функций модуля Graph».
Цель работы: получение навыков составления программ на языке Pascal с использованием модулей.
Краткие теоретические сведения
Модуль Graph.
Все необходимые для работы в графическом режиме функции и процедуры находятся в модуле Graph. Поэтому первой инструкцией графической программы должна быть инструкция Uses Graph;
Инициализация графического режима.
Чтобы программа могла выводить на экран графику, нужно инициализировать графический режим работы. Инициализацию графического режима выполняет процедура InitGraph, инструкция вызова которой в общем виде должна выглядеть так:
InitGraph (GraphDriver, GraphMode, PathToDriver);
Параметр GraphDriver (тип integer) определяет используемый программой драйвер видеоадаптера, параметр GraphMode (тип integer) – режим работы видеосистемы, а параметр PathToDriver (тип string) – место нахождения драйвера на диске.
В Turbo Pascal драйверы видеоадаптеров различного типа находятся в каталоге BGI, в файлах с расширением bgi. Например, драйвер адаптера VGA представляет собой файл egavga.bgi.
Проверить результаты инициализации графического режима можно, обратившись к функции GraphReselt. Если инициализация выполнена успешно, то эта функция возвращает значение, равная именованной константе grOK.
Перед завершением работы программа, установившая графический режим, должна восстановить алфавитно-цифровой режим работы видеосистемы компьютера. Делается это вызовом процедуры CloseGraph.
Экран в графическом режиме.
Графическая программа рассматривает экран монитора как совокупность отдельных точек, которые часто называются пикселями. Похожие пикселя на экране монитора характеризуются его горизонтальной (Х) и вертикальной (У) координатами. Левый верхний пиксель имеет координаты (0, 0).
Координаты пикселей возрастают сверху вниз и слева направо. Количество пикселей на экране и, следовательно, значения координат правой нижней точки экрана зависят от режима работы видеосистемы. Например, в стандартном режиме VGA (разрешение 640х480) правая нижняя точка экрана имеет координаты (639, 479), (рис. 10).
(0,0) Х
(639,479) рис. 10
У
Указатель вывода.
Когда программа работает в алфавитно-цифровом режиме, на экране монитора находится мигающий курсор. Он показывает, в какой точке экрана появится очередной символ, например, выведенный инструкцией write. В графическом режиме мигающий курсор на экране не отображается. При выполнении инструкций вывода текста и графики графический курсор, который также называют указателем вывода, перемещая по экрану. Получить координаты указателя вывода по осям Х и У программа может, обратившись к функциям GetX и GetY. Переместить указатель в нужную точку экрана можно, вызвав процедуру MoveTo, указав в качестве параметров координаты точки экрана. Куда надо переместить указатель. Например, инструкции
MoveTo (310, 240);
OutText (‘Turbo Pascal 7.0’);
Выводят сообщение примерно в центре экрана.
Переместить указатель относительно его текущего положения можно, вызвав процедуру MoveTo, указав, на сколько точек надо переместить указатель. Инструкция вызова процедуры в общем виде выглядит так: MoveRel (dx, dy);
Параметры dx и dy задают количество точек, на которое надо переместить указатель по горизонтали и вертикали. Если значение параметра dx (dy) положительное, то указатель перемещается вправо (вниз). Если значение параметра dx (dy) отрицательное, то указатель перемещается влево (вверх).
Процедуры вычерчивания графических примитивов.
Любая картинка, чертеж, схема могут рассматриваться как совокупность графических примитивов: точек, линий, окружностей, дуг и др. Таким образом, чтобы на экране появилась нужная картинка, программа должна обеспечивать вычерчивание (вывод) графических примитивов, составляющих эту картинку. Вычерчивание на экране графических примитивов осуществляют процедуры вывода.
Цвет вывода графических примитивов.
Цвет, которым вычерчиваются графические примитивы, называются текущим цветом. Для смены текущего цвета вывода используется процедура SetColor, которой в качестве параметра передается номер требуемого цвета палитры. Например, инструкция SetColor (4) устанавливает, что текущим цветом вывода графических примитивов с этого момента является цвет с номером четыре. Конкретный цвет, определяемый указанным при вызове процедуры SetColor номером, определяется установленным в данный момент графическим режимом.
В качестве процедуры SetColor можно использовать одну из констант приведенного ниже списка.
Таблица цветов для используемых процедур.
-
Константа
Цвет
Номер цвета
Black
Черный
0
Blue
Синий
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
