Бритуля - Богиня
решение домашнего задания с предыдущей лекции
Условие:
Напишите программу, которая выдает на экран размеры всех, пройденых на предыдущих лекциях переменных, в байтах. Напоминаю, для этой цели вам необходим оператор sizeof
решение

Результат:

Примечание:
Мои результаты могут расходиться с вашими, по той причине, что эти размеры диктует операционная система
лекцияНа этой лекции мы поднимемся на следующую ступеньку наших возможностей. Сегодня я освещу 2 новые вещи. Начнем по-порядку.
О блоках, как таковых, мало что можно сказать, но не сказать об этом вообще - невозможно. Дело в том, что в коде С++ можно ставить логические блоки. С одним из таких мы уже знакомы, это наш "обязательный шаблон":
int main() {
}
Точно так же, внутри этого блока, можно написать другой блок:
int main() {
// тут код до блока
{
// код в блоке
}
// код после блока
return 0;
}
Мы видим, что блок начинается с открывающей фигурной скобки '{', а заканчивается закрывающейся фигурной скобкой '}'. Сам по себе такой блок несет в себе мало смысла и мало толку, обычно, есть какое-то условие, для попадания алгоритма в блок и тогда такой блок приобретает колоссальный смысл! Сегодня мы рассмотрим самые элементарные из них.
Для чего нужны условия? Ну, я думаю, что на этот вопрос не требуется ответа. Это понятно само-собой. Правильная программа - это гибкий организм, который способен вести себя корректно, вне зависимости от ситуаций, в которые он попадает. Ваши программы будут пестрить "разветвлениями", из серии "если это так, то тебе - по этой дороге, а если иначе - тогда - сюда". Программа должна уметь обработать все! Часто, разные желания пользователя пускают алгоритм по разным дорогам, но всегда - это дорога, а не тупик.
Я начну сразу с примера, объясню этот код:

Теперь разберем:
Вначале я расскажу про операторы:
num > 0 // num больше нуля?
num < 0 // num меньше нуля?
num == 0 // num равен нулю? (обратите внимание: ДВА знака "равно"! Один знак "равно", как мы уже знаем - это "положи в num ноль"! Будьте внимательны!)
num != 0 // num НЕ равен нулю?
num >= 0 // num больше ИЛИ равен нулю? (именно в таком порядке! НЕ => !!!)
num <= 0 // num меньше ИЛИ равен нулю?
Примечание: ноль тут только в качестве примера, там может быть любое число!
Примечание: некоторые программисты любят писать наоборот: if(0 == num) и делают это по одной, единственной причине: если они СЛУЧАЙНО напишут if (0 = num) - с одним знаком равно, то программа не скомпилируется, потому что компилятор "думает", что программист пытается "положить" в ноль значение переменной, а это - невозможно. Однако!!! Если написать if (num = 0) - программа скомпилируется! В num будет положен ноль, а это не то, что мы имели ввиду! На лицо - баг, причем - трудноуловимый (пока вы заметите свою оплошность.....)
Лично я не пишу в "обратном" порядке, просто потому что так привык.... стараюсь быть внимательным... надо сказать, что многие программеры не пишут в "обратном" порядке....
Объяснение кода:
Программа получает от пользователя число и:
Если число больше нуля, то она выдает на экран сообщение, что число - положительное
Если число меньше нуля, то она выдает на экран сообщение, что число - отрицательное
В противном случае, она пишет, что число равно нулю
Перед блоком стоит условие if и программа, дойдя до этой строки - проверяет условие, если условие не подходит под обстоятельства, то программа пропустит этот блок. Напоминаю, что границы блока обозначены фигурными скобками. Пропустив этот блок программа пойдет проверять условие в блоке else if. Если программа не найдет совпадения и там, то она неизбежно попадет в блок else. Однако, если программа побывала в одном из предыдущих блоков, то блок else будет пропущен.
То есть: программа зайдет ТОЛЬКО В ОДИН ИЗ НИХ. Если (и это важно понять!) программа найдет совпадение в условии, написанном выше - условия в остальных она даже НЕ БУДЕТ ПРОВЕРЯТЬ!
НО!
Допустимо поменять код следующим образом:
if(num > 0)
{
// обработка
}
if(num < 0)
{
// обработка
}
НО! В данном случае это будет не совсем корректно! Код все равно отработает правильно, но так как число НЕ может быть одновременно больше и меньше нуля - но получится ситуация, когда программа выполнит лишнюю работу: найдя совпадение в первом блоке и пройдя обработку - она полезет проверять условие во втором блоке. Почему? Потому что каждый новый if - новая песня))))
Примечание: обратите внимание!!! я НЕ ставлю точку с запятой после условия if Почему? Потому что условие и блок - одно целое! Если по-ошибке, после if поставить точку с запятой, то компилятор поймет это следующим образом: есть пустой блок if (что допускается в С++), а сразу за ним идет СОВЕРШЕННО не связанный с ним блок - БЕЗ каких-либо условий, то есть - надо зайти в него В ЛЮБОМ случае!
Код с двумя и более if подряд уместен с случае, если условия, которые проверяет программа - НЕ взаимоисключающие. Например, в одном if программа спрашивает больше ли число нуля, а во втором - четное ли оно.
Как мы видим из примера, можно писать сколько угодно if, а как дело обстоит с else if? else if тоже можно писать сколько угодно, НО!!! все они будут отнесены к самому "ближайшему" if И все они будут ВЗАИМОИСКЛЮЧАЮЩИЕ! То есть, попав в один из них - остальные, сколько бы их ни было - программа автоматически пропустит! Есть еще одно ограничение: если вы написали else if - это значит, что выше в коде, есть if! НЕЛЬЗЯ начинать проверки с else if - это не пройдет компиляцию, а так же, нельзя между двумя этими блоками писать код! Закончился один блок - СРАЗУ ЖЕ начался второй блок!
Блок else - может быть ТОЛЬКО ОДИН у каждого if! В него программа попадает только в том случае, если она не выполнила условий выше. И еще: МОЖНО писать блок if без else if ИЛИ без else ИЛИ без обоих! В коде ниже я привожу разные примеры и все они законны:

Окей, давайте разбирать.....
Чтобы не нагружать глаза лишней информацией, я написал только тот код, который соответствует поставленной цели: показать правила и возможности блока if - else, поэтому код внутри блока я не писал, а лишь отметил, что он там есть))) Также, я отделил звездочками блоки, чтобы было понято, где каждый блок начинается, а где заканчивается. В коде так делать не нужно и в будущем я так делать не буду.
Первый блок имеет только if
Второй имеет if, else if (2 раза) и else
Теперь секунду внимания: во втором блоке мы видим проверку "является ли число больше 7?", и ниже, в else if мы спрашиваем "больше ли оно нуля?", так вот, повторю это еще раз, но это будет последний раз: числа 8, 9, .... и так далее в else if НЕ попадут! Хоть они и больше нуля! Это произойдет потому что они "отбработаются" в верхнем if! Если у кого-то еще были до этого вопросы - надеюсь, что сейчас они исчерпаны)))
Естественно, что все уже понимают, что в else при таких условиях - попадут ТОЛЬКО отрицательные числа.... кто этого еще не понял - у меня для вас плохие новости)))) (шучу)
Однако! Например число 17 обработается как в if(num == 17) так и в if(num > 7), в ОБОИХ! Потому что это - два РАЗНЫХ блока if
В третьем блоке я обратил внимание, что можно обойтись и без else if
В четвертом - без else
Отлично... теперь можно немного отвлечься и поговорить о стиле)))
Существуют 2 разных подхода к "внешнему виду" блоков.
Один - вы видите выше. Чтобы понять отличие его от второго, я приведу пример с этим же кодом:

Как мы видим, открывающая скобка блока - сразу после условия И если есть условия else и/или else if - то они ставятся сразу, после закрывающей. Какой из стилей написания вы предпочтете - ваше личное дело, например я отдаю предпочтение последнему и весь последущий мой код будет выглядеть так.
Наконец, я расскажу, что возможна запись:

Как вы видите, if не имеет скобок блока ВООБЩЕ! Это возможно ТОЛЬКО в одном случае: после условия if - ТОЛЬКО одна строка кода, относящаяся к блоку! Если появляется еще хоть одна - скобки ОБЯЗАНЫ БЫТЬ! То есть, так писать можно, но не обязательно.... обычно я не беру одну строку в скобки, это зрительно уменьшает код))) Это правило работает с почти любым блоком! Блок, в котором это не работает мы увидим значительно позже, я отмечу это.
Примечание:На всех примерах сравнения я поставил с одной стороны оператора переменную, а с другой - прописал конкретное число (то есть - константу). НО! Думаю, что понятна следущая вещь: если переменные будут с обеих сторон - это тоже будет работать! Например, в программе нужно сравнить, равна ли переменная num1 переменной num2? При условии, что ОБЕ переменные одинакового типа, например int, можно и нужно написать: if(num1 == num2) и это отработает правильно!
Если я еще не взорвал вам мозг, то позволю себе продолжить))) Мы - на финишной прямой))) Крепитесь!
Теперь я не могу не осветить переменную типа bool. Дело в том, что когда мы пишем, например, if(num == 7) компьютер делает анализ и возвращает bool - правда или ложь. То есть, если у нас есть переменная bool, то можно написать так:
bool a = true;
if(a == true){
}
а можно написать сразу:
if(a){
}
Так как a - правда - то алгоритм попадет в блок.
Что делать, если:
bool b = false;
можно так:
if(b == false){
}
а можно так:
if(!b){
}
то есть поставить перед переменной b оператор "не" (!)
Кто забыл булевые операторы - мигом освежить память! Мы проходили это несколько лекций назад!
Окунемся, немного, в историю... язык С++ был создан в начале 90-х годов. Он совершил революцию в программировании, так как открыл новый взгляд на программирование, НО! До него был славный предшественник - язык С.
Можно сказать, что С - это предшественник многих современных языков! Они, как и С++ - очень похожи на С. И, на самом деле, открою вам маленькую тайну: выучив С++ вы легко поймете код, написанный на Java, C#, PHP.... потому что, за исключением некоторых дополнений все эти языки выглядят одинаково и работают по похожим законам.
Если быть до конца честным, то как такового языка С++ вы еще и не видели, уберите из кода cout и cin - и перед вами - чистейший С. В С просто высвечивали сообщения на экран немного другим способом, который мы обязательно разберем, потому что там есть интересные моменты, но это будет позже.
А пока я расскажу такую вещь:
В языке С отсутствует тип переменной bool. Как же выходят из ситуации программисты С? Очень просто! Если вы объявите переменную любого типа и положите туда ноль - это будет равносильно false, НО если положить ЛЮБОЕ другое число, отличное от нуля (положительное или отрицательное) - это будет true.
Тот же трюк работает и в С++, то есть:
int a = -7;
if(a){
сюда код зайдет
}
if(!a){
сюда НЕ зайдет!
}
float b = 0;
if(b){
сюда код НЕ зайдет!
}
if(!b){
сюда - зайдет!
}
Ну и закончим мы - сложными условиями....
Как мы помним, из лекции о булевых операциях, можно производить несколько сравнений на этом уровне, например нам нужно проверить, является ли число num больше 5-ти, но меньше 10-ти? Пишут так:
if(num > 5 && num < 10) есть такие (и ваш покорный слуга именно такой), которые это берут в скобки: if( (num > 5) && (num < 10) ) - оба эти условия отработают правильно.
Теперь, другой пример: нужно проверить, является ли другое число num меньше 3-х ИЛИ больше 7-ми?:
if(num < 3 || num > 7) ну, или со скобками: if( (num < 3) || (num > 7) )
Можно без конца это дело "усложнять", компьютер разберется со всем!
"Является ли число num больше 3, но меньше 7 ИЛИ больше 15-ти, но меньше 25?"
Вот тут скобки ОЧЕНЬ желательны, чтобы быть уверенными, какое из сравнений будет выполнено первым:
if( (num > 3 && num < 7) || (num > 15 && num < 25) )
Остановитесь на этих примерах, чтобы убедиться, что в них все понятно!
И, наконец, последнее, что хотелось бы добавить - внутри любого блока, можно открыть еще блок и внутри этого - тоже! По идее можно делать бесконечное количество таких "вложений"! Единственное, чем это дело ограничено - правилами хорошего тона. Принято считать, что большое количество вложений (одно в другое) - дурной тон, так как компьютер с этим делом справится, а вот программист, читающий код - вряд ли поймет такое))) Не увлекайтесь!
Итак: на этой лекции мы познакомились с понятием "блок", а так же рассмотрели блок с уловием if-else. Это не было легкой лекцией и может быть некоторые прибывают в легком шоке от количества свалившейся на них информации...НО! Не стоит пугаться или отчаиваться! Это - нормальное чувство! Я помню себя, когда выходил с лекций - всегда прибывал в таком состоянии, однако - сегодня я программист....
Все эти вещи очень скоро улягутся у вас в голове, на свои полочки, и там будет понимание и порядок. Для того, чтобы это произошло - нужно самому писать код, используя эти вещи, и как раз на этом домашнем задании мы напишем первый свой код с условиями!
Напишите программу, которая получает от пользователя символ и выполняет следущие действия:
Если символ это буква - программа пишет в консоль "символ является буквой",
а также: если эта буква заглавная, то программа добавляет: "символ является заглавной буквой"
Если символ это цифра - программа пишет: "символ является цифрой",
а также, если это 5 - добавляет: "это 5",
а также, если это 7 - добавляет: "это 7",
а также, если это 9 - добавляет: "это 9"
В любом другом случае программа пишет: "символ не является ни буквой, ни цифрой"
Запустите программу со следущими символами:
a, Z, 2, 7, [ , @ (кому не видно: пятый символ - квадратная скобка, находится на той же клавише, что и русское 'х')
Подсказка: желательно вспомнить, что существует таблица ASCII и внимательно ее изучить!
Удачи!
Условие:
Напишите программу, которая выдает на экран размеры всех, пройденых на предыдущих лекциях переменных, в байтах. Напоминаю, для этой цели вам необходим оператор sizeof
решение

Результат:

Примечание:
Мои результаты могут расходиться с вашими, по той причине, что эти размеры диктует операционная система
лекцияНа этой лекции мы поднимемся на следующую ступеньку наших возможностей. Сегодня я освещу 2 новые вещи. Начнем по-порядку.
Блоки.
О блоках, как таковых, мало что можно сказать, но не сказать об этом вообще - невозможно. Дело в том, что в коде С++ можно ставить логические блоки. С одним из таких мы уже знакомы, это наш "обязательный шаблон":
int main() {
}
Точно так же, внутри этого блока, можно написать другой блок:
int main() {
// тут код до блока
{
// код в блоке
}
// код после блока
return 0;
}
Мы видим, что блок начинается с открывающей фигурной скобки '{', а заканчивается закрывающейся фигурной скобкой '}'. Сам по себе такой блок несет в себе мало смысла и мало толку, обычно, есть какое-то условие, для попадания алгоритма в блок и тогда такой блок приобретает колоссальный смысл! Сегодня мы рассмотрим самые элементарные из них.
Условия
Для чего нужны условия? Ну, я думаю, что на этот вопрос не требуется ответа. Это понятно само-собой. Правильная программа - это гибкий организм, который способен вести себя корректно, вне зависимости от ситуаций, в которые он попадает. Ваши программы будут пестрить "разветвлениями", из серии "если это так, то тебе - по этой дороге, а если иначе - тогда - сюда". Программа должна уметь обработать все! Часто, разные желания пользователя пускают алгоритм по разным дорогам, но всегда - это дорога, а не тупик.
Блок if - else
Я начну сразу с примера, объясню этот код:

Теперь разберем:
Вначале я расскажу про операторы:
num > 0 // num больше нуля?
num < 0 // num меньше нуля?
num == 0 // num равен нулю? (обратите внимание: ДВА знака "равно"! Один знак "равно", как мы уже знаем - это "положи в num ноль"! Будьте внимательны!)
num != 0 // num НЕ равен нулю?
num >= 0 // num больше ИЛИ равен нулю? (именно в таком порядке! НЕ => !!!)
num <= 0 // num меньше ИЛИ равен нулю?
Примечание: ноль тут только в качестве примера, там может быть любое число!
Примечание: некоторые программисты любят писать наоборот: if(0 == num) и делают это по одной, единственной причине: если они СЛУЧАЙНО напишут if (0 = num) - с одним знаком равно, то программа не скомпилируется, потому что компилятор "думает", что программист пытается "положить" в ноль значение переменной, а это - невозможно. Однако!!! Если написать if (num = 0) - программа скомпилируется! В num будет положен ноль, а это не то, что мы имели ввиду! На лицо - баг, причем - трудноуловимый (пока вы заметите свою оплошность.....)
Лично я не пишу в "обратном" порядке, просто потому что так привык.... стараюсь быть внимательным... надо сказать, что многие программеры не пишут в "обратном" порядке....
Объяснение кода:
Программа получает от пользователя число и:
Если число больше нуля, то она выдает на экран сообщение, что число - положительное
Если число меньше нуля, то она выдает на экран сообщение, что число - отрицательное
В противном случае, она пишет, что число равно нулю
Перед блоком стоит условие if и программа, дойдя до этой строки - проверяет условие, если условие не подходит под обстоятельства, то программа пропустит этот блок. Напоминаю, что границы блока обозначены фигурными скобками. Пропустив этот блок программа пойдет проверять условие в блоке else if. Если программа не найдет совпадения и там, то она неизбежно попадет в блок else. Однако, если программа побывала в одном из предыдущих блоков, то блок else будет пропущен.
То есть: программа зайдет ТОЛЬКО В ОДИН ИЗ НИХ. Если (и это важно понять!) программа найдет совпадение в условии, написанном выше - условия в остальных она даже НЕ БУДЕТ ПРОВЕРЯТЬ!
НО!
Допустимо поменять код следующим образом:
if(num > 0)
{
// обработка
}
if(num < 0)
{
// обработка
}
НО! В данном случае это будет не совсем корректно! Код все равно отработает правильно, но так как число НЕ может быть одновременно больше и меньше нуля - но получится ситуация, когда программа выполнит лишнюю работу: найдя совпадение в первом блоке и пройдя обработку - она полезет проверять условие во втором блоке. Почему? Потому что каждый новый if - новая песня))))
Примечание: обратите внимание!!! я НЕ ставлю точку с запятой после условия if Почему? Потому что условие и блок - одно целое! Если по-ошибке, после if поставить точку с запятой, то компилятор поймет это следующим образом: есть пустой блок if (что допускается в С++), а сразу за ним идет СОВЕРШЕННО не связанный с ним блок - БЕЗ каких-либо условий, то есть - надо зайти в него В ЛЮБОМ случае!
Код с двумя и более if подряд уместен с случае, если условия, которые проверяет программа - НЕ взаимоисключающие. Например, в одном if программа спрашивает больше ли число нуля, а во втором - четное ли оно.
Как мы видим из примера, можно писать сколько угодно if, а как дело обстоит с else if? else if тоже можно писать сколько угодно, НО!!! все они будут отнесены к самому "ближайшему" if И все они будут ВЗАИМОИСКЛЮЧАЮЩИЕ! То есть, попав в один из них - остальные, сколько бы их ни было - программа автоматически пропустит! Есть еще одно ограничение: если вы написали else if - это значит, что выше в коде, есть if! НЕЛЬЗЯ начинать проверки с else if - это не пройдет компиляцию, а так же, нельзя между двумя этими блоками писать код! Закончился один блок - СРАЗУ ЖЕ начался второй блок!
Блок else - может быть ТОЛЬКО ОДИН у каждого if! В него программа попадает только в том случае, если она не выполнила условий выше. И еще: МОЖНО писать блок if без else if ИЛИ без else ИЛИ без обоих! В коде ниже я привожу разные примеры и все они законны:

Окей, давайте разбирать.....
Чтобы не нагружать глаза лишней информацией, я написал только тот код, который соответствует поставленной цели: показать правила и возможности блока if - else, поэтому код внутри блока я не писал, а лишь отметил, что он там есть))) Также, я отделил звездочками блоки, чтобы было понято, где каждый блок начинается, а где заканчивается. В коде так делать не нужно и в будущем я так делать не буду.
Первый блок имеет только if
Второй имеет if, else if (2 раза) и else
Теперь секунду внимания: во втором блоке мы видим проверку "является ли число больше 7?", и ниже, в else if мы спрашиваем "больше ли оно нуля?", так вот, повторю это еще раз, но это будет последний раз: числа 8, 9, .... и так далее в else if НЕ попадут! Хоть они и больше нуля! Это произойдет потому что они "отбработаются" в верхнем if! Если у кого-то еще были до этого вопросы - надеюсь, что сейчас они исчерпаны)))
Естественно, что все уже понимают, что в else при таких условиях - попадут ТОЛЬКО отрицательные числа.... кто этого еще не понял - у меня для вас плохие новости)))) (шучу)
Однако! Например число 17 обработается как в if(num == 17) так и в if(num > 7), в ОБОИХ! Потому что это - два РАЗНЫХ блока if
В третьем блоке я обратил внимание, что можно обойтись и без else if
В четвертом - без else
Отлично... теперь можно немного отвлечься и поговорить о стиле)))
Существуют 2 разных подхода к "внешнему виду" блоков.
Один - вы видите выше. Чтобы понять отличие его от второго, я приведу пример с этим же кодом:

Как мы видим, открывающая скобка блока - сразу после условия И если есть условия else и/или else if - то они ставятся сразу, после закрывающей. Какой из стилей написания вы предпочтете - ваше личное дело, например я отдаю предпочтение последнему и весь последущий мой код будет выглядеть так.
Наконец, я расскажу, что возможна запись:

Как вы видите, if не имеет скобок блока ВООБЩЕ! Это возможно ТОЛЬКО в одном случае: после условия if - ТОЛЬКО одна строка кода, относящаяся к блоку! Если появляется еще хоть одна - скобки ОБЯЗАНЫ БЫТЬ! То есть, так писать можно, но не обязательно.... обычно я не беру одну строку в скобки, это зрительно уменьшает код))) Это правило работает с почти любым блоком! Блок, в котором это не работает мы увидим значительно позже, я отмечу это.
Примечание:На всех примерах сравнения я поставил с одной стороны оператора переменную, а с другой - прописал конкретное число (то есть - константу). НО! Думаю, что понятна следущая вещь: если переменные будут с обеих сторон - это тоже будет работать! Например, в программе нужно сравнить, равна ли переменная num1 переменной num2? При условии, что ОБЕ переменные одинакового типа, например int, можно и нужно написать: if(num1 == num2) и это отработает правильно!
Если я еще не взорвал вам мозг, то позволю себе продолжить))) Мы - на финишной прямой))) Крепитесь!
Теперь я не могу не осветить переменную типа bool. Дело в том, что когда мы пишем, например, if(num == 7) компьютер делает анализ и возвращает bool - правда или ложь. То есть, если у нас есть переменная bool, то можно написать так:
bool a = true;
if(a == true){
}
а можно написать сразу:
if(a){
}
Так как a - правда - то алгоритм попадет в блок.
Что делать, если:
bool b = false;
можно так:
if(b == false){
}
а можно так:
if(!b){
}
то есть поставить перед переменной b оператор "не" (!)
Кто забыл булевые операторы - мигом освежить память! Мы проходили это несколько лекций назад!
Окунемся, немного, в историю... язык С++ был создан в начале 90-х годов. Он совершил революцию в программировании, так как открыл новый взгляд на программирование, НО! До него был славный предшественник - язык С.
Можно сказать, что С - это предшественник многих современных языков! Они, как и С++ - очень похожи на С. И, на самом деле, открою вам маленькую тайну: выучив С++ вы легко поймете код, написанный на Java, C#, PHP.... потому что, за исключением некоторых дополнений все эти языки выглядят одинаково и работают по похожим законам.
Если быть до конца честным, то как такового языка С++ вы еще и не видели, уберите из кода cout и cin - и перед вами - чистейший С. В С просто высвечивали сообщения на экран немного другим способом, который мы обязательно разберем, потому что там есть интересные моменты, но это будет позже.
А пока я расскажу такую вещь:
В языке С отсутствует тип переменной bool. Как же выходят из ситуации программисты С? Очень просто! Если вы объявите переменную любого типа и положите туда ноль - это будет равносильно false, НО если положить ЛЮБОЕ другое число, отличное от нуля (положительное или отрицательное) - это будет true.
Тот же трюк работает и в С++, то есть:
int a = -7;
if(a){
сюда код зайдет
}
if(!a){
сюда НЕ зайдет!
}
float b = 0;
if(b){
сюда код НЕ зайдет!
}
if(!b){
сюда - зайдет!
}
Ну и закончим мы - сложными условиями....
Как мы помним, из лекции о булевых операциях, можно производить несколько сравнений на этом уровне, например нам нужно проверить, является ли число num больше 5-ти, но меньше 10-ти? Пишут так:
if(num > 5 && num < 10) есть такие (и ваш покорный слуга именно такой), которые это берут в скобки: if( (num > 5) && (num < 10) ) - оба эти условия отработают правильно.
Теперь, другой пример: нужно проверить, является ли другое число num меньше 3-х ИЛИ больше 7-ми?:
if(num < 3 || num > 7) ну, или со скобками: if( (num < 3) || (num > 7) )
Можно без конца это дело "усложнять", компьютер разберется со всем!
"Является ли число num больше 3, но меньше 7 ИЛИ больше 15-ти, но меньше 25?"
Вот тут скобки ОЧЕНЬ желательны, чтобы быть уверенными, какое из сравнений будет выполнено первым:
if( (num > 3 && num < 7) || (num > 15 && num < 25) )
Остановитесь на этих примерах, чтобы убедиться, что в них все понятно!
И, наконец, последнее, что хотелось бы добавить - внутри любого блока, можно открыть еще блок и внутри этого - тоже! По идее можно делать бесконечное количество таких "вложений"! Единственное, чем это дело ограничено - правилами хорошего тона. Принято считать, что большое количество вложений (одно в другое) - дурной тон, так как компьютер с этим делом справится, а вот программист, читающий код - вряд ли поймет такое))) Не увлекайтесь!
Итак: на этой лекции мы познакомились с понятием "блок", а так же рассмотрели блок с уловием if-else. Это не было легкой лекцией и может быть некоторые прибывают в легком шоке от количества свалившейся на них информации...НО! Не стоит пугаться или отчаиваться! Это - нормальное чувство! Я помню себя, когда выходил с лекций - всегда прибывал в таком состоянии, однако - сегодня я программист....
Все эти вещи очень скоро улягутся у вас в голове, на свои полочки, и там будет понимание и порядок. Для того, чтобы это произошло - нужно самому писать код, используя эти вещи, и как раз на этом домашнем задании мы напишем первый свой код с условиями!
Домашнее задание
Напишите программу, которая получает от пользователя символ и выполняет следущие действия:
Если символ это буква - программа пишет в консоль "символ является буквой",
а также: если эта буква заглавная, то программа добавляет: "символ является заглавной буквой"
Если символ это цифра - программа пишет: "символ является цифрой",
а также, если это 5 - добавляет: "это 5",
а также, если это 7 - добавляет: "это 7",
а также, если это 9 - добавляет: "это 9"
В любом другом случае программа пишет: "символ не является ни буквой, ни цифрой"
Запустите программу со следущими символами:
a, Z, 2, 7, [ , @ (кому не видно: пятый символ - квадратная скобка, находится на той же клавише, что и русское 'х')
Подсказка: желательно вспомнить, что существует таблица ASCII и внимательно ее изучить!
Удачи!
@темы: C++