0 / 0 / 0
Регистрация: 27.08.2013
Сообщений: 10
|
||||||
1 | ||||||
Как правильно делать пространства имён?02.12.2013, 00:25. Показов 2781. Ответов 12
Метки нет (Все метки)
Переписываю программу с C++ на python по той причине, что обнаружил для себя модуль bigfloat, позволяющий вручную задавать определённую точность вычислений. На сях пробовал gmp.h, но возникала уйма проблем при использовании различных методов из math.h. Ситуация плачевна, на C++ переписывалась программа с pascal со своим набором goto.. Возник вопрос, как на python можно расширить область определения одной функции до другой..скажем, есть код на сях:
Также возникает вопрос, как заменить обилие goto в дремучей программе при переписи на python? Пока только находил решения вида генерации исключений, модуля goto.
0
|
02.12.2013, 00:25 | |
Ответы с готовыми решениями:
12
Как запретить переименование пространства имен в xml? Пространства имён почему то не правильно как то работает скрипт или пространства имен В чем разница между подключением пространства имен в начале файла и внутри другого пространства имен? Что делать c ошибкой "Не удалось найти имя типа или пространства имен"? |
561 / 484 / 168
Регистрация: 14.02.2012
Сообщений: 1,561
|
|
02.12.2013, 00:33 | 2 |
yavalvas, это, как минимум, плохое знание архитектуры программы. Но если так сильно надо, то почитайте об nonlocal. Хотя советую Вам пересмотреть алгоритм программы, ибо используя такие методы как goto, Вы делаете код ужасно нечитабельным.
nonlocal
0
|
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
|
02.12.2013, 01:00 | 3 |
Согласен.
Я считаю, что раз программа переписывается это хороший повод улучшить её и изменить архитектуру. Просто у вас получается дикий быко код. Добавлено через 13 минут Не обязательно, если функция на пример просто выводит какое-то значение, то она не обязана ни чего возвращать. В каждой задаче своё решение, нужно разбирать конкретную задачу и решать как поступить. Раз использовался goto значит программа была не правильно спроектирована и её точно нужно переделывать.
0
|
0 / 0 / 0
Регистрация: 27.08.2013
Сообщений: 10
|
|
02.12.2013, 01:11 [ТС] | 4 |
Прекрасно понимаю, что нужно пересмотреть архитектуру. Но распутывание спагетти-кода не представляется возможным в связи с тем, что сроки поджимают. В python функция всегда что-то возвращает, как мне известно. Если не писать return, то вернёт None. Вся соль в том, как расширить пространство имён, либо как организовать обмен значениями между main() и bla().Программа проектировалась не мной и где-то пару десятилетий назад. Составил было алгоритм для распутывания goto и понял, что переписывание в более-менее удобоваримом виде за короткое время не представляется возможным, поэтому уж лучше набыдлокодить.
0
|
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
||||||
02.12.2013, 01:14 | 5 | |||||
Юзай
0
|
0 / 0 / 0
Регистрация: 27.08.2013
Сообщений: 10
|
|
02.12.2013, 01:20 [ТС] | 6 |
Python3 из-за не подойдёт ввиду отсутствия модулей. Спасибо за предложенную возможность, попробовал.
0
|
840 / 478 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
|
|
02.12.2013, 09:16 | 8 |
yavalvas, что же за задача, что без goto трудно... Выложите задание.
0
|
0 / 0 / 0
Регистрация: 27.08.2013
Сообщений: 10
|
|||||||
04.12.2013, 10:56 [ТС] | 9 | ||||||
На pascal-е вот. На C переделанное ничем почти не отличается.
Расчет интерферометра
0
|
840 / 478 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
|
|
04.12.2013, 14:38 | 10 |
yavalvas, задание, а не код)
0
|
0 / 0 / 0
Регистрация: 27.08.2013
Сообщений: 10
|
|
04.12.2013, 20:22 [ТС] | 11 |
Ну извольтесс, задание не стоит как-то разглашать, да и это не относится к вопросу в теме. А по коду и так не понятно, какое задание. Алгоритм там заложен правильный, вот только распутать его нелегко.
Добавлено через 1 минуту Да и я оставлял ссылку на dumpz, это уже cf преобразовал.
0
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|
04.12.2013, 20:45 | 12 |
задание одно, а его реализаций может быть множество
он может сдохнуть, поэтому весь код должен размещаться на форуме тот код лучше стереть во-первых, автор использует глобальные переменные, а не инкапсулирует, во-вторых, автор использует goto (и с каждой строчкой всё больше и больше), в-третьих, он использует короткие, ничего не значащие имена, в-чётвертых, он использует повторы вроде sss1, sss2, sss3 вместо того, чтобы сделать массивы, в-пятых, пишет одно и то же для вывода, вместо того, чтобы написать обёртку, в-шестых, там пошёл копипаст и он комментариями уже пишет пояснения, потому что без комментариев ничего не понятно уже короче, полный комлект и зря время тратишь, это некачественный код (он нечитаемый) автор, похоже, не только не знает правила хорошего тона, но и писал его в спешке
1
|
0 / 0 / 0
Регистрация: 27.08.2013
Сообщений: 10
|
|
04.12.2013, 22:18 [ТС] | 13 |
А ещё если бы я не разобрал бы этот "мегакод", то меня бы вполне возможно отчислили из одного заведения) Хотя если бы полностью разобрал, то был бы уже в дурке. Уже успел настрадаться и смириться. И его действительно было бы проще переписать с нуля..только всё и сразу осознавать, что в энтом коде не легко..распутывать те goto тоже не в кайф.
0
|
04.12.2013, 22:18 | |
04.12.2013, 22:18 | |
Помогаю со студенческими работами здесь
13
Имя типа или пространства имен отсутствует в пространстве имен Имя типа или пространства имен отсутствует в пространстве имён Не возникает ли коллизия имен, если использовать два пространства имен, и в каждом из них будут одноименные? Как импортировать println() из пространства имен? Как удалить переменную из пространства имен js? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |