Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические указания.pdf
Скачиваний:
81
Добавлен:
13.02.2015
Размер:
1.2 Mб
Скачать

4. ЛАБОРАТОРНАЯ РАБОТА №2 «АЛГОРИТМЫ С ВЕТВЛЕНИЯМИ»

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

13.3 Пояснения и примеры к лабораторной работе

Оператор IF реализует алгоритмическую конструкцию РАЗВИЛКА и изменяет порядок выполнения операторов в зависимости от истинности или ложности некоторого условия. Существует два варианта оператора:

if

S

then А

 

else В;

//Полная развилка

и неполная развилка:

if

S

then А;, где:

S - некоторое логическое выражение, истинность которого проверяется; А - оператор, который выполняется, если выражение S истинно;

В - оператор, который выполняется, если выражение S ложно.

Во втором случае, если условие S ложно, не выполняется никаких действий. Так как условный оператор IF является единым предложением, ни перед

then, ни перед else точку с запятой ставить нельзя.

 

 

 

Пример использования оператора IF:

 

 

 

 

 

a) Развилка неполная:

//Все числа становятся положительными}

 

if X < 0 then X := -Х;

 

б) Развилка полная:

Z :=X + Y else Z:= 1.5;

 

 

 

if X < 1.5 then

 

 

 

Пример 4.1 Даны три точки на плоскости. Определить, какая из них бли-

же к началу координат.

 

 

 

 

 

Таблица 4.1 Система тестов

 

 

 

 

 

 

 

 

 

 

Номер

 

 

 

 

Данные

 

 

 

Результат

 

теста

xA

 

yA

 

xB

 

yB

xC

 

yC

Otvet

 

1

2

 

1

 

2

 

2

-1

 

3

"Это точка A"

 

2

2

 

2

 

2

 

1

-1

 

3

"Это точка B"

 

3

2

 

2

 

-1

 

3

2

 

1

"Это точка C"

Листинг 4.1

Var xA, yA, xB, yB, xC, yC, DistA, DistB, DistC : Real; BEGIN ClrScr;

WriteLn('Введите координаты точки А:');

Write('x = '); ReadLn(xA); Write('y = '); ReadLn(yA);

38

WriteLn('Введите координаты точки B:');

Write('x = '); ReadLn(xB); Write('y = '); ReadLn(yB); WriteLn('Введите координаты точки C:');

Write('x = '); ReadLn(xC); Write('y = '); ReadLn(yC); DistA := sqrt(sqr(xA) + sqr(yA));

DistB := sqrt(sqr(xB) + sqr(yB)); DistC := sqrt(sqr(xC) + sqr(yC)); WriteLn; Write('Ответ : ');

If (DistA < DistB) and (DistA < DistC) then WriteLn( 'Это точка А.')

else If (DistB < DistC)

then WriteLn('Это точка B.') else WriteLn('Это точка C.');

ReadLn;

end.

Пример 4.2: Вычислить выражение:

 

 

2

если x

< 0

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

f (x) =

x если x > 0

 

 

 

 

 

 

 

 

 

 

 

10 иначе

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 4.2 Система тестов

Номер

 

Данные

 

Результат

 

 

 

 

 

 

 

теста

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.

 

 

2

 

 

 

2

 

 

 

 

 

 

 

2.

 

 

-2

 

 

 

4

 

 

 

 

 

 

 

3.

 

 

0

 

 

 

10

 

 

 

 

 

 

 

Листинг 4.2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Var

x, f:double;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

begin

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Write(‘x=’);

 

 

 

 

 

 

 

 

 

 

 

Readln(x);

 

 

 

 

 

 

 

 

 

 

 

if x>0 then f:=x else

 

 

 

 

 

 

 

 

if x<0 then f:=sqr(x)

else f:=10;

 

 

 

 

 

 

 

 

 

Writeln(‘f=’,f:7:2);

 

Рис. 4.1 Блок-схема решения примера 4.2

end.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

При использовании неполной развилки для решения подобных задач имеются недостатки:

-Теряется производительность, т. к. программа проверяет каждый оператор IF.

-Возможны логические ошибки, например изменение значения переменной, влияющей на одно из последующих условий.

39

13.2Реализация алгоритмов с ветвлениями средствами C#

Вязыке программирования C# также имеются полная и не полная развилки, которые выглядят соответственно как:

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

Причем наличие символа «;» перед else обязательно. if (выражение) оператор;

В качестве примера рассмотрим нахождение максимального значения из 3-х чисел. В этом примере дополнительно покажем, как можно реализовать многократное тестирование приложения без перезапуска.

Пример 4.3: Найти максимум среди 3-х чисел:

Листинг 4.3

//Метод ввода исходных данных и расчета static void solve()

{

Console.Write("Введите 1-ю переменную "); double x = double.Parse(Console.ReadLine()); Console.Write("Введите 2-ю переменную "); double y = double.Parse(Console.ReadLine()); Console.Write("Введите 3-ю переменную "); double z = double.Parse(Console.ReadLine()); double max = x;

if (max < y) max = y; if (max < z) max = z;

Console.WriteLine("Максимум={0:f3}", max);

}

