69131

Алгоритмічний вибір альтернатив. Вкладеність конструкцій вибору

Лекция

Информатика, кибернетика и программирование

Під час програмування деяких розгалужень виникає потреба у використанні операторних блоків що розглядатимуться у розділі 3. У цьому ж розділі буде пояснено як орієнтуватися в коді великих програм що містять численну кількість конструкцій вибору та операторних блоків.

Украинкский

2014-09-30

48 KB

1 чел.

Лекція 8.Тема:Алгоритмічний вибір альтернатив. Вкладеність конструкцій вибору.

                        Операторний блок.Поліваріантний вибір.

План:

1. Алгоритмічний вибір альтернатив

2. Вибір із двох альтернатив

3. Вкладеність конструкцій вибору

4. Операторний блок

1. Алгоритмічний вибір альтернатив

 Алгоритмічна конструкція, що дозволяє виконавцеві алгоритму вибрати ту чи іншу послідовність дій залежно від певних умов, називається розгалуженням або конструкцією вибору альтернатив. У даному розділі розглянуто механізми використання цієї алгоритмічної конструкції у програмуванні. Є такі різновиди конструкції вибору, як вибір з двох альтернатив і поліваріантний вибір. Вибір із двох альтернатив розглядатиметься у розділах 1 та 2, а поліваріантний вибір -у розділі 3. Під час програмування деяких розгалужень виникає потреба у використанні операторних блоків, що розглядатимуться у розділі 3. У цьому ж розділі буде пояснено, як орієнтуватися в коді великих програм, що містять численну кількість конструкцій вибору та операторних блоків.

2. Вибір із двох альтернатив

Алгоритмічна конструкція альтернативного розгалуження, або конструкція вибору з двох альтернатив, дозволяє виконавцеві алгоритму вибрати один із двох варіантів дій залежно від істинності деякої умови. У мові Pascal альтернативні розгалуження реалізуються умовним оператором (оператором розгалуження). Синтаксис умовного оператора є таким: if <умова> then <оператор1> [else <оператор2>];

Тут if, then, else - зарезервовані слова, що перекладаються як «якщо», «то», «інакше»; <умова> — довільний логічний вираз; <оператор1> і <оператор2> — довільні оператори.

Виконання умовного оператора починається з обчислення значення булевого виразу <умова>. Якщо цей вираз є істинним, то виконується <оператор1> і керування передається наступному за умовним оператору (<оператор2> пропускається). Якщо вираз <умова> є хибним, то <оператор1> пропускається, а виконується лише <оператор2> і на цьому дія умовного оператора вважається завершеною.

Зауважимо, що в синтаксисі умовного оператора фразу el se <оператор2> записано у квадратних дужках, а отже, ця фраза є необов'язковою. Скорочена форма умовного оператора (без фрази else) реалізує одно альтернативне розгалуження. Якщо вираз <умовам в одно альтернативному розгалуженні є істинним, то <опе-ратор1> виконується, якщо хибним — не виконується і на цьому дія умовного оператора вважається завершеною.

Нарешті, розглянемо детальніше умову, що записується після слова і f і являє собою певний логічний вираз. Нагадаємо, що логічний вираз може бути як окремим порівнянням або окремою булевою змінною, так і поєднанням порівнянь або булевих змінних за допомогою логічних операцій and, or та not. Наприклад, умова x<= x>= 5  мовою Pascal записується так: (х>« 0) and (х<= 5), а умова x<=0 або x>= 5 — так: (х <= 0) ог (х >= 5). Умови, записані за допомогою логічних операцій and та or, називаються складеними, а умови, записані без таких операцій, — простими.

Наведемо найпростіший приклад застосування оператора вибору. Припустимо, потрібно визначити, чи належить значення дійсної змінної х проміжку [0;1], і вивести відповідне повідомлення. Ці дії виконує такий фрагмент програми:

1f (х>=0) and (х<=1) then

