- •Введение
- •Лабораторная работа №1
- •4.2. Общая структура программы.
- •4.3. Вывод строки на экран
- •4.4. Ввод с клавиатуры
- •4.5. Комментарии
- •4.7. Переменные
- •Управляющие символьные константы
- •4.8. Операторы
- •4.8.1 Арифметические операторы
- •Арифметические операторы
- •4.8.2 Операторы сравнения и логические операторы
- •Операторы сравнения и логические операторы
- •4.8.3 Побитовые операторы
- •Побитовые операторы
- •Лабораторная работа №2 Разработка программы с применением
- •1. Задание по работе
- •2. Порядок выполнения работы
- •3. Содержание отчета
- •4. Краткое описание
- •4.1. Оператор выражение
- •4.4.2. Оператор switch
- •4.5. Операторы перехода
- •4.5.1. Оператор break
- •4.5.2. Оператор continue
- •4.5.3. Оператор return
- •4.5.4. Оператор goto
- •4.6. Операторы цикла
- •4.6.1. Оператор for
- •4.6.2. Оператор while
- •4.6.3. Оператор do..While
- •Лабораторная работа №3 Разработка программы обработки массива
- •1. Задание по работе
- •2. Порядок выполнения работы
- •3. Содержание отчета
- •4. Краткое описание
- •4.1. Массивы
- •4.1.1. Инициализация массивов
- •4.2. Строки
- •4.3. Понятие функции
- •4.3.1. Определение функции
- •4.3.2. Класс памяти
- •4.3.3. Тип возвращаемого значения
- •4.3.4. Формальные параметры
- •4.3.5. Тело функции
- •4.3.6. Фактические параметры
- •4.3.7. Рекурсивные вызовы
- •4.3.8. Передача параметров
- •4.3.9. Библиотека стандартных функций
- •4.2. Проектирование диалоговой панели.
- •4.3. Связывание элементов управления
- •4.2. Создание меню программы
- •4.3. Проектирование диалоговой панели
- •4.4. Связывание событий с элементами управления
- •4.4.1. Связывание переменной с окном редактирования.
- •4.4.2. Связывание кода с событием en_change окна редактирования
- •4.4.3. Связывание кода с пунктом CurrentSpeed меню File
- •4.4.4. Связывание кода с пунктом About меню Help
- •Библиографический список
4.3.3. Тип возвращаемого значения
Спецификатор типа вместе с декларатором определяет тип возвращаемого значения и имя функции. Если не задан, то подразумевается, что тип int. Функции не могут возвращать массивов или функции, но они могут возвращать указатели на любой тип, включая массивы и функции. Тип используется только тогда, когда функция возвращает значение, которое вырабатывается, если выполняется оператор return, содержащий выражение. Выражение вычисляется, преобразуется к типу возврата, если это необходимо, и возвращается в точку вызова. Если оператор return не выполняется или если выполняемый оператор return не содержит выражения, то значение возврата функции не определено. Если в этом случае вызывающая функция ожидает значение возврата, то поведение программы также не определено. /*
Пример
*/ int add (int x,int y)
{
return (x+y);
}
/*
4.3.4. Формальные параметры
Формальные параметры – это переменные, которые принимают значения, переданные функции в точке вызова. Формальные параметры объявляются в списке параметров заголовка и заключаются в круглые скобки. Список параметров определяет имена параметров и порядок, в котором они принимают значения при вызове. Разделяются параметры в списке запятой. Тип каждого формального параметра должен соответствовать типу фактического аргумента.
4.3.5. Тело функции
Тело функции – это просто составной оператор. Составной оператор содержит операторы, которые определяют действия функции, и может также содержать объявления переменных, используемых в этих операторах. Все переменные, объявленные в теле функции, имеют тип памяти auto, если они не объявлены иначе. Когда вызывается функция, то создается память для локальных переменных и производится их инициализация (если она задана). Управление передается первому оператору составного оператора и начинается процесс выполнения, который продолжается до тех пор, пока не встретится оператор return или конец тела функции. Управление при этом возвращается в точку вызова. Если функция возвращает значение, то должен быть выполнен оператор return, содержащий выражение. Значение возврата не определено, если не выполнен оператор return или если в оператор return не было включено выражение.
4.3.6. Фактические параметры
Фактическим параметром мы называем конкретное значение, передаваемое функции в момент вызова. В качестве них могут выступать константы или вычисляемые выражения. Все фактические аргументы передаются по значению. Копия фактических аргументов присваивается соответствующим формальным параметрам. Функция использует эти копии, не влияя на переменные, с которых копия была сделана. Путь доступа из функции к значениям оригинальных переменных обеспечивают указатели, т.к. указатель на переменную содержит адрес переменной, то функция может использовать этот адрес для доступа к значению переменной. Аргументы-указатели обеспечивают доступ из функции к массивам и функциям, которые запрещено передавать как аргументы. Несоответствие типов формальных и фактических параметров может привести к ошибкам, особенно когда несоответствие влечет за собой отличия в размерах. В этом случае могут происходить неявные преобразования, потеря точности и т.д.
Пример:
void swap (int *a, int *b);
{
int t;
t=*a;
*a=*b;
*b=t;
}
void main()
{
int x=5, y=6;
swap (&x,&y);
....
}
В примере функция swap объявлена как функция с двумя аргументами типа указателей на int. Формальные параметры a и b объявлены так же, как указатели на целые величины. При вызове функции адрес x запоминается в a и адрес y запоминается в b. Теперь два имени или "синонима" существует для одной и той же ячейки памяти. Ссылки *a и *b в функции swap действуют точно так же, как x и y в main. Присваивание внутри функции swap изменяет содержимое x и y.