Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лин и разветвл алгоритмы

.pdf
Скачиваний:
20
Добавлен:
27.05.2015
Размер:
507.73 Кб
Скачать

Таблица 2 – Арифметические операции

Обозначение

Выражение

Тип

 

Тип

Операция

 

операндов

результата

 

+

 

А + В

integer, integer

integer

Сложение

 

 

 

 

 

real, real

real

 

 

 

 

 

 

real, integer

real

 

 

-

 

А - В

integer, integer

integer

Вычитание

 

 

 

 

 

real, real

real

 

 

 

 

 

 

real, integer

real

 

 

*

 

А * В

integer, integer

integer

Умножение

 

 

 

 

 

real, real

real

 

 

 

 

 

 

real, integer

real

 

 

/

 

А / В

integer, integer

real

Деление

 

 

 

 

 

real, real

real

 

 

 

 

 

 

real, integer

real

 

 

div

 

A div B

integer

integer

Целочисленное

 

 

 

 

 

 

 

 

 

деление

 

mod

 

A mod B

integer

integer

Остаток от

 

 

 

 

 

 

 

 

 

целочисленного

 

 

 

 

 

 

 

 

 

деления

 

Таблица 3 – Стандартные математические функции

 

 

Обращение

 

Тип

 

Тип

 

 

Назначение функции

аргумента

результата

 

 

Abs (x)

 

real

 

real

 

Модуль аргумента

 

 

integer

 

integer

 

 

 

 

 

ArcTan (x)

 

real

 

real

 

Арктангенс (значение в радианах)

Cos (x)

 

real

 

real

 

Косинус (аргумент в радианах)

Exp (x)

 

real

 

real

 

Экспонента аргумента

Frac (x)

 

real

 

real

 

Дробная часть аргумента

Int (x)

 

real

 

real

 

Целая часть аргумента

Ln (x)

 

real

 

real

 

Логарифм натуральный (аргумент

 

 

 

 

 

 

положительный)

 

 

Pi

-

 

real

 

π = 3,141592653…

Sin (x)

 

real

 

real

 

Синус (аргумент в радианах)

Sqr (x)

 

real

 

real

 

Квадрат аргумента

 

 

integer

 

integer

 

 

 

 

 

Sqrt (x)

 

real

 

real

 

Корень квадратный (аргумент

 

 

 

 

 

 

неотрицательный )

 

 

 

 

11

 

 

 

 

Примеры записи арифметических выражений:

A + B

A B ( A + B) /( A B)

x y

Sin x Cos y x * y /(Sin(x) *Cos( y))

x y SQRT (ABS(x y))

a x +b y Exp(x * Ln(a)) + Exp( y * Ln(b))

Sin x2 Cos2 y Sin(SQR(x)) SQR(Cos( y))

Ln x +ex y Ln(x) + Exp(x * y)

Выражения отношения

Выражения отношения позволяют выполнить сравнение двух однотипных операндов. Над данными типа Integer, Real, Char, String определены следующие операции отношения (сравнения):

= , < > , < , > , < = , > = .

Если в состав выражения отношения входят арифметические выражения, то определен следующий порядок их вычисления: арифметические выражения → выражения отношения.

Результат выполнения операции отношения с операндами любого, но только одного и того же типа, может принимать значение

True (истина) или False (ложь).

Примеры записи выражений отношения: a <= b

x > 0

(a + b) <> 0

Логические выражения

Логические выражения позволяют выполнить логические операции над данными логического (Boolean) типа (таблица 4).

Если в состав логического выражения входят арифметические выражения и выражения отношения, то определен следующий порядок их вычисления: арифметические выражения → выражения отношения → логическое выражение.

Результат выполнения логической операции, в зависимости от значения операндов, может принимать значение True (истина) или

False (ложь).

12

Таблица 4 – Логические операции

Операция

Выражение

Значения

Значение

Описание

операндов

результата

not

not A

True

False

Логическое

 

 

False

True

отрицание

and

A and B

True, True

True

Логическое

 

 

True, False

False

И

 

 

False, True

False

 

 

 

False, False

False

 

or

A or B

True, True

True

Логическое

 

 

True, False

True

ИЛИ

 

 

False, True

True

 

 

 

False, False

False

 

xor

A xor B

True, True

False

Исключающее

 

 

True, False

True

ИЛИ

 

 

False, True

True

 

 

 

False, False

False

 

Примеры записи логических выражений:

(a < 0) and (b < 0) (x < a) or (x > b) (x > c) and (x < d)

((x+y) < 0) or ((x*y) > 0)

ОПЕРАТОРЫ

Операторы описывают действия, которые необходимо выполнить над данными. Операторы могут быть простыми или составными.

