21:32 

Учимся программировать на С++. Лекция 5. Типы примитивных переменных

ToxicSpider
Бритуля - Богиня
Еще раз здрасте!

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

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

У каждого числового типа есть максимальное число и минимальное число, именно поэтому, числовых переменных несколько типов. Максимальное и минимальное числа определяются операционной системой и поэтому, между, допустим, Windows, Linux и так далее, есть различия. Для того, чтобы не привязываться к операционной системе, я решил, что эти ограничения я буду обозначать условно, например:

минимальное число, которое способен хранить int, я называю MIN_INT
максимальное число, которое способен хранить int, я называю MAX_INT

Бывают переменные, которые не способны хранить отрицательные значения и тогда их минимальная граница будет 0. Я отмечу это.



Итак, числовые типы, способные хранить только целые числа ( -17, 22, 0.....) в порядке от наименьшего к наибольшему:


short - от MIN_SHORT до MAX_SHORT (иногда, этот тип объявляют как short int - это тоже самое)

int - от MIN_INT до MAX_INT

long - от MIN_LONG до MAX_LONG (иногда, этот тип объявляют как long int - это тоже самое)

long long - от MIN_LONG_LONG до MAX_LONG_LONG (иногда, этот тип объявляют как long long int - это тоже самое)
хочу добавить еще замечание по этому типу: в Windows такого типа не существует



Каждый из этих типов принимает приставку unsigned. Получив эту приставку, поведение типа немного меняется, а именно, происходит:

1. максимальное число, которое может хранить такой тип увеличивается вдвое, по сравнению с его "обычным" видом, допустим:
unsigned int теперь может хранить максимальное число, равное MAX_INT * 2

2. минимальное число тоже изменилось и оно теперь равно нулю. Это означает, что тип, получивший приставку unsigned не может хранить отрицательные числа!

Что изменяется в переменной и почему все это происходит - мы поговорим ОЧЕНЬ подробно в следующей лекции.



Теперь, числовые типы, способные хранить дробные числа (23.5, -174.6574 и так далее) от наименьшего к наибольшему:


float - от MIN_FLOAT до MAX_FLOAT
double - от MIN_DOUBLE до MAX_DOUBLE

Примечание: эти типы НЕ принимают приставку unsigned
Примечание: к целым числам можно относиться как к дробным, например: 17 это 17.0



Со всеми числовыми типами можно выполнять 4 примитивных, арифметических действия: прибавить, отнять, умножить и разделить:

int x=6, y=3, z=0;

z = x + y;
z = x - y;
z = x * y;
z = x / y;




Переменная, хранящая нечисловые типы: ( а, %, ....)


char

Немного об этом типе:

Присвоение значения этой переменной происходит так:

char c = 'a';
char b = '#';


Обратите внимание: символ, который я кладу в переменную, я беру в одинарные кавычки. Это говорит компилятору - я кладу в переменную символ, а не значение другой переменной, то есть:

char a = 'z'; // я положил в переменную a букву z
char b = a; // я положил в переменную b значение переменной a, то есть - букву z

Теперь обе переменные хранят букву z.

Примечание: тип char принимает приставку unsigned. Для чего так делают мы поговорим позже.



Переменная, хранящая булевое значение.


bool

Булевое значение пришло из математики, ее раздела "логика". Булевое значение имеет только 2 возможных варианта - "правда" и "ложь"

true - правда
false - ложь


В программировании булевые значения используются часто. Мы очень подробно поговорим об их использовании, в лекциях, которые я посвящу условиям. А пока, чтобы уж очень не подвешивать эту тему "в воздухе", я лишь коснусь ее:

Частенько, в программе есть 2 возможных продолжения, например, программа, которая ведет себя с положительным числом, который ввел пользователь, иначе, чем с отрицательным. В месте, где надо определить по какому пути пойдет алгоритм, код спрашивает: "является ли число положительным?" и именно здесь и используется булевое значение: "правда", то есть "да, является" ИЛИ "ложь" - "не является". Но подробней обо всем этом - позже.

А пока, так как мы пишем "шпаргалку", то я не могу не осветить действия, которые можно произвести с булевыми значениями:

1. действие, эквивалентное логическому "или" ("OR") обозначается двумя вертикальными палочками: || (эта клавиша находится под или над Enter, в зависимости от вашей клавиатуры. Нужно удерживать Shift).
Действие вернет "правда", если есть ХОТЬ ОДНО булевое значение "правда", например:

bool a = false;
bool b = false;
bool c = true;


a || b - вернет "ложь" (false), так как все переменные содержат "ложь".

Примечание: я использую глагол "вернет" потому что выражение a || b - это вопрос, на который компьютер вернет ответ. Слово "вернет" - это слово, которым пользуются программисты в подобных случаях. То есть, слово "вернет" для нас эквивалентно слову "равно".



все эти операции:

c || a
b || c
a || b || c


вернут значение "правда", так как во всех ЕСТЬ переменная, содержащая "правда"


пример (словесный):

ЕСЛИ (на улице дождь ИЛИ по телевизору интересный фильм) ТОГДА: я гулять не пойду.
то есть: я НЕ пойду гулять, если выполнится хотя бы одно из этих условий.



2. действие, эквивалентное логическому "и" ("AND") обозначается двумя символами "и" в английском языке: && (эта клавиша находится на цифре 7 нужно удерживать Shift)
Действие вернет "правда", если ВСЕ булевые значения содержат "правда", например:

bool a = true;
bool b = true;
bool c = false;


a && b - вернет "правда", потому что обе переменные содержат "правда"


все эти операции:

c && a
b && c
a && b && c


вернут значение "ложь", так как во всех ЕСТЬ переменная, содержащая "ложь"


пример (словесный):

ЕСЛИ (я получил хорошую оценку И скушал кашу) ТОГДА: мама мне даст конфету.
то есть: я получу конфету, выполнив только ОБА этих условия



3. действие, эквивалентное логическому "не" ("NOT") обозначается восклицательным знаком ПЕРЕД переменной: ! (где находится восклицательный знак, надеюсь все знают), например:

bool a = false;
bool b = true;


a - ложь
- правда

b - правда
!b - ложь

а так же:

(a || b) - правда (потому что b правда)
!(a || b) - ложь (сработала приставка "не")

(a && b) - ложь (потому что а ложь)
!(a && b) - правда (сработала приставка "не")



кроме того:

bool c = !a; // значение а - ложь, значит в с мы положили "правда".




Последнее, что хочу осветить сегодня, это приставку const


Приставка const, поставленная перед типом переменной, во время ее объявления делает из переменной константу. То есть - значение этой переменной нельзя изменить. Например:

const int a = 5;

a = 3; // не скомпилируется, так как переменная а объявлена как const.

Присвоить константе значение можно ТОЛЬКО один раз и ТОЛЬКО в момент ее объявления.
приставку const принимают все типы переменных.


Напоследок: я хочу объяснить, почему эти типы называются "примитивными". Дело в том, что в С++ есть возможность объявить собственные типы. Такие "собственные" типы, которые придумывает программист - это типы более сложной структуры, чем эти. Поэтому, эти, базовые типы называют "примитивными". Об объявлении собственных типов мы ОЧЕНЬ много будем говорить, так как это - основная фишка С++ и любого объектно-ориентированного языка.



Домашнее задание


Напишите программу, которая получает от пользователя 2 положительных числа и высчитывает среднее арифметическое между ними.
Запустите программу со следующими числами:

1. 4 и 2
2. 5 и 2

Проверьте результат!

Напоминаю: среднее арифметическое высчитывается по формуле: сумма чисел, разделенная на количество чисел.

Подсказка: не пытайтесь получить оба числа "одним махом", у вас не получится. Вначале получите первое, потом - второе.
Подсказка: подумайте, что нужно сделать, чтобы программа вначале выполнила сложение, а уж потом - деление
Подсказка: подумайте, какой тип переменных вам нужен)))

Мой вариант решения - на следующей лекции. Удачи!

@темы: C++

URL
   

Godney

главная