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

Dreammmless.
Эксперт
Статус
Оффлайн
Регистрация
19 Мар 2019
Сообщения
2,956
Реакции[?]
962
Поинты[?]
1K
Предыдущая тема от 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++:
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++:
double width; // определение переменной ширины типа double
C++ также позволяет создавать собственные пользовательские типы. Это то, что мы будем делать много раз в будущих уроках, и это часть того, что делает C++ мощным.

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

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

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

C++:
int a;
int b;

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

Спасибо за прочтение :).
 
Забаненный
Статус
Оффлайн
Регистрация
30 Июн 2019
Сообщения
81
Реакции[?]
17
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Найс гайд вот только можно было бы ещё про ограничения добавить
 
Начинающий
Статус
Оффлайн
Регистрация
17 Сен 2017
Сообщения
31
Реакции[?]
10
Поинты[?]
0
Очень полезно и понятно, спасибо большое!)
Учусь по этим найдам)
 
Сверху Снизу