Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otchet_po_letney_praktike.docx
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
933 Кб
Скачать
☆
    1. Интерфейс программы

Программа имеет три диалоговых сообщения:

  • предупреждение, в котором описано, что необходимо знать для правильного использования программы (рисунок 2.1);

  • запрос коэффициента m (рисунок 2.1);

  • запрос коэффициента n (рисунок 2.1);

  • по окончании выполнения программа выдает значение элемента функции Аккермана как показано на рисунке 2.2;

Рисунок 2.1 – Ввод коэффициентов

Рисунок 2.2 – Вывод результата выполнения программы

На рисунке 2.2 представлен пример правильного выполнения программы при вводе коэффициентов m=1 и n=2.

    1. Руководство пользователя

Для запуска откомпилированного исполнимого файла (.exe) требуется ядро .NETFramework. Для запуска файла с исходным кодом (.pas) можно использовать любую из систем программирования PascalABC или PascalABC.NET

Перед запуском программы пользователю необходимо прочитать информацию о функции Аккермана.

Запуск производится двойным щелчком на ярлыке программы под названием “akkerman.exe”или файл под названием “akkerman.pas” через компилирующую систему с последующим запуском из этой системы.

Перед демонстрацией решения поставленной задачи программа запросит у пользователя коэффициенты m и n. После нажатия клавиши Enter, программа отобразит Элемент функции Аккермана. Пример выполнения программы представлен на рисунке 2.2.

  1. Вывод

В ходе выполнения вычислительной практики были выполнены задания, посредством которых были опробованы новые способы вычисления в среде Mathcad, а именно вычисление интегралов, дифференциалов, матриц, построение графиков параметрической, кусочно-непрерывной функций и поверхностей. Был освоен метод построения сплайнов для заданного набора точек функциями. Также была решена задача «Функция Аккермана без рекурсии» на языке программирования Pascal. В ходе решении задачи были подробно изучены способы работы с условными операторами. Так же применение переменных типа record.

Список литератур

  1. Зариковская Н.В. Прикладная информатика. Учебное пособие. – Томск: Томский государственный университет систем управления и радиоэлектроники (ТУСУР), 2012. - 93 с.

  2. Зариковская Н.В. Информатика. Учебное пособие. – Томск: Томский государственный университет систем управления и радиоэлектроники (ТУСУР), 2012. – 194 с.

  3. Н. Культин. Turbo Pascal в задачах и примерах. – БХВ-Петербург: 2006. - 256 с.

Приложение а – листинг программы «функция Аккермана без рекурсии»

uses crt;

type stack = ^el; // организация типа стек

el=record

m,n:integer;

pr:stack;

end;

label met;

var s:stack;

m,n,m1,n1:integer;

otv:integer;

procedure add_stack(m,n:integer); // процедура добавления элемента в стек

var a:stack;

begin

new(a); // создание нового элемента

a^.pr:=s; // установка элемента в список

a^.m:=m; // заполнение данных

a^.n:=n;

s:=a;

end;

function return_stack(var m,n:integer):boolean; // извлечение элемента из стека

var a:stack;

begin

if s = nil then begin // если нет элемента в стеке

m:=0;

n:=0;

return_stack:=false; // ответить отрицательно

end

else begin // если етсь элемент в стеке

m:=s^.m; // извлечь информацию

n:=s^.n;

a:=s;

s:=s^.pr; // переключить метку стека

dispose(a); // удалить извлечённый элемент из стека

return_stack:=true; // ответить об удачном извлечении

end;

end;

begin

writeln('Убедительная просьба!!');

writeln('Прочитать сначала о функции Аккермана, перед запуском программы!!');

writeln();

writeln('Эта функция растёт очень быстро, например, число A(4,4) настолько велико,');

writeln('что количество цифр в порядке этого числа многократно превосходит');

writeln('количество атомов в наблюдаемой части Вселенной.');

writeln();

s:=nil; // "зануление" стека

met:

write('Введите коэффициент m :');

readln(m); // ввод коэффициента m ( смотреть информацию о функции Аккермана )

write('Введите коэффициент n :');

readln(n); // ввод коэффициента n

n1:=n; // переменная для запоминания начального значения n

m1:=m; // переменная для запоминания начального значения m

if n<0 then

begin

writeln('Неверный коэффициент n');

if m<0 then

begin

writeln('Неверный коэффициент m');

end;

goto met;

end;

add_stack(m,n); // добавляем первый элемент в стек

otv:=0;

while s<>nil do // пока стек не пустой

begin

if return_stack(m,n) then // удачное извлечение элементов

begin

if (n=-1) then n:=otv; // -1 характеризует, что предыдущие вычисления проводились над вложенным элементом и otv является коэффициентом n

if m=0 then otv:=n+1 else // если первое условие функции Аккермана выполняется, то запомнить ответ

begin

if (m>0)and(n=0) then add_stack(m-1,1) // если второе условие функции Аккермана выполняется, то поставить в стек элемент, требуемый по условию

else begin // если никакое условие не выполняется

add_stack(m-1,-1);// поставить в стек элемент, ожидающий коэффициен n

add_stack(m,n-1); // поставить в стек элемент, который должен дать коэффициент n

end;

end;

end

else break; // если извлечение элемента из стека прошло неудачно, то аварийно выйти из цикла ( проверка на ошибку )

end;

writeln('A(', m1, ',', n1, ') = ', otv); // вывод результата

readkey;

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]