Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OOP_pz022 (1).doc
Скачиваний:
3
Добавлен:
29.08.2019
Размер:
239.62 Кб
Скачать

1.Типи знань та методи їх представлення.

“Алгоритм+Структури данних=прогама.”

Алгоритм-методи розв. зад. Структ.даних-представ. знань.

Тпипи знань:1.обьєкти та їх властивості.Цикли розробки ПЗ

-аналіз;-проєктування;-програмування;...

В паскалі це виглядає:

Type

Table=record;

h:THight;

w:TWeight;

c:TColor;

l:longiht;

end.

2.Події(факти)-факт участі обь-єктів в певній діяльності.

Var:

IsBeatenBy:Boolean;

3.Процеси(процедури)-це знання про те,як одні обьєкти перетвор. в інші.

Дерево->дошки

Дошки-стіл

Аксиома-теорема

Доданок-сума

Паскаль:

Procedure...(...);

4.Метазнання,т.т. знання про знання,про те як скористатися іншим типом знань.

Методи представлення знань: Задача:описати мову програ-мув.(мп).Формальне дов-ня пра-вильності програми.Формальне розвьязування потребує описан-ня т.ч.,щоб вона співпадала з ті-єю мовою,на якій проводиться дов-ня.

1.Формальне описання семанти-ки мп.

Математична логіка.

Предикат WP(S,R),де S-опера-тор, R-після мова (результат)-найслабша передумова.

I nput S output

?

Skip-порожній оператор.WP(Skip,R)=R.

2.Продукційні системи: if...then

............

if...then

3.Фрейми(frame)

Фрейм-це капсула,яка містить у собі властивості обьєкта та ме-тоди обробки.

О бьєкт:

Власт

ивості

... ...

мет.

Обробки

У конкретній мп.механізм дослід.різний. В мові С++ ця ко-нструкція наз class.

4.Семантичні мережі-графічна форма представлення відношен-ня між обьєктами області. Вер-шини-обьєкти (поняття ситуації (дії)), дуги-властивості або еле-ментарні відношення між обьєк-тами.

2.Парадигми імперативного стилю.Парадигми процедур-ності.

Парадигма-це метод міркувань який застосовується для роз-в’язання цілого класу задач

1950-1960-парадигма алгоритмізації, 1960-1970-пара-дигма локалізації,1970-1980

парадигма абстрактних типів

даних (атд),1980-..ооп.

Мова пр-ня підтримує стиль пр-ня якщо в ній присутні засоби які роблять зручним використан-ня цього стилю. П-д:Паскаль

Структурне пр-ня (мо-дульність),ФортранМодуль-ність,С++контроль типів.

Мова пр-ня підтримує парадиг-му пр-ня якщо вона підтримує відповілний стиль, якщо мова побудована таким чином що во-на контролює ненавмисне від-хилення від парадигмів.

Парадигма алгоритмізації. Складність алгоритмів набагато більша складності данних.Якщо задача велика, то треба її роз-бити на підзадачі (методом "Роз-діляй і пануй").Якою складною б небула програма та алгоритм, для її написання достатньо таких алгоритмічних конструк-цій:

  • слідування

  • розгалудження

  • цикл

Мотив винекнення цієї пара-дигми це необхідність декомпо-зиції алгоритмів що виникають в наслідок розв"язання.

Мовні засоби:

1.процедури з механізмами їх визову, передачі та повертання параметрів процедури.

2.Конструкції структурного пр-ня:

  • послідовність

  • розгалудження

  • цикл

Мови яким притаманні таки засоби:

1.Алгол-60

2.Паскаль(68-70р.)

(не підтримують модульність)

П-д:

Double sqrt (double x)

{

//…

return result;

}

Девіз: використовуйте найкраще із алгоритмів, декомпозицію задачі виконуйте за допомогою процедур

3.Парадигма модульності.

Алго- дані

ритм

Ця задача має невелику алго-ритмічну складність.Причина модульності: структура даних. Задачу ділимо методом "Розді-ляй і пануй". треба розбити задачу так, щоб дані однієї зада-чі не заважали іншій.При роз-битті задачі на модулі описання даних виявляється локалізова-ним тобто створеним в межах одного модуля. П-д мови: Форт-ран(54 р.),Турбо-Паскаль, С++. Мовні звсоби: окрема трансляція програмних одиниць.П-д:

Реалізація стека

1)стек повинен мати уніфіко-ваний інтерфейс

2)запобігти способам доступу до стека в обхід інтерфейсних ф.

3)реініціализація до першого використання

// stack . h

#define stack_size 100

//задаем размер стека

void push(char c);

char pop( );

//stack . c -файл що містить модуль стека

#include "stack . h"

static

char st[stack_size] ;

char * sp=st+stack_size;

//int sp=stack_size;

void push(char c)

{*(--sp)=c;}

//{st[--sp]=c;}

char pop( )

{*(sp++)}

//{ return st[sp++];}

//головна програма

#include "stack . h"

void main( )

{ push('c');

if ('c'!=pop( )) error ;}

недолік парадигми модульности: 1)выдсутність зручної можливо-сті розмноження екземплярів ти-пу модуль

2)на етапі виконання програми

відсутній контроль за ініціалі-зацією та присвоєнням. П-д:

char c ;

char * pc ;

c = pc ;

Помилки які характерні для цього стилю пр-ня:

1)"забули створити екземпляр" 2)"забули знищити екземпляр"

3)"спроба використання після знищення"

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