Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
ЛАБОРАТОРНАЯ РАБОТА №3 «АЛГОРИТМЫ С ВЕТВЛЕНИЯМИ»
Цель работы: Сформировать навыки по решению задач, используя алгоритмы с ветвлениями. Закрепить навыки по использованию простых типов данных изучаемого языка программирования.
Пояснения и примеры к лабораторной работе
Оператор IF реализует алгоритмическую конструкцию РАЗВИЛКА и изменяет порядок выполнения операторов в зависимости от истинности или ложности некоторого условия. Существует два варианта оператора:
if S then А
else В; //Полная развилка
и неполная развилка:
if S then А;, где:
S - некоторое логическое выражение, истинность которого проверяется;
А - оператор, который выполняется, если выражение S истинно;
В - оператор, который выполняется, если выражение S ложно.
Во втором случае, если условие S ложно, не выполняется никаких действий.
Так как условный оператор IF является единым предложением, ни перед then, ни перед else точку с запятой ставить нельзя.
Пример использования оператора IF:
a) Развилка неполная:
if X < 0 then X := -Х; //Все числа становятся положительными}
б) Развилка полная:
if X < 1.5 then Z :=X + Y else Z:= 1.5;
Пример 1.1 Даны три точки на плоскости. Определить, какая из них ближе к началу координат.
Таблица 1.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" |
Листинг 1.1
Var xA, yA, xB, yB, xC, yC, DistA, DistB, DistC : Real;
BEGIN ClrScr;
WriteLn('Введите координаты точки А:');
Write('x = '); ReadLn(xA); Write('y = '); ReadLn(yA);
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.
Пример 1.2: Вычислить выражение:
Таблица 1.2 Система тестов
Номер теста |
Данные |
Результат |
x |
||
|
2 |
2 |
|
-2 |
4 |
|
0 |
10 |
Листинг 1.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);
end.
Рис. 1.1 Блок-схема решения примера 2.2
При использовании неполной развилки для решения подобных задач имеются недостатки:
Задание 1.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 ч в этом же направлении выехал легковой автомобиль со скоростью 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(DA, DB, DC).
27. Даны четыре точки A1(x1 ,y1), A2(х2,y2), А3(x3,у3), А4(х4,у4). Определить, будут ли они вершинами параллелограмма.
28. Даны три точки А(х1,у1), В(х2,у2) и С(х3,у3). Определить, будут ли они расположены на одной прямой. Если нет, то вычислить <ABC.
29. Даны действительные числа А, B, С. Удвоить эти числа, если А > B > С, и заменить их абсолютными значениями, если это не так.
30. На оси ОХ расположены три точки А, B, С. Определить, какая из точек B или С расположена ближе к А.
Задание 1.2 Вычисление значений функций
Вычислить значение функции таблица 1.3:
Таблица 1.3
1. |
2. |
3. |
4. |
5. |
6. |
7. |
8. |
9. |
10. |
11. |
12. |
13. |
14. |
15. |
16. |
17. |
18. |
|
20. |
21. |
22. |
Продолжение таблицы 1.3
23. |
24. |
25. |
26. |
27. |
28. |
29. |
30. |