| Автор |
Съобщение |
|
TheHungry
Ранг: Почетен член
Регистриран на: Съб Сеп 03, 2005 11:31 am Мнения: 766 Местоположение: Пловдив
|
|
| Пон Апр 04, 2011 11:53 pm |
|
 |
|
Reader
Ранг: Новодошъл
Регистриран на: Нед Апр 17, 2005 9:23 am Мнения: 112
|
Не, имах предвид, че "код"-а след второто условие при него не се изпълнява, ако условието е изпълнено, а в твоя пример се изпълнява винаги.
Ама като не ще да уточни блоковете и условията…
|
| Вто Апр 05, 2011 7:55 am |
|
 |
|
iivantodorov
Ранг: Минаващ
Регистриран на: Пет Фев 05, 2010 7:53 pm Мнения: 25
|
TheHungry благодаря за информацията за книгата, ще я потърся да видя дали ми е по джоба.
Общо взето, е така:
Чудя се за елегантен и правилен подход за изпълнение на тази ситуация, защото с иф и елз ми изглежда много оплетено.
Условие2 трябва да се провери когато е изпълнено условие1 и когато не е изпълнено, затова с онези goto си рекох да спестя малко писане.
Също така след изпълнение на условие2 и 3 и кода за него, искам да изляза до do, без да се изпълни code1.
|
| Вто Апр 05, 2011 9:01 am |
|
 |
|
CarBeta
Ранг: Форумен бог
Регистриран на: Пет Май 01, 2009 4:01 pm Мнения: 1438
|
Тотално си се оплел. Изтрии тия паяжини и започни отначало!
|
| Вто Апр 05, 2011 10:13 am |
|
 |
|
iivantodorov
Ранг: Минаващ
Регистриран на: Пет Фев 05, 2010 7:53 pm Мнения: 25
|
Дайте ми някаква насока, не ми идват много варианти като идеи.
switch не мога да ползвам защото условията да са ><

|
| Вто Апр 05, 2011 10:34 am |
|
 |
|
syscop
Ранг: Форумен бог
Регистриран на: Пет Юни 03, 2005 9:39 pm Мнения: 2283
|
Там дето си чел не пише ли нищо за оператора 'continue' ? Сложи на мястото на 'връшане в do;' 'continue'.
|
| Вто Апр 05, 2011 10:38 am |
|
 |
|
iivantodorov
Ранг: Минаващ
Регистриран на: Пет Фев 05, 2010 7:53 pm Мнения: 25
|
Пише, но не ми е ясно дали ще прескочи от условие2 на code1, или направо в do (мда като се замисля там ще иде). Но в книгата пише, че е лоша практика да се ползва, и щяхте да ме сецнете пак 
|
| Вто Апр 05, 2011 10:44 am |
|
 |
|
syscop
Ранг: Форумен бог
Регистриран на: Пет Юни 03, 2005 9:39 pm Мнения: 2283
|
Приеми 'continue' като goto към условието на цикъла - с други думи след него се завърта нов цикъл. Дали е добра или лоша практика - ако прави прави кода по-ясен и изчистен може да ползваш всичко.
|
| Вто Апр 05, 2011 11:24 am |
|
 |
|
Reader
Ранг: Новодошъл
Регистриран на: Нед Апр 17, 2005 9:23 am Мнения: 112
|
iivantodorov, пак не е ясно дали „code“-тата след условия2 са еднакви. Ако да, и не искаш да използваш continue (макар че си е напълно нормален оператор), един вариант е (добавих номерация на code, за да се различават):
|
| Вто Апр 05, 2011 11:49 am |
|
 |
