Сделай Сам Свою Работу на 5

Разветвляющиеся алгоритмы





Базовая структура ВЕТВЛЕНИЕ

Такая форма организации действий, при которой в зависимости от выполнения или невыполнения некоторого условия совершается либо одна, либо другая последовательность действий. Каждый из путей ведет к общему выходу. Структура ветвление существует в четырёх основных вариантах

§ если – то;

§ если – то – иначе;

· выбор;

· выбор – иначе.

1. если – то

Если – то – иначе

 
 


Выбор

 


.

.

.

       
   
 
 


Выбор – иначе

       
   
 
 

 



Оператор ВЕТВЛЕНИЯ

Оператор ветвления (условный оператор)имеет следующий формат:

If <логическое выражение> then <оператор 1> else <оператор 2>;

Если логическое выражение, выступающее в качестве условия ветвления, принимает значение False, то выполняется оператор 2, если True – оператор 1.

Если в качестве оператора должна выполниться серия операторов, то они заключаются в операторные скобки Begin – End;

Неполная форма оператора ветвления:

If <логическое выражение> then <оператор >;



Занятие 1. Разветвляющиеся алгоритмы. Оператор условия If.

Разветвляющиеся алгоритмы

До сих пор Вы использовали линейные алгоритмы, т.е. алгоритмы, в которых все этапы решения задачи выполняются строго последовательно. Сегодня Вы познакомитесь с разветвляющимися алгоритмами.

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

Признаком разветвляющегося алгоритма является наличие операций проверки условия. Различают два вида условий – простые и составные.

Простым условием (отношением) называется выражение, составленное из двух арифметических выражений или двух текстовых величин (иначе их еще называют операндами), связанных одним из знаков:

< - меньше, чем...

> - больше, чем...

<= - меньше, чем... или равно

>= - больше, чем... или равно

<> - не равно

= - равно

Например, простыми отношениями являются следующие:



x-y>10; k<=sqr(c)+abs(a+b); 9<>11; ‘мама’<>‘папа’.

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

если х=25, у=3, то отношение x-y>10 будет верным, т.к. 25-3>10

если х=5, у=30, то отношение x-y>10 будет неверным, т.к. 5-30<10

Проверьте верность второго отношения при подстановке следующих значений:

а) k=5, a=1, b=-3, c=-8

b) k=65, a=10, b=-3, c=2

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

Определение. Переменная, которая может принимать одно из двух значений: True (правда) или False (ложь), называется булевой (логической) переменной. Например,

К:=True;

Flag:=False;

Second:=a+sqr(x)>t

Рассмотрим пример.

Задача. Вычислить значение модуля и квадратного корня из выражения (х-у).

Для решения этой задачи нужны уже знакомые нам стандартные функции нахождения квадратного корня - Sqr и модуля - Abs. Поэтому Вы уже можете записать следующие операторы присваивания:

Koren:=Sqrt(x-y);

Modul:=Abs(x-y).

В этом случае программа будет иметь вид:

Program Znachenia;

Uses

Crt;

Var

x, y : integer;

Koren, Modul : real;

Begin

ClrScr;

write (‘Введите значения переменных х и у через пробел ‘);

read (x, y);

Koren:=Sqrt(x-y);

Modul:=Abs(x-y).

write (‘Значение квадратного корня из выражения (х-у) равно ‘);

write (‘Значение модуля выражения (х-у) равно ‘);

readln;

End.

Казалось бы задача решена. Но мы не учли области допустимых значений для нахождения квадратного корня и модуля. Из курса математики Вы должны знать, что можно найти модуль любого числа, а вот значение подкоренного выражения должно быть неотрицательно (больше или равно нулю).



Поэтому наша программа имеет свою допустимую область исходных данных. Найдем эту область. Для этого запишем неравенство х-у>=0 и решив его получим х>=у. Значит, если пользователем нашей программы будут введены такие числа, что при подстановке значение этого неравенства будет равно True, то квадратный корень из выражения (х-у) извлечь можно. А если значение неравенства будет равно False, то выполнение программы закончится аварийно.


Задания: Часть 1

1. Из двух данных вещественных чисел выбрать наибольшее.

2. Большее из двух данных вещественных чисел возвести в квадрат, а меньшее – в куб.

3. Написать программу, проверяющую, принадлежит ли число, введенное с клавиатуры, интервалу [0,5].

4. Написать программу решения квадратного уравнения ах2 + bх + с = 0.

5. Даны целые числа а, b, с. Если а b c, то все числа заменить их квадратами, если а > b > c , то каждое число заменить меньшим из них, в противном случае сменить знак каждого числа.

6. Дано двузначное число. Определить:

а) является ли сумма его цифр двузначным числом:

б) больше ли числа а сумма его цифр.

7. Дано двузначное число. Определить:

а) кратна ли трем сумма его цифр:

б) кратна ли сумма его цифр числу а.

8. Дано трехзначное число. Выяснить, является ли оно палиндромом («перевертышем»), т. е. таким числом, десятичная запись которого читается одинаково слева направо и справа налево.

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

10. Даны четыре точки А111), А222), А333), А444). Определить, будут ли они вершинами параллелограмма.

