Гайд Перевод Learncpp.com: раздел 1.3 // Введение в переменные. На русском.

Dreammmless.
Эксперт
Эксперт
Статус
Оффлайн
Регистрация
19 Мар 2019
Сообщения
2,961
Реакции
957
Предыдущая тема от @Dreammm - https://yougame.biz/threads/153075/
Оригинальная статья -
Пожалуйста, авторизуйтесь для просмотра ссылки.




Данные

В уроке 1.1 - операторы и структура программы вы узнали, что большинство инструкций в программе являются операторами и что операторы группируются в функции. Эти операторы выполняют действия, которые (надеюсь) генерируют любой результат, для которого была разработана программа.

Но как программы на самом деле дают результаты? Они делают это, манипулируя (читая, изменяя и записывая) данными. В вычислительной технике данные - это любая информация, которая может быть перемещена, обработана или сохранена компьютером.


Ключевой момент

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

Программа может получать данные для работы различными способами: из файла или базы данных, по сети, от пользователя, вводящего данные с клавиатуры, или от программиста, вводящего данные непосредственно в исходный код самой программы. В программе "Hello world“ из вышеупомянутого урока текст "Hello world!” был вставлен непосредственно в исходный код программы, предоставляя данные для использования программой. Затем программа манипулирует этими данными, отправляя их на монитор для отображения.

Данные на компьютере обычно хранятся в формате, который эффективен для хранения или обработки (и поэтому не читается человеком). Таким образом, при компиляции программы “Hello world” появляется текст “Hello world!" преобразуется в более эффективный формат для использования программой (двоичный, который мы обсудим в следующем уроке).


Объекты и переменные

Все компьютеры имеют память, называемую оперативной памятью (сокращенно от random access memory), которая доступна для использования вашими программами. Вы можете думать о оперативной памяти как о серии почтовых ящиков, которые могут использоваться для хранения данных во время работы программы. Отдельный фрагмент данных, хранящийся где-то в памяти, называется значением.

В некоторых старых языках программирования (например, Apple Basic) вы можете напрямую обращаться к этим почтовым ящикам (оператор может сказать что-то вроде go get the value stored in mailbox number 7532).

В C++ прямой доступ к памяти не разрешен. Вместо этого мы получаем доступ к памяти косвенно через объект. Объект - это область хранения (обычно память), которая имеет значение и другие связанные с ним свойства (которые мы рассмотрим в будущих уроках). Когда объект определен, компилятор автоматически определяет, где объект будет помещен в память. В результате, вместо того, чтобы сказать иди со значением, хранящимся в номер почтового ящика 7532, можно сказать, пойти получить значение, хранящееся по этому объекту и компилятор знает, где в памяти искать, что значение. Это означает, что мы можем сосредоточиться на использовании объектов для хранения и извлечения значений и не беспокоиться о том, где они на самом деле находятся в памяти.

Объекты могут быть именованными или неназванными (анонимными). Именованный объект называется переменной, а имя объекта - идентификатором. В наших программах большинство объектов, которые мы создаем, будут переменными.

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

Пример переменной

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

Вот пример определения переменной с именем x:
C++:
Expand Collapse Copy
int x; // определение переменной с именем x типа int

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

При запуске программы (называемой runtime) создается экземпляр переменной. Создание экземпляра - это причудливое слово (англ. Instantiation), которое означает, что объект будет создан и ему будет присвоен адрес памяти. Переменные должны быть созданы до того, как их можно будет использовать для хранения значений. Для примера предположим, что переменная x создается в ячейке памяти 140. Всякий раз, когда программа затем использует переменную x, она будет обращаться к значению в ячейке памяти 140. Экземпляр объекта иногда также называют экземпляром (англ. instance).

Типы данных

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

В приведенном выше примере нашей переменной x был присвоен тип int, что означает, что переменная x будет представлять собой целое значение. Целое число (англ. integer) - это число, которое может быть записано без дробной составляющей, например 4, 27, 0, -2 или -12. Короче говоря, мы можем сказать, что x-это целочисленная переменная.

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

Целые числа-это всего лишь один из многих типов, которые C++ поддерживает из коробки. Для иллюстрации приведем еще один пример определения переменной с помощью типа данных double:
C++:
Expand Collapse Copy
double width; // определение переменной ширины типа double
C++ также позволяет создавать собственные пользовательские типы. Это то, что мы будем делать много раз в будущих уроках, и это часть того, что делает C++ мощным.

В этих вводных главах мы будем придерживаться целочисленных переменных, потому что они концептуально просты, но вскоре мы рассмотрим многие другие типы, которые может предложить C++.

Определение нескольких переменных

Можно определить несколько переменных одного типа в одном операторе, разделив имена запятой. Следующие 2 фрагменты кода, которые представляют собой то же:

C++:
Expand Collapse Copy
int a;
int b;

// то же самое, что и:

int a, b;

При определении нескольких переменных таким образом есть две распространенные ошибки, которые обычно совершают новые программисты (ни одна из них не является серьезной, так как компилятор поймает их и попросит вас исправить их):

Первая ошибка заключается в том, что при последовательном определении переменных каждой переменной присваивается определенный тип.
C++:
Expand Collapse Copy
int a, int b; // неправильно (ошибка компилятора)

int a, b; // правильно

Вторая ошибка заключается в попытке определить переменные разных типов в одном и том же операторе, что недопустимо. Переменные различных типов должны быть определены в отдельных операторах.
C++:
Expand Collapse Copy
int a, double b; // неправильно (ошибка компилятора)

int a; double b; // правильно (но не рекомендуется)

// правильно и рекомендованно (легче для чтения)
int a;
double b;

Правило

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

Вообщем,

В C++ мы используем переменные для доступа к памяти. Переменные имеют идентификатор, тип и значение (и некоторые другие атрибуты, которые здесь неуместны). Тип переменной используется для определения того, как следует интерпретировать значение в памяти.

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


Время викторины!

Вопрос №1 - Что такое "данные"?
Данные - это любая последовательность символов (цифр, букв и т. д.), которая может быть интерпретирована как что-то значащее.

Вопрос №2 - Что такое "значение"?
Значение - это отдельный фрагмент данных, хранящихся в памяти.

Вопрос №3 - Что такое "переменная"?
Переменная - это именованная область памяти.

Вопрос №4 - Что такое "идентификатор"?
Идентификатор - это имя, по которому осуществляется доступ к переменной.

Вопрос №5 - Что такое "тип"?
Тип указывает программе, как интерпретировать значение в памяти.

Вопрос №6 - Что такое "целочисленное значение" (англ. integer)?
Целочисленное значение - это число, которое может быть записано без дробной составляющей.

Спасибо за прочтение :).
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Найс гайд вот только можно было бы ещё про ограничения добавить
 
Назад
Сверху Снизу