Курс лекций мдк 01. 02 «Прикладное программирование» пм 01 «Разработка программных модулей программного обеспечения для компьютерных систем»


Тема «Абстрактные типы данных в С++ (ADT)»



Download 350,99 Kb.
bet2/22
Sana08.12.2022
Hajmi350,99 Kb.
#881790
TuriКурс лекций
1   2   3   4   5   6   7   8   9   ...   22
Bog'liq
lektsii pm01-1

Тема «Абстрактные типы данных в С++ (ADT)»

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


Пример
struct student {


int id;
char name [20]; };


struct student s= { 567, “Лопухин Олег”}


Что определяет тип? Тип определяет два типа информации: набор свойств и набор операций. Предположим, что нужно определить новый тип данных, для этого:





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

  2. необходимо обеспечить способы манипулирования данными.




  • информатике был разработан успешный способ определения новых типов данных. Это трехэтапный процесс перехода от абстрактного понятия к конкретной реализации:




    • Создайте абстрактное описание свойств типа и операций, которые можно выполнять с данным типом. Это описание не должно быть связано с конкретной реализацией. Оно даже не должно быть связано с конкретным языком программирования. Такое формальное абстрактное описание называется абстрактным типом данных(ADT).




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

9



  • Создайте код для реализации интерфейса. Конечно, этот этап имеет большое значение, но программисту, который использует новый тип, не обязательно знать подробности реализации.

Рассмотримпрактическийслучайпредставленияданных.


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


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


#define TSIZE 45 /* размер массива,


предназначенного для хранения заголовка фильма*/ struct film{


char title [TSIZE];


int rating;
struct film *next;

};


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

Прежде чем рассматривать текст программы на языке С для связанного списка, рассмотрим такой список с концептуальной точки зрения. Предположим, что пользователь вводит Modern Times в качестве заголовка и 10 - в качестве рейтинга. Программа выделит память для структуры film , скопирует строку Modern Times в элемент title и установит значение элемента rating равным 10. Для указания того, что никакая структура не следует за текущей, программа установит указатель поля next в NULL (нулевой указатель). Конечно, необходимо отслеживать место хранения первой структуры. Это можно сделать, присвоив ее адрес отдельному указателю, который мы будем называть заглавным указателем. Заглавный указатель указывает на первый элемент в связанном списке элементов. Вид этой структуры показан на рисунке.


struct film *head;


2240



2240




Modern Times

10

NULL

10
head название рейтинг next



Download 350,99 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   ...   22




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish