КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Выходные данные
Входные данные Возвращаемое значение Передача скаляров C Если возвращаемое значение имеет тип не int, то указание типа в заголовке функции обязательно. В подпрограммах для указания типа возвращаемого значения (которого нет) используется ключевое слово void. См. выше. Пример. float max( float a, float b){ ........................ } Basic Тип возвращаемого значения в функциях надо указывать всегда. Если он не указан, то функция возвращает тип variant, который будет рассмотрен в другом разделе. Синтаксис подпрограмм такого указания не требует. C Перед передачей входные аргументы, если требуется, преобразуются в соответствии с прототипом. Пример. Вызывающая процедура Вызываемая процедура float a, max( float, float ); float max( float a, float b){ int b; ......................................................... y=2+3.5*max(a, b); // Целая переменная b преобразуется к типу float } Basic Если есть необходимость застраховаться от возможности изменения входных данных в вызываемой процедуре, то необходимо передавать такие аргументы по значению, т.е. их копии. Для этого в определении процедуры перед таким параметром нужно записать ключевое слово ByVal. Пример. function Max(ByVal a as double, ByVal b as double) as double Для того, чтобы вынудить транслятор выполнять автоматическое преобразование аргумента к типу параметра, достаточно заключить аргумент в скобки. Пример. y=2+3.5*max((a), (b)) C Поскольку в языках C и C++ реализована передача аргументов по значению, то для того, чтобы в вызываемой процедуре можно было изменять значение исходного аргумента, туда необходимо передавать адрес области памяти, где хранится аргумент. При этом функция не может изменить этот адрес, а содержание может. Для получения адреса используется оператор &. Следовательно, соответствующий параметр – указатель!!
Пример. Дана матрица {aij}, i,j=1...10. Найти max{aij} и его индексы. float maxmatr(float a[10][10], int * k, int * l){ float max; int i, j; max = a[0][0]; for (*k=*l=i=0; i<10; i++){ for (j=0; j<10; j++){ if (max<a[ i ][ j ]){max=a[ i ][ j ]; *k=i; *l=j; } } } return max; }/* End maxmatr */ Соответствующий фрагмент вызывающей процедуры имеет вид: float maxmatr(float a[ ][10], int *, int*), // Прототип maxim, // Максимальный элемент a[10][10]; // Исходная матрица int m, n; // Ее размеры .................................. maxim=maxmatr(a, & m, & n); Употребление конструкции float a[ ][10] будет пояснено ниже. Те же вычисления можно реализовать в виде подпрограммы. void maxmatr(float a[10][10], int *k, int * l, float * max){ float * max; ...................... Также везде надо заменить max на *max и убрать инструкцию return. Пример. Функция scanf: список данных – это выходные аргументы, поэтому при обращении надо использовать адреса (&), printf: список данных – входные аргументы, поэтому используются значения. Basic Поскольку по умолчанию аргументы передаются по адресу, то никаких ухищрений не требуется. Если изменить значение аргумента в вызываемой процедуре, то оно сохранится после возврата.
Дата добавления: 2014-12-27; Просмотров: 384; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |