Программирование разветвляющихся алгоритмов
Лабораторная работа № 7
ОСНОВЫ ПРОГРАММИРОВАНИЯ В СИСТЕМЕ
TURBO PASCAL.
РАБОТА С ГЛАВНЫМ МЕНЮ СИСТЕМЫ.
ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩИХСЯ АЛГОРИТМОВ
Цель:
Изучить команды режимов EDIT, SEARCH и RUN среды Turbo Pascal версии 7.0. Изучить основные операторы и конструкции языка Pascal для программирования разветвляющихся алгоритмов.
Общие сведения
Меню опции EDIT
UNDO. В активном окне редактора восстанавливает только что уничтоженную командой Ct.rl - У или измененную строку. Турбо Паскаль создает специальный буфер изменений для каждой страницы редактора. Последовательное использование опции UNDO может отменить все сделанные Вами изменения текста. Опция может вызываться непосредственно из окна редактора клавишами Alt - Backspace.
REDO. Отменяет действие предыдущей команды UNDO.
CUT. Удаляет выделенный блок из окна редактора и переносит его в буфер обмена Clipboard. Опция вызывается непосредственно из редактора командой Shift - Del.
СОРУ. Копирует выделенный блок из окна редактора в буфер обмена Clipboard. Опция вызывается непосредственно из редактора командой Сtrl – Ins.
PASTE. Копирует содержимое буфера обмена Clipboard в окно редактора. Содержимое буфера остается без изменений и может использоваться повторно. Опция вызывается непосредственно из редактора командой Shift-Ins.
CLEAR. Удаляет из окна редактора выделенный блок, но не помещает его в буфер. Удаленный фрагмент безвозвратно теряется. Опция вызывается непосредственно из редактора командой Ctrl—Del.
SHOW CLIPBOARD. Показывает содержимое буфера обмена.
Меню опции SEARCH
FIND.Обеспечивает поиск нужного фрагмента текста в активном окне редактора. В момент обращения к этой опции в поле выбора диалогового окна содержится слово, на которое указывал курсор в активном окне редактора. Вы можете ввести новое слово или текстовую строку, положение которой в редактируемом файле Вам необходимо найти, или выбрать эту строку из протокола. После нажатия на Enter (или выбора командного поля ОК) редактор отыщет этот фрагмент в тексте и установит курсор на его начало.
Поиск управляется следующими переключаемыми опциями:
Case sensitive - учитывать величину букв (т.е. прописные буквы считать отличающимися от строчных; опция определена только для латинских букв);
Whole words опlу - искать по совпадению целых слов (если текст будет обнаружен внутри более длинного нoгo слова, поиск продолжится дальше);
Regular expression - искать по выражению-описателю текста;
Forward - направление поиска вниз но тексту;
Backward - направление поиска вверх по тексту;
Global - искать во всем тексте;
Selected text - искать только в выделенном блоке;
From cursor - начать поиск от текущего положения курсора;
Entire scope - искать от начала текста.
В поле ввода можно ввести выражение-описатель текста, которое формируется из следующих специальных символов:
^ - в начале строки в выражении-описателе означает начало текстовой строки в искомом тексте;
$ - в конце строки в выражении-описателе показывает конец текстовой строки;
· - на этом месте может стоять любой символ;
*- после любого символа означает любое количество (в том числе ноль) этих символов, которые могут стоять вместо него; например, bo* означает b, bo, boo, bot, be;
+ - посла символа означает один или больше (не ноль) этих символов, которые могут стоять вместо него; например, bо+ означает bo, bot, boo, но не b или be;
[ ] - означает один из символов, который может стоять внутри скобок, но не любой другой символ; например, [botJ означает b, о, или t;
[^] - символ ^ в начале строки, заключенной в квадратные скобки, означает отрицание; например [^bot] — это любые символы, кроме b, o или t;
[-] - символ «-»между двумя символами, обрамленными квадратными скобками, определяет диапазон; например, [b-о] означает любые символы от b до о включительно;
\ - перед специальным символом означает сам символ; например, \^ означает сам символ ^, а не начало строки.
REPLACE. Отыскивает в окне редактора нужный текстовый фрагмент и заменяет ею на новый. Диалоговое окно этой опции похоже на предыдущее со следующими отличиями:
· в поле вводя Text to find нужно ввести искомый текст или выражение-описатель, в поле New text — тот текст, который будет вставляться вместо искомого;
· переключаемая опция Prompt on replace указывает на необходимость запросить подтверждение у программиста, прежде чем производить замену найденного фрагмента;
· командное поле Change аll используется для поиска и замены всех обнаруженных вхождений фрагмента текста (поле ОК или нажатие на Enter означает только однократный поиск-замену).
SEARCH AGAIN. Повторяет поиск или поиск и замену фрагмента текста для ранее установленных параметров.
GO TO LINE NUMBER. Осуществляет позиционирование курсора в окне редактора на строку с указанным номером.
SHOW LAST COMPILER ERROR. Показывает строку текста программы, в которой была обнаружена синтаксическая ошибка при последним прогоне компилятора.
FIND ERROR. Отыскивает в тексте программы строку, вызвавшую ошибку периода исполнения программы. Как правило, при работе в среде Турбо Паскаля ошибка периода прогона программы (например, деление наноль) вызывает автоматическое прекращение прогона, в окне редактора появляется текст программы и курсор показывает то место, в котором возникла ошибка. Если программа компилировалась без привлечения средств отладки или исполнялась вне среды Турбо Паскаля, нужно записать или запомнить два шестнадцатиричных числа, которые появляются на экране в сообщении об ошибке и указывают адрес ошибочной ситуации, затем загрузить Турбо Паскаль (если программа исполнялась вне среды) и вызвать эту опцию. После ввода адреса ошибки, среда начнет поиск ошибочного оператора.
FIND PROCEDURE. Позволяет в режиме отладки отыскать в тексте программы нужную процедуру или функцию.
Меню опции RUN
RUN. Осуществляет компиляцию, компоновку и исполнение (прогон) программы из файла редактора. Компиляция проходит в режиме MAKE (см. опцию COMPILE/MAKE). Если программа уже oткомпилирована к этому моменту, то среда сразу начнет ее прогон. Опция вызывается непосредственно из редактора командой Ctrl— F9.
СО ТО CURSOR. Начинает или продолжает режим отладки исполняемой программы под управлением встроенного отладчика. Вначале осуществляются все действия по компиляции и компоновке программы, затем программа начинает работать обычным образом (экран переходит в режим воспроизведения окна программы) и останавливается перед выполнением первого оператора из той строки, на которую указывает курсор. В этот момент экран возвращается в режим воспроизведения окна редактора, а строка с курсором выделяется цветным прямоугольником. Можно перевести курсор к новой строке и вновь выбрать эту опцию - программа остановится перед выполнением нового оператора и т.д. В этом режиме доступны все средства встроенного отладчика. Для прекращения отладки нажмите клавиши Сtrl –F2. Опция вызывается непосредственно из редактора клавишей F4.
TRACE INTO. Начинает или продолжает режим отладки исполняемой программы под управлением внутреннего отладчика. Если к моменту обращения к этой опции режим отладки не был запущен, он запускается точно так, как если бы была вызвана опция СО ТО CURSOR, однако программа останавливается перед первым исполняемым оператором, т.е. указатель будет указывать на слово BEGIN, открывающее раздел операторов основной программы. Если режим отладки уже был запущен, вызов этой опции приведет к выполнению всех дeйcтвий, запрограммированных в текущей строке, и указатель сместится к следующей строке программы. Если текущая строка содержит обращение к процедуре или функции, управление будет передано внутрь этой процедуры (функции) и программа остановится перед исполнением ее первого оператора. Таким образом, с помощью этой опции можно по шагам прослеживать исполнение всех нестандартных процедур (функций). Опция вызывается непосредственно из редактора клавишей F7.
STEP OVER. Также, как и предыдущая опция, начинает или продолжает пошаговое прослеживание работы программы, но не прослеживается работа вызываемых процедур и функций. Опция вызывается непосредственно из редактора клавишей F8.
PROCRAM RESET. Сбрасывает все ранее задействованные отладочные средства и прекращает отладку программы. Удаляет исполнявшуюся программу из памяти и закрывает все открытые в ней в этот момент файлы. Опция вызывается непосредственно из редактора командой Сtrl-F2.
PARAMETERS. Позволяет задать текстовую строку параметров, которые ДОС передает вызываемой программе. Эта строка передается программе, находящейся в окне редактора, при ее прогоне.
Программирование разветвляющихся алгоритмов
Алгоритм называется разветвляющимся, если он содержит несколько ветвей, отличающихся друг от друга содержанием вычислений. Выход вычислительного процесса на ту или иную ветвь алгоритма определяется исходными данными задачи.
Перед выполнением работы необходимо ознакомиться с правилами записи логических выражений, операций сравнения, операторов IF, CASE, GOTO.
Пример. Разработать программу для вычисления выражения вида
ln(a·b)2 , если а·b < 0
d = ln(a·b) , если а·b > 0
0 , если а·b = 0
Один из вариантов программы приведен ниже:
program MaPr;
var
a,b,d:rea1;
begin
writeln(‘ Введите исходные данные');
readln(a,b);
if a*b<0 then
d:=ln(sqr(a*b));
if a*b>0 then
d:=ln(a*b);
if a*b=0 then
d:=0;
writeln(‘d=’,d:8:2,’для a=’,a:8:2,’и b=’,b:8:2)
end.
Порядок выполнения работы
1. Изучить описание лабораторной работы, необходимые сведения, указанные в п.4, ответить на контрольные вопросы.
2. Получить у преподавателя вариант задания.
3. Набрать текст программы (в соответствии с полученным вариантом задания).
4. Отладить программу с использованием отладчика Turbo Pascal и продемонстрировать ее работу в этом режиме преподавателю.
5. Создать второй вариант программы путем замены в именах переменных всех строчных букв на прописные (и наоборот). Имена переменных в операторах IF и CASE не изменять. Продемонстрировать работу данного варианта программы преподавателю.
6. Внести изменения в исходные данные так, чтобы продемонстрировать преподавателю работоспособность всех ветвей программы.
7. Оформить отчет по лабораторной работе, защитить и сдать его преподавателю. Отчет должен содержать цель работы, задание, блок-схему программы, распечатку программы и результатов прогона программы.
Варианты заданий
Задание. Разработать программу вычисления выражения и вывода полученного результата (на экран). Соответствующие исходные данные ввести с клавиатуры.
Номер варианта | Выражение | Исходные данные |
a = | x, y | |
x, y | ||
x, y | ||
x, y | ||
I, a | ||
a, b, x | ||
x, y |
k, m | ||
k, p | ||
f, q | ||
x, y, z | ||
x, y, z | ||
x, y, z | ||
x, y, z | ||
x, y, z | ||
x, y, z | ||
x, y | ||
x, y | ||
x, y | ||
x, y | ||
a, b, x |
x, y | ||
k, m | ||
k, p | ||
f, q | ||
x, y, z | ||
x, y, z | ||
x, y, z | ||
x, y, z | ||
x, y | ||
x, y | ||
Примечание. Здесь min, max – операции нахождения минимального и максимального из перечисленных в скобках значений элементов. |
Контрольные вопросы
1. Какие команды текстового редактора вы знаете?
2. Какие команды имеются в режимах RUN, SEARCH?
3. Какие операторы используются для программирования разветвлений?
4. Как выполняются операторы перехода?