Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
new_Лекции_1-7.docx
Скачиваний:
117
Добавлен:
05.03.2016
Размер:
1.49 Mб
Скачать

Тема 3: Переменные и константы Лекция 3.1. Встроенные типы данных. План лекции

  1. Стандартные типы

  2. Диапазон значений

  3. Определение размера типа

  4. Имена переменных

  5. Объявление переменных и инициализация

  6. Усечение дробной части

  7. Переполнение

  8. Символы

  9. Строки

  10. Логический тип

  1. Стандартные типы

Программы обладают способностью хранить в ОЗУ (RAM) используемые данные посредствам переменных и констант. ОЗУ компьютера можно рассматривать как ряд ячеек. Одна ячейка ОЗУ имеет размер равный одному байту (byte). Байт состоит из 8 бит (bit), двоичных чисел 0 или 1. Все ячейки последовательно пронумерованы, начиная с нуля. Эти номера называют адресами (address) памяти. Переменная, в зависимости от ее типа (type), занимает в ОЗУ определенный размер (size) - одну или несколько смежных ячеек памяти, в которых можно хранить некоторое значение (value). Имя переменной можно представить себе как надпись на ячейке памяти, по которой, не зная настоящего адреса памяти, можно ее найти. Базовые (встроенные в компилятор) типы переменных , используемые в программах на С++ , представлены в следующей таблице :

Тип

(Type)

Размер (Size)

Диапазон

(Range)

unsigned char

1 байт

от 0 до 255 (256 символов)

char

1 байт

от –128 до 127

short int, short

2 байта

от –32768 до 32767

long int, long

4 байта

от –2147483648 до 2147483647

int

2 байта

от –32768 до 32767

unsigned short int

2 байта

от 0 до 65535

unsigned long int

4 байта

от 0 до 4294967295

unsigned int

2 байта

от 0 до 65535

float

4 байта

1.2E-38 - 3.4E38 (точность 7 знаков)

double

8 байтов

2.2E-308 - 1.8E308 (точность 15 знаков)

long double

10 байтов

3.4E-4932 - 1.1E4932 (точность 18 знаков)

bool

1 байт

true или false

wchat_t

2 байта

от 0 до 65535 (символы Unicode)


Примечание : размеры переменных могут отличаться в зависимости от используемого компилятора, версии компилятора, типа компьютера и ОС.

  1. Диапазон значений

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

  • unsigned char занимает 1 байт в оперативной памяти – это 8 бит;

  • наибольшее двоичное число, которое можно сохранить 8 битах – это 11111111 ( у величин со знаком (signed) левый старший бит определяет знак числа: 0 - положительное число, 1- отрицательное ) ;

  • наберите 8 двоичных единиц в научном калькуляторе Windows, предвари­тельно выбрав на нем двоичную систему (Bin)

  • переключите калькулятор в десятичную систему счисления (Dec).

  1. Определение размера типа

В программах на С++ для определения размера выделенной под переменную памяти используется встроенная функция sizeof.

// Пример 3.1.1

// Определение размера типов переменных

#include <iostream>

using namespace std;

void main() {

setlocale( LC_ALL, "Russian"); // для вывода на экран русского текста

cout << "Размер целого int:\t\t" << sizeof(int) << " байта.\n";

cout<<"Размер целого short:\t\t" << sizeof(short) << " байта.\n";

cout<<"Размер целого long:\t\t" << sizeof(long) << " байта.\n";

cout<<"Размер символа char:\t\t" << sizeof(char) << " байт.\n";

cout<<"Размер вещественного float:\t"<<sizeof(float)<< " байта\n";

cout<<"Размер вещественного double:\t"<<sizeof(double)<<" байтов.\n";

cout<<"Размер long double:\t"<<sizeof(long double)<<" байтов.\n";

cout<<"Размер типа bool:\t\t" << sizeof(bool) << " байт.\n";

cout<<"Размер символа wchar_t :\t"<<sizeof(wchar_t)<<" байта.\n";

cin.get();

}

  1. Имена переменных

При объявлении переменной нужно указать ее тип и дать ей имя. Имя переменной должно начинаться с буквы или _ . Нельзя использовать в качестве имен ключевые слова языка (int, unsigned, sizeof и т.д.) Пробелы внутри имени недопустимы. Имена даются по смыслу переменных. С++ различает малые и большие буквы. На практике обычно применяется три формы записи имен: с подчеркиванием (my_Car ), верблюжья(myCar) и венгерская (iCar-целое; lCar-длинное целое и т.д.).

  1. Объявление переменных и инициализация

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

// Пример 3.1.2

// Пример использования переменных и инициализация

#include <iostream>

using namespace std;

// прототип функции для вычисления площади прямоугольника

unsigned int FArea(unsigned int, unsigned int);

void main() {

setlocale( LC_ALL, "Russian"); // для вывода на экран русского текста

unsigned int Length; // инициализация не проведена

unsigned int Width=5; // инициализация константой

cout << "Ширина: " << Width << "\t" << "Длина: " << Length << "\n";

cin.get();

Length=10; // присваивание

cout << "Ширина: " << Width << "\t" << "Длина: " << Length << "\n";

cin.get();

unsigned int Area=Width*Length; // инициализация выражением

cout << "Ширина: " << Width << "\t" << "Длина: " << Length << "\n";

cout << "Площадь: " << Area << "\n";

cin.get();

unsigned int S=FArea(Width-1,Length+2); // инициализация с помощью

//функции

cout << "Ширина: " << Width-1 << "\t";

cout << "Длина: " << Length+2 << "\t";

cout << "Площадь: " << S << "\n";

cin.get();

}

// реализация функции для вычисления площади прямоугольника

unsigned int FArea(unsigned int a, unsigned int b) {

return a*b;

}

  1. Усечение дробной части

При присвоении целым величинам вещественных значений происходит усечение (truncation) дробной части вещественного числа и работа программы продолжается.

// Пример 3.1.3

// Усечение дробной части

#include <iostream>

using namespace std;

void main() {

setlocale( LC_ALL, "Russian"); // для вывода на экран русского текста

double dVar=1.8;

int iVar=0;

cout << "Перед : dVar=" << dVar << "\t\t" << "iVar=" << iVar << endl;

iVar=dVar; // потеря дробной части

cout << "После : dVar=" << dVar << "\t\t" << "iVar=" << iVar << endl;

cin.get();

// Вычисление рублей и копеек

long double sum; // сумма денег

int r,k; // рубли и копейки

cout << "Введите сумму денег : ";

cin >> sum;

r=sum; // рубли

k=(sum-r)*100; // копейки

cout << "Сумма =" << r << " руб. " << k << " коп." << endl;

cin.get();

}

  1. Переполнение

При работе с числовыми величинами возможно их переполнение - overflow. Значение сбрасывается в минимально/максимально возможное для данного типа и работа программы продолжается.

// Пример 3.1.4

// Переполнение беззнакового целого

#include <iostream>

using namespace std;

void main() {

setlocale( LC_ALL, "Russian"); // для вывода на экран русского текста

unsigned short int small; // диапазон 0-65535

small=65535;

cout << "small: " << small << "\n";

small=small+1; // увеличить на 1 -> больше,чем допустимо

cout << "small: " << small << "\n";

small++; // увеличить на 1

cout << "small: " << small << "\n";

small=small-1; // уменьшить на 1

cout << "small: " << small << "\n";

small--; // уменьшить на 1

cout << "small: " << small << "\n";

cin.get();

}

// Пример 3.1.5

// Переполнение знакового целого

#include <iostream>

using namespace std;

void main() {

setlocale( LC_ALL, "Russian"); // для вывода на экран русского текста

short int small; // диапазон от -32768 до 32767

small=32767;

cout << "small: " << small << endl;

small++;

cout << "small: " << small << endl;

small--;

cout << "small: " << small << endl;

//small=0;

//cout << "Введите целое число от -32768 до 32767 " << endl;

//cin >> small;

//cout << "Введено число " << small;

cin.get();

}

  1. Символы

Для работы с одним символом применяется тип char. Нужно обязательно понимать, что в ОЗУ хранятся не изображения символов, а их числовые номера.

// Пример 3.1.6

// Преобразования символов в целые и целых в символы

#include <iostream>

using namespace std;

void main() {

setlocale( LC_ALL, "Russian"); // для вывода на экран русского текста

char ch='A';

cout << "Символ:" << ch << "\t\tНомер:" << (int) ch << endl;

int code=65;

cout << "Символ:" << (char)code << "\t\tНомер:" << code << endl;

cin.get();

}

  1. Строки

Для работы со строками в С++ применяются символьные массивы (строки С-стиля), состоящие из элементов типа char и заканчивающиеся управляющим символом ‘\0’ (null symbol) или объекты-строки.

// Пример 3.1.7

// Строки С-стиля и строки-объекты

#include <iostream>

#include <string> // библиотека языка С++

using namespace std;

#include <string.h> // библиотека языка С

int main() {

setlocale( LC_ALL, "Russian"); // для вывода на экран русского текста

// C, C++

char name[21]="Иванов"; //массив символов, строка С-стиля

cout << "name=" << name << endl;

cin.get();

//C++

string sName("Иванов"); //объект-строка

cout << "sName=" << sName << endl;

cin.get();

}

  1. Логический тип

Для работы с логическими величинами в Standart C++ введен тип данных bool. Переменные этого типа используются в логических выражениях и могут принимать только два значения : true – истина (1) и false – ложь (0).

// Пример 3.1.8

// Логические величины

#include <iostream>

using namespace std;

int main() {

setlocale( LC_ALL, "Russian"); // для вывода на экран русского текста

bool result=true;

cout << "result=" << result << endl;

result=false;

cout << "result=" << result << endl;

cin.get();

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]