<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.3 20210610//EN" "JATS-journalpublishing1-3.dtd">
<article article-type="research-article" dtd-version="1.3" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xml:lang="en"><front><journal-meta><journal-id journal-id-type="publisher-id">donstu</journal-id><journal-title-group><journal-title xml:lang="en">Advanced Engineering Research (Rostov-on-Don)</journal-title><trans-title-group xml:lang="ru"><trans-title>Advanced Engineering Research (Rostov-on-Don)</trans-title></trans-title-group></journal-title-group><issn pub-type="epub">2687-1653</issn><publisher><publisher-name>Don State Technical University</publisher-name></publisher></journal-meta><article-meta><article-id pub-id-type="doi">10.23947/2687-1653-2021-21-2-200-206</article-id><article-id custom-type="elpub" pub-id-type="custom">donstu-1780</article-id><article-categories><subj-group subj-group-type="heading"><subject>Research Article</subject></subj-group><subj-group subj-group-type="section-heading" xml:lang="en"><subject>INFORMATION TECHNOLOGY, COMPUTER SCIENCE AND MANAGEMENT</subject></subj-group><subj-group subj-group-type="section-heading" xml:lang="ru"><subject>ИНФОРМАТИКА, ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА И УПРАВЛЕНИЕ</subject></subj-group></article-categories><title-group><article-title>Theoretical foundations of the organization of branches and repetitions  in programs in the logic programming language Prolog</article-title><trans-title-group xml:lang="ru"><trans-title>Теоретические основы организации ветвлений и повторений  в программах на языке логического программирования Пролог</trans-title></trans-title-group></title-group><contrib-group><contrib contrib-type="author" corresp="yes"><contrib-id contrib-id-type="orcid">https://orcid.org/0000-0003-1131-6708</contrib-id><name-alternatives><name name-style="eastern" xml:lang="ru"><surname>Здор</surname><given-names>Д. В.</given-names></name><name name-style="western" xml:lang="en"><surname>Zdor</surname><given-names>D. V.</given-names></name></name-alternatives><bio xml:lang="ru"><p>Здор Дмитрий Валерьевич, доцент инженерно-технологического института, кандидат педагогических наук, доцент</p><p>692500, РФ, Приморский край, г. Уссурийск, пр. Блюхера, 4</p></bio><email xlink:type="simple">jevgeniya.999.gn@mail.ru</email><xref ref-type="aff" rid="aff-1"/></contrib></contrib-group><aff-alternatives id="aff-1"><aff xml:lang="ru"><institution>ФГБОУ ВО «Приморская государственная сельскохозяйственная академия»</institution><country>Россия</country></aff><aff xml:lang="en"><institution>Primorskaya State Academy of Agriculture</institution><country>Russian Federation</country></aff></aff-alternatives><pub-date pub-type="collection"><year>2021</year></pub-date><pub-date pub-type="epub"><day>09</day><month>07</month><year>2021</year></pub-date><volume>21</volume><issue>2</issue><fpage>200</fpage><lpage>206</lpage><permissions><copyright-statement>Copyright &amp;#x00A9; Zdor D.V., 2021</copyright-statement><copyright-year>2021</copyright-year><copyright-holder xml:lang="ru">Здор Д.В.</copyright-holder><copyright-holder xml:lang="en">Zdor D.V.</copyright-holder><license xml:lang="ru" license-type="creative-commons-attribution" xlink:href="https://creativecommons.org/licenses/by/4.0/" xlink:type="simple"><license-p>Данная работа распространяется под лицензией Creative Commons Attribution 4.0.</license-p></license><license xml:lang="en" license-type="creative-commons-attribution" xlink:href="https://creativecommons.org/licenses/by/4.0/" xlink:type="simple"><license-p>This work is licensed under a Creative Commons Attribution 4.0 License.</license-p></license></permissions><self-uri xlink:href="https://www.vestnik-donstu.ru/jour/article/view/1780">https://www.vestnik-donstu.ru/jour/article/view/1780</self-uri><abstract><p>Introduction. The organization of branches and repetitions in the context of logical programming is considered by an example of the Prolog language. The fundamental feature of the program in a logical programming language is the fact that a computer must solve a problem by reasoning like a human. Such a program contains a description of objects and relations between them in the language of mathematical logic. At the same time, the software implementation of branching and repetition remains a challenge in the absence of special operators for the indicated constructions in the logical language. The objectives of the study are to identify the most effective ways to solve problems using branching and repetition by means of the logic programming language Prolog, as well as to demonstrate the results obtained by examples of computational problems.  Materials and Methods. An analysis of the literature on the subject of the study was carried out. Methods of generalization and systematization of knowledge, of the program testing, and analysis of the program execution were used.  Results. Constructions of branching and repetition organization in a Prolog program are proposed. To organize repetitions, various options for completing a recursive cycle when solving problems are given.  Discussion and Conclusions. The methods of organizing branches and repetitions in the logic programming language Prolog are considered. All these methods are illustrated by examples of solving computational problems. The results obtained can be used in the further development of the recursive predicates in logical programming languages, as well as in the educational process when studying logical programming in the Prolog language. The examples of programs given in the paper provide using them as a technological basis for programming branches and repetitions in the logic programming language Prolog.</p></abstract><trans-abstract xml:lang="ru"><sec><title>Введение</title><p>Введение. Рассматривается организация ветвлений и повторений в контексте логического программирования на примере языка Пролог. Принципиальной особенностью программы на языке логического программирования является то, что компьютер должен решать задачу, проводя рассуждения подобно человеку. Такая программа содержит описание объектов и отношений между ними на языке математической логики. При этом остается актуальной программная реализация ветвлений и повторений в условиях отсутствия в логическом языке специальных операторов для указанных конструкций. Целями работы явились выявление наиболее эффективных способов для решения задач с применением ветвлений и повторений средствами языка логического программирования Пролог, а также демонстрация полученных результатов на примерах вычислительных задач.</p></sec><sec><title> Материалы и методы</title><p> Материалы и методы. Выполнен анализ специальной литературы по теме исследования. Использованы методы обобщения, систематизации знаний, тестирования программы, анализ хода ее выполнения.</p></sec><sec><title>Результаты исследования</title><p> Результаты исследования. Предложены конструкции организации ветвлений и повторений в программе на языке Пролог. Для организации повторений предложены различные варианты завершения рекурсивного цикла при решении задач.</p></sec><sec><title>Обсуждение и заключения</title><p>Обсуждение и заключения. Рассмотрены способы организации ветвлений и повторений на языке логического программирования Пролог. Все эти способы продемонстрированы на примерах решения задач вычислительного характера. Полученные результаты могут быть использованы при дальнейшей разработке рекурсивных предикатов в логических языках программирования, а также в учебном процессе при изучении логического программирования на языке Пролог. Приведенные примеры программ позволяют использовать их в качестве технологической основы программирования ветвлений и повторений на языке логического программирования Пролог. </p></sec></trans-abstract><kwd-group xml:lang="ru"><kwd>логическое программирование</kwd><kwd>ветвление</kwd><kwd>повторение предикатов</kwd><kwd>рекурсивное правило</kwd><kwd>условие окончания рекурсии</kwd></kwd-group><kwd-group xml:lang="en"><kwd>logical programming</kwd><kwd>branching</kwd><kwd>repetition of predicates</kwd><kwd>recursive rule</kwd><kwd>recursion termination condition</kwd></kwd-group></article-meta></front><back><ref-list><title>References</title><ref id="cit1"><label>1</label><citation-alternatives><mixed-citation xml:lang="ru">Genesys-Pro: Innovations in Test Program Generation for Functional Processor Verification / E. Adir, L. Almog, E. Fournier [et al.] // IEEE Design &amp; Test of Computers. — 2014. — Vol. 21 (2). — P. 84–93. https://doi.org/10.1109/MDT.2004.1277900</mixed-citation><mixed-citation xml:lang="en">Genesys-Pro: Innovations in Test Program Generation for Functional Processor Verification / E. Adir, L. Almog, E. Fournier [et al.] // IEEE Design &amp; Test of Computers.  — 2014. — Vol. 21 (2). — P. 84–93. https://doi.org/10.1109/MDT.2004.1277900</mixed-citation></citation-alternatives></ref><ref id="cit2"><label>2</label><citation-alternatives><mixed-citation xml:lang="ru">ARM Architecture Reference Manual. ARM DDI 0487A.f. ARM Corporation, 2015. — 5886 p.</mixed-citation><mixed-citation xml:lang="en">ARM Architecture Reference Manual. ARM DDI 0487A.f. ARM Corporation, 2015. — 5886 p.</mixed-citation></citation-alternatives></ref><ref id="cit3"><label>3</label><citation-alternatives><mixed-citation xml:lang="ru">Kent D. Lee. Foundations of Programming Languages / Kent D. Lee // Springer, 2017. — 370 p.</mixed-citation><mixed-citation xml:lang="en">Kent D. Lee. Foundations of Programming Languages / Kent D. Lee // Springer, 2017. — 370 p.</mixed-citation></citation-alternatives></ref><ref id="cit4"><label>4</label><citation-alternatives><mixed-citation xml:lang="ru">Ute Schmid. Inductive Synthesis of Functional Programs: Universal Planning, Folding of Finite Programs, and Schema Abstraction by Analogical Reasoning / Ute Schmid // Springer Science &amp; Business Media, 2013.</mixed-citation><mixed-citation xml:lang="en">Ute Schmid. Inductive Synthesis of Functional Programs: Universal Planning, Folding of Finite Programs, and Schema Abstraction by Analogical Reasoning / Ute Schmid // Springer Science &amp; Business Media, 2013.</mixed-citation></citation-alternatives></ref><ref id="cit5"><label>5</label><citation-alternatives><mixed-citation xml:lang="ru">Adam Lally. Natural Language Processing with Prolog in the IBM Watson System / Adam Lally, Paul Fodor // Association for Logic Programming, 2011.</mixed-citation><mixed-citation xml:lang="en">Adam Lally. Natural Language Processing with Prolog in the IBM Watson System / Adam Lally, Paul Fodor // Association for Logic Programming, 2011.</mixed-citation></citation-alternatives></ref><ref id="cit6"><label>6</label><citation-alternatives><mixed-citation xml:lang="ru">Цуканова, Н. И. Теория и практика логического программирования на языке Visual Prolog 7 / Н. И. Цуканова, Т. А. Дмитриева. — Москва : Горячая линия – Телеком, 2013. — 232 с.</mixed-citation><mixed-citation xml:lang="en">Цуканова, Н. И. Теория и практика логического программирования на языке Visual Prolog 7 / Н. И. Цуканова, Т. А.  Дмитриева. — Москва : Горячая линия – Телеком, 2013. — 232 с.</mixed-citation></citation-alternatives></ref><ref id="cit7"><label>7</label><citation-alternatives><mixed-citation xml:lang="ru">Eduardo Costa. Visual Prolog 7.3 for Tyros / Eduardo Costa // 2010. — 270 p. — URL: http://visualprolog.com/download/73/books/tyros/tyros73.pdf</mixed-citation><mixed-citation xml:lang="en">Eduardo Costa. Visual Prolog 7.3 for Tyros / Eduardo Costa // 2010. — 270 p. — URL: http://visualprolog.com/download/73/books/tyros/tyros73.pdf</mixed-citation></citation-alternatives></ref><ref id="cit8"><label>8</label><citation-alternatives><mixed-citation xml:lang="ru">Братко, И. Алгоритмы искусственного интеллекта на языке Prolog / И. Братко ; [пер. с англ. К. А. Птицина]. — 3-е изд. — Москва : Вильямс, 2004. — 637 с.</mixed-citation><mixed-citation xml:lang="en">Братко, И. Алгоритмы искусственного интеллекта на языке Prolog / И. Братко ; [пер. с англ. К. А. Птицина]. — 3-е изд. — Москва : Вильямс, 2004. — 637 с.</mixed-citation></citation-alternatives></ref><ref id="cit9"><label>9</label><citation-alternatives><mixed-citation xml:lang="ru">Адаменко, А. Н. Логическое программирование и Visual Prolog / А. Н. Адаменко, А. М. Кучуков. — Санкт-Петербург: БХВ-Петербург, 2003. — 982 с.</mixed-citation><mixed-citation xml:lang="en">Адаменко, А. Н. Логическое программирование и Visual Prolog / А. Н. Адаменко, А. М. Кучуков. — Санкт-Петербург: БХВ-Петербург, 2003. — 982 с.</mixed-citation></citation-alternatives></ref><ref id="cit10"><label>10</label><citation-alternatives><mixed-citation xml:lang="ru">Логика предикатов и язык Пролог / В. Т. Тарушкин, П. В. Тарушкин, Л. Т. Тарушкина, А. В. Юрков // Современные наукоемкие технологии. — 2010. — № 4. — С. 62–63.</mixed-citation><mixed-citation xml:lang="en">Логика предикатов и язык Пролог / В. Т. Тарушкин, П. В. Тарушкин, Л. Т. Тарушкина, А. В. Юрков // Современные наукоемкие технологии. — 2010. — № 4. — С. 62–63.</mixed-citation></citation-alternatives></ref><ref id="cit11"><label>11</label><citation-alternatives><mixed-citation xml:lang="ru">Солдатова, О. П. Программирование на языке ПРОЛОГ / О. П. Солдатова, И. В. Лёзина. — Самара : Репозитарий Самарского государственного аэрокосмического университета : [сайт]. — 2008. — 52 с.</mixed-citation><mixed-citation xml:lang="en">Солдатова, О. П. Программирование на языке ПРОЛОГ / О. П. Солдатова, И. В. Лёзина. — Самара : Репозитарий Самарского государственного аэрокосмического университета : [сайт]. — 2008. — 52 с.</mixed-citation></citation-alternatives></ref><ref id="cit12"><label>12</label><citation-alternatives><mixed-citation xml:lang="ru">Coding guidelines for Prolog / Michael A. Covington, Roberto Bagnara, Richard A. O’Keefe [et al.] // Theory and Practice of Logic Programming. — 2011. — Vol. 12 (6). — P. 889–927.</mixed-citation><mixed-citation xml:lang="en">Coding guidelines for Prolog / Michael A. Covington, Roberto Bagnara, Richard A. O’Keefe [et al.] // Theory and Practice of Logic Programming.  — 2011. — Vol. 12 (6). — P. 889–927.</mixed-citation></citation-alternatives></ref><ref id="cit13"><label>13</label><citation-alternatives><mixed-citation xml:lang="ru">Марков, В. Н. Современное логическое программирование на языке Visual Prolog 7/5 / В. Н. Марков. — Санкт-Петербург : БХВ-Петербург, 2016. — 541 с.</mixed-citation><mixed-citation xml:lang="en">Марков, В. Н. Современное логическое программирование на языке Visual Prolog 7/5 / В. Н. Марков. — Санкт-Петербург : БХВ-Петербург, 2016. — 541 с.</mixed-citation></citation-alternatives></ref><ref id="cit14"><label>14</label><citation-alternatives><mixed-citation xml:lang="ru">Parallel Execution of Prolog Programs: a Survey / G. Gupta, E. Pontelli, K.A.M. Ali [et al.] // ACM Transactions on Programming Languages and Systems. — 2011. — Vol. 23 (4). — P. 472.</mixed-citation><mixed-citation xml:lang="en">Parallel Execution of Prolog Programs: a Survey / G. Gupta, E. Pontelli, K.A.M. Ali [et al.] // ACM Transactions on Programming Languages and Systems. — 2011. — Vol. 23 (4). — P. 472.</mixed-citation></citation-alternatives></ref><ref id="cit15"><label>15</label><citation-alternatives><mixed-citation xml:lang="ru">Особенности программной реализации логических задач на языке PROLOG / О. Н. Половикова, В. В. Ширяев, Н. М. Оскорбин, Л. Л. Смолякова // Известия Алтайского государственного университета. — 2021. — № 1 (117). — С. 166–120.</mixed-citation><mixed-citation xml:lang="en">Особенности программной реализации логических задач на языке PROLOG / О. Н. Половикова, В. В. Ширяев, Н. М. Оскорбин, Л. Л. Смолякова // Известия Алтайского государственного университета. — 2021. — № 1 (117). — С. 166–120.</mixed-citation></citation-alternatives></ref></ref-list><fn-group><fn fn-type="conflict"><p>The authors declare that there are no conflicts of interest present.</p></fn></fn-group></back></article>
