Процедуры Как писать программы?
При написании программы выполняются следующие шаги Шаг 1. Сформулируем алгоритм решения задачи. Соблюдаем следующие правила: • В каждой строчке одна фраза (одно действие) • Действие должно иметь результат (нельзя, например, написать «проверяем» , так как что в данном случае будет результатом? ) • Сам алгоритм записываем между словами begin и end • Алгоритм описывается в виде комментариев.
Пишем алгоритм решения квадратного уравнения Begin {Вводим коэффициенты квадратного уравнения A, B, C} {Считаем дискриминант D} {Если D>=0, то} {Считаем корни квадратного уравнения X 1 и X 2} {Выводим значения корней X 1 и X 2} {иначе} {Сообщаем, что действительных корней нет} end.
При написании программы выполняются следующие шаги Шаг 2. Сопоставим каждой фразе алгоритма оператор языка Паскаль. При этом • Одной фразе должен соответствовать один оператор. Если такого оператора нет, то придумываем новый (пишем вызов процедуры) • Сразу же указываем параметры процедур в скобках. • Оператор языка паскаль (или процедура) пишется слева от соответствующей фразы алгоритма.
Шаг 3. Опишем переменные, встретившиеся в этой программе var A, B, C, D, X 1, X 2: real; begin vvod(A, B, C); D: =sqr(B)-4*A*C; if D>=0 then begin calc(A, B, D, X 1, X 2); print(X 1, X 2); end else writeln(‘Not real roots’); readln end. { Вводим коэффициенты A, B, C} { Считаем дискриминант D} { Если дискриминант >=0, то} { Считаем корни x 1, x 2 } { Выводим значение корней x 1, x 2} { Иначе} {Сообщаем, что действительных корней нет }
Шаг 4 Опишем все процедуры. • Описание производится выше вызывающей процедуры. • Если процедура сложная, то снова пишем алгоритм и так далее.
Procedure Print(Xf, Xs: real); begin Writeln('x 1=‘, xf ); Writeln( 'x 2=‘, xs); end; Print (X 1, X 2 ) X 1 9 ` Xf Xs Параметры - значения X 2 4
Procedure vvod(var K 1, K 2, K 3: real); begin writeln(‘Enter A’); readln(K 1); writeln(‘Enter B’); readln(K 2); writeln(‘Enter C’); readln(K 3); end; K 1 K 2 -2 vvod (A, B, C) A B C K 3 3 1 Параметры - переменные
Procedure Calc(A, B, D: real; var x 1, x 2: real); begin x 1: =(-B + sqrt(D))/(2*A); x 2: =(-B – sqrt(D))/(2*A); end;
Задачи Задание 1 • Составить программу, в результате выполнения которой переменная A меняется значением с переменной B, а переменная C - с переменной D. При решении определите процедуру, осуществляющую обмен значениями двух переменных. Задание 2 • Даны стороны двух треугольников. Найти сумму их периметров и сумму их площадей. Определить процедуры для расчета периметра и площади треугольника по его сторонам. Задание 3 • Найти площадь кольца, внутренний радиус которого равен R 1, а внешний - R 2. Определить и использовать процедуру вычисления площади круга. Задание 4 • Найти площадь выпуклого четырехугольника, вершины которого заданы своими координатами. Задание 5. Дано целое положительное число А, значение которого вводится с клавиатуры. Напишите программу, позволяющую: • найти минимальную цифру среди первых трех цифр числа • вывести на экран найденную цифру • если цифр меньше трех, то выдать сообщение «невозможно выполнить заданную операцию»