- •Сборник методических указаний к лабораторным работам
- •Цель работы
- •Теоретические сведения
- •Основные окна ide
- •Редактор текста
- •Список задач
- •Окно решения
- •Окно свойств
- •Контрольные вопросы
- •Управление потоком кода.
- •1. Цель работы
- •2. Теоретические сведения
- •If (условие) оператор1; else оператор2
- •3. Порядок выполнения работы
- •4. Задание на работу
- •6. Контрольные вопросы
- •1. Цель работы
- •2. Теоретические сведения
- •Управление динамической памятью с помощью new и delete
- •3. Порядок выполнения работы
- •4. Задание на работу
- •Функции без возвращаемого значения (процедуры)
- •Функции, возвращающие значение
- •Функции с параметрами.
- •Формальные и фактические параметры
- •Перегрузка функций
- •Значения параметров по умолчанию
- •Использование библиотек функций
- •3. Порядок выполнения работы
- •4. Требования к оформлению отчета
- •5. Задание на работу
- •Порядок выполнения работы
- •Требования к оформлению отчета
- •Задание на работу
- •Форматный ввод
- •Пример работы с форматным выводом
- •3. Порядок выполнения работы
- •4. Требования к оформлению отчета
- •5. Задание на работу
- •6. Контрольные вопросы
- •1. Цель работы
- •2. Теоретические сведения
- •Сортировка пузырьком
- •Сортировка вставками
- •«Быстрая» сортировка
- •Обход деревьев
- •3. Порядок выполнения работы
- •4. Требования к оформлению отчета
- •5. Задание на работу
- •Поиск в ширину
- •Поиск в глубину
- •Алгоритм Беллмана-Форда
- •Алгоритм Дейкстры
- •Int X; // координаты центра
- •Int r; // значение радиуса
- •Int X; // координаты центра
- •Int r; // значение радиуса
- •Int X; // координаты центра
- •Int r; // значение радиуса
- •Порядок выполнения работы.
- •Требования к отчету.
- •Варианты заданий.
- •Контрольные вопросы.
- •Порядок выполнения работы.
- •Требования к отчету.
- •Варианты заданий.
- •Контрольные вопросы.
- •Цели и задачи работы
- •Теоретические положения.
- •Вывод встроенных типов
- •Вывод пользовательских типов
- •Ввод встроенных типов
- •Состояния потока
- •Ввод пользовательских типов
- •Форматирование
- •Класс ios
- •Связывание потоков
- •Поля вывода
- •Состояние формата
- •Вывод целых
- •Выравнивание полей
- •Вывод плавающих чисел.
- •Манипуляторы
- •Стандартные манипуляторы ввода-вывода
- •Члены ostream
- •Члены istream
- •Файлы и потоки
- •Закрытие потоков
- •Строковые потоки
- •Буферизация
- •Ввод-вывод в с
- •Порядок выполнения работы.
- •Требования к отчету.
- •Варианты заданий.
- •Функции-шаблоны
- •Шаблоны классов
- •"Интеллигентный указатель"
- •Задание свойств класса
- •Порядок выполнения работы.
- •Требования к отчету.
- •Варианты заданий.
- •Порядок выполнения работы.
- •Требования к отчету.
- •Варианты заданий.
- •Порядок выполнения работы.
- •Требования к отчету.
- •Варианты заданий.
- •Порядок выполнения работы.
- •Требования к отчету.
- •Варианты заданий.
- •Порядок выполнения работы.
- •Требования к отчету.
- •Варианты заданий.
- •Контрольные вопросы. Список литературы
Функции с параметрами.
Функции языка С могут иметь параметры. Эти параметры передаются в функцию и там обрабатываются. Ещё раз рассмотрим основную форму описания функции:
тип <имя функции>(список параметров) { тело функции }
В списке параметров для каждого параметра должен быть указан тип. Пример правильного списка параметров:
function(int x, char a, float z)
Пример неправильного списка параметров:
function(int x, a, float z)
Рассмотрим все это на примере. Пусть будет функция, у которой присутствует один параметр x. Функция будет возвращать квадрат значения x.
int square(int x) { x = x * x; // Символ - операция умножения return x; }
Теперь рассмотри пример функции, которая будет выводить значение переменной z типа float на экран.
void myout(float z) // Переменная z является формальным
// параметром. { printf("Z=%f", z); // %f - означает, что
// выводится число с плавающей точкой }
Формальные и фактические параметры
Формальные параметры - это параметры которые объявляются в заголовке функции при описании.
Фактические параметры - это параметры которые подставляются при вызове функции.
void myfunc(int x); // Объявление функции void main(void) { int a; a=5; myfunc(a); // a- фактический параметр } // Описание функции void myfunc(int x) // x - формальный параметр { x = x + 10; printf("Вывод x = %d",x); }
В языке С функция может возвращать несколько значений. Чтобы функция могла вернуть несколько значений необходимо пользоваться указателями. Этот механизм называется - передача параметров по ссылке.
Перегрузка функций
При определении функций в программах обычно необходимо указать тип возвращаемого функцией значения, а также количество параметров и тип каждого из них. В прошлом (в первых версиях «чистого» С), если существовала функция с именем add_values, которая работала с двумя целыми значениями, а необходимо ещё было использовать подобную функцию для сложения трех целых значений, следовало создать функцию с другим именем. Аналогично если нужно было использовать подобную функцию для сложения значений типа float, то была бы необходима еще одна функция с еще одним именем.
Чтобы избежать дублирования функции, C++ позволяет определять несколько функций с одним и тем же именем. В процессе компиляции C++ принимает во внимание количество и тип аргументов, используемых каждой функцией, и затем вызывает именно требуемую функцию. Предоставление компилятору выбора среди нескольких функций называется перегрузкой.
Следующая программа перегружает функцию с именем add_values. Первое определение функции складывает два значения типа int. Второе определение функции складывает три значения. В процессе компиляции C++ корректно определяет функцию, которую необходимо использовать:
#include <iostream.h>
int add_values(int a,int b)
{ return(a + b); )
int add_values(int a, int b, int c)
( return(a + b + c); )
void main(void)
{ cout << "200 + 801 = " << add_values(200, 801) << endl; cout << "100 + 201 + 700 = " << add_values(100, 201, 700) << endl; }
Программа определяет две функции с именами add_values Первая функция складывает два значения типа int, в то время как вторая складывает три значения. Нет необходимости что-либо предпринимать специально для того, чтобы предупредить компилятор о перегрузке.
Одним из наиболее общих случаев использования перегрузки является применение функции для получения определенного результата, исходя из различных параметров. Например, предположим, что в программе есть функция с именем day_of_week, которая возвращает текущий день недели (0 для воскресенья, 1 для понедельника, ..., 6 для субботы). Программа могла бы перегрузить эту функцию таким образом, чтобы она верно возвращала день недели, если ей передан юлианский день в качестве параметра, или если ей переданы день, месяц и год:
int day_of_week(int julian_day)
{ // Операторы }
int day_of_week(int month, int day, int year)
{ // Операторы }
