Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Особенности естественно-языковых интеллектуальных информационных систем

Содержание:

ВВЕДЕНИЕ

Актуальность исследования. Пролог (фр. Programmation en Logique) — язык и система логического программирования, основанные на языке предикатов математической логики дизъюнктов Хорна, представляющей собой подмножество логики предикатов первого порядка.

Основными понятиями в языке Пролог являются факты, правила логического вывода и запросы, позволяющие описывать базы знаний, процедуры логического вывода и принятия решений.

Факты в языке Пролог описываются логическими предикатами с конкретными значениями. Правила в Прологе записываются в форме правил логического вывода с логическими заключениями и списком логических условий.

Особую роль в интерпретаторе Пролога играют конкретные запросы к базам знаний, на которые система логического программирования генерирует ответы «истина» и «ложь». Для обобщённых запросов с переменными в качестве аргументов созданная систем Пролог выводит конкретные данные в подтверждение истинности обобщённых сведений и правил вывода.

Факты в базах знаний на языке Пролог представляют конкретные сведения (знания). Обобщённые сведения и знания в языке Пролог задаются правилами логического вывода (определениями) и наборами таких правил вывода (определений) над конкретными фактами и обобщёнными сведениями.

Объект исследования – программирование на языке высокого уровня.

Предмет исследования – графические приложения в языках программирования высокого уровня.

Цель курсовой работы: создание графических приложений в языках программирования высокого уровня.

Задачи, направленные на достижение цели курсовой работы:

  • проанализировать системы программирования;
  • изучить графические возможности языка программирования;
  • изучить графические возможности языка программирования Java;
  • изучить языковые особенности;
  • изучить графические методы.

Рассмотрению вопроса графических приложений в языках программирования высокого уровня посвящены работы авторов И. А. Бабушкиной, С. М. Окулова, О. Е. Масленниковой, И. В. Гавриловой, Л. Г. Гагариной, Е. В. Кокоревой и других.

ГЛАВА 1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

1.1 Понятие и сущность ИИ Prolog

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

Prolog – это декларативный язык, программы на котором содержат объявления логических взаимосвязей, необходимых для решения задачи.

Обозначения, используемые в Prolog для выражения логических взаимосвязей, унаследованы из логики предикатов.

Prolog имеет внутренние подпрограммы для выполнения - сопоставления и связанных с ним процессов. Они являются неотъемлемой частью языка и называются внутренними подпрограммами унификации. Эти подпрограммы выполняют сопоставление целей и подцелей с фактами и головами правил для того, чтобы доказать (или вычислить) эти цели или подцели. Эти же подпрограммы определяют, сгенерированы ли новые подцели правой части правила. Программист в соответствии с логическим синтаксисом Prolog объявляет, какие факты и правила дают тот или иной результат при различных подцелях, а внутренние подпрограммы унификации выполняют оставшуюся часть работы.

Факты и правила являются утверждениями, которые образуют данные программы на Prolog. Правила имеют левую часть и правую часть. Левая часть правила истинна, если истинна правая часть правила. Правила генерируют новые факты, когда все утверждения в теле оказываются вычисленными.

Prolog использует откаты для определения альтернативных путей вычисления цели или подцели. Если подцель оказалась неуспешной, а указатели отката были установлены, то для предыдущей подцели будет сделана попытка добиться успеха, начиная с точки отката.

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

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

1.2 Средства ИИ Prolog

В Prolog имеются специальные средства для организации баз данных. Эти средства рассчитаны на работу с реляционными базами данных, так как Prolog особенно хорошо подходит для написания диалоговой системы именно для реляционной БД.

Внутренняя БД хранится в текстовом файле, она может быть целиком считана в оперативную память и быстро обработана. Внутренние базы данных так называются потому, что они обрабатываются исключительно в оперативной памяти компьютера, в отличие от внешних баз данных, которые могут обрабатываться на диске или в памяти. Так как внутренние базы данных размещаются в оперативной памяти компьютера, конечно, работать с ними существенно быстрее, чем с внешними. С другой стороны, емкость оперативной памяти, как правило, намного меньше, чем емкость внешней памяти. Отсюда следует, что объем внешней базы данных может быть существенно больше объема внутренней базы данных. И если предполагается, что база может оказаться довольно большой, то следует использовать именно внешние базы данных.

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

