Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Алгоритмизация и ОП / 2_Программирование разветвляющихся алгоритмовt

.doc
Скачиваний:
19
Добавлен:
09.02.2016
Размер:
112.64 Кб
Скачать

2.2 Лабораторная работа №2 Программирование разветвляющихся алгоритмов

Цель работы: научиться разрабатывать блок-схемы и составлять программы, реализующих разветвляющиеся алгоритмы и правильно использовать условные операторы перехода и оператор выбора.

Общие сведения

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

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

  1. с использованием операторов перехода;

  2. условного оператора;

  3. оператора выбора.

Оператор перехода GOTO

Оператор перехода имеет вид

GOTO <метка>;

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

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

Условный оператор IF имеет два вида:

а) полная форма

if (условие) оператор 1

else оператор 2

б) сокращённая форма

if (условие) оператор 1

где оператор 1, оператор 2 – любые операторы, включая условия и составные; условие – в общем случае логическое выражение.

Если условие истинно, выполняется оператор 1, если ложно, то выполняется оператор 2.

Оператор выбора SWITCH CASE

Оператор служит для выбора одного из помеченных вариантов действия (операторов), в зависимости от значения "параметра".

Оператор выбора имеет следующий вид:

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

{

case константа 1:

оператор 1;

break;

…………………………

case константа N:

оператор N;

break

default: оператор

}

где выражение – целочисленная переменная или соотношение

константаN: - метка в виде константы или константного выражения

default – метка на оператор, которая выполняется в том случае, если выражение не совпадает ни с одной константной меткой.

break - оператор выхода из переключателя.

Задание А

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

Пример

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

На рисунке 2.2.1 приведена блок-схема решения задания

Рисунок 2.2.1 -Блок-схема решения задания

Переводим блок-схему на язык С

#include<stdio.h>

#include<conio.h>

#include<math.h>

void main()

{ int S,n;

float K;

printf("\n Введите данные");

printf("\n S=");

scanf("%d",&S);

printf("\n n=");

scanf("%d",&n);

if (fabs(n)<S && S<2*fabs(n))

K=sqrt(fabs(S*exp(2)-n*exp(-2))); else

if (S>=2*fabs(n))

K=sqrt(fabs(S*n)); else

printf("\n Нет решенния");

printf("\n Результат K=%f",K);

getch();

}

Результат выполнения программы:

Введите данные

S=7

n=1

Результат K=2.645751

Варианты задания А

6.

7. 8.

9. 10.

11.

12.13.

14.15.

16. 17.

18. 19. 20.

Задание Б

Составить программу решения задачи. Все значения для вычисления ввести с клавиатуры

Варианты задания Б

1. Даны действительные положительные числа x, y, z. Выяснить, существует ли треугольник с длинами сторон x, y, z.

2. Даны действительные числа x, y. Если x, y отрицательны, то каждое значение заменить его модулем; если отрицательное только одно из них, то оба значения увеличить на 0.5; если оба значения не отрицательны и ни одно из них не принадлежит отрезку [0.5, 2.0], то оба значения уменьшить в 10 раз; в остальных случаях x, y оставить без изменения.

3. Определить и вывести на печать номер квадранта, в котором расположена точка М(x,y), x и y заданные вещественные числа.

4. Из величин, определяемых выражениями a=sinx, b=cosx, c=ln|x| при заданном х, определить и вывести на экран дисплея минимальное значение.

5. Напишите программу, которая определяет сумму двух чисел, если сумма больше 100, то полученный результат умножается на 2, если условие не выполняется, то результат умножается на 3.

6. Определить, какая из двух точек - M1(x1,y1) или M2(x2,y2) - расположена ближе к началу координат. Вывести на экран дисплея координаты этой точки.

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

8. Даны действительные числа a, b, c, x, y. Выяснить, пройдет ли кирпич с ребрами a,b,c в прямоугольное отверстие со сторонами x и y. Просовывать кирпич в отверстие разрешается только так, чтобы каждое из его ребер было параллельно или перпендикулярно каждой из сторон отверстия.

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

10. Напишите программу, которая определяет «нуль» и считает его количество из ряда введенных чисел.

11. Напишите программу, определяющую период суток. Если до 1200 – «утро», до 1800 – «день», до 000 – «вечер», до 600 – «ночь», с выдачей соответствующих запросов и сообщений.

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

13. Скорость передачи информации по сети изменяется в диапазоне от 14 кбит/сек до 58 кбит/сек. Напишите программу, определяющую наибольшую разницу между средним значением скорости передачи и текущим значением, с выдачей соответствующих запросов и сообщений.

14. Сможет ли шар радиуса R пройти в ромбообразное отверстие со стороной P и острым углом Q?

15. Написать программу, которая печатает True или False в зависимости от того, выполняются или нет заданные условия:

  • квадрат заданного трехзначного числа равен кубу суммы цифр этого числа;

  • среди цифр заданного трехзначного числа есть одинаковые;

16. Написать программу, которая бы запрашивала целое число и распечатывала любое его значение, кроме13. Если заданное число равно13, вместо него печатается число 77.

17. Определить, какая из двух фигур (круг или квадрат) имеет большую площадь. Известно, что сторона квадрата равна а, радиус круга r. Вывести на экран название и значение площади большей фигуры.

18. Даны длины трех отрезков a, b, c. Если можно построить треугольник по этим трем отрезкам, то вычислить его периметр и площадь.

19. Определить, попадает ли точка M(x,y) в круг радиусом r с центром в точке (x0,y0)

20. Проверить, можно ли из четырех данных отрезков составить параллелограмм. Написать программу, определяющую попадает ли точка с координатами (x, y) в заштрихованную область

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

  1. Какие виды условного оператора вы знаете?

  2. Как выполняются оператор выбора?

  3. Какие операторы используются для программирования разветвлений?

  4. Как выполняются операторы перехода?

  5. Как записывается полная форма оператора перехода?

  6. Как записывается сокращённая форма оператора перехода?

  7. Для чего используется оператор break?

  8. Для чего используется метка default?

21