Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторный практикум по информатике для студентов инженерных специальностей приборостроительного факультета

.pdf
Скачиваний:
0
Добавлен:
24.11.2025
Размер:
1.89 Mб
Скачать

Edit4.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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]