Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Программирование алгоритмов разветвляющейся структуры
Вспомним вначале, что алгоритмом ветвящейся структуры называется такой алгоритм, в котором выбирается один из нескольких возможных путей (вариантов) вычислительного процесса. Каждый подобный путь называется ветвью алгоритма. Признаком разветвляющегося алгоритма является наличие операций условного перехода, когда происходит проверка истинности некоторого логического выражения (проверяемое условие), и в зависимости от истинности или ложности проверяемого условия для выполнения выбирается та или иная ветвь алгоритма. Для программной реализации этого типа алгоритмов в языке программирования Pascal можно использовать три оператора: 1. Условный оператор (оператор условного перехода). 2. Оператор выбора (оператор варианта). 3. Оператор безусловного перехода. Рассмотрим все эти операторы подробнее. Оператор безусловного перехода имеет вид: GOTO < метка> GOTO — зарезервированное слово (перейти на метку) < метка> — метка Метка в Турбо Паскале — это произвольный идентификатор, позволяющий именовать некоторый оператор про- граммы и таким образом ссылаться на него. В качестве меток допускается использовать целые числа без знака. Метка располагается непосредственно перед помечаемым оператором и отделяется от него двоеточием. Перед тем как использовать метку в программе, она должна быть описана. Описание меток состоит из зарезервированного слова LABEL (метка), за которым следует список меток: Label 1оор, 1Ы; Begin goto lbl; loop: ... lbl:... goto loop; End. Действие оператора GOTO состоит в передаче управления соответствующему меченному оператору. Правила использования меток: - метка, на которую ссылается оператор GOTO, должна быть описана в разделе описаний - метки, описанные в процедуре (функции) локализуются в ней. Условный оператор. Условный оператор позволяет проверить некоторое условие и в зависимости от результатов проверки выполнить то или иное действие. Структура условного оператора: IF < условие> THEN < оператор 1> ELSE < оператор 2>; IF, THEN, ELSE — зарезервированные слова (если, то, иначе) < условие> — выражение логического типа < оператор 1>, < оператор 2> — операторы языка Турбо Паскаль. Часть ELSE < оператор 2> условного оператора может быть опущена.
Тогда при значении true выражения, стоящего в условии, выполняется < оператор 1>, в противном случае этот оператор пропускается. Пример. Написать программу расчета функции: [cos2*, при 0< х< 2 [1-sinx, иначе. Решение: Program wetw; Vary, x: real; Begin writeln('x='); readln(x); {ввод х} if (x> 0)and(x< 2) then y: =Sqr(cos(x)) else y: =1-sin(sqr(x)); {вычисление значения у} writeln('y(', x:?!: 2, ')=', y: 8: 2); {вывод значения у на экран} readln; {пауза} End. Пример. Написать программу, которая в переменную max записывает наибольшее из двух чисел х и у. \х, если х > у max = < " [у, если у > х Решение: Program wetw2; Var max, x, y: real; Begin write('x='); readln(x); {вводх} write('y='); readln(y); {ввод у} max: =y; if x> y then max: =x; { если х> у max: =x, иначе значение max не меняется} writeln('max=', max: 8: 2); {вывод значение переменной max на экран} Readln; {пауза} End. Вложенные операторы условия. Если < оператор 1> или < оператор 2> является, в свою очередь, условным оператором, то такая конструкция называется вложенным условным оператором. Пример.
х + 3, если х < О х2, если 0< х< 4 ех~6, если х> 4 Решение: Program Gg; Var x, y: real; Begin Write('x='); Readln(x); if x< 0 then y: =x+3 else if x> 4 then y: =exp(x-6) else y: =sqr(x); writeln('y=', y: 8: 2); Readln; End. Оператор выбора (оператор варианта) . Условный оператор при выполнении программы позволяет выбрать одно из двух возможных действий. Если же необходимо выполнить много взаимоисключающих проверок, то удобнее воспользоваться оператором выбора (варианта). Общий вид оператора: CASE < селектор> OF < список меток варианта >: < оператор1 >; < список меток варианта >: < оператор2 >;
7. Информатика < список меток варианта >: < операторЗ >; ELSE < onepaTopN> END; Селектор представляет собой выражение скалярного типа (но не вещественного). Выполнение оператора варианта начинается с вычисления значения селектора. Затем для исполнения выбирается оператор, одна из меток которого совпадает с полученным значением. После выполнения этого оператора (он может быть простым или составным) управление передается на оператор, следующий за оператором варианта. Если же значение селектора не совпало ни с одной из меток, то выполняется оператор, стоящий после служебного слова ELSE. Вообще говоря, ветвь ELSE может и отсутствовать. Рассмотрим пример использования оператора варианта. Заметим сразу, что оператор варианта удобно использовать для ввода и вывода значений перечисляемых скалярных типов данных. Например, в следующем фрагменте программы с внешнего носителя вводится порядковый номер объекта из списка значений перечисляемого типа COLOR (цвет). Оператор CFSE присваивает соответствующее значение переменной CLR. Аналогично осуществляется вывод значений CLR при помощи оператора варианта. Program cas; Type color = (red, blue, black); Varx: integer; Clr: color; Begin Write ('Введите порядковый номер /0-1-2/ => '); Readln (x); Case x of 0: clr: =red; 1: clr: =blue; 2: clr: =black; else writeln ('Неправильный ввод') 194 end; Write ('цвет = '); Case clr of 0: writeln ('red'); 1: writeln ('blue'); 2: writeln ('black'); end; End. Протокол работы программы: Введите порядковый номер /0-1-2/ => 2 цвет = black Выводы_____________________________________ Алгоритмом ветвящейся структуры будем называть такой алгоритм, в котором выбирается один из нескольких возможных путей (вариантов) вычислительного процесса. Каждый подобный путь называется ветвью алгоритма. Для реализации разветвляющихся алгоритмов на языке программирования Pascal используются операторы: 1. Оператор безусловного перехода — GOTO < метка>; 2. Условный оператор — IF < условие> THEN < опе-ратор 1> ELSE < оператор 2>; 3. Оператор выбора (оператор варианта): < список меток варианта >: < оператор1 >; < список меток варианта >: < оператор2 >; < список меток варианта >: < операторЗ >; ELSE < операторЫ> Контрольные вопросы 1. Ниже приведены блок-схемы некоторых алгоритмов. Укажите, какая из вышеприведенных блок-схем является блок-схемой алгоритма ветвящейся структуры? 2. Для реализации алгоритмов ветвящейся структуры а) GOTO < метка>; б) If < условие> then < действие> else; г) case < параметр> of < метка1>: < действие1>; < метка- Один из пунктов" Вдесь лишний. Укажите, какой именно. 3. Метка в Турбо Паскале — это произвольный иден Верно ли данное высказывание? 4. Выберите неправильные операторы из списка: а) if a> b then; б) if x and y then s: =s+l; else s; =s-l; в) if k< > m then k: =m; д) if (a< b)and с then c: =false; е) If 2< x or x< 5 then d: =0 else d: =l; ж) if (a=b) and p then p: =p+105; 5. Часть ELSE < оператор 2> условного оператора не Верно ли данное высказывание? 6. Условный оператор при выполнении программы по Верно ли данное высказывание? 7. Оператор выбора при выполнении программы позво Верно ли данное высказывание? Ответы _________ _^
1. Правильный ответ 2. Правильный ответ 3. Правильный ответ 4. Правильный ответ 5. Правильный ответ 6. Правильный ответ 7. Правильный ответ Задачи и упражнения______________________ Попробуйте самостоятельно выполнить следующую практическую работу. Задание Ml. Дана программа, запрашивающая у пользователя его пол и выводящая на экран сообщение «мальчики — хорошие студенты», если нажата клавиша «М» или сообщение «девушки — хорошие студенты», если нажата клавиша «Ж». Если нажата любая другая клавиша, то выводится сообщение о неправильном вводе. Протестировать эту программу на компьютере и записать протокол ее работы. Текст программы: Program Priml; uses CRT; Var c: char; {символьная переменная} Begin CLRSCR; Write ('Введите ваш пол —'); Readln (с); Case с of 'M': writeln (мальчики — хорошие студенты); 'Ж': writeln (девочки — хорошие студенты);
else write ('неправильный ввод'); readln; end. Протокол работы программы: Введите ваш пол — та девочки — хорошие студенты Задание №2. Составить программу нахождения действительных корней квадратного уравнения ах2 + Ъх - с. Примечание. Действительные корни квадратного уравнения находятся по формуле: -b±ylb2 -4ас При этом могут возникнуть три основных случая: 1. D = Ъ2 - 4ас > 0, тогда оба корня уравнения действи _-Ь + ыЪг -Аас _-Ь-у1Ьг -Аас 2. D = Ъ2 — Аас = 0, тогда оба корня уравнения действи -Ъ х, = — 1 2а 3. D = Ъ2 - 4ас < 0^ тогда уравнение не имеет действи Список используемых переменных: исходные данные; а, Ь, с — коэффициенты уравнения; выходные данные; XI, Х2 — корни уравнения или сообщение на экране об отсутствии действительных корней. Текст программы: Program Prim2; uses CRT; const Str='HeT действительных корней'; Vara, b, c, Diskr, x1, x2: real; Selektor: integer; Begin CLRSCR; Write ('Введите коэффициент при старшей степени'); Readln (a); Write ('Введите коэффициент при младшей степени'); Readln (b); Write ('Введите свободный член'); Readln (с); Diskr: =sqr(b)-4*a*c; If Diskr> 0 then Selektor: =1; If Diskr=0 then Selektor: =2; If Diskr< 0 then Selektor: =3; Case Selektor of 1: begin writeln ('два различных действительных корня'); x1: =sqr((-b)+diskr)/(2*a); x2: =sqr ((-b)-diskr) / (2*a); writeln ('x1= ', x1); writeln ('x2=', x2); end; 2: begin writeln ('два одинаковых действительных корня'); x1: =(-b)/(2*a); х2: =х1; writeln ('x1 = х2 = ', х1); end; 3: writeln (Str); readln; end. Отладочный пример: 1. Пусть а = 2, Ъ = 3, с = 6. В этом случае D = Ь2 - Аас = = 9-4*2*6 = 9-48 = -39< 0, тогда оба корня уравнения мнимые, т. е. Нет действительных корней. 2. Пусть а - 2, b = 5, с = 0. В этом случае D = Ь2 - 4ас = = 25 - 4 * 2 * 0 = 25 - 0 = 25 > 0, оба корня уравнения действительны и различаются между собой, т. е. -5 + 50 _-5-5_-10_ 1 2*2 4 х 2*2 4 Протокол работы программы: 1. Введите коэффициент при старшей степени 2 Введите коэффициент при младшей степени 3
Введите свободный член 6 Нет действительных корней 2. Введите коэффициент при старшей степени 2 Введите коэффициент при младшей степени 3 Введите свободный член 6 два различных действительных корня xl = О х2 = -2, 5 Анализ проделанной работы: программа работает верно. Популярное:
|
Последнее изменение этой страницы: 2016-06-04; Просмотров: 3355; Нарушение авторского права страницы