Читайте также: |
|
1. Разработайте консольную программу вычисления таблицы значений функций и на отрезке [ a, b ] в точках xi = a + ih, где h = (b – a)/ m, m — заданное целое число. Значение шага h должно вычисляться один раз. Для этого:
· Введите вещественные переменные a,b,h,x,y,z и объявите их Real.
· Введите целые переменные m, i и объявите их Integer.
· Организуйте ввод с клавиатуры исходного значения m=20.
· Вычислите начальную и конечную точки отрезка: a=-p/2; b=p/2, используя стандартную функцию Pi.
· Вычислите шаг изменения аргумента по формуле h=(b–a)/m.
· Организуйте в цикле со счетчиком вычисление заданных функций и их выдачу на экран в виде таблицы.
· Не забудьте в теле цикла изменять значение аргумента x.
2. В эту же программу включите блок, вычисляющий сумму бесконечного ряда:
, где - факториал числа.
Вычисления прекратить, когда очередное значение an £ e, где e - заданная точность вычислений. Общий член ряда рассчитывается по формуле:
, n = 1, 2, 3, ….
Для определения суммы членов ряда следует использовать рекуррентную формулу, позволяющую находить текущий член ряда через ранее определенные:
, n = 1, 2, 3, …, причем a 0=1.
При составлении программы считать, что точность задана e=10-4 и определяется константой e.
3. Листинг программы должен иметь примерно следующий вид:
program Zadanie_9;
{$APPTYPE CONSOLE}
Uses
SysUtils;
Const
e=1.0e-4; // Константа, определяющая точность
Var
a,b,h,x,y,z: real; // Переменные первой задачи
m,i: integer;
s,an: real; // Переменные второй задачи
n: integer;
Begin
{Первая задача}
writeln('Vvesdite znachenie m=');
readln(m); // Введите значения m и нажмите Enter
a:=-Pi/2; // Вычисление нижней границы интервала
b:=-a; // Вычисление верхней границы интервала
h:=(b-a)/m; // Вычисление шага изменения аргумента
x:=a; // Присвоение начального значения аргумента
for i:=1 to m+1 do // Цикл со счетчиком
Begin
y:=1+x*sqr(cos(x))+sqr(sin(x))*sin(x); // Вычисление функций
z:=sqrt(abs(y));
writeln('x=',x:7:4,' y=', y:7:4,' z=',z:7:4);
x:=x+h; // Переход к следующему значению аргумента
end;
writeln;
{Вторая задача}
s:=0; // Обнуление суммы
an:=1; // Вычисление первого члена суммы
n:=1; // Начальное значение переменной цикла
while an>e do // Цикл с предусловием
Begin
s:=s+an; // Накопление суммы
n:=n+1; // Изменение переменной цикла
an:=an*(exp(n*(ln(n/(n+1))))); // Вычисление очередного члена суммы
end;
writeln('Summa ',n,' elementov ravna =',s:9:6);
readln
End.
4. Откомпилируйте и выполните программу. При наличии ошибок, исправьте их.
5. При отсутствии ошибок вы должны получить результат, представленный на рис. 4.
6. Сохраните проект программы в папке \Мои документы\ЛЗ-21\Задание-05 под именем Zadanie_9.
7. Посмотрите, как изменятся результаты, если задать значения m=10 и e=1.0e-8.
8. Самостоятельно составьте программу решения второй задачи, но используя оператор цикла с постусловием (repeat... until).
Контрольные вопросы
1. Как операции в языке Object Pascal разделяются по приоритетам? Каким образом можно изменить приоритет выполнения операций?
2. Какие типы выражений существуют? Чем определяется тип выражения?
3. Объясните, как выполняются операции div и mod. Какой результат при этом получается?
4. Объясните, как выполняются логические операции и операции сдвига над целыми числами.
5. Объясните действие условных операторов.
6. Как работают операторы цикла? В чем заключается различие между оператором цикла с предусловием и постусловием?
7. Какими средствами можно устранить эффект «зацикливания»?
8. Какие средства используются для принудительного выхода из цикла?
9. Объясните действие процедур ввода данных с клавиатуры и вывода данных на экран.
10. Каким образом задаются поля вывода в процедурах write и writeln?
Дата добавления: 2015-07-08; просмотров: 151 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Задание № 4. Использование условных операторов | | | Иметь веру и страх |