End.
Begin
Var
Uses
End.
Begin
Var
Uses
printer;
a,b,c,x,y,z,t:real;
writeln(‘Введите a,b,c,x’);
readln (a,b,c,x);
z:=a+b;
t:= sqr(c+a);
y:= (z/t)*cos(x);
writeln({lst,}‘При a=’, a:5:2, ‘b=’, d:5:2, ‘c=’, c:5:2, ‘x=’, x:5:2,
‘Значение функции y=’, y:7:2);
readln;
Комментарии в апострофах ‘’ и в фигурных скобках {} не участвуют в работе программы. Текст в апострофах выводится на монитор и принтер и помогает в чтении и анализе результатов работы программы, как самому пользователю, так и другим лицам.
Пустой оператор в конце программы служит для того, чтобы текст программы не закрывал результат вычислений. Если это имеет место, можно переключать экран монитора с результата на текст программы и обратно сочетанием клавиш alt+F5.
Для данной достаточно простой задачи разбиение текста на отдельные блоки не является обязательным и приведено для наглядности. Однако при сложных вычислительных формулах такой метод позволяет избежать ошибок при написании громоздких формул. Кроме того, при введении промежуточных переменных, существенно облегчается отладка программы.
|
|
Разветвляющиеся алгоритмы содержат, по крайней мере, одно условие. Для их реализации используются типовые структуры РАЗВЕТВЛЕНИЕ, программирование которых производится операторами условия. В качестве примера программирования разветвляющегося алгоритма рассмотрим следующую задачу.
ЗАДАЧА 2
Вычислить значение функции y для различных значений
аргумента x по формуле
ax2 + b при a<=0
y =
ax2 - 2 при a > 0
1. Постановка задачи
Задано: a, b, x - действительные числа
Найти:
ax2 + b при a<=0
y =
ax2 - 2 при a > 0
2. Формализация задачи
Задача представляет собой вычисление функции по двум различным формулам в зависимости от знака заданной переменной a. Для решения используется условный алгоритм вида IF – THEN – ELSE, позволяющий переключить работу программы на одну из двух ветвей. После вычисления значения искомой функции полученный результат поступает на блок вывода и работа программы завершается.
3.Блок-схема алгоритма программы (рис.13)
1. Начало
2. Объявление переменных a,b,x,y
3. Ввод данных a,b,x с клавиатуры
4. Проверка условия a > 0
4. Вычисление y по формуле, определяемой проверкой условия
5. Вывод исходных данных и результата в выбранном формате
6. Конец
4. Текст программы
program razvet;
printer;
a, b, x: real;
writeln (‘Введите значения a, b, x’);
readln(a, b, x);
if a <= 0 then
y = a*x*x + b
else { перед else НЕТ запятой}
y = a*x*x – 2;
writeln ({lst,}‘При a = ’, a:5:2, ‘y = ’, y:6:2);
readln;
Контрольный пример решается для двух вариантов переменной a в
соответствии с условием задачи.
ЛЕКЦИЯ 7
Циклические алгоритмы делятся, как известно, на два типа:
1. с известным числом циклов
2. итерационные, в которых условием прекращения цикла является выбранное условие (обычно достижение заданной точности вычислений).
|
|
Результатом вычислений в первом случае является точное значение параметра, а во втором – приближённое с заданной точностью, что характерно для приближённых численных методов вычислений.
Рассмотрим сначала программирование циклических алгоритмов первого типа – с заданным числом циклов n. Здесь используется типовая структура вида ЦИКЛ – ДО. Типичным примером использования этой структуры является задача нахождения суммы элементов массива.
ЗАДАЧА 3. Нахождение суммы оператором цикла
1. Постановка задачи
Задано: массив значений действительных чисел x1...xi....xn
объёмом n
Найти: сумму S значений массива
2. Формализация задачи
Для записи результатов вычислений необходимо выделить ячейку памяти, предварительно очистив её от находящейся в ней информации. Такая процедура называется обнулением и записывается как
S = 0; (мнемоническое правило: «ноль не портит суммы» - вытекает из
очевидного положения, что прибавление нуля к любому числу не
изменяет его величины).
Далее выполним первый шаг вычислений по рекуррентному выражению, добавляя к сумме первое значение массива x1:
1. S = S + x1 = 0 + x1 = x1
Полученное первое значение суммы S= x1 запишем в ту же ячейку S,
вытеснив оттуда нулевое.
Второй шаг:
2. S = S + x2 = (x1 + x2)
Теперь полученное второе значение запишем в ту же ячейку S,
вытеснив первое.
Третий шаг: повторим предыдущую процедуру
3. S = S + x3 =(x1 +x2)+x3
Таким образом, рекуррентная формула на каждом шаге добавляет к сумме
очередной элемент ряда и записывает новую сумму в ту же ячейку памяти,
где хранилось предыдущее значение суммы элементов ряда.
…
n. S = Sn-1 + xn
т.е. после перебора всех n элементов ряда в ячейке будет записано значение суммы элементов ряда S.
Для такого алгоритма применима типовая структура цикл – до