Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Операция указания области видимости

Поиск

:: операция указания области видимости имеет две формы: бинарную и унарную. Бинарная форма применяется для до­ступа к компоненту класса. Унарная операция '::' позво­ляет получить доступ к внешней для некоторой функции именованной области памяти.

#include <iostream.h>

int k = 15;

void main()

{

int k = 10;

cout << "Внешняя переменная k="<<::k;

cout << "\nВнутреняя переменная k="<< ++k;

}

Операция последовательного вычисления

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

cout << "Выражение d = 4, d*2 равно "<< (d=4, d*2);   

// выведет 8

cout << "d равно "<< d;         // выведет 4

 

Условная операция

В языке СИ имеется одна тернарная операция - условная операция, которая имеет следующий формат:

операнд-1? операнд-2: операнд-3

Операнд-1 должен быть целого или вещественного типа или быть указателем. Он оценивается с точки зрения его эквивалентности 0. Если операнд-1 не равен 0, то вычисляется операнд-2 и его значение является результатом операции. Если операнд-1 равен 0, то вычисляется операнд-3 и его значение является результатом операции. Следует отметить, что вычисляется либо операнд-2, либо операнд-3, но не оба.

Константы – неизменяемые величины. Различают целые, вещественные, символьные и строковые константы. Тип константы определяется её записью.

Константы делятся на пять групп: целые, вещественные (с пла­вающей точкой), перечислимые, символьные (литерные) и строковые (строки или литерные строки). Перечислимые константы проект стан­дарта языка Си++ относит к одному из целочисленных типов.

Компилятор, выделив константу в качестве лексемы, относит её к той или другой группе, а внутри группы - к тому или иному типу дан­ных по ее "внешнему виду" (по форме записи) в исходном тексте и по числовому значению.

Целая константа может быть записана в восьми, 10-, шестнадцатиричном формате. В 10-ричном формате константы начинаются не с нуля (8, 10, 0, 7, 15 и т.д.). В восьмиричном формате константа начинается с нуля, далее следуют восьмиричные цифры (01, 07, 0701 и т.д.). В шестнадцатиричном формате константа начинается с 0X (0XA, 0X777, 0X1 и т.д.).

Вещественная константа может быть записана в следующем виде:

[цифры].[цифры]

Например: 2.2 или.01 и т.д.

или в экспоненциальной форме

Записывается в виде:

[цифры][.][ цифры]{E|e}[+|-][ цифры]

Примеры записи:

0.2E5

.1e-5

10E5

Символьная константа – один или более символов в апострофах.

Примеры:

`A’ `\n’ `\0’ `\0x17’ и др.

Символьные константы, состоящие из одного символа, занимают в памяти один байт и имеют стандартный тип char. Двухсимвольные константы занимают два байта и имеют тип int, при этом первый символ размещается в байте с меньшим адресом.

Символ обратной косой черты используется для представления:

- кодов, не имеющих графического изображения (например, \а — звуковой сигнал, \n — перевод курсора в начало следующей строки);

