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

Методичка Программирование

.pdf
Скачиваний:
35
Добавлен:
13.03.2016
Размер:
3.61 Mб
Скачать

первой константы меньше второй. Они являются целочисленными или символьными, например:

var

а,b,с: -7..4; х: "а"..'с' ;

Как и в случае перечислимого типа, можно предварительно ввести тип данных с помощью служебного слова type, а затем описывать переменные.

Каждая переменная интервального типа занимает 1 байт.

К структурированным типам данных относят массивы, строки, записи, файлы, множества.

Арифметические операции, применяемые в Delphi, приведены в табл. 3. Таблица 3

Арифметические операции

Операция

Действие

Тип операндов

Тип результата

+

Сложение

Целый,

Целый,

 

 

вещественный

вещественный

-

Вычитание

Целый,

Целый,

 

 

вещественный

вещественный

*

Умножение

Целый,

Целый,

 

 

вещественный

вещественный

/

Деление

Целый,

Вещественный

 

 

вещественный

 

Div

Деление нацело

Целый

Целый

Mod

Остаток от деления

Целый

Целый

And

И

Целый

Целый

Shl

Сдвиг влево

Целый

Целый

Shr

Сдвиг вправо

Целый

Целый

Or

Или

Целый

Целый

Xor

Исключающее или

Целый

Целый

Кроме обычных арифметических операций в Delphi присутствуют операции целочисленной и битовой арифметики.

Кцелочисленной арифметике относят:

целочисленное деление div;

вычисление остатка от деления mod.

При целочисленном делении операция div возвращает целую часть частного (дробная часть отбрасывается), а операция mod – остаток от деления.

11 mod 4 = 3;

11 div 4 = 2.

В операциях битовой арифметики действия происходят над двоичным представлением целых чисел.

Арифметическое И (and). Сначала оба операнда переводятся в двоичную систему, затем над ними происходит логическое поразрядное умножение операндов по следующим правилам:

21

1 and 1 = 1;

1 and 0 = 0;

0 and l = 0;

0 and 0 = 0.

Арифметическое ИЛИ (or). Оба операнда переводятся в двоичную систему, после чего над ними происходит логическое поразрядное сложение операндов по следующим правилам:

1 or 1 = 1;

1 or 0 = 1;

Оor 1 = 1;

Оor 0 = 0.

Арифметическое исключающее ИЛИ (xor).

Оба операнда опять же переводятся в двоичную систему, затем над ними происходит логическая поразрядная операция хоr по следующим правилам:

1 xor 1=0;

1 xor 0=1;

0 xor 1=1;

0 xor 0=0.

Арифметическое отрицание (not). Выполняется над одним операндом. Применение операции not вызывает побитную инверсию двоичного представления числа.

Сдвиг влево (M shl L). Двоичное представление числа М сдвигается влево на L позиций, операция М shl L эквивалентна умножению числа M на 2L.

Сдвиг вправо (М shr L). Двоичное представление числа М сдвигается вправо на L позиций, что эквивалентно целочисленному делению числа М на 2L Сравнение. Операции отношения выполняют сравнение двух операндов и определяют истинность или ложность выражения. Их результат – логический. Определены следующие операции отношения: <, >, =, <= ,>= ,<>. Логические операции выполняются над логическими данными. Определены логические

операции, перечисленные в табл. 4.

Таблица 4

Логические операции

А

В

Not A

A and В

A or В

true

true

false

true

true

true

false

false

false

true

false

true

true

false

true

false

false

true

false

false

В логических выражениях используются логические и арифметические операции отношения.

Порядок, в котором выполняются операции, соответствует приоритету операций. В Delphi приняты приоритеты (табл. 5).

22

 

Приоритет операций

Таблица 5

 

 

Приоритет

Описание

Операции

Первый(высший)

Унарные операции

+, -, not, @, ^, #

Второй

Операции, эквивалентные

*, /, div, mod, and,

 

умножению

shl, shr

Третий

Операции, эквивалентные сложению

+,-, or, xor

Четвертый

Операции сравнения

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

 

 

>=, in

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

В Delphi определены стандартные функции над арифметическими операндами (табл. 6).

 

 

 

 

 

Таблица 6

 

Некоторые стандартные функции

Обозначение

Тип

Тип результата

 

 

Действие

 

аргументов

 

 

 

 

Abs(X)

Целый,

Целый,

Модуль числа

 

вещественный

вещественный

 

 

 

Sin(X)

Вещественный

Вещественный

Функция синус

Cos(X)

Вещественный

Вещественный

Функция косинус

Arctan(X)

Вещественный

Вещественный

Арктангенс

Pi

-

Вещественный

Возвращает число Пи

Exp(X)

Вещественный

Вещественный

ex

Ln(X)

Вещественный

Вещественный

Функция натурального

 

 

 

логарифма x

Sqr(X)

Вещественный

Вещественный

x2

Sqrt(X)

Вещественный

Вещественный

 

 

 

 

x

Int(X)

Вещественный

Вещественный

Целая часть числа x

Frac(X)

Вещественный

Вещественный

Дробная часть числа x

Round(X)

Вещественный

Целый

Округление числа x

Trunc(X)

Вещественный

Целый

Отсекание дробной части

 

 

 

числа x

Random

 

Вещественный

Случайное число от 0 до 1

Random(n)

Целый

Целый

Случайное число от 0 до n

В программе может быть несколько разделов описания констант, переменных и т.п. Структуру программы на Object Pascal (консольное приложение) можно представить следующим образом:

program имя_программы; const описания_констант; type описания_типов; var описания_переменных; begin

23

операторы_языка; end.

Тело программы начинается со слова begin, затем следуют операторы языка Object Pascal, реализующие алгоритм решаемой задачи. Операторы в языке Object Pascal отделяются друг от друга точкой с запятой и могут располагаться в одну строчку или начинаться с новой строки. Тело программы заканчивается служебным словом end. с точкой. Рекомендуется размещать операторы по одному в строке:

В текст программы на Паскале могут быть включены комментарии в фигурных скобках

{ комментарий } или в круглых скобках в сопровождении символа «*», т.е.

(* комментарий *).

Они предназначены для пояснения отдельных частей программы и игнорируются в процессе ее выполнения.

program one; const а=7; var b,c: real; begin

c:=a+2; b:=c-a*sin(a) end.

Ввод информации осуществляется с помощью оператора read или readln. read (x1,x2,…,xn);

или

readln (x1,x2,…,xn);

где x1,x2,…,xn – список вводимых переменных.

Когда в программе встречается оператор read, ее действие приостанавливается до тех пор, пока не будут введены данные. При вводе числовых значений два числа считаются разделенными, если между ними есть хотя бы один пробел, символ табуляции или символа конца строки (Enter). После ввода последнего значения следует нажать Enter.

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

Для вывода информации (чисел, строк и булевых значений) на экран дисплея служат операторы write и writeln. В общем случае они имеют вид:

write(x1,x2,…,xn);

writeln(x1,x2,…,xn);

где x1,x2,…,xn – выводимые переменные или константы (x1,x2,…,xn не могут быть перечислимого типа).

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

В операторах write (writeln) можно указать константу или выражение целочисленного типа, определяющую ширину поля вывода. Для целых и

24

строковых выражений она указывается через двоеточие после имени выводимой переменной или выражения, например:

var

a: string[15]; b,с: integer; d: word; begin readln(c,b); readln(a); readln(d); writeln(a:18);

writeln(c:6,b:5,d:7);

end.

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

Составным оператором называют группу операторов, отделенных друг от друга точкой с запятой, начинающихся со служебного слова begin и заканчивающихся служебным словом end.

begin

оператор_1; оператор_n end;

Транслятор воспринимает составной оператор как единый.

Задание

Задание A

Необходимо подсчитать значение выражения (y) при заданном x. Возвести полученное значение в куб (y3) и вывести модуль числа y.

