Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы алгоритмизации и программирования .Язык си.pdf
Скачиваний:
104
Добавлен:
16.03.2016
Размер:
4.49 Mб
Скачать

ГЛАВА 8. Операторы и функции передачи управления

Формально к операторам передачи управления относятся:

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

оператор перехода к следующему шагу (итерации) цикла continue;

выход из цикла, либо оператора switch break;

оператор возврата из функции return.

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

Р

 

 

 

В языке Си предусмотрен оператор goto, общий вид которого

goto

метка ;

 

 

 

 

 

помеченному

указанной

 

 

оформленный

по всем

 

УИдвоеточие »

 

 

 

 

 

Г

после него, например, пустой помеченный меткой m1 оператор:

 

m1: ;

 

 

 

Б

 

 

 

 

 

Область действия метки – функция, где эта метка определена. В случае

 

 

 

а

необходимости можно использовать блок.

 

 

 

к

 

Циклы и переключатели можно в л дыв ть вдруг в друга и наиболее

характерный

оправданный случай

 

использования оператора goto

выполнение

 

е

 

выхода) во вложенной структуре.

прерывания (организация

Например, при возникновении грубых неисправимых ошибок необходимо выйти из двух (или более) влож нных структур (где нельзя использовать

 

 

ор

.к. он прерывает только самый внутренний

непосредственно опера

 

break,

цикл):

и

т

 

 

for (...)

 

 

 

 

л

 

 

 

 

for (...) {

 

 

 

 

...

 

 

 

}

 

if (ошибка)

goto error;

 

 

...

 

 

 

 

 

 

 

 

бerror: операторы для устранения ошибки;

иВторой оправданный случай: организация переходов из нескольких

мест функции в одно, например, когда перед завершением работы функции

Бнеобходимо сделать одну и ту же операцию.

8.2. Операторы continue, break и return

Оператор continue может использоваться во всех типах циклов (но не в операторе-переключателе switch). Наличие оператора continue вызывает пропуск «оставшейся» части итерации и переход к началу следующей, т.е. досрочное завершение текущего шага и переход к следующему шагу.

58

В циклах while и do-while это означает непосредственный переход к проверочной части. В цикле for управление передается на шаг коррекции, т.е. модификации выражения 3.

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

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

внутри которого он (break) находится.

 

 

 

 

 

Р

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Оператор return производит досрочный выход из текущей функции. Он

также возвращает значение результата функции:

 

 

И

 

 

 

 

 

 

 

return

 

выражение;

 

 

 

 

 

 

 

 

 

 

 

У

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выражение должно иметь скалярный тип. Правила использования данного

оператора будут рассмотрены в гл. 12.

 

 

Г

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8.3. Функции exit и abort

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Б

 

 

 

 

Функция exit выполняет прерыв ние программы и используется для

нормального,

 

корректного

зав ршенияаработы

программы

при

возникновении

какой-либо

вн штатной

ситуации, например, ошибка

при

 

 

 

 

 

 

 

 

 

к

 

 

 

 

 

 

открытии файла (гл. 14). При этом записываются все буферы в

соответствующие

файлы,

закрываются

все

потоки

и

вызываются

все

 

 

 

 

 

 

 

е

 

 

 

 

 

 

 

зарегистрированные стандар ные функции завершения.

 

файле stdlib.h и

Прототип

этой функции

приведен

в заголовочном

выглядит так:

 

 

 

 

т

 

 

 

 

 

 

 

 

 

 

 

о

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

void exit ( int exit_code);

 

 

 

 

 

 

 

 

 

 

 

и

 

 

 

 

 

 

 

 

 

 

 

 

 

л

 

 

 

 

 

 

 

 

 

 

 

 

Параметр данной функции – ненулевое целое число, передаваемое системе

программ вания

(служебное

сообщение

 

о возникшей внештатной

иро

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ситуац

).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Длябзавершения работы программы также может использоваться

функц я

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

действияБ

void abort (void);

 

 

 

 

 

 

 

 

 

 

которой аналогичны функции exit(3).

 

 

 

 

 

 

Советы по программированию

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

59

1. Выражение, стоящее в круглых скобках операторов if, while и dowhile, вычисляется по правилам стандартных приоритетов операций.

2. Если в какой-либо ветви вычислений условного оператора или в цикле требуется выполнить два (и более) оператора, то они при помощи фигурных скобок объединяются в блок.

3. Проверка вещественных величин на равенство, как правило, из-за ограниченной разрядности дает неверный результат.

4. Чтобы получить максимальную читаемость и простоту структуры

программы, надо правильно выбирать способ реализации ветвлений (с

 

 

 

 

 

Р

помощью if, switch, или условных операций), а также наиболее подходящий

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

 

 

И

5.

Выражение в операторе switch и константные выражения в case

должны быть целочисленного или символьного типов.

У

 

6.

Рекомендуется использовать в операторе switch ветвь default.

7.

После каждой ветви для передачи управления на точку кода за

оператором switch используется оператор break.

Г

 

 

 

 

 

 

8.

Б

 

 

 

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

всегда явно или неявно присутствуют четыре основных элемента: начальные

установки, код цикла, модификация параметра цикла и проверка условия на

продолжение цикла.

ла

 

к

з р нее не известно (реализуется

9. Если количество повторений ци

итерационный процесс), необходимо предусмотреть аварийное завершение

 

 

 

е

цикла при получении достаточно большого количества итераций.

10. При использовании б скон чного цикла обязательно необходима

 

 

т

организация выхода из цикла по условию.

 

о

 

ЗАДАНИЕ 2. Разве вляющиеся алгоритмы

и

 

 

л

 

 

 

Первый уровень сл жности

Составить программу нахождения требуемого значения с исходными

данными x, y, z. Обозначение: min и max – нахождение минимального и макс мального из перечисленных в скобках значений элементов.

 

 

 

max ( x, y, z)

 

 

 

 

 

 

 

min ( x + y, y - z)

 

 

 

 

1. m =

б

 

+ 5 ;

 

 

2. n =

 

 

 

 

;

 

 

 

min ( x, y)

 

 

 

max ( x, y)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.

p =

| min ( x, y) - max ( y, z)|

;

 

4.

q =

max ( x + y + z, x × y × z)

 

;

 

 

 

min ( x + y + z, x × y × z)

 

Б

 

2

 

 

 

 

 

 

 

 

 

 

5.

r = max[ min (x, y ), z]

;

 

 

6.

s = min [

( x, y),max ( y,maxz)]

;

 

 

 

 

3

 

 

 

 

 

 

 

 

 

max ( y, z )

 

 

 

 

7.

t = max[

( x,5), max ( ymin, 0)]

;

8.

v = max[min( x y, y x),0];

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

60

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13. q =
max[
max max[
11. u =
9. w=max2 [

( x × y, x + y),0];

min ( y, z )

 

;

( x, y), min ( y,minz)]

( x + y + z, x × y ×z)

 

;

 

x + y + z, x /(y × z)]

 

 

 

 

 

min (0, x)

− min ( 0, y)

 

10.

z =max

max

2 ( y, x )

;

12.

q =

min ( x + y + z, x × y ×z)

;

 

 

 

min ( x - y + z, x × y / z)

 

=max ( y, z )

14.u min[min ( x, y), min ( y, z)] ;

=min ( y, z )

15.u max[ ( x, y), max ( y,maxz)] .

 

Р

Второй уровень сложности

И

 

 

j(x),

Вычислить значение y в зависимости от выбранной функции

значения функции j(x): 2x, x2, х/3. Предусмотреть вывод сообщений,

аргумент которой определяется из поставленного условия. Возможные

 

У

Г

Б

 

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

1.

y =aln(1+ x1/5 )+cos2[j(x) +1] ,

 

 

ì

z

2

;

z < 1;

 

 

где x = í

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

а

îz +1;

z ³1.

 

 

 

2aj(x) + bcos

| x |

 

 

к

 

ì 2 + z;

z <1;

 

2.

y =

 

 

 

 

 

 

 

 

 

,

е

 

где x = í

 

2 z;

 

 

 

 

 

 

 

2

+

 

 

 

 

 

z ³ 1.

in

 

 

 

 

 

x

5

 

 

 

 

 

s

 

 

 

 

 

 

 

 

 

 

 

 

 

î

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.

y =- pj(x) +a cos2 x3 + bsin3 x2 ,

 

 

ì

z;

 

z < 1;

 

 

где x = í

z3 ;

z ³1.

 

 

 

 

 

 

 

 

 

 

 

т

 

 

 

î

 

4.

y = 2a cos3

x2

о

 

 

 

 

ì

3

+ 0,2;

z <1;

 

+ sin2 x3 - bj(x) ,

 

где x = íz

 

 

 

 

 

 

 

и

 

 

 

 

 

 

î z + ln z;

z ³ 1.

 

5.

 

 

л

 

 

 

+ b(ex - ex ) ,

 

ì- z / 3;

z < -1;

 

y = aj(x) -ln(x + 2,5)

где x = í

| z |;

z ³ -1.

 

 

б

 

 

 

 

 

 

 

 

 

 

 

î

 

и2

asin

2

x -

3b

cos

2

j(x) ,

 

 

 

ì

z;

z < 0;

 

6.

y =

3

 

4

 

 

 

где x = í

 

 

z;

z ³ 0.

in

Б

 

 

 

 

 

 

 

 

 

 

 

 

 

îs

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

гдеinx = íìz2 - z;

z < 0;

 

7.

y = s

3[cj(x) + d 2 + x2 ],

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

î

z3;

z ³ 0.

 

8.

y = sin2 j(x) + a cos5 x3 + cln x2/5 ,

 

ì

2z +1;

z ³ 0;

 

где x = í

 

 

 

 

z < 0.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ln(z2 - z);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

î

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

61

 

 

bj(x)

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

ì

 

2

 

/ 2;

 

z £ 0;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9.

y =

+ a ln

 

tg

 

 

,

 

 

 

 

 

 

где x = íz

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

cos x

sin 3 x

 

 

2

 

 

 

 

 

 

 

 

 

 

î

 

 

 

z;

 

 

z > 0.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y = dj(x)e

 

 

 

 

 

 

 

 

 

+1) ,

 

 

 

 

ì

 

2

 

 

 

 

 

 

 

10.

 

+ c ln(x

 

 

 

 

где x = íz

 

 

+1;

 

z < 1;

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

î z -1;

 

 

z ³ 1;

 

 

2,5a ×e

−3x - 4bx

2

 

 

 

 

 

 

 

 

ì

 

 

 

1

 

 

;

z > 0;

 

 

 

 

 

 

 

 

 

 

ï

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11.

y =

 

 

 

 

 

 

 

 

 

 

 

,

 

 

 

 

 

где x = íz2

 

+ 2z

 

ln | x | +j(x)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ï

1

- z

3

;

 

z £ 0.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

î

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ì

 

 

 

2

 

 

 

 

Р

12.

y = asin3[j(x)2 -1] + cln | x | +ex ,

 

где x = í

 

z

 

+1;

z £1;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

î1/

 

 

z -1;

z >1.

13.

y = sin[nϕ(x)] + cos kx + ln mx ,

 

 

ì

 

 

z;

 

 

 

z >1;

 

 

где x = í

 

 

 

+1;Иz £ 1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Гî

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

îz

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

x

 

 

 

ì

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Уz; z > 0;

14.

y = bcos[aj(x)] + sin

 

+ ae

 

,

 

 

где x = í

 

 

 

 

 

 

 

 

 

5

 

 

 

 

 

 

+1;

 

z £ 0.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

а

3z

 

 

15.

y =2j(x)[asin x + d × e−(x+3) ],

ì- 3z;

 

z > 0;

 

Бгде x = í

z2 ;

 

 

z £ 0.

 

 

 

 

 

 

 

 

 

 

 

 

 

е

 

 

î

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ЗАДАНИЕ 3. Циклические алгоритмы

 

 

 

 

 

 

 

 

т

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

о

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Первый уровень сл жнос и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

произвольном д апаз не [a, b] изменения аргумента х с произвольным шагом h. Значения a, b, h вводятся с клавиатуры. Таблица должна содержать следующие столбцы: порядковый номер, значение аргумента x, значение функции, соо щение о возрастании или убывании функции.

Опреде ть максимальное и минимальное значения функции.

 

ли

 

 

 

 

 

 

 

 

 

 

 

1.бY (x) =

 

2sin x

,

 

 

 

 

 

 

a = –p; b = p; h = 0,4.

 

 

 

 

 

 

 

и

 

 

(1- x)2

 

 

 

 

 

Y (x) = -ln

 

 

 

 

x

 

 

 

 

 

a = 0,7; b = 1,8; h = 0,1.

 

 

 

 

 

 

 

 

 

2.

2sin

,

 

 

 

 

 

 

 

 

 

Б

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

xsin( p)

 

 

 

 

3.

Y (x) =

 

 

 

 

4

 

 

 

,

a = –0,5; b = 2,5; h = 0,2.

1- 2x cos p

+ x2

 

 

 

 

 

 

 

 

x

2

4

 

x

 

 

4.

Y (x) =

(1-

)cos x -

s

x, ain= –0,9; b = 2,7; h = 0,3.

4

2

 

 

 

 

 

 

 

 

 

 

 

62

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xcos

π - x2

 

 

 

 

 

 

 

 

 

 

5.

Y (x) =

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

,

 

a = –2; b = 0,8; h = 0,2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1- 2xcos p

+ x2

 

 

 

 

 

 

 

 

 

x2

 

 

 

 

 

4

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

6.

Y (x) = (

+

 

- 3)

×е2 ,

 

a = –1,9; b = 2,7; h = 0,3.

 

4

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7.

Y (x) = x2

15 +10s

 

 

 

x + p),

a = –0,4in(p; b = 0,4p; h = 0,5.

8.

Y(x) = еx sin x,

 

 

 

 

 

 

 

 

 

 

a = –0,3p; b = 1,3p; h = p/10.

9.

Y(x) = x2 cos xsin x,

 

 

 

 

 

 

a = –p/2; b = p/2; h = p/10.

Р

10.

Y(x) = x log(

 

x − 0,6

 

),

 

 

 

 

 

 

a = –3; b = 3; h = 0,5.

 

 

 

 

 

 

 

 

 

 

 

х

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11.

Y (x) = 2 cos x - s

 

x, in

 

a = –p; b = p; h = p/6.

12.

Y (x) = еx +

 

1+ е2x

- 2,

 

a = –0,9; b = 1, h = 0,3.И

 

 

 

 

 

 

 

 

x2

 

 

 

 

 

 

 

 

 

x

 

 

 

 

У

 

13.

Y (x) = (1- 4 )cos x - 2 s x,

 

 

 

ain= –0,9; b = 2,7; h = 0,3.

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Г

 

14.

Y (x) =

 

 

 

 

 

 

 

 

,

 

 

 

 

 

 

 

 

 

 

a = –0,1; b = 2; h = 0,1.

 

x2 - x +1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

sin x cos x

 

 

 

 

 

 

 

 

 

 

Б

 

 

15.

Y ( x) =

,

 

 

 

 

 

 

a = p; b = 2p; h = p/15.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

а

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

к

 

 

 

Второй уровень сложнос

 

 

е

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Значение аргумента x изменяе ся от a до b с шагом h. Для каждого x найти значения функции Y(x), суммы S(x) и |Y(x)–S(x)| и вывести в виде

таблицы. Значения a, b, h и n вводятся с клавиатуры. Так как значение S(x)

является рядом раз

ти

жен я функции Y(x), значения S и Y для заданного

аргумента x до жны

о

совпадать в целой части и в первых двух-четырех

позициях пос е десят чной точки.

 

 

 

 

 

 

 

 

 

и

 

 

 

 

 

 

 

 

Ра оту программы проверить для a = 0,1; b = 1,0; h = 0,1; значение

 

 

л

 

 

 

 

 

 

 

 

 

 

 

параметра n вы рать в зависимости от задания.

 

 

 

 

n

 

k

x

2k+1

 

 

 

 

 

 

 

б

 

 

 

 

 

 

 

 

 

1. S(x)

=

å

(-1)

 

 

 

 

 

 

 

,

 

Y (x) = sin(x).

 

(2k

+1)!

 

и

k =0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

s

 

kx)

 

in(

 

x

 

 

2. S(x) =

å(-1)k +1

 

,

Y (x) =

.

 

 

 

 

 

 

 

 

Б

 

k =1

 

 

 

 

 

 

k

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

cos(kp)

 

 

 

 

 

Y (x) = ex cos

π

3. S(x) = å

 

4

 

xk ,

 

 

4 cos(xsin(p / 4)) .

k!

 

 

 

 

 

k =0

 

 

 

 

 

 

 

 

 

 

 

63