Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория по языку СИ.doc
Скачиваний:
36
Добавлен:
03.03.2016
Размер:
1.93 Mб
Скачать

4.5.1. Передача параметров в функцию

Обмен информацией между вызываемой и вызывающей функциями осуществляется с помощью механизма передачи параметров.

Список_переменных, указанный в заголовке функции называется формальными параметрами или просто параметрами функции.

Список_переменных в операторе вызова функции это фактические параметры или аргументы.

Механизм передачи параметров обеспечивает замену формальных параметров фактическими параметрами, и позволяет выполнять функцию с различными данными.

Количество, типы и порядок следования формальных и фактических параметров должны совпадать.

Передача параметров выполняется так:

  • вычисляются выражения, стоящие на месте фактических параметров;

  • в памяти выделяется место под формальные параметры, в соответствии с их типами;

  • формальным параметрам присваиваются значения фактических параметров;

  • выполняется проверка типов и при необходимости выполняется их преобразование, при несоответствии типов выдается диагностическое сообщение.

Передача параметров в функцию может осуществляться по значению и по адресу.

При передаче данных по значению функция работает с копиями фактических параметров, и доступа к исходным значениям аргументов у нее нет.

При передаче данных по адресу функция обращается к адресам фактических параметров и имеет доступ к ячейкам памяти, в которых хранятся значения аргументов.

Таким образом, данные, переданные по значению, функция изменить не может, в отличие от данных, переданных по адресу.

4.5.2. Возврат результата с помощью оператора return

Возврат результата из функции в вызывающую ее функцию осуществляется оператором

return (выражение);

Работает оператор так:

  • вычисляется значение выражения, указанного после return и преобразуется к типу возвращаемого функцией значения;

  • выполнение функции завершается, а вычисленное значение передается в вызывающую функцию;

  • операторы, следующие в функции за оператором return, игнорируются;

  • программа продолжает свою работу с оператора следующего за оператором вызова данной функции.

Оператор return может отсутствовать:

  • в функциях типа void;

  • если возврат происходит перед закрывающейся фигурной скобкой;

  • в функции main.

Функция может содержать несколько операторов return.

4.6. Указатели и динамические массивы

Идея работы с указателями состоит в том, что пользователь работает с адресом ячейки памяти и имеет возможность динамически создавать и уничтожать переменные.

5. Примеры организации вычислительного процесса

5.1 Организация разветвляющегося вычислительного процесса

Постановка задачи

1. Исходные данные: a,b,c .

2. Математическая модель:

3.Выводимые данные : x, y

4. Аномалии: а) bc ≠ 0 , если a<bc ; b) ax ≠ 0 , если -2 ≤ x ≤ 2

.

Блок-схема алгоритма

Текст программы

#include <stdio.h>

#include<math.h>

main()

{

int a,b,c;

float x,y;

clrscr();

printf ("Vvedite A,B i C cherez probel:");

scanf("%d%d%d",&a,&b,&c);

if(a>=b*c)

x=sqrt(a-b*c);

else

if(b*c!=0)

{x=(float)a/(b*c); }

else

{printf("\nResheniya net!");

exit(1);

}

printf("\nX=%10.4f",x);

if(x>=-2)

y=x*(a+b+c);

else

if(x>=2)

y=log(x)-b;

else

if(x!=0 && a!=0)

y=(a*a+b*c)/(a*x);

else

{printf("\nResheniya net!");

exit(1);

}

printf("\nY=%10.4f",y);

getch(); }