Задание B

Предложить пользователю ввести координаты точки, определить входит ли точка с заданными пользователем координатами в заштрихованную область.

Задание C

Вычисление площади поверхности цилиндра по высоте h и радиусе r.

Образец выполнения задания

 

Задание A

 

Необходимо подсчитать значение выражения y sin(x) 1

1

 

при

x3 1

 

 

x = 3.11. Возвести полученное значение в куб (y3) и вывести модуль числа y.

Текст программы:

var x,y,y3:real; begin

x:=3.11; y:=sin(x)-1/(x*x*x-1);

25

y3:=sqr(y)*y;

writeln(Rus('Начальное значение X='),x:6:4); writeln(Rus('Вычисленное значение Y='),y:6:4); writeln(Rus('Вычисленное значение Y^3='),y3:6:4); writeln(Rus('Абсолютное значение Y='),Abs(y):6:4); Readln;

end.

Рис. 4. Результат работы программы A

Задание B

Предложить пользователю ввести координаты точки, определить входит ли точка с заданными пользователем координатами в заштрихованную область.

Область принадлежности состоит из двух прямоугольных треугольников, т.к. они симметричны относительно оси OY, решение можно упростить, если в составляемом уравнении использовать модуль X (|X|). Необходимо найти уравнение прямой проходящей через точки (0;3) и (2;0) (см. рисунок). Найти уравнение можно, решив систему уравнений, построенную на основе общего уравнения прямой: y = k · x + b, где вместо X и Y подставляются соответствующие значения. Условие принадлежности должно быть таким: Y >= 0 и Y <= -1,5 · |X| + 3.

Текст программы: var x,y:real; begin

writeln(Rus('Введите X и Y через пробел')); readln(x,y);

if ((Y>=0) and (y<=-1.5*abs(x)+3)) then writeln(Rus('принадлежит'))

else

writeln(Rus('не принадлежит')); readln;

end.

26

Рис. 4. Результат работы программы B

Задание C

Вычисление площади поверхности цилиндра по высоте h и радиусе r.

Для вычисления площади поверхности цилиндра необходимо запросить у пользователя высоту цилиндра и радиус основания. Площадь поверхности можно вычислить по формуле P 2 r2 2 r h.

var r,h,P:real; begin

write(Rus('Введите высоту цилиндра (см): ')); readln(h);

write(Rus('Радиус основания цилиндра (см): ')); readln(r);

if ((h<=0) or (r<=0)) then //цилиндр должен существовать!

begin

writeln(Rus('Параметры должны быть положительными!'));

end else

begin P:=2*pi*r*(r+h);

writeln(Rus('Площадь поверхности: '),P:0:3,Rus(' см2'));

end;

readln;

end.

Рис. 5 Результат работы программы C

Варианты домашних заданий

1.

a) Y sin(x) x3 1 при x = 5.137; x2 1

27

b) ;

c)вычисление площади поверхности параллелепипеда со сторонами a, b, c.

2.

1

a) Y x x3 x 2 при x = 0.675;

b) ; c) вычисление площади трапеции с основанием a,b.

3.

a) Y x4 cos(arcsin(x)) при x = 0.051;

b) ; c) вычисление объема цилиндра радиусом z и высотой h.

4.

a) Y 3x2 x x5 при x = 7.873;

28

b) ;

c)вычисление площади равнобедренного треугольника по стороне a и высоте h.

5.

a) Y tg(x) 5 x4 при x = –3.777; x

b) ;

c)вычисление площади поверхности пирамиды (основание квадрат) по стороне a и высоте h.

6.

a) Y 25 x x2 x при x = 25.144;

29

b) ; c) вычисление площади круга по окружности c.

7.

a) Y 5x4 x3 ctg(x2) при x = –5.133;

b) ; c) вычисление объема конуса по окружности c и высоте h.

8.

a) Y | x3 1| 7 cos(3x4 x) при x = 10.237;

30