Главная страница
Навигация по странице:

  • Программа

  • Социология права никласа лумана - Готово. Палыгин 3 лаб. Списки и бинарные деревья


    Скачать 367.58 Kb.
    НазваниеСписки и бинарные деревья
    АнкорСоциология права никласа лумана - Готово
    Дата03.04.2023
    Размер367.58 Kb.
    Формат файлаdocx
    Имя файлаПалыгин 3 лаб.docx
    ТипДокументы
    #1035144

    Министерство науки и высшего образования Российской Федерации

    Федеральное государственное бюджетное образовательное учреждения высшего образования

    «Комсомольский-на-Амуре государственный университет»


    Факультет компьютерных технологий Кафедра «ПУРИС»


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

    по дисциплине «Логическое программирование» Списки и бинарные деревья
    Студенты группы 9ВТб-1 Палыгин А.Д.
    Преподаватель Е.Б. Абарникова

    2023

    Содержание


    Лист задания
    Тема: «Списки и бинарные деревья»

    Цель: изучить основные операции со списками и бинарными деревьями

    Задание: написать программу для выполнения операций со списками и бинарными деревьями:

    1 сортировка списка;

    2 удаление элемента списка.
    1. Описание программы



    Создать приложение, которое будет при вводе с клавиатуры числе, будет создавать из них список. Данный список может быть отсортирован, а так же в нем может быть удален какой либо из элементов.

    Описание предикатов, которые используются в программе:

    task_win_eh : EHANDLER - предикат открытия окна

    adding(SLIST,STRING,SLIST) - предикат добавления числа в список

    аргументы:

    1 аргумент - текущий список

    2 аргумент - введенное число

    3 аргумент - полученный список

    print(SLIST,WINDOW) - предикат вывода списка

    1 аргумент - список

    2 аргумент - указатель на окно

    delete(INTEGER,SLIST,SLIST) - предикат удаления числа

    1 аргумент - позиция числа

    2 аргумент - список

    3 аргумент - получившийся список

    sort(SLIST,SLIST) - предикат сортировки

    1 аргумент - сортировка текущего

    2 аргумент - получившийся в результате сортировки список


    Текст программы



    Текст программы состоит из одного файла кода «lab4.pro». Код файла приведен в листинге 1.

    Листинг 1.

    /*****************************************************************************
    Copyright (c) My Company
    Project: LAB3

    FileName: LAB3.PRO

    Purpose: No description

    Written by: Visual Prolog

    Comments:

    ******************************************************************************/
    include "lab3.inc"

    include "lab3.con"

    include "hlptopic.con"
    %BEGIN_WIN Task Window

    /***************************************************************************

    Event handling for Task Window

    ***************************************************************************/

    domains

    sp1=STRING*

    predicates
    task_win_eh : EHANDLER

    adding(SLIST,STRING,SLIST)

    print(SLIST,WINDOW)

    delete(INTEGER,INTEGER,SLIST,SLIST)

    zapoln(SLIST)

    poradok(STRING,STRING)

    change(SLIST,SLIST)

    sort(SLIST,SLIST)

    list_union(SLIST,SLIST,SLIST)
    constants
    %BEGIN Task Window, CreateParms, 12:47:57-18.1.2023, Code automatically updated!

    task_win_Flags = [wsf_SizeBorder,wsf_TitleBar,wsf_Close,wsf_Maximize,wsf_Minimize,wsf_ClipSiblings]

    task_win_Menu = res_menu(idr_task_menu)

    task_win_Title = "Операции со списками"

    task_win_Help = contents

    %END Task Window, CreateParms
    clauses

    %Zapolnenie spyska

    zapoln([]).

    %Adding new element in spysok

    adding(L,X,[X|L]).

    %Printing spysok in listbox

    print([],H).

    print([X|L],H):-lbox_Add(H,X),print(L,H).

    %deleting elemeent

    delete(NM,NM,[X|L],L).

    delete(NM,NT,[Y|L],[Y|L1]):-N=NT+1,delete(NM,N,L,L1).
    %Sravnenie

    poradok(X,Y):-X>Y.

    %Make change

    change([X,Y|L],[Y,X|L]):-poradok(X,Y).

    change([Z|L],[Z|L1]):-change(L,L1).

    %Sort by puzirek

    sort(L,L1):-change(L,L2),!,sort(L2,L1).

    sort(L,L).

    %List union

    list_union(L1,[],L1).

    list_union([],L2,L2).

    list_union([X|L1],L2,[X|L3]):-list_union(L1,L2,L3).

    %BEGIN Task Window, e_Create

    task_win_eh(_Win,e_Create(_),0):-!,

    %BEGIN Task Window, InitControls, 12:47:57-18.1.2023, Code automatically updated!

    win_CreateControl(wc_Edit,rct(140,85,225,110),"",_Win,[wsf_Group,wsf_TabStop,wsf_AutoHScroll,wsf_AlignLeft],idc_edit),

    win_CreateControl(wc_Text,rct(10,50,194,70),"Добавить элемент в список",_Win,[wsf_AlignLeft],idct_static_text),

    win_CreateControl(wc_PushButton,rct(235,85,320,110),"Добавить",_Win,[wsf_Group,wsf_TabStop],idc_add),

    win_CreateControl(wc_Text,rct(5,135,182,155),"Удалить элемент из списка",_Win,[wsf_AlignLeft],idct_static_text1),

    win_CreateControl(wc_Edit,rct(140,170,180,195),"0",_Win,[wsf_Group,wsf_TabStop,wsf_AutoHScroll,wsf_AlignLeft],idc_edit1),

    win_CreateControl(wc_PushButton,rct(235,170,320,195),"Удалить",_Win,[wsf_Group,wsf_TabStop],idc_del),

    win_CreateControl(wc_Text,rct(10,90,135,115),"Введите элемент",_Win,[wsf_AlignLeft],idct_static_text2),

    win_CreateControl(wc_Text,rct(10,175,111,200),"Укажите номер",_Win,[wsf_AlignLeft],idct_static_text3),

    win_CreateControl(wc_LBox,rct(330,85,445,195),"",_Win,[wsf_Group,wsf_TabStop,wsf_VScroll,wsf_NoIntegralHeight],id_lbox),

    win_CreateControl(wc_PushButton,rct(450,125,550,155),"Сортировать",_Win,[wsf_Group,wsf_TabStop],idc_sort),

    %END Task Window, InitControls

    %BEGIN Task Window, ToolbarCreate, 12:47:57-18.1.2023, Code automatically updated!

    %END Task Window, ToolbarCreate

    ifdef use_message

    msg_Create(100),

    enddef

    !.

    %END Task Window, e_Create
    %MARK Task Window, new events
    %BEGIN Task Window, id_help_about

    task_win_eh(_Win,e_Menu(id_help_about,_ShiftCtlAlt),0):-!,

    vpi_ShowHelp("help.hlp"),

    !.

    %END Task Window, id_help_about

    /********************************************************************************************

    Union of list

    ********************************************************************************************/
    %END Task Window, idc_un _CtlInfo

    /********************************************************************************************

    Procedures for Third List

    ********************************************************************************************/
    /********************************************************************************************

    Procedures for Scond List

    ********************************************************************************************/

    /*******************************MENU*********************************************************/

    %BEGIN Task Window, id_file_exit

    task_win_eh(_Win,e_Menu(id_file_exit,_ShiftCtlAlt),0):-!,

    Win_Destroy(_Win),

    !.

    %END Task Window, id_file_exit
    /********************************************************************************************

    Procedures for First List

    ********************************************************************************************/

    %BEGIN Task Window, idc_add _CtlInfo

    task_win_eh(_Win,e_Control(idc_add,_CtrlType,_CtrlWin,_CtlInfo),0):-

    HEA=Win_GetCtlHandle(_Win,idc_edit),

    HLB=Win_GetCtlHandle(_Win,id_lbox),

    NEWEL=Win_GetText(HEA),

    NEWEL<>"",

    SPYS=lbox_GetAll(HLB),

    adding(SPYS,NEWEL,LIST),

    lbox_Clear(HLB),

    print(LIST,HLB),

    !.

    task_win_eh(_Win,e_Control(idc_add,_CtrlType,_CtrlWin,_CtlInfo),0):-

    dlg_error("Введите элемент!"),!.

    %END Task Window, idc_add _CtlInfo
    %BEGIN Task Window, idc_del _CtlInfo

    task_win_eh(_Win,e_Control(idc_del,_CtrlType,_CtrlWin,_CtlInfo),0):-

    HWND=Win_GetCtlHandle(_Win,idc_edit1),

    HLB=Win_GetCtlHandle(_Win,id_lbox),

    TEXT=Win_GetText(HWND),

    TEXT<>"",

    str_int(TEXT,DELEL),

    SPYS=lbox_GetAll(HLB),

    delete(DELEL,0,SPYS,LIST),

    lbox_Clear(HLB),

    print(LIST,HLB),

    !.

    task_win_eh(_Win,e_Control(idc_del,_CtrlType,_CtrlWin,_CtlInfo),0):-

    dlg_error("Неверный номер элемнта!"),!.

    %END Task Window, idc_del _CtlInfo

    %BEGIN Task Window, idc_sort _CtlInfo

    task_win_eh(_Win,e_Control(idc_sort,_CtrlType,_CtrlWin,_CtlInfo),0):-

    HLB=Win_GetCtlHandle(_Win,id_lbox),

    SPYS=lbox_GetAll(HLB),

    sort(SPYS,LIST),

    lbox_Clear(HLB),

    print(LIST,HLB),

    !.

    task_win_eh(_Win,e_Control(idc_sort,_CtrlType,_CtrlWin,_CtlInfo),0):-!,

    dlg_error("Не удалось отсортировать!"),!.

    %END Task Window, idc_sort _CtlInfo
    /******************************************Other Procedures**********************************/

    %BEGIN Task Window, e_Size

    task_win_eh(_Win,e_Size(_Width,_Height),0):-!,

    ifdef use_tbar

    toolbar_Resize(_Win),

    enddef

    ifdef use_message

    msg_Resize(_Win),

    enddef

    !.

    %END Task Window, e_Size
    %END_WIN Task Window
    /***************************************************************************

    Invoking on-line Help

    ***************************************************************************/
    project_ShowHelpContext(HelpTopic):-

    vpi_ShowHelpContext("help.hlp",HelpTopic).
    /***************************************************************************

    Main Goal

    ***************************************************************************/

    goal

    ifdef use_mdi

    vpi_SetAttrVal(attr_win_mdi,b_true),

    enddef

    ifdef ws_win

    ifdef use_3dctrl

    vpi_SetAttrVal(attr_win_3dcontrols,b_true),

    enddef

    enddef

    pi_Init(task_win_Flags,task_win_eh,task_win_Menu,"lab3",task_win_Title).
    Программа и методика испытаний
    Проведем комплексное модульное тестирование разработанного программного обеспечения.
    Таблица 1 – Первый тест-пакет

    Автор: Палыгин А.Д.

    Номер спецификации: 1

    Приоритет: 1

    Автор

    спецификации: Палыгин А.Д.

    Разработчик: Палыгин А.Д.

    Назначение: Корректность разработанного ПО

    Необходимые данные:

    Проект ПО «Лабораторная работа 3» Предварительные действия:

    Запустить проект ПО «Лабораторная работа 3»


    Таблица 2 Тест-кейс №1

    Приоритет: 1

    1

    Идея: Ввод информации в поля ввода

    История изменений

    Дата создания: 22.11.2022 Палыгин А.Д.

    Инициализация теста

    Выполнение

    Описание действий

    Ожидаемый результат

    1. выполнение предварительных действий;

    2. Ожидание запуска программы

    Программа запустилась


    Таблица 3 Тест-отчет №1 после тестирования


    Приоритет: 1

    TestСasesExceptions

    1

    Идея: Ввод информации в поля ввода

    История изменений

    Статус тестирования

    Дата создания: 22.11.2022 Палыгин А.Д.

    Инициализация теста

    Положительный

    Выполнение

    Описание действий

    Ожидаемый результат

    Фактический ре- зультат

    1. выполнение предварительных действий, запуск программы


    Программа запустилась


    Программа запустилась


    Таблица 4 Тест-кейс №2

    Приоритет: 1

    1

    Идея: Ввод чисел в форму и проведение запуска сортировки

    История изменений

    Дата создания: 22.11.2022 Палыгин А.Д.

    Инициализация теста

    Выполнение

    Описание действий

    Ожидаемый результат

    1. выполнение предварительных действий;

    2. вводим числа в форму и пробуем провести сортировку

    Числа вводятся, сортировка происходит


    Таблица 5 Тест-отчет №2 после тестирования

    Приоритет: 1

    1

    Идея: Построчное выведение данных из файла в листбокс с длиной строки 20 символов

    История изменений

    Статус тестирования

    Дата создания: 22.11.2022 Палыгин А.Д.

    Инициализация теста

    Положительный

    Выполнение

    Описание действий

    Ожидаемый результат

    Фактический

    результат

    1 выполнение предварительных действий;

    2 вводим числа в форму и пробуем провести сортировку

    Числа вводятся, числа сортируются

    Числа вводятся, числа сортируются


    Таблица 6 Тест-кейс №3

    Приоритет: 1

    1

    Идея: Удаление элемента из списка

    История изменений

    Дата создания: 22.11.2022 Палыгин А.Д.

    Инициализация теста

    Выполнение

    Описание действий

    Ожидаемый результат

    1. выполнение предварительных действий;

    2. удалить элемент из списка по его номеру

    Удаление элемента происходит


    Таблица 7 Тест-отчет №3 после тестирования

    Приоритет: 1

    1

    Идея: Построчное выведение данных из файла в листбокс с длиной строки 20 символов

    История изменений

    Статус тестирования

    Дата создания: 22.11.2022 Палыгин А.Д.

    Инициализация теста

    Положительный

    Выполнение

    Описание действий

    Ожидаемый результат

    Фактический

    результат

    1. выполнение предварительных действий;

    2. удалить элемент из списка по его номеру

    Удаление элемента происходит

    Удаление элемента происходит

    Таблица 8 Тест-кейс №4

    Приоритет: 1

    1

    Идея: Добавление чисел при отсутствии их ввода

    История изменений

    Дата создания: 22.11.2022 Палыгин А.Д.

    Инициализация теста

    Выполнение

    Описание действий

    Ожидаемый результат

    1. выполнение предварительных действий;

    2. не вводить числа - нажать кнопку добавить

    Сообщение об ошибке


    Таблица 9 Тест-отчет №4 после тестирования

    Приоритет: 1

    1

    Идея: Завершение проекта при нажатии на кнопку «Выход»

    История изменений

    Статус тестирования

    Дата создания: 22.11.2022 Палыгин А.Д.

    Инициализация теста

    Положительный

    Выполнение

    Описание действий

    Ожидаемый

    результат

    Фактический

    результат

    1 выполнение предварительных действий;

    2 не вводить числа - нажать кнопку добавить

    Сообщение об ошибке

    Сообщение об ошибке

    Таблица 10 Тест-кейс №4

    Приоритет: 1

    1

    Идея: Удалить элемент по номеру, которого нету в списке

    История изменений

    Дата создания: 22.11.2022 Палыгин А.Д.

    Инициализация теста

    Выполнение

    Описание действий

    Ожидаемый результат

    1 выполнение предварительных действий;

    2 удалить элемент по номеру при его отсутствии

    Сообщение об ошибке


    Таблица 11 Тест-отчет №4 после тестирования

    Приоритет: 1

    1

    Идея: Завершение проекта при нажатии на кнопку «Выход»

    История изменений

    Статус тестирования

    Дата создания: 22.11.2022 Палыгин А.Д.

    Инициализация теста

    Положительный

    Выполнение

    Описание действий

    Ожидаемый

    результат

    Фактический

    результат

    1 выполнение предварительных действий;

    2 удалить элемент по номеру при его отсутствии

    Сообщение об ошибке

    Сообщение об ошибке

    Таблица 12 Тест-кейс №4

    Приоритет: 1

    1

    Идея: Завершение проекта при нажатии на кнопку «Выход»

    История изменений

    Дата создания: 22.11.2022 Палыгин А.Д.

    Инициализация теста

    Выполнение

    Описание действий

    Ожидаемый результат

    1. выполнение предварительных действий;

    2. нажать на кнопку «Выход».

    Программа закрывается


    Таблица 13 Тест-отчет №4 после тестирования

    Приоритет: 1

    1

    Идея: Завершение проекта при нажатии на кнопку «Выход»

    История изменений

    Статус тестирования

    Дата создания: 22.11.2022 Палыгин А.Д.

    Инициализация теста

    Положительный

    Выполнение

    Описание действий

    Ожидаемый

    результат

    Фактический

    результат

    1. выполнение предварительных действий;

    2. нажать на кнопку «Выход».

    Программа закрывается

    Программа закрывается

    Список использованных источников





    1. Prolog Development Center A/S Visual Prolog Version 5.x Visual Development Environment: документация / Prolog Development Center A/S Broendby, Copenhagen, Denmark, 2001. 207 с.

    2. Абарникова Е.Б., Жаворонков А.С., Фарафонтов А.В., Марчак К.М., Гатаулин А.В., Шалагинова У.И. Обучающий курс по функциональному и логическому программированию

    3. Братко И. Программирование на языке Пролог для искусственного интеллекта/ И. Братко; пер. с англ. А.И. Лупенко; под ред. А.М. Степанова - М.: Мир, 1990 560 с.

    Приложение А




    Рисунок 1 Окно работы программы


    Рисунок 2 Ввод чисел в программу



    Рисунок 3 Результат по нажатию кнопки - "Сортировка"


    Рисунок 4 - Удаление элемента



    Рисунок 5 - Результат удаления


    Рисунок 6 - Сообщение об ошибке, при удалении элемента, которого нет в списке


    Рисунок 7 - Сообщение об ошибке, при добавлении пустого элемента


    написать администратору сайта