МУ_ЛР6_ОП (Методические указания к лабораторным работам)

2018-01-11СтудИзба

Описание файла

Файл "МУ_ЛР6_ОП" внутри архива находится в папке "Методические указания к лабораторным работам". Документ из архива "Методические указания к лабораторным работам", который расположен в категории "". Всё это находится в предмете "программирование на основе классов и шаблонов" из 2 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "программирование на основе классов и шаблонов" в общих файлах.

Онлайн просмотр документа "МУ_ЛР6_ОП"

Текст из документа "МУ_ЛР6_ОП"

23



Методические указания к лабораторной работе № 6 по курсу

ОСНОВЫ ПРОГРАММИРОВАНИЯ

ГУИМЦ

" Структуры данных в Си "

( 4 часа)

Москва, МГТУ, СУЦ - 2014 год

_____________________________________________________________________________________________



СОДЕРЖАНИЕ

1. Цель лабораторной работы № 6 по дисциплине ОП (Основы программирования) - СУЦ 4

2. Порядок выполнения лабораторной работы 4

3. Основные понятия 4

3.1. Проблемы хранения и обработки данных 4

3.2. Структура - элемент хранения разнородных данных - struct 5

3.3. Инициализация структурных переменных 6

3.4. Работа с полями структуры через структуру и указатель на структуру 6

3.5. Многоуровневая квалификация в структурах 7

3.6. Указатели на структуры и на динамические структуры 7

3.7. Передача структур в функцию 8

3.8. Передача указателя на структуру в функции 8

3.9. Массивы структур 9

3.10. Вложенные структуры 9

3.11. Размер и размещение структур в ОП 10

3.12. Динамической структуры 10

3.13. Создание и удаление динамической структуры со строками 11

3.14. Структуры со ссылками на себя 12

3.15. Перечисления - enum 12

3.16. Союзы – union - объединения 12

4. Примеры программы с использованием структур 13

4.1. Примеры, описанные в теоретической части ЛР 13

4.2. Копирование и обмен статических структур 14

4.3. Функция Swap для структур с динамикой строк 15

4.4. Заполнение Rand числовых (целых и вещественных) полей массива структур 17

4.5. Сортировка массива структур с помощью функции Swap 18

5. Контрольные задание ЛР №6. 19

5.1. Описать структуру своего варианта ДЗ 19

5.2. Создать функцию распечатки одной своей структуры 19

5.3. Описать массив структур, инициализировать и его распечатать 19

5.4. Создать функцию распечатки массива структур 19

5.5. Swap для статических структур 19

5.6. Использование перечислений по варианту 19

5.7. Копирование структур 19

5.8. Swap для структуры с динамическими строками 19

5.9. Сортировка массива структур 19

5.10. Заполнение числового поля массива структур случайным параметром 20

6. Варианты заданий для студентов СУЦ. 20

7. Дополнительные требования для студентов СУЦ (д.т.). 20

7.1. Двумерный массив структур, инициализация и распечатка 20

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

7.3. Поиск максимума в массиве структур, его номера и распечатка 21

7.4. Сортировка массива структур своего варианта ДЗ по символьному параметру 21

7.5. Сортировка массива указателей на структуры 21

7.6. Функция для создания и заполнения динамического массива структур 21

7.7. Функция для корректного удаления динамического массива структур ДЗ 21

8. Демонстрация, защита ЛР и отчет по ЛР. 21

9. Контрольные вопросы по ЛР. 22

10. Литература. 22







1 Цель лабораторной работы № 6 по дисциплине ОП (Основы программирования) - СУЦ



Целью данной ЛР по дисциплине ОП является получение навыков работы с переменными типа структура на языке программирования СИ. Студенты используют консольные проекты и отлаживают программы в среде программирования MS VS 2005/2008/2010. Студенты знакомятся с основными операциями при работе со структурами, способами их инициализации, созданием массивов структур их заполнением, их сортировкой, проверяют работу отлаженных примеров и делают контрольные задания. Они выполняют отладку программы по своему варианту и получают исполнимую программу, готовую к выполнению, оформляют отчет по ЛР и защищают его.

2 Порядок выполнения лабораторной работы

  1. Познакомиться с методическими указаниями и основными понятиями данной ЛР

  2. Проработать порядок выполнения работы.

  3. Создать консольные проекты для проверки примеров и выполнения задания ЛР.

  4. Проверить в данном проекте примеры из методических указаний, выполнив их в отладчике в пошаговом режиме.

  5. Написать программу задания ЛР по варианту, выданному преподавателем и отладить ее.

  6. Продемонстрировать работу программы преподавателю в режиме отладчика по шагам и изменяемыми переменными.

  7. Подготовить отчет по шаблону.

  8. Защитить ЛР с предоставлением отчета и ответами на контрольные вопросы.

  9. Для продвинутых студентов выполнить задания для дополнительных (необязательных) требований и также отобразить их в отчете по ЛР.



3 Основные понятия

В теоретической части описания лабораторной работы вводятся основные понятия и рассматриваются принципы для работы со строками на языке программирования СИ.

4 Проблемы хранения и обработки данных

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

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