Простой оператор – это оператор, в состав которого не входит никакой другой оператор. Составной оператор – это оператор, в состав которого входят другие операторы.

Оператор присваивания

Оператор присваивания позволяет вычислить значение выражения и полученный результат присвоить переменной.

Формат оператора присваивания:

<идентификатор> := <выражение>; <идентификатор> – идентификатор переменной, значение

которой необходимо вычислить; <выражение> – арифметическое выражение.

13

Выполнение оператора присваивания:

1.Вычисляется значение выражения.

2.Полученный результат присваивается идентификатору переменной.

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

Величины, входящие в состав выражения, должны быть определены к моменту выполнения оператора присваивания: введены или вычислены ранее.

Примеры оператора присваивания:

a:= 4.2; b := -7.45;

x:= Sqr (a + b);

y:= 2*a + b*x;

Условный оператор

Условный оператор позволяет вычислить выражение и, в зависимости его результата, выполнить то или иное действие.

Форматы условного оператора:

If <выражение> then <оператор 1> else <оператор 2>; If <выражение> then <оператор 1>;

<выражение> –выражение отношения или логическое выражение, которое может принимать значения True или False;

<оператор 1> и <оператор 2> – операторы, которые могут быть простыми или составными.

Выполнение условного оператора:

1.Вычисляется значение выражения.

2.Если значение выражения True, то выполняется <оператор 1>.

3.Если значение выражения False, то выполняется <оператор 2>.

4.Если значение выражения False, а <оператор 2> отсутствует, то выполняется следующий оператор программы.

Примеры условного оператора:

If a > b then x := a - b else x := b - a; If x > 0 then y := Sqrt (x);

If (x > = 3) and (x <= 10) then y := Ln (x);

Оператор обращения

Оператор обращения служит для вызова стандартной процедуры или процедуры пользователя.

14

Формат оператора обращения:

<имя процедуры> (<список параметров>); <имя процедуры> – стандартный идентификатор или

идентификатор пользователя; <список параметров > – содержит фактические параметры,

значения которых необходимо передать в процедуру для выполнения или из процедуры – после выполнения (список может отсутствовать).

Выполнение оператора обращения:

1.Управление передается процедуре, имя которой указано в операторе обращения.

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

3.Выполняется процедура, после чего управление передается в точку вызова процедуры.

4.Выполняется следующий оператор программы.

Пример операторов обращения:

Read(a,b);

Write(x);

Writeln;

Sum(x,y);

ОРГАНИЗАЦИЯ ВВОДА/ВЫВОДА ДАННЫХ

Для организации ввода/вывода данных используются стандартные процедуры ввода (Read, Readln) и вывода (Write, Writeln). Стандартные процедуры не нуждаются в предварительном описании, они доступны любой программе, в которой содержится обращение к ним.

Стандартные процедуры ввода/вывода допускают использование произвольного числа параметров, которые передаются в виде списка.

Ввод данных

Процедура Read обеспечивает ввод числовых, символьных, строковых данных.

Формат оператора обращения:

Read (<список ввода>);

<список ввода> – содержит последовательность переменных целочисленного (Integer), вещественного (Real), символьного (Char), строкового (String) типа, значения которых необходимо ввести.

15

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

вводимые значения записываются последовательно друг за другом и разделяются пробелами или записываются по одному в строке;

в конце каждой строки ввода необходимо нажать клавишу

Enter;

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

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

стой же строки.

Процедура Readln выполняется аналогично. Однако, после чтения последнего значения из списка ввода, оставшаяся часть строки игнорируется, а курсор перемещается в первую позицию новой строки. При следующем обращении к процедуре Read или Readln данные будут считываться с первой позиции новой строки.

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

Пример ввода данных (процедура Read):

Read (a, b); Read (c, d);

Строка ввода должна иметь следующий вид: 4.2 -7.45 0.25 -3.1

Пример ввода данных (процедура Readln):

Readln (a, b); Readln (c, d);

Строка ввода должна иметь следующий вид: 4.2 -7.45 0.25 -3.1

Вывод данных

Процедура Write обеспечивает вывод числовых, символьных, строковых, логических данных.

16

Формат оператора обращения:

Write (<список вывода>);

<список вывода> – содержит последовательность переменных целочисленного (Integer), вещественного (Real), символьного (Char), строкового (String), логического (Boolean) типа, значения которых необходимо вывести.

Любая переменная из списка вывода может иметь следующий формат:

В:W:D,

где В – идентификатор переменной, значение которой необходимо вывести;

W – параметр, который указывает минимальную ширину поля для записи символьного представления выводимого значения;

D – параметр, который задает количество десятичных знаков в дробной части вещественного числа (используется только совместно с параметром W для переменных вещественного типа).

Если символьное представление выводимого значения имеет меньшую длину, чем W, оно будет дополнено слева пробелами, если большую длину, то параметр W игнорируется и выводится необходимое число символов.

Если ширина поля вывода W не указана, то выражение выводится вслед за предыдущим без какого-либо разделительных символов.

Если для переменной вещественного типа задан параметр D, то вещественное значение выводится в формате с фиксированной точкой с указанным количеством знаков в дробной части числа. Если значение параметра W окажется недостаточным для размещения целой части, то его значение автоматически увеличивается.

Если для переменной вещественного типа параметр D равен нулю, тогда ни дробная часть вещественного значения, ни десятичная точка не выводится.

Если для переменной вещественного типа параметр D не указан, то вещественное значение выводится экспоненциальном виде

± m E ± p ,

где m - мантисса, Е – десятичное основание, р – десятичный порядок.

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

17

обращении к процедуре Write или Writeln данные будут записываться в той же строке.

Процедура Writeln выполняется аналогично. Однако, после записи последнего значения из списка вывода, оставшаяся часть строки игнорируется, а курсор перемещается в первую позицию новой строки. При следующем обращении к процедуре Write или Writeln данные будут записываться с первой позиции новой строки.

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

Пример вывода данных (процедура Write):

Write (' a= ', a:3:1, ' b= ', b:5:2); Write (' c= ', c:4:2, ' d= ', d:4:1);

Строка вывода будет иметь следующий вид:

а=4.2 b=-7.45 с=0.25 d=-3.1

Пример вывода данных (процедура Writeln):

Writeln (' a= ', a:3:1, ' b= ', b:5:2); Writeln (' c= ', c:4:2, ' d= ', d:4:1);

Строка вывода будет иметь следующий вид:

а=4.2 b=-7.45 с=0.25 d=-3.1

ПРИМЕР ВЫПОЛНЕНИЯ ЗАДАНИЯ Задача 1

Заданы вещественные значения a, b, c − стороны треугольника. Вычислить высоты треугольника по формулам:

h

A

=

t

;

h =

t

;

h =

t

,

 

 

 

 

 

2a

 

B

 

2b

C

2c

 

где t = p( p a)( p b)( p c),

p = a +b +c .

 

 

 

 

 

 

 

 

 

 

2

 

 

Пример программы c линейным алгоритмом

Program B1;

Var a, b, c, p, t, hA, hB, hC : Real;

Begin

Write ( ' Vvod a, b, c: ' ); Readln (а, b, c);

p := (a + b + c)/2;

t := Sqrt(p*(p – a)*(p – b)*(p – c));

18

hA := t / (2*a); hB := t / (2*b); hC := t / (2*c);

Writeln ( ' hA= ', hA:5:2, ' hB= ', hB:5:2, ' hC=', hC:5:2);

End.

Задача 2

Задано вещественное значение х. Вычислить значение функции y по формулам:

Ln x,

x >0

y =

x 0

x2 ,

Пример программы с разветвляющимся алгоритмом

Program B2;

Var x, y: Real;

Begin

Write ( ' Vvod х: ' );

Readln (х);

If х > 0 then y := Ln (x) else y := SQR (x); Writeln ( ' Pri х= ', x:4:2, ' y= ', y:5:2 );

End.

Задача 3

Задано вещественное значение х. Вычислить значение функции y по формулам:

x,

 

x 0

 

 

 

 

y = x2 , 0 < x <1

 

x

,

x 1

e

 

Пример программы с разветвляющимся алгоритмом

Program B3;

Var x, y: Real;

Begin

Write ( ' Vvod х: ' );

Readln (х);

If х <= 0 then y := x;

If (х > 0) and (x < 1) then y := x * x; If х >= 1 then y := Exp (x);

Writeln ( ' Pri х= ', x:4:2, ' y= ', y:5:2 );

End.

19

РЕАЛИЗАЦИЯ ПРОГРАММЫ

В КОНСОЛЬНОМ ПРИЛОЖЕНИИ DELPHI

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

1). Запустить среду Delphi, выполнив последовательность

действий: Æ Все программы ÆBorland Delphi 7 ÆDelphi 7. 2). В горизонтальном меню File выполнить команду New, затем в

раскрывшемся окне - команду Other.

Откроется диалоговое окно New Items (рисунок 1).

Рисунок 1 - Диалоговое окно New Items

3). На вкладке New диалогового окна New Items выбрать тип

создаваемого приложения .

Откроется окно Project 2.dpr, в котором находится шаблон главной процедуры консольного приложения (рисунок 2).

20