Основы программирования на языке Паскаль. Основные понятия алгоритмического языка Паскаль. Учебное пособие для самостоятельной работы по дисциплине «И
.pdf
y
1
Искомое логическое выражение имеет вид
(х>=0) AND (у>=0) AND (х*х+у*у<=1)
0 |
1 |
x |
|
|
|
Рис. |
3. Иллюстрация к примеру 6. |
|
|
3.4. Операции со строками |
|
Для строк применимы операции конкатенации (+) и сравнения. Операция конкатенации присоединяет одну строку к другой.
Пример: VAR
str,str1,str2:STRING[80]; BEGIN
str1:= ′ Turbo ′; str2:= ′ Pascal ′: str:= str1+str2;
END.
В результате выполнения оператора str := str1+str2 переменная str получит значение ′ Turbo Pascal ′.
Сравнивать можно строки разной длины. Лексикографическое сравнение осуществляется слева направо в строке по ASCII – кодам (приложение 3), соответствующим символам. Считается, что отсутствующие символы в более короткой строке имеют код меньше кода любого присутствующего символа. Например, ′xs′ больше, чем ′x′.
3.5. Выражения
Выражение – это конструкция языка, определяющая способ вычисления некоторого значения. Оно формируется из констант, переменных, функций, знаков операций и круглых скобок.
Вычисление значений выражений выполняется в определенном порядке. Начинается вычисление с определения переменных и констант, входящих в выражение. Дальнейшие действия выполняются в соответствии с их приоритетами. Так, в первую очередь, вычисляются выражения, заключенные в круглые скобки. Для любых двух вложенных друг в друга пар круглых скобок вычисляется сначала внутреннее выражение, затем внешнее. Далее вычисляются значе-
31
ния входящих в выражение функций и т.д. Приоритеты действий при вычислении выражений приведены в таблице 5.
Таблица 5
Приоритеты действий при вычислении выражений
Группа |
Тип действий |
|
Операции или элементы |
1 |
Вычисление в круглых скобках |
( |
) |
2 |
Вычисление значений функций |
Функции |
|
3 |
Унарные операции |
NOT, - (одноместный минус) |
|
4 |
Операции типа умножения |
*, /, DIV,MOD,AND |
|
5 |
Операции типа сложения |
+, -, OR, XOR |
|
6 |
Операции отношения |
=,< >, <, <=, >, >= |
|
Унарная (единичная) операция означает взятие противоположного элемента.
Упражнения к разделу
Упражнение 1. Даны три целых положительных числа I, J, K. Составьте логические выражения для определения:
1)является ли I делителем числа J и K одновременно;
2)все ли эти числа четные;
3)I, J, K точно делятся на 2,3 и 5;
4)лежат ли эти числа в диапазоне от 2 до 10;
5)какие символы имеют порядковые номера I, J, K?
Упражнение 2. Составьте программу ввода в машину пяти переменных символьного типа CH1,CH2,CH3,CH4,CH5 и определите, есть ли среди символов:
1)хотя бы один пробел;
2)цифра Ø или буква О;
3)хотя бы одна цифра;
4)буква О или буква W;
5)литеры, отличные от ‘*’.
4. СТАНДАРТНЫЕ ФУНКЦИИ ЯЗЫКА ПАСКАЛЬ
Стандартные функции служат для облегчения вычисления наиболее часто встречающихся математических функций. Программы, реализующие эти функции, составляются заранее и хранятся в памяти, откуда их можно вызвать для применения простым набором имени функции, а в круглых скобках указать аргумент.
32
4.1. Арифметические функции
Арифметические функции можно использовать только с величинами целого и вещественного типа. Ниже приведены примеры записи на Паскале некоторых математических форм с указанием типа получаемого результата (табл. 6)
Например: FRAC(15.64)=0.64 INT(15.64)=15.0
|
|
2sin 4x x |
|
|
|
|
|
|
Пример записи на языке Паскаль выражения e |
|
3x |
|
|
|
exp(abs((2*sin(4*x)+x)/(3*x))) |
||
Таблица 6
Примеры записи на Паскале некоторых математических форм и типов получаемых результатов
Математическая форма |
Запись на Паскале |
Тип результата |
||
׀x׀ |
ABS(X) |
Совпадает с типом х |
||
x2 |
SQR(X) |
Совпадает с типом х |
||
sin x |
SIN(X) |
Вещественный |
||
cos x |
COS(X) |
Вещественный |
||
arctg x |
ARCTAN(X) |
Вещественный |
||
|
|
|
SQRT(X) |
Вещественный |
√ |
||||
ln x |
LN(X) |
Вещественный |
||
дробная часть числа |
FRAC(X) |
Вещественный |
||
целая часть числа |
INT(X) |
Вещественный |
||
Рассмотрим примеры программирования часто встречающихся выражений, не отраженных непосредственно в списке арифметических функций Паскаля:
Пример 1. Для возведения переменной х в некоторую степень a исполь-
зуется равенство
xa=ealnx при условии х>0.
Тогда выражение хa на языке Паскаль должно быть записано как exp(a*ln(x)).
Пример 2. Вычисление тригонометрической функции tg x= |
|
запишем |
|
||
как sin(x)/cos(x). |
|
|
Аналогично для ctg x будет cos(x)/sin(x). |
|
|
33
Пример 3. Для записи обратных тригонометрических функций вспомним
соотношения |
|
|
|
|||||||
arcsin x = arctg |
|
|
|
|
|
|
|
|
|
arctan (x/sqrt(1-sqr(x))) |
√ |
|
|
|
|
||||||
|
|
|
|
|||||||
arccos x = arctg |
√ |
|
|
arctan (sqrt(1-sqr(x))/x) |
||||||
|
|
|
|
|
||||||
arcctg x = arctg |
|
|
|
|
|
arctan (1/x) |
||||
|
|
|||||||||
Пример 4. Для вычисления логарифма с произвольным основанием ис- |
||||||||||
пользуем формулу logb a = |
|
|
|
и запишем такой логарифм как ln(a) / ln(b). |
||||||
|
|
|
||||||||
Для десятичного логарифма lgx запись приобретет вид ln(x) / ln(10)
Упражнения к разделу
Упражнение 1. Записать на языке Паскаль следующие выражения (первый уровень сложности)
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
а) √ |
б) | a + bx | |
|
в) sin 8 |
||||||||||||||||||
|
|
|
|||||||||||||||||||
г) cos2 x3 |
|
|
д) tg x |
|
|
|
|
е) log2 |
|
|
|
|
|||||||||
|
|
|
|
|
|
||||||||||||||||
ж) ch x |
|
|
з) arctg 103 |
|
и) arcsin x |
||||||||||||||||
к) x-1 |
|
|
л) x8 |
|
|
|
|
м) x-5 |
|||||||||||||
н) x100 |
|
|
о) 21+x |
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
п)x√ |
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
р) √ |
|
|
с) a + bx+ √ |
|
т) [( ax – b) x+c] x-d |
||||||||||||||||
у) |
|
+ |
|
|
|
|
ф) |
|
· |
|
|
|
х)104·α - 3· |
|
·β |
||||||
|
|
|
|
|
|
|
|
||||||||||||||
ц) (1+ |
|
+ |
|
)/(1 + |
|
) |
ч) (x2 -3x-y) |
|
|
ш) |
|
|
|
|
|
|
|
| | |
|||||||||
|
Упражнение 2. Записать в обычной математической форме следующие |
||||||||||||
выражения |
|
|
|
|
|
|
|
|
|||||
а) |
(p + q) / (r +s ) – p*q /(r * s) |
|
|
|
|||||||||
б) 1Е3 + beta / (x2 – gamma * delta) |
|
|
|
||||||||||
в) (-b + sqrt (sqr (b) – 4*a*c) )/ (2*a) |
|
|
|
||||||||||
г) |
a/b + (c + d) – (a – b)/b/c + 1E -8 |
|
|
|
|||||||||
д) |
x1 = arctan( y2 – alpha )/2 * abs(x4 – ln(5) + y5 )/exp(-1) |
|
|
|
|||||||||
34
Упражнение 3. Определить тип результата следующих выражений:
а) I*I + J*J + K*K |
б) X<Y |
в) SIN(X) + 2*COS(Y) + Z |
г) I + SQRT(J), |
если известно, что I, J, K : integer; |
X,Y,Z : real. |
Упражнение 4. Записать на языке Паскаль следующие выражения (второй уровень сложности)
а) |
с=3,36 103+2sin(3,14+z)+׀x׀ |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
б) |
z= |
|
׀ |
|
|
|
|
|
√ ׀ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
׀ |
|
|
|
|
|
|
׀ |
|
|
|
|
|||||||||
в) |
w= |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
– |
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
г) |
w=(ax+b-abx)e-(a+b)+ln ׀ |
|
|
|
׀ |
|
|
|
|
||||||||||||||||||||||||
|
|
|
|
|
|
|
|||||||||||||||||||||||||||
д) |
b=8,36 10-1+( |
|
|
|
|
– 1) arcctg ad + |
|
|
|
|
|
- 2,23 |
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||
е) |
z=ln ׀ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
׀ |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
ж) |
v= |
|
|
|
|
|
|
|
|
|
|
|
׀ |
|
|
׀ |
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
׀ |
׀ |
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
з) |
z= |
- 0,01 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
и) |
v=1,736 ׀ln(tg2 |
|
))׀ -arctg |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
к) |
v= ׀x׀ + |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
л) f= ׀ |
|
׀+13 |
|
+xy+ln ׀tg |
|
|
׀ |
||||||||||||||||||||||||||
|
|
|
|
||||||||||||||||||||||||||||||
35
м) v=(a+b+sin2a)cos b-1 +
н) y=sin
|
1 x |
3 |
2b ln cos d x ctgb |
lg x2 |
|||||||
о) |
z |
|
|
|
|
||||||
|
5 |
||||||||||
|
x 1 |
|
|
|
|
|
|
|
|||
п) |
y=3 |
|
|
|
|
׀ |
|
׀ |
|||
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
4.2. Функции преобразования типа
Эти функции предназначены для преобразования типов величин. Они получают в качестве аргумента значение одного типа, а выдают в качестве результата значение другого типа (табл.7).
|
|
|
|
Таблица 7 |
|
|
Функции преобразования типов величин |
|
|
||
|
|
|
|
|
|
Функция |
Назначение |
Тип аргумента |
Тип результата |
|
|
CHR(X) |
преобразование ASCII кода в |
целый тип в диапа- |
символ, |
соответ- |
|
|
символ |
зоне [0..255] |
ствующий |
данному |
|
|
|
|
коду |
|
|
ORD(X) |
преобразование любого по- |
порядковый |
|
|
|
|
рядкового типа в целый тип |
|
LONGINT |
|
|
ROUND(X) |
округление числа до бли- |
вещественный |
LONGINT |
|
|
|
жайшего целого |
|
|
|
|
TRUNC(X) |
получение целой части числа |
вещественный |
LONGINT |
|
|
Например: |
|
CHR (98)=′ b′ |
ROUND (15.64)=16 |
ORD (′5′)=53 |
TRUNC (15.64)=15 |
4.3. Функции для величин порядкового типа
Эти функции позволяют выполнять действия над величинами порядкового (ординального) типа, к которым относятся целые, логический, символьный, перечисляемый и интервальный типы (табл. 8).
36
Таблица 8
Функции преобразования величин порядкового типа
Функция |
Назначение |
|
Тип аргумен- |
Тип результата |
|
|
|
та |
|
ODD (X) |
проверка величины Х на не- |
LONGINT |
TRUE (если аргумент не- |
|
|
четность |
|
|
четный), |
|
|
|
|
FALSE (если аргумент |
|
|
|
|
четный) |
PRED (X) |
определение |
предыдущего |
порядковый |
порядковый того же типа |
|
значения величины Х |
|
|
|
|
определение |
последующее- |
порядковый |
порядковый того же типа |
SUCC (X) |
го значения величины Х |
|
|
|
Например:
ODD(4)=FALSE PRED(5)=4
ODD(5)=TRUE PRED(-2)=-3 PRED(′B′)=′A′
Упражнения к разделу
SUCC(4)=5 SUCC(-3)=-2 SUCC(′A′)=′B′
Упражнение 1 Определить тип и значения следующих выражений
1)(X AND Y OR NOT Z) AND NOT ((X OR Y) OR Y) AND X;
2)2*5+9 DIV 4 *3 + TRUNC (3.67);
3)15/4*2;
4)NOT X AND (X OR NOT Y) AND (XOR Y);
5)(2.5 + 0.68<= 2.8) OR Y AND X OR Z AND NOT X;
6)17/5/2+15 MOD 7;
7)((C-B)/A+B*C<ROUND (A)) OR Z AND NOT X;
8)ODD(C) OR X AND NOT ODD (C+15);
9)(′B′>′D′) OR (′5′< > ′9′) OR (PRED(′S′)<=SUCC(′W′));
10)(ORD(SUN)<ORD (TUE)) AND NOT (SUCC(зеленый)=синий);
где X=FALSE; Y=TRUE; Z=FALSE; A=36.2; B=-5.4; C=2, а определение типов цвет и DAY имеет вид
TYPE
Цвет = (красный, оранжевый, желтый, зеленый, голубой, синий, фиолетовый);
DAY = (SAT,SUN,MON,TUE,WED,THU,FRI);
Упражнение 2 Приведенная ниже программа вычисляет Y(x)=3-x+1
sin(x) при заданном х, печатает значения Y11 и Y22, соответствующие значениям
37
функций TRUNC(Y) и ROUND(Y), и проверяет принадлежность точки с координатами (x1,y1) заштрихованной области, показанной на рис.3.
PROGRAM UPR;
VAR X,X1,Y1,Y:REAL; BEGIN
WRITELN(′ВВЕДИТЕ Х:′); READLN(X); Y:=EXP((-X+1)*LN(3))*SIN(X);
WRITELN (`ПРИ Х=′,Х:8:3, ′_ _Y=′, Y:8:4);
WRITELN (′Y11=′,TRUNC(Y):4, ′_ _Y22=′, ROUND(Y):4); WRITELN (′ВВЕДИТЕ КООРДИНАТЫ: X1,Y1′); READLN (X1,Y1);
WRITELN ((X1>=0) AND (Y1>=0) AND (SQR(X)+SQR(Y)<=1)); WRITELN (′ ′:10, ′ПРОГРАММУ СОСТАВИЛ ИВАНОВ′)
END.
Задания к упражнению 2. Вычислить значение Y11 и Y22 для функций, предложенных в следующих заданиях (а) и проверить принадлежность исследуемых точек (б) заштрихованной области, показанной на рис.3.
1. |
а) Y=2-xcos(x)+√׀ ׀ при х=4.741; |
||||||||
|
б) координаты исследуемой точки (0.5;0.5); |
||||||||
|
|
|
|
|
|
|
|
|
|
2. |
а) Y= √ - |
при х=2.312; |
|||||||
|
б) координаты исследуемой точки (1,5;0,5); |
||||||||
|
|
|
|
|
|
|
|||
3. а) Y=√׀ |
׀ + sin x при х=12,7409; |
||||||||
|
б) координаты исследуемой точки (0,2;0,9); |
||||||||
4. |
а) Y=x |
при х=32.872 |
|||||||
б) координаты исследуемой точки (0,75; -0,3) |
|||||||||
5. |
а) y= tg x +׀x׀ |
при х= - 2.6312 |
|||||||
б) координаты исследуемой точки (0.2;0.45); |
|||||||||
6. |
а) y=1 - |
|
|
|
при х= - 0.387 |
||||
|
|
||||||||
б) координаты исследуемой точки (0.5;- 0,25); |
|||||||||
7. |
а) y=ch ׀ x+1׀ |
при х=4.352 |
|||||||
б) координаты исследуемой точки (0.0;0.0); |
|||||||||
8. |
а) y=arcsin x+ |
при x=0.112; |
|||||||
б) координаты исследуемой точки: (1.0,1.5);
38
9.а) y=sin arctg x при x=-0.7129;
б) координаты исследуемой точки: (-0.5;0.9);
10. |
а) y=5 arctg x |
|
при х=-4.4172; |
|||||||||
|
б) координаты исследуемой точки: (1.5;0.0); |
|||||||||||
11. |
а) y=cos (arcctg x - 1) |
при х= - 2.2117; |
||||||||||
|
б) координаты исследуемой точки: (0.9;0.1) |
|||||||||||
12. |
а) y= arcctg ( |
|
|
|
|
|
) |
|
|
при х=2.081; |
||
√ |
|
|
|
|
||||||||
|
|
|
|
|||||||||
|
б) координаты исследуемой точки : (0.95;0.4); |
|||||||||||
13. |
а) y= |
+ sin2( |
|
|
) при x= -0.91; |
|||||||
|
||||||||||||
|
б) координаты исследуемой точки: (0.8;0.65); |
|||||||||||
14. |
а) y=arcos ( sin |
|
|
) |
|
при х= - 0.485; |
||||||
|
|
|
||||||||||
|
б) координаты исследуемой точки : (0.45;0.55); |
|||||||||||
15. |
а) y= ln (arcos |
|
|
) при х=1.791; |
||||||||
|
|
|||||||||||
б) координаты исследуемой точки: (0.58;0.92).
5. СТРУКТУРА ПРОГРАММЫ
Программа, написанная на языке Паскаль, состоит из следующих разде-
лов:
-заголовок программы;
-раздел объявления модулей;
-раздел объявления меток;
-раздел объявления констант;
-раздел объявления типов;
-раздел объявления переменных;
-раздел объявления процедур и функций;
-радел операторов (обязательная часть).
Формат программы на языке Паскаль:
PROGRAM имя программы;
USES
модули; LABEL
метки; CONST
объявление констант;
TYPE
определение типов данных;
39
VAR
объявление переменных:
PROCEDURE имя процедуры (параметры);
USES
модули;
LABEL
метки; CONST
объявление констант; ТУРЕ
определение типов данных;
VAR
объявление переменных; PROCEDURE и FUNCTION; BEGIN
операторы; END;
FUNCTION имя функции (параметры): тип данных; USES
модули; LABEL
метки; CONST
объявление констант;
TYPE
определение типов данных; VAR
объявление переменных;
PROCEDURE и FUNCTION; BEGIN
операторы; END;
BEGIN
операторы; END.
5.1.Заголовок программы
Любая программа на языке Паскаль состоит из заголовка и тела (блока) программы. Заголовок программы включает ключевое слово PROGRAM и имя программы (по усмотрению программиста). Например,
PROGRAM IT_IS_MY_FIRST_PROGRAM;
Тело программы может включать разделы (см. выше): описание меток,
40
