Информатика и ВТ

Информатика и вычислительная техника



Задание.

Вычислить произведение элементов массива, превышающих заданное число С, то есть 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 



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.