- •2.Парадигми імперативного стилю.Парадигми процедур-ності.
- •3.Парадигма модульності.
- •4.Парадигма атд
- •5.Парадигма ооп.
- •7.Констуктори та деструктори.
- •8.Наслідування класів.
- •9.Обмеження доступу до базового кл.
- •10. Конструктор базового класу. Ініціалізація полів кл
- •11.”Покажчик на себе”. Статичні поля класу.
- •12.Конкретні і абстрактні типи. Віртуальні ф-ії.
- •13.Віртуальні конструктори та диструктори.Клонування.
- •14. Ефективний доступ до членів класу .Дружні ф-ії та дружні класи .
- •15.Множинне наслідування.
- •16.Віртуальні базові класи.
- •17.Перевантаження функцій.
- •18.Перевантаження унарних операцій.
- •22.Перетворення за допомогою конструкторів.
- •28.Елементи узагальненого програмування. Протеріччя з ооп. Поняття про ітератори та узагальнені алгоритми. Побудова узагальненої функції.
- •П алгоритми
- •30.Елементи узагальненого програмування. Контейнерно-ітераторна модель на основі шаблонних класів та шаблонних функцій.
- •Типи знань та методи їх представлення.
- •Парадигми імперативного стилю.Парадигми процедур-ності.
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)"спроба використання після знищення"