Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по ospk-2_Си_v11.doc
Скачиваний:
9
Добавлен:
08.11.2019
Размер:
593.92 Кб
Скачать

Лабораторная работа № 2 Тема: «Программирование алгоритмов с ветвлениями»

Цель работы – изучить операции сравнения, логические операции, операторы передачи управления if и switch.

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

2.1. Оператор условной передачи управления if

Для выбора одной из ветвей вычислений применяется оператор условного перехода:

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

else оператор 2;

вычисляется выражение, и если его значение не равно 0 (истинно), то выполняется оператор 1, иначе – оператор 2, например:

if (x>y) max = x;

else max = y;

Если операторы 1, 2 содержат более одного оператора, то они заключаются в фигурные скобки { }, т.е. применяется блок.

Конструкция else… может отсутствовать и такую форму называют сокращенной, тогда в случае ложности условия управление передается на следующий за if оператор.

Если операторы 1, 2 в свою очередь являются операторами if, то такой оператор называют вложенным, при этом ключевое слово else принадлежит ближайшему предшествующему if.

Пример 2.1. Найти наибольшее значение из трех чисел x,y,z:

if (x>y)

if (x>z) max=x;

else max=z;

else if(y>z) max=y;

else max=z;

2.2. Операции сравнения

Операции сравнения: < (меньше), <= (меньше или равно), > (больше), >= (больше или равно), != (не равно), = = (равно).

Операции сравнения бинарные, их общий вид:

Операнд 1 <знак операции> Операнд 2

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

Логические операции используются в качестве условий при составлении более сложных выражений. Приведем их перечень в порядке убывания приоритета:

! (отрицание или логическое НЕ – унарная операция), && (конъюнкция или логическое И), || (дизъюнкция или логическое ИЛИ).

Пример 2.2. (0<x)&&(x<=100)

((!x)&&(y>0)||((z==1)&&(k>0)).

Выражения вычисляются слева направо, причем их вычисление прекращается, как только результат становится известен.

1.3. Тернарная операция

Тернарная (условная) операция ?:

Ее общая форма:

Операнд 1 ? Операнд 2 : Операнд 3

Если значение операнда 1 истинно (не равно 0), то результатом операции является операнд 2, иначе – операнд 3.

Пример 2.3. Найти наибольшее из двух чисел: max = a>b ? a : b;

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

Общая форма оператора выбора (переключателя):

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

case const_1: операторы; break;

case const_N: операторы; break;

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

}

Вычисляется выражение и проверяется, совпадает ли его результат со значением одной из констант. При совпадении выполняются операторы этого case. Значе-ниями const_1,…, const_N могут быть только целые или символьные константы. Конструкция default выполняется, если результат выражения не совпал ни с одной из констант, и может отсутствовать. Оператор break выполняет досрочный выход из switch (после выполнения ветви case все остальные будут опущены). Если опе-ратор break в case не записан, то будут выполняться операторы следующих ветвей case до появления оператора break, либо до завершения оператора switch.

Пример 2.4.

switсh(i) {

case 1: f=pow(x,2); break;

case 2: f=fabs(x); break;

case 3: f=sqrt(x); break;

default: printf(“Ошибка!”); exit(1);

}

f=f+5;

Пример 2.5. Ввести значения исходных данных x, y и z. Вычислить значение функции.

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

#include <conio.h>

#include <stdio.h>

#include <math.h>

int main()

{

double x, y, z, u;

puts("Input x, y, z");

scanf("%lf%lf%lf",&x, &y, &z);

if (x*y > z){

u = x*sin(y);

puts(" x*y > z");

}

else {

u = y*cos(x);

puts(" x*y <= z");

}

printf("\n\t Rezult U = %8.6lf", u);

puts("\nPress any key ... ");

getch();}

Порядок выполнения лабораторной работы

1) Запустить программу Dev-C++.

2) Составить алгоритм решения задачи с ветвлением (в соответствие с индивидуальным заданием).

3) Составить программу определения значения функции в соответствие с индивидуальным заданием. Предусмотреть вывод сообщения, определяющего по какому условию работала программа.

4) Учесть, что возможен случай, при котором исходные данные не будут подходить ни для одного из предложенных условий.

5) Выполнить пошаговую отладку программы (Debug) с использованием слежения за переменными (Add Watch) для вычисления ветви прохождения программы.

6) Выполнить отчет по лабораторной работе, содержащий также результат выполнения программы при прохождении программы по всем ветвям условий.

Индивидуальные задания

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

1) rez =

2) rez =

3) rez =

4) rez =

5) rez =

6) rez =

7) rez =

8) rez =

9) rez =

10) rez = .

11) rez =

12) rez =

13) rez =

14) rez =

15) rez =

16) rez =

Контрольные вопросы

1) Какой функцией реализован оператор сравнения?

2) Приведите пример полного и сокращенного оператора сравнения.

3) Что такое тернарная операция?

4) Приведите пример тернарной операции.

5) В каких случаях целесообразно использовать оператор выбора?

6) Приведите конструкцию оператора выбора.