- •4. Краткие теоретические сведения
- •4.1 Цикл с известным числом повторений – оператор цикла for
- •4.2 Цикл с предусловием – оператор цикла while
- •4.3 Цикл с постусловием – оператор цикла do-while
- •4.4 Организация вложенных циклов
- •5. Методические указания
- •6. Задания для общего выполнения
- •7. Индивидуальные задания
4.3 Цикл с постусловием – оператор цикла do-while
Если требуется выполнить тело цикла, хотя бы один раз до проверки условия выхода, используют оператор do-while:
do{
оператор;
}while(условие);
Цикл выполняется пока значение условия истинно. Например, считываем и выводим на экран число, пока не будет введено число большее или равное 100:
int i;
do{
scanf(“%d ”, &i);
printf(“%d”, i);
} while(i<100);
В этом случае появляется возможность просмотра значения переменной i сразу же после ее инициализации вне зависимости, как будет выполняться цикл.
4.4 Организация вложенных циклов
Очень часто в программе требуется организовать выполнение двух или более вложенных циклов. Главное правило, которое нужно помнить – не допускать повторяющихся названий переменных цикла. К примеру, имеем:
for(int i=0; i < 10; i++)
for(int j=0; j<10; j++){
printf(“%d”, j+i*10);
printf(“\n”);
}
Результатом выполнения этой программы будет матрица, заполненная элементами в порядке возрастания их значений.
5. Методические указания
Лабораторная работа включает:
– общие задания для совместного выполнения под присмотром преподавателя;
– индивидуальные задания.
При выполнении общих заданий необходимо разработать, отладить и продемонстрировать программу.
При выполнении индивидуальных заданий необходимо выполнить все этапы решения задачи на ЭВМ:
словесная постановка задачи;
анализ задачи и формальная постановка задачи;
проектирование (разработка алгоритма);
реализация (кодирование, отладка);
тестирование.
Результаты выполнения индивидуальных заданий оформить в виде отчета.
При организации итерационных циклов необходимо учитывать следующее:
переменная цикла должна быть инициализирована до начала цикла;
выражение условия цикла должно содержать переменную цикла;
в теле цикла необходимо предусмотреть изменение переменной цикла.
Рассмотрим примеры решения и оформления задач.
Пример.
1. Словесная постановка задачи.
Вычислить и вывести значение функции,
заданной с помощью ряда Тейлора, в точке
x с точностью :
.
2. Формальная постановка задачи.
Входные данные: x – действительное число, – заданная точность, положительное число.
Выходные данные: y – значение функции в точке x, вычисленное с заданной точностью .
Метод решения задачи. Значение
функции рассчитывается как сумма членов
ряда Тейлора, больших .
Текущий член ряда an
определяется по формуле
.
Если an
>, то прибавляем
его к общей сумме, иначе вычисление
завершается.
3 |
4. Листинг программы
#include <stdio.h> #include <conio.h> #include <locale.h> int main(){ float x,e, y, a; setlocale(LC_ALL, "rus"); printf("введите аргумент x и точность e: "); scanf("%f %f", &x, &e); y=1; a=x;
while (1/a>=e) { y=y+1/a; a=a*x; } printf("значение функции y = %f", y); getch(); return 0; }
|
5. Тестирование
Ниже представлены результаты, полученные вручную, для x=2 и =0.1. При таких входных данных функция задается рядом Тейлора вида y(2)=1+1/2+1/4+1/8=1.875.
x=2 и =0,1
y=1, a=2
НЦ ½>0.1: y=y+a=1+1/2=1.5, a=a*x=2*2=4
¼>0.1: y=y+a=1.5+1/4=1.75, a=a*x=4*2=8
1/8>0.1: y=y+a=1.75+1/8=1.875, a=a*x=8*2=16
1/16=0.0625>0.1: ложь КЦ
y=1.875
На рисунке представлена консоль с результатами работы программы.
С уменьшением значения точности увеличивается количество суммируемых членов ряда. Так, например, для x=2 и =0.001 функция задается рядом Тейлора вида y(2)=1+1/2+1/4+1/8+1/16+1/32+1/64+1/128+1/256+1/512=0,998047
Из таблицы видно, что член ряда 1/210<0.001
-
n
xn
a=1/xn
1
2
0,5
2
4
0,25
3
8
0,125
4
16
0,0625
5
32
0,03125
6
64
0,015625
7
128
0,007813
8
256
0,003906
9
512
0,001953
10
1024
0,000977
Результат работы программы:
Обратите внимание!
В рассмотренном примере значение функции, заданной с помощью ряда Тейлора, вычисляется в одной точке x. В индивидуальном задании Вам нужно вычислить и вывести на экран значения функции, заданной с помощью ряда Тейлора, на интервале от xn до xk с шагом dx в виде таблицы.
-
x - значение аргумента
y(x) - значение функции в точке x
n- количество просуммированных членов ряда

.
Алгоритм решения задачи