Программирование циклических алгоритмов

Лабораторная работа № 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. Как программируются циклические алгоритмы с незаданным числом по­вторений цикла?