
- •Часть 2
- •Передача параметров в функции по значению и по ссылке
- •Передача в функцию одномерного массива
- •Передача в функцию двумерного массива (матрицы)
- •Перегруженные функции
- •Генерация (псевдо) случайных чисел
- •Порядок выполнения работы
- •Структура стандартной библиотеки шаблонов (stl)
- •Последовательный контейнер vector
- •Многомерные векторы
- •Алгоритмы stl
- •Потоковые итераторы
- •Порядок выполнения работы
- •Варианты заданий
- •Вариант 5
- •Вариант 6
- •Вариант 8
- •Вариант 9
- •Контрольные вопросы
- •Создание и инициализация строк
- •Присоединение, вставка и конкатенация (сцепление) строк
- •Вставка, замена и удаление символов в строках
- •Поиск в строках
- •Сравнение строк
- •Методические указания к решению задач
- •Варианты заданий
- •Контрольные вопросы
- •Массивы структур
- •Указатели на структуры
- •Структуры и функции
- •Выполнение операций чтения и записи
- •Определение конца файла и проверка корректности чтения из файла
- •Выполнение операций чтения и записи массивов и структур
- •Управление открытием файла
- •Что вам необходимо знать
- •Методические указания к решению задач
Министерство образования Российской Федерации
Новосибирский государственный технический университет
__________________________________________________________________________
ИНФОРМАТИКА
Часть 2
Методические указания к лабораторным работам
для студентов i курса факультета рэф
специальностей «радиотехника»
и «радиосвязь, радиовещание и телевидение»
дневного отделения
НОВОСИБИРСК
2013
Составили: канд. техн. наук, доцент В.В. Дуркин
канд. техн. наук, доцент О.Н. Шлыкова
Рецензент д-р техн. наук, профессор В.П. Разинкин
Работа подготовлена кафедрой радиоприемных
и радиопередающих устройств
© Новосибирский государственный
технический университет, 2013
ОГЛАВЛЕНИЕ
Лабораторная работа № 1. Функции 4
Лабораторная работа № 2. Динамические массивы 21
Лабораторная работа № 3. Обработка символьных данных 44
Лабораторная работа № 4. Структуры 63
Лабораторная работа № 5. Организация работы с файлами 72
Лабораторная работа № 1
Функции
Цель работы
Ознакомление с правилами записи функции, с механизмом передачи параметров в функцию, с перегрузкой функций
Пояснения к работе
Объявление и описание функций
Функция – это изолированный блок кода, выполняющий конкретную задачу.
Функции – это первичные «кирпичики», из которых строится любая программа на языке С++. Имена функций подчиняются тем же правилам, что и имена переменных. Имя функции должно отражать ее предназначение.
Каждая из функций должна быть определена или, по крайней мере, объявлена до ее использования в программе.
Определение функции имеет вид:
тип_возвращаемого_значения имя_функции(список_параметров)
{
операторы тела функции
}
Первая строка определения, содержащая тип возвращаемого значения, имя функции и список параметров, называется заголовком функции. Тип возвращаемого значения может быть любым, кроме массива и функции. Могут быть также функции, не возвращающие никакого значения. В заголовке таких функций тип возвращаемого значения объявляется void.
Список параметров, заключаемый в скобки, в простейшем случае представляет собой разделяемый запятыми список вида
тип_параметра иденификатор_параметра
Параметры могут быть исходными данными для выполнения алгоритма функции или результатами, возвращаемые функцией.
Например, заголовок:
double FSum(double X1, double X2, int A)
объявляет функцию с именем FSum, с тремя параметрами X1, X2 и A, из которых первые два имеют тип double, а последний – int. Тип возвращаемого результата – double. Имена параметров X1, X2 и A – локальные, т. е. они имеют значение только внутри данной функции и никак не связаны с именами аргументов, переданных при вызове функции. Значения этих параметров в начале выполнения функции равны значениям аргументов на момент вызова функции.
Если функция вызывается раньше, чем она описана в программе, то помимо описания функции в текст программы включается также прототип функции – ее предварительное объявление. Прототип представляет собой тот же заголовок функции, но с точкой с запятой в конце. Кроме того, в прототипе можно не указывать имена параметров. Прототипы, размещенные обычно в начале модуля, делают программу более наглядной. Прототип приведенного выше заголовка функции имеет вид
double FSum(double X1, double X2, int A);
или
double FSum(double, double, int);
Теперь рассмотрим описание тела функции. Тело функции пишется по тем же правилам, что и любой код программы, и может содержать объявления типов, констант, переменных и любые выполняемые операторы. Не допускается объявление и описание в теле других функций. Таким образом, функции не могут быть вложены друг в друга.
Надо иметь в виду, что все объявления в теле функции носят локальный характер. Объявленные переменные доступны только внутри данной функции.
Локальные переменные не просто видны только в теле функции, но по умолчанию они и существуют только внутри функции, создаваясь в момент вызова функции и уничтожаясь в момент выхода из функции.
Очень важным оператором тела функции является оператор возврата в точку вызова:
return выражение;
или
return;
Выражение в операторе return определяет возвращаемое функцией значение, т. е. результат обращения к функции. Тип возвращаемого значения определяется типом функции. Если функция не возвращает никакого значения, т. е. имеет тип void, то выражение в операторе return опускается, да и сам оператор return не обязателен. В теле функции может быть и несколько операторов return.
Примеры описаний функций
1) void print (char *name, int value) // Ничего не возвращает
{cout <<”\n”<<name<<value;} // Нет оператора return
2) double min (double a, double b) // В функции два оператора
возврата
{ if(a<b) return a; // Функция возвращает
минимальное
return b; // из значений аргументов
}
3) void write (void) // Ничего не возвращает, ничего не получает
{cout<<”\n НАЗВАНИЕ:”;} // Всегда печатает одно и то же
Здесь заголовок можно упростить void write(). Тип возвращаемого значения должен быть указан явно, т. е. написание заголовка в виде write() было бы ошибкой.