
- •«Национальный исследовательский томский политехнический университет»
- •Матричные исчисления с использованием функций пользователя
- •Понятие функции
- •Определение пользовательской функции
- •Передача значений в функцию: фактические и формальные параметры
- •Локальные и глобальные переменные
- •Возврат результатов из функции
- •Return выражение;
- •Адреса и указатели
- •Размещение функций в файле
- •Массивы как параметры функций
- •Двумерный массив как параметр функции
- •Краткие выводы
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
«Национальный исследовательский томский политехнический университет»
Учебно-методические указания к
лабораторной работе №7 по курсу Информатика
Матричные исчисления с использованием функций пользователя
Томск 2011 г.
СОДЕРЖАНИЕ
1Понятие функции 4
2Определение пользовательской функции 5
3Передача значений в функцию: фактические и формальные параметры 7
4Локальные и глобальные переменные 8
5Возврат результатов из функции 8
6Адреса и указатели 9
7Размещение функций в файле 11
8Массивы как параметры функций 12
9Двумерный массив как параметр функции 12
10Краткие выводы 14
ВВЕДЕНИЕ
Данные учебно-методические указания содержат теоретический материал необходимый для выполнения лабораторной работы №7 «Матричные исчисления с использованием функций пользователя» по курсу Информатика для бакалавров направления 140800 «Ядерные физика и технологии». В частности, рассматриваются понятие функции в языке СИ, операторы описания, определения и вызова функций, возвращение значений из функции, адреса и указатели, правила размещения функций в файле.
-
Понятие функции
Принципы программирования на языке Си основаны на понятии функции. В выполненных ранее программах уже использовались некоторые функции: printf( ), scanf( ), fopen( ), встроенные математические функции (например, sin( ) ) и т.д. Эти функции являются системными, однако было создано и несколько собственных функций под общим именем main( ). Выполнение программы всегда начинается с команд, содержащихся в функции main( ), затем последняя вызывает другие функции, например printf( ). В процессе выполнения данной работы необходимо научиться создавать свои собственные функции и делать их доступными для функции main(), а также друг для друга.
Функция – самостоятельная единица программы, спроектированная для реализации конкретной задачи. Функции в языке Си играют ту же роль, какую играют функции, подпрограммы и процедуры в других языках. Вызов функции приводит к выполнению некоторых действий. Например, при обращении к функции printf() осуществляется вывод данных на экран. Другие же функции позволяют получать некоторую величину, используемую затем в программе. В общем функции могут выполнять действия и получать значения величин, используемых в программе.
Для чего надо пользоваться функциями? Во-первых, они избавляют нас от повторного программирования. Если конкретную задачу необходимо выполнить в программе несколько раз, можно написать соответствующую функцию только один раз, а затем вызывать её всегда, когда это требуется. Во-вторых, можно применять одну функцию в различных программах, просто включая файл с её текстом с помощью команды препроцессора #include (например, #include "my_f.cpp") в создаваемый файл или другим способом (например, используя такое средство, как "проект" Borland C++). Даже в том случае, если некоторая задача выполняется только в одно й программе, лучше оформить её решение в виде функции, поскольку функции повышают модульность программы и, следовательно, облегчают её чтение, внесение изменений и коррекцию ошибок.
Например, необходимо последовательно организовать ввод и поиск наибольшего значения в трех разных векторах, при этом собственно алгоритм поиска наибольшего значения используется один и тот же. Тогда можно соответствующую программу записать так:
void main(void)
{
double a[10], b[20], c[30], maxa, maxb, maxc;
readvektor(a, 10, ’A’);
maxa = poiskmax(a, 10);
readvektor(b, 20, ’B’);
maxb = poiskmax(b, 20);
readvektor(c, 30, ’C’);
maxc = poiskmax(c, 30);
}
Разумеется, при этом надо не забыть написать программную реализацию и самих функций readvektor()и poiskmax().
Используя смысловые имена функций, можно четко определить, что программа делает и как она организована. После этого можно заниматься каждой функцией отдельно и совершенствовать её до тех пор, пока она не будет правильно выполнять требуемую задачу. Дополнительное преимущество указанного подхода заключается в том, что если создана функция достаточно общего вида, то её можно использовать и в других программах.
На начальной стадии разработки можно считать функцию "чёрным ящиком", которому необходимо задать поступающую информацию (вход) и полученные результаты (выход). Все, что происходит внутри черного ящика, не касается разработчика до тех пор, пока не нужно писать программу, реализующую эту функцию. например, при использовании библиотечных функций необходимо иметь информацию о входных и выходных параметрах, а о конкретной реализации такой функции речь вообще не идёт.