В базе данных могут содержаться только факты, а не правила вывода, причем факты базы данных не могут содержать свободных переменных. Заметим, что в Visual Prolog, который является наследником Турбо Пролога, в названии раздела описания предикатов внутренней базы данных слово DATABASE заменено синонимом FACTS, что еще больше подчеркивает, что во внутренней базе данных могут храниться только факты, а не правила.

Для сохранения динамической базы на диске служит предикат save. Он сохраняет ее в текстовый файл с именем, которое было указано в качестве первого параметра предиката. Если второй необязательный параметр был опущен, происходит сохранение фактов из единственной неименованной внутренней базы данных. Если было указано имя внутренней базы данных, в файл будут сохранены факты именно этой базы данных.

Факты, сохраненные в текстовом файле на диске, могут быть загружены в оперативную память командой consult. Первым параметром этого предиката указывается имя текстового файла, из которого нужно загрузить факты. Если второй параметр опущен, факты будут загружены в единственную неименованную внутреннюю базу данных. Если второй параметр указан, факты будут загружены в ту внутреннюю базу данных, чье имя было помещено во второй параметр предиката. Предикат будет неуспешен, если для считываемого файла недостаточно свободного места в оперативной памяти или если указанный файл не найден на диске, или если он содержит ошибки.

ГЛАВА 2. ОПИСАНИЕ ПРОГРАММЫ

2.1 Структурная схема

Главное меню программы

Таблица с результатами поиска

Поиск по началу правления

Поиск по имени

Рисунок - 1. Структурная схема связей модулей программы.

2.2 Описание предикатов

person (name, sex, nachalo, konec) – описание факта о правителе, где:

name – имя императора;

sex – пол императора;

nachalo – год начала правления императора;

konec – год завершения правления императора.

/*****************************************************************************
        Copyright (c) My Company
 Project:  WIZ
 FileName: WIZ.PRO
 Purpose: No description
 Written by: Visual Prolog
 Comments:
*****************************************************************************/
include »wiz.inc»
include »wiz.con»
include »hlptopic.con»
%BEGIN_WIN Task Window
/***************************************************************************
        Event handling for Task Window
***************************************************************************/
predicates
  task_win_eh : EHANDLER
constants
%BEGIN Task Window, CreateParms, 10:10:09-10.11.2010, 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 = »Wiz»
  task_win_Help  = idh_contents
%END Task Window, CreateParms
clauses
%BEGIN Task Window, e_Create
  task_win_eh(_Win,e_Create(_),0):-!,
    win_main_Create(_Win),
%BEGIN Task Window, InitControls, 10:10:09-10.11.2010, Code automatically updated!
%END Task Window, InitControls
%BEGIN Task Window, ToolbarCreate, 10:10:09-10.11.2010, Code automatically updated!
    tb_project_toolbar_Create(_Win),
    tb_help_line_Create(_Win),
%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_contents
  task_win_eh(_Win,e_Menu(id_help_contents,_ShiftCtlAlt),0):-!,
    vpi_ShowHelp(«wiz.hlp»),
    !.
%END Task Window, id_help_contents
%BEGIN Task Window, id_help_about
  task_win_eh(Win,e_Menu(id_help_about,_ShiftCtlAlt),0):-!,
    dlg_about_dialog_Create(Win),
    !.
%END Task Window, id_help_about
%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
%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(«wiz.hlp»,HelpTopic).
clauses
  tb_project_toolbar_Create(_Parent):-
ifdef use_tbar
    toolbar_create(tb_top,0xC0C0C0,_Parent,
        [tb_ctrl(id_file_new,pushb,idb_new_up,idb_new_dn,idb_new_up,»New;New file»,1,1),
         tb_ctrl(id_file_open,pushb,idb_open_up,idb_open_dn,idb_open_up,»Open;Open file»,1,1),
         tb_ctrl(id_file_save,pushb,idb_save_up,idb_save_dn,idb_save_up,»Save;File save»,1,1),
         separator,
         tb_ctrl(id_edit_undo,pushb,idb_undo_up,idb_undo_dn,idb_undo_up,»Undo;Undo»,1,1),
         tb_ctrl(id_edit_redo,pushb,idb_redo_up,idb_redo_dn,idb_redo_up,»Redo;Redo»,1,1),
         separator,
         tb_ctrl(id_edit_cut,pushb,idb_cut_up,idb_cut_dn,idb_cut_up,»Cut;Cut to clipboard»,1,1),
         tb_ctrl(id_edit_copy,pushb,idb_copy_up,idb_copy_dn,idb_copy_up,»Copy;Copy to clipboard»,1,1),
         tb_ctrl(id_edit_paste,pushb,idb_paste_up,idb_paste_dn,idb_paste_up,»Paste;Paste from clipboard»,1,1),
         separator,
         separator,
         tb_ctrl(id_help_contents,pushb,idb_help_up,idb_help_down,idb_help_up,»Help;Help»,1,1)]),
enddef
    true.
%END_TLB Project toolbar
%BEGIN_TLB Help line, 10:10:09-10.11.2010, Code automatically updated!
/**************************************************************************
    Creation of toolbar: Help line
**************************************************************************/
clauses
  tb_help_line_Create(_Parent):-
ifdef use_tbar
    toolbar_create(tb_bottom,0xC0C0C0,_Parent,
        [tb_text(idt_help_line,tb_context,452,0,4,10,0x0,»«)]),
enddef
    true.
%END_TLB Help line
%BEGIN_DLG About dialog
/**************************************************************************
    Creation and event handling for dialog: About dialog
**************************************************************************/
constants
%BEGIN About dialog, CreateParms, 10:10:09-10.11.2010, Code automatically updated!
  dlg_about_dialog_ResID = idd_dlg_about
  dlg_about_dialog_DlgType = wd_Modal
  dlg_about_dialog_Help = idh_contents
%END About dialog, CreateParms
predicates
  dlg_about_dialog_eh : EHANDLER
clauses
  dlg_about_dialog_Create(Parent):-
    win_CreateResDialog(Parent,dlg_about_dialog_DlgType,dlg_about_dialog_ResID,dlg_about_dialog_eh,0).
%BEGIN About dialog, idc_ok _CtlInfo
  dlg_about_dialog_eh(_Win,e_Control(idc_ok,_CtrlType,_CtrlWin,_CtrlInfo),0):-!,
    win_Destroy(_Win),
    !.
%END About dialog, idc_ok _CtlInfo
%MARK About dialog, new events
  dlg_about_dialog_eh(_,_,_):-!,fail.
%END_DLG About dialog
%BEGIN_WIN Main
/**************************************************************************
        Creation and event handling for window: Main
**************************************************************************/
DOMAINS

name, sex = symbol 
nachalo, konec = integer
謿=string
constants
%BEGIN Main, CreateParms, 14:23:36-9.12.2012, Code automatically updated!
  win_main_WinType = w_TopLevel
  win_main_Flags = [wsf_SizeBorder,wsf_TitleBar,wsf_Maximize,wsf_Minimize,wsf_Close,wsf_ClipSiblings,wsf_ClipChildren]
  win_main_RCT = rct(100,80,598,290)
  win_main_Menu = no_menu
  win_main_Title = »Main»
  win_main_Help = idh_contents
%END Main, CreateParms
FACTS - likesDatabase
book_by_reader(string,string).

Описание фактов (предикат)

predicates
person (name, sex, nachalo, konec)
win_main_eh : EHANDLER
clauses
person («Mihail Fedorovich», m, 1613, 1645).
person («Aleksei Mihailovich», m, 1645, 1676).
person («Sofia Alekseevna», w, 1682, 1689).
person («Fedor Alekeevich», m, 1676, 1682).
person («Ivan 5», m, 1682, 1696).
person («Petr I», m, 1682, 1725).
person («Ekaterina I», w, 1725, 1727).
person («Anna Ioanovna», w, 1730, 1740).
person («Elizaveta Petrovna», w, 1741, 1761).
person («Anna Leopol’dovna», w, 1740, 1741).
person («Petr II», m, 1725, 1730).
person («Petr III», m, 1761, 1762).
person («Elaterina II», w, 1762, 1796).
person («Ivan Antonovich», m, 1740, 1741).
person («Pavel I», m, 1796, 1801).
person («Aleksandr I», m, 1801, 1825).
person («Nikolai I», m, 1825, 1855).
person («Aleksandr II», m, 1855, 1881).
person («Aleksandr III», m, 1881,1894).
person («Nicolai II», m, 1894, 1914).

