Слайд 1Лекция 11.
Структуры.
Визуальное программирование.
Ст. преп. М.А. Сокольская
Слайд 2План.
Понятие структуры.
Способы задания структур:
Через тип данных;
Без указания имени;
С указанием метки.
Массивы
структур.
Примеры.
Слайд 3Структуры.
Определение 1.
Структура – составной объект, в который входит множество компонент
любых типов, за исключением функций.
Существует несколько способов описания структуры в
программе.
Слайд 4Описание структуры с явным заданием имени типа.
Синтаксис:
typedef struct {
список описаний
}
имя типа;
имя типа список переменных;
typedef – спецификатор, позволяющий создать собственное
имя нового типа данных.
Слайд 5Пример.
typedef struct {
char name[30];
int id;
dept d; //предварительно определенные
family f; //структуры
}
employee;
employee person, eq, e2; /*определение переменных типа employee*/
Слайд 6Описание структуры с одновременным описанием переменных
Синтаксис.
struct {
список описаний
} список переменных;
Пример.
struct
{
int year;
short int month, day;
} date1, date2;
Слайд 7Описание структуры с одновременным описанием переменных
При таком описании структура не
имеет собственного имени, поэтому объявить в дальнейшем тексте программы дополнительные
переменные задаваемого типа нельзя.
Слайд 8Описание структуры с указанием метки структуры
Синтаксис.
struct имя_метки_структуры {
описание компонент
};
struct имя_метки_структуры
имя_переменной;
Этот способ описания структуры используется чаще всего.
Слайд 9Пример.
Багаж пассажира характеризуется количеством вещей и общим весом вещей. Имеется
информация о багаже нескольких пассажиров. Подсчитать общее количество вещей и
выяснить имеется ли пассажир, багаж которого состоит из одной вещи весом более 30 кг.
Слайд 10Struct luggage {
float weight;
int number;
};
int main () {
luggage info;
int i,
n, sum=0, f=0;
coutn;
Слайд 11 cout>info.number;
sum=sum+ info.number;
if
(info.number==1 && info.weight>=30) f=1;
}
if (f) cout
- ”< return 0; }
Слайд 12Массивы структур
Используются в том случае, если одной переменной-структуры для решения
задачи недостаточно и требуется хранить информацию о нескольких одинаковых элементах.
Слайд 13Пример.
struct dinner
{
char *plase;
float cost;
struct dinner *next;
};
struct dinner week_days[7]; //массив
структур
struct dinner best_one; //одна переменная
struct dinner *p; /*указатель на структурную
переменную*/
Слайд 14Доступ к компонентам структуры
Через обычную переменную структурного типа:
имя_переменной.имя_компоненты
Через указатель
на структурную переменную
(*имя_указателя).имя_компоненты
имя_указателя - > имя_компоненты
Слайд 15Пример. Доступ к компонентам структур
date1.year = 1990;
date1.month = 12;
week_days[1].cost =
102.4;
week_days[1].plase = “Калинка”;
(*p).cost = 315.35;
p -> plase = “Абажур”;
Слайд 16Пример
Опишите структуру АНКЕТА и поместите в нее следующую информацию: Ф.И.О.(фамилия,
имя, отчество), адрес (улица, номер дома, номер квартиры), пол, возраст.
Определите, сколько лиц женского и сколько мужского пола проживают в одном доме.
Слайд 17struct anketa {
char fio [50];
char street [15];
int house;
int flat;
int age;
char
pol;
} spisok [10];
Слайд 18int main () {
int man=0, woman=0;
int n, i;
coutn;
cout
данные о жителях дома”;
for (i=0; i
Слайд 19 coutspisok[i].street;
coutspisok[i].house;
coutspisok[i].flat;
coutspisok[i].age;
coutspisok[i].pol; }
Слайд 21Пример. Вывод на экран часов, минут и секунд.
#define DELAY 128000
struct
my_time {
int hours;
int minutes;
int seconds;
};
void display (struct my_time *t);
void update
(struct my_time *t);
void delay (void);
Слайд 22int main (){
struct my_time systime;
systime.hours=0;
systime.minutes=0;
systime.seconds=0;
for ( ; ; ) {
update(&systime);
display(&
systime); }
return 0; }
Слайд 23void update (struct my_time *t) {
t->seconds ++;
if (t->seconds == 60)
{
t->seconds = 0;
t->minutes ++; }
if (t-> minutes == 60)
{
t->minutes = 0;
t->hours ++; }
if (t->hours == 24) t->hours = 0;
delay(); }
Слайд 24void update (struct my_time *t) {
printf(“%2d: ”, t->hours);
printf(“%2d: ”, t->minutes);
printf(“%2d:”,
t->seconds); }
void delay () {
long int t;
for (t=0; t
Слайд 25Итоги
Мы рассмотрели:
Описание структуры
Динамическое выделение памяти для структур
Массивы структур