Программирование циклических алгоритмов. Изучить команды режимов COMPILE и TOOLS среды Turbo Pascal версии 7.0
Лабораторная работа № 8
ОСНОВЫ ПРОГРАММИРОВАНИЯ В СИСТЕМЕ
TURBO PASCAL.
РАБОТА С ГЛАВНЫМ МЕНЮ СИСТЕМЫ.
ПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ
Цель:
Изучить команды режимов COMPILE и TOOLS среды Turbo Pascal версии 7.0. Изучить основные операторы и конструкции языка Pascal для программирования циклических алгоритмов. Получить практические навыки написания и отладки программ с циклическими алгоритмами.
Общие сведения
Меню опции COMPILE
COMPILE. Компилирует программу или модуль, который загружен в данный момент в активное окно редактора. Если в этой программе (модуле) содержатся обращения к нестандартным модулям пользователя, последние уже должны быть откомпилированы и храниться на диске в виде TRU - файлов. Опция вызывается непосредственно из редактора командой Alt – F9.
MAKE. Создает программу, которая, возможно, содержит включаемые фаллы и/или обращения к нестандартным модулям. Прежде всего компилируется начальный файл, если, разумеется, он определен опцией COMPILE /PRIMARY FILE (см. ниже). Если начальный файл не задан, компилируется файл из активного окна редактора. Если в процессе компиляции встретилось объявление нестандартного модуля, среда проверяет, были ли сделаны в соответствующем PAS— файле с текстом программы этого модуля какие-либо изменения с момента последней его компиляции и получения TPU - файла; если изменения были, TRU - файл cоздается вновь, а если изменения коснулись его интерфейсной части, будут перекомпилированы также все другие объявленные в программе модули, в которых содержатся обращения к измененному модулю. Однако, если PAS - файл с текстом измененного модуля не будет найден, система воспользуется существующим TRU – файломбез контроля его «свежести». Отметим, что этот контроль осуществляется по дате и времени создания PAS – файла и соответствующего ему TRU-файла. Если системная дата установлена неправильно, среда Турбо Паскаля может ошибочно откомпилировать PAS— файл, для которого существует адекватный ему TPU-файл.
Опция существенно упрощает процесс разработки многофайловых программ, так как всегда компилируется только тот минимум файлов. которых коснулись сделанные в программе изменения. Опция вызывается непосредственно из редактора клавишей F9.
BUILD. Эта опция полностью подобна опции MAKE за одним исключением: для всех TPU-файлов отыскивается соответствующий PAS-файл и осуществляется его перекомпиляция независимо от того, были ли сделаны в нем изменения или нет. После компиляции в этом режиме, Bы можете быть уверены в том, что в полученной программе учтены все изменения.
DISTINATION. Эта опция управляет выходом компилятора: если справа от нее стоит кодовое слово Memory (память), выходной файл компилятора будет сохранен в оперативной памяти и может затем сразу же запускаться из Турбо Паскаля без его загрузки с диска; если справа стоит кодовое слово Disk, (диск), файл с кодом программы будет сохранен на диске в виде файла с расширением .ЕХЕ. Если объявлен начальный файл, его имя будет присвоено имени вновь создаваемого EXE-файла, в противном случае EXE - файл получит имя файла из тогo окна редактора, которое содержит текст основной программы. Независимо от значения этого параметра TPU— файлы, создаваемые в режимах RUN/RUN, COMPILE/MAKE и COMPILE/BULD, будут помещены на диск.
PRIMARY FILE. Задает имя начального файла. Если это имя задано, то вне зависимости от того, какая часть программы загружена в данный момент в окна редактора, ее компиляция в режимах RUN, MAKE и BUILD будет начинаться с этого файла. Чаще всего нaчальный файл содержит текст основной части программы. В этом случае при загрузке в окно (окна) редактора включаемого файла или файла-модуля компилятор сумеет правильно построить программу. Если начальный файл не указан, то компиляция в режимах RUN, MAKE и BUILD возможна только в том случае, когда в активном окне редактора находится основная программа.
CLEAR PRIMARY FILE. Oчищает имя начального файла, заданное опцией PRIMARY FILE.
INFORMATION. Показывает статистику программы.
Меню опции TOOLS
MESSAGES. Активизирует окно сообщений. Окно сообщений содержит вывод инструментальных программ типа CREP и позволяет использовать эти сообщения для поиска нужных фрагментов в текстах программ. Для поиска фрагмента подведите цветной указатель окна Messages к нужному сообщению и нажмите Пробел или дважды щелкните по этому сообщению мышью. Среда отыщет и покажет файл с нужным фрагментом текста программы.
GO ТО NEXT. Ищет фрагмент, заданный следующим сообщением в окне Messages. Закрывает окно Messages, открывают нужный файл и позиционирует курсор на строку, соответствующую следующему по отношению к текущему (т.е. выделенному цветом) сообщению в окне. Опция вызывается непосредственно из окна редактора клавишами Alt – F8.
GO ТО PREVIOUS. Ищет фрагмент, заданный предыдущим сообщением в окне Messages. Опция вызывается непосредственно из окна редактора клавишами Alt – F7.
CREP. Инициирует работу утилиты CREP. В строке Enret program arguments диалогового окна опции необходимо перечислить аргументы вызова CREP: имена процедур, функций, переменных, которые необходимо отыскать в текстовых файлах, а также имена этих файлов. По умолчанию параметром вызова CREP указывается *.PAS, что означает поиск по всем PAS-файлам текущего каталога. Если к моменту вызова опции текстовый курсор стоял на некотором имени процедуры, функции или переменной, это имя появится в качестве аргумента вызова перед *.PAS. После нажатия Enter CREP начнет поиск имени во всех файлах. В окне Messages появятся сообщения CREP с указанием имени файла, номера строки и фрагмента текста программы, где было найдено нужное имя. Опция вызывается непосредственно из окна редактора клавишами Shift - F2.
Программирование циклических алгоритмов
Алгоритм называется циклическим, если он содержит многократное выполнение одних и тех же ветвей при различных значениях промежуточных данных. Число повторений этих ветвей алгоритма может быть задано в явной или неявной форме.
Перед выполнением работы необходимо изучить различные схемы организации циклов и операторы FOR, WHILE и REPEAT, с помощью которых они программируются.
Пример. Составим программу для вычисления и вывода на печать таблицы значений функции y = a x2 при x = 5, 6, 7, ..., 35; a =10.2.
С использованием оператора WHILE программа имеет вид:
program Pr1;
var
y,a: real;
x: integer;
begin
x:=5; a:=10.2;
while x<=35 do
begin
y:= a*x*x;
writeln(‘ x=',x, ‘y=’,y)
x:= x+1
end
end.
С использованием REPEAT программа выглядит так:
program Pr2;
var
y,a: real;
x: integer;
begin
x:=5; a:=10.2;
repeat
y:= a*x*x;
writeln(‘ x=',x, ‘y=’,y)
x:= x+1
until x >35
end.
Порядок выполнения работы
1. Изучить необходимые сведения, указанные в п.3.
2. Получить у преподавателя вариант задания.
3. Разработать, ввести и отладить программу
4. Произвести расчет по крайней мере при двух различных вариантах исходных данных, выбранных самостоятельно.
5. Оформить отчет, защитить и сдать его преподавателю. Отчет должен содержать цель работы, задание, блок-схему программы, распечатку программы и результатов прогона программы.
Варианты заданий
1. Вычислить число сочетаний из n по m по формуле
где n!=1*2*3…(n-1)*n, целые числа n, m (n>=m>0) ввести с клавиатуры.
2. Вычислить значение выражения
b = (1+
где n ввести с клавиатуры.
3. Вычислить число размещений из n по m по формуле
,
где целые числа n и m ввести с клавиатуры (n>=m>0).
4. Вычислить приближенно значение бесконечной суммы с точностью до e = 0,001;
Значение n и точность расчетов ввести с клавиатуры.
Примечание.Считать, что требуемая точность достигнута, если очередное слагаемое оказалось по модулю меньше,чем e.
5. Вычислить приближенно значение бесконечной суммы с точностью до 0,0005:
Значение n и точность расчетов ввести как константы (см. примечание к варианту 4).
6. Дано натуральное n, определить количество цифр в числе n и сумму всех его цифр. Значение n ввести с клавиатуры.
7. Вывести на печать таблицу n значений функции при изменении х от х1 до х2 с шагом h = (х2- х1)/(n – 1). Коэффициенты a, b, c, границы интервала х1, х2 и число n ввести с клавиатуры.
8. Вычислить значение функции для k = 1,2,… .Вычисления производить до тех пор, пока y>=z. Исходные данные x, y и z (x, y>1) ввести с клавиатуры.
9. Найти приближенно , с точностью до 0,01, минимум функции f(x)= ax2 + bx + c на отрезке х1 £ х <= x2. Значения х1, х2 и a, b, c ввести как константы.
10. Пусть а1= u; b1 = v; ak = 2bk-1+ ak-1; bk = 2ak-1 + bk-1, k=2,3,4,… .Даны действительные u, v, натуральное n. Найти
11. Вычислить бесконечную сумму с точностью e=0,001.
См. примечание к варианту 4.
12. Вычислить бесконечную сумму с точностью e=0,001.
См. примечание к варианту 4.
13. Вычислить и вывести на экран таблицу значений функции у = х/k!, больших e, если k = 1,2,3,… . Исходные данные: х=1,55; e = 0,0183.
14. Вычислить и вывести на экран таблицу всех 20 значений функции z(i,j) = xi 2+ yj 3 для xi = x1, x2, x3, x4; yj = y1, y2,…,y5. Исходные данные: x1= 0,1; x2 =0,2; x3 = =0,3; x4 =0,4; y1= 1,1; y2 = 1,2; y3 = 2,1; у4 = 2,2; y5 =2,5.
15. Вычислить значение выражения
(9 + (9 + …+ (9 + 91/2)1/3…)1/m-1)1/m
Число m ввести с клавиатуры.
16. Составить программу для вычисления и вывода на экран таблицы значений сумм для а £ х £ b, изменяющегося с шагом h = (b-a)/10. Исходные данные: а = -1,05; b= 362; n = 10.
17. Вычислить и вывести на экран таблицу значений функции у = x2 – ab – cx для х = -5, -6, -7,…,-35. Исходные данные (в экспоненциальной форме записи): а = 1,14Е +1; b = -4,21Е+2; с = 3,25Е+3.
18. Составить программу вычисления и вывода на экран таблицы сумм , где х изменяется в пределах а £ х £ b с шагом h = (b-a)/10. Исходные данные: а = 0,1; b = 13; n = 12.
19. Вычислить и вывести на экран таблицу значений функции у = x2 – ab + cx, для хнач. £ х £ хкон. с шагом h. Исходные данные: а = -1,14; b = -4,21; с = 3,25; хнач.= 4,5; хкон = 35,5; h = 0,5.
20. Найти наибольшее значение функции у = аx3 + bх – c при изменении х от хнач. до хкон с шагом h. Исходные данные : а = 2,14; b = -4,21; с = 3,25; хнач.= - 4,5; хкон = - 35,5; h = - 0,5.
21. Вычислить приближенно значение бесконечной суммы с точностью до 0,0005:
Значение n и точность расчетов ввести как константы (см. примечание к варианту 4).
22. Дано натуральное n, определить количество цифр в числе n и сумму всех его цифр. Значение n ввести с клавиатуры.
23. Вывести на печать таблицу n значений функции при изменении х от х1 до х2 с шагом h = (х2- х1)/(n – 1). Коэффициенты a, b, c, границы интервала х1, х2 и число n ввести с клавиатуры.
24. Вычислить значение функции для k = 1,2,… . Вычисления производить до тех пор, пока y>=z. Исходные данные x, y и z (x, y>1) ввести с клавиатуры.
25. Найти приближенно , с точностью до 0,01, минимум функции f(x)= ax2 + bx + c на отрезке х1 £ х <= x2. Значения х1, х2 и a, b, c ввести как константы.
26. Пусть а1= u; b1 = v; ak = 2bk-1+ ak-1; bk = 2ak-1 + bk-1, k=2,3,4,… .Даны действительные u, v, натуральное n. Найти
27. Вычислить бесконечную сумму с точностью e=0,001.
См. примечание к варианту 4.
28. Вычислить бесконечную сумму с точностью e=0,001.
См. примечание к варианту 4.
29. Вычислить и вывести на экран таблицу значений функции у = х/k!, больших e, если k = 1,2,3,… . Исходные данные: х=1,55; e = 0,0183.
30. Вычислить и вывести на экран таблицу всех 20 значений функции z(i,j) = xi 2+ yj 3 для xi = x1, x2, x3, x4; yj = y1, y2,…,y5. Исходные данные: x1= 0,1; x2 =0,2; x3 = =0,3; x4 =0,4; y1= 1,1; y2 = 1,2; y3 = 2,1; у4 = 2,2; y5 =2,5.
31. Вычислить значение выражения
(9 + (9 + …+ (9 + 91/2)1/3…)1/m-1)1/m
Число m ввести с клавиатуры.
Контрольные вопросы.
1. Каково назначение режимов Compile и Tools системы Turbo?
2. Какие команды имеются в режимах Compile и Tools?
3. Как записывается и как работает оператор FOR?
4. Для организации каких циклов применим оператор FOR?
5. В чем отличие оператора WHILE от оператора REPEAT?
6. Как программируются циклические алгоритмы с явно заданным числом повторений цикла?
7. Как программируются циклические алгоритмы с незаданным числом повторений цикла?