Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Разветвляющийся вычислительный процесс с различными логическими условиями: оператор if. else, условная операция (?:)




Цель работы: Изучить реализацию в языке ветвящихся вычислительных процессов. Научиться писать программы, используя операторы: ветвления if...else, переключения switch в паре с оператором break,оператор перехода goto, тернарную условную операцию (?:).

Теоретические сведения

Условный оператор имеет сокращенную форму:

if (выражение_условие) оператор;

где в качестве выражения_условия могут использоваться: арифметическое выражение, отношение и логическое выражение. Оператор, включенный в условный, выполняется только в случае истинности (т.е. при ненулевом значении) выраж-ния_условия. Пример:

if (х < 0 && х > -10) х=-х:

Кроме сокращенной формы, имеется еще и полная форма условного оператора:

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

оператор _1;

else

оператор _2;

Здесь в случае истинности выражения-условия выполняется только оператор_1, при нулевом значении выражения-условия выполняется только оператор_2. Например:

if (x > 0)

b =х;

Else

b=-х;

Оператор в сокращенном варианте оператора if, и оператор_1 и оператор 2 в полном операторе if могут быть как отдельными, так и составными операторами.

Например, при решении алгебраического уравнения 2-й степени ax2+bx+c=0 действительные корни имеются только в случае, если дискриминант (b2~4ас) неотрицателен. Следующий фрагмент программы иллюстрирует использование условного оператора при определении действительных корней х1, х2 квадратного уравнения:

...............

d=b*b - 4*а*с; /* d - дискриминант */

if (d>=0.0)

{

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

х2=(-b-sqrt(d))/2/а;

printf("\n Корни: xl=%e, x2=%e", xl, х2);

}

Else

printf("\n Действительные корни отсутствуют.");

Во фрагменте предполагается, что переменные d, b, a, xl, х2 - вещественные (типа float либо double). До приведенных операторов переменные а, b, с получили конкретные значения, для которых выполняются вычисления. В условном операторе после if находится составной оператор, после else - только один оператор - вызов функции printf(). При вычислении корней используется библиотечная функция sqrt() из стандартной библиотеки компилятора. Ее прототип находится в заголовочном файле math.h.

Операции отношений (сравнения):

< меньше, чем (ранг 6);,

> больше, чем (ранг 6);

<= меньше или равно (ранг 6);

>= больше или равно (ранг б);

== равно (ранг 7);

!= не равно (ранг 7).

Операнды операций отношений должны быть арифметического типа или могут быть указателями. Результат целочисленный: 0 (ложь) или 1 (истина). Последние две операции (операции сравнения на равенство) имеют более низкий приоритет по сравнению с остальными операциями отношений. Таким образом, выражение

(х < В ==А < х) есть 1,

когда значение х находится в интервале от А до В и А<В либо х, А, В равны. (Вначале вычисляются х<В и А<х, к результатам применяется операция сравнения на равенство ==.)

Логические бинарные операции:

