- •Void main(void)
- •Void main(void)
- •Void main()
- •Void main()
- •Viod main()
- •Условные выражения
- •Void main()
- •If(Выраженне1) Выражение2;
- •If(Выражение1) Выраженпе2; else ВыражениеЗ;
- •Void main()
- •Циклические выражения
- •Void nain()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Массивы
- •Void main()
- •Void main()
- •Void main()
- •Viod main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Адреса и указатели
- •Void main()
- •Viod main()
- •Функции
- •Void main(void)
- •Void main(void)
- •Int I; double X,step();
- •Void decart(double r, double f)
- •Void main()
- •Void decart(double r,double f,double *X,double*y)
- •Void main()
- •Void rnain()
- •Void main()
- •Void main()
- •Void main()
- •Int length;
- •Объектно-ориентированное программирование и приложения с графическим интерфейсом
- •Void main(void)
- •Int MyFunc(int, int);
- •Void NewFunc(void);
- •Void main()
- •Void FuncOut();
- •Void prob::FuncOut()
- •Void main()
- •Void main()
- •Void __fastcall tForm1::Button1Click(tObject *Sender)
- •Int pascal
- •Int nCmdShow)
- •Void __fastcall tForm1::Timer1Timer(tObject *Sender)
- •Void __fastcall tForm1::okClick(tObject *Sender)
- •Int I,step;
- •Введение в численные методы
Void main(void)
{
Int I; double X,step();
printf("x="); scanf(“%lf'.&x);
printf("п="); scanf(“%d",&i);
printf ("%lf %d=%lf",x,i.STEP(x,i));
}
double STEP(double x, int n)
{
int i; double s=1.0;
for(i=l; i<=n; i++) s*=x;
return s;
}
Здесь сначала описана главная функция, а затем функция STEP. Поскольку естественный порядок описания функций нарушен, мы должны информировать функцию main о том, что где-то в программе описана функция STEP, которую следует использовать. Нужно объявить (декларировать) ее. Как видно из примера, делается это очень просто. Функция STEP имеет тип double, и ее объявляют в main вместе с описаниями переменных этого типа. Для того чтобы система могла отличить объявление переменной от объявления функции, после имени функции в описании ставят круглые скобки.
Функция STEP от двух аргументов: х (вещественного типа) и n (целого типа), как легко убедиться, возвращает n - ю степень числа х для неотрицательных целых n. Главное, на чем следует остановиться, это то, что в теле функции STEP нам пришлось описать две дополнительные переменные - i и s, после чего изготовленная нами функция стала уже совсем похожей на уже совсем родную нам главную функцию main.
Мы упоминали о том, что переменные, описанные внутри функции, являются локальными. Они "живут" только в этой функции и для других функций не существуют. В этой связи имена локальных переменных в разных функциях вполне могут совпадать. Переменная х1 в функции М не имеет никакого отношения к переменной х1 в функции Р так же, как Миша, живущий в квартире 56, это вовсе не то же самое, что Миша, живущий в квартире 65. Совсем иное дело - глобальные переменные, описанные в программе вне функций. Такие переменные (и константы) "живут" во всех функциях, описанных после описания глобальных переменных. Такие объекты видны из любой функции программы. Изменение значения глобальной переменной, сделанное в одной из функций программы, немедленно отобразится на ее значении во всех остальных функциях. Продолжая нашу аналогию, можно сказать, что Александр Сергеевич Пушкин - он и есть Пушкин и для квартиры 56 и для квартиры 65, и если президентом на выборах стал господин Смит, то он стал президентом и для штата Техас и для штата Флорида.
Правда, и здесь возможны особенности: а что, если в некой семье с нестандартным воображением родившегося ребенка назвали А.С. Пушкин? Когда в этой семье говорят о Пушкине, то кого имеют в виду? В житейской ситуации, по-видимому, в этом случае требуются дополнительные пояснения. В С ничего такого не нужно. Существует следующее правило: если имя глобальной переменной совпадает с именем локальной, для некоторой функции, переменной, то внутри этой функции операции с этим именем относятся к локальному объекту. Так, например, изменение локальной переменной никак не отразится на значении глобальной переменной с тем же именем. Наоборот, изменение глобальной переменной проявится во всех функциях, где такое имя не описано, а там, где описана ее локальная "тезка", с последней ничего не произойдет.
Мы говорили пока о типизированных функциях, вычисляющих одно значение и возвращающих это значение в качестве значения функции. Возможен, однако, и другой вариант использования функций, когда требуется определить и передать в программу несколько значений. В некоторых языках программирования такие программные модули носят название процедур. Типичная для этого варианта задача - преобразование координат. Допустим, нам нужно создать функцию, которая принимает в качестве аргументов полярные координаты точки и и передает в вызывающую эту функцию программу декартовы координаты точки Х и У, вычисляемые по формулам:
Один из способов решения такой задачи состоит в передаче вычисленных значений в вызывающую программу в виде глобальных переменных:
#include<stdio.h>
#include<math.h>
#define Pi 3.1415927
double X,Y;