Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Функции в языке С. Где аргумент это имя переменной или константы или имя типа




Do

……….

Else

Операторы языка С

Sizeof (аргумент)

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

Приоритет операций

1. () [] - >

2.! ~ ++-- * (ссылка по адресу) &(адрес) Sizeof + - (одноместные)

3. * / % (умножение)

4. + -

5. << >>

6. < <= > >=

7. = =!=

8. &(побитовое и)

9. ^

10. |

11. &&

12. | |

13.?:

14.= += -= *= /= %= §= ^= |= <<= >> =

15., (запятая)

 

 

Оператор if

If – управляющий оператор, который позволяет изменить порядок выполнения инструкций к программе. Синтаксис:

if (выражение)

{

оператор 1;

}

оператор 2; ]

После if (выражение); не ставится иначе компилятор не замечает этой ошибки и стоящий далее оператор выполняется вне зависимости от (выражения). Выражение может быть любым логическим или выражением целого типа. Считается что если значение выражения ≠0 то это истина. При использовании оператораif нужно помнить, что else относится к ближайшему if.

Пример программы применения оператора if для выявления наибольшей величины.

#include <stdio.h>

int x,y;

int main()

{

printf(“ Input x:”);

scanf(“ %d ”, & x);

printf(“ Input y:”);

scanf(“ %d ”, & y);

if (x==y)

printf(“ x is equal to y ”);

else

if (x>y)

printf(“x is greater then y ”);

else

printf(“y is greater then x ”);

return 0;

}

 

Примечание: Функция scanf считывает данные с клавиатуры в соответствии с форматом (% формат) &- операция взятия адреса передаваемой числовой переменной.

 

Пример программы нахождения значения функции f(x) по заданному значению x

Sin x, x>0

F(x) =

cos x, x≤0

 

#include <stdio.h>

float x,y;

int main()

{

printf (“ Input x:”);

scanf (“ %f ”, & x);

if (x>0) f=sin(x);

else f=cos(x);

printf(“F(%.2f)=%.2f ”, x, y);

system (“PAUSE”);

return 0;

}

 

Пример программы нахождения корней квадратного уравнения

 

#include <stdio.h>

Int a, b, c;

float x1, x2, d;

int main()

{

printf(“ Input a:”);

scanf(“ %d ”, & a);

printf(“ Input b:”);

scanf(“ %d ”, & b);

printf(“ Input c:”);

scanf(“ %d ”, & c);

d= b*b-4*a*c;

if (d<0)

printf(“ Korney net”);

else

{

If (d==0)

{ x1=x2=-b/(2*a)};

Else

{

x1=(-b+sqrt(d))/(2*a);

x2=(-b-sqrt(d))/(2*a);}

printf(“ x1=%f, x2=%f”, x1,x2);

}

System(“PAUSE”);

Return 0;

}

 

Переключатель SWITCH

Он аналогичен оператору выбора варианта в языке Паскаль. Синтаксис оператора

switch (выражение)

{

case конст1: оператор 1;

case конст2: оператор 2;

[default: операторы;]

}

Выражение должно принимать целочисленное значение типа char, long или int. Оператор вычисляет значение выражения и сравнивает значение с константами. Затем выполняется один из операторов. Если значение не совпадает ни с одной из констант, выполняется оператор после ключевого слова default. Оператор будет выполняться до тех пор пока не встретит break.

 

Пример программы использующей переключатель switch для организации структуры меню:

#include <stdio.h>

Int reply;

int main()

{

printf(“ Enter a number 1 - 5:”);

scanf(“ %d ”, & reply);

switch (reply);

{

case 0: break;

case 1:

{

puts(“You entered 1. ”);

break;

}

case 2:

{

puts(“You entered 2. ”);

break;

}

case 3:

{

puts(“You entered 3. ”);

break;

}

case 4:

{

puts(“You entered 4. ”);

break;

}

case 5:

{

puts(“You entered 5. ”);

break;

}

default:

{

Puts(“Out of range. ”);

}

} /* конец switch*/

return 0;

}

 

Оператор цикла while

Выполняет блок операторов до тех пор пока некоторое условие остаётся истинным.

Синтаксис:

while (условие повторения)

{

тело цикла;

}

Сначала проверяются значение выражения УсловиеПовторения. Если оно не равно нулю, т.е. условие истинно, то выполняются инструкции цикла (тело цикла). Затем снова проверяются значение выражения УсловиеПовторения, и если оно не равно нулю, инструкции цикла выполняются еще раз. И так до тех пор, пока значение выражения УсловиеПовторения не станет равным нулю. Т.е. если условие ложно выполнение оператора while прекращается.

int x=0;

while (x<10)

{

printf(“ X is %d”, x);

x++;

}

 

Вычисление y=n!

int y=1;

int k=1;

while (k<n)

{

y=y*k;

k++;

}

 

Оператор цикла do while

 

Синтаксис:

{

тело цикла;

}

while (условие повторения);

Сначала выполняются инструкции цикла (тело цикла), затем проверяется значение выражения УсловиеПовторения, и если условие истинно, не равно нулю, то инструкции цикла выполняются еще раз. И так до тех пор, пока УсловиеПовторения не станет ложным, т.е. равным нулю.

Пример: отрывок программы которая вводит числа пока не встретится число большее 99.

int b;

do

{

scanf(“%d”, &b);

}

while (b<=99);

Оператор цикла for

 

Синтаксис:

For (инициализация; условие выполнения; изменение)

{

операторы;

}

Инициализация – инструкция инициализации счетчика циклов. Является оператором присваивания, который устанавливает значение некоторой переменной (вычисляется 1 раз в начале выполнения цыкла)

Условия выполнения – выражение, значение которого определяет условие выполнения инструкций цикла. Инструкции цикла выполняются до тех пор, пока УсловиеВыполнения истинно, т.е. не равно нулю. Если условие истинно, то выполняется операторы в цикла, алее вычисляется выражение изменения (приращения) и выполняется снова вычисление условия.

Изменение – инструкция изменения параметра цикла. Как правило, эта инструкция изменяет значение переменной, которая водит в УсловиеВыполнения.

(n!) p=1; for (i=1; i<=n; i++) p=p*i;

 

Любая из частей оператора может отсутствовать, но наличие; обязательно

for (;;)

Для преждевременного завершения оператора for можно использовать оператор break

Оператор for часто используется для отсчёта прогона циклов путём увеличентя переменной счетчика

for (a=1; a<=20; a++) printf(“%d ”, a);

 

for (a=100; a>0; a--) printf(“%d ”, a);

 

for (a=1; a<=20; a+=5) printf(“%d ”, a);

 

Использование без операции инициализации

c=1;

for (; c<10; c++)

 

Использование без операции приращения

for (c=1; c<10;)

printf(“%d“, c++);

 

Оператор continue

Он может находиться только в теле цикла for, while, do… while. Выполнение оператора приводит к тому, что немедленно начинается следующая итерация цикла. Операторы, стоящие в теле цикла между continue и } игнорируются.

while(…)

{

continue;

break;

}

Оператор безусловного перехода goto

 

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

 

Выполнение команд операционной системы

System() – выполняет команды операционной системы прямо из работающей программы. Для использования этой функции программа должна включать файл stdlib.h.

Формат команды:

System(команда);

Команда может быть строковой константой или указателем на строку

system(“dir c:”)

или

сhar *command=”dir c:”;

system (command);

 

После выполнения команды ОС, управление передается в программу в то же место, откуда был сделан вызов.

 

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

 

#include <stdio.h>

long cube (long x); /прототип функции/

long input, answer;

int main ()

{

printf (“введите число:”);

scanf(%d“, & input);

answer=cube(input); /вызов функции cube/

printf(“ куб числа %d равен %d ”, input, answer);

return 0;

}

long cube (long x) /определение функции/

{

long x_cubed; /объявление локальной переменной/

x_cubed=x*x*x;

return x_cubed; /оператор предает в вызывающую программу значение переменной x_cubed/

}

 

Использование функций в программе позволяет практиковать подход структурного программирования. При этом отдельные задачи программы выполняются независимыми фрагментами кода. Используя структурный подход, программирование происходит фактически сверху вниз (дерево). Как правило, вся фактическая работа выполняется функциями на концах «ветвей» дерева. Функции, находящиеся ближе к «стволу», в основном распределяют выполнение программы между этими функциями.

 

Написание функции

 

Прототип функции всегда должен быть объявлен до начала функции main. Имеет следующий синтаксис описания:

Тип Имя (Тип1 Параметр1, … Типj Параметрj);

 

 

Объявление функции:

Тип Имя (Тип1 Параметр1, … Типj Параметрj)

{

Операторы;

return (значение);

}

Тип – тип функции, тип значения, которое функция возвращает. Если функция не возвращает значение, то ее тип – void. В теле функции инструкцию return в этом случае не пишут.

int f1(…)

void f2(…)

Имя - имя функции.

Типj, Параметрj - тип и параметр функции. Если параметр используется для возврата результат, то параметр должен быть ссылкой, т.е. перед именем параметра должен быть символ *.

В функцию можно передавать аргумент любого типа. Информация о типах приводится в заголовке функции в виде списка параметров:

void f2(int x, float y, char z)

Если функция вообще не принимает аргументов тогда список параметров должен состоять из ключевого слова void (или пустые круглые скобки).

int f3(void)

float f4()

Если указатель типа в заголовке отсутствует, то предполагается что функция возвращает целое значение. Список формальных параметров может отсутствовать, но () сохраняются. После заголовка; не ставится. Формальные параметры в списке перечисляются через,. Для возврата значения вычислений функции используется специальный оператор RETURN. Он может использоваться в форме return 0 или return выражение. В первом случае оператор завершает выполнение функции и возвращает управление вызывающей его программе. Во втором случае оператор передает в качестве результата значение заданного выражения.

 

int fact(n)

{

int i, j;

y=1;

for(i=1; i<=n; i++) y=y*I;

return y;

}

Пример описания функции сравнения двух строк в соответствии с лексикографическим порядком:

 

strcmp(s,t)

char s[ ],t[ ];

{

int I;

i=0;

while (s[i]==t[i])

if (s[i++]==’’)

return (0);

return (s[i]-t[i]);

}

 

Эта функция будет выдавать значение 0 если s и t совпадают т.е. длина этих строк одинаковая. Функция возвращает значение >0 если s>t и <0 если t<s.

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

 

Для возврата значения из функции используется оператор return, за которым следует выражение. Когда выполнение программы подходит к оператору return выражение вычисляется и передается в вызывающую программу одновременно с передачей в нё управления. В функции может быть несколько операторов return. Фактически выполняется только один, до которого быстрее всего дошло выполнение.

 

#include <stdio.h>

int x, y, z;

int larger_of(int a, inr b);

int main()

{

puts(“Enter two values:”);

scanf(“%d%d”, &x, &y);

z= larger_of(x, y);

printf(“ The larger value is %d.”, z);

return 0;

}

int larger_of(int a, inr b)

{

if (a>b)

return a;




Поделиться с друзьями:


Дата добавления: 2014-01-14; Просмотров: 309; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.103 сек.