Завдання.
Обчислити добуток елементів масиву, що перевищують заданий число С, то є yk> C, для х? [a, b] і змінюється з кроком h.
1 + x +?? X, де x <5>
yk =?? 2 - cosx, де 5? x? 8
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. Структурна схема.
Структурна схема представлена на мал.1.
Малюнок 1.
Етап 4. Текст програми.
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
BEGIN
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 )));< br />
WRITE ( 'X =', X: 7:2);
END.
Тема 2. Розгалужуються обчислювальний процес.
Завдання 2. Скласти структурну схему і написати програму
обчислення значення у (х) для будь-якого значення
аргументу х.
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
WRITE ( 'Y =', Y: 8:2);
ELSE_WRITE ( 'Y не визначено при даному
значенні Х);
END.
Тема 3. Циклічний обчислювальний процес (структурний і ітераційний).
Завдання 3. Скласти структурну схему і програму для
обчислення таблиці значень функції y = f (x) на
відрізку [a, b], якщо х на цьому відрізку змінюється з кроком
h.
x? [14, 16], h = 0.5
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. Скласти структурну схему і програму для
обчислення значення функції:
PROGRAM_LR4;
VAR_K, M, N: INTEGER;
S, P: REAL;
BEGIN
WRITELN ( 'Введіть m і n');
READLN (M, N);
S: = 0;
FOR_K: = M_TO_N_DO
BEGIN
P: = (SQR (K) +5)/(SQR (K) * K + K);
S: = S + P;
END;
WRITE ( 'S =', S: 10:4);
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 =');< br />
READLN (N);
WRITELN ( 'Введіть елементи послідовності');
FOR_K: = 1_TO_N_DO
BEGIN
READ (X [K]);
IF_X [K]
WRITELN (X [K]);
END;
END.
Завдання 6. Скласти структурну схему і програму з
використанням двовимірних масивів.
Отримати елементи матриці А = I IaijI I, i = 1 .. m, j = 1 .. n
i - j + 1, якщо i?? j
aij =
i/(?? i + j), якщо i = j
m = n = 3
PROGRAM_LR6;
VAR_I, J, M, N: INTEGER;
A: ARRAY [1 .. 10,1 .. 10] _OF_REAL;
BEGIN
WRITELN ( 'Введіть m, n');
READLN (M, N);
FOR_I: = 1_TO_M_DO
BEGIN
FOR_J: = 1_TO_N_DO
BEGIN
IF_I = J_THEN_A [I, J]: = I/SQRT (J +1);
ELSE_A [I, J]: = I-J 1;
A [I, J]: = ABS (A [I, J]);
WRITELN ( 'A [', I: 2 ,',', J: 2 ,']=', A [I, J]: 10:3);
END;
END;
END.
Завдання 7. Скласти програму, в якій обчислення
факторіалу F = k! (k! = 1 * 2 * 3 * ... * k) виділити в
окремий модуль.
PROGRAM_LR7;
VAR_M, N: INTEGER;
Y: REAL;
FUNCTION_FACT (K: INTEGER): INTEGER;
VAR_F, I, K: INTEGER;
BEGIN
F: = 1;
FOR_I: = 1_TO_K_DO
F: = F * I;
FACT: = F;
END;
BEGIN
WRITE ( 'Введіть m і n');
READLN (M, N);
Y: = (FACT (N) - FACT (M))/(2 * FACT (N) - FACT (M +1));
WRITE ( 'Y =', Y: 10:4);
END.