Лин и разветвл алгоритмы
.pdfТаблица 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 +e−x 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