Чтение онлайн

на главную - закладки

Жанры

Конец холивара. Pascal vs C

Кривцов М. А.

Шрифт:

Структура процедуры или функции имеет только два различия от структуры обычной программы: процедуры и функции начинаются с заголовка PROCEDURE или FUNCTION, а не с заголовка PROGRAM, и заканчиваются не точкой, а точкой с запятой.

Процедуры и функции могут иметь свои собственные константы, типы данных, переменные и даже собственные процедуры и функции. Но все эти элементы, которые называются локальными, могут использоваться только в тех процедурах и функциях, в которых они определены. Константы, типы и переменные объявленные в программе имеющей процедуру или функцию называются глобальными.

Они могут быть доступны, то есть предоставлять или изменять свои значения внутри тел процедур или функций, объявленных в этой программе. Локальные элементы позволяют работать над подпрограммами разным программистам, не боясь, что, например, они могут дать имена переменным аналогичные именам переменных в других подпрограммах или в основной программе – это не повлияет на работу других подпрограмм, или основной программы.

На этом, в том числе, базируется структурное программирование. По данной методологии любая программа строится без использования оператора безусловного перехода (goto) из трёх базовых управляющих структур: последовательность, ветвление и цикл. Кроме того, используются подпрограммы. Притом, разработка программы ведётся пошагово, методом “сверху вниз”. Методология структурного программирования появилась, как следствие возрастания сложности решаемых на компьютерах задач и усложнения программ.

3.1. Функции

Пример 1.7: Функция вычисляющая факториал.

VAR A, Y : INTEGER;

FUNCTION FAKTORIAL (N : INTEGER) : INTEGER;

VAR F, K : INTEGER;

BEGIN

F := 1;

FOR K := 1 TO N DO

F := F * K;

FAKTORIAL := F

END;

BEGIN

WRITELN (‘ВВЕДИТЕ ЦЕЛОЕ ПОЛОЖИТЕЛЬНОЕ ЧИСЛО’);

READLN (A);

Y := FAKTORIAL (A);

WRITELN (‘N!=’, Y);

READLN;

READLN

END.

Обратите внимание на то, что в описании функции обязательно содержится оператор присваивания в котором слева от знака присваивания помещено имя функции.

3.2. Процедуры

Пример 1.8: Процедура вычисляет корни квадратного уравнения

AX2+BX+C=0

PROGRAM KU (INPUT, OUTPUT);

VAR A, B, C, D, X1, X2 : REAL;

PROCEDURE KVUR (A, B, C: REAL; VAR D, X1, X2: REAL);

BEGIN

D:=SQR (B) -4*A*C;

IF D = 0 THEN X1:= (-B) / (2*A)

ELSE

IF D> 0 THEN

BEGIN

X1:= ((-B) – SQRT (D)) / (2*A);

X2:= ((-B) + SQRT (D)) / (2*A)

END

END;

BEGIN

WRITE (‘Введите A=’);

READLN (A);

WRITE (‘Введите B=’);

READLN (B);

WRITE (‘Введите C=’);

READLN (C);

KVUR (A, B, C, D, X1, X2);

IF D <0 THEN WRITELN (‘Действительных корней

нет’)

ELSE

IF D = 0 THEN WRITELN (‘X=’, X1)

ELSE

BEGIN

WRITELN (‘X1=’, X1);

WRITELN (‘X2=’, X2)

END;

READLN;

READLN

END.

Где SQR – квадрат числа, а SQRT – корень квадратный.

4. Массивы и индексированные переменные

Массив – это упорядоченный набор переменных одинакового типа. Доступ к элементу массива производится по его номеру (индексу). Массивы удобно использовать для хранения однородной по составу информации, например, элементов таблиц, коэффициентов уравнений, матриц. Частным случаем массива символов является строка (переменная типа STRING).

Типичные действия с массивами: ввод и вывод массивов, поиск в массиве заданного элемента, поиск максимального или минимального элемента, сортировка.

Массивы бывают одномерные (например: VAR A : ARRAY [1..100] OF INTEGER;) и двумерные (например: VAR B : ARRAY [1..10, 1..10] OF INTEGER;). Двумерный массив – это таблица.

ARRAY (массив), OF (из) – ключевые слова.

Доступ к элементам массива удобно производить с помощью циклов с параметрами. Для двумерных массивов нужны вложенные циклы.

Пример 1.9: Программа генерирует таблицу умножения и оформляет вывод результатов в матрицу 10 на 10 используя двумерный массив.

VAR A : ARRAY [1..9, 1..9] OF INTEGER;

I, K : INTEGER;

BEGIN

FOR I := 1 TO 9 DO

FOR K := 1 TO 9 DO

A [I, K] := I * K;

FOR I := 1 TO 9 DO

BEGIN

FOR K := 1 TO 9 DO

WRITE (I, '*’, K, '=’, A [I, K],’’);

WRITELN

END;

READLN;

READLN

END.

5. Заглянем в вычислительную математику

Метод половинного деления

Один из методов численного решения уравнений с одним неизвестным. Пусть имеется уравнение Y (x) =0 с непрерывной на отрезке [а, b] функцией Y (х), принимающей на концах отрезка значения разных знаков и имеющей внутри [а, b] единственный корень X. Для приближенного нахождения X отрезок [а, b] делят пополам и вычисляют значение Y (x1) в средней точке x1= (a+b) /2. Если Y (x1) не равна нулю, то из двух отрезков [а, х1] и [х1,b] для последующего деления пополам выбирается тот, на концах которого значения функции различны по знаку. Возникающая в процессе такого дробления последовательность середин отрезков х1, х2, x3, … сходится к корню X. Вычисление прекращается, когда длинна отрезка становится меньше заданной погрешности вычисления.

Поделиться:
Популярные книги

Адвокат Империи 3

Карелин Сергей Витальевич
3. Адвокат империи
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Адвокат Империи 3

Кротовский, может, хватит?

Парсиев Дмитрий
3. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
аниме
7.50
рейтинг книги
Кротовский, может, хватит?

Дурная жена неверного дракона

Ганова Алиса
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Дурная жена неверного дракона

Вонгозеро

Вагнер Яна
1. Вонгозеро
Детективы:
триллеры
9.19
рейтинг книги
Вонгозеро

Ведьма Вильхельма

Шёпот Светлана
Любовные романы:
любовно-фантастические романы
8.67
рейтинг книги
Ведьма Вильхельма

Папина дочка

Рам Янка
4. Самбисты
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Папина дочка

Законы Рода. Том 6

Flow Ascold
6. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 6

Как я строил магическую империю 7

Зубов Константин
7. Как я строил магическую империю
Фантастика:
попаданцы
постапокалипсис
аниме
фантастика: прочее
5.00
рейтинг книги
Как я строил магическую империю 7

Лучший из худший 3

Дашко Дмитрий
3. Лучший из худших
Фантастика:
городское фэнтези
попаданцы
аниме
6.00
рейтинг книги
Лучший из худший 3

Штурмовик из будущего 3

Политов Дмитрий Валерьевич
3. Небо в огне
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Штурмовик из будущего 3

Последний попаданец 2

Зубов Константин
2. Последний попаданец
Фантастика:
юмористическая фантастика
попаданцы
рпг
7.50
рейтинг книги
Последний попаданец 2

Идеальный мир для Лекаря 14

Сапфир Олег
14. Лекарь
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 14

Безумный Макс. Поручик Империи

Ланцов Михаил Алексеевич
1. Безумный Макс
Фантастика:
героическая фантастика
альтернативная история
7.64
рейтинг книги
Безумный Макс. Поручик Империи

Вдова на выданье

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Вдова на выданье