Loading...
Lescet avatar Lescet 25 Точки

Задачите: Metric Converter и Speed Info

Здравейте,

Двете задачи са от Simple Conditional Statements, едната metric я решавам със Switch Case, другата я решавам като използвам if else .. и операторите && и || . Въпросът ми може ли да се решат само с If else без операторите && и без суитч кейс ... При втората, като я решавам с if else ми прави повече от една проверка в смисъл изписва ми едновременно ако числото е над 100 и над 1000, например ако е 1100 .. Благодаря !

Тагове:
0
Programming Basics
RoYaL avatar RoYaL Trainer 6849 Точки

Аии разбира се, че може. Някога в езиците е нямало switch, а програми пак са се писали :-) В някои езици все още няма, де (пр. python).

Ако смениш case-овете с elseif-ове няма причина да не стане.

switch (age) {

      case 22: // do something         break;

      case 25: // do something else          break;

}

 

Е абсолютно същото като

if (age == 22) { // do something } else if (age == 25) { // do something else }

Ако искаш без else if ще трябва да проверяваш дали е и различно от предходните условия. Помисли над това : Питаш дали годините на някого не са повече 20, после ELSE IF питаш дали не са повече от 10. Ако въведеш 30, ще влезе в първата проверка. Но нека сега погледнем нещата с отделни IF-ове без ELSE IF - ще влезе и в двете проверки. Вариантът ти е във втората, да изключиш първата - т.е. По-големи от ДЕСЕТ и едновременно по-малки от ДВАДЕСЕТ.

if (age > 20) {

   // do smth

} else if (age > 10) {

   // do smth else

}

 

би било

if (age > 20) {

   // do smth

}

if (age > 10 && age <= 20) {

   // do smth else

}

 

Логическите оператори са евентуално или вложени условия или паралелни такива. Замисли се - ако искаш годините да са равни на 22 ИЛИ на 25 това са две отделни проверки (паралелни)

if (age == 22) {  // do something  }

if (age == 25) {  // do exactly the same thing }

 

Съответно ако искаш годините да са по-големи от 25 и едновременно по-малки от 30, това означава че след като влезеш в условието да са по-големи от 25, трябва да провериш дали все пак са по-малки от 30. Т.е. при подадени години 50 ще влезеш в първото условие, но вложеното условие за 30 ще ги филтрира. Обаче при 27 ще влезе в първото условие и след това и във второто.

if (age > 25) {

    if (age < 30) {

          // do smth for age > 25 && age < 30

     }

}

Може би за такива неща трябва да се замисляш с думи, не с код, за да не се бъркаш. Кодът се пише лесно. Логиката е важна. В интерес на истината това са неща, които най-вероятно са говорени в училище в часове по Логика (мисля така се казваше предметът?). Например казвай си ги с такива изречение "Ако годините на Пешо са повече от 25 и по-малко от 30, той трябва да..." и неговият еквивалент "Ако годините на пешо са повече от 25, ако след това годините па Пешо са по-малко от 30, той трябва да..."

Но в крайна сметка защо би искал да усложняваш живота си и да не използваш определени операции, оператори или конструкции?

3
Lescet avatar Lescet 25 Точки

Благодаря за изчерпателния отговор, оценявам го! Идеята беше без логически оператори и без switch case за задачата Speed info, Защо не искам да ги ползвам, предположих, че щом е Simple Conditions и все още не сме ги взели, може би е хубаво да пробваме да не ги използваме :) Ако ги ползвам я решавам без проблем.  : ))

0
gabi.ivanova avatar gabi.ivanova 370 Точки

Ако знаеш нещо, ползвай го без значение дали сте го взели или не. :) Ако просто се чудиш дали може да спестиш логическите оператори (ако съм разбрала правилно) в условието на if-a - да можеш, с вложени if-ове
 

else if (speed <= 1000 && speed > 150)
{
    Console.WriteLine("ultra fast");
}


Nested ifs

else if (speed <= 1000)
{
    if (speed > 150)
    {
       Console.WriteLine("ultra fast");
    }
}

 

А операторът || може да се избегне с 2 if-a като проверяваш за всяко условие. 
 

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.