Главная Обратная связь

Дисциплины:






Условные выражения и циклы.



В языке системы Maxima заложены основные исполнимые операторы, которые есть в любом языке программирования. Синтаксис условного оператора совпадает с аналогичным оператором языка Паскаль и может быть проиллюстрирован примерами:

sgn: if x>=0 then 1 else -1;

if x>=0 then y:1 else y:-1

Допустима также сокращённая форма оператора

a: if x>0 then 55;

Оператор цикла может задавиться несколькими способами в зависимости от того, известно ли заранее необходимое количество повторений тела цикла. Его синтаксис рассмотрим на примере вычисления факториала числа 5:

 

  1 способ p:1$ for k:1 thru 5 step 1 do p:p*k$ display(p);   2 способ p:1$ for k:1 while k<=5 step 1 do p:p*k$ display(p);
  3 способ p:1$ for k:1 unless k>5 step 1 do p:p*k$ display(p);   4 способ p:1$ for k:1 next k+1 thru 5 do p:p*k$ display(p);

Если шаг равен 1, то «step 1» можно опустить.

В условных выражениях и циклах вместо простых операторов можно использовать составные, которые в терминах Maxima называются блоками. Обычный блок имеет вид:

block([a,b,c], a:1, b:a+1, c:b*2, c:c*5);

Вначала располагается список локальных переменных блока [a,b,c] (может быть пустым), далее — набор операторов. Значением блока является значение последнего его оператора. Допускается использовать упрощённый вид блока:

(x:1, x:x+5, b:x)

 

Чтение и запись данных

В пакете Maxima имеются стандартные функции для чтения данных из файла, а также записи или добавления данных в файл.

Чтение данных производится с помощью функций

data : read_list("Путь к файлу");

data : read_nested_list("Путь к файлу");

Функция read_list( )считвает из файла значения, расположенные в одной строке, разделённые пробелом, и помещает их в список data. Функция read_nested_list( ) расценивает содержимое файла как список строк. Каждая строка может содержать несколько данных, разделённых пробелом, которые тоже являются списком. Поэтому переменная data представляет собой список списков, например

 

(%i1) data : read_nested_list("d:/5555.dat");

(%o1) [[1,1],[2,5],[3,8],[4,3],[5,12],[6,20],[7,9],[8,8],[9,7],[10,5]]

 

При этом размер списков устанавливается в соответствии с объемом файла. Данные первого столбца файла можно извлечь из перемненной data с помощью команды

(%i2) k : makelist(first(data[i]),i,1,length(data));

(%o2) [1,2,3,4,5,6,7,8,9,10].

Аналогично для второго стобца

(%i3) kw:makelist(second(data[i]),i,1,length(data));

(%o3) [1,5,8,3,12,20,9,8,7,5]

и т.д.



Перед считыванием файл можно найти с помощью команды

file_search("Путь к файлу");

а также вывести на экран

printfile("Путь к файлу");

 

Для записи данных в файл следует воспользоваться функцией

write_data(Список,"Путь к файлу");

Список выводится в строку. Значения разделяются пробелом.

Для добавления данных к существующему файлу необходимо изменить значение переменной

file_output_append : true;

и использовать для вывода функцию write_data( ).

Чтобы записать в файл значения элементов списка в столбец, можно воспользоваться следующей последовательностью команд

file_output_append:true;

for m:1 thru length(x) do write_data([y[m]],"Путь к файлу");

Здесь с помощью цикла по очереди выводятся в файл значения элементов списка.

 

 


Часть III. Лабораторные работы

ЛАБОРАТОРНАЯ РАБОТА № 1





sdamzavas.net - 2017 год. Все права принадлежат их авторам! В случае нарушение авторского права, обращайтесь по форме обратной связи...