Лабораторный практикум по информатике для студентов инженерных специальностей приборостроительного факультета
.pdfEdit4.Text = ''
Button1.Caption = 'Счет'
Memo1.Lines = ''
Memo1.ScrollBars = ssVertical
11. Для решения задачи запишем обработчик событий Button1.Click, щелкнув на компоненте Button1 (кнопка Счет) два раза левой кнопкой мыши. Текст соответствующей процедуры имеет следующий вид:
procedure TForm1.Button1Click(Sender: TObject); var x1,x2,x,h,s,st,f:extended; n,i:integer; stroka:string;
begin Memo1.Clear;
n:=StrToInt(Edit1.Text);
x1:=StrToFloat(Edit2.Text);
x2:=StrToFloat(Edit3.Text);
h:=StrToFloat(Edit4.Text);
x:=x1; repeat
st:=1; s:=0; f:=1;
for i:=1 to n do begin st:=st*x; f:=f*i; s:=s+st/f;
end; stroka:='f('+FloatToStr(x)+')= '
+FloatToStrF(s,ffFixed,7,3);
Memo1.Lines.Add(stroka);
x:=x+h; until x>x2;
end;
12. Запустить проект на компиляцию и выполнение.
13. Задать значения для N 10 , x1 1, x2 10, h 0.5 и нажать кнопку Счет. Результат выполнения программы показан на рис. 3.1.
40
Рис. 3.1. Результат выполнения программы
Контрольный пример 3.2. Корень некоторого уравнения находится последовательными приближениями по формуле
xn 1 4 29 3xn2 8xn . Написать программу для нахождения такого приближения корня, при котором разность по модулю между
двумя соседними приближениями не превосходит 10 6 , а начальное приближение x0 1.92 . Вывести на экран корень уравнения до 5-го
знака и число итераций.
Решение. 1. Открыть новый проект Delphi: File–New Application.
2. Установить с помощью Object Inspector следующие свойства компонента Form1:
Form1.Height = 323
Form1.Wight = 268
Form1.BorderIcons biMaximize = false Form1BorderStyle = bsSingle
Form1.Position = poScreenCenter
Form1.Caption = ‘ Последовательные приближения’.
3. Расположить на форме следующие компоненты: четыре компонента Edit, четыре компонента Label, один компонент Button. Установить с помощью Object Inspector для них следующие свойства:
41
Label1.Caption = 'начальное приближение'
Label2.Caption = 'решение'
Label3.Caption = 'количество итераций'
Label3.Caption = 'Проверка: подстановка в исходное уравнение'
Edit1.Text = ''
Edit2.Text = ''
Edit3.Text = ''
Edit4.Text = '' Button1.Caption = 'Решение'
4. Для решения задачи запишем обработчик событий Button1. Click, щелкнув на компоненте Button1 (кнопка Решение) два раза левой кнопкой мыши.
Текст соответствующей процедуры имеет следующий вид:
procedure TForm1.Button1Click(Sender: TObject); var x0,x1,eps,f:extended; n:integer;
begin x0:=StrToFloat(Edit1.Text); eps:=1E-6;
x1:=exp(ln(29+3*sqr(x0)+8*x0)*(1/4));
n:=1;
while abs(x0-x1)>eps do begin
x0:=x1;
x1:=exp(ln(29+3*sqr(x0)+8*x0)*(1/4));
n:=n+1;
end;
Edit2.Text:=FloatToStrF(x1,fffixed,10,4); Edit3.Text:=IntToStr(n-1); f:=sqr(sqr(x1))-3*sqr(x1)-8*x1-29; Edit4.Text:=FloatToStrF(f,fffixed,10,6);
end;
Переменные, которые необходимы для решения задачи, описаны
всоответствующем разделе процедуры TForm1.Button1Click.
5.Запустить проект на компиляцию и выполнение.
6.Задать значение начального приближения и нажать кнопку Решение. Результат выполнения программы показан на рис. 3.2.
42
Рис. 3.2. Результат выполнения программы
Содержание отчета
Отчет должен содержать ответы на контрольные вопросы, тексты программ и результат решения соответствующего варианта.
Контрольные вопросы
1.Каково назначение операторов повторений (циклов)?
2.В чем различия операторов повтора while и repeat?
3.В каких случаях предпочтительнее использовать для организации циклов оператор повтора for? Что записывается в заголовке этого оператора?
4.Какие ограничения накладываются на использование парамет-
ра цикла в цикле for?
5.Что такое вложенные циклы? Какие дополнительные условия необходимо соблюдать при организации вложенных циклов?
6.Перечислите основные свойства компонента Memo.
7.Как получить доступ к заданной строке компоненте Memo?
8.Что такое многострочный редактор?
43
|
|
|
|
Варианты заданий |
|
|
|
|
|
|
Вариант 1 |
Задание 1. |
Составить |
программу для расчета функции |
|||
N |
x |
k |
|
|
|
f x |
|
|
. Значения |
N и x вводятся с клавиатуры. Преду- |
|
|
|
||||
k 3 ! |
|||||
k 1 |
|
|
|
|
|
смотреть возможность вывода значений функции в зависимости от |
||||||||||
x , изменяющегося в диапазоне |
x1, x2 с заданным шагом h . |
|
|
|
|
|||||
Задание 2. Вычислить x 3 a для заданного значения a |
по ре- |
|||||||||
|
|
|
|
1 |
|
|
a |
|
|
|
куррентному соотношению |
Ньютона: |
x |
|
x 2 |
|
|
, |
|||
|
|
|||||||||
|
|
n 1 |
3 |
n |
|
|
|
|
||
|
|
|
|
|
xn |
|
||||
x0 a . Сколько итераций надо выполнить, чтобы для заданной по-
грешности выполнялось соотношение |
|
xn 1 xn |
|
? |
|
|
|
|
|
|
|
|
|||
Вариант 2 |
|
|
|
|
|
||
|
|
|
|
N |
|
k |
|
|
|
|
|
2 k x |
|
||
Задание 1. Составить программу для расчета |
|
f x |
. |
||||
|
|
||||||
|
|
|
|
|
3 k 8 ! |
||
|
|
|
|
k 1 |
|
|
|
Значения N и x вводятся с клавиатуры. Предусмотреть возмож- |
|||||||
ность вывода значений функции в зависимости от x , изменяющего- |
|
ся в диапазоне x1, x2 с заданным шагом h . |
|
Задание 2. Пусть x1 0,3 , x2 0,3 , xi i sin(xi 1) , |
i 3,4,... |
Найти x1 x2 x3 xn . Число n вводится с клавиатуры. Элементы последовательности вывести в компонент Memo.
Вариант 3
N |
5e |
kx |
|
||
Задание 1. Составить программу для расчета f x |
|
|
|
. |
|
|
|
|
|
||
|
k 1 ! |
||||
k 13k |
|
||||
Значения N и x вводятся с клавиатуры. Предусмотреть возмож- |
|||||
ность вывода значений функции в зависимости от x , изменяющегося в диапазоне x1, x2 с заданным шагом h .
44
Задание 2. Корень некоторого уравнения находится последовательными приближениями по формуле xn 1 3 xn 0,1 . Написать
программу для нахождения такого приближения корня, при котором разность по модулю между двумя соседними приближениями
не превосходит 10 4 , а x0 1,1.
Вариант 4
|
N |
||
Задание 1. |
Составить программу для расчета f x |
cos 2 k |
. |
|
|||
|
k 12k sin k ! |
||
Значения N |
и x вводятся с клавиатуры. Предусмотреть возмож- |
||
ность вывода значений функции в зависимости от x , изменяющего- |
||||||||
ся в диапазоне x1, x2 |
с заданным шагом h . |
|
||||||
Задание 2. Для заданного |
x 1 |
вычислить y x по итераци- |
||||||
|
1 |
|
|
x |
|
|
|
|
онной формуле yi |
|
|
|
с погрешностью |
, задав |
|||
|
|
yi 1 |
|
|
||||
|
2 |
|
|
yi 1 |
|
|
||
начальное приближение y0 x . Сравнить с результатом использо-
вания встроенной функции. Сколько итераций пришлось выполнить?
Вариант 5
N |
2 |
k |
|
|
Задание 1. Составить программу для расчета f x |
sin |
|
. |
|
|
|
|
||
k 1 xk |
k! |
|||
Значения N и x вводятся с клавиатуры. Предусмотреть возмож-
ность вывода значений функции в зависимости от x , изменяющего- |
|||||
ся в диапазоне x1, x2 |
с заданным шагом h . |
|
|
|
|
|
Задание 2. Вычислите x1 x2 x20 , если последовательность |
||||
x , x ,...образована |
по следующему закону: x 0, |
x |
5 |
, |
|
|
|||||
1 |
2 |
1 |
2 |
8 |
|
|
|
|
|
|
|
45
x |
xi 2 |
|
|
|
3 |
x |
|
, |
i 3,4,... Элементы последовательности выве- |
||||||
|
|
|
|||||||||||||
i |
2 |
|
|
4 |
i 1 |
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
||||
сти в компонент Memo. |
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
Вариант 6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
N |
k! |
x |
k |
||
|
Задание 1. Составить программу для расчета f x |
|
|
|
|
. |
|||||||||
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
k 1k! 1 |
2 |
|
|||
Значения |
|
N и |
x |
вводятся с клавиатуры. Предусмотреть возмож- |
|||||||||||
ность вывода значений функции в зависимости от x , изменяющего- |
|||||||||
ся в диапазоне |
x1, x2 с заданным шагом h . |
|
|
|
|
||||
Задание 2. |
Пусть a |
a 1; |
a a |
k 1 |
|
ak 1 |
, где |
k 2,3, . |
|
2k 1 |
|||||||||
|
0 |
1 |
k |
|
|
|
|||
|
|
|
|
|
|
|
|
||
Написать программу нахождения произведения a0 a1 an . Число n вводится с клавиатуры. Числа ak вывести в компонент Memo.
Вариант 7
N |
2k 1 |
|
|
Задание 1. Составить программу для расчета f x |
x2k . |
||
|
|||
k 1 |
2k ! |
||
Значения N и x вводятся с клавиатуры. Предусмотреть возможность вывода значений функции в зависимости от x , изменяющегося в диапазоне x1, x2 с заданным шагом h .
Задание 2. Дано целое k 0 . Вывести на печать k-й член пос-
ледовательности, |
задаваемой формулами: x 1; |
x n x |
|
|
1 |
|
, |
||
|
|
|
|||||||
|
0 |
n |
n 1 |
|
n |
|
|||
n 1. |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
||
|
Вариант 8 |
|
|
|
|
|
|
|
|
|
|
N |
|
|
|
n |
|
||
|
|
x ln a |
|
|
|||||
Задание 1. Составить программу для расчета |
f x |
. |
|||||||
|
|||||||||
|
|
|
|
k! |
|
||||
|
|
k 1 |
|
|
|
|
|
|
|
Значения N , a |
и x вводятся с клавиатуры. Предусмотреть воз- |
||||||||
46
можность вывода значений функции в зависимости от x , изменяющегося в диапазоне x1, x2 с заданным шагом h .
Задание 2. Корень некоторого уравнения находится последова-
|
|
2 x3 |
|
тельными приближениями по формуле x |
n |
. Написать про- |
|
|
|||
n 1 |
|
5 |
|
|
|
|
|
грамму для нахождения такого приближения корня, при котором разность по модулю между двумя соседними приближениями не
превосходит 10 5 , а начальное приближение x0 1 .
Вариант 9
|
N |
|
2k |
|
2 |
|
Задание 1. |
Составить программу для расчета f x |
x |
|
k |
|
. |
|
|
|
|
|||
|
|
2k 1 ! |
||||
|
k 1 |
|
|
|
|
|
Значения N и |
x вводятся с клавиатуры. Предусмотреть возмож- |
|||||
ность вывода значений функции в зависимости от x , изменяющего- |
||||||||||||||||||||||
ся в диапазоне x1, x2 с заданным шагом h . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
Задание |
2. |
|
Пусть |
дано |
натуральное |
|
число |
|
n . |
|
|
Найдите |
|||||||||
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
1 |
|
|
|
a b a b a b , |
если |
a b 1, a |
|
|
|
|
b |
|
|
|
|
|
a |
, |
||||||||
|
|
|
|
|
|
|||||||||||||||||
1 1 2 2 |
|
|
n n |
|
1 1 |
k |
|
|
2 |
|
|
k 1 |
|
|
2 |
|
k 1 |
|||||
b |
2 a2 |
b |
1 |
, k 1, 2, n . Значения чисел |
|
a , |
b |
вывести в ком- |
||||||||||||||
k |
k 1 |
k |
|
|
|
|
|
|
i |
|
i |
|
|
|
|
|
|
|
|
|
|
|
понент Memo. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
Вариант 10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
N |
|
x |
k |
tg kx |
|
||||
|
Задание 1. Составить программу для расчета |
|
f x |
|
. |
|||||||||||||||||
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
k! |
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
k |
|
1 |
|
|
|
|
|
|
|
Значения N и |
x вводятся с клавиатуры. Предусмотреть возмож- |
|||||||||||||||||||||
ность вывода значений функции в зависимости от x , изменяющегося в диапазоне x1, x2 с заданным шагом h .
Задание 2. Дано вещественное положительное число b . После-
довательность a , a , образована по закону |
a b, |
a a |
|
1 |
, |
|
|
||||||
1 2 |
1 |
i |
i 1 |
|
i |
|
|
|
|
|
|
||
47
i 2,3, Написать программу нахождения первого отрицательного
члена последовательности. Значения элементов последовательности вывести в компонент Memo.
Л а б о р а т о р н а я р а б о т а № 4
ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ ПОДПРОГРАММ
Цель работы: приобретение практических навыков реализации процедур и функций.
Используемые программные средства: Borland Delphi.
Теоретические сведения
В практике программирования часто возникают ситуации, когда одну и ту же группу операторов, реализующих определенную цель, требуется повторить без изменений в нескольких местах программы. Для избавления от столь нерациональной траты времени была предложена концепция подпрограммы, которая в языке ОР бывает двух типов: процедуры и функции.
Процедура – это независимая именованная часть программы, которую можно вызвать по имени для выполнения определенных действий. Структура процедуры повторяет структуру программы. Процедура не может выступать в качестве операнда в выражении. Упоминание имени процедуры в тексте программы приводит к активизации процедуры и называется ее вызовом.
Функция сходна с процедурой, но имеет 2 отличия: функция передает в точку вызова скалярное значение, имя функции может входить в выражение в качестве операнда.
Итак, отличие подпрограмм-процедур от подпрограмм-функций состоит в том, что процедуры служат для задания совокупности действий, направленных на изменение внешней по отношению к ним программной обстановки, а функции, являясь частным случаем процедур, обязательно возвращают в точку вызова основной программы единственный результат как значение имени этой функции.
Все процедуры и функции языка Оbject Рascal делятся на две группы: встроенные (стандартные) и определенные пользователем. Первые входят в состав языка и вызываются для выполнения по
48
строго фиксированному имени. Вторые разрабатываются и именуются самим пользователем.
Для использования стандартной процедуры или функции к программе подключается тот или иной специализированный библиотечный модуль, в который входит данная стандартная процедура или функция, для чего имя специализированного библиотечного модуля указывается в разделе uses. Затем в программе осуществляется вызов процедуры или функции, для чего записывается ее имя и указываются фактические параметры, например: Pi, Sin(x), Inc(x,5), Chr(125). Так как после выполнения функции ее значение присваивается имени, то имя функции используется в выражении.
Если в программе возникает необходимость частого обращения к некоторой группе операторов, то целесообразно сгруппировать такую группу операторов в самостоятельный блок, к которому можно обращаться, указывая его имя. Такие разработанные программистом самостоятельные программные блоки называются подпрограммами пользователя. Они являются основами модульного программирования. Разбивая задачу на части и оформляя логически обособленные модули в виде процедур и функций, программист реализует основные принципы широко используемого в практике системного подхода и методов нисходящего проектирования.
При вызове подпрограммы, определенной программистом, работа главной программы на некоторое время приостанавливается, и начинает выполняться вызванная подпрограмма. Она обрабатывает данные, переданные ей из главной программы. После завершения выполнения подпрограмма-функция возвращает главной программе результат (подпрограмма-процедура не возвращает явно результирующего значения).
Передача данных из главной программы в подпрограмму и возврат результата выполнения функции осуществляются с помощью параметров. Параметром называется переменная, которой присваивается некоторое значение в рамках указанного применения. Различают формальные параметры – параметры, определенные в заголовке подпрограммы, и фактические параметры – выражения, задающие конкретные значения при обращении к подпрограмме. При обращении к подпрограмме ее формальные параметры замещаются фактическими, переданными из главной программы.
49
