2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Вывод на дисплей в PARI/GP
Сообщение28.09.2024, 09:43 


20/02/20
83
Здравствуйте.Уже больше года пользуюсь PARI,но все откладывал на потом простой вопрос интерфейса,а тут "приспичило".Если длинная сессия или выводится большой массив данных,то как вывести на дисплей начало сессии или начало массива? "Лифт" не помогает-после поднятия вверх он просто стопорится.

 Профиль  
                  
 
 Re: Вывод на дисплей в PARI/GP
Сообщение28.09.2024, 12:25 
Аватара пользователя


29/04/13
8307
Богородский
Во-первых, есть тема «интерактивный курс: введение в программирование на PARI/GP»

А во-вторых, покажите прогу или фрагмент.

 Профиль  
                  
 
 Re: Вывод на дисплей в PARI/GP
Сообщение29.09.2024, 10:00 


20/02/20
83
Yadryara
Во-первых,в интерактивном курсе я не нашел ответа на такой простой вопрос редактирования.
А во-вторых,для примера годится любая прога с длинной печатью.скажем,
Код:
forprime(p=2,10^5,print1(p,"  "))
.
Допустим,после вывода на дисплей надо вернуться к началу сессии,а как?Лифт вверх дойдет до строки
61469 61471 ... и все.

 Профиль  
                  
 
 Re: Вывод на дисплей в PARI/GP
Сообщение29.09.2024, 10:10 
Аватара пользователя


29/04/13
8307
Богородский
Мой вопрос был о том, стоит ли создавать отдельную тему вместо того, чтобы написать в общую.

genk в сообщении #1656623 писал(а):
для примера годится любая прога с длинной печатью

А, ну я в таких случаях печатаю в файл и не парюсь.

 Профиль  
                  
 
 Re: Вывод на дисплей в PARI/GP
Сообщение29.09.2024, 10:39 
Заслуженный участник


20/08/14
11867
Россия, Москва
genk в сообщении #1656623 писал(а):
Допустим,после вывода на дисплей надо вернуться к началу сессии,а как?Лифт вверх дойдет до строки
По русски лифт называется прокруткой окна вверх. И в свойствах окна можно задать любой желаемый размер буфера экрана (отдельно от размера самого окна) по вертикали, вплоть до 9999 строк под Win7. Это первое.
Второе, для рассматривания длинных сообщений удобнее или писать их сразу в файл (вместо print везде поставить write) или включить запись в лог-файл всего выводимого на экран командой \l file.
В третьих можно просто не выводить столь много, лишь начало и конец (да, это придётся исправить код вывода) или после окончания продублировать начало ещё раз, или ещё много вариантов решения вашей проблемы.
К PARI/GP это имеет довольно мало отношения, это вопрос работы операционной системы с консольными окнами.

-- 29.09.2024, 10:43 --

А, да, если вопрос не про посмотреть на вывод, а про историю команд и результатов, то первые получаются кнопочкой управления курсором со стрелкой вверх (и вниз), а вторые имеют каждый свой уникальный номер с % слева, можно прям так его дальше и использовать, вместо числа набирая %123.

 Профиль  
                  
 
 Re: Вывод на дисплей в PARI/GP
Сообщение29.09.2024, 10:56 


05/09/16
12108
genk в сообщении #1656623 писал(а):
Допустим,после вывода на дисплей надо вернуться к началу сессии,а как?Лифт вверх дойдет до строки
61469 61471 ... и все.

Команда \l включает/выключает лог. После этого всё что вводится-выводится, направляется в лог файл (по умолчанию pari.log).
? \l
log = 1 (on)
[logfile is "pari.log"]
? \l
log = 0 (off)
[logfile was "pari.log"]
?

Можно задать своё имя файла для лога
? \l my-log.txt
log = 1 (on)
[logfile is "my-log.txt"]


Лог ведётся методом добавления. Т.е. если файл уже есть на момент включения лога, то новый текст добавляется в конец этого файла.

 Профиль  
                  
 
 Re: Вывод на дисплей в PARI/GP
Сообщение30.09.2024, 11:21 


20/02/20
83
Dmitriy40 и wrest
Спасибо,немного просветили.Вообще-то,длинную печать я привел просто для примера,а меня прежде всего интересовал вопрос о прокрутке в начало сессии,когда несколько часов работаешь с PARI,а потом надо прокрутить до какого-то момента.Про историю со стрелкой вверх и %n я знал,но не всегда ведь помнишь номер нужного тебе результата.И еще про длинную печать:результату выполнения оператора "for" и похожих с ним никакой номер вообще не присваивается,а только для определяющих функций и числовых результатов? Я правильно понимаю?

 Профиль  
                  
 
 Re: Вывод на дисплей в PARI/GP
Сообщение30.09.2024, 12:21 
Заслуженный участник


20/08/14
11867
Россия, Москва
genk
Остаётся только повторить что вопрос прокрутки окна (а не сессии) вверх - вопрос не PARI/GP, а операционной системы. И совет использовать файл лога.

genk в сообщении #1656747 писал(а):
И еще про длинную печать:результату выполнения оператора "for" и похожих с ним никакой номер вообще не присваивается,а только для определяющих функций и числовых результатов? Я правильно понимаю?
Присваивается, хотя и не показывается. Но смысла в нём нет, он равен результату выполнения самого цикла forprime, а не его внутренностей, что бы они там ни делали:
Код:
? 123
%1 = 123
? forprime(p=2,10,print1(p,","))
2,3,5,7,
? 456
%3 = 456
? %2
%2 = 0
? x=forprime(p=2,10,print1(p,","));x
2,3,5,7,
%4 = 0
Видите, номер %2 остался за forprime, но он равен 0 потому что сам forprime вернул 0 (или не вернул ничего и это "ничего" подменилось на 0 по умолчанию).
Вообще в PARI/GP и нет классических операторов, все они - функции, что-то обязательно возвращающие (или 0 если вернуть нечего).

genk
И ставьте пробелы после знаков препинания, тут не СМС, символы экономить не надо, глаза же ломаются читать.

-- 30.09.2024, 12:26 --

Хотя нет, операторы есть, но они скорее команды управления настройками, чем операторы языка, я про команды из списка ?\.

 Профиль  
                  
 
 Re: Вывод на дисплей в PARI/GP
Сообщение01.10.2024, 08:42 


20/02/20
83
Dmitriy40
Dmitriy40 в сообщении #1656628 писал(а):
И в свойствах окна можно задать любой желаемый размер буфера экрана (отдельно от размера самого окна) по вертикали, вплоть до 9999 строк под Win7.

Как я понимаю,поскольку буфер экрана касается окна PARI/GP,то размер буфера регулируется какой-то командой(функцией) в самом PARI? Что это за функция и как это делается.

-- 01.10.2024, 09:33 --

wrest
wrest в сообщении #1656631 писал(а):
Команда \l включает/выключает лог. После этого всё что вводится-выводится, направляется в лог файл (по умолчанию pari.log).

После записи в лог файл я вызываю его
Код:
\r pari.log
(или под именем),и начинается свистопляска-бесконечно мелькают какие-то предыдущие строки(видимо,из предыдущих лог файлов),так что невозможно остановить даже командой Ctrl-C и приходится перезагружать PARI.Что здесь не так и можно ли стереть всю историю(кроме записанных программ,разумеется)?

 Профиль  
                  
 
 Re: Вывод на дисплей в PARI/GP
Сообщение01.10.2024, 09:51 


05/09/16
12108
genk в сообщении #1656923 писал(а):
После записи в лог файл я вызываю его

genk в сообщении #1656923 писал(а):
Что здесь не так

Лог надо смотреть не в самом pari/gp, а в стороннем приложении. Например в notepad если у вас windows или как вы привыкли смотреть в текстовые файлы.
genk в сообщении #1656923 писал(а):
можно ли стереть всю историю(кроме записанных программ,разумеется)?

Файл лога можно удалить (средствами операционной системы) например перед запуском pari/gp или перед включением логирования, тогда туда запишется только текущая сессия.

Сформулируйте, что вы вообще хотите, и как вам пришла идея использовать \r. А так же -- как вы запускаете pari/gp (в какой операционной системе).

 Профиль  
                  
 
 Re: Вывод на дисплей в PARI/GP
Сообщение01.10.2024, 12:27 
Заслуженный участник


20/08/14
11867
Россия, Москва
genk в сообщении #1656923 писал(а):
Как я понимаю,поскольку буфер экрана касается окна PARI/GP,то размер буфера регулируется какой-то командой(функцией) в самом PARI? Что это за функция и как это делается.
В третий раз повторю: размерами (и положенияем) окна консоли, в том числе в котором работает PARI/GP, занимается ОС (Операционная Система). И хотя она предоставляет функции и запроса и изменения этих свойств окна, PARI/GP ими не пользуется и соответствующих функций не имеет. Как и не имеет например функций управления курсором, чего иногда очень не хватает.

