Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Не делает никаких действий.



 

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

 

Пустой оператор.

 

Синтаксис:

;

 

Не делает никаких действий.

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

 

Пример. Вычислим длину строки st.

 

char st[30];

gets (st);

for(int l=0; st[l]!=’\0’; l++) // Возможны варианты

; // for(int l=0; st[l]!=0; l++)

//;

//или

// for(int l=0; st[l]; l++)

//;

 

Составной оператор (блок).

Блок – последовательность объявлений и операторов, заключенных в фигурные скобки.

Синтаксис:

{

Объявления

Операторы

}

 

Объявления определяют локальные для данного блока переменные или распространяют на данный блок действие глобальных объектов.

 

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

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

 

Пример. Рассмотрим следующую программу вычисления наименьшего элемента массива.

 

int a[5] = {6,5,3,1,2};

int i, minim, nMinim;

minim = a[0]; nMinim=0;

for(i=1; i<5; i++)

if (a[i] < minim)

minim=a[i];

nMinim=i;

 

Результат ее работы minim = 1, nMminim = 5. (Почему?)

 

Правильный вариант данной программы следующий

 

int a[5] = {6,5,3,1,2};

int i, minim, nMinim;

minim = a[0]; nMinim=0;

for(i=1; i<5; i++)

if (a[i] < minim){

minim=a[i];

nMinim=i;

}

 

Оператор – выражение.

 

Синтаксис:

Выражение;

 

Выражения мы подробно обсуждали на предыдущей лекции.

Все присваивания, вызовы функций и т.п. являются выражениями.

 

 

Условный оператор if.

 

Синтаксис:

 

if (выражение) Оператор1 else Оператор 2

 

Если выражение истинно (т.е. не равно 0), то выполняется Оператор 1, иначе Оператор 2.

 

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

 

Возможна сокращенная форма записи этого оператора:

 

if (выражение) Оператор1

 

Если выражение истинно, то выполняется Оператор 1, иначе ничего не делается.

 

Оператор выбора switch

 

Синтаксис:

 

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

объявления

case C1: Операторы 1

case C2: Операторы 2

case Cn: Операторы n

default: Операторы n+1

 

}

 

Если выражение равно С1, то передаем управление на метку case С1 (т.е. выполняются Операторы 1,2,…,n,n+1).

 

Если выражение равно С2, то передаем управление на метку case С2.

Если выражение равно Сn, то передаем управление на метку case Сn

 

Если выражение не равно С1, С2, …, Сn,то передаем управление на метку default.

 

Обычно последовательности операторов 1,2,…,n заканчиваются словом break, что позволяет выполнять одну из выбранных альтернатив.



 

В качестве примера напишем простейшее меню пользователя. Программа будет выбирать один из трех пунктов меню “круг”, “треугольник” или “квадрат”, и в соответствии с выбранным пунктом осуществлять действие (печатать слово “круг”, “треугольник” или “квадрат”). Передвижение по меню будет осуществляться стрелками вверх и вниз, выбранное действие будет выполняться при нажатии клавиши Enter.

 

#include <>

#define VVERX 72

#define VNIZ 80

#define ENTER 13

#define ESC 27

 

void deistvie (int nom);

char punkt[3][20] = {“круг”,”треугольник”,”квадрат”}

 

void main (void){

int c=0, nomer=10;

 

for(int i=0; i<3; i++){

gotoxy (30, i+10); printf(punkt[i]);

}

gotoxy(25, nomer); printf (“*”);

 

while (c!= ESC) {

c=getch();

gotoxy(25, nomer); printf (“ ”);

switch (c) {

case VVERX: if (nomer>10)

nomer--;

break;

case VNIZ: if (nomer<12)

nomer++;

break;

case ENTER: deistvie (nomer-10);

break;

}

gotoxy(25, nomer); printf (“*”);

}

}

 

 

void deistvie (int nom){

gotoxy(20,10); printf(“ ”);

gotoxy(20,10); printf(punkt [nom]);

}

 

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

 

Синтаксис:

 

for (начальное выражение; условное выражение; выражение приращения)

тело цикла

 

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

 

Нарисовать блок – схему работы цикла.

 

Любая из частей оператора for может быть опущена (но точки с запятыми нужно оставить на своих местах).

 

В качестве примера напишем программу вычисления функции cos(x) разложением в ряд Тейлора.

 

cos(x) = 1 – x2/2! + x4/4! – x6/6! + …

 

Объявим две переменных. Переменная s будет накапливать сумму ряда, а в переменной sl будем хранить текущее слагаемое.

 

Тогда последовательность действий по вычислению суммы должна быть такой:

 

s=0; sl=1;

s = s + sl; sl= -sl*x2/ (1*2);

s = s + sl; sl= -sl*x2/ (3*4);

s = s + sl; sl= -sl*x2/ (5*6);

и т.д.

 

Вычисление надо выполнять до тех пор, пока текущее слагаемое не станет маленьким (например, меньше 10-6).

 

Реализуем

 

double moicos(double x){

double sl=1,s=0;

for(int i=1; fabs(sl)>1E-6; i=i+2){

s = s+sl; sl= -sl*x*x/ (i*(i+1));

}

return(s);

}

 

 

Цикл while.

 

Синтаксис:

 

while (условное выражение)

тело цикла

 

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

 

Нарисовать блок – схему работы цикла.

 

В качестве примера рассмотрим решение уравнения f(x) = 0 методом деления отрезка пополам. Ищем корень данного уравнения на отрезке [a;b]. Считаем, что f – непрерывная функция, f(a)*f(b) < 0.

 

Алгоритм вычисления корня следующий. Делим отрезок [a;b] пополам. Пусть m=(a+b)/2 – координата середины отрезка.

Возможны три варианта.

 

1. f(m)=0. Тогда m – корень.

2. f(a) * f(m) <0. Тогда корень находится на отрезке [a;m]

3. f(a) * f(m) >0. Тогда f(b) * f(m) <0. Корень находится на отрезке [m;b].

 

Таким образом, за один шаг алгоритма мы либо нашли корень уравнения, либо уменьшили в два раза отрезок, на котором находится этот корень. Повторяем вычисления до тех пор, пока длина отрезка не станет меньше точности, с которой нам нужно вычислить корень.

 

Реализуем данный алгоритм. Получим следующий фрагмент программы:

 

epsil = 1E-6;

while (b-a>epsil) {

m=(a+b)/2;

if(f(m)==0){

printf(“Корень равен %8.6f”,m);

getch();

exit(1);

}

if(f(a)*f(m)<0) b=m;

else a=m;

}

printf(“Корень равен %8.6f”,m);

 

Цикл do while.

 

Синтаксис:

 

do

тело цикла

while (условное выражение)

 

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

 

Нарисовать блок – схему работы цикла.

 

В качестве примера рассмотрим ввод с контролем ошибок. Допустим, мы хотим спросить у пользователя число а и при этом знаем, что a>0. Если пользователь введет отрицательное значение, то нужно дать ему возможность повторить ввод.

 

С помощью цикла do… while это можно реализовать так:

 

do {

printf(“a=”);

scanf(“%d”,&a);

} while(a<=0);

 

Оператор продолжения continue.

 

Синтаксис:

continue;

 

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

 

Пример.

Вычислим (x-a[1]) *(x-a[3]) *(x-a[4]) *… *(x-a[n]). (Здесь скобка (x-a[2]) пропущена).

 

p=1;

for (int i=1; i<=n; i++){

if(i==2)

continue;

p*=(x-a[i]);

}

 

 

Оператор break.

 

Ситтаксис:

 

break;

 

Содержится в теле операторов do, while, for, switch.

 

Прерывает их выполнение. Если несколько таких операторов вложено друг в друга, то break прерывает выполнение только одного из них (самого внутреннего).

 

Оператор goto.

 

Синтаксис:

 

goto метка;

 

В другом месте программы:

 

метка: оператор

 

Передает управление на оператор, помеченный меткой.

 

 

Оператор return.

 

Синтаксис:

 

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

 

Заканчивает выполнение функции, в которой он содержится. Возвращает управление в вызывающую функцию. При этом в вызывающую функцию также возвращается значение выражения.


Дата добавления: 2015-08-29; просмотров: 27 | Нарушение авторских прав




<== предыдущая лекция | следующая лекция ==>
Вопросы к экзамену оператор эвм | RENI 101 - CHANEL 5- цветочный, альдегидный аромат с нотами жасмина, розы, иланг-иланга, оттенками экзотических древесных пород (ветивер, сандаловое дерево) и мускуса. Гармоничное сочетание

mybiblioteka.su - 2015-2024 год. (0.025 сек.)