Перейти к главе: Начало 1 2 3 4 A B C Bib Ind
 [Начало книги]  [Содержание]   [Предыдущая глава]   [Следующая глава] 

A Рекомендации по созданию и запуску программ в системе GAP

A Рекомендации по созданию и запуску программ в системе GAP

GAP позволяет не только производить вычисления в интерактивном режиме, но и сохранять программы для дальнейшего их применения. Программы создаются и сохраняются в формате текстовых файлов (которым обычно присваивают расширение "g"), и редактируются с помощью любого текстового редактора.

Как правило, программа состоит из главной части и набора функций. При чтении программы (с помощью команды Read) команды, содержащиеся в главной части, выполняются непосредственно, а функции только лишь задаются, и делают возможным последующее обращение к ним. В случае синтаксических ошибок при чтении файла с программой будут выданы соответствующие сообщения.

При разработке программ удобно одновременно запускать:

Кроме того, если требуется оформить в виде программы последовательность команд, которая была введена в ходе работы с системой в диалоговом режиме, то это удобно сделать, редактируя файл протокола, который для этого должен быть уже открыт на момент начала ввода этих команд, с помощью команды вида LogTo("file.log");.

Пример: составить программу, которая определяет, является ли группа G конечной p-группой для некоторого p, и возвращает список, первый элемент которого - true или false в зависимости от результата проверки, а второй - соответствующее значение p, если G - p-группа, и false - иначе.

1. Создаем с помощью текстового редактора файл prog.g следующего содержания:


Print(" Loading IsFinitePGroup()", "\n"); 
IsFinitePGroup:=function(G) 
local divisors; # список простых делителей 
if IsFinite(G)=false then 
  return [false, false]; 
else 
  divisors:=Set(Factors(Size(G))); 
  if Length(divisors)=1 then 
    return [true, divisors[1] ]; 
  else 
    return [false, false]; 
  fi; 
fi; 
end; 

2. Сохраняем этот файл в каталоге, выбранном с учетом рекомендаций пункта 1.3.

3. Запустим GAP и определим файл протокола log.txt:


gap> LogTo("log.txt"); 

Теперь зададим группу диэдра порядка 8:


gap> G:=DihedralGroup(8); 
<pc group of size 8 with 3 generators>

Попробуем обратиться к функции из файла prog.g:


gap> IsFinitePGroup(G); 
Error, Variable: 'IsFinitePGroup' must have a value 

Ошибка вызвана тем, что для использования функции этот файл сначала необходимо прочитать. При этом, если он содержит синтаксические ошибки, то будут выданы сообщения о них. Чтение производится командой Read:


gap> Read("prog.g"); 
Loading IsFinitePGroup() 

Ошибки обнаружены не были. Было выдано сообщение, включенное для удобства в файл prog.g.

Теперь проверим работу программы для группы диэдра порядка 8, а также для симметрической группы S_8.


gap> IsFinitePGroup(G); 
[ true, 2 ] 
gap> H:=SymmetricGroup(8); 
Sym( [ 1 .. 8 ] )
gap> IsFinitePGroup(H); 
[ false, false ] 

Очевидно, что программа работает корректно.

Заметим, что в GAP имеются стандартные функции IsPGroup, определяющая, является ли группа G конечной p-группой для некоторого p, и PrimePGroup, возвращающая соответствующее значение p.

 [Начало книги]  [Содержание]   [Предыдущая глава]   [Следующая глава] 
Перейти к главе: Начало 1 2 3 4 A B C Bib Ind

generated by GAPDoc2HTML