Информатика и вычислительная техника
Задание.
Вычислить произведение элементов массива, превышающих заданное число С, то есть yk
> C, для х Î[a,b] и изменяющегося с шагом h.
yk
=1 + x + Ö x, где x < 5
yk
=Ö 2 – cosx, где 5 £ x £ 8
yk
=ln (1+x), где x > 8
Этап 1.
Обозначения.
X – значение аргумента x;
Y - значение yk
;
C – заданное число;
А – начальное значение аргумента x;
В – конечное значение аргумента x;
Н – шаг изменения аргумента x;
Р – произведение элементов yk
массива.
Этап 2.
Обсуждение алгоритма.
Задается начальное значение аргумента x = a и начальное значение произведения элементов массива Р = 1. Так как, число повторений цикла заранее неизвестно, организуется циклический (итерационный) вычислительный процесс. Внутри цикла осуществляется проверка значений х, и в зависимости от того x < 5, или 5 £ x £ 8, или x > 8, выбирается формула для вычисления значений yk
. Кроме того, если выполняется условие x < 5, то проверяется еще одно условие х ³ 0 (так как подкоренное выражение при вычислении yk
не может быть отрицательным). В случае выполнения этого условия, значению yk
присваивается значение yk
= 1 (для того, чтобы при вычислении не изменилось значение произведения Р, а процесс перешел к вычислению следующего значения yk
при следующем значении х). Затем, на основании полученного значения yk
проверяется условие yk
> С. Если оно выполняется, то значение произведения Р умножается на полученное значение yk
. После этого, аргумент х увеличивается на шаг h. Цикл выполняется до тех пор, пока текущее значение х не превысит значения b – конечное значение аргумента х.
Этап 3.
Текст программы.
PROGRAM_KR0;
VAR_A,B,C,H,P,X,Y:REAL;
BEGIN
WRITELN(‘Введите значения a и b’);
READLN(A,B);
WRITELN(‘Введите шаг Н и число С’);
READLN(H,C);
X:=A;
P:=1;
WHILE_X<=B_DO
BEGIN
IF_X<5_THEN_IF_X>=0_THEN_Y:=1+X+SQRT(X);
ELSE_Y:=1;
ELSE_IF_X>8_THEN_Y:=LN(1+X);
ELSE_Y:=SQRT(2-COS(X));
IF_Y>C_THEN_P:=P*Y;
X:=X+H;
END;
WRITE(‘Произведение элементов массива равно’, P:8:2);
END.
Пояснения к программе.
Когда после запуска программы на экране появится текст:
Введите значения a и b,
нужно на клавиатуре выбрать конкретные числа, которые будут присвоены этим переменным.
Затем появится сообщение:
Вве
Необходимо ввести также конкретные значения этих переменных. После этого программа начнет выполнение вычислительного процесса. В результате работы программы на экране появится текст:
Произведение элементов массива равно число
.
Лабораторные работы.
Вариант 10.
Тема 1. Линейный вычислительный процесс.
Задание 1.
Составить программу для вычисления значения х и произвести вычисления на компьютере.
PROGRAM_LR1;
VAR_A,B,D,P,G:REAL;
BEGIN
WRITE(’Введите через пробел значения a, b, d, p, g’);
READ(A,B,D,P,G);
Х:=A*SIN(SQR(P))+B*SQR(COS(P))/(A*D*(SQR(P)+SQR(G)));
WRITE(’X=’,X:7:2);
END.
Тема 2. Разветвляющиеся вычислительный процесс.
Задание 2.
Составить структурную схему и написать программу вычисления значения у(х) для любого значения аргумента х.
y =sin2
Öx+cosÖx,, если x > 5
y =x3
+x2
+1, если x £ 1
PROGRAM_LR2;
VAR_X,Y:REAL;
BEGIN
WRITELN(’Введите х’);
READLN(X);
IF_X>5_THEN_Y:=SQR(SIN(SQRT(X)))+COS(SQRT(X));
WRITE(’Y=’,Y:8:2);
ELSE_IF_X<=1_THEN_Y:=SQR(X)*X+SQR(X)+1;
WRITE(’Y=’,Y:8:2);
ELSE_WRITE(’Y не определено при данномзначении Х);
END.
Тема 3. Циклический вычислительный процесс (структурный и итерационный).
Задание 3.
Составить структурную схему и программу для вычисления таблицы значений функции y=f(x) на отрезке [a,b], если х на этом отрезке изменяется с шагом h.
PROGRAM_LR3;
VAR_A,B,H,X,Y:REAL;
BEGIN
WRITELN(’Введите a,b,h’);
READLN(A,B,H);
X:=A;
WRITELN(’I___X___I___Y___I’);
REPEAT
Y:=(X-SIN(X))/(LN(X)+1);
WRITELN(’I’,X:7:2,’I’,Y:7:2,’I’);
X:=X+H:
UNTIL_X>B;
END.
Тема 4. Программирование алгоритмов циклической структуры с использованием массивов.
Задание 5.
Составить структурную схему и программу с использованием одномерных массивов. В заданной последовательности x1
,x2
,x3
,...,xn
отрицательные числа заменить на их квадраты.
PROGRAM_LR5;
CONST_N1=100;
VAR_K,N:INTEGER;
X:ARRAY[1..N1]_OF_REAL;
BEGIN
WRITE(’Введите количество чисел в последовательности n=’);
READLN(N);
WRITELN(’Введите элементы последовательности’);
FOR_K:=1_TO_N_DO
BEGIN
READ(X[K]);
IF_X[K]<=0_THEN_X[K]:=SQR(X[K]);
WRITELN(X[K]);
END;
END.