Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Циклы, управляемые условиями
Тема: Программирование алгоритмов циклической структуры. Цель работы: Освоить программирование циклических алгоритмов с циклами, управляемыми условиями: циклами с предусловиями и циклами с постусловиями.
Задание на лабораторную работу
- в нормальных условиях, - при граничных условиях, - при некорректных входных данных, - по критерию покрытия решений – результат проверки каждого условия принимал значение истина или ложь хотя бы один раз, - по критерию покрытия условий – все возможные результаты каждой логической операции в условиях были получены хотя бы по одному разу.
Пример оформления работы 1. Составить алгоритм и написать код программы, вычисляющей значения суммы ряда S при заданных с консоли начальном и конечном значениях аргумента x(x_nach, x_kon), шаге его изменения delta_x и точности вычислений eps. Вычисленные значения ряда сравнить со значениями функции f=cos(x). Результаты вычислений вывести в виде таблицы с заголовком. - разложение функции cos(x) в ряд Тейлора. Накопление суммы производим по рекуррентной формуле – каждая последующая сумма вычисляется через предыдущую: Общий вид слагаемого суммы может быть записан в следующем виде: Для сокращения объема вычислений выразим его через предыдущее слагаемое: Сомножитель , называемый переходным коэффициентом, можно определить из предыдущего соотношения: Раскроем эту формулу:
Тогда текущий член ряда будет вычисляться по формуле: Начальное значение находим подстановкой в формулу для общего члена значения n=0: Начальное значение суммы можно принять равным первому члену ряда, то есть . Учитывая, что значение текущего члена ряда и суммы при n=0 уже определены, номер члена ряда n примем равным единице. Задачу решим вложенными циклами: - во внешнем цикле – цикле с постусловием – будем изменять значение аргумента от начального до конечного с заданным шагом, - во внутреннем цикле – цикле с предусловием – будем определять значение суммы ряда с заданной точностью для отдельных точек – значений аргумента.
3.1. На языке Паскаль:
Program Variant_0; Uses WinCRT; Var x, s, f, x_nach, x_kon, delta_x, eps, t: Real; n: Word; Begin WriteLn('Лабораторная работа №3'); WriteLn('Вариант №0'); WriteLn('ИС-11-1'); WriteLn('Пупкин Василий'); WriteLn; {ввод исходных данных} WriteLn(‘Ввод исходных данных: ’); Write('x_nach='); ReadLn(x_nach); Write('x_kon='); ReadLn(x_kon); Write('delta_x='); ReadLn(delta_x); Write('eps='); ReadLn(eps); WriteLn; {эхо-печать} WriteLn('Для x=', x_nach: 0: 3, ' до ', x_kon: 0: 3, ' шаг=', delta_x: 0: 3, ' точность=', eps: 0: 5); WriteLn; WriteLn(' x n s f'); WriteLn('-----------------------------------'); x: =x_nach; Repeat {внешний цикл – изменение аргумента} t: =1.0; {первое слагаемое} s: =1.0; {начальное значение суммы} n: =1; f: =cos(x); {точное значение суммы} While (Abs(t)> eps) Do {внутренний цикл – вычисление суммы ряда в отдельной точке} Begin t: =-t*x*x/(2.0*n*(2.0*n-1.0)); {очередное слагаемое} s: =s+t; {очередная сумма} n: =n+1; End; WriteLn(x: 0: 3, ' ', n: 3, ' ', s: 0: 6, ' ', f: 0: 6); x: =x+delta_x; {изменение значения аргумента} Until(x> x_kon); End. 3.2. На языке Си: #include < stdio.h> //директивы препроцессора #include < conio.h> #include < math.h> Int main() { //описание переменных float x, s, f, x_nach, x_kon, delta_x, eps, temp; int n; printf(" \nЛабораторная работа №3" ); printf(" \nВариант №0" ); printf(" \nПО-11-1" ); printf(" \nПупкин Василий\n" ); printf(" \nВвод исходных данных: \n" ); //ввод исходных данных printf(" \nx_nach=" ); scanf(" %f", & x_nach); //начальное значение аргумента printf(" \nx_kon=" ); scanf(" %f", & x_kon); //конечное значение аргумента printf(" \ndelta_x=" ); scanf(" %f", & delta_x); //шаг изменения аргумента printf(" \neps=" ); scanf(" %f", & eps); //точность вычислений //эхо-печать printf(" \nДля x=%5.3f до %5.3f с шагом %5.3f и точностью %5.3f\n", x_nach, x_kon, delta_x, eps); printf(" \n x n s f" ); printf(" \n--------------------------------------" ); x = x_nach; Популярное:
|
Последнее изменение этой страницы: 2017-03-11; Просмотров: 651; Нарушение авторского права страницы