- •Министерство образования Республики Беларусь
- •Часть 1.Методически указания по курсу “Вычислительная техника и программирование
- •Содержание
- •Лабораторная работа №1 Линейный вычислительный процесс Цель работы
- •Операторы вывода информации
- •1. Формат, указывающий компилятору вид выводимой информации, признаком формата является символ %.
- •2. Управляющие символы:
- •Стандартные математические функции
- •Варианты индивидуальных заданий
- •Варианты индивидуальных заданий
- •Циклы типа while и do – while
- •Вложенные циклы
- •Варианты индивидуальных заданий
- •Контрольные вопросы
- •Лабораторная работа №4 Массивы в языке с
- •Многомерные массивы
- •Контрольные вопросы
- •Лабораторная работа №5 Функции пользователя
- •Область действия переменных
- •Контрольные вопросы
- •Лабораторная работа №6 строки и структуры
- •Краткие теоретические сведения
- •Контрольные вопросы
- •Лабораторная работа №7 Файлы в языке с
- •Краткие теоретические сведения
- •Посимвольный ввод-вывод
- •Построчный ввод-вывод
- •Блоковый ввод-вывод
- •Контрольные вопросы
- •Лабораторная работа №8 Графический режим работы в языке с
- •Kраткие теоретические сведения
- •Функции для подготовки графической системы
- •Основные функции для получения изображения
- •Варианты индивидуальных заданий
- •Контрольные вопросы
- •Задание опций интегрированной среды
- •Набор текста программы
- •Компиляция, редактирование связей, запуск программы на выполнение
- •Многофайловая компиляция
- •Отладка программы
- •Использование глобальных переменных, объявленных вне файла
- •Литература
- •Учебное издание
Контрольные вопросы
Укажите типы массивов, применяемых в языке С.
Формы (способы) работы с элементами массива.
Что такое указатель?
Лабораторная работа №5 Функции пользователя
Цель работы
Познакомиться с механизмом составления и организации взаимодействия пользовательских функций языка С.
Краткие теоретические сведения
В алгоритмическом языке С кроме использования стандартных функций существует возможность работать с функциями пользователя. Предварительно функцию необходимо объявить. Объявление функции пользователя, т.е. ее декларация, возможно в двух формах – в форме описания и в форме определения.
Описание функции заключается в приведении вначале программного файла ее прототипа. В стандарте создателей языка С Кернигана и Ритчи (K&R) был предложен такой способ декларации функций:
<тип_результата> <имя функции>( );
Но при таком способе описания функции нет информации о параметрах, что не позволяет определять возможные ошибки при работе с функциями.
В стандарте языка, предложенном Американским национальным институтом стандартизации (АNSI), используется следующий способ декларации функций:
<тип_результата> <имя_функции>(<тип> <переменная>, …<тип> <переменная>);
Такое описание функции предпочтительнее, так как компилятор языка С может проверить тип и количество параметров при фактическом вызове этой функции. Заметим, что идентификаторы переменных в круглых скобках прототипа указывать не обязательно, так как компилятор языка их не обрабатывает.
Примерописания функции fun со списком параметров:
float fun(int, float, int, int);
Прототип функции сообщает компилятору о том, что далее в тексте программы будет приведено ее полное определение (полный ее текст).
Полное определение функции имеет следующий вид:
<тип_результата> <имя_функции>(список параметров)
{
тело функции
}
Тип результата определяет тип значения, который возвращается функцией в точку ее вызова при помощи оператора возврата return. Если тип функции не указан, то по умолчанию предполагается тип int. Список параметров состоит из перечня типов и имен параметров, разделенных запятыми. Функция может не иметь параметров, но круглые скобки необходимы в любом случае.
Оператор return вызывает немедленный выход из данной функции и возврат в вызывающую ее функцию. Этот оператор можно также использовать для возврата значения функции. Отметим, что в теле функции может быть несколько операторов return, но может и не быть ни одного. В таких случаях возврат в вызывающую программу происходит после выполнения последнего оператора тела функции.
Примерфункции, определяющей наименьшее из двух целых чисел:
mini(int x, int y)_
{ int t;
if (x<y) t=x;
else t=y;
return t;
}
Можно написать функцию mini и таким образом:
mini(int x, int y)
{
return (x<y)? x:y;
}
Все функции, возвращающие значение, должны использоваться в правой части выражений языка С, иначе возвращаемый результат будет утерян. Но они не могут использоваться в левой части операторов присваивания, за исключением тех случаев, когда возвращается адрес.
Если функция не возвращает никакого значения, она должна быть описана как функция типа void (пустая).
Например, для вывода горизонтальной строки на экран дисплея можно использовать следующую функцию:
void lin(char a)
{
int k;
for(k=0; k<79; k++)
printf(“%c”, a);
}
Если у функции отсутствует список параметров, то при декларации такой функции желательно в круглых скобках также указать ключевое слово void. Например, заголовок основной функции должен выглядеть так: void main(void).
В языке С каждая функция – это отдельный блок программы, вход в который возможен только через вызов данной функции. Так, например, нельзя оператором перехода goto передать управление вовнутрь любой функции.
Вызов функции имеет следующий формат:
<имя_функции>(список_аргументов)
где в качестве аргументов можно использовать константы, переменные, выражения (их значения перед вызовом функции будут определены компилятором). Аргументы списка вызова должны полностью совпадать со списком параметров вызываемой функции по количеству, по порядку следования и по типам соответствующих им параметров. Отметим, что в случае отсутствия аргументов (в заголовке функции отсутствуют параметры) наличие круглых скобок у имени функции в точке ее вызова обязательно.