close

Вход

Забыли?

вход по аккаунту

?

Лекции по курсу

код для вставкиСкачать
Лекции по курсу
«Программирование»
Лекция 3. Функции в языке С++.
Перегруженные функции. Область
действия переменных и связанные с
ней понятия. Создание программ из
нескольких модулей. Условная
компиляция программ
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС
Функции в языке С++
Пример функции, возвращающей максимальный из своих параметров
long double max_ab(long double a, long double b)
{long double x;
if (a>b) {x=a} else {x=b};
return x;
}
void main()
{long double max, x=10, y=20;
max = max_ab(x, y); // max получит значение 20
}
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС
Функции в языке С++
При вызове функции возвращаемое ею значение
можно игнорировать, например:
printf(“OK”);
Важно! Тип параметров функции при вызове должен
в точности соответствовать типу параметров,
указанных в объявлении
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС
Прототипы функций и заголовочные
файлы
Пример прототипа функции, рассмотренной ранее
long double max_ab(long double a, long double b);
Прототипы функций служат для проверки корректности обращений к
функциям при компиляции программы из нескольких модулей
Важно! В языке С++ нет понятия вложенных функций:
все функции имеют одинаковый «ранг»
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС
Прототипы функций и заголовочные
файлы
Схема взаимосвязи модулей и заголовочных файлов
void func1();
#include”unit2.h”
void func1()
void main()
{
Unit1.c {
func1();
}
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС
…..
}
Unit2.h
Unit2.c
Перегруженные функции
Пример перегрузки функции
long double max_ab(long double a, long double b)
{long double x;
if (a>b) {x=a} else {x=b};
return x;
}
long double max_ab(char a, char b)
{char x;
if (a>b) {x=a} else {x=b};
return x;
}
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС
Перегруженные функции
Перегруженные функции являются, по сути, различными функциями,
идентифицируемыми не только по имени, но и по списку параметров
long double pow(long double x, int y);
long double pow(long double x, long double y);
Важно! Допустимо перегружать функции, отличающиеся
типом параметров. Если функции отличаются только
типом возвращаемого значения, то такие функции
перегружать нельзя.
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС
Область действия переменных и
связанные с нею понятия
Классификация переменных по области действия
Локальные переменные – переменные, объявленные внутри
функций. Областью действия является тело функции.
Глобальные переменные – переменные, объявленные вне функций.
Областью действия является отдельный модуль или вся программа.
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС
Область действия переменных и
связанные с нею понятия
Спецификаторы переменных
static – при объявлении с локальной переменной «заставляет» её
сохранять значения между вызовами функции. При объявлении с
глобальной переменной ограничивает область её действия текущим
модулем
auto – предполагается по умолчанию
register – рекомендует компилятору разместить переменную в
регистре процессора, если это возможно
extern – служит указанием компилятору, что переменная является
внешней, то есть объявлена в другом модуле
volatile – служит для отметки нестабильных переменных
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС
Область действия переменных и
связанные с нею понятия
Схема взаимосвязи внешних переменных в программе из нескольких
модулей
Unit1.c
extern int k;
Unit2.c
int k=10;
void main()
{int m;
m=k;
}
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС
…..
Область действия переменных и
связанные с нею понятия
Пример недопустимого использования взаимосвязи внешних
переменных в программе из нескольких модулей
Unit1.c
extern int k;
Unit2.c
Unit3.c
int k;
int k;
…..
…..
void main()
{int m;
m=k;
}
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС
Создание программ из нескольких
модулей
Последовательность действий при создании нового модуля в среде
Turbo C++ Explorer
Выбрать в главном меню File -> New -> Unit
Последовательность действий при подключении существующего
модуля к проекту в среде Turbo C++ Explorer
Выбрать в главном меню Project -> Add To Project -> Имя файла
Все подключенные модули программы компилируются в рамках
одного проекта
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС
Создание программ из нескольких
модулей
Использование директивы #include
Директива #include, фактически, включает в текст программы
содержимое (текст) указанного файла
#include<file.h> - если файл лежит в папке системных библиотек
#include”file.h” - если файл лежит в текущей директории
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС
Условная компиляция кода
Основные директивы, обеспечивающие условную компиляцию
Язык
С++
содержит
специальные
средства,
позволяющие производить выборочную компиляцию
различных участков кода, в зависимости от оценки
некоторого константного выражения или определения
идентификатора. Для этого служат следующие
директивы: #if, #elif, #else, #endif, #ifdef, #ifndef
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС
Условная компиляция кода
Пример применения директив условной компиляции
#if выражение_1
оператор_1
#elif выражение_2
оператор_2
#elif выражение_3
оператор_3
#else
оператор_4
#endif
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС
Условная компиляция кода
Директивы #define и #undef
Директивы #define и #undef, используются для
определения и разопределения макроопределений. Они
позволяют проверить, определён ли некоторый символ:
#define TEXT
….
#ifdef TEXT
оператор_1
#else
оператор_2
#endif
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС
Условная компиляция кода
Пример использования условной компиляции для предотвращения
повторного включения заголовочных файлов
#ifndef HEADERO_H
#define HEADERO_H
…
…
#endif
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС
Условная компиляция кода
Пример использования условной компиляции для переключения
разделов кода
#define NEW_VER 1
#if NEW_VER
//
Экспериментальный код.
#else
// Старый код.
#endif
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС
Условная компиляция кода
Пример использования условной компиляции для переключения
разделов кода
#define DEBUG_INFO 1
……
……
#if DEBUG_INFO
printf(“Function 1 started\n”);
#endif
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС
Документ
Категория
Презентации по информатике
Просмотров
6
Размер файла
122 Кб
Теги
1/--страниц
Пожаловаться на содержимое документа