Переменные
Компьютер был бы не нужен, если бы не имел возможности хранить у себя в памяти различную информацию и уметь обрабатывать однотипную информацию по одинаковым алгоритмам. Для того, чтобы создавать более интересные программы, надо научиться сохранять информацию в памяти компьютера. При этом нам необходимо научиться как-то обращаться к ячейкам памяти компьютера.
В программировании, как и в жизни, чтобы обращение к какому-либо участку памяти компьютера происходит по имени. Используя это имя можно как читать информацию, так и записывать ее туда.
Переменная - это ячейка в памяти компьютера, которая имеет имя и хранит некоторое значение, соответствующее типу.
Слово "переменная" говорит нам о том, что ее значение может меняться в ходе выполнения программы. При сохранении нового значения переменной - старое стирается.
Для компьютера вся информация - это данные в его памяти - наборы нулей и единиц (если проще, то любая информация в компьютере - это просто числа, и обрабатывает он их одинаково). Тем не менее, нам известно, что с целыми и дробными числами работают по-разному. Поэтому в каждом языке программирования есть разные типы данных, для обработки которых используются разные методы.
Например,
- целые переменные – тип int (от английского integer – целый), занимают 4 байта в памяти;
- вещественные переменные, которые могут иметь дробную часть (тип float – от английского floating point – плавающая точка), занимают 4 байта в памяти или тип double , который занимает 8 байт;
- символы (тип char – от английского character – символ), занимают 1 байт в памяти.
Попробуем добавить в нашу программу, какую-нибудь переменную.
Прежде чем использовать переменную, надо сказать компьютеру, чтобы он выделил под нее место в памяти. Для этого переменную необходимо объявить, то есть указать какого типа значения она будет хранить, и дать ей имя.
Также в случае необходимости можно присвоить ей начальные значения.
Пример
Разберите программу.
#include <iosrtream>
using namespace std;
int main()
{
int a = 6, b; // объявили две переменных целого типа,
// в переменную а сразу сохранили значение 6 .
// Переменной b начальное значение не задали,
// что будет находиться в памяти в этом случае мы не знаем.
return 0;
}
|
Калькулятор
Попробуем написать простейший калькулятор.
Наша задача вывести на экран некоторое арифметическое выражение и заставить компьютер его подсчитать.
Например такое:
5+7=12
Причем вместо 5 и 7 могут быть разные числа, зависящие от значений переменных a и b в программе.
В операторе вывода можно выводить не просто текст, но и значения переменных, а также результат арифметического выражения. Причем последовательность вывода может быть различной. Например, для того, чтобы вывести вышеуказанное выражение необходимо записать так:
cout << a << "+" << b << "=" << a+b << endl;
Если хотим вывести значение переменной, то просто необходимо указать ее имя без кавычек. Если мы хотим вывести результат арифметического выражения, то достаточно правильно записать арифметическое выражение.
Надо запомнить!
Переменные, текст и арифметические выражения отделяются друг от друга оператором << .
*** Углубленный материал: отличия в языке Си***
В форматной строке количество спецификаторов вывода не ограничено, главное для каждого спецификатора после форматной строки, через запятую перечислить все значения, которые будут подставляться вместо шаблона.
Например:
printf("%d+%d=%d\n",a,b,a+b);
В форматной строке указаны три спецификатора формата для вывода ( %d ).
Спецификатор формата - последовательность, образованная начальным процентным знаком (% ), который используется для указания типа и формата данных.
Спецификатор %d указывает на то, что должны быть выведены целочисленные значения. Порядок подстановки - прямой. Т.е. вместо первого шаблона %d выведется значение переменной a , вместо второго - значение переменной b , а вместо третьего - значение выражения a+b .
|
Ввод значений переменных
Для того, чтобы пользователь смог сам задавать значение переменной, необходимо иметь возможность вводить значения с клавиатуры.
Для чтения данных из стандартного потока ввода (чаще всего с клавиатуры), используется поток ввода cin (читается как "си-ин"):
cin >> a;
Оператор >> используется для извлечения данных из потока ввода cin . Например,
int x;
cin >> x;
считывает целое число из стандартного ввода (чаще с клавиатуры) и сохраняет его в переменной x .
Можно несколько потоков cin соединить в один.
Например, запись:
cin >> a;
cin >> b;
выполняет те же действия, что и запись:
cin >> a >> b;
то есть первые введенные данные сохраняться в переменную a , вторые в переменную b . Когда вы используете cin для ввода значения в переменную, компилятор C++ пытается определить тип данных, который вы вводите, на основе типа переменной, в которую вы хотите сохранить значение.
----------------------------------------------------
***Углубленный материал***
----------------------------------------------------
Для ввода данных с клавиатуры на языке Си используется оператор ввода, который в общем виде имеет следующую структуру:
scanf ("формат ввода", <адреса переменных>);
Формат ввода – это строка в кавычках, в которой перечислены один или несколько спецификаторов форматов.
Например, наиболее часто используемые:
%d - ввод целого числа (переменная типа int );
%f - ввод вещественного числа (переменная типа float );
%с - ввод одного символа (переменная типа char ).
Например:
scanf ("%d%d", &a, &b);
Данный оператор, запрашивает с клавиатуры значения двух целых переменных. Первое число, введенное с клавиатуры попадет в переменную a , второе в переменную b .
После формата ввода через запятую перечисляются имена переменных, с указанием значка адреса (& ), в которые необходимо сохранить введенные значения. Ввод значений переменных всегда происходит по указанию адреса этой переменной. Поэтому перед именем переменной необходимо поставить знак амперсанда: &a - адрес переменной a .
Надо запомнить!
Количество форматов ввода и и количество переменных должно совпадать!
|
Ширина поля для вывода и точность
*** Углубленный материал: для интересующихся языком Си ***
Дополнительные спецификаторы вывода позволяют управлять выводом чисел в определенных форматах.
Минимальная ширина поля
Пример:
%04d - число будет выводится в 4-х позициях, если цифр будет меньше четырех, то первые будут нулями.
int a=34; printf("%04d\n",a); //на экране:0 0 3 4
знак подчеркивания здесь поставлен специально для наглядного отображения вывода числа.
%4d – то же самое, только вместо нулей будут пробелы
int a=34; printf("%4d\n",a); //на экране: _ _ 3 4
Вывод с определенной точностью
Вывод с определенной точностью используется для вывода вещественных чисел. По умолчанию вещественные числа выводятся с точностью до 6 знаков после запятой. Но бывают случаи, когда необходимо вывести число с другой точностью. В этом случае необходимо указать сколько знакомест отвести под само число и сколько после запятой.
Например,
%9.3f - вещественное число будет выведено в 9 позициях (включая позицию под точку), с тремя символами после точки (разделителем целой и дробной части является точка).
double a=34.24356; printf("%9.3f\n",a); // на экране: _ _ _ 3 2 . 2 4 4
|
Вывод значения переменной на экран. Спецификаторы вывода *** Углубленный материал ***
Как же вывести значение переменной на экран?
Для это внутри форматной строки в операторе вывода, необходимо указать некий шаблон, на месте которого будет выведено значение переменной.
Какой именно шаблон использовать зависит от типа переменной.
Данные шаблоны называются спецификаторами вывода и представлены в таблице. Приведено достаточное большое количество спецификаторов. Все их запоминать не обязательно.
В большинстве случаев, мы будем использовать спецификаторы для вывода целых, вещественных чисел, а также символов и строк. Но вы в любой момент можете вернуться к этому уроку и посмотреть нужный вам шаблон.
Код |
Формат |
%c |
Символ |
%d |
Десятичное целое число со знаком |
%i |
Десятичное целое число со знаком |
%e |
Научный формат (строчная буква e) |
%E |
Научный формат (прописная буква E) |
%f |
Вещественное число с плавающей точкой |
%g |
В зависимости от того, какой формат короче, применяется либо %e, либо %f |
%G |
В зависимости от того, какой формат короче, применяется либо %E, либо %f |
%o |
Восьмеричное число со знаком |
%s |
Строка символов |
%u |
Десятичное целое число без знака |
%x |
Шестнадцатеричное число без знака (строчные буквы) |
%X |
Шестнадцатеричное число без знака (прописные буквы) |
%p |
Указатель |
%n |
Указатель на целочисленную переменную. Спецификатор вызывает присвоение этой целочисленной переменной количества символов, выведенных перед ним |
%% |
Знак % |
Для вывода переменных типа short int используется модификатор h (например, %hd ).
Для вывода значений переменных типа long int используется модификатор l (например, %ld ).
Модификатор L можно использовать как префикс перед спецификаторами e , f , g . Он означает, что на экран выводится значение типа long double (например, %Lf ).
|