otec («Mihail Fedorovich», »Aleksei Mihailovich»).
otec («Aleksei Mihailovich», »Sofia Alekseevna»).
otec («Aleksei Mihailovich», »Fedor Alekeevich»).
otec («Aleksei Mihailovich», »Ivan 5»).
otec («Aleksei Mihailovich», »Petr I»).
otec («Aleksei Mihailovich», »Ekaterina I»).
otec («Ivan 5», »Anna Ioanovna»).
otec («Petr I», »Elizaveta Petrovna»).
otec («Karl Leopol'd», »Anna Leopol’dovna»).
otec («Aleksei», »Petr II»).
otec («Karl Fridrih», »Petr III»).
otec («Petr III», »Pavel I»).
otec («Anna Leopol’dovna», »Ivan Ontonovich»).
otec («Pavel I», »Nikolai I»).
otec («Pavel I», »Aleksandr I»).
otec («Nikolai I», »Aleksandr II»).
otec («Aleksandr II», »Aleksandr III»).
otec («Aleksandr III», »Nikolai II»).
uassert (book_by_reader(Name, Title)):-
book_by_reader(Name, Title), 
!
; % OR 
assert(book_by_reader(Name, Title)).

Окно приложения

win_main_Create(_Parent):-

win_Create(win_main_WinType,win_main_RCT,win_main_Title,

win_main_Menu,_Parent,win_main_Flags,win_main_eh,0).

%BEGIN Main, e_Create

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

%BEGIN Main, InitControls, 14:23:36-9.12.2012, Code automatically updated!

win_CreateControl(wc_LBox,rct(76,170,415,198),»«,_Win,[wsf_Group,wsf_TabStop,wsf_VScroll,wsf_Sort,wsf_NoIntegralHeight,wsf_MultiColumn,wsf_UseTabStops],idc_list_box),

win_CreateControl(wc_Edit,rct(167,35,338,64),»«,_Win,[wsf_AlignLeft,wsf_Group,wsf_TabStop,wsf_AutoHScroll],idc_edit),

win_CreateControl(wc_PushButton,rct(154,105,345,131),»Поиск по имени»,_Win,[wsf_Group,wsf_TabStop],idc_поиск_по_имени),

win_CreateControl(wc_PushButton,rct(154,70,348,96),»Поиск по началу правления»,_Win,[wsf_Group,wsf_TabStop],idc_поиск_по_началу_правления),

win_CreateControl(wc_Text,rct(80,142,192,165),» Имя правителя»,_Win,[wsf_AlignLeft],idct_имя_правителя),

win_CreateControl(wc_Text,rct(235,146,283,166),» Пол»,_Win,[wsf_AlignLeft],idct_пол),

win_CreateControl(wc_Text,rct(286,143,409,165),» Годы правления»,_Win,[wsf_AlignLeft],idct_годы_правления),

win_CreateControl(wc_Text,rct(5,6,488,24),»Период царствования семьи Романовых на Руси с 1613 по 1915 год»,_Win,[wsf_AlignLeft],idct_1),

%END Main, InitControls

%BEGIN Main, ToolbarCreate, 14:23:36-9.12.2012, Code automatically updated!

%END Main, ToolbarCreate

!.

%END Main, e_Create

%MARK Main, new events

%BEGIN Main, idc_поиск_по_имени _CtlInfo

win_main_eh(_Win,e_Control(idc_поиск_по_имени,_CtrlType,_CtrlWin,_CtlInfo),0):-!,

E_WINDOW = win_GetCtlHandle(_Win,idc_edit),

EDIT_STRING= win_GetText(E_WINDOW),

LBOXWIN = win_GetCtlHandle(_Win,idc_list_box),

lbox_Clear(LBOXWIN),

person (EDIT_STRING, X, Y, Z),

concat(EDIT_STRING,» «,Fam),%фамилия + пробел

concat(Fam,X,Fampol),%фамилия+ пробел +пол

concat(Fampol,» «,Fampol2),

str_int(Ychar,Y),concat(Ychar,»----------»,Y1),

str_int(Zchar,Z),concat(Zchar,» «,Z1),

concat(Fampol2,Y1,Z111),%фамилия+ пробел +пол+

concat(Z111,Z1,Z1111),%фамилия+ пробел +пол

lbox_Add(LBOXWIN ,-1,Z1111),!,

!.

%END Main, idc_поиск_по_имени _CtlInfo

Функция, осуществляющая поиск по году начала правления

%BEGIN Main, idc_поиск_по_началу_правления _CtlInfo

win_main_eh(_Win,e_Control(idc_поиск_по_началу_правления,_CtrlType,_CtrlWin,_CtlInfo),0):-!,

E_WINDOW = win_GetCtlHandle(_Win,idc_edit),

EDIT_STRING= win_GetText(E_WINDOW),

str_int(EDIT_STRING,EDIT_STRING2),

LBOXWIN = win_GetCtlHandle(_Win,idc_list_box),

lbox_Clear(LBOXWIN),

person (X, Y, EDIT_STRING2, Z),

concat(X,» «,Fam),%фамилия + пробел

concat(Fam,Y,Fampol),%фамилия+ пробел +пол

concat(Fampol,» «,Fampol2),

str_int(Ychar,EDIT_STRING2),concat(Ychar,»----------»,Y1),

str_int(Zchar,Z),concat(Zchar,» «,Z1),

concat(Fampol2,Y1,Z111),%фамилия+ пробел +пол+

concat(Z111,Z1,Z1111),%фамилия+ пробел +пол

lbox_Add(LBOXWIN ,-1,Z1111),

!.

%END Main, idc_поиск_по_началу_правления _CtlInfo

Функция, осуществляющая поиск по имени

%BEGIN Main, idc_поиск_по_имени _CtlInfo Поиск с возвратом!

win_main_eh(_Win,e_Control(idc_поиск_по_имени,_CtrlType,_CtrlWin,_CtlInfo),0):-!,

E_WINDOW = win_GetCtlHandle(_Win,idc_edit),

EDIT_STRING= win_GetText(E_WINDOW),

LBOXWIN = win_GetCtlHandle(_Win,idc_list_box),

lbox_Clear(LBOXWIN),

person (EDIT_STRING, X, Y, Z),

concat(EDIT_STRING,» «,Fam),%фамилия + пробел

concat(Fam,X,Fampol),%фамилия+ пробел +пол

concat(Fampol,» «,Fampol2),

str_int(Ychar,Y),concat(Ychar,»----------»,Y1),

str_int(Zchar,Z),concat(Zchar,» «,Z1),

concat(Fampol2,Y1,Z111),%фамилия+ пробел +пол+

concat(Z111,Z1,Z1111),%фамилия+ пробел +пол

lbox_Add(LBOXWIN ,-1,Z1111),fail,!.

%END Main, idc_поиск_по_фамилии _CtlInfo

%BEGIN Main, e_Size

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

ifdef use_tbar

toolbar_Resize(_Win),

enddef !.

%END Main, e_Size

%BEGIN Main, e_Menu, Parent window

win_main_eh(Win,e_Menu(ID,CAS),0):-!,

PARENT = win_GetParent(Win),

win_SendEvent(PARENT,e_Menu(ID,CAS)),!.

%END Main, e_Menu, Parent window

%END_WIN Main

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

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

vpi_Init(task_win_Flags,task_win_eh,task_win_Menu,»wiz»,task_win_Title).

%BEGIN_TLB Project toolbar, 10:10:09-10.11.2010, Code automatically updated!

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

Creation of toolbar: Project toolbar

*********************************************************

ГЛАВА 3. ТЕСТИРОВАНИЕ И ОТЛАДКА ПРИЛОЖЕНИЯ

Основными задачами тестирования являются:

- нахождение ошибок при работе программы;

- проверка правильности полученных результатов работы;

- проверка на стабильную работу приложения и др.

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

Для запуска приложения необходимо запустить на выполнение файл Wiz.exe. После запуска на экране появилось главное окно приложения (рисунок 2).

Рисунок 2. – Главное окно приложения.

Для начала поиска необходимо ввести имя императора или год начала правления в период с 1613 по 1915 год.

Рисунок 3. – Главное окно программы с введенным года правления императора.

С помощь данного приложения возможно осуществлять поиск императорских особ из семьи Романовых по имени (рисунок 4) и году начала правления (рисунок 5).

Рисунок 5. – Главное окно приложения с результатами поиска

по имени.

Рисунок 6. – Главное окно приложения с результатами поиска по году начала правления.

ЗАКЛЮЧЕНИЕ

Логическое программирование основывается на выводе информации, являющейся результатом изучения фактов. Образно говоря, это чем-то похоже на процесс обучения ребенка, когда вам чётко надо задать окружающие объекты, которые трогать «нельзя», остальные же изначально помечаются, как «доступные». Получив ваши наставления ребёнок начинает изучать мир и, сопоставляя данные, принимает решения. В логическом программировании этот принцип повторяется практически в точности, но разумеется в чуть более сложной форме.

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

В результате проделанной работы были получены теоретические знания, практические навыки программирования на языке Prolog и разработано работоспособное приложение. Программа работает с различными типами данных и видами поиска, а разработанный интерфейс позволит пользователю легко освоиться с работой в приложении. Данная работа наглядно демонстрирует эффективность решения поставленных задач при работе с внутренней базой данных.

СПИСОК ЛИТЕРАТУРЫ

  1. Алгоритмизация и программирование: Учебное пособие / С.А. Канцедал. - М.: ИД ФОРУМ: НИЦ ИНФРА-М, 2014. - 352 с.
  2. Бабушкина, И. А. Практикум по объектно-ориентированному программированию / И. А. Бабушкина, С. М. Окулов. - 3-е изд. (эл.). - М. : БИНОМ. Лаборатория знаний, 2012. - 366 с.
  3. Базовые средства программирования/ В.Н. Шакин. - М.: Форум: НИЦ ИНФРА-М, 2015. - 304 с.
  4. Введение в специальность программиста: Учебник / В.А. Гвоздева. - 2-e изд., испр. и доп. - М.: ИД ФОРУМ: НИЦ Инфра-М, 2013. - 208 с.
  5. Голицына О.Л. Языки программирования: Учебное пособие / О.Л. Голицына, Т.Л. Партыка, И.И. Попов. - 3-e изд., перераб. и доп. - М.: Форум: ИНФРА-М, 2015. - 400 с
  6. Ездаков, А. Л. Функциональное и логическое программирование: учебное пособие / А.Л.Ездаков. - 2-е изд. - М. : БИНОМ. Лаборатория знаний, 2011. - 119 с.
  7. Информатика, автоматизированные информационные технологии и системы: Учебник / В.А. Гвоздева. - М.: ИД ФОРУМ: НИЦ ИНФРА-М, 2015. - 544 с.
  8. Каймин В.А.Информатика: Учебник/ Каймин В. А., 6-е изд. - М.: НИЦ ИНФРА-М, 2015. - 285 с
  9. Культин Н. Б. Основы программирования в Delphi XE. — СПб.: БХВ-Петербург, 2011. — 405 с.
  10. Культин, Н. Б. Основы программирования в Delphi 7 / Н.Б. Культин. — 2-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2011. — 640 с.
  11. Масленникова, О. Е. Основы искусственного интеллекта: учеб. пособие / О. Е. Масленникова, И. В. Гаврилова. - 2-е изд., стер. - М.: ФЛИНТА, 2013. - 282 c.
  12. Машнин Т. С. Современные Java-технологии на практике. — СПб.: БХВ-Петербург, 2010. — 560 с.
  13. Монахов В. В. Язык программирования Java и среда NetBeans. — 3-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2011. — 703 с.
  14. Окулов, С. М. Основы программирования / С. М. Окулов. - 5-е изд., испр. - М.: БИНОМ. Лаборатория знаний, 2011. - 440 с.
  15. Осипов Д. Л. Базы данных и Delphi. Теория и практика. — СПб.: БХВ-Петербург, 2011. — 746 с.
  16. Основы алгоритмизации и программирования: Учебное пособие / В.Д. Колдаев; Под ред. Л.Г. Гагариной. - М.: ИД ФОРУМ: ИНФРА-М, 2015. - 416 с.
  17. Программирование на языке Object Pascal: Учеб. пос. / Т.И.Немцова и др; Под ред. Л.Г.Гагариной. - М.: ИД ФОРУМ: НИЦ ИНФРА-М, 2013. - 496 с.
  18. Программирование на языке высокого уровня. Учебное пособие / Т.И. Немцова; Под ред. Л.Г. Гагариной. - М.: ФОРУМ: ИНФРА-М, 2015. - 496 с.
  19. Программирование на языке Си/А.В.Кузин, Е.В.Чумакова - М.: Форум, НИЦ ИНФРА-М, 2015. - 144 с.
  20. Технология разработки программного обеспечения: Учеб. пос. / Л.Г.Гагарина, Е.В.Кокорева, Б.Д.Виснадул; Под ред. проф. Л.Г.Гагариной - М.: ИД ФОРУМ: НИЦ Инфра-М, 2013. - 400 с.
  21. Языки программирования: Учебное пособие / О.Л. Голицына, Т.Л. Партыка, И.И. Попов. - 3-e изд., перераб. и доп. - М.: Форум: ИНФРА-М, 2015. - 400 с.