- •Содержание
- •Введение
- •1 Основные компоненты Delphi
- •1.1 Знакомство с интегрированной средой программирования Delphi
- •1.1.1 Главное окно
- •1.1.2 Окно формы
- •1.1.4 Окно кода
- •1.1.5 Создание простого приложения
- •1.2 Программирование алгоритмов линейных структур путем создания простейших приложений в среде Delphi
- •1.2.1 Раздел описания процедур
- •1.2.2 Раздел меток
- •1.2.3 Раздел констант
- •1.2.4 Раздел типов
- •1.2.5 Раздел переменных
- •1.2.6 Раздел операторов
- •1.2.7 Реализация алгоритмов линейной структуры
- •1.2.8 Математические вычисления в языке Object Pascal
- •1.3 Условный оператор
- •1.4 Цикл с предусловием
- •1.5 Цикл с параметром
- •1.6 Цикл с постусловием
- •1.7 Обработка одномерных массивов
- •1.8 Обработка двумерных массивов
- •1.9 Табулирование функции двух переменных
- •1.10 Процедуры и функции
- •2 Общие сведения о программе MathCad
- •2.1 Знакомство с интегрированной средой MathCad
- •2.1.1 Окно программы MathCad
- •2.1.2 Алфавит системы MathCad
- •2.2 Построение графика функции
- •2.3 Решение рациональных уравнений
- •2.4 Решение системы линейных алгебраических уравнений
- •2.5 Решение нелинейных уравнений
- •2.6 Решение систем нелинейных уравнений
- •2.7 Решение дифференциальных уравнений
- •Список использованных источников
1.6 Цикл с постусловием
Цель: Научиться программировать циклы с неизвестным числом повторений, используя, оператор цикла с последующим условием.
Рассмотрим данную тему на следующих примерах:
Задание1: Вычислить для некоторого значения х с заданной точностью сумму:
Технология выполнения задания
Постановка задачи: Создать приложение вычисления суммы бесконечного ряда y.
Математическая модель представляется так: исходные данные – x, eps, результат – y, a- слагаемое ряда.
Предварительная работа: Обозначим через ак общее слагаемое суммы и найдем рекуррентное соотношение, связывающее ак-1 и ак.
Для этого составим отношение:, из которого получим ак=ак-1*х/к, к=1,2,….
Ясно, что процесс вычисления носит циклический характер: после задания начального элемента суммы а0=1, дальнейшие действия сводятся к многократному вычислению очередного слагаемого и последующему суммированию, то есть нахождению очередного приближения к искомому результату:
а0=1, у= а0;
а1=а0*х/1, у= а0+а1;
а2=а1*х/2, у=а0+а1+а2;
и т.д.
Этот процесс заканчивается, когда очередное слагаемое удовлетворяет условию:
Очевидно, что число повторений этого цикла заранее неизвестно, а его определение равносильно решению поставленной задачи.
В подобных случаях можно лишь сформулировать условие, при выполнении которого циклический процесс должен завершиться.
Одним из способов программирования таких вычислительных процессов является использование оператора цикла с последующим условием. Это оператор имеет вид:
Repeat
A1, A2, …, An
until B .
Здесь repeat и until - служебные слова, А1,А2,…,Аn – последовательность выполняемых в цикле операторов (тело цикла), В – логическое выражение, управляющее повторением цикла.
Алгоритм решения задачи: запишем алгоритм решения поставленной задачи с помощью блок-схемы (описываем только процедуру вычисления значения функции).
Программа: Установите компоненты на форме и измените свойство Caption для каждого компонента в соответствии с рисунком 14.
Для компонента BitBtn1 (кнопка Закрыть) в инспекторе объектов измените свойство Kind – bkClose.
Двойным щелчком по компоненту Button1 (кнопка Вычислить) автоматически создается в окне кода стандартная структур.
В данную структуру впишите часть программы (у каждого варианта своя индивидуальная часть программы). Для задания 1 эта часть выглядит следующим образом:
procedure TForm1.Button1Click(Sender: TObject);
var x,eps,a,y:real;
k: integer;
begin
x:=StrToFloat(Edit1.Text);
eps:=StrToFloat(Edit2.Text);
k:=1;
a:=1;
y:=a;
repeat
k:=k+1;
a:=a*x/k;
y:=y+a;
until abs(a/s)<=eps;
Label3.Caption:='частичная сумма'+FloatToStrF(y,ffFixed,6,4);
end;
Рисунок 14 - Образец размещения компонент на форме
Задание2: Вычислить с точностью >0 сумму бесконечного ряда для выбранного значения 0<х<1:
Технология выполнения задания
Постановка задачи: Создать приложение вычисления суммы бесконечного ряда s.
Математическая модель представляется так: исходные данные – x, eps, результат – s, a- слагаемое ряда.
Алгоритм решения задачи: запишем алгоритм решения поставленной задачи с помощью блок-схемы (описываем только процедуру вычисления значения функции).
Программа: Установите компоненты на форме и измените свойство Caption для каждого компонента в соответствии с рисунком 15.
Рисунок 15 - Образец размещения компонент на форме
Для компонента BitBtn1 (кнопка Закрыть) в инспекторе объектов измените свойство Kind – bkClose.
Двойным щелчком по компоненту Button1 (кнопка Вычислить) автоматически создается в окне кода стандартная структур. В данную структуру впишите часть программы (у каждого варианта своя индивидуальная часть программы). Для задания 2 эта часть выглядит следующим образом:
procedure TForm1.Button1Click(Sender: TObject);
var x,eps,a,s:real;
k: integer;
begin
x:=StrToFloat(Edit1.Text);
eps:=StrToFloat(Edit2.Text);
k:=1;
a:=sqr(x)/2;
s:=a;
repeat
k:=k+1;
a:=power(x,2*k)/2*k;
s:=s+a;
until abs(a/s)<=eps;
Label3.Caption:='частичная сумма'+FloatToStrF(s,ffFixed,6,4);
end;
Задание3: Вычислить с заданной точностью бесконечное произведение:
Технология выполнения задания
Постановка задачи: Создать приложение вычисления произведения бесконечного ряда P.
Математическая модель представляется так: k - номер очередного сомножителя, P - произведение k сомножителей, eps – требуемая точность вычислений, результат – P.
Алгоритм решения задачи: запишем алгоритм решения поставленной задачи с помощью блок-схемы (описываем только процедуру вычисления значения функции).
Рисунок 16 - Образец размещения компонент на форме
Программа: Установите компоненты на форме и измените свойство Caption для каждого компонента в соответствии с рисунком 16.
Для компонента BitBtn1 (кнопка Закрыть) в инспекторе объектов измените свойство Kind – bkClose.
Двойным щелчком по компоненту Button1 (кнопка Вычислить) автоматически создается в окне кода стандартная структур. В данную структуру впишите часть программы (у каждого варианта своя индивидуальная часть программы). Для задания 3 эта часть выглядит следующим образом:
procedure TForm1.Button1Click(Sender: TObject);
var P,eps:real;
k: integer;
begin
x:=StrToFloat(Edit1.Text);
eps:=StrToFloat(Edit2.Text);
k:=2;
P:=1;
repeat
P:=P*(1-2/(k*(k+1)));
K:=k+1;
until 1/(k*k)<=eps;
Label3.Caption:='P='+FloatToStrF(P,ffFixed,6,4);
end;
Таблица 8 - Индивидуальные варианты лабораторной работы №6
№ В |
Варианты индивидуальных заданий |
|
I. Задание: Вычислить с заданной точностью >0 бесконечную сумму или произведение для выбранного значения х. Проследить за изменением результата при изменении величины eps. Для контроля в некоторых примерах в квадратных скобках приведено или выражение, представляющее данную сумму или произведение, или их табличное значение (при х=1), взятое из справочника. |
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
Продолжение таблицы 8
10 |
|
11 |
|
12 |
|
|
II. Вычислить бесконечное произведение P при заданном значении х. Для контроля в каждом задании в квадратных скобках приведено точное значение вычисляемого произведения. |
13 |
|
14 |
|
15 |
|
16 |
Вычислить с точностью >0 сумму бесконечного ряда для выбранного значения 0<х<1: ; |
17 |
Вычислить с точностью >0 сумму бесконечного ряда для выбранного значения 0<х<1:
|
18 |
Вычислить с точностью >0 сумму бесконечного ряда для выбранного значения 0<х<1: ; |
19 |
Вычислить с точностью >0 сумму бесконечного ряда для выбранного значения 0<х<1:
|
Продолжение таблицы 8
20 |
Вычислить с точностью >0 сумму бесконечного ряда для выбранного значения 0<х<1:
|
21 |
Вычислить с точностью >0 сумму бесконечного ряда для выбранного значения 0<х<1:
|
22 |
Вычислить с точностью >0 сумму бесконечного ряда для выбранного значения 0<х<1: ; |
23 |
Вычислить с точностью >0 сумму бесконечного ряда для выбранного значения 0<х<1:
|
24 |
Вычислить с точностью >0 сумму бесконечного ряда для выбранного значения 0<х<1:
|
25 |
Вычислить с точностью >0 сумму бесконечного ряда для выбранного значения 0<х<1: ; |
26 |
Вычислить с точностью >0 сумму бесконечного ряда для выбранного значения 0<х<1: ; |
Продолжение таблицы 8
27 |
Вычислить с точностью >0 сумму бесконечного ряда для выбранного значения 0<х<1: ; |
28 |
Вычислить с точностью >0 сумму бесконечного ряда для выбранного значения 0<х<1:
|
29 |
Вычислить с точностью >0 сумму бесконечного ряда для выбранного значения 0<х<1: ; |
30 |
Вычислить с точностью >0 сумму бесконечного ряда для выбранного значения 0<х<1: . |