- •Паскаль программа
- •Алфавит языка
- •Идентификаторы
- •Структура программы
- •Синтаксис и семантика заголовка
- •Синтаксис и семантика раздела описаний
- •Раздел операторов
- •Правила оформления программы
- •Правила выполнения программы
- •Типы данных Понятие типа
- •Константы и переменные
- •Данные целого типа
- •Операции с данными целого типа
- •Данные действительного типа7
- •Операции с данными действительного типа
- •Возведение в степень
- •Приведение типов
- •Выражения
Приведение типов
Таблица 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.
Упражнения.
Вычислить значения: а) 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.
Упражнения.
Вычислить значения выражений: а) 3 * 7 div 2 mod 7 / 3 -trunc(sin(l)); б) succ(round( 5 / 2) - pred(3)).
Определить тип (целый или вещественный) выражений: a) 1 + 0.0; б) 20 / 4; в) sqr(4); г) sqr(5.0); д) sqrt(16); e) sin(0); ж) succ(-2); 3) trunc(-3.l4).
Все упражнения первого занятия
Эти идентификаторы записаны с ошибками: 2E01, err$A0, coord-x, my@mail.ru, Label, Gross number, Test#1. Найдите ошибки.
Составьте все не более чем двух символьные идентификаторы из буквы A и цифры 0.
Составьте все не более чем двух символьные идентификаторы из буквы A и символа подчеркивания.
Какие из следующих идентификаторов одинаковые: ab, ba, bA, AB, Ab, _a, _b ? Какие еще одинаковые с ab идентификаторы можно написать?
Дана программа (кстати, она содержит ошибки из-за неправильного оформления):
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.
Оформите ее, используя разделители и отступы.
Какие зарезервированные слова использованы в программе?
Сколько РАЗНЫХ операторов имеется в программе?
Записать на Паскале следующие целые числа: 5!; LXIV; 1, 10 6; -5*10 3.
Записать в Паскале следующие целые числа в шестнадцатеричной системе счисления: 16, 256, 1024.
Записать в Паскале следующие двоичные числа в шестнадцатеричной системе счисления: 11111010, 01010101, 110111, 101010, 10000000000.
Привести примеры положительных и отрицательных целых чисел, не представимых в Паскале.
Почему в Паскале нельзя записать факториал от 10 в виде 10! или 1*2*3*4*5*6*7*8*9*10?
Почему при записи формул на Паскале знак умножения всегда записывают явно. Например, пишут a*t, a не at?
Записать на Паскале следующие формулы: a+b x+c y z; [(a x - b) x + c] x - d;
Вычислите результат операций 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.
Пусть m и n целые положительные числа.
Запишите формулу для представления n через частное и остаток от деления n на m.
Запишите формулу для представления остатка в виде разности делимого и частного.
Записать на Паскале следующие действительные числа (в дробной части указать до четырех цифр): 6,38; -0,7(4); 11/4; -1/6; ; -24,8∙10 – 7; 1 / 100000.
Записать следующие числа без десятичного порядка: a) -0.00027E+4; 6) 666E-3; B) lE1.
Есть ли разница (с точки зрения языка Паскаль) между числами 100 и 100.0, между 20 и 2El? По какому признаку (величине или форме записи) целые числа отличаются от действительных чисел?
Можно ли утверждать, что в Паскале значение, вычисленное по формуле (1 / 3) * 3 – 1 равно нулю?
Указать (и исправить) неправильные записи действительных чисел: a) 0006; б) -0; в) 7,0; г) 7.; д) +0.3; e) .3; ж) 2 / 3; з) E-l; и) 8E0; к) 0E-4; .л) 2*E5; м) E.
Записать в Паскале следующие формулы: ; ; . ; .
Записать в общепринятой математической форме: (p + q) / (r + s) – p * q / (r * s); 1E3 + beta / (x * x – gamma * delta).
Сколько операций выполняется при вычислении выражения (x + 1 / 2) * (y+ 7 /10) - 3 / 4? Как сократить количество операций?
Почему в Паскале аргумент функции всегда записывают в скобках? Например, Ln(5), a не Ln5?
Записать на Паскале следующие формулы: 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.
Для x > 0 записать на Паскале следующие формулы: a) x - 1; б) x 4; в) x - 2; г) x 5; д) x 100; e) 2 1 + x; ж) ; з) .
Как записать на Паскале константу e – основание натурального логарифма?
Как записать на Паскале синус от x градусов?
Записать в общепринятой математической форме a) (-b + sqrt(sqr(b) – 4 * a * b) / (2 * a); 6) a / b * (c + d) - (a - b) / b / c + 1E-8.
Вычислить значения: а) 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).
Вычислить значения выражений: а) 3 * 7 div 2 mod 7 / 3 -trunc(sin(l)); б) succ(round( 5 / 2) - pred(3)).
Определить тип (целый или вещественный) выражений: 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)
Страница