Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Надейкина_ПРОГРАММИРОВАНИЕ_лабы5678.doc
Скачиваний:
0
Добавлен:
11.02.2026
Размер:
795.14 Кб
Скачать

49

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ВОЗДУШНОГО ТРАНСПОРТА

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«Московский государственный технический университет гражданской авиации»

Кафедра вычислительных машин, комплексов, систем и сетей

Л.А. Надейкина

ПРОГРАММИРОВАНИЕ

ПОСОБИЕ

по выполнению лабораторных работ № 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

  1. Лабораторная работа №5 Разработка программ с использованием функций для обработки массивов арифметических и символьных данных.

    1. Цель лабораторной работы

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

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)