Інформатика і обчислювальна техніка
Завдання.
Обчислити добуток елементів масиву, що перевищують заданий число С, то є 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.