Дипломные, курсовые и контрольные работы на заказ Заказать написание уникальной работы, купить готовую работу  
 
Заказать реферат на тему
Диплом на заказа
Крусовые и рефераты
Заказать курсовик по химии
Заказать дипломную работу
контрольные работы по математике
контрольные работы по геометрии
Заказать курсовую работу
первод с английского
 
   
   
 
Каталог работ --> Технические --> Информатика --> Рекурсивно-логическое программированиие

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

МГИУ

Курсовая по предмету:
"Информатика"



Название работы:
"Рекурсивно-логическое программированиие"




Автор работы: Юлия
Страниц: 15 шт.



Год:2008

Цена всего:1490 рублей

Цена:2490 рублей

Купить Заказать персональную работу


Краткая выдержка из текста работы (Аннотация)

Nothing:='';

//------- запишем массивы -------------

for i:=1 to ls1 do

begin

if s1[i] in ['0'..'9'] then

begin

Nothing:='';

Nothing:=Nothing+s1[i];

x[ls1+1-i]:=strtoint(Nothing);

end;

end;

for j:=1 to ls2 do

begin

if s2[j] in ['0'..'9'] then

begin

Nothing:='';

Nothing:=Nothing+s2[j];

y[ls2+1-j]:=strtoint(Nothing);

end;

end;

//-------- конец формирования массивов ----------

//-------- конец препроцессинга -----------------

flag:=false;

for i:=1 to ls1 do

begin

if x[i]+y[i]+ym[i]=y[i] then a[i]:=x[i]-y[i]

else

begin

a[i]:=10+x[i]-y[i];

x[i+1]:=x[i+1]-1;

end;

end;

for i:=1 to ls1 do begin a1:=a1+inttostr(a[ls1+1-i]); end;

MINUS:=a1;

//------- конец опериции отнимания ----------------

end;

function YMNOSH(s1,s2: string): string;

var ls1,ls2,i,j,k: integer;

s3,nothing,a1,answer,newedit1,newedit2: string;

x,y,ym,a: array[1..200] of integer;

flag: boolean;

ch,ch1,ch2,ran: string;

begin

//--------------- препроцессинг --------------------------

for i:=1 to 200 do x[i]:=0;

for i:=1 to 200 do y[i]:=0;

for i:=1 to 200 do ym[i]:=0;

for i:=1 to 200 do a[i]:=0;

ls1:=length(s1);

ls2:=length(s2);

Nothing:='';

//------- запишем массивы -------------

for i:=1 to ls1 do

begin

if s1[i] in ['0'..'9'] then

begin

Nothing:='';

Nothing:=Nothing+s1[i];

x[ls1+1-i]:=strtoint(Nothing);

end;

end;

for j:=1 to ls2 do

begin

if s2[j] in ['0'..'9'] then

begin

Nothing:='';

Nothing:=Nothing+s2[j];

y[ls2+1-j]:=strtoint(Nothing);

end;

end;

//-------- конец формирования массивов ----------

//-------- конец препроцессинга -----------------

ch:='';

newedit1:=Form1.edit1.text;

newedit2:=Form1.Edit2.Text;

answer:='';

ch1:='';

ch2:='';

for j:=1 to ls2 do

begin

ch2:='';

ch1:='';

ch:='';

for i:=1 to ls1 do

begin

ch:=ch+inttostr((y[j]*x[i]+ym[i]) mod 10);

ym[i+1]:=((y[j]*x[i]+ym[i]) div 10);

if i=ls1 then if ym[i+1]0 then ch:=ch+inttostr(ym[i+1]);

end;

for i:=length(ch) downto 1 do

Содержание работы

ВВЕДЕНИЕ

В ходе изучения дисциплины "Рекурсивно-логическое программировани-ие" студенты должны получить теоретические знания и научиться применять полученные знания в практической работе. Формирование и закрепление навы-ков самостоятельной работы является неотъемлемой частью обучения. Формой учебной работы, непосредственно связанной с самостоятельным решением по-ставленных инженерных и исследовательских вопросов, являются курсовые работы.

Сформулировано задание на выполнение курсовой работы, приведены ва-рианты заданий для выбора.

Пособие предназначено для студентов заочной (дистанционной) формы обучения.

1. КУРСОВАЯ РАБОТА

1.1. ТЕМА: разработка алгоритма и программы системы искусственного интеллекта.

1.2.СОДЕРЖАНИЕ КУРСОВОЙ РАБОТЫ:

- постановка задачи;

- математическое описание метода (например, в Latex, WinTex, MS Equa-tion);

- описание алгоритма и схем (например, на языке UML);

- тексты программ на языках логического программирования.

- описание программ.

2. ВАРИАНТЫ ЗАДАНИЙ КУРСОВОЙ РАБОТЫ:

1. Длинная арифметика

Описание метода:

Мы пользуемся теме же принципами, что и любой 5-тикласник, умеющий складывать числа в столбик, а собственно складываем два числа и запоминаем разряд в уме, в дальнейшем ис-пользуя этот разряд для получения старшего разряда, теме же принципами мы будем пользо-ваться для получения разности двух чисел и произведения.

ПРОЦЕСС

Мы ограничены размером (величиной) чисел, с которыми можем рабо-тать. А если нам необходимо выполнить арифметические действия над очень большими числами, например,

30! = 265252859812191058636308480000000?

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

Числа, для представления которых в стандартных компьютерных типах данных не хватает количества двоичных разрядов, называются "длинны-ми". Реализация арифметических операций над такими "длинными" чис-лами получила название "длинной арифметики".

Организация работы с "длинными" числами во многом зависит от того, как мы представим в компьютере эти числа. "Длинное" число можно за-писать, например, с помощью массива десятичных цифр, количество эле-ментов в таком массиве равно количеству значащих цифр в "длинном" числе. Но если мы будем реализовывать арифметические операции над этим числом, то размер массива должен быть достаточным, чтобы размес-тить в нем и результат, например, умножения.

Существуют и другие представления "длинных" чисел. Рассмотрим одно из них. Представим наше число

30! = 265252859812191058636308480000000

в виде:

30! = 2 * (104)8 + 6525 * (104)7 + 2859 * (104) + 8121 * (104)5 + 9105 * (104)4 + 8636 * (104)3 + 3084 * (104)2 + 8000 * (104)1 + 0000 * (104)0.

Это представление наталкивает на мысль о массиве, представленном в табл. 1.

Таблица 1

Номер элемента в массиве А

0 1 2 3 4 5 6 7 8 9

Значение

9 0 8000 3084 8636 9105 8121 2859 6525 2

Мы можем считать, что наше "длинное" число представлено в 10000-ой системе счисления (десятитысячно-десятичная система счисления, приве-дите аналогию с восьмерично-десятичной системой счисления), а "цифра-ми" числа являются четырехзначные числа.

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

1 2 3 4 5 6 7 8 9 8

Так мы представили число 1234567898 с помощью массива.

9 9 9 9 9 9 9 9 9 9

Так мы представили число 9999999999 с помощью массива.

Теперь определим операцию сложения для этих двух массивов:

Для эмуляции искусственного интеллекта мы будем описывать программу с точки зрения человека. Для этого создадим новый массив:

0 0 0 0 0 0 0 0 0 0

Массив мы назовем «УМ», тогда работу программы можно графически представить так:

0 0 0 0 0 0 0 0 0 0

+

1 2 3 4 5 6 7 8 9 8

+

9 9 9 9 9 9 9 9 9 9

=

Если последний элемент «х» сложим с последним элементом «у» и если число будет больше 9, тогда мы, как бы это делал человек, запишем в «ум» число 1 и получим:

Ум

0 0 0 0 0 0 0 0 1 0

+ Х

1 2 3 4 5 6 7 8 9 8

+ У

9 9 9 9 9 9 9 9 9 9

= Ответ

0 0 0 0 0 0 0 0 0 7

Если вы обратили внимание на стрелочку, то должны были заметить, что элемент массива изменился, тоесть, другими словами, мы «запомнили» единичку.

При дальнейшем подсчете мы будем уже учитывать эту единичку.

В нашей программе мы определили операцию сложения, отнимания и ум-ножения для чисел длинной арифметики.

Скриншоты:

Внешний вид программы:

Меню:

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

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Menus;

type

TForm1 = class(TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

Label1: TLabel;

Label2: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Label3: TLabel;

Label4: TLabel;

Edit3: TEdit;

N6: TMenuItem;

procedure N6Click(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure N5Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

function WIB(s1,s2: string): boolean;

var ls1,ls2,i: integer;

ls3: string;

flag: boolean;

begin

ls1:=length(s1); ls2:=length(s2); flag:=false;

if ls1strtoint(s2[i]) then begin break; end;

if strtoint(s1[i])

Использованная литература

  1. И.Соммервилл Инженерное програаммное обеспечениея. М.: «Виль-ямс», 2002. 624 с.
  2. Г. Буч Объектно-ориентированный анализ и проектирование с примерами приложений на C++, 2-е изд./Пер. с англ. М.: Издательство Бином, СПб: Невский диалект, 1998
  3. Стерлинг Л. Шапиро Э. Искусство программирования на языке Пролог /Пер. с англ. М.: Мир, 1990
  4. Братко,Иван Алгоритмы искусственного интеллекта на языке PROLOG;пер.с англ.:. / Иван Братко - М.: Вильямс, 2004
  5. Логическое программирование. Сборник статей. / Под ред. В.Н. Агафоно-ва. М.: Мир, 1988
  6. Язык Пролог в пятом поколении ЭВМ. / Сост. Н.И. Ильинский М.: Мир, 1988
  7. Хоггер К. Введение в логическое программирование. М.: Мир, 1988
  8. Клоксин У. Программирование на языке Пролог. / Меллиш К. М.: Мир, 1987
  9. Малпас Дж Реляционный язык Пролог и его применение. М.: Наука, 1990
  10. Братко И. Программирование на языке Пролог для искусственного ин-теллекта. М.: Мир, 1990
  11. Набебин А.А. Логика и Пролог в дискретной математике. М.: Издатель-ство МЭИ, 1996
  12. Чень Ч. Математическая логика и автоматическое доказательство теорем . / Ли Р М.: Наука, 1983
  13. Hassan Ait-Kaci Warren s Abstract Machine: A Tutorial Reconstruction. MIT Press, 1991
  14. K. Apt Logic Programming // J. van Leeuwen (Ed.) Handbook of Theoretical Computer Science. MIT Press, 1990


Другие похожие работы