![](/user_photo/2706_HbeT2.jpg)
- •Министерство образования Российской федерации новосибирский государственный технический университет
- •Часть 1
- •Работа подготовлена на кафедре
- •Последовательность этапов решения задач при нисходящем проектировании
- •Семь основных элементов программирования.
- •Другие функции вывода: puts() и putchar()
- •Типы данных
- •Использование gets() и getch() для ввода
- •Условные операторы
- •Операции сравнения
- •Логические операции
- •Операторы присваивания
- •Оператор запятая
- •Лабораторная работа № 1 условные операторы. Операторы цикла.
- •Цель работы
- •Общие положения Оператор if
- •Циклические конструкции в программах
- •3. Пример программной реализации
- •4. Варианты заданий
- •5. Контрольные вопросы.
- •Лабораторная работа № 2 массивы целых чисел. Символьные массивы.
- •1. Цель работы.
- •2. Общие положения.
- •3. Примеры программных реализаций
- •Пример 3. Введенное натуральное число записать в виде строки.
- •4. Варианты заданий
- •5. Контрольные вопросы
- •Лабораторная работа № 3 методы сортировки.
- •Цель работы
- •Общие положения
- •Сортировка простыми включениями.
- •Сортировка простым выбором.
- •Сортировка простым обменом.
- •Пример программной реализации
- •Варианты заданий.
- •Лабораторная работа № 4
- •Способы передачи параметров
- •Функция main()
- •Области действия функций. Определения и объявления
- •Примеры программных реализаций
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа № 5 функции. Массивы указателей.
- •Цель работы
- •Общие положения
- •Примеры программных реализаций
- •Варианты заданий
- •Контрольные вопросы
Лабораторная работа № 4
ФУНКЦИИ. СПОСОБЫ ПЕРЕДАЧИ ПАРАМЕТРОВ. МАТРИЦЫ.
Цель работы
Приобретение практических навыков проектирования и использования функций.
Общие положения
Функция – самостоятельная единица программы, спроектированная для реализации конкретной задачи. Вызов функции приводит к выполнению некоторых действий. Функции избавляют нас от повторного программирования, позволяют использовать их в различных программах, повышают уровень модульности программы. Тип функции определяется типом возвращаемого ею значения ( по умолчанию int – целый).
int max (int a, int b)
Выполнение функции завершается оператором return, которых может быть несколько.
Функция может вернуть:
- одно значение через оператор return или
- значения переменных через аргументы, являющихся адресами переменных.
При вызове функции в качестве аргументов должны быть фактические параметры.
Функция состоит из двух частей: заголовка, создающего "интерфейс" функции к внешнему миру, и тела функции, реализующего заложенный и неё алгоритм с использованием внутренних локальных данных. Заголовок и тело составляют определение функции.
"Интерфейс" функции состоит из формальных параметров (вход) и результата (выход).
ФОРМАЛЬНЫЕ ПАРАМЕТРЫ - это собственные переменные функции, которым при ее вызове присваиваются значения фактических параметров. В заголовке функции имеется список формальных параметров, в котором они имеют синтаксис определений обычных переменных. Использование их в теле функции также не отличается от обычных переменных.
РЕЗУЛЬТАТ ФУНКЦИИ - это временная переменная, которая возвращается функцией и может быть использована как операнд в контексте (окружении) выражения, где был произведен ее вызов. Поскольку все переменные в Си имеют типы, тип результата также должен быть определен. Это делается в заголовке функции тем же способом, что и для обычных переменных. Используется тот же самый синтаксис, в котором имя функции выступает в роли переменной-результата:
int sum(...) // Результат - целая переменная
char *FF(...) // Результат - указатель на символ
Значение переменной - результата устанавливается в операторе return, который производит это действие наряду с завершением выполнения функции и выходом из нее. Между ключевым словом return и ограничивающим символом " ; " может стоять любое выражение, значение которого и становится
результатом функции. Если вспомнить еще и о преобразованиях типов, то при таком "присваивании" результата таковое должно производиться - от типа, соответствующего выражению, к типу результата функции. Имеется специальный (пустой) тип результата - void, который обозначает, что функция не возвращает никакого результата и, соответственно, не может быть вызвана внутри выражения. Оператор return в такой функции также не содержит никакого выражения: void Nothing() {return;}.
ВЫЗОВ функции выглядит как имя функции, за которым в скобках следует список фактических параметров.
ФАКТИЧЕСКИЕ ПАРАМЕТРЫ - переменные, константы или выражения, значения которых при вызове присваиваются соответствующим по списку формальным параметрам.
В "классическом" Си формальными параметрами и результатом функции могут быть только переменные, занимающие ограниченный объем памяти: базовые типы данных и указатели. Это сделано, исходя из общего положения о том, что транслятор не должен оказывать сильное влияние на эффективность программы путем включения каких-либо неявных операций.
Тело функции представляет собой уже известную нам синтаксическую конструкцию – составной блок. Это простая последовательность операторов, заключенная в фигурные скобки. После открывающейся скобки в блоке могут стоять определения переменных. Это ЛОКАЛЬНЫЕ ПЕРЕМЕННЫЕ блока (в данном случае тела функции). Они обладают следующими свойствами:
- локальные переменные создаются в момент входа в блок (тело функции) и уничтожаются при выходе из нее;
- локальные переменные могут использоваться только в том блоке, в котором они определены. Это значит, что за пределами блока они "не видны";
- инициализация локальных переменных заменяется присваиванием им значений во время их создания при входе в блок. Поскольку под инициализацией понимается процесс установки начальных значений переменных в процессе трансляции (которые затем попадают в программный код), то для
локальных переменных это сделать принципиально невозможно.
Локальные переменные в теле функции обозначаются в Си термином АВТОМАТИЧЕСКИЕ.