получена, если на очередном шаге вычислений значение аn < e.
Входные данные: х и e (еps - обозначение в программе).
Схема алгоритма с использованием цикла While... Do
нет
да
продолжение цикла
Текст программы {Лабораторная работа 4}
{Вычисление суммы членов ряда с использованием оператора WHILE}
{Студенты гр...... Фамилии…}
Uses crt; {Подключение стандартного модуля TP}
Var x,a,eps,S: real; n:integer;
BEGIN Clrscr; { Очистка экрана}
Writeln(' Введите x,eps'); read(x,eps);
{ Задание начальных значений переменных}
a:=x; n:=1; S:=a;
While а>=eps Do
Begin n:=n+1;
{Вычисление очередного члена ряда по формуле (2)}
a:=a*x*(2*n+1)/((2*n-1)*(n+1));
s:=s+a;
end;
Writeln(' Cумма членов ряда S = ',S:10:4,' Число итераций n = ',n:5);
END.
Рекомендация: При составлении программы не забывайте анализировать знаменатель (он не должен равняться нулю) и типы данных участвующих в выражениях.
Варианты самостоятельных заданий
1. an = (2n-1)*x / 2n; 11. an = x/n2;
2. an = x /((3n-2)(3n+1)); 12. an = 2nx / (n+1)!;
3. an = 10n / xn!; 13. an = 3nx * 3n / n!;
4. an = xn! /(2n)!; 14. an = x(n+1) / (n+2)!;
5. an = x* 2n / n!; 15. an = nx / 2(n+1);
6. an = x (3n * n!) / (3n)!; 16. an = 2xn! / (2n)!;
7. an = 3nx / (n+2)!; 17. an = xn! / (3n)!;
8. an = (2n-1) * x / 2n; 18. an = x * 5n / (n+5)!;
9. an = nx / 3(n+1)/2; 19. an = x * 2n /(2n+1)!;
10. an = (x+1) * 5n / n!; 20. an = x(2n+1)(2n-1)/(2n+1)!;
Массивы и их описание
Массивы относятся к структурированным типам данных в ТР. Массив состоит из фиксированного числа элементов (компонент) одного типа и характеризуется общим именем. Доступ к отдельным элементам массива осуществляется с помощью общего имени и порядкового номера (индекса или адреса) необходимого элемента.
Имя массива - это любое допустимое в ТР имя, отличное от служебных слов, имен функций и процедур. Массив может быть описан в подразделе Var или в подразделах Var и Type, одновременно.
Первая форма описания - в подразделе Var:
Var Имя_массива: Array[T1] OF [T2];
где Array (Массив) и Of (Из) - служебные слова.
T1 - список типов индексов) в качестве индексов чаще всего используются переменные типа - диапазон, но возможно использование перечислимого типа); Т2 - тип элементов массива (любой тип ТР как простой, так и структурированный).
Например:
1) Var Mas: Array[1..10] of integer; - описание массива, состоящего из 10 целых чисел и имеющего имя Mas;
2) Var S: array[1..20] of real; - описание массива, состоящего из 20 вещественных чисел и имеющего имя S;
3) Var Matr:array[1..20,1..20] of byte; - описание массива (матрицы размером 20 на 20), содержащего 400 элементов типа byte.
Если массив объявлен, то к любому его элементу можно обратиться с помощью его имени и индексов. Например:
1) Mas[5]:=21; - пятому элементу массива Mas присвоено значение, равное 21.
2) For i:=1 to 20 do S[i]:=0.0; - присвоение всем 20 элементам массива S значения, равного 0.0 (обнуление массива).
3) For i:=1 to 20 do For j:=1 to 20 do Matr[i,j]:=random(100); - заполнение массива (матрицы) на 400 чисел случайными числами из диапазона от 0 до 100.
Вторая форма описания - в подразделах Var и Type:
Type Имя_типа_массива= Array[T1] OF [T2];
Var Имя_массива: Имя_типа_массива;
Например:
1) Type Tm=array[1..100] of byte; - описание нового типа для массива, состоящего из 100 чисел типа byte
Var Mas:Tm; - описание массива с именем Mas.
2) Type Typ_Mas = array[1..100] of char;
Var M:Typ_Mas; - описание массива содержащего 100 символов.
3) Type Tmatr = Array[1..25,1..10] of real;
Var Matr1,Matr2:Tmatr; - описание матриц с именами Matr1 и Matr2.
Массив с одним индексом называют одномерным, с двумя - двумерным, с тремя - трехмерным и т.д. Число индексов у массива в ТР не ограничивается, но необходимо помнить, что размер массива не должен превышать 64 Кбайт.
Любой двумерный массив представляет собой матрицу: первому индексу можно поставить в соответствие строки, а второму - столбцы матрицы. Кроме того, двумерный массив можно интерпретировать как одномерный, элементами которого является другой одномерный массив.
Описание такого массива имеет вид:
Type tstr=array[1..25] of real;
Var masssiv:array[1..10] of tstr; - это описание равносильно описанию в примере 3, приведенному выше для массивов с именами Matr1 и Matr2.
Оперативная память под элементы массива выделяется на этапе трансляции. В памяти компьютера элементы массива следуют друг за другом.
Если массив двумерный, то память под него выделяется так, что быстрее меняется самый правый индекс. В качестве примера рассмотрим порядок выделения оперативной памяти под массив, описанный следующим образом: Var M:array[1..2,1..4] of byte;
Этот массив будет располагаться в памяти в следующем порядке:
M[1,1]; M[1,2]; M[1,3]; M[1,4]; M[2,1]; M[2,2]; M[2,3]; M[2,4].
В ТР можно одним оператором присваивания передать все элементы одного массива другому массиву того же типа. Например:
Var m1,m2:array[1..10] of word;
...
Begin...
m1:=m2; { перезапись из одного массива в другой}
...
End.
Для сравнения содержимого двух массивов необходимо использовать оператор цикла с параметром и указываться индексы.
Типизированные константы - массивы
В качестве начального значения используется список констант, отделенных друг от друга запятыми. Список заключается в круглые скобки.
Примеры:
1) Const Mas:array[1..10] of byte=(1,1,1,1,1,1,1,1,1,1); - заполнение массива из 10 целых чисел значением, равным единице.
2) Const massim: array[0..5] of char = ('a','b','c','d','e','f'); - заполнение
массива из 6 элементов символами - буквами латинского алфавита.
3) Const Matr: array[1..5,1..2]of byte = ((0,0),(0,0),(0,0),(0,0),(0,0)); -
обнуление матрицы из 10 целых чисел.
Замечание: количество переменных в списке констант должно строго соответствовать объявленной длине массива по каждому индексу!
Лабораторная работа №5