write(x belongs to [0:1]')

else

write(x does not belong to [0:1]'):

3. Вкладеність конструкцій вибору

Гілки деякого розгалуження можуть містити інші розгалуження. У даному розділі для простоти розглянемо лише той випадок, коли одне розгалуження вкладене до гілки el se іншого. Зобразимо таку алгоритмічну конструкцію у вигляді блок-схе-ми (рис. 3.1) та наведемо синтаксис відповідного фрагменту Pascal-програми.

1f <умова1> then <оператор1>

else 1f <унова2> then <оператор2>

                             else <операторЗ>:

4. Операторний блок

Синтаксис умовного оператора, що його було розглянуто в розділі 3.1.1, дозволяв виконувати лише один оператор у разі істинності певної умови і лише один оператор у разі її хибності. Проте часто виникає потреба у розгалуженнях, гілки шов містять більше ніж одну інструкцію. В такому разі застосовують операторів блоки.

Операторний блок, або складений оператор, — це послідовність операторів, що розпочинається ключовим словом begin та завершується ключовим словом end (слова begin та end інколи називають операторкими дужками). Операторний блок може перебувати в будь-якому місці програми, де синтаксисом мови припускається наявність оператора. Синтаксис операторного блоку має такий вигляд:   

begin

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

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

end;          

Усередині операторного блоку можуть міститися довільні оператори, у тому числі й складені, вони виконуються у порядку запису. Використання операторних блоків у гілках then та else оператора розгалуження продемонструємо на прикладі програми, що обчислює корені квадратного рівняння.

Приклад

Необхідно знайти розв'язки квадратного рівняння ах2 + Ьх + с = 0, коефіцієнти якого є дійсними числами, що їх вводить користувач. Залежно від значень коефіцієнтів а, Ь, с та дискримінанта d=b2 - 4ас можливі такі результати: всі дійсні числа є коренями (а = 0, b = 0, с = 0), коренів немає (а = 0, b = 0, с  0), є один корінь (а = 0, b 0), є два різних дійсних корені (а 0, d > 0), два дійсних корені збігаються (а Ф 0, d = 0) або існує два комплексно-спряжених корені (а  0, d < 0). Отже, для коректного розв'язання даної задачі слід виконати декілька порівнянь із нулем коефіцієнтів рівняння та його дискримінанта. Ці порівняння можна виконувати у різній послідовності, і відповідно до цього можна складати різні алгоритми. Алгоритми розв'язання однієї задачі можуть відрізнятися за своєю ефективністю. Припустимо, що для даної задачі найефективнішим є той алгоритм, який мінімізує середню кількість порівнянь для довільного набору вхідних даних. Спробуємо побудувати такий алгоритм. Зауваживши, що перевірка умови а = 0? відбувається в усіх варіантах розв'язання, робимо висновок, що розгалуження за цією умовою слід виконувати найпершим, а перевірку всіх інших умов здійснювати на його гілках. У тому разі, коли а = 0, перевірка умови с = 0? є доцільною, лише коли b = 0, тому умову b = 0? слід перевіряти раніше, ніж умову с = 0?. Врахувавши ці міркування, запишемо алгоритм і програму розв'язання квадратного рівняння.

Алгоритм обчислення коренів квадратного рівняння

Увести коефіцієнти квадратного рівняння а, b,  с.

Якщо а <> 0, то виконати дії 2.1-2.4.

Обчислити дискримінант за формулою d = b2 - 4ас.

Якщо d > 0, то обчислити корені Х\ та х2 за наведеною нижче формулою
та вивести їх.

        Якщо d < 0, то вивести повідомлення «Корені комплексні».

Якщо d = 0, то вивести повідомлення про рівність двох коренів та обчис
лити їх значення за формулою х^2 = -Ь/2а.

3. Якщо а = 0, то виконати дії 3.1-3.3.

Якщо b  0, то обчислити й вивести значення -с/b.

Якщо b = 0 і с  0, то вивести повідомлення «Коренів немає».

Якщо b = 0 і с = 0, то вивести повідомлення «Усі дійсні числа є коренями».

Наведемо програмне розв’язання задачі обчислення коренів квадратного рівняння.

рrogram ехЗ_2:

var a.b.c.d:real;

xl.x2:real;

begin

writeln('solution of quadratic equation'); writeln('enter koefficients: a.b.c'):

readln(a.b.c); {ввести значення коефіцієнтів}

1fa<>0
then
begin
d:=sqr(b)-4*a*c: {обчислити дискримінант}

1f d>0

then

begin

xl:-(-b+sqrt(d))/(2*a):

x2:-(-b-sqrt(d))/(2*a):

writelnt ('xl=1.xl:6:2.' x2=',x2:6:2):

end

else

if d=0

then

writeln ('roots are equal: x=’, b/(2*a):6:2)

else

writeln ('complex roots') end

else

1f b<>0

then writeln (‘x=’, -c/b:6:2)

else

if c<>0

then writeln (' no roots’)

else writeln (‘all real numbers are the roots’);

end

У коді програми ехЗ_2 використано два операторних блоки, призначених для структуризації декількох умовних операторів. У більш складних програмах кількість і розмір вкладених один до одного умовних операторів та операторних блоків може стати на порядки вищою.

Контрольні питання

1. Алгоритмічний вибір альтернатив

2. Вибір із двох альтернатив

3. Вкладеність конструкцій вибору

4. Операторний блок


 

А также другие работы, которые могут Вас заинтересовать

44542. УТОМЛЕННЫЕ СОЛНЦЕМ, УНЕСЕННЫЕ ВЕТРОМ: суррогатное материнство в двух культурах 264 KB
  Этимология подтверждает эти отношения не хуже психоанализа: английское “mmmy†очевидно происходит от “mm†но русское няня которое кажется ни на что не похожим симметрично дядьке. РОДСТВО КРОВНОЕ И МОЛОЧНОЕ Романтизация Mmmy и няни в американской и русской культурах накладывалась на экономическую и сексуальную эксплуатацию обычную для обществ столь стратифицированных в сословных расовых и гендерных измерениях. Американская Mmmy чаще всего соединяла обе эти роли. Хотя в литературе и фильмах Mmmy чаще всего изображалась полной...
44543. ЧЕМ МУЖИКА КОРМИТЬ, ЛУЧШЕ РЕБЕНКА ВОСПИТЫВАТЬ ОДНОЙ: социальный портрет материнских семей 214.49 KB
  Основными факторами формирования неполных семей как известно являются разводы не компенсируемые последующим вступлением в брак или раздельное по разным обстоятельствам проживание супругов; овдовения из-за преждевременной смерти одного из родителей ребенка детей внебрачные рождения при условии одиночества родителя. С другой стороны некоторые одинокие матери впоследствии выходят замуж но в актах записи гражданского состояния статус их детей не меняется за исключением фактов усыновления удочерения и они продолжают считаться...
44544. Функциональные подсистемы КИС 36.5 KB
  Кроме того рынок СУД изначально ориентирован на КИС масштаба предприятия в связи с чем все промышленные системы выполнены в архитектуре клиент-сервер и способны работать практически на всех программно-аппаратных платформах т. Если составные части КИС поддерживают довольно широкий список оборудования и серверного программного обеспечения это дает возможность уменьшить затраты так как увеличивается вероятность того что необходимые базовые продукты в организации уже есть. На сегодняшний день основными платформами на которых должны...
44545. Средства обработки бумажных документов 31.5 KB
  Поэтому говоря о концепции построения КИС нельзя не упомянуть такую актуальную на сегодняшний день проблему как совмещение в документообороте предприятия электронных и бумажных документов. Практически все современные СУД хранящие документы предоставляют те или иные функции по обработке бумажных документов. Обычно они реализуются с помощью специального модуля который позволяет автоматизировать сканирование и сохранение образов многостраничных документов а также их распознавание и аннотирование.
44546. Системы поддержки принятия решений 32 KB
  В этом случае на помощь старым методам приходит оперативная обработка данных OnLine nliticl Processing OLP. Сила OLP заключается в том что в отличие от классических методов поиска запросы здесь формируются не на основе жестко заданных или требующих для модификации вмешательства программиста и следовательно времени т. OLP обеспечивает выявление ассоциаций закономерностей трендов проведение классификации обобщения или детализации составление прогнозов т. Не останавливаясь на тонкостях организации различных моделей OLP например...
44547. Системы, основанные на применении Internet-технологий 31 KB
  Рассматривая вопрос применения Internetтехнологий нельзя не затронуть такую важную проблему как обеспечение информационной безопасности. В дополнение к ним на стыке сегментов локальных сетей и Internet желательна установка брандмауэров средств контроля за внешними входящими и исходящими соединениями. Они позволяют отслеживать передачу информации практически всех известных на сегодняшний день протоколов Internet.
44548. Средства стратегического планирования 31.5 KB
  Как известно для решения подобных задач применяются системы управления проектами например Microsoft Project Symntec Time Line. Практически все системы управления проектами СУП берут за основу некий план проекта составляемый на предварительном этапе. Чисто технически интеграция современных САДП и СУП не вызывает вопросов поскольку обе системы как правило соответствуют стандартам межпрограммного взаимодействия и могут разделять данные.5 позволяет получать доступ к данным о проекте используя внешние приложения в том числе и...
44549. Понятие КИС. Основные этапы и принципы построения 30 KB
  Основные этапы и принципы построения Комплексная информационная система это совокупность технических и программных средств предприятия реализующих идеи и методы автоматизации. И использование специальных программных средств обеспечивающих информационную поддержку бизнеспроцессов в качестве основы КИС представляется наиболее оправданным и эффективным. Среди преимуществ такого подхода следует отметить возможность внесения изменений в отдельные программные компоненты расположенные в одном слое без необходимости коренных переделок на...
44550. Использование языка функиональных блоков ТехноIL, FBD при программирование алгоритмов в КИС 41 KB
  Программа созданная на этом языке называется FBDпрограммой. Для разработки FBDпрограмм в редакторе базы каналов предусмотрены два окна – FBD программы и LD программы. Для входа в первое из них нужно выполнить команду FBD программы меню Окна или нажать сочетание клавиш LT3 или нажать ЛК на иконке панели инструментов.