Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МЕТОДРАЗРАБОТКА ИНФОРМАТИКА ПАСКАЛЬ_p.doc
Скачиваний:
6
Добавлен:
07.05.2019
Размер:
503.81 Кб
Скачать

Взаимные преобразования чисел

Если переменной типа R присваивается значение типа Integer, то целое значение автоматически преобразуется в вещественный эквивалент, но переменной типа Integer нельзя присваивать вещественное значение. Таким образом, если Count — переменная типа Integer то каждый из приведенных в примере операторов присваивания вызовет ошибки вида «несоответствие типов»

Пример.

Count = 3.14

Count = SQRT(2)

Count = 0.5

Ясно, что переменная типа Integer не может принять значения 0,5, так как 0,5 не имеет соответствующего целочисленного эквивалента. Поэтому соответствующий оператор присваивания вызовет ошибку при выполнении программы (конечно, если Count описана как переменная типа Real, то оператор присваивания приемлем).

Чтобы обойти это ограничение, используют функции преобразования типов. Эти функции используют в качестве аргументов переменные типа Real и преобразуют их в целочисленные значения:

TRUNC(x) результат — целая часть х.

ROUND(x) результат — значение, округленное до ближайшего целого.

Различны ли эти функции? В некоторых случаях они дают одинаковые значения. При х = 3.2 и TRUNC, и ROUND дадут значение 3. Но при х = 3.6 функция TRUNC даст значение 3, в то время как ROUND возвращает значение 4. Это объясняется тем, что функция ROUND анализирует дробную часть аргумента, чтобы решить, округлять х до ближайшего большего или до ближайшего меньшего целого значения, в то время как TRUNC просто отбрасывает дробную часть.

Примеры:

TRUNC

ROUND

TRUNC (5.8) = 5

ROUND (5.8) = 6

TRUNC (3.14) = 3

ROUND (3.14) = 3

TRUNC (-7.7) = -7

ROUND (-7.7) = -8

Целые и вещественные переменные можно использовать одновременно в одном арифметическом выражении. Если некоторый операнд выражения имеет тип REAL, то и все выражение будет иметь тип REAL. Вещественные функции, подобные SQRT(x), всегда возвращают вещественный результат. Это означает, что функция SQRT(4) возвращает вещественное значение 2.0, а не целое 2.

Задача. Вычислить значение функции

var a,b,x,y:real;

begin

a:=1;

b:=1.71;

x:=42;

y:=sqrt(abs(cos(x)+ln(a)-b));

writeln('y=',y:8:5);

end.

Litebulb

Контрольные вопросы по теме «Основы языка программирования Паскаль»

  1. Какие типы величин используются в языке программирования Паскаль?

  2. Какой тип данных используется для хранения целых чисел? А для дробных?

  3. Укажите диапазон значений величин целого и действительного типов.

  4. Какие имена переменных допустимы в программе? Как задать тип переменной в программе?

  5. Что следует сделать, если в программе используется величина, не изменяющаяся за все время работы программы?

  6. В чем отличие между операциями mod, div и /?

  7. Зачем нужны функции trunc и round? В чем между ними разница?

  8. Какое максимальное значение может принимать переменная типа integer? Что делать, если необходимо сохранить целое число, в 10 раз большее этого значения?

  9. Как записать на Паскале «2,5 в степени 16,7»?

  10. Что означает запись «1Е5», «ЗЕ-4», «.2Е7»?

  11. Что нужно использовать, чтобы изменить приоритет выполнения математических операций?

  12. Чему равно и какой тип данных имеет выражение trunc(sqrt(2+52 div 8))-sqr(15 mod 4/3)?

  13. Указать имена стандартных функций для вычисления

  14. Можно ли в качестве операнда в арифметическом выражении использовать:

а) имя массива;

б) имя стандартной функции, например Sin(y);

в) имя символьной переменной или переменной логического типа?

  1. Назвать последовательность действий при выполнении арифметического оператора присваивания

  2. Написать арифметический оператор присваивания для вычисления значения:

  3. Указать старшинство выполнения операций при вычислении арифметического выражения.

  4. Указать средства, имеющиеся в языке программирования для управления размещением данных на строке.

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

  6. Как выбрать значения исходных данных для тестового варианта счета?