Title: Лабораторная работы
Author: Alexandre Katalov
Last saved by: Dorgi
Company: Elcom Ltd

ЛАБОРАТОРНАЯ РАБОТЫ № 2
Арифметические и логические операции и выражения

Цель работы : Приобрести  навыки  использования арифметических типов данных. Создания простейших  программ на языке Паскаль
Литература : В.П. Попов TURBO PASСAL .для школьников. Версия 7.0.
Краткие теоретические сведения:
Целые(Integer, Byte, Word, Shortint, Longint) записываются в обычной форме целого числа со знаком или без знака , например 25, -24712,376 
(Real, Singl,Double,Expended)Вещественные числа с фиксированной точкой записываются в обычной форме десятичного числа с дробной частью. Разделитель целой и дробной части –точка, например : 56.346, 0.000055,-3456.00
Вещественные с плавающей точкой имеют форму: <мантисса>E<порядок>, здесь мантисса-целое или вещественное число с фиксированной точкой, порядок – целое число со знаком или без, например 7Е-2(7*10^-2),  12.25Е6(12,25*10^6),1Е-25( 10^-25)
Символьная константа( Char)-любой символ алфавита, заключенный в апострофы, например 'W', '!', '9'.
Логическая константа(Boolean)- одно из двух слов : true, false.
Строковая константа(String)- строка символов, заключенная в апострофы, например 'Turbo Pascal', 'Ответ: ', '35-45-79', 'Введите исходные данные: ', 'Сумма чисел А+В равна'. Максимальная длина -255 символов.
Арифметические операции с целыми числами :DIV -Целое часть от деления целого числа на целое число (Данная операция еще называется делением нацело, т.к. округляет результат деления путем отбрасывания дробной части); MOD-Остаток от деления целого числа на целое число. Например: 4 div 2=2, 5 div 2 = 2, 4 mod 2 = 0, 5 mod 2=1, 4 mod 10 = 4,4 div 10=0.
Математические стандартные функции
Обращение | Тип аргумента | Тип результата | Функция | Пример
PI | | R | Число π=3.1415926536Е+00 | A:=pi;
ABS(X) | I,R | I,R | Модуль аргумента Х | abs(-4)=4
ARCTAN(X) | I,R | R | Арктангенс Х(радианы) |
COS(X) | I,R | R | Косинус Х (х в радианах) |
EXP(X) | I,R | R | е^х-экспонента |
FRAC(X) | I,R | R | Дробная часть х | Frac(6.9)=0.90
INT(X) | I,R | R | Целая часть х | Int(6.9)=6.00
LN(X) | I,R | R | Натуральный логарифм Х |
RANDOM | | R | Случайное число в интервале [0..1] | A:=random; Write(a);{выйдет цифра 0.3}
RANDOM(X) | I | I | Случайное число в интервале [0..x-1] |
ROUND(X) | R | I | Округление до ближайшего целого |
SIN(X) | I,R | R | Синус Х(ч в радианах) |
SQR(X) | I,R | I,R | Квадрат Х |
SQRT(X) | I,R | R | Корень квадратный из  Х |

TRUC(X)

R

I

Ближайшее целое, не превышающее Х по модулю

Trunc(6.9)=7
Trunc(6.4)=6

Пример: запишем по правилам Паскаля математическое выражение

На Паскале (2*a+Sqrt(0.5*Sin(x+y)))/(0.2*C-Ln(x-y))

На Паскале(1+y)*(2*x+sqrt(y)-(x+y))/(y+1/sqr(x)-4))

Для вычисления степенной функции используется следующая формула:x^y=e^yln(x) На Паскале Exp(y*Ln(x)).

Например это выражение на Паскале Exp(1/3*Ln(a+1))

Таблица истинности логических операций
A | B | NOT A | A or B | A and B
TRUE | TRUE | FALSE | TRUE | TRUE
TRUE | FALSE | FALSE | TRUE | FALSE
FALSE | TRUE | TRUE | TRUE | FALSE
FALSE | FALSE | TRUE | FALSE | FALSE
Приоритет выполнения операций по старшинству:
При наличии скобок сначала выполняются действия в скобках.
1)арифметические операции: *,/,+,-
2)операции отношений: >,<,<>,=,<=,>=
3)логические операции : NOT, AND, OR,XOR.
Пример 1:
Определить результат логического выражения:
( A>3) AND ( C=5 ) OR  NOT(A+C<X )   ПРИ A=1;  C=3;  X=0
С заданными значениями переменных, входящих в логическое выражение, оно принимает вид
( 1>3 ) and ( 3=5) or  not(1+3<0)
Сначала, согласно приоритету, вычислим значение неравенства в скобках:
(False) and ( False )or  not( False)
Затем вычислим логические операции по строгому порядку NOT, AND, OR , XOR.
1)	NOT (False) равно True
2)	( False) AND (False)  равно False
3)	( False- результат 2-го действия) OR ( True- результат 1-го действия)  равно True

Ответ: ( A>3) AND ( C=5 ) OR  NOT(A+C<X ) =
            ( 1>3 ) and ( 3=5)   or  not(1+3<0)      = 
           (False) and ( False )or  not( False)       = TRUE

Порядок выполнения работы:
1. 	Включить  ПЭВМ 
2. 	Загрузить интегрированную среду TURBO PASCAL
3. 	Перейти в окно редактирования и создать текст программы:
4. 	Записать созданный текст программы в файл на диске. 
5. 	Провести компиляцию программы. Если в процессе компиляции обнаружена ошибка, ее необходимо исправить. Сохранить откорректированный файл на диске и провести компиляцию снова 
6. 	Выполнить  программу. Правильные результаты представить преподавателю и переписать в отчет .
7. 	Выйти из среды TURBO PASCAL .
Содержание  отчета:
1. 	Цель работы
2. 	Задание к лабораторной работе
3. 	Блок-схема алгоритма решения задачи 
4. 	Текст программы на языке Паскаль. 
5. 	Запись  команд сеанса  работы. 
6. 	Результаты расчетов.
7. 	Ответы на контрольные вопросы
8. 	Вывод по результатам проделанной работы
Контрольные  вопросы:
1.	Для чего используется указание типа данных величины?
2.	Как описывается тип величины в языке Паскаль?
3.	Какие типы относятся к скалярным типам?
4.	Охарактеризуйте целочисленные типы данных: какие они могут принимать значения, в каких операциях могут принимать участие, сколько места занимают в памяти?
5.	Чем отличаются вещественные числа от целых?
Задание к лабораторной работе

1.Записать математические формулы: 
а) (p+q)/ (r+s)-p*q / (r*s); 
b) 1E3+beta/(x-gamma*delta); 
c) a/b*(c+d)-(a-b)/ b / c+1E-8; 
d) Exp(1/ 30*Ln(70/ 96))
2.Записать выражение на языке Паскаль: 
a) (1+x)^2 ; 
b)[(ax-b)x+c]x-d; 
c) cos^2x^2; d) 

d)                                                  e)                                     f)                                       g)                                                           

3. Составить блок-схему  и постановку задачи по следующим программам. Перечислить служебные слова  

Program benzin;
Var  Rast:real;{расстояние до дачи}
         Rash:real;{расход бензина на 100 км пути}
         Cena:real;{цена одного литра бензина}
Sum:real;{стоимость поездки на дачу и обратно}
Begin
Writeln(‘Вычисление стоимости поездки ’);
Write(‘Расстояние до дачи (км)’);Readln(rast);
Write(‘Расход бензина (л на 100 км’);readln(rash);
Write(‘Цена литра бензина’);readln(cena);
Sum:=2*rast/100/*rash*cena;
Writeln(‘Поездка обойдется в’,sum:6:2,’руб.’);
End.

Program clock;
Var min:integer;{интервал в минутах}
           H:integer;{количество часов}
            m:integer;{количество минут}
Begin
Writeln(‘Введите величину врем-ого интерв.мин’);
Readln(min);
H:=min div 60;m:=min mod 60;
Writeln;
Writeln(min,’ мин.- это’, h ,’час.’, m ,’мин.’);
Readln;
End.

4.1.Вычислить значения логических выражений при заданных значениях переменных:
a)	(x>0) and ( y=3) or (x+y>5) and (x-y<0)  	при x=5; y=15
b)	(a<0) and(b<0) and(c<0) 			при a=5;b=-3;c=-25.3;
c)	(x>2)or(y<3)or(z=y)and(x+y+z>0)   	при  x=12;y=-20;z=0
d)	(x>0)and(y>0)or(x<0)and(y<0)		при x=-2; y=9;
e)	(x*x+y*y<49)and(x*x+y*y>1)		при x=3;y=4
f)	(A<B)and(X+A<B)or(C<M)or E		при a=15.5;b=8.2;c=-10.6;m=0;x=7;e=true/
4.2 Зимние каникулы начинаются 29 декабря и заканчиваются 12 января . Напишите условие , когда проводятся  каникулы, для обозначения номера месяца использовать M, для номера дня D.
4.3.  Напишите условие не превышения значения переменной J  числа -30
4.4. Напишите условие одновременного превышения значений переменных А и В, значения С
4.5. Напишите условия принадлежности значений переменной В диапазону чисел от L до M   .

Задачи для самостоятельного выполнения:
1.1. 	Ввести с клавиатуры 2 целых числа m. n>0. Если m делится на n или n делится на m, то вывести 1, в противном случае - любое другое  число.
1.2. 	Ввести с клавиатуры 2 целых числа m, n>0. Если n<=m, то вывести 1, в противном случае - любое другое число.
1.3. 	Если в четырехзначном числе, введенном с клавиатуры, есть одинаковые цифры, то вывести 1, в противном случае- любое другое число. 
1.4. 	Часовая стрелка образует угол alf с лучом, проходящим через центр и через точку, соответствующей 12 часам на циферблате, 0<=alf <= 360. Ввести с клавиатуры значение alf  и определить значение  угла для минутной стрелки, а также количество часов и полных минут. Указание:  на 360/12=30 градусов поворачивается часовая стрелка, передвигаясь между соседними цифрами. За это время минутная стрелка проходит целый круг, т.е. 60 минут .360/60=6 градусов –одно минутное деление. При 1 градусе часовой стрелки, минутная проходит 2 мин.деления.