11. Для данного х вычислить значение функции:

9 , если х -3
F(x) = , если х > -3

12. Даны три числа. Написать программу для подсчета количества чисел, равных нулю.

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

14. Вывести на экран номер четверти, которой принадлежит точка с координатами (х,у), при условии, что х≠0 и у≠0.

15. Год является високосным, если его номер кратен 4, однако из кратных 100 високосными являются лишь кратные 400 (например, 1700, 1800, и 1900 – невисокосные года, 2000 – високосный). Дано натуральное число n. Определить, является ли високосным год с таким номером.


Задания: Часть 2

 

1. Если целое число М делится нацело на целое число N, то вывести на экран частное от деления, в противном случае вывести сообщение М на N нацело не делится.

2. Запишите условный оператор, в котором значение переменной с вычисляется по формуле a+b, если а – нечетное и a*b, если а – четное.

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

у=

4. Написать программу для подсчета суммы только положительных из трех данных чисел.

5. Даны три числа. Написать программу для подсчета количества чисел, равных нулю.

6. Напишите программу, упростив следующий фрагмент программы:

if a>b then c:=1;

if a>b then d:=2;

if a<=b then c:=3;

if a<=b then d:=4.

7. Каким будет значение переменной а после выполнения операторов:

a:=3;

if a<4

then

begin

Inc(a,2);

Inc(a,3);

end;

8. Найти количество положительных (отрицательных) чисел среди четырех целых чисел A, B, C, D.

9. Составьте программу, которая уменьшает первое введенное число в пять раз, если оно больше второго введенного числа по абсолютной величине.

10. Для данного значения X вычислить значение функции, которая определяется следующим образом:

Y=sin(x), если x >=1

Y=cos(x), если x < 1

11. Определить является ли введённое число чётным.

12. Компьютер спрашивает: "Что сегодня нужно всем?" и если получает ответ ЭВМ, то пишет "Ну, конечно ЭВМ!", иначе "Это тоже нужно всем, но нужнее ЭВМ!"

13. Написать программу, по которой компьютер приветствовал бы только своего хозяина, а при попытке ввести какое-либо другое имя спрашивал бы: "А где (например) Вася?"

14. Написать программу, определяющую, есть ли в введенном числе дробная часть.

15. Написать программу, рисующую круг в случае введения пользователем числа 1 и квадрат во всех других случаях.


3.5 Оператор ВЫБОРА

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

 

 

Формат оператора выбора:

Case K of

А1 : <оператор 1>;

А2 : <оператор 2>;

. . .

АN : <оператор N>

else <оператор N+1>

end;

Здесь К – выражение-селектор, которое может иметь только простой порядковый тип (целый, символьный, логический). А1,…,AN – константы тоже же типа, что и селектор, выполняющие роль меток ветвей. Исполнение оператора начинается с вычисления выражения К, полученное значение сравнивается с константами (метками) и выполняется соответствующий оператор. Если ни одна из меток не совпала со значением К, то выполняется оператор после слова else.

Возможно использование неполного оператора выбора без ветви else. Метки ветвей также могут быть заданы списком или интервалом.

Пример 3. В старояпонском календаре был принят двенадцатилетний цикл. Годы внутри цикла носили названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, петуха, собаки и свиньи. Написать программу, которая по номеру года определяет его название в старояпонском календаре, если известно, что 1996 г. был годом крысы – началом очередного цикла.

Решение

Поскольку цикл является двенадцатилетним, поставим в соответствии название года остатку от деления номера этого года на 12. При этом учтем, что остаток от деления 1996 на 12 равен 4.

 

Program Goroskop;

Var Year : integer;

Write(‘Введите год’) ; readln (Year);

caseyear mod 12 of

0 : Writeln (‘год Обезьяны’);

1 : Writeln (‘год Петуха’);

2 : Writeln (‘год Собаки’);

3 : Writeln (‘год Свиньи’);

4 : Writeln (‘год Крысы’);

5 : Writeln (‘год Коровы’);

6 : Writeln (‘год Тигра’);

7 : Writeln (‘год Зайца’);

8 : Writeln (‘год Дракона’);

9 : Writeln (‘год Змеи’);

10 : Writeln (‘год Лошади’);

11 : Writeln (‘год Овцы’);

 

end;

End.

Задания:

1. Написать программу, которая по номеру дня недели (натуральному числу от 1 до 7) выдает в качестве результата количество уроков в нашем классе в этот день.

2. Написать программу, которая бы по введенному номеру единицы измерения (1 – дециметр, 2 – километр, 3 –
метр, 4 – миллиметр, 5 - сантиметр) и длине отрезка L выдавала бы соответствующее значение длины отрезка в метрах.

3. Дано натуральное число N. Если оно делится на 4, вывести на экран ответ N= 4k (где k – соответствующее частное); если остаток от деления на 4 равен 1, N=4k+1; если остаток от деления на 4 равен 2, N=4k+2; если остаток от деления на 4 равен 3, N=4k+3.

Например, 12 = 4 х 3, 22 = 4 х 5 + 2

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

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.