genk в сообщении #1656923 писал(а):
После записи в лог файл я вызываю его
Этим Вы его запускаете на выполнение в PARI/GP (как если бы каждую строку вводили с клавиатуры) - и разумеется получаете полную чушь, ведь в логе не только корректные команды для PARI/GP, а и куча другой информации. Если так уж хочется его прочитать в PARI/GP, то есть команда str=readstr("pari.log"), читающая файл в массив строк str, который можно потом или как-то обработать или просто вывести на экран циклом foreach(str,s,print(s)), хотя и непонятно зачем.
Чтобы не было таких проблем, заранее подумайте что и как будете выводить в программе на экран, а что в файл(ы). И не нужно будет прокручивать тысячи строк.

genk в сообщении #1656923 писал(а):
можно ли стереть всю историю
Можно, или средствами ОС, или вызвав их, те самые средства ОС, из самого PARI/GP командой system, например для винды system("del pari.log"). Но из буфера окна история не сотрётся, её можно лишь прокрутить выше границы окна командой вроде for(i=1,1e4,print)), ну или очистить окно консоли снова средствами ОС system("cls").

Действительно очень плохо понятно чего же Вы на самом деле хотите. И какими средствами располагаете (например умеете ли пользоваться командами ОС) и какими желаете решить свою реальную задачу (далеко не всё можно сделать только в PARI/GP).

 Профиль  
                  
 
 Re: Вывод на дисплей в PARI/GP
Сообщение02.10.2024, 14:32 


20/02/20
83
Dmitriy40
У меня Win7.Что мне надо,я уже объяснил.Видимо,в PARI это не предусмотрено.Поиск по %n бессмысленен,когда надо что-то исправить в программе в текущей сессии,т.к.номер присваивается,но не показывается.А вот как записать длинную печать в файл,я не знаю.После набора все той же программы
Код:
forprime(p=2,10^7,print1(p,","))
,если Enter,то распечатает на экране,а куда вставить Write с именем файла и как потом в PARI извлечь из директории всю таблицу с помощью Read?

 Профиль  
                  
 
 Re: Вывод на дисплей в PARI/GP
Сообщение02.10.2024, 15:00 


05/09/16
12108
genk в сообщении #1657072 писал(а):
Что мне надо,я уже объяснил.

Ок, тогда удачи вам, вдруг кто понял объяснение :!:

-- 02.10.2024, 15:02 --

genk в сообщении #1657072 писал(а):
куда вставить Write с именем файла

Вставлять вместо print() или после print()

write(filename, {str}*)
Writes (appends) to filename the remaining arguments, and appends a newline (same output as print).


write1(filename, {str}*)
Writes (appends) to filename the remaining arguments without a trailing newline (same output as print1).

-- 02.10.2024, 15:03 --

genk в сообщении #1657072 писал(а):
и как потом в PARI извлечь из директории всю таблицу с помощью Read?

Бессмысленно.

 Профиль  
                  
 
 Re: Вывод на дисплей в PARI/GP
Сообщение03.10.2024, 01:27 
Заслуженный участник


20/08/14
11867
Россия, Москва
genk в сообщении #1657072 писал(а):
и как потом в PARI извлечь из директории всю таблицу с помощью Read?
Как я уже сказал выше:
Dmitriy40 в сообщении #1656973 писал(а):
Чтобы не было таких проблем, заранее подумайте что и как будете выводить в программе на экран, а что в файл(ы).
Т.е. сначала думаем, потом пишем код. И получится что print и не нужен, а нужно сохранять внутренности print-а в какой-то массив и потом его обрабатывать (например выводить на экран).

genk в сообщении #1657072 писал(а):
когда надо что-то исправить в программе в текущей сессии
Не пишите таких программ прямо в PARI/GP, пишите их в текстовых файлах и запускайте в PARI/GP командой \r file.txt.
Или используйте всей выдачи в лог, команда \l log333.txt и смотрите потом этот log333.txt любым удобным способом (но конечно не \r), как уже и сказали выше.
Средств прокрутки буфера окна консоли в PARI/GP нет (и очень странно если бы были).
Пока Вы не объясните понятно чего хотите, других разумных советов не ожидается.

-- 03.10.2024, 01:30 --

genk в сообщении #1657072 писал(а):
куда вставить Write с именем файла
Вместо forprime(p=2,10^7,print1(p,",")) набрать forprime(p=2,10^7,write1("primes.txt",p,",")) - вроде не так уж сложно ...

 Профиль  
                  
 
 Re: Вывод на дисплей в PARI/GP
Сообщение03.10.2024, 13:41 


20/02/20
83
Dmitriy40
Внял вашему совету,разбил массив на куски,каждый записал в файл,но при извлечении файла что-то непонятное.Я приведу иллюстративный пример.
Код:
forprime(p=2,100,write1("primes.txt",p,","))

Теперь
Код:
\r primes.txt
и вот что получаю
Код:
*** syntax error, unexpected ',',expecting end of file 2
***,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59
Что не так?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group