Големина на текста:
Структури
1.Що е структура?
В някои от задачите по програмиране се налага съхраняване на няколко характеристики за
един и същ обект. Например, ако трябва да се обработват данни за един ученик, е необходимо да
се съхранява името му, неговия среден успех, ръст, тегло, клас, паралелка и др. Изброените
характеристики са от различен тип – името е от тип низ, средният успех, ръста и теглото са дробни
числа, класът е цяло число, а паралелката – знак.
Ако се налага да се обработват данни за група ученици, ще се наложи да се задели по един
масив за всяка една от характеристиките. Синхронизирането на данните по този начин ще бъде
много трудно, защото единствената връзка между името, успеха и другите характеристики би бил
единствено индекса им в съответния масив. По този начин обработката на данните ще бъде
значително затруднена, защото при всяка операция трябва да се внимава да не се наруши
синхронизацията. Например, ако при сортиране се наложи разместване на двама ученика в
списъка, то трябва внимателно да се разместят всичките им характеристики.
Могат да се дадат още примери за подобни ситуации, като изводът от тях ще бъде винаги
един и същ – необходим е такъв инструмент на езика за програмиране, който да позволява
съхраняване в една променлива на няколко характеристики от различен тип.
Езикът С/С++ дава възможност за дефиниране на потребителски тип, наречен структура,
който съдържа няколко еднотипни компоненти.
Ще разгледаме подробности по декларирането и използването на структури в програми на
С/С++.
2.Деклариране на структура
При деклариране на структура се изброяват всички нейни компоненти, подобно на
деклариране на променливи, като за всяка компонента се обявява име и тип.
struct име_на_структурата
{
компоненти_на_структурата
};
Като име_на_структурата се използва произволен валиден идентификатор.
Всяка компонента на структурата се декларира по следния начин:
тип име_на_компонентата;
Като тип може да се използва всеки тип, разрешен за използване в езика С/С++. Като
име_на_компонентата може да се използва произволен валиден идентификатор.
Пример 1:
За съхраняване на данните за ученик (име, среден успех, клас и паралелка) може да се
използва следната структура
struct stud
{
string m_name;
double m_mark;
int m_class;
char m_classname;
};
Забележка:
Добре е имената на структурата и компонентите да са такива, че да подсказват на
програмиста за какво служи съответната структура и съответната компонента. Освен това пред
името на всяка компонента се поставя буквата m (от member), което означава, че това е име на
елемент на структура.
3.Деклариране на променливи от тип структура
След като е деклариран тип – структура е необходимо да се декларират и променливи от
този тип, така че да могат да бъдат използвани в програмата. Има два начина за деклариране на
променливи от тип структура.
I начин: непосредствено след дефиницията на структурата
В този случай декларацията на променливата се описва непосредствено след декларацията
на самия тип, като след декларацията се поставя разделител – интервал или знак за нов ред. Ето
пример за такава декларация. В следния програмен фрагмент е декларирана структура за дата и
непосредствено след нея е декларирана променлива от тип date.
struct date
{
int m_day, m_month, m_year;
} d;
II начин: навсякъде в програмата
Този начин предполага, че типът – структура вече е деклариран някъде в програмата и на
конкретното място е необходимо да се декларира променлива от този тип.
Синтаксисът на декларацията е следния:
име_на_структура име_на_променлива;
Пример 2: Ето пример за декларация на променлива от описания по-горе тип stud.
stud st;
След деклариране на променлива от тип структура за нея се заделя непрекъснато място в
оперативната памет, като името на променливата се свързва с началния адрес на заделената памет.
Паметта за всяка компонента се заделя в реда на нейното описание в декларацията на типа –
структура. Обема на заделената за дадена компонента памет е такъв, какъвто е необходим за
променлива от съответния тип. Можем да си представим заделената за променливата st памет по
следния начин:
st->
m_namem_markm_classm_classname
Името на променливата се свързва с началото на заделената памет.
4.Достъп до компоненти на структура
Компонентите на структурите могат да се използват като променливи от типа, от който са
декларирани. Достъпът до тях се осъществява чрез името на променливата от типа – структура и
името на самата компонента. Синтаксисът на това обръщение е следния:
име_на_променлива.име_на_компонентата
Достъпът до компонентата, съхраняваща информацията за името на ученик се реализира
чрез обръщението: st.m_name.
5.Въвеждане и извеждане на структури
Подобно на масивите, и структурите не могат да се въвеждат с един оператор. Налага се да
се напише функция, която въвежда компонентите на структурата една по една. Ето как изглежда
функцията за въвеждане на променлива от тип stud.
void read(stud &st)
{
cout << "Въведи име: ";
cin >> st.m_name;
cout << "Въведи среден успех: ";
cin >> st.m_mark;
cout << "Въведи клас: ";
cin >> st.m_class;
cout << "Въведи паралелка: ";
cin >> st.m_classname;
}
Техническо правило! За да се въведе успешно информацията в
променливата st, се налага в описанието и като формален параметър да
се добави знакът &. Казва се, че в този случай параметърът е описан
чрез алтернативно име.
Ако това правило не се спази, въведените от клавиатурата данни
за ученика се губят и стойността на фактическия параметър, с който се
извиква функцията остава неопределена. Това може лесно да се провери
чрез експеримент.
Извеждането на структурите се подчинява на същите правила с тази разлика, че тъй като
по време на извеждането не се извършват промени със стойностите на променливите, не е
необходимо формалния параметър да се описва като алтернативно име. Ето и текста на функцията
за извеждане на структура от тип stud.
void write(stud st)
{
cout << "Име: " << st.m_name << endl;
cout << "Среден успех: " << st.m_mark << endl;
cout << "Клас: " << st.m_class << endl;
cout << "Паралелка: " << st.m_classname << endl;
}
В двете функции са използвани букви на кирилица за реализиране на приятелска връзка с
потребителя. При програмите, които се пишат чрез стандартните среди за програмиране,
извеждането на текст на кирилица е допълнително усложнено. В повечето случаи извеждането на
такива текстове не се налага. Затова препоръчваме на читателя да използва за извеждането им
букви на латиница. Двете функции са написани, за да се демонстрира процесът на въвеждане и
извеждане. По-нататък, за всяка конкретна задача, ще пишем функции за въвеждане и извеждане,
които ще отговарят на изискванията, описани в условието на задачата.
Горните две функции могат да бъдат тествани чрез следната главна функция:
int main()
{
stud st;
read(st);
write(st);
return 0;
}
6.Функции компоненти на структури (методи).
Проблемите с описанието на параметрите на функциите за въвеждане и извеждане могат
лесно да бъдат избягнати като тези функции се декларират като компоненти на структурата. Това е
позволено в езика С++ и улеснява много работата на програмистите.
Подходът предполага, че като функции-компоненти (наречени още методи) се дефинират
всички действия, които трябва да се извършват с описваната структура. Естествено, въвеждането и
извеждането са задължителни.
Методите могат да се декларират при описанието на структурата само със своите заглавия
и да се опишат след това, като се укаже, че това са методи на дадената структура.
Ето как изглежда структурата с декларирани две функции-компоненти за въвеждане и
извеждане:
struct stud
{
string m_name;
double m_mark;
int m_class;
char m_classname;

Това е само предварителен преглед

За да разгледате всички страници от този документ натиснете тук.

Структури в C++

В някои от задачите по програмиране се налага съхраняване на няколко характеристики за един и същ обект. Например, ако трябва да се обработват данни за един ученик, е необходимо да се съхранява името му, неговия среден успех, ръст, тегло, клас...
Изпратен от:
unk_expert
на 2013-02-07
Добавен в:
Лекции
по Програмиране
Статистика:
34 сваляния
виж още
 
Подобни материали
 

Програмиране - C и C++

12 дек 2007
·
1,149
·
155
·
36,823
·
853
·
1
·
1
·

С и С++ са най - важните световни програмни езици . Всъщност, за да бъдете професионален програмист днес означава опитност в тези два езика.Те са основата, върху която е изградено модерното програмиране. С беше изобретен от Денис Ричи през 1970г...
 

Задача по C++

24 окт 2006
·
616
·
1
·
208
·
225

Урок по програмиране на Английски език.
 

Програмиране на Паскал

02 май 2007
·
580
·
30
·
2,525
·
112

В терминологията на класическото програмиране под подпрограма се разбира програмен елемент, извършващ завършена в логическо отношение обработка, който е именуван...
 

Задача по семантика на езиците за програмиране

18 май 2007
·
228
·
4
·
142
·
111

Решена задача по семантика на езиците за програмиране.
 

Запознаване с JavaScript

15 юли 2007
·
289
·
2
·
325
·
100

Javascript е най-широко разпространеният език за програмиране в интернет, след HTML .
1 2 3 4 5 » 11
 
Онлайн тестове по Програмиране
Тест по програмиране за 3-ти курс върху PHP
тематичен тест по Програмиране за Студенти от 3 курс
Това е първият тест по Програмиране в среда интернет за трети курс на специалност КТИД. Съдържа 24 задачи - всяка от тях само с по един верен отговор.
(Труден)
24
12
1
3 мин
14.11.2013
Програмиране и използване на компютрите
междинен тест по Програмиране за Неучащи от 1 клас
Тестът се състои от 21 въпроса върху кратка история на компютрите. Всички въпроси са затворени и изискват един верен отговор.
(Лесен)
21
11
1
4 мин
12.11.2014
» виж всички онлайн тестове по програмиране

Структури в C++

Материал № 956104, от 07 фев 2013
Свален: 34 пъти
Прегледан: 58 пъти
Предмет: Програмиране, Информатика, ИТ
Тип: Лекция
Брой страници: 12
Брой думи: 804
Брой символи: 4,706

Потърси помощ за своята домашна:

Имаш домашна за "Структури в C++"?
Намери бързо решение, с помощтта на потребители на Pomagalo.com:

Намери частен учител

Виторио Белоречки
преподава по Програмиране
в град София
с опит от  4 години
367 40

Нина Урумова
преподава по Програмиране
в град Варна
с опит от  15 години
323 83

виж още преподаватели...
Последно видяха материала