Автор: Пользователь скрыл имя, 17 Января 2011 в 18:57, курс лекций
6 тем.
Символьный литерал – это один или два символа, заключенные в апострофы. Например, ' f ', '.', '3 ', '\n'. Большинство символьных литералов являются печатаемыми символами, т.е. они отображаются на экране в том виде, в котором записаны в апострофах. Некоторые символы являются непечатаемыми, т.е. никак не отображаются ни на экране, ни при печати. Для ввода непечатаемых символов используется управляющая последовательность. Управляющая последовательность начинается символом наклонной черты влево. Некоторые управляющие последовательности С++ приведены в следующей таблице:
|
Строковый литерал – это произвольное количество символов, помещенное в кавычки,например, "Ура! Сегодня информатика!!!".
В состав строковых
литералов могут входить и
управляющие
В конец каждого строкового литерала компилятором добавляется нулевой символ, представляемый управляющей последовательностью \0. Поэтому длина строки всегда на единицу больше количества символов в ее записи. Таким образом, пустая строка имеет длину 1 байт.
Если при решении задачи используются постоянные значения, имеющие смысл для этой задачи, то в программе можно определить их как именованные константы. Формат описания (объявления) именованной константы:
[<класс памяти>] const <тип> <имя именованной константы> = <выражение>;
где класс памяти– эти спецификатор, определяющий время жизни и область видимости программного объекта (см. разделе 2.4); выражение определяет значение именованной константы, т.е инициализирует ее. Константа обязательно должна быть инициализирована при описании. Например :
const int I=-124;
const float k1=2.345, k2 =1/k1;
1.5 Переменные
Переменная — это именованная область памяти, в которой хранятся данные определенного типа. У переменной есть имя и значение. Имя служит для обращения к области памяти, в которой хранится значение. Во время выполнения программы значение переменной можно изменять. Перед использованием любая переменная должна быть описана. Формат описания (объявления) переменных:
[<класс памяти>]<тип> <имя> [=<выражение> | (<выражение>)];
Например, опишем переменные i , j –типа int и переменную x типа double :
int i, j;
double x;
Перед использованием значение любой переменной должно быть определено. Это можно сделать с помощью:
1) Оператора присваивания:
int a ; //описание переменной
…
a =10; //определение значения переменной
2) Оператора ввода:
int a ; //описание переменной
…
cin >> a ; //определение значения переменной
3) Инициализации –
определении значения
int i =100; //инициализация копией
int i (100); //прямая инициализация
int i , day (3), year =2007; // i
– не инициализирована, day и year -
Необходимо помнить о том, что при использовании неинициализированной переменной для любых целей, кроме присвоения ей значения или использовании в операторе ввода, будет получен неопределенный результат, т.к. будет использовано случайное значение,находящееся в памяти по адресу, на который указывает переменная. Подобные ошибки очень трудно обнаружить. Поэтому нужно пользоваться простым правилом: если первым действием с переменной будет присвоение ей значение, то в инициализации нет необходимости, в противном случае следует обязательно присвоить ей значение при описании переменной.
1.6 Организация консольного ввода-вывода
В разделе 1.1 уже рассматривался ввод-вывод данных с помощью заголовочный файл iostream .В этом файле определены:
1) объект cin, который
предназначен для ввода данных
со стандартного устройства
2) объект cout, который
предназначен для вывода
3) операция >>, которая используется для извлечения данных из входного потока;
4) операция <<, которая
используется для помещения
5) операции форматированного ввода-вывода.
Более подробно рассмотрим операции форматирования ввода вывода. Для форматирования потоков используются манипуляторы. Мы уже рассматривали манипулятор endl , который позволяет при выводе потока на экран перенести фрагмент потока на новую строку. Теперь рассмотрим манипуляторы,которые позволяют управлять форматом вещественных типов данных и их размещением на экране. Для использования манипуляторов с аргументами к программе потребуется подключить заголовочный файл iomanip.
Существуют три
аспекта оформления значений с плавающей
запятой, которыми можно управлять: точность (
Точность задает общее количество отображаемых цифр. При отображении значения с плавающей запятой округляются до текущей точности, а не усекаются. Изменить точность можно с помощью манипулятораsetprecision . Аргументом данного манипулятора является устанавливаемая точность.
Рассмотрим примеры
Рассмотрим следующий пример:
Текст программы
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
double i=12345.6789;
cout<< setprecision(3) << i <<endl;
cout<< setprecision(6) << i <<endl;
return 0;
}
Результат работы программы |
1.23е+004 12345.7 |
По умолчанию форма
записи значения с плавающей запятой
зависит от его размера: если число очень
большое или очень маленькое, оно будет
отображено в экспоненциальном формате,
в противном случае – в десятичном формате.
Чтобы самостоятельно установить тот
или иной формат вывода, можно использовать
манипуляторы scientific (
Текст программы
#include <iostream>
using namespace std;
int main()
{
double i=12345.6789;
cout<<scientific<< i <<endl;
cout<< fixed << i <<endl;
return 0;
}
Результат работы программы |
1.234568е+004
12345.678900 |
Десятичная
точка по умолчанию не отображается,
если дробная часть равна 0. Манипулятор showpoint позволяе
Текст программы
#include <iostream>
using namespace std;
int main()
{
double i=10;
cout << i <<endl;
cout << showpoint << i <<endl;
return 0;
}
Результат работы программы |
10
10.0000 |
Манипуляторы
Для размещения отображаемых данных используются манипуляторы:
1) left – выравнивает вывод по левому краю;
2) right – выравнивает вывод по правому краю;
3) internal -контролирует размещение отрицательного значения: выравнивает знак по левому краю, а значение по правому, заполняя пространство между ними пробелами;
4) setprecision ( int w ) – устанавливает максимальное количество цифр в дробной части для вещественных чисел, установки данного манипулятора распространяются на все последующие операторы вывода;
5) setw ( int w ) – устанавливает максимальную ширину поля вывода.
Рассмотрим примеры использования данных манипуляторов.
Текст программы
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
cout<< "1." <<setw(10) <<-23.4567 <<endl;
cout<< "2." <<setw(10) <<setprecision(3) <<-23.4567 <<endl;
cout<< "3." <<setw(10) <<internal <<-23.4567 <<endl;
return 0;
}
Результат работы программы:
1.-23.4567
2. - 23.5
3. - 23.5
1.7 Операции
Операции можно классифицировать по количеству операндов на: унарные – воздействуют на один операнд, бинарные – воздействуют на два операнда, тернарные – воздействует на три операнда. Некоторые символы используются для обозначения как унарных, так и бинарных операций. Например, символ * используется как для обозначения унарной операции разадресации, так и для обозначения бинарной операции умножения. Будет ли данный символ обозначать унарную или бинарную операцию, определяется контекстом, в котором он используется.
Унарные операции
Полный список операций С++ в соответствии с их приоритетами (по убыванию приоритетов, операции с разными приоритетами разделены чертой) приведен в приложении 3 (Операции языка С++). В данном разделе мы подробно рассмотрим только часть операций, остальные операции будут вводиться по мере необходимости.
Операции увеличения и уменьшения на 1 (++ и --)
Эти операции называются
также инкрементом и
Рассмотрим эти операции на примере.
Текст
программы