&& - конъюнкция (И) арифметических операндов или отношений (ранг 11. Целочисленный результат 0 (ложь) или 1 (истина);

|| - дизъюнкция (ИЛИ) арифметических операндов или отношений (ранг 12). Целочисленный результат 0 (ложь) или 1 (истина). (Вспомните о существовании унарной операции отрицания '!'.)

Результаты отношений и логических операций:

3<5 равняется 1;

3>5 равняется 0;

3=5 равняется 0;

3!=5 равняется 1;

3!=5 || 3=5 равняется 1;

3+4>5 && 3+5>4 && 4+5>3 равняется 1.

Условная трехместная операция (ранг 13). В отличие от унарных и бинарных операций условная тернарная операция используется с тремя операндами. В изображении условной операции применяются два символа '?' и ':' и три выражения-операнда:

выражение_1? выражение_2: выражение_3

Первым вычисляется значение выражения_1. Если оно истинно, т.е. не равно нулю, то вычисляется значение выражения_2, которое становится результатом. Если при вычислении выражения_1 получится 0, то в качестве результата берется значение выражения_3. Классический пример:

х < 0? -х: х;

Выражение возвращает абсолютную величину переменной х.

Ход работы

1 В соответствии с индивидуальным заданием разработать программу с применением операторов ветвления, выбора варианта, разрыва, перехода (при составлении программы использовать операторы if…else).

2 Набрать программу и устранить ошибки.

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

4 Получить результаты.

5 Оформить отчет и сделать выводы по работе, изучив контрольные вопросы по теме.

 

Индивидуальное задание к лабораторной работе

Вычислить значение функции

y = f(x), где

ì f1(z), если z < 0;

x = í f2(z), если 0 £ z £ 8;

î f3(z), если z > 8;

z = cos(с).

Значения функций приведены в таблице 15.

 

Таблица 15 - индивидуальное задание

Вар. f(x) f1(z) f2(z) f3(z) c
  x2+8x-6 z3-3z2 zln(z) Ez-e-z 5,1
  X3lnx2 e-z+3z ln|z| Cosz+z2 5,4
  X1/4+sinx 2z-ln|z| tgz-2z Sin3z 4,1
  X4+2sinx2 sinz+tgz cos3z+3/z Z2+lnz2 3,2
  Cosx3 z2+2sinz lnz+2z Ez+1/z 4,7
  Sinx+2lnx 2z+tgz lnz4+2z Cosz+2z 1,3
  Sin4x2 sinz2-z3 2sinz2 1,6
  Tgx-4x3 1/cos2z z-ln|z| Z3+sinz 1,5
  Lnx-e2x z2+ez cos4z/z3 Tg(z+1/z) 2,7
  2x-lnx 2cosz+1/z z3-2ln|z| Tg2z+z3 3,8
  3x-sinx 3tg3z 1/cos4z E2z+sinz 1,6
  4x2+cosx 3z/sinz z2+2sinz 2z-ln|z| 2,4
  +cosx z2+lnz2 ez+1/z Z4-sinz 4,1
  x1/3+2x ln|cosz| 2z+ez Tg2z 2,5
  Sin4x+2x z5/sin2z e-2z+tgz Cos4z+z1/3 3,2
  Tg4x+1/x z/sinz1/5 2ztg3z Z +8 1,4
  Ln(1/x) zsin2z-8 lnsinz0,8 -2,5 2,3
  e2x+4x cos(p /4)-z 1/(ez+1) arctg(z+3) 4,1
  Cosx4+x/2 sin(z+30°) lncos(pz/6) e-tg(z-2) 3,2
  2tgx+ex z+cos(p +z) z3+z1/3 Z4-lnz 2,8
  2lnx2 arccosz2 sinz+lncosz Z3-sin(p x) 1,7
  Cos2x/3 z2+ln(z+4) e(z-5)+sinz 2,2
  1/tgx4 e-4z+2+z2 cos(z1/3+2) Sin(p +4z2) 5,6
  e2x-x3 tg(z2+ ) ln(sinz+5) Z4+z2-cosz 3,4
  Tgx-2lnx arcsin(z+3) z3-z2+cosz Ln(z3+4z) 2,5
  Cosx4+x/2 lnsinz0,8 cos(p /4)-z Z/sinz1/5 3,7
  Ln(x+x2) 2ztg3z sin(p +4z2) Z3+z1/3 2,6
  Cosx4+2x tg(z+1/z) e2z+sinz Cosz1/5 3,8
  Sin4x+2x z2+lnz2 cos3z+3/z Cos(p /4)-z 5,8
  3ln(x2+5) z4-lnz sinz+tgz Sinz+lncosz 3,5

 

Контрольные вопросы для подготовки и самостоятельной работы

1 Какой тип должно иметь <выражение> в операторах if и switch?

2 Можно ли использовать оператор goto для передачи управления на else, метку case…; default:?

3 С помощью каких операторов можно досрочно завершить выполнение операторов if…else, switch?

4 Можно ли использовать в качестве <выражения> в операторе switch указатель?

5 Можно ли использовать в качестве константного <выражения> в операторе switch константу?

6 Обязательно ли использовать оператор break в операторе switch? Каково его действие? Что происходит при отсутствии break?

7 Какому из вложенных операторов if относится else при наличии и отсутствии операторных скобок ¢¢{¢¢ и ¢¢}¢¢.

8 Какие типы операндов допустимы в условной операции (?:)?

9 Объясните работу операторов в приведенных примерах.

10 Как объявить и использовать метки в программе?

 

Лабораторная работа 7





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


Дата добавления: 2016-11-02; Мы поможем в написании ваших работ!; просмотров: 555 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Наглость – это ругаться с преподавателем по поводу четверки, хотя перед экзаменом уверен, что не знаешь даже на два. © Неизвестно
==> читать все изречения...

2613 - | 2186 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.007 с.