Пример 1. Арифметические выражения. Оператор присваивания
Задание 1. Вычислить значение функции
. Значение аргумента Х вводится с клавиатуры.
Постановка задачи.
Входные данные:
Х – аргумент функции Y.
Выходные данные:
Y – значение функции.
Метод решения: вычисление значения функции по заданной формуле.
Алгоритм. Вычисление значения функции.
Входные данные.
СКАЛЯР Х – вещественное число.
Выходные данные.
СКАЛЯР Y – вещественное число.
Начало
ввод(Х)
вывод(Y)
Конец
Блок-схема алгоритма.
Определение Y по заданной формуле
| |
Вывод значения Y
Программа на языке Паскаль.
Program Example1;
Var X,Y: real;
Begin
Write(‘Input X: ‘);
Readln(X);
Y:=(X*sqr(X) +6)/sqrt(sqr(X)+6)+4;
Write(‘Y= ‘,Y);
End.
Результаты тестирования.
Если X=1.2, Y должен быть равен 6.83322226.
Результаты, выданные программой.
Input X: 1.2
Y= 6.83322226221255E+0000
Пример 2. Условные операторы
Задание 1. Вычислить значение функции в зависимости от условия.
.
Значения аргумента Х и параметра A вводятся с клавиатуры.
Постановка задачи.
Входные данные:
А – постоянный параметр функции Y, A>0,
Х – аргумент функции Y.
Выходные данные:
Y – значение функции.
Метод решения: проверка условия и вычисление значения функции по заданной формуле.
Алгоритм. Вычисление значения функции в зависимости от условия.
Входные данные.
СКАЛЯР Х – вещественное число,
А – положительное, вещественное число.
Выходные данные.
СКАЛЯР Y – вещественное число.
Начало
ввод(Х,А)
ЕСЛИ X<0 ТО
Y=(X-A)/X
ИНАЧЕ
ЕСЛИ X<A ТО Y=0
ИНАЧЕ Y= A-ln|X-1|
КОНЕЦ_ЕСЛИ
КОНЕЦ_ЕСЛИ
вывод(Y)
Конец
Блок-схема алгоритма.
Вывод значения Y
Программа на языке Паскаль.
Program Example1;
Var A,X,Y: real;
Begin
While(A<=0) do
begin
Write(‘Input A>0: ‘);
Readln(A)
End;
Write(‘Input X: ‘);
Readln(X);
If X<0 Then
Y:=(X-A)/X
Else
If X<A Then Y:=0
Else Y:=A-ln(abs(X-1));
Write(‘Y= ‘,Y);
End.
Результаты тестирования.
A=1
Если X=-1.5, Y должен быть равен 1.66667.
Если X=0.5, Y должен быть равен 0.
Если X=1.5, Y должен быть равен 1,69314718.
Результаты, выданные программой.
Input A>0: 1
Input X: -1.5
Y= 1.66666666666667E+0000
Input A>0: 1
Input X: 0.5
Y= 0.00000000000000E+0000
Input A>0: 1
Input X: 1.5
Y= 1.69314718055995E+0000
Пример 3. Программа обработки одномерного массива
Задание 3. Определить минимальный элемент среди положительных элементов одномерного массива. Если положительных элементов нет в массиве, вывести сообщение об этом.
Постановка задачи.
Исходные данные:
· Число элементов в одномерном массиве n<=10;
· Одномерный массив из n элементов, содержащий положительные и отрицательные значения.
Выходные данные: значение минимального элемента среди положительных элементов массива.
Аномалии: отсутствие положительных элементов в массиве.
Реакция на аномальную ситуацию – выдача сообщения.
Алгоритм. Поиск минимального элемента среди положительных элементов массива.
Исходные данные:
СКАЛЯР n<=10 - целое число;
МАССИВ M[10] целого типа.
Выходные данные:
СКАЛЯР min – целое число.
Промежуточные данные:
СКАЛЯР i – целое число /* параметр цикла */
i1 – целое число /* номер первого положительного элемента в массиве */
Начало
Вывод(‘input n<10’)
Ввод(n)
ЦИКЛОТ i:=1 ДО n
Вывод(‘input M[i] ‘)
Ввод(M[i])
КОНЕЦ_ЦИКЛА
i1:=0
ЦИКЛ
i1:= i1+1
ДО ((M[i1]>0) ИЛИ (i1>n))
ЕСЛИ i1>n ТО
Вывод(‘not M[i]>0 ‘)
ИНАЧЕ
min:=M[i1]
ЦИКЛОТ i:=i1 ДО n
ЕСЛИ ((min> M[i]) И (M[i]>0)) ТО
Min:=M[i]
КОНЕЦ_ЕСЛИ
КОНЕЦ_ЦИКЛА
Вывод(‘min= ‘,min)
КОНЕЦ_ЕСЛИ
Конец
Блок-схема алгоритма.
Программа на языке Паскаль.
Program Min_Positive;
Var
M: array[1..10] of integer;
i,n,i1, min: integer;
begin write(‘input n<10’);
readln(n); for i:=1 to n do read(M[i]);
i1:=0;
repeat i1:=i1+1 until(M[i1]>0) or (i1>n);
if i1>n then writeln(‘not M[i]>0’)
else begin
min:=M[i1];
for i:=i1 to n do
if (M[i]>0) and (min >M[i]) then min:=M[i]; writeln(‘min= ‘,min);
end
end.
Результаты тестирования.
1. Исходные данные:
n=5
M=(-1,-2,-3,-4,-5)
Результат- сообщение «not M[i]>0».
Результаты, выданные программой.
input n<10 5
-1 -2 -3 -4 -5
not M[i]>0
2. Исходные данные:
n=5
M=(9,-2,3,4,-5)
Результат- сообщение «min=3».
Результаты, выданные программой.
input n<10 5
9 -2 3 4 -5
min= 3
|