- •«Московский государственный технический университет гражданской авиации»
- •Лабораторная работа №5 Разработка программ с использованием функций для обработки массивов арифметических и символьных данных.
- •Цель лабораторной работы
- •1.2. Теоретические сведения Создание динамических массивов
- •Массивы указателей
- •Создание двумерного динамического массива с помощью динамического массива указателей.
- •Определение динамического двумерного массива
- •Указатель на массив. Многомерные массивы динамической памяти.
- •Определение типа массива
- •Определение типа указателя на массив
- •Основные виды обработки массивов.
- •1.3 Задание на выполнение лабораторной работы
- •1.4 Порядок выполнения работы
- •1.5. Пример выполнения лабораторной работы
- •Схемы алгоритмов функций
- •Текст программы
- •1.6. Контрольные вопросы
- •1.7. Варианты заданий лабораторной работы
- •2. Лабораторная работа № 6 Разработка функций рекурсивных и без рекурсии, использующих параметр – функцию и оператор return.
- •2.1 Цель лабораторной работы
- •2.2. Теоретические сведения Рекурсивные функции
- •Указатели на функции
- •Массивы указателей на функции
- •Определение типа указателя на функцию
- •Указатель на функцию - параметр функции
- •2.3 Задание на выполнение лабораторной работы
- •2.4 Порядок выполнения работы
- •2.5 Пример выполнения лабораторной работы
- •Текст программы
- •2.6 Контрольные вопросы
- •2.7. Варианты заданий лабораторной работы
- •3 Лабораторная работа № 7
- •3.1 Цель лабораторной работы
- •3.2 Теоретические сведения Структура как совокупность данных
- •3.3 Задание на выполнение лабораторной работы
- •3.4 Порядок выполнения работы
- •3.5 Пример выполнения лабораторной работы
- •Текст программы
- •3.6 Контрольные вопросы
- •3.7 Варианты заданий лабораторной работы
- •4. Лабораторная работа № 8 Классы и объекты. Создание и разрушение объектов пользовательского класса, статических и динамических.
- •4.1 Цель лабораторной работы
- •4.2. Теоретические сведения Объектно-ориентированный подход к программированию.
- •Понятие класса
- •Объявление функции вне и внутри тела класса
- •Конструктор
- •Массивы объектов статических и динамических
- •Деструктор
- •Указатели на компоненты-функции
- •4.3 Задание на выполнение лабораторной работы
- •4.4 Порядок выполнения работы
- •Методические указания
- •4.5 Контрольные вопросы
- •4.6 Варианты задания
- •5. Список литературы
- •Содержание
- •1. Лабораторная работа № 5
- •1.1. Цель лабораторной работы 3
- •1.2. Теоретические сведения 3
- •4.1. Цель лабораторной работы 38
- •4.2. Теоретические сведения 38
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ВОЗДУШНОГО ТРАНСПОРТА
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«Московский государственный технический университет гражданской авиации»
Кафедра вычислительных машин, комплексов, систем и сетей
Л.А. Надейкина
ПРОГРАММИРОВАНИЕ
ПОСОБИЕ
по выполнению лабораторных работ № 5, 6, 7, 8
для студентов I курса
направления 09.03.01
очной формы обучения
Москва - 2021
ББК 6Ф7
Н17
Рецензент Черкасова Н.И.
Надейкина Л.А.
Н17 ПРОГРАММИРОВАНИЕ: Пособие по выполнению лабораторных работ № 5, 6, 7, 8 – М.: МГТУ ГА, 2021. – 48 с.
Данное учебное пособие издается в соответствии с учебным планом для студентов I курса направления подготовки 09.03.01 «Информатика и вычислительная техника» (бакалавриат) очного обучения.
Рассмотрено и одобрено на заседаниях кафедры №12 от 25.05.2021 и методического совета №5 от 25.05.2021
Лабораторная работа №5 Разработка программ с использованием функций для обработки массивов арифметических и символьных данных.
Цель лабораторной работы
Целью лабораторной работы является получение навыков программирования функций различного назначения, используя алгоритмы структурного программирования, библиотеки функций и методы отладки программ. А также получение опыта разработки алгоритмов и программ создания и обработки многомерных статических и динамических массивов.
1.2. Теоретические сведения Создание динамических массивов
При определении массива ему выделяется память. При определении внешнего или статического массива память выделяется в сегменте данных, элементы массива по умолчанию инициализируются нулевыми значениями. При определении автоматического массива память выделяется в сегменте стека
В обоих случаях происходит статическое выделение памяти либо в сегменте статических данных, либо в стеке. Это означает, что либо до конца программы, либо до конца блока массивам будут соответствовать участки памяти.
Можно выделять память под массив динамически во время выполнения программы с помощью соответствующих операторов и также “программно” освобождать ее по желанию программиста.
Рассмотрим этот случай. Объявим указатели (переменные) на объект типа type. Указатели можно связать с массивами - статическим (1) и динамическими (2, 3):
1) type * имя1 = имя уже определенного массива типа type;
2) type* имя2 = new type [количество элементов массива];
3) type * имя3 = (type *) malloc (количество элементов * sizeof(type));
Проиллюстрируем это на примерах:
int n [5] = {1, 2, 3, 4 ,5}; //определен статический массив
int*pn = n; //присоединение указателя к массиву статической памяти
//значение pn - адрес первого элемента массива
float*p1 = new float [10]; //динамически выделено 40 байт памяти
//значение p1 - адрес первого байта этого участка
double*p2 = (double*) malloc (4 * sizeof (double));
//динамически выделено 32 байта, значение p2- адрес первого байта
После того как указатель связан с массивом, доступ к элементам массива осуществляется следующими способами:
1) имя указателя [индекс элемента];
2) *(имя указателя + индекс элемента);
3) *имя указателя++; // операция допустима, т.к. указатель – переменная
Пример вывода элементов арифметического массива (производится поэлементно):
int A [10] = {7.3, 5.5, 1, …};
for (int i=0, *pA=A; i<10; i++)
cout<<*pA++<<'' ''; //что эквивалентно cout<<pA[i], или cout<< *(pA+i)
