Бритуля - Богиня
Еще раз здрасте!
Сегодня мы изучим типы примитивных переменных. Один из таких типов мы уже знаем, это "целое число" - int. Сегодня мы поговорим об остальных, систематизируем знания о них, а на следующей лекции будет более глубокое объяснение и маленький экскурс в память компьютера, а так же рассказ, как на самом деле все работает. Все, что я напишу в этой и следующей лекции, не нужно учить наизусть, то, что нужно, вы выучите в процессе написания программ. Эту лекцию я пишу в форме шпаргалки, чтобы те, кому это необходимо, всегда смогли заглянуть сюда, как в справочник. Нужно это все один раз изучить, чтобы знать, что существует.
читать дальшеПрежде, чем я начну перечислять типы, маленькое вступление. Как мы помним из уроков математики, числа не имеют каких-либо пределов. Они лежат на числовой прямой от минус бесконечности до плюс бесконечности. Однако в компьютере это не так, потому что математика это абстракция, а компьютер - реальный и железный! Это его как плюс, так и минус.
У каждого числового типа есть максимальное число и минимальное число, именно поэтому, числовых переменных несколько типов. Максимальное и минимальное числа определяются операционной системой и поэтому, между, допустим, Windows, Linux и так далее, есть различия. Для того, чтобы не привязываться к операционной системе, я решил, что эти ограничения я буду обозначать условно, например:
минимальное число, которое способен хранить int, я называю MIN_INT
максимальное число, которое способен хранить int, я называю MAX_INT
Бывают переменные, которые не способны хранить отрицательные значения и тогда их минимальная граница будет 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 не может хранить отрицательные числа!
Что изменяется в переменной и почему все это происходит - мы поговорим ОЧЕНЬ подробно в следующей лекции.
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 int a = 5;
a = 3; // не скомпилируется, так как переменная а объявлена как const.
Присвоить константе значение можно ТОЛЬКО один раз и ТОЛЬКО в момент ее объявления.
приставку const принимают все типы переменных.
Напоследок: я хочу объяснить, почему эти типы называются "примитивными". Дело в том, что в С++ есть возможность объявить собственные типы. Такие "собственные" типы, которые придумывает программист - это типы более сложной структуры, чем эти. Поэтому, эти, базовые типы называют "примитивными". Об объявлении собственных типов мы ОЧЕНЬ много будем говорить, так как это - основная фишка С++ и любого объектно-ориентированного языка.
Напишите программу, которая получает от пользователя 2 положительных числа и высчитывает среднее арифметическое между ними.
Запустите программу со следующими числами:
1. 4 и 2
2. 5 и 2
Проверьте результат!
Напоминаю: среднее арифметическое высчитывается по формуле: сумма чисел, разделенная на количество чисел.
Подсказка: не пытайтесь получить оба числа "одним махом", у вас не получится. Вначале получите первое, потом - второе.
Подсказка: подумайте, что нужно сделать, чтобы программа вначале выполнила сложение, а уж потом - деление
Подсказка: подумайте, какой тип переменных вам нужен)))
Мой вариант решения - на следующей лекции. Удачи!
Сегодня мы изучим типы примитивных переменных. Один из таких типов мы уже знаем, это "целое число" - 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++