Массивы информации могли бы быть таким хранилищем связанной информации, если бы не требования ее однородности (Напомним, массив – множество однотипных переменных). В реальных задачах требования однотипности не соблюдаются. Так для описания человека, как минимум, нужны и символьные (ФИО) данные и числовые (даты и время) данные и вещественные данные (зарплата, стипендия). Для реализации технологии совместного хранения разнотипных данных в языки программирования добавлено понятие структуры данных. Технология структур данных позволяет в программах реализовать более высокий уровень абстракции данных и сделать программы более наглядными.

5 Структура - элемент хранения разнородных данных - struct

Массивы объединяют группы переменных одного типа. В программах часто требуется группировать вместе разнотипные переменные. Для этого предусмотрены специальные описания – структуры данных (struct). Фактически структуры описывают новые типы переменных (подобно классам, но об этом в других ЛР). Нужно различать понятия:

  • Описание шаблона структуры.

  • Описание переменных структурного типа.

  • Использование переменных структурного типа.

Описание шаблона структуры включает описание отдельных переменных (часто их называют полями структуры) с указанием их типов. Формализовано это выглядит так:

struct <имя структуры> {

<описание поля структуры>;

<описание поля структуры>;

} [<список описаний конкретных структурных переменных>];

Пример описания структуры:

// Описание структуры Student

struct Student {

char Name[14]; // Фамилия студента

int kurs; // Курс обучения

bool pol; // Пол студента: true - women, false - men

float Stipen; // Размер стипендии

} Student1, Group31[30] ; // Необязательное описание переменных и массивов этой структуры

Обратите внимание, что после описания структуры дано описание конкретных структурных переменных. Из-за ставить точку с запятой после описания структуры нужно обязательно. Другие примеры описания структур даны ниже. Их назначение понятно из комментариев, которые даны в тексте программы:

struct Complex { // комплексная переменная

double re; // действительная часть

double im; // мнимая часть

};

struct Date { // дата

int day; // День

int month; // месяц

int year; // Год

};

struct Person { // Персона

char name[50];

Date birthdate; // структурная переменная дата рожденич

double salary; // Оклад

};

Описание отдельных полей структуры совпадает с описанием обычных переменных. Поля могут быть любого типа, в том числе и структурными переменными, за исключением типа самой описываемой структуры, хотя допустимо объявлять указатели на данный структурный тип. Описание структурных переменных производиться с указанием имени структуры как нового типа данных и может быть выполнено многократно в программе. Шаблон структуры должен быть описан перед первым его использованием для описания переменных. Пример отдельного описания структурных переменных и их массивов:

struct Student S333; // Описание без инициализации полей

Student S1 = {"Петров" , 1 , false , 1500.0f }; // Описание с инициализацией полей

Student Group[30]; // Описание массива структур

Complex z;

Date d;

Person p;

6 Инициализация структурных переменных

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

Complex z1 = { 1.6, 0.5 };

Date d1 = { 1, 4, 2001 };

Person p1 = { "Сидоров", {10, 3, 1978}, 1500.48 };

// Описание структуры лицо

struct Face {

int MasF [5]; // М ассив целых

Date birthdate; // Структура даты

char name[50]; // Строка

} ;

//Описание структурной переменной с инициализацией массива, строки и другой структуры

Face f = { {1,2,3,4,5} , { 1, 9, 2014 } , "Представительное лицо"};

//

В последнем случае мы имеем вложенную структурную переменную: в структуре Face объявлена Date.

7 Работа с полями структуры через структуру и указатель на структуру

При описании структурных переменных ключевое слово struct в новой нотации перед описанием С++ необязательно, поэтому не будем его писать. Для работы с переменными такого типа недостаточно указывать только имя структурной переменной, нужно указать также и имя конкретного поля. Такой элемент программы называется квалифицированной ссылкой. Такая квалифицированная ссылка рассматривается системой программирования как обычная переменная. Ее можно использовать в любых операторах и выражениях программы, без каких либо ограничений. Единственной требование в этом случае – необходимость предварительного описания или обеспечения доступа к этой структурной переменной на момент ее использования.

Формализовано ссылка на поле структуры выглядит так:

<имя структуры>.<имя поля структуры>

Например:

struct Student S333; // Описание без инициализации полей

Student S1 = {"Петров" , 1 , false , 1500.0f }; // Описание с инициализацией полей

Student Group[30]; // Описание массива структур

Примеры использования структурных переменных в операторах присваивания.:

S1.kurs = 2;

Group5[0].kurs = 3; // Для 0-го элемента массива

Можно использовать указатели на структурную переменную:

Student * pStud = &S1; // Описание указателя и его инициализация

Тогда доступ к ее полю задается специальной операцией (->):

pStud->Stipen = 2000.0; // обращение к полю структурной переменной

Для работы в функциях со структурами в качестве параметра передается указатель на нее, что позволяет существенно сократить список передаваемых параметров.

8 Многоуровневая квалификация в структурах

При использовании других структурных переменных (Date – см. выше) в качестве полей структуры, доступ к полю (поля) выполняется через двойную квалификацию:

struct Date { // дата

int day; // День

int month; // месяц

int year; // Год

};

// Описание структуры лицо

struct Face {

int MasF [5]; // М ассив целых

Date birthdate; // Структура даты

char name[50]; // Строка

} ;

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5137
Авторов
на СтудИзбе
440
Средний доход
с одного платного файла
Обучение Подробнее