Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Абстрактний тип даних. 2

Абстрактний тип даних. 1

Приклад використання посилання

 

void swap(int &a, int &b)

{

int nTemp;

nTemp = a;

a = b;

b = nTemp;

}

main()

{

int nJ;

int nI;

nJ = 10;

nI = 20;

swap (nI, nJ);

}

Змінені значення формальних параметрів впливають на значення фактичних (результати повертаються з підпрограми через параметри)


Приклад використання посилання і не типізованої вказівної змінної

void swap (void* &a, void* &b)

{

void *ptemp;

ptemp = a;

a = b;

b = ptemp;

}

main()

{

int *pnI;

int *pnJ;

pnI = new int;

pnJ = new int;

*pnI = 10;

*pnJ = 20;

swap (pnI, pnJ);

delete pnI;

delete pnJ;

}


Приклад формального параметру індексованого типу.

void swap(int nAr[2]) { int ntemp; ntemp = nAr[0]; nAr[0] = nAr[1]; nAr[1] = ntemp; } void main(void) { int myAr[2] = {10, 20}; swap(myAr); }   При myAr[2] = {10, 20}; myAr[2] = {20, 10}; void swap(const int nAr[2]) { int ntemp; ntemp = nAr[0]; //Error: cannot modify a const object //nAr[0] = nAr[1]; //nAr[1] = ntemp; } void main(void) { int myAr[2] = {10, 20}; swap(myAr); }   При myAr[2] = {10, 20}; myAr[2] = {10, 20};

 

const SIZE_MAS1 = 6;

const SIZE_MAS2 = 7;

 

void init(int nAr[][SIZE_MAS2], int size1, int size2)

{

int i, j;

for (i = 0; i < size1; i = i + 1)

{

for (j = 0; j < size2; j = j + 1)

{

nAr[i][j] = i * j;

}

}

}

 

int add(int nAr[] [SIZE_MAS2], int size1, int size2)

{

int sum = 0;

int i, j;

for (i = 0; i < size1; i = i + 1)

{

for (j = 0; j < size2; j = j + 1)

{

sum = sum + nAr[i][j];

}

}

return sum;

}


 

void main()

{

int mas [SIZE_MAS1][SIZE_MAS2];

init(mas, SIZE_MAS1, SIZE_MAS2);

int sum;

sum = add(mas, SIZE_MAS1, SIZE_MAS2);

}

 

 


 

Приклад використання статичної змінної у підпрограмі.

 

int sum(int x)

{

static int nS;

nS = nS + x;

return nS;

}

main()

{

while (sum(1) < 10);

}

 


program ty;

const CountRow = 5;

const CountColumn = 6;

type ar = array [1.. CountRow,1.. CountColumn] of real;

 

function Avg(simpl: ar; sizeRow: integer): real;

var

nCount: integer;

lSum: real;

begin

lSum:=0.0;

for nCount:= 1 to sizeRow do

begin

simpl[nCount, 1]:= nCount + 100;

lSum:= lSum + simpl[nCount, 1];

end;

Avg:= lSum/ sizeRow;

end;

 

var

mas: ar;

i: real;

Begin

i:= Avg (mas, CountRow);

End.


 

Абстрактний тип даних (abstract data type) – це визначуваний тип, що потребує опису не тільки множини значень, але й множини операцій.

Класифікація абстрактних типів даних:

 


 

В основі абстрактних типів даних лежать структури даних. Абстрактний тип даних, як і будь-який інший тип даних мови програмування, використовується для опису об'єктів програми. Стан абстрактного типу даних, це його значення в деякий момент часу виконання програми. Як правило, значення абстрактного типу даних є складеним, тому стан об'єкта абстрактного типу даних – це множина поточних значень об'єкта – компонентів мультизначення.


Операції абстрактних типів даних

Усі операції зі значеннями об'єктів, описаних абстрактними типами даних, належать до одного з таких трьох типів:

конструктори - змінюють стан об'єкта (наприклад, записати в, прочитати з);

селектори - оцінюють стан об'єкту (наприклад, чи порожнє значення структури даних, або повне; яка довжина значення, що в голові значення, а, що у хвості, якщо це список; якщо, наприклад, це черга - що у вершині?

ітератори – «розглядають» (досліджують) стан об'єкта (наприклад, повертають, значення всіх компонентів послідовне одне за одним без зміни стану об'єкта).


<== предыдущая лекция | следующая лекция ==>
Процедури | Приклади читання оператора опису
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 1323; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.