Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пр1. Паскаль программа. Числовые типы.docx
Скачиваний:
2
Добавлен:
09.11.2019
Размер:
81.04 Кб
Скачать

Приведение типов

Таблица 9. Приведение типов

Функция

Тип аргумента

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

Примечание

Trunc(x)

Real

Longint

Дробная часть отбрасывается без округления

Round(x)

Real

Longint

Дробная часть отбрасывается с округлением

Int(x)

Real

Real

Дробная часть отбрасывается без округления

Frac(x)

Real

Real

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

Пусть, например, x = 5.75. Тогда trunc(x) = 5, round(x) = 6, int(x) = 5.0, frac(x) = 0.75.

Упражнения.

  1. Вычислить значения: а) trunc(6.9); б) round(6.9); в) trunc(6.2); г) round(6.2); д) trunc(-1.8); e) round(-1.8); ж) round(0.5); з) round(-0.5).

Выражения

Выражение (формула) ‑ конструкция на языке программирования, предназначенная для выполнения вычислений. Выражение состоит из операндов, объединенных знаками операций. Различают арифметические, логические и символьные выражения.

Операнд - константа, переменная или другой объект языка программирования, над которым производятся операции.

Операции могут быть унарными – с одним операндом, например, минус; могут быть бинарные – с двумя операндами, например сложение или деление.

Бинарными (или двуместными) операциями в математике и программировании называют операции, которые принимают два аргумента (операнда), как правило, одного типа, и выдают одно значение в качестве результата.

Бинарные операции, как правило, записываются в инфиксном формате, когда знак операции (оператор) ставится между операндами. Например: A + B или X / Y. При записи последовательности операций в инфиксном формате всегда возникает вопрос о порядке выполнения действий. Он решается соглашениями о приоритете операций и, при необходимости, с помощью скобок. Помимо инфиксной формы записи в программировании применяется также префиксная (польская), постфиксная (обратная польская) и функциональная нотации.

Примеры:

А * ( В + С ) — инфиксная нотация

* А + В С — префиксная нотация

А В С + * — постфиксная нотация

*(A, +(B, C)) или mult(A, sum(B, C)) — функциональная нотация

Важно! Не рекомендуется использовать в выражении величины разных типов. Хотя современные компиляторы разумно преобразуют типы при вычислениях (приводя операнды к одному типу, имеющему «больший» размер), однако здесь могут появиться трудно обнаруживаемые ошибки. Например, результатом произведения 2 * (3 / 2) будет действительное число 3.0, но, возможно, программист думал о 2 * (3 div 2) или 2 * trunc(3 / 2), что равно целому числу 2.

Упражнения.

  1. Вычислить значения выражений: а) 3 * 7 div 2 mod 7 / 3 -trunc(sin(l)); б) succ(round( 5 / 2) - pred(3)).

  2. Определить тип (целый или вещественный) выражений: a) 1 + 0.0; б) 20 / 4; в) sqr(4); г) sqr(5.0); д) sqrt(16); e) sin(0); ж) succ(-2); 3) trunc(-3.l4).

Все упражнения первого занятия

  1. Эти идентификаторы записаны с ошибками: 2E01, err$A0, coord-x, my@mail.ru, Label, Gross number, Test#1. Найдите ошибки.

  2. Составьте все не более чем двух символьные идентификаторы из буквы A и цифры 0.

  3. Составьте все не более чем двух символьные идентификаторы из буквы A и символа подчеркивания.

  4. Какие из следующих идентификаторов одинаковые: ab, ba, bA, AB, Ab, _a, _b ? Какие еще одинаковые с ab идентификаторы можно написать?

  5. Дана программа (кстати, она содержит ошибки из-за неправильного оформления):

Program Hello;{привет, значит}Var I: Integer;BeginWriteLN('Hello, World!');Write('Enter

the integer number, please ');ReadLN(I);WriteLN('You entered number greater than ', I-1, ',

namely ', I);End.

    1. Оформите ее, используя разделители и отступы.

    2. Какие зарезервированные слова использованы в программе?

    3. Сколько РАЗНЫХ операторов имеется в программе?

  1. Записать на Паскале следующие целые числа: 5!; LXIV; 1, 10 6; -5*10 3.

  2. Записать в Паскале следующие целые числа в шестнадцатеричной системе счисления: 16, 256, 1024.

  3. Записать в Паскале следующие двоичные числа в шестнадцатеричной системе счисления: 11111010, 01010101, 110111, 101010, 10000000000.

  4. Привести примеры положительных и отрицательных целых чисел, не представимых в Паскале.

  5. Почему в Паскале нельзя записать факториал от 10 в виде 10! или 1*2*3*4*5*6*7*8*9*10?

  6. Почему при записи формул на Паскале знак умножения всегда записывают явно. Например, пишут a*t, a не at?

  7. Записать на Паскале следующие формулы: a+b x+c y z; [(a x - b) x + c] x - d;

  8. Вычислите результат операций 12 div 5, 12 mod 5, 1 div 5, 1 mod 5, 5 div 5, 5 mod 5, 15 div 3, 15 mod 3, 5 div 1, 5 mod 1.

  9. Пусть m и n целые положительные числа.

    1. Запишите формулу для представления n через частное и остаток от деления n на m.

    2. Запишите формулу для представления остатка в виде разности делимого и частного.

  10. Записать на Паскале следующие действительные числа (в дробной части указать до четырех цифр): 6,38; -0,7(4); 11/4; -1/6; ; -24,8∙10 – 7; 1 / 100000.

  11. Записать следующие числа без десятичного порядка: a) -0.00027E+4; 6) 666E-3; B) lE1.

  12. Есть ли разница (с точки зрения языка Паскаль) между числами 100 и 100.0, между 20 и 2El? По какому признаку (величине или форме записи) целые числа отличаются от действительных чисел?

  13. Можно ли утверждать, что в Паскале значение, вычисленное по формуле (1 / 3) * 3 – 1 равно нулю?

  14. Указать (и исправить) неправильные записи действительных чисел: a) 0006; б) -0; в) 7,0; г) 7.; д) +0.3; e) .3; ж) 2 / 3; з) E-l; и) 8E0; к) 0E-4; .л) 2*E5; м) E.

  15. Записать в Паскале следующие формулы: ; ; . ; .

  16. Записать в общепринятой математической форме: (p + q) / (r + s) – p * q / (r * s); 1E3 + beta / (x * x – gamma * delta).

  17. Сколько операций выполняется при вычислении выражения (x + 1 / 2) * (y+ 7 /10) - 3 / 4? Как сократить количество операций?

  18. Почему в Паскале аргумент функции всегда записывают в скобках? Например, Ln(5), a не Ln5?

  19. Записать на Паскале следующие формулы: a) (l + x)2; б) ; в) |a + bx|; г) sin π / 3; .д) cos 2 x 3; e) tg x; ж) log 2 x / 5; з) ch x; и) arctg10 3 ; к) arcsin x.

  20. Для x > 0 записать на Паскале следующие формулы: a) x - 1; б) x 4; в) x - 2; г) x 5; д) x 100; e) 2 1 +  x; ж)  ; з)  .

  21. Как записать на Паскале константу e – основание натурального логарифма?

  22. Как записать на Паскале синус от x градусов?

  23. Записать в общепринятой математической форме a) (-b + sqrt(sqr(b) – 4 * a * b) / (2 * a); 6) a / b * (c + d) - (a - b) / b / c + 1E-8.

  24. Вычислить значения: а) trunc(6.9); б) round(6.9); в) trunc(6.2); г) round(6.2); д) trunc(-1.8); e) round(-1.8); ж) round(0.5); з) round(-0.5).

  25. Вычислить значения выражений: а) 3 * 7 div 2 mod 7 / 3 -trunc(sin(l)); б) succ(round( 5 / 2) - pred(3)).

  26. Определить тип (целый или вещественный) выражений: a) 1 + 0.0; б) 20 / 4; в) sqr(4); г) sqr(5.0); д) sqrt(16); e) sin(0); ж) succ(-2); 3) trunc(-3.l4).

1 Зарезервированные, служебные, ключевые – слова, использующиеся строго определенным способом.

2 В дальнейшем в тексте зарезервированные (служебные) слова выделяются полужирным шрифтом.

3 Максимальная длина строки 126 символов.

4 Для используемой системы программирования размеры данных в байтах уточните с помощью функции sizeof(<тип>)

5 Строго говоря, в программе можно использовать безымянные константы. Например, число 21 – целая константа, число 3.14 – дробная константа, ‘ERROR’ – строковая константа. Такое использование констант не рекомендуется.

6 В Паскале нет функции тангенса, но его можно вычислить по формуле sin(x)/cos(x)

Для вычисления других обратных функций используйте

arcsin(x) = arctan (x/sqrt (1-sqr (x)))

arccos(x) = arctan (sqrt (1-sqr (x)) /x)

7 Более правильное название – данные с плавающей точкой. Числа этого типа – дробные (подмножество рациональных дробей).

8Здесь приведены данные для Турбо Паскаля. Для используемой Вами системы программирования размеры данных в байтах уточните с помощью функции sizeof(<тип>). Диапазон значений и количество цифр мантиссы зависят от размера типа.

9 Результат применения этих операций - действительное число.

10 В Паскале нет функции тангенса, но его можно вычислить по формуле sin(x)/cos(x). Для вычисления других обратных функций используйте arcsin(x) = arctan (x/sqrt (1-sqr (x))) arccos(x) = arctan (sqrt (1-sqr (x)) /x)

Страница 24 из 24