- символов апострофа ('), обратной косой черты (\), знака вопроса (?) и кавычки (");

- любого символа с помощью его шестнадцатеричного или восьмеричного кода, например, \073, \0xF5. Числовое значение должно находиться в диапазоне от 0 до 255.

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

В таблице 21.1 приведены их допустимые значения. Управляющая последовательность интерпретируется как одиночный символ. Если непосредственно за обратной косой чертой следует символ, не предусмотренный таблицей 21.1, результат интерпретации не определен. Если в последовательности цифр встречается недопустимая, она считается концом цифрового кода.

 

Таблица 21.1 - Управляющие последовательности

Запись Код шестнадцатеричный Название
\a 7 Звуковой сигнал
\b 8 Возврат на шаг
\f C Перевод страницы(формата)
\n A Перевод строки
\r D Возврат каретки
\t 9 Горизонтальная табуляция
\v B Вертикальная табуляция
\\ 5C Обратная косая черта
\’ 27 Апостроф
\” 22 Кавычка
\? 3F Знак вопроса
\0ddd - Восьмеричный код символа
\0xddd ddd Шестнадцатеричный код символа

 

Приведенные управляющие константы используются в строковых константах.

Строковые константы – последовательность символов, взятых в кавычки.

Примеры:

“Привет”

 “\n y=%d x=%d”

 “фирма \“Гарант\” ”

Все строковые литералы рассматриваются компилятором как различные объекты. Строковые константы, отделенные в программе только пробельными символами, при компиляции объединяются в одну.

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

Например, строка

"Условие задачи: \

найти сумму положительных чисел, \

делящихся на 2"

полностью эквивалентна строке

"Условие задачи: найти сумму положительных чисел, делящихся на 2"

В конец каждого строкового литерала компилятором добавляется нулевой символ, представляемый управляющей последовательностью \0. Поэтому длина строки всегда на единицу больше количества символов в ее записи. Таким образом, пустая строка "" имеет длину 1 байт.

Разница между строкой из одного символа, например, "А", и символьной константой 'А' в том, что строка занимает 2 байта, а символьная константа занимает 1 байт. Пустая символьная константа недопустима.

Разделители – пробелы, точки с запятой, фигурные скобки.

В тексте программы можно использовать комментарии. Они выделяются следующим образом:

/*комментарий*/

либо с каждой строки

// комментарий

 

Контрольные вопросы:

1. Какие операции относятся к унарным?

2. Какие операции относятся к операциям присваивания?

3. Какие операции относятся к операциям выбора компонентов?

4. Какие операции относятся к операциям указания области видимости?

5. Какие операции относятся к операциям последовательного вычисления?

 


Лекция 22 Скалярные типы и выражения языка C++

Цели лекции:

1. Изучение типов данных.

2. Изучение переменных и констант.

3. Изучение Определений и описаний.

4. Изучение выражений и преобразования типов.

 

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

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

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

Данные(факты) и их смысловое содержание(семантика) фиксируются на естественном языке совместно, так как язык достаточно выразителен для представления того и другого.

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

Модель данных – это средство абстракции, которое дает возможность понять информационное содержание данных по их конкретным значениям. Модели данных моделируют реальный мир адекватно особенностям компьютерной обработки данных. В качестве атомарной единицы данных принимают последовательность понятий <имя объекта, свойство объекта, значение свойства, время>.

Простым и достаточно мощным способом представления элементарных данных и связей между ними является разделение их по категориям или типизация. Данные одного типа предполагаются подобными. Большинство моделей данных, используемых в компьютерных информационных системах, относится к сильно типизированным, в том смысле, что все конкретные экземпляры данных отнесены к определенным типам, которые изображаются средствами некоторой знаковой системы(входной алфавит компьютерной системы).

Типы данных, выделенные в среде языка программирования C++, обеспечивают моделирование поведения достаточно широкого спектра предметных областей реального мира и определяют: визуальное представление их на экранах и в документах, формат их представления в памяти компьютера, область возможных значений, множество допустимых операций над данными.

Являясь языком общего назначения, C++ поддерживает следующие виды типов данных:

¨Базовые типы(Fundamental Types). Базовые типы идентифицируются зарезервированными ключевыми словами, и их не надо определять. Отдельные экземпляры этих типов обычно называют переменными;

¨Производные типы(Derived Types). Экземпляры этих типов создаются с использованием как базовых типов, так и типов классов. Разнообразие экземпляров этих типов определено следующими ключевыми словами: структуры, объединения, указатели, массивы;

¨Типы Класса(Fundamental Types). Экземпляры этих типов называют объектами.

 

Переменные и константы. Определения и описания. Выражения и преобразования типов

Любая компьютерная программа неизбежно должна хранить в оперативной памяти данные, которые она использует. Место в оперативной памяти компьютера, где можно временно размещать хранимое значение и при необходимости извлекать его для обработки, называют переменной. Оперативная память (Random Access Memory-RAM), является памятью произвольного доступа, в которую загружается выполняемая программа и значения данных. RAM можно представить себе пронумерованной совокупностью ячеек памяти. Эти номера называют адресами памяти. Переменная может занимать в памяти одну или несколько ячеек.

Таким образом переменная – это пара понятий ИМЯ-ЗНАЧЕНИЕ. Имени соответствует адрес (ссылка) на ячейку памяти, выделенную переменной, а значением является содержимое этой ячейки. Таким образом переменная- это частный случай объекта как именованной области памяти. При определении значения переменной в соответствующую ей область памяти помещается некоторый код. Это может происходить либо во время компиляции, либо во время исполнения программы. В первом случае говорят об инициализации, во втором случае – о присваивании.

При выключении компьютера хранимые в переменных значения исчезают.

Базовые типы

Основные (стандартные) типы данных часто называют арифметическими, поскольку их можно использовать в арифметических операциях. Для описания основных типов определены следующие ключевые слова:

- int (целый);

- char (символьный);

- wchar_t (расширенный символьный);

- bool (логический);

- float (вещественный);

- double (вещественный с двойной точностью).

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

bool и wchar_t используются в С++, в С не используются.

Существует четыре спецификатора типа, уточняющих внутреннее представление и диапазон значений стандартных типов:

- short (короткий);

- long (длинный);

- signed (знаковый);

- unsigned (беззнаковый).

 

Базовые типы переменных, используемые в программах С++, реализуемых на ПК на платформе Intel, приведены в таблице 22.1.

Таблица 22.1 – Базовые типы данных для ПК, выполненных на платформе Intel

Тип Размер, байт Значение
Bool 1 true или false
unsigned short int 2 от 0 до 65535
short int 2 от –32768 до 32767
unsigned long int 4 от 0 до 4294967295
Long int 4 от –2147483648 до 2147483647
int(16 разрядов) 2 от –32768 до 32767
int(32 разряда) 4 от –2147483648 до 2147483647
unsigned int(16 разрядов) 2 от 0 до 65535
unsigned int(32 разряда) 4 от 0 до 4294967295
Char 1 От 0 до 256
Float 4 от 1.2 е-38 до 3.4е38
Double 8 от 2.2е-308 до 1.8е308
Void 2 или 4 Нет значения

 

Логический тип (bool)

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

Величины логического типа могут принимать только значения true и false, являющиеся зарезервированными словами. Внутренняя форма представления значения false — 0 (нуль). Любое другое значение интерпретируется как true. При преобразовании к целому типу true имеет значение 1.

Целочисленные переменные short int (короткое целое), long int (длинное целое), int (целое) предназначены для хранения целых значений и могут быть знаковыми-signed (представляют как положительные так и отрицательные числа) и беззнаковыми-unsigned (представляют только положительные значения). По умолчанию целочисленные переменные считаются знаковыми.

Типы short int, long int, signed int и unsigned int можно сокращать до short, long, signed и unsigned соответственно.

Символьный тип данных char применяется тогда, когда переменная должна нести информацию о символах кода ASCII(American Standart Code for information Interchange - американский стандартный код для обмена информацией. Тип char, как и другие целые типы, может быть со знаком или без знака. В величинах со знаком можно хранить значения в диапазоне от -128 до 127. При использовании спецификатора unsigned значения могут находиться в пределах от 0 до 255. Этого достаточно для хранения любого символа из 256-символьного набора ASII. Величины типа char применяются также для хранения целых чисел, не превышающих границы указанных диапазонов.

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



Поделиться:


Последнее изменение этой страницы: 2021-02-07; просмотров: 186; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.189.119 (0.007 с.)