- •Оглавление
- •Предисловие
- •Введение
- •1. Разветвляющиеся вычислительные процессы
- •If логическое_выражение then оператор1 еlse оператор2;
- •If логическое_выражение then оператор1;
- •Пример 1. Вычислить значение функции y(X)
- •Программа
- •Программа
- •2. Циклические вычислительные процессы
- •2.1. Циклы с заданным числом повторений
- •2.1.1. Вычисление массива значений функции
- •2.1.2. Обработка одномерных массивов
- •2.1.2.1. Поиск наименьшего (наибольшего) элемента массива
- •2.1.2.2. Вычисление суммы и количества элементов массива
- •2.1.2.3. Вычисление произведения элементов массива
- •2.1.2.4. Поиск элементов массива по заданному критерию
- •2.2. Циклы с неизвестным числом повторений
- •2.2.1. Табулирование функции
- •2.2.2 Итерационные вычислительные процессы
- •2.2.3. Вычисление суммы членов бесконечного ряда
- •2.3. Сложные циклы
- •2.3.1. Пример алгоритма, содержащего вложенный цикл
- •Программа
- •2.3.2. Обработка двумерных массивов (матриц)
- •2.3.2.1. Вычисление суммы и количества элементов массива
- •2.3.2.2. Поиск элементов массива по заданному критерию
- •3. Работа с текстовыми файлами
- •Программа
- •4. Функции в языке Pascal
- •5. Процедуры в языке Pascal
- •Программа
- •Программа
- •Исходные данные
- •Результаты
- •6. Модули в языке Pascal
- •Unit имя-модуля;
- •Uses имя-модуля1, имя-модуля2, …, имя-модуляN;
- •Пример модуля (библиотеки) с именем Unitmatr
- •Пример рабочей программы (программы пользователя)
- •Литература Методические пособия кафедры
1. Разветвляющиеся вычислительные процессы
Разветвляющиеся вычислительные процессы – это процессы, в которых происходит выбор одного из нескольких возможных направлений вычислительного процесса в зависимости от значений исходных данных или промежуточных результатов вычислений.
В языке Pascal существует ряд средств, с помощью которых можно организовать разветвление в программе [Л1, стр. 51 - 54]. Одним из таких средств является условный оператор if.
Общий вид оператора if:
If логическое_выражение then оператор1 еlse оператор2;
где оператор1, оператор2 – простые или составные операторы.
Составной оператор представляет собой последовательность операторов, заключенных в операторные скобки begin - end.
Выполнение оператора if:
вычисление значения логического выражения;
в случае, если его значение равно true (истина), выполняется оператор1, в противном случае - оператор2;
управление передается оператору, следующему за оператором if.
Допускается форма оператора if без конструкции else:
If логическое_выражение then оператор1;
В этом случае оператор1 выполняется, когда значение логического_выражения равно true (истина), в противном случае управление передается оператору, следующему за оператором if.
Пример 1. Вычислить значение функции y(X)
Программа Схема алгоритма
Program Prim1;
var
a,x,y : real;
begin
writeln('Введите а, x');
readln(a,x);
if x>a then
y:=a*sin(x)
else
y:=1- sqr(x);
writeln('y=', y:7:2);
end.
Исходные данные: Результат:
I вариант a = 2.3; x = 5.5 y = -1.62
II вариант a = 12.1; x = 3.7 y = -12.69
Примечание.
В операторе вывода writeln('y=', y:7:2) указан формат вывода y:7:2 для значения переменной y, где число 7 определяет общий размер поля, отводимого в строке вывода для размещения значения переменной, а число 2 указывает количество разрядов для дробной части этой переменной.
Пример 2. Вычислить значение функции y(x)
Программа Схема алгоритма
P rogram Prim2;
var
a,b,x,y : real;
begin
writeln('Введите a, b, x');
readln(a,b,x);
if x<=1 then y:=abs(a*x+b)
else
if x>=2 then y:=exp(-x)+1
else y:= exp(4.5*ln(x));
writeln('y=', y:5:2);
end.
Примечание.
Для вычисления выражения x4.5 в программе
используется эквивалентное выражение:
x4.5=e4.5*lnx
Исходные данные: Результат:
I вариант a = 1.4; b = 3; x = -5.2 y= 4.28
II вариант a = 2.8; b = -4; x = 1.5 y= 6.20
III вариант a = 2; b = 6; x = 4 y= 1.02
Пример 3. Вычислить значение функции y(x)
Примечание.
В этом примере нужно предусмотреть выдачу на экран сообщения, (например, “Нет решения”) при возникновении так называемой исключительной (аварийной) ситуации [Л1, стр. 17], которая может произойти в случае, если знаменатель дроби 1/(a+x) равен нулю.
Программа Схема алгоритма
Program Prim3;
label 1;
var
a,b,x,y : real;
begin
writeln('Введите a, b, x');
readln(a,b,x);
if x<=b then if (a+x)<>0 then y:=1/(a+x)
else
begin
writeln('Нет решения');
goto 1;
end
else y:=1+b*x;
writeln('y=', y:6:3);
1: end.
Примечания.
1. В операторе if перед словом else после слова end нельзя ставить точку с запятой.
2. В данной программе используется оператор безусловного перехода goto 1; где 1 – метка, которая указывает, к какому оператору нужно перейти (Л1, стр. 47).
Метка выбирается пользователем и должна быть описана в разделе описаний программы, например так: label 1;
Исходные данные: Результат:
I вариант a = 4.35; b = 3; x = 2.85 y= 0.139
II вариант a = -1; b = 5; x = 1 Нет решения
III вариант a = 2.5; b = 3.7; x = 6.4 y=24.680
Пример 4. Вычислить значение функции y(x)
Примечание.
В этом примере исключительные ситуации могут возникнуть в случаях, если выражение (cx+d) меньше или равно нулю и выражение (dx-3) меньше нуля, т.е. в случаях невозможности выполнения вычисления логарифма отрицательного числа или числа, равного нулю, а также вычисления корня квадратного из отрицательного числа.
Схема алгоритма