Добрый день уважаемые читатели.
Вот мы и добрались с вами до одной из самых интересных тем в программировании. Конструкции предназначены для управления программой. В предыдущих уроках мы с вами разбирали простейшие программы, которые последовательно выполнялись, их еще можно назвать линейными. Но в большинстве случаях работа программы зависит, от каких либо условий. Если условие выполняется надо действовать так, иначе по другому. Данные примеры хорошо проиллюстрированы в играх. Когда по сюжету вы можете взяться за выполнения задания то произойдет что то, если нет то ничего не произойдет.
Операторы сравнения.
В программировании JAVA помимо арифметических операторов, которые мы с вами прошли на прошлых занятия, есть операторы сравнения, не которые уже для вас знакомы, вы их изучали в начальной школе.
1 2 3 4 5 6 7 8 9 10 11 |
> - больше >= - больше либо равно < - меньше <= - меньше либо равно == - равно != - не равно |
Операторы сравнения используются в операциях сравнения как мы видим из названия. Результатом данных операций является true или false(истина или лож)Посмотрим листинг 6.1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
package myfirstprogram; public class MyFirstProgram { public static void main(String[] args) { int a=1; int b=2; //a меньше чем b ? =истина System.out.println(a<b); //a больше чем b ? =лож System.out.println(a>b); //a не равно b ? =истина System.out.println(a!=b); //a равно b ? =лож System.out.println(a==b); // a меньше или равно b ? = истина System.out.println(a<=b); } } |
1 2 3 4 5 6 7 |
run: true false true false true СБОРКА УСПЕШНО ЗАВЕРШЕНА (общее время: 0 секунд) |
листинг 6.1
Логические операторы.
Иногда в поставленных нами задачах нам необходимо проверить более одного условного выражения. Вот в них и применяются логические операторы. Результат которые можно присвоить boolean переменным. В листинге 6.2 рассмотрим их.
1 2 3 |
&& =и ||=или !=не |
листинг 6.2
Условные операторы.
Логические операторы и операторы сравнения используется в конструкторе if-если его называют условным оператором, и else иначе. Блок else не является обязательным, но я советую его использовать, да бы вам не запутаться при написании своих программ. Так же важно запомнить блок конструкции if else необходимо окружать фигурными скобками внутри которых выполняется операция если выражение истина. Вариации ветвления конструктора могут быть разные, рассмотрим с логическими операторами и операторами сравнения. В листинге 6.3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
package myfirstprogram; import java.util.Scanner; public class MyFirstProgram { public static void main(String[] args) { int a=1; int b=2; int c=1; //начало блока кода с оператором сравнения if(a<b){ //Выражение true и войдет в блок //для выполнения последующих операций } if(a>b){ //Выражение false и в блок не войдет //и продолжит свое выполнение }else{ //else -перевод с английского иначе //Войдет в этот блок и выполнит операцию //так как предыдущий блок у нас ложный } if(a!=b){ //Выражение истина и в этот блок мы войдем // a не равно b if(a>b){ //это выражение ложно а меньше чем b //и по этому в этот блок мы не попадем }else if(a==c){ //этот блок истина а равно с } } //конец блока кода оператора сравнения //начало блока кода логическими операторами if ((a==c)&&(a<b)){ //a равно с, и a меньше b // условие истина, программа выполнить //внутри фигурных скобок ваш код } if ((a!=b)||(b>c)){ //a не равно b, и b больше с //условие истина, программа выполнит //внутри фигурных скобок ваш код } //конец блока кода с логическими операторами } } |
листинг 6.3
Приоритет логических операций.
Как мы помним из математики, арифметические операции имеют приоритет выполнения, логические операции так же имеют свой приоритет. Ход выполнения, по приоритету можно увидеть ниже.
- Операция в скобках.
- Логические операции НЕ= !
- Логические отношения.
- Логическая операция И =&&
- Логическая операция ИЛИ= ||
Так же как и в арифметических операциях ход выполнения программы можно изменить скобками, я вам советую именно ими и задавать приоритет, таким образом вы избежите множество ошибок.
Пишем программу «Что надеть?»
Напишем программу, а за одно рассмотрим наглядный пример этого занятия, я думаю вы не раз сталкивались с такой ситуацией, когда зная температуру воздуха, вы не знали что надеть. Это программа вам в этом подскажет, а так же поможет вам понять в каких случаях применяются логические операторы листинг 6.4.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
package myfirstprogram; import java.util.Scanner; public class MyFirstProgram { public static void main(String[] args) { Scanner scan=new Scanner(System.in); //максимальная положительная температура double maxPlus=30; //средняя температура double normalPlus=15; //ноль по цельсию double zero=0; //средняя минусовая температура double normalMinus=-15; //максимальная минусовая температура double maxMinus=-30; System.out.println("Введите температуру воздуха в цельсиях"); System.out.print("t °C= "); //температура введенная пользователем double resualt=scan.nextDouble(); if(resualt>=maxPlus){ System.out.println("Сегодня очень жарко, надень майку и шорты!"); }else if((resualt<maxPlus)&&(resualt>normalPlus)){ System.out.println("Сегодня тепло, надень брюки и рубашку "); }else if((resualt>zero)&&(resualt<=normalPlus)){ System.out.println("Сегодня прохладно, надень куртку"); }else if(resualt==zero){ System.out.println("Вот и зима начилась, куртку и шапку не забудь!"); }else if((resualt<zero)&&(resualt>=normalMinus)){ System.out.println("За окном настоящая зима, надевай пальто, шапку и перчатки"); }else if((resualt<normalMinus)&&(resualt>maxMinus)){ System.out.println("На улице вьюга и жуткая холодина, надевай шапку ушанку, валенки и варешки"); }else if((resualt<=maxMinus)){ System.out.println("Сейчас на столько холодно, что скоро батареи замерзнут, на улицу лучше не ходить"); } } } |
листинг 6.4
В программе «Что надеть?» я так её назвал, после ввода пользователем числа, согласно его окружающей температуры. В конструкторе if-else происходит проверка на true или false (ложно или истина) выражения, если false то выполняется следующий блок кода, до тех пор пока выражение не станет true то есть истиной. После чего программа выдаст ответ, что нам одеть. Для подробного изучения программы, вам поможет отладка в среде программирования, запустить ее можно клавишей F7, нажимая один раз клавишу F8 вы совершаете, следующий шаг выполнения кода программы. Тем самым вы увидите подробно как работает программа «Что надеть?» шаг за шагом, и разберетесь как работают конструкция if-else. Отладка очень помогает найти в коде проблемы, или ошибки, и устранить их, обязательно ей воспользуйтесь и разберитесь как ей пользоваться, в будущем это вам очень облегчит написание ваших программ.
Оператор switch.
Оператор switch, можно представить альтернативой оператора if. Значение переменной стоящей после оператора switch в скобках вычисляется и программа переходит только к одному из case блоков, при совпадении аргумента с результатом вычисления. Однако не забывайте вставлять в конец каждого блока ключевое слово break; Это команда позволяет после выполнения кода выйти из оператора switch, если этого не сделать, весь код последовательно выполнится вне зависимости от результата вычисления. В блок default: программа входит только в том случаи если выражение не совпадает не с одним из вариантов case блока, блок default не является обязательным. Посмотрите листинг 6.5 нашей программы Что надеть? которая модернизирована и в ней используется оператор switch вместо if
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
package myfirstprogram; import java.util.Scanner; public class MyFirstProgram { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //максимальная положительная температура int maxPlus = 30; //средняя температура int normalPlus = 15; //ноль по цельсию int zero = 0; //средняя минусовая температура int normalMinus = -15; //максимальная минусовая температура int maxMinus = -30; System.out.println("Введите температуру воздуха в цельсиях кратно 10"); System.out.print("t °C= "); //температура введенная пользователем int resualt = scan.nextInt(); switch (resualt) { case 30: System.out.println("Сегодня на столько жарко что можно под солнцем жарить яичницу, надевай плавки и бегом на речку"); break; case 20: System.out.println("Сегодня тепло, надевай футболку и шорты"); break; case 10: System.out.println("Становиться прохладно, надевай брюки и рубашку"); break; case 0: System.out.println("Уже довольно холодно, надевай куртку и шапку"); break; case -10: System.out.println("На улице настоящая зима, надевай пальто, шапку и перчатки "); break; case -20: System.out.println("На улице вьюга и жуткая холодина, надевай шапку ушанку, валенки и варешки"); break; case -30: System.out.println("Сейчас на столько холодно, что скоро батареи замерзнут, на улицу лучше не ходить"); break; default: System.out.println("Вы ввели температуру не кратно 10, округлите ваше значение"); System.out.println("Пример ввода -30, -20, -10, 0, 10, 20, 30"); } } } |
листинг 6.5
Домашнее задание:
- Написать программу в которую пользователь вводит любые 2 числа, и вывести в консоль наибольшее число из них.
- Написать программу в которую пользователь вводит 3 числа, вывести в консоль среднее число из них.
- Модернизируйте программу Что надеть?, по своему вкусу, так что бы она была более гибкой в работе и принимала любые значения, исходя из этого выдавала ответ что же одеть согласно температуре. В том числе сделайте систему защиты от пользователя, который может ввести в поле значения температуры не в цифрах, а в тексте или математические знаки итд. что вывозит сбой нашей программы.
- Написать программу в которое вводится пользователем любое число до 100, обозначающая количество растущих яблок на дереве, программа должна вывести введенное число и согласно склонению по падежу вывести нужный результат. Пример ответа будет такой. 1 яблоко, 2 яблока, 5 яблок.