Пределы вычислений

Автор ALexey7ov, 19 октября 2015, 09:52

0 Пользователи и 1 гость просматривают эту тему.

rami

Цитата: Yakov от 19 октября 2015, 14:08Как с этим обстоят дела на Mac - не знаю.
Редактировать в LibreOffice Python нельзя (кнопки для редактирования не активны), но можно выполнить "родные" или написать во внешнем редакторе. Пробовал, работает отлично. Может быть когда-нибудь сделают редактор Python. Хорошая "животина" , а живёт на птичьих правах.

JohnSUN

#16
[преамбула ON]
Ну вот... Говорили о степенях и остатках от деления, а заговорили о наличии/отсутствии инструмента...
В программировании всегда есть как минимум два способа решения одной и той же задачи.
Грубая аналогия:
Допустим, нам нужно в деревянную дверь врезать замок. Для этого нужно выбрать паз, а из инструментов под рукой только плоская отвёртка. А паз обычно делают стамеской. И вот тут возникает целый веер вариантов: прикупить ещё и стамеску, снять дверь с петель и отвезти к фрезеровщику, заточить отвертку "под стамеску"...
Ни один из этих вариантов не подразумевает, что паз появится вообще без усилий - поработать все равно придется.
Мы тут дружно решили, что для штрих-кода нужен Пайтон, потому что он уже заточен на работу с "безразмерными" числами. Но ведь его ещё нужно при необходимости прикрутить к офису, отыскать и освоить пристойный редактор кода, написать и отладить код с остатками от деления, воткнуть его в библиотеку макросов, запустить, состыковать с уже написанным кодом на Бэйсике...
А как насчёт "заточить отвёртку"?
[преамбула OFF]
Собственно амбула будет короче:
Function myMod(basis As Long, power As Long, divisor As Long) As Long
REM Остаток от деления (basis ^ power) на divisor
Dim i As Long
Dim rest As Long
rest = 1
For i = 1 To power
rest = rest * basis
rest = rest mod divisor
Next i
myMod = rest
End Function
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

rami

Цитата: JohnSUN от 20 октября 2015, 08:21А как насчёт "заточить отвёртку"?
Ага, об тротуар...
Возьми инструмент по-приличней

Твой макрос делает меньше, чем функция:=MOD() которая даёт тот же результат, но для любых чисел.

Есть две проблемы:
1. Отображение больших чисел
2. Переполнение в функциях Basic для больших чисел
Большие числа можно и нужно записывать в текстовом формате, а для расчётов преобразовывать в число. Если Basic упёрся, а Python мы не любим, то придётся учить методы разложения больших чисел, а это уже выходит за рамки школьной программы :P

kompilainenn

мы любим Питон, ей богу, давайте его юзать?
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

JohnSUN

Этот макрос и не собирался конкурировать с MOD() - он тупо решает задачу "остаток от деления большой степени двойки на не очень большое число". Если divisor заведомо умещается в Long, то и остаток уместится. Он-то будет никак не больше делителя.
А раз так, то:
1. сможет отобразиться
2. не переполнится
Записывать двойку в степени в текстовом виде - чего уж проще: пишем единичку, дописываем нужное количество нулей, помечаем эту строку как bin... Только не нужно это, суета это...
Цитата: kompilainenn от 20 октября 2015, 15:48
давайте его юзать?
Давайте! Только сначала
Цитата: rami от 20 октября 2015, 15:21
Возьми инструмент по-приличней
Без хорошего редактора, вкрученного прямо в офис, мороки с писанием и отладкой много...
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

kompilainenn

Цитата: JohnSUN от 20 октября 2015, 13:57Без хорошего редактора, вкрученного прямо в офис, мороки с писанием и отладкой много...
эм, а давайте заведем багу такую, мол хотим полноценную питон-IDE, встроенную в ЛО, а?
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

rami

Цитата: kompilainenn от 20 октября 2015, 15:41а давайте заведем багу такую, мол хотим полноценную питон-IDE, встроенную в ЛО, а?
Идея отличная, даже если не сделают в ближайшие год-два, стоит попытаться написать. И отмазка есть: Basic переполняется. Тем более, что Python работает, его можно назначать на клавиши и события как обычный макрос. Неудобно тягать Python за хвост из Офиса во внешний редактор и обратно.

JohnSUN

Да. И, как всякая хорошая идея, она уже давно витает в определённых кругах.
Вот только не бага это. "Хотелки" относятся к "нид фьюче"...
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

tagezi

Цитата: JohnSUN от 20 октября 2015, 07:21А как насчёт "заточить отвёртку"?
А можно сделать в Бэсике пользовательский тип, который будет вмещать числа больше чем двойная точность?
(x86_64) Kubuntu 16.04.3 - LibreOffice 6.0.2 / 6.1 alpha

kompilainenn

Цитата: JohnSUN от 20 октября 2015, 17:16Вот только не бага это. "Хотелки" относятся к "нид фьюче"..
ну я все, что пишу на багзиллу, отношу к багам=)

а так-то конечно - это энхенсемент, сиречь хотелка
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут