Конспект 2

advertisement
Глава 3
Управляющие структуры языка (операторы).
§ 3.1 Общая структура программы.
Структура программы в Паскале имеет вид:
Program Имя программы;
Uses Подключаемые библиотеки (модули);
Label Список меток основной программы;
Const Введение констант;
Type Описание новых типов;
Var Описание переменных
Определение процедур.
Определение функций.
Begin
Тело основной программы;
End.
Подчеркнуты служебные слова, обозначающие начало блока.
Program – блок описания заголовка программы в Турбо-Паскале имеет
декоративное значение и может отсутствовать.
Uses – в Турбо-Паскале вспомогательные готовые программы собранные
в библиотеки (модули). Например, процедуры рисования точек, линий,
окружностей на экране содержатся в модуле graph. Модули объявляются в этом
блоке. Если подключать библиотеки не нужно, блок отсутствует.
Label – блок описания меток, содержит их имена перечисленные через
запятую. Метки используются для организации переходов в программе. Если
метки не нужны, блок отсутствует.
Const – блок описания простых и типизированных констант. Может
отсутствовать.
Type - блок описания типов программиста. Может отсутствовать.
Var - блок описания переменных с указанием типа. Может встречаться в
программе несколько раз для организации глобальных и локальных переменных
(т.е. до описания процедур и функций, в них, и после них).
Определение процедур
и
функций
–
способ
оформления
вспомогательных алгоритмов, о которых будем говорить отдельно.
Begin-end. – служебные слова, обрамляющие тело основной программы,
где находятся операторы, которые машина выполняет. Таким образом, Beginначинает исполняемую часть программы, а end. –ее завершает.
Замечание: в любом месте программы могут находиться комментарии,
заключенные в фигурные скобки {…} или (*…*).
§ 3.2 Оператор присваивания.
Общий вид:
переменная := выражение;
может быть: переменной,
элементом массива, полем
записи и др.
не может быть: константа,
может быть: константой,
переменной, элементом
массива, арифметическим
или логическим выражением.
1
выражение.
Работа оператора: если справа стоит выражение, то сначала вычисляется
его значение, а затем это значение пересылается в переменную стоящую слева.
Тип значения выражения справа от присваивания должен совпадать с типом
переменной слева.
Исключения:
 Оба типа (слева и справа от :=) являются вещественными.
 Оба типа являются целыми.
 Один тип строковой, другой строковой или символьный.
 Слева переменная вещественного типа, справа выражение (переменная)
целого типа.
 И в некоторых других случаях.
§3.3 Арифметические выражения.
Арифметические выражения – это конструкции, содержащие данные, знаки
математических операций, математические функции.
Сложение
Вычитание
Математические операции
Знак
Тип
Тип результата
операндов
+
Целое, вещ. Целое вещ.
Целое, вещ. Целое вещ.
Умножение
*
Название
Деление
/
Целое частное от div
деления
Целый остаток
mod
от деления
.
Функция
abs(x)
Pi
sin(x)
cos(x)
Целое, вещ.
Целое вещ.
Целое вещ.
целое
вещ.
целое
12.5 + 3 {=15.5}
15.5 - 3 {=12.5}
15 - 3 {=12}
3.5*2 {=7.0}
3*2 {=7}
3/5 {=0.6}
3 div 5 {=0}
целoе
целoе
3 mod 5 {=3}
Математические функции.
назначение
Тип аргумента
sqrt(x)
x
Число π
sin(x), x-радианы
cos(x), x-радианы
arctg(x), в рад,
в пределах от –π/2
до π/2
x , x>0
sqr(x)
exp(x)
ln(x)
random
x²
eх
ln x, x>0
случайное число
ArcTan(x)
Пример
Целое, вещ.
Целое, вещ.
Вещ. (радиан)
Вещ.(радиан)
Вещ.
Целое,
вещ.
Целое, вещ.
вещ.
вещ.
-
Тип значения
функции
как у аргумента
Вещ.
Вещ.
Вещ.
Вещ.
как у аргумента
Как у аргумента
вещ.
вещ.
вещ.
2
random(x)
odd(x)
trunc(x)
frac(x)
int(x)
round(x)
[0,1[
случайное число
[0,х[
возвращает
True,если х-нечетное
целая часть x
дробная часть х
целая часть х
округление х до
ближайшего целого
Word
Word
Целое
Логический
вещ.
вещ.
вещ.
вещ.
longint
вещ.
вещ.
longint
Пример1.
Алгебраическая запись
2∙105 cos3x
x2  y2
103 e x
2
 5 sin x
1  cos 2 x 
arctg 

 cos x 
Запись на Паскале
2E5*cos(3*x)
sqrt(x*x+y*y)
sqrt(sqr(x)+sqr(y))
1E3*exp(sqr(x)+sqrt(5*sin(x)))
arctan((1-sqr(cos(x)))/cos(x))
Пример2. Вычисление arcos(x).
Т.е. нужно найти такой угол α, что cos(α)=x или
tgα=
sin 
=
cos 
1  cos  2
=
cos 
1 x 2
x
 1 x2 
  180
1 
и α= arctg 


 x 
{в программе alfa - угол в радианах [-π/2;π/2];
alfa1 - угол в градусах [-90˚; 90˚]}.
Program Prim2;
var
x,alfa,alfa1: real;
begin
writeln(‘Введите значение косинуса ’);
read(x);
alfa:=arctan(sqrt(1-sqr(x))/x);
alfa1:=alfa*180/pi;
write(‘угол в радианах’,alfa);
write(‘угол в градусах’,alfa1);
end.
3
Пример3. Возведение в степень. Воспользуемся свойством:
ln(xa)=a*ln(x), то (xa)=exp(ln(xa))=exp(a*ln(x)).
Program Prim3;
var
Pwr,x,a,:real;
Begin
writeln(‘Введите аргумент и степень ’);
read(x,a);
Pwr:=exp(a*ln(x));
write(x,’в степени‘,a,’равно’,Pwr);
end.
Пример 4. Получение случайных чисел
Program Prim4;
var
a:real; b:integer;
Begin
Randomize;
a:=random;
b:=random(10);
writeln(’a=‘,a:6:4,’ b=’,b);
end.
Приоритет
1
2
3
4
5
6
Приоритет математических операций.
Тип действия
Вычисления в скобках (…)
Вычисление функций
унарные операции (например: not)
Операции типа умножения, деления (*, /, div,
mod, and)
Операции типа сложения (+, -, or, xor)
Операции отношений (=, <>, <, >, <=, >=)
§3.4 Блок-схемы.
При записи алгоритма в виде блок-схемы, каждая операция записывается
в виде графического блока, изображение которого указывает на характер
выполняемой операции. Необходимые параметры записываются внутри блока.
Блоки "Начало" и "Конец"
4
Блоки ввода и вывода
Блок выражений
Блок условия
Блоки соединяется линиями, показывающими порядок выполнения
операций. При направлении выполнения операций снизу вверх и справа налево
на концах линий изображают стрелки. В противном случае считается, что
направление выполнения операций - сверху вниз и слева направо.
§3.4 Логические выражения.
Логическое выражение – конструкция, состоящая из данных, операций
отношения, логических операций, арифметических выражений. Имеет значение
True (истина) или False (ложь).
Операция
Операции отношения.
значение
пример
=
<>
<
<=
>
>=
равно
не равно
меньше
меньше либо равно
больше
больше либо равно
х=0
x<>25
x<5
x<=2
x>2
x>=2
Логические операции
(здесь L1,L2 – логические выражения или переменные)
5
обозна
чение
not
название
запись
результат
пример
логическое
“не”
not L1
not(x>0)
{верно, если х≤0}
and
логическое
“и”
L1 and L2
or
логическое
“или”
L1 or L2
xor
логическое
исключающее
“или”
L1 xor L2
Логическое значение,
противоположное
значению L1
Значение True, если L1 и
L2 оба имеют значение
True.Иначе- false
Значение True, если L1
или L2 имеют значение
True, и значение false,
если L1 и L2 =false
Значение True, если
значение L1 и L2 –
различны и false если
равны
(х>0) and (y>15)
{верно, если х>0 и y>15
одновременно верны}
(x<-2) or (x>2)
{верно, если │х│>2, т.е.
(x<-2) или (x>2)}
Q1>0 xor Q2>0
{верно, если Q1, Q2
имеют разные знаки }
Примеры
a>=0
(a<>0)and (x=2)
(x<20) or (x>20)
x or y
Рассмотренные логические выражения используются в условном операторе,
операторе варианта, в операторах цикла с пред и пост условием.
§3.5 Условный оператор.
общий вид условного оператора
if условие then оператор1
else оператор2;
где условие – это логическое выражение.
Работа оператора: Если условие выполняется, то выполняется ветвь then, т.е.
оператор1; если условие не выполняется – то оператор2.
Пример: из двух чисел а и b найти минимальное.
Program Prim2;
var
a,b,c:real;
begin
read(a,b);
if a>b then c:=b
else c:=a;
writeln(‘минимальное’,c);
end.
Условный оператор часто используется в сокращенной форме:
if условие then оператор1;
Например, та же задача о минимуме.
Program Prim3;
6
var
a,b,c:real;
begin
read(a,b);
c:=a;
if b<a then c:=b;
writeln(‘минимальное’,c);
end.
В отдельных случаях можно использовать вложенные условные операторы:
if условие1 then if условие2
then оператор1
else оператор2
else оператор3;
Правило: альтернатива else считается принадлежащей ближайшему
оператору if , не имеющему else.
§3.6 Составной оператор.
begin
Оператор 1;
Оператор 2;
………
Оператор n;
end;
Вся такая совокупность из n операторов рассматривается как один оператор
или блок.
Пример:
Program Prim4;
var
x,f:real;
begin
write(‘введите х’);
read(x);
if x>=1 then begin
f:=sqrt(sqr(x)-1);
writeln(‘f(x):=sqrt(sqr(x)-1)=’,f:6:3);
end
else begin
f:=1-sqr(x);
writeln(‘f(x):=1-sqr(x)=’,f:6:3);
end;
end.
§3.7 Оператор выбора (варианта).
Используется, когда нужно организовать несколько ветвей.
Общий вид:
case селектор of
значение 1: оператор 1;
значение 2: оператор 2;
………
7
значение N: оператор N;
else оператор
end;
,где селектор -это переменная или выражение целого, символьного (char),
логического типов, перечисляемого типа или типа – диапазона.
Набор значений - это конкретные значения селектора, при которых будет
выполнен соответственно нужный оператор.
Работа оператора: сначала вычисляется значение сектора, если он
является выражением. Затем выполняется тот оператор, который соответствует
значению, совпадающему со значением селектора. Если значение селектора не
совпало ни с одним из указанным значением, то выполняется ветвь else.
Замечание1. В качестве значения селектора может быть указан набор
значений через запятую или диапазон значений разделенный двумя точками.
Замечание2. Ветвь else можно опустить.
Замечание3. В написании оператора можно использовать как простой ,
так и составной оператор.
Пример: запрограммируем вычисление функции:
1, 0≤x<1
f(x)=
√x+5 , 1≤x<3
x² , 3≤x<10
при х<0 и x>10 функция не определена.
Program Prim6;
var
x,f:real;
begin
writeln(‘введите 0<=x<10’);
read(x);
case trunc(x) of
0: writeln(‘f=1’);
1,2: begin
f:= sqrt(x+5);
writеln(‘f=’,f);
end;
3..9 writeln(‘f=’,sqr(x));
else writeln(‘введено значение вне диапазона’);
end;
end.
Ту же задачу можно написать по-другому:
Program Prim7;
var
x,f:real;
n:byte;
begin
read(x);
n:=0; f:=0;
n:=ord((0<=x) and (x<1))+ 2*ord((1<=x) and (x<3))+
+3*ord((3<=x) and (x<10));
case n of
1: f:=1;
8
2: f:=sqrt(x+5);
3: f:=x*x;
end;
writeln(‘f=’,f:6:3);
end.
9
Download