OberonCore https://forum.oberoncore.ru/ |
|
Интересный сайт - обучение школьников С++ и Паскаль https://forum.oberoncore.ru/viewtopic.php?f=88&t=2008 |
Страница 7 из 13 |
Автор: | Info21 [ Вторник, 03 Декабрь, 2013 12:37 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
Геннадий Тышов писал(а): http://forum.oberoncore.ru/viewtopic.php?p=13427#p13427 Четверг, 28 Февраль, 2008 20:10 Владимир Паронджанов Цитата: ... Сегодня тюрьма имени Эдсгера Дейкстры тормозит повышение производительности труда программистов.... Кто-кто тормозит? |
Автор: | igor [ Вторник, 03 Декабрь, 2013 12:56 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
albobin писал(а): Извините, если ненароком всё-таки обидел, видимо неудачно подшутил. Нет проблем. Ваша шутка, высказанная в форме предположения, для меня безобидна. Мотивация, которую Вы озвучили, весьма популярна в народе, и вполне ожидаема, хоть ко мне и не относится.
|
Автор: | igor [ Вторник, 03 Декабрь, 2013 13:16 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
Геннадий Тышов писал(а): http://forum.oberoncore.ru/viewtopic.php?p=13427#p13427 Четверг, 28 Февраль, 2008 20:10 Владимир Паронджанов Данное высказывание Владимира Паронджанова - поразительный пример того, как можно вывернуть факты наизнанку. Даст фору любому политику. Что характерно, зародыш рационального зерна в этом изречении есть, но нет никакой меры, и выводы доведены до абсурда.
Цитата: Дейкстрианская революция состоит в том, что Дейкстра ввел строгую дисциплину в анархическом царстве процедурного программирования. Но любая дисциплина — это ограничение свободы. Недостаток в том, что Дейкстра ввел неоправданно жесткие ограничения. Фактически Дейкстра добился успеха за счет того, что ввел интеллектуальное рабство и заковал программистов в кандалы. ... Сегодня тюрьма имени Эдсгера Дейкстры тормозит повышение производительности труда программистов. ... |
Автор: | igor [ Вторник, 03 Декабрь, 2013 13:33 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
Геннадий Тышов писал(а): igor писал(а): Никаких exit'ов, брейков и прочей нечисти! Если Вы программист, и в используемом Вам языке программирования имеются данные средства, то Вы должны уметь пользоваться всем, а не открещиваться от них. Геннадий Тышов писал(а): Средства предоставлены Вам создателями языка и среды программирования. Спасибо, что напомнили.Геннадий Тышов писал(а): Если не можете или боитесь, то Вам мешает Ваша зашоренность, возможно Вас так учили и напугали. Пусть моя зашоренность, моя недоученность и мой испуг Вас не беспокоят.
|
Автор: | igor [ Вторник, 03 Декабрь, 2013 13:41 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
igor писал(а): Я программирую головой "А ещё я в неё ем" (С) Из анекдота про Тайсона
|
Автор: | Madzi [ Вторник, 03 Декабрь, 2013 20:06 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
albobin писал(а): Для внешнего наблюдателя (по отношению к макаронам) это выглядит так: Код: [ операторы ] [ макароны ] [ операторы ] т.е. даже нет нарушения линейности. Причём здесь это ? когда я писал Код: ... [ цикл с выходом внутри ] .. то опирался на то, что цикл, в данном случае, является структурной единицей программы. Конкретизируя, считаю что Вирту нужно вернуться к паскалевским традициям: Код: IF условие THEN оператор [ ELSIF условие THEN оператор ] [ ELSE оператор ] ; WHILE условие DO оператор; FOR i = нач TO кон BY шаг DO оператор; REPEAT оператор UNTIL условие; то есть уйти от порочного END, который позволяет лепить последовательность операторов. |
Автор: | albobin [ Вторник, 03 Декабрь, 2013 22:43 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
Не проще ли обойтись без BREAK, чем отказываться от последовательностей операторов. |
Автор: | igor [ Среда, 04 Декабрь, 2013 06:26 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
Madzi писал(а): то есть уйти от порочного END, который позволяет лепить последовательность операторов. А как быть с проблемой "висящего ELSE"? Да к тому же код станет густо усыпан операторными скобками.
|
Автор: | Madzi [ Среда, 04 Декабрь, 2013 13:15 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
albobin писал(а): Не проще ли обойтись без BREAK, чем отказываться от последовательностей операторов. Как показывает практика, а не абстрактные размышления о конях в вакууме, чаще всего более понятен код с BREAK. Под "более понятен" я понимаю меньшее количество времени, затрачиваемое на анализ чужого кода. При этом, естественно, речь не идёт о "индусском коде" и ему подобных. Т.е. о коде, написанном профессионалом (пусть и адептом структурного программирования). С другой стороны, BREAK встречается в циклах примерно в 3 случаях из 100. |
Автор: | Madzi [ Среда, 04 Декабрь, 2013 13:17 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
igor писал(а): Madzi писал(а): то есть уйти от порочного END, который позволяет лепить последовательность операторов. А как быть с проблемой "висящего ELSE"? Да к тому же код станет густо усыпан операторными скобками.Не вижу проблем с висящим ELSE. Если вы о Код: IF условие THEN IF условие THEN оператор ELSE оператор; и Код: IF условие THEN IF условие THEN оператор; ELSE оператор; то тут не проблема языка, а проблема оформления кода Простите, а где в Обероне фигурные скобки ? |
Автор: | ilovb [ Среда, 04 Декабрь, 2013 13:21 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
Madzi писал(а): Как показывает практика, а не абстрактные размышления о конях в вакууме, чаще всего более понятен код с BREAK Вот те раз. А примеры можно? |
Автор: | Madzi [ Среда, 04 Декабрь, 2013 13:23 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
К предыдущему сообщению. По моему мнению, оператор IF следует оформлять следующим образом. Код: IF условие THEN оператор ELSE оператор; ... IF условие THEN IF условие THEN оператор; ELSE оператор; (** => IF условие AND условие THEN оператор ELSE оператор; *) (** Кстати такая конструкция будет не допустима в силу ";" перед ELSE *) ... IF условие THEN IF условие THEN оператор ELSE оператор; (** останется без изменений *) Предвосхищая вопросы по поводу операторных скобок - оформляйте требуемый код процедурами. Код станет лаконичнее и нагляднее. Удобнее к чтению и анализу. Своеобразное прокрустово ложе для нерадивых программистов. |
Автор: | Madzi [ Среда, 04 Декабрь, 2013 13:50 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
ilovb писал(а): Madzi писал(а): Как показывает практика, а не абстрактные размышления о конях в вакууме, чаще всего более понятен код с BREAK Вот те раз. А примеры можно? Код: PROCEDURE Proc1(x, y, epsion : REAL);
VAR x : REAL; i : INTEGER; BEGIN i := 0; WHILE i < 100 DO x := x * Fn1(i) * y; IF (x > epsilon) THEN x := Fn2(y); IF (x > y) THEN EXIT; END; y := y - epsion / 2; END; y := (y + x - i) / epsion; INC(i); END; RETURN y; END Proc1; |
Автор: | albobin [ Среда, 04 Декабрь, 2013 14:13 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
Madzi писал(а): оформляйте требуемый код процедурами. Код станет лаконичнее и нагляднее. Удобнее к чтению и анализу. Оставляя в покое всё остальное, здесь можно согласиться, но отчасти. Сам практикую подобное (но без фанатизма). Не всё так просто из-за необходимости смешивать в одной процедуре разнородную функциональность и получать какой-то "павлино-утко-ёж" одноразовый, с названием соответствующим Да, и с доступом к переменным не всё так просто будет. Насколько я понял, в новом Обероне и локальные процедуры не будут иметь доступ к переменным охватывающей процедуры (могу соврать). PS. Концу - не END! Тьфу, не так. ENDу -не конец! Я - за последовательность (операторов). |
Автор: | ilovb [ Среда, 04 Декабрь, 2013 14:19 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
Madzi: Просьба еще запостить код функций Fn1, Fn2, ибо по вашему "понятному" коду совершенно непонятно что он делает. ps И еще хотелось бы услышать формулировку задачи и доказательство правильности вашего цикла. |
Автор: | Madzi [ Среда, 04 Декабрь, 2013 14:50 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
ilovb писал(а): Madzi: Просьба еще запостить код функций Fn1, Fn2, ибо по вашему "понятному" коду совершенно непонятно что он делает. ps И еще хотелось бы услышать формулировку задачи и доказательство правильности вашего цикла. Считайте Fn1 и Fn2 некоторыми функциями, определёнными на всей числовой прямой. Нужно найти определённое значение, которое... в коде всё описано , неужели не понятно ? Выполняем 100 шагов, если нашли раньше, то молодцы, если нет, то после 100 шага возвращаем то на чём остановились. |
Автор: | ilovb [ Среда, 04 Декабрь, 2013 14:59 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
Вы верно шутите? Думаете что нет никакого значения что делают процедуры и функции внутри цикла? ОК. Ну вот пусть Fn1 возвращает всегда 0. А INC до кучи уменьшает i на единицу (нам ведь пофиг, код и так понятный) ps Вы всегда так код пишете? |
Автор: | igor [ Среда, 04 Декабрь, 2013 15:36 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
Madzi писал(а): igor писал(а): Да к тому же код станет густо усыпан операторными скобками. Простите, а где в Обероне фигурные скобки ? Кстати, ортодоксальные сишники за одно только это люто ненавидят Паскаль, а за одно и тех, кто пишет на Паскале (видимо, чтоб два раза не бегать) |
Автор: | Валерий Лаптев [ Среда, 04 Декабрь, 2013 15:46 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
По коду у меня сразу возникает вопросы. А если передаваемые в качестве параметров x, y, epsilon сразу удовлетворяют условиям выхода? Это же никак не проверяется перед циклом. Или если x постоянно (при входе) < epsilon, то х и у в цикле вычисляются 100 раз? |
Автор: | Madzi [ Среда, 04 Декабрь, 2013 19:02 ] |
Заголовок сообщения: | Re: Интересный сайт - обучение школьников С++ и Паскаль |
ilovb писал(а): Вы верно шутите? Думаете что нет никакого значения что делают процедуры и функции внутри цикла? ОК. Ну вот пусть Fn1 возвращает всегда 0. А INC до кучи уменьшает i на единицу (нам ведь пофиг, код и так понятный) ps Вы всегда так код пишете? Fn1 и Fn2 принимают значения от $-\inf$ до $+\inf$ и возвращают значения в таких же пределах (естественно, что значение ограничено разрешающей способностью чисел с плавающей запятой). Значения функций (Fn1 и Fn2) вычисляются на основе наблюдений внешнего объекта и фиксируются перед каждым вызовом процедуры Proc1 (т.е. внутри процедуры (y = Fn1(x)) === (z = Fn1(x)) бесконечное число вызовов функции с одним и тем же параметром, даст один и тот же результат). |
Страница 7 из 13 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |