Что значит переменная вещественного типа

#4 Real Вещественный тип данных в Паскаль. Неявное приведение типа. Примеры

Primary tabs

Forums:

Вещественный тип данных

Тип Real служит для описания и хранения данных, являющихся вещественными числами.

Переменные типа Real

Переменные типа real могут быть объявлены стандартным способом (подобно integer):

Таким переменным можно присваивать литералы вещественных чисел:

А также результаты любых арифметических выражений:

Сравнение с Real с Integer

Выражения, возвращающие Integer

Если значение арифметического выражения присваивается переменной типа integer, то в него должны входить только:

  • целочисленные литералы
  • или целочисленные переменные.
  • Над указанными операндами должны выполняться операции (только эти — без операции деления):
    1. $+$ суммы (сложения)
    2. $-$ разности (вычитание)
    3. $*$ произведения (умножение)

Выражения, возвращающие Real

Если результат некоего арифметического выражения присваивается переменной типа real, то в это выражения могут входить любые операнды и целого и вещественного типа и над ними могут выполняться все четыре операции:

  1. $+$ суммы (сложения)
  2. $-$ разности (вычитание)
  3. $*$ произведения (умножение)
  4. $/$ деление («отношение»)

Можно сказать что тип, который возвращается выражением (тип его результата) определяется двумя моментами:

  1. типом операций (допустимые перечислены выше)
  2. типом операндов

Неявное приведение (преобразование) типа

Неявное приведение типа — это процесс преобразования типа без каких-то особо записанных в коде инструкций, которые бы явно указывали на то, что выполняется преобразование.

Когда неявное приведение имеет место быть

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

  1. В ходе операции присваивания — когда переменной типа real присваивается любое значение типа integer.
    Например:
  2. В ходе вычисления значения арифметического выражения, если хотя бы один из операндов (или результатов подвыражения, оказавшимся операндом) имеет тип real.

О втором случае поговорим подробнее.

Если в арифметическом выражении присутствуют целые числа (переменные, литералы или результаты подвыражений типа integer) и эти числа участвуют в одной операции с типом real, то:

  1. сначала целые числа будут приведены Паскалем к типу real (так как real может хранить любые данные типа integer, а обратное не верно)
  2. а затем уже будет вычислен результат арифметической операции, который тоже будет иметь тип real

Пусть у нас есть выражение:

— этом случае вычисления будут проходить так («под капотом» языка Паскаль):

— знание этой особенности позволяет правильно определить тип переменной для хранения результата выражения.

Что к чему приводится неявно

Если в арифметических выражениях если неявное приведение типа имеет место быть, то это всегда приведения integer к real как к более широкому и универсальному классу чисел.

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

Присваивание несовместных типов. Что и чему можно присваивать

В операции присваивания оба операнда, должны , то есть переменная слева от оператора присваивания должна обладать тем же типом, что и значение справа от оператора присваивания (справа при этом, как мы говорили выше, могут быть данные любого вида — литералы, переменные или целые выражения).

Рассмотрим примеры присваивания переменным значений с комментариями, показывающими в каких строках ошибка:

Вывод вещественных чисел на экран

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

В некоторых реализациях Паскаля, при выводе на экран может использоваться экспоненциальная форма записи числа, то есть дробное число записывается (две особенности):

  1. в виде некоторого числа (обычно с одной цифрой в целой части), умноженного на $10$ в какой-то степени (вещественное число всегда подразумевается обладающим дробной частью, просто иногда она равна нулю, тогда число называют целым).
  2. вместо множителя $10$ используют букву $E$.

Примеры экспоненциальной записи чисел

  • Так, например число $125.35$:
    $$125.35 = 1.2535 * 100 = 1.2535 * 10^<2>$$
    в экспоненциальной форме может выглядеть так:
  • А число, скажем, $0.005567$:
    $$0.005567 = 5.567 / 1000 = 5.567 / 10^3 = 5.567 * 10^ <-3>$$
    в экспоненциальной форме может быть записано как:

Разбор задач

Пример №1

Пусть есть задача:

Выведите на экран произведение чисел $5$ и $7.3$

Самое простое решение:

Хотя по хорошему выводить данные с пояснениями, например используя в качестве первого аргумента литерал:

Или пример с выводом произведения переменных:

— тут вторым аргументом процедуры writeln() оказывается арифметическое выражение.

Ну и наконец, если требуется дополнительно записать результат арифметического выражения в переменную и уже потом вывести её значение, то:

Пример №2

Пусть есть задача:

Присвойте трем переменных значения $34$, $36.7$ и $7.3$, в четвертую переменную запишите разность между произведением первой и второй переменной и суммой второй и третей и выведете её значение на экран.

Для переменной $d$ нам пришлось использовать тип real, так как выражении:

две переменные были вещественного типа, а значит переменная $a$ тоже была бы неявно приведена к вещественному типу (а её значение 34 к 34.0) и результат выражения имел вещественный тип, а присваивать результат вещественного типа переменной целого типа нельзя (об этому говорилось в этом уроке выше и в предыдущем уроке), как как в этом случае неявное преобразование для присваивания не сработает (см. выше первый случай когда имеет место быть неявное преобразование типов).

Видео-пояснения

Для данного урока есть следующие видео:

Вопросы & Задачи

Теоретические вопросы:

  1. Что такое операнд? Приведите примеры операндов и операций.
  2. Для чего нужен тип real?
  3. Что такое неявное приведение типа и когда оно работает?
  4. Происходит ли приведение типа в выражениях (по каждому ответьте отдельно):

— поясните почему, также скажите какого типа будет результат каждого из этих выражений

  • Что такое экспоненциальная форма записи числа? Запишите в такой форме числа:
    • 0.00045
    • 154567.34
    • 2.345

    Источник

    Вещественные типы переменных

    Begin

    End.

    При написании программы на языке Турбо Паскаль будем придерживаться следующей схемы:

    1) зарезервированные слова program, procedure, begin, end и т.д. пишутся строчными буквами;

    2) имена констант, переменных, процедур, функций начинаются с прописных букв;

    3) операторы записываются только строчными буквами;

    4) логически подчиненные структуры записываются на одну строку ниже и на 1-2 позиции правее по отношению к более старшим.

    Раздел описания состоит в общем случае из шести следующих разделов:

    1) список имен подключаемых библиотечных модулей (определяется словом uses);

    2) описание меток (label);

    3) описание констант (const);

    4) определения типов данных (type);

    5) описание переменных (var);

    6) описание процедур и функций.

    Любой из этих разделов может отсутствовать. Вообще разделы описаний (кроме uses) могут встречаться в программе произвольное количество раз и следовать в любом порядке. Мы будем пользоваться выше указанным порядком.

    Рассмотрим некоторые разделы более подробно.

    1) Раздел uses. Данный раздел состоит из зарезервированного слова uses и списка подключаемых стандартных и пользовательских библиотечных модулей. Структура: uses , ;.

    Например, uses crt, graph; где crt – модуль стандартной библиотеки, graph – графический модуль.

    2) Раздел описания const. В этом разделе производится присваивание идентификаторам констант постоянных значений. Раздел начинается служебным словом const, за которым следует выражений, присваивающих идентификаторам постоянные числовые или строковые значения.

    Структура: const = ;.

    Например, const A=50; B=text;

    3) Раздел описания переменных. Переменные величины, которые могут менять свои значения в процессе выполнения программы. Тип переменных должен быть задан, перед тем как с переменными будут выполняться какие либо действия. Этим мы объявляем, какие ячейки памяти собираемся использовать для хранения данных в своей программе. Переменные могут быть описаны как: целочисленные, символьные, логические, вещественные. Раздел описания переменных начинается зарезервированным словом var, затем через запятую перечисляются имена переменных и через двоеточие их тип.

    Структура: var : ;.

    Например, var A1, A2, B, C, D: real;

    2.1.2. Типы переменных.

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

    Целочисленные типы переменных

    Тип Диапазон Требуемая память
    byte 0..255
    shorint -128..127
    integer -32768..32767
    word 0..65535
    longint -2147483648..2147483647

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

    Вещественные типы переменных

    Тип Диапазон Мантисса Требуемая память
    real 2.9*10E-39..1.7*10E38 11-12
    single 1.5*10E-45..3.4*10E38 7-8
    double 5.0*10E-324..1.7*10E308 15-16

    Вещественные значения могут изображаться в форме с фиксированной точкой, например 7.32, 456.721 или 0.015, а также в форме с плавающей точкой, т.е. парой чисел вида Е : 7.32Е+00, 4.56721Е+02, 1.5Е-02.

    Символьный тип char определяется множеством значений кодовой таблицы ПЭВМ. Для размещения в памяти переменной символьного типа требуется 1 байт. в программе значения переменных и констант типа char должны быть заключены в апострофы. например, ‘А’ обозначает букву А, ‘ ‘ – пробел, ‘;’ – точка с запятой.

    Переменные логического (булевского) типа могут принимать только два значения: True (истина) и False (ложь).Широко используются в логических выражениях и выражениях отношений. При описании величин этого типа указывают слово Boolean. Для размещения в памяти переменной булевского типа требуется 1 байт.

    2.1.3. Математические функции и операции.

    В Паскале используются арифметические операции: — сложение, — вычитание, — умножение, — деление. Целая часть вещественного числа отделяется от дробной части «точкой», например, 0.325, -12.34.

    Математические функции и операции:

    Запись на математическом языке Запись на языке Паскаль Примечания
    A+B A+B Сумма переменных целого типа есть переменная целого типа; сумма вещественных переменных, или вещественных и целых есть вещественная переменная
    А-В А-В Разность переменных целого типа есть переменная целого типа; Разность вещественных переменных, или вещественных и целых есть вещественная переменная
    А*В А*В Умножение переменных целого типа есть переменная целого типа; Умножение вещественных переменных, или вещественных и целых есть вещественная переменная.
    А:В А/В В результате деления всегда получается вещественное число.
    А 2 sqr(A) Возведение во вторую степень целого числа дает целое число, а вещественного – вещественное.
    sqrt(A) В результате этой функции всегда получается вещественное число.
    ln(A) ln(A) В результате этой функции всегда получается вещественное число.
    Запись на математическом языке Запись на языке Паскаль Примечания
    ln(X)/ln(b) В результате этой функции всегда получается вещественное число.
    e X exp(X) В результате этой функции всегда получается вещественное число.
    A n =e n*ln(A) exp(n*ln(A)) В результате этой функции всегда получается вещественное число.
    sin(X) sin(X) В результате этой функции всегда получается вещественное число.
    cos(X) cos(X) В результате этой функции всегда получается вещественное число.
    arctg(X) arctan(X) В результате этой функции всегда получается вещественное число.
    arcsin(X) arctan(X/sqrt(1-sqr(X))) В результате этой функции всегда получается вещественное число.
    arcos(X) arctan(sqrt(1-sqr(X))/X) В результате этой функции всегда получается вещественное число.
    tg(X) sin(X)/cos(X) В результате этой функции всегда получается вещественное число.
    ctg(X) cos(X)/sin(X) В результате этой функции всегда получается вещественное число.
    arcctg(X) 1/arctan(X) В результате этой функции всегда получается вещественное число.
    Вычисление остатка при делении нацело А mod B В результате получается всегда целое число. 5 mod 2=1 6 mod 2=0
    Целочисленное деление A div B В результате получается всегда целое число. 5 div 2=2 6 div 2=3
    Округление до ближайшего целого round(x) В результате получается всегда целое число. round(5.6)=6 round(5.3)=5
    Выделение целой части числа trunc(x) В результате получается всегда целое число. trunc(5.6)=5 trunc(5.3)=5
    |A| abs(A)

    2.1.4. Оператор вывода.

    Для вывода на экран текста или результатов каких-либо вычислений используются операторы вывода. Графически оператор изображается в виде параллелограмма:

    Оператор вывода производит вывод числовых данных, символов, строк и булевских значений.

    Структура оператора вывода:

    write (список переменных или текст);

    writeln (список переменных или текст);

    Оператор writeln (список переменных или текст);после вывода автоматически переводит курсор на следующую строку.

    При выводе какого-либо текста или сообщения его нужно располагать в одинарных апострофах. Например,

    writeln (‘информатика’);

    write (‘a=’);

    Оператор writeln, записанная без параметров, вызывает перевод строки (вставка пустой строки).

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

    Источник

    Читайте также:  Накручиваю себя что это значит
  • Оцените статью