//Метод Main static void Main()

{

do

{

Console.Clear(); solve();

Console.Write("Повторить, Y/N?"); ConsoleKeyInfo cki = Console.ReadKey(); char ch = char.ToUpper(cki.KeyChar);

if (ch.CompareTo('N') == 0) return; } while (true);

}

Решение задачи из примера 4.2 средствами C#

Листинг 4.4

static void solve()

{

Console.Write("Введите x=");

40

double x = double.Parse(Console.ReadLine()); double f = 0;

if (x > 0) f = x;

else if (x < 0) f = x * x; else f = 10;

Console.WriteLine("f({0:f3})={1:f3}", x, f);

}

Метод Main аналогичен листингу 4.3

13.3 Задания к лабораторной работе №2

Задание 2.1 Текстовые задачи на использование развилок

1.Даны три действительных числа. Возвести в квадрат те из них, значения которых неотрицательны, и в четвертую степень — отрицательные.

2.Даны две точки А(х1, у1) и В(х2, у2). Составить алгоритм, определяющий, которая из точек находится ближе к началу координат.

3.Даны два угла треугольника (в градусах). Определить, существует ли такой треугольник, и если да, то будет ли он прямоугольным.

4.Даны действительные числа Х и У, не равные друг другу. Меньшее из этих двух чисел заменить половиной их суммы, а большее — их удвоенным произведением.

5.На плоскости X0У задана своими координатами точка А. Указать, где она расположена (на какой оси или в каком координатном угле).

6.Даны целые числа T, N. Если числа не равны, то заменить каждое из них одним и тем же числом, равным большему из исходных, а если равны, то заменить числа нулями.

7.Подсчитать количество отрицательных среди чисел А, B, С.

8.Подсчитать количество положительных среди чисел А, B, С.

9.Подсчитать количество целых среди чисел А, B, С.

10.Определить, делителем, каких чисел А, B, C является число K.

11.Услуги телефонной сети оплачиваются по следующему правилу: за разговоры до А минут в месяц — В руб., а разговоры сверх установленной нормы оплачиваются из расчета С руб. за минуту. Написать программу, вычисляющую плату за пользование телефоном для введенного времени разговоров за месяц.

12.На экране высвечивается вопрос «Кто ты: мальчик или девочка? Введи Д или М». В зависимости от ответа на экране должен появиться текст «Мне нравятся девочки!» или «Мне нравятся мальчики!».

13.Грузовой автомобиль выехал из одного города в другой со скоростью v1 км/ч. Через t ч в этом же направлении выехал легковой автомобиль со

41

скоростью v2 км/ч. Составить программу, определяющую, догонит ли легковой автомобиль грузовой через t1 ч после своего выезда.

14.Перераспределить значения переменных Х и У так, чтобы в Х оказалось большее из этих значений, а в У — меньшее.

15.Определить правильность даты, введенной с клавиатуры (число — от 1 до 31, месяц — от 1 до 12). Если введены некорректные данные, то сообщить об этом.

16.Составить программу, определяющую результат гадания на ромашке — «любит—не любит», взяв за исходное данное количество лепестков n.

17.Написать программу — модель анализа пожарного датчика в помещении, которая выводит сообщение «Пожароопасная ситуация», если температура в комнате превысила 60°С.

18.Рис расфасован в два пакета. Масса первого — M кг, второго — N кг. Составить программу, определяющую:

а) какой пакет тяжелее — первый или второй; б) массу более тяжелого пакета.

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

20.Составить программу, определяющую, пройдет ли график функции

у= aх2 + bх + с через заданную точку с координатами (m, n).

21.К финалу конкурса лучшего по профессии «Специалист электронного офиса» были допущены трое: Иванов, Петров, Сидоров. Соревнования проходили в три тура. Иванов в первом туре набрал m1 баллов, во втором — n1,

втретьем — p1. Петров — m2, n2, р2 соответственно: Сидоров — m3, n3, p3. Составить программу, определяющую, сколько баллов набрал победитель.

22.Написать программу-фильтр, которая при нажатии любых клавиш выводит на экран только буквы и цифры, при этом, указывая, что выводится: буква или цифра.

23.Написать программу нахождения суммы большего и меньшего из

трех чисел.

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

25.Найти max{min(a, b), min(c, d)}.

26.Даны три числа А, B, С. Определить, какое из них равно D. Если ни одно не равно D, то найти max(D—A, D—B, D—C).

27.Даны четыре точки A1(x1 ,y1), A22,y2), А3(x33), А444). Определить, будут ли они вершинами параллелограмма.

42

28.Даны три точки А(х11), В(х22) и С(х33). Определить, будут ли они расположены на одной прямой. Если нет, то вычислить <ABC.

29.Даны действительные числа А, B, С. Удвоить эти числа, если А > B

>С, и заменить их абсолютными значениями, если это не так.

30.На оси ОХ расположены три точки А, B, С. Определить, какая из точек B или С расположена ближе к А.

43

Задание 2.2 Вычисление значений функций

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 4.3

x2 3x + 9, если x 3

x 2 +3x +9, если x 3

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1. F (x) =

 

 

 

 

 

 

 

 

 

 

 

 

,

 

если x > 3

2. F (x) =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,

 

если

x < 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

3

 

 

+

 

6

 

 

 

 

x

 

3

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9,

 

 

если

x ≤ −3

 

 

 

 

 

0,

 

 

 

если

x 1

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3. F(x) =

 

 

 

 

 

 

 

 

 

,

 

если

x > −3

4. F(x) =

 

 

 

 

 

 

 

 

,

 

 

 

 

если

x >1

 

 

 

2

 

 

+1

 

 

 

 

 

3

 

 

+ 6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3x +9,

 

 

 

если

x 7

 

 

3x 9, если

x 7

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5. F (x) =

 

 

 

 

 

 

 

,

 

если x > 7

6. F(x) =

 

 

 

 

 

 

 

 

 

 

,

 

 

если

x > 7

 

x 7

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x 2 + x 9, если

x 8

x 2 +4x +5, если

x 2

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7. F(x) =

 

 

 

 

 

 

 

 

 

 

 

 

,

если

x <8

8. F(x) =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

, если

x > 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

4

6

 

2

 

 

+4x

+5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

x2 ,

 

 

 

если 0 x 3

 

 

x2 x, если 0 x 1

9. F(x) =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10. F(x) =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4, если x > 3 или x < 0

 

 

x2 sin(πx2 ), иначе

 

4x2 + 2x 19, если x ≥ −3,5

 

x 2 +3x +9, если x 3

11. F(x) =

 

 

 

 

 

 

 

 

 

 

 

 

 

2x

 

 

 

 

 

 

 

12. F(x) =

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

, если x < −3,5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

, если

x > 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4x +1

 

 

 

 

 

 

 

 

x

2

 

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

3x + 9, если

x > 3

 

 

x3 +9, если

x 13

13. F (x) =

 

 

 

 

 

 

x3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14. F(x) =

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

, если

x 3

 

 

 

 

 

 

 

 

 

 

 

, если x >13

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

+

 

8

 

 

 

 

x

 

+1

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

45x 2 +5, если

x > 3,6

 

 

 

 

 

x 4 + 9, если

x <3,2

15. F(x) =

 

 

 

 

 

 

5x

 

 

 

 

 

 

 

 

 

 

 

 

 

16. F(x) =

 

 

 

 

54x4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

, если

x 3,6

 

 

 

 

 

 

 

 

 

, если

x 3,2

 

 

 

 

 

 

 

 

 

 

 

2

 

+

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5x2 + 7

 

10x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

3x 9, если x > 3

 

 

x

2

 

 

+3x +9, если

x 3

 

1,2x

 

 

 

 

 

 

 

 

 

 

17. F(x) =

 

 

 

 

 

 

 

 

 

12,1

 

 

 

 

 

 

 

18. F(x) =

 

 

 

 

 

sin x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,

если

x 3

 

 

 

 

 

 

 

 

,

если

x > 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2x

2

+

1

 

 

 

 

x

2

9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

cos 2x +9, если

x 9

 

ln x + 9, если

x > 0

19. F(x) =

 

 

 

 

 

 

 

cos x

 

 

 

 

 

 

 

 

20. F(x) =

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,

если

x < 9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,

если

x 0

 

 

 

 

x 9

 

 

 

 

x

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x2 1,1x +9,

если x 3

 

 

 

9 x,

 

 

если

x > −1,1

21. F(x) =

 

 

 

 

 

 

ln(x +3)

 

 

 

 

 

22. F(x) =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

, если x > 3

 

sin 3x

,

 

 

если

x < −1,1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

+

1

 

 

 

 

 

 

 

 

 

 

 

x

2

+9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

44

Продолжение таблицы 4.3

 

x2 , если

x ≥ −3

x2 9, при

x = −3 или x = 3

 

2

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

23. F(x) =

 

,

если

x < −3

24. F(x) =

 

 

 

 

 

 

, иначе

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

2

 

+9

 

 

 

9

 

 

 

x2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0, если x 0

 

4x +16, если

x ≥ −4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

3

 

 

 

 

 

 

 

 

25. F(x) = x, если 0 < x 1

26. F(x) =

 

 

 

 

, если

x < −4

 

 

2

 

 

 

x

4

, если x

>1

x

+8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ln x + 4, если

x 2

 

x3 , если

 

x 2

 

 

 

 

 

x

 

 

 

 

 

 

x

 

 

 

 

 

 

 

27. F(x) =

 

 

 

 

, если

x > 2

28. F(x) =

3

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

,

если

x > 2

 

8

 

3

 

 

 

 

 

x

 

 

 

 

 

 

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

x4 +9, если

x 3

4x2 + 2x 19, если x 1

 

 

 

54x4

 

 

 

 

 

 

 

 

2x

 

 

 

 

 

29. F(x) =

 

 

 

,

если x > 3

30. F(x) =

 

 

 

,

если x <1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4x +

4

 

5x2 +

45

 

 

 

 

 

 

 

 

 

 

 

 

45