|
iivantodorov
Ранг: Минаващ
Регистриран на: Пет Фев 05, 2010 7:53 pm Мнения: 25
|
Да, извинявам се, да видим дали така ще е по-разбираемо:
Reader по твоя начин мисля, че ако условие3 е изпълнено ще се изпълни и code1 а не трябва. Да видим дали мога да променя малко твоята идея: Какво мислите за това? Макар че и с continue става, тук не повтарям код2. Ама като видя толкова if-ове и ми изтръпва снагата. Не може да няма друг похват.  ПП. Уф, че съм тъп като галош 46-ти номер Условие3 не трябва да се проверява ако не е изпълнено условие1. И така, прибягвам до continue:
Последна промяна iivantodorov на Вто Апр 05, 2011 1:50 pm, променена общо 2 пъти
|
| Вто Апр 05, 2011 1:33 pm |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
ох въобще не мога да ти следя мисълта, ама много объркано го раздаваш. Имам чуството, че от нещо дребно сам си правиш грандиозни проблеми.
Така не става ли:
Винаги се стреми да избягваш goto и continue. Не, че не можеш да ги ползваш, не е забранено, ама без тях е по-четливо. Ще спестиш някоя и друга наносекунда..... на цената на нечетлив и объркан код.
П.С.
Сега прегледах предишните ти постове и съвсем се обърках. Ти всеки код, който постваш пминава по различни пътища.... Как да ти кажем как да го направиш, като ти самия не можеш да дефинираш какво искаш да направиш.
Ако ти е по лесно дефинирай го разказвателно:
Ако е изпълнено условие бла-бла, да се изпълни код бла-бла и т.н. Ама го прегледай 10 пъти да си сигурен и да ти дадем код, който после да можеш да осмислиш.
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
Последна промяна Цецо на Вто Апр 05, 2011 1:59 pm, променена общо 1 път
|
| Вто Апр 05, 2011 1:49 pm |
|
 |
|
iivantodorov
Ранг: Минаващ
Регистриран на: Пет Фев 05, 2010 7:53 pm Мнения: 25
|
Благодаря ти Цецо, както и на всички взели участие в темата и ударили едно рамо на новобранеца.
Твоя код става, но кажи ми последния в горното ми мнение дали и той ще направи същото?
Казваш, да избягвам continue/goto, но в случая горе ако кода е правилен, избягвам едно повторение на поредица от конструкции както и един if.
Тези if-ве не бавят ли повече изпълнението на програмата?
|
| Вто Апр 05, 2011 1:57 pm |
|
 |
|
syscop
Ранг: Форумен бог
Регистриран на: Пет Юни 03, 2005 9:39 pm Мнения: 2283
|
@iivantodorov
Може ли да бъде изпълнено повече от едно условие едновременно, т.е. условие1 и 3 да речем ? Не редно при три условия да имаш повече от толкова(3) проверки - или нещо не знаем, или нещо не е наред в решението.
|
| Вто Апр 05, 2011 1:59 pm |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
Ми не, моят и твоят код ще правят различни неща. Защото моя ще провери условие 2, само ако е валидно условие 1. Докато ти ще провериш условие 2, даже и условие 1 да е отрицателно.
Проблема е че незнам ти какво точно искаш
Иначе if не е бавен. Нищо от нормалния синтаксис на езика не е "бавно". Забавянията идват от това което си сложил в "code".
Пак ти казвам - мисли мащабно. На структури. Отделни блокове които се изпълняват при ясни условия. Представи си целия алгоритъм като блок-диаграма. Избягвай всячески пресичане на пътища. Стреми се всичко да е изградено на дървовиден принцип. Като тръгнеш от началото в зависимост от условията минаваш през отделни блокчета и стигаш до края, без да се връщаш назад. Разклоняващи се пътища и ясно обособени блокве.
Не се стреми да избягваш повторения на сегменти с код (отделните блокчета). Просто ги сложи в отделна функция и си я викай. Така и кода и скоростта няма да пострадат.
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
|
| Вто Апр 05, 2011 2:00 pm |
|
 |
|
valioman
Ранг: Почетен член
Регистриран на: Съб Сеп 17, 2005 5:07 pm Мнения: 813 Местоположение: Сливен
|
Не мога да разбера .. едно време като ни учеха почнаха с едно много убаво нещо -> блоксхема,алгоритъм ,flowchart .. както искате така го кажете ...
@iivantodorov я вместо компилатора вземи лист и химикал и си го надраскай със стрелкичките , да видиш после как бат Цецо ще ти изгенерира кода, който да copy->paste връщайки му бирата
едит-> Ей цецо ме изпреварил
|
| Вто Апр 05, 2011 2:08 pm |
|
|