Конец холивара. Pascal vs C - [4]

Шрифт
Интервал

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: Процедура вычисляет корни квадратного уравнения


AX>2+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 (x>1) в средней точке x>1= (a+b) /2. Если Y (x>1) не равна нулю, то из двух отрезков [а, х>1] и [х>1,b] для последующего деления пополам выбирается тот, на концах которого значения функции различны по знаку. Возникающая в процессе такого дробления последовательность середин отрезков х>1, х>2, x>3, … сходится к корню X. Вычисление прекращается, когда длинна отрезка становится меньше заданной погрешности вычисления.


Пример 1.10: Найти корень уравнения X>2 – 3 = 0.


VAR A, B, E, X, Y, Y1 : REAL;

PROCEDURE FNY;

BEGIN

Y := SQR (X) – 3

END;

BEGIN

WRITELN (‘ВВЕДИТЕ ГРАНИЦЫ ИНТЕРВАЛА И ПОГРЕШНОСТЬ’);

READLN (A, B, E);

X := A;

FNY;

Y1 := Y;

WHILE B – A> = E DO

BEGIN

X := (A + B) /2;

FNY;

IF Y*Y1> = 0

THEN

BEGIN

A := X;

Y1 := Y

END

ELSE B := X

END;

WRITELN (‘X =’, X);

READLN;

READLN

END.


В этой программе используется процедура без параметров. Заменяя в ней функцию можно находить корни других уравнений.

6. Чего ещё не хватает?

Много чего не хватает, а, особенно, денег. Но, в контексте программирования на Паскале, вас не удивляло – почему Николаус Вирт не ввёл в ряд его стандартных функций, довольно распространённый в вычислениях, кубический корень?

Сейчас мы исправим этот недочёт!

Набирайте в разделе описаний, сразу после описаний переменных, следующую функцию и будет вам счастье!


FUNCTION KUBKOR (X: REAL): REAL;

BEGIN

KUBKOR := EXP (1/3 * LN (X))

END;


Для Си это не актуально, поскольку там есть функция вычисляющая любую степень, в том числе, и дробную. А кубический корень числа – это, по другому, число в степени 1/3.

Часть вторая

Язык программирования C

1. Структура программы на языке C

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

Ключевые слова программы записываются только строчными буквами, так как C (в отличии от Pascal) различает регистр букв.

Имя переменной или константы – это последовательность букв и цифр, начинающаяся с буквы. Переменные, как и в Pascal, могут быть глобальными и локальными.

В языке C числа изображаются без знака, но есть операция "-”.

Литеры и строки изображаются в кавычках (“…“), а не в апострофах (’…’), как в Pascal.

Комментарии начинаются с /* и заканчиваются */ – текст между этих скобок игнорируется при исполнении программы.


Рекомендуем почитать
Графика DirectX в Delphi

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Вторая жизнь старых компьютеров

Сейчас во многих школах, институтах и других учебных заведениях можно встретить компьютеры старого парка, уже отслужившие свое как морально, так и физически. На таких компьютерах можно изучать разве что Dos, что далеко от реалий сегодняшнего дня. К тому же у большинства, как правило, жесткий диск уже в нерабочем состоянии. Но и выбросить жалко, а новых никто не дает. Различные спонсоры, меценаты, бывает, подарят компьютер (один) и радуются, как дети. Спасибо, конечно, большое, но проблемы, как вы понимаете, этот компьютер в общем не решает, даже наоборот, усугубляет, работать на старых уже как-то не хочется, теперь просто есть с чем сравнивать.


DirectX 8. Начинаем работу с DirectX Graphics

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Симуляция частичной специализации

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Обработка событий в С++

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.