Azotirovanie.ru

Инженерные системы и решения
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Урок 8. Блок-схема оператора if

Урок 8. Блок-схема оператора if

if

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

Ветвления

Ветвление – это команда алгоритма, в которой делается выбор, выполнять или не выполнять какую-нибудь группу команд в зависимости от условий.

Ветвление используется в двух случаях:

  1. Когда требуется пропустить определенную команду или группу команд.
  2. Когда нужно записать выбор тех или иных действий в зависимости от условия.

В блок-схеме условие ветвления изображается в ромбе, из которого обязательно выходят ДВЕ стрелки – первая (стрелка «Да») указывает на команды, которые будут выполняться в случае, если условие соблюдено; вторая (стрелка «Нет») – на команды, которые будут выполнены, если условие не соблюдено. Даже если команда, на которую указывает одна из стрелок (Чаще всего «Нет») отсутствует, стрелка все равно имеет место быть.

Алгоритм ветвления

Алгоритм с ветвлением, представленный в виде блок-схемы.

В словесной формулировке запись ветвления выглядит так:

ЕСЛИ <условие выбора > ТО <команды, выполняемые при соблюдении условия> ИНАЧЕ <команды, выполняемые при несоблюдении условия>

Реализация ветвления в Паскаль.

Как же реализовать ветвление в Паскаль? Проще, чем вы думаете:
if <условие выбора > then <команды, выполняемые при соблюдении условия> else <команды, выполняемые при несоблюдении условия>

Запомните! Перед else никогда не ставят точку с запятой!

Давайте поговорим об условии выбора. Понятно, что этологическое выражение. Если оно является правдой, то выполняется главная ветвь, если ложь, то боковая ветвь.

Задачи из блока if.

Рассмотрим несколько задач из сборника М.Э.Абрамяна «1000 задач по программированию».

If1. Дано целое число. Если оно является положительным, то прибавить к нему 1; в противном случае не изменять его. Вывести полученное число.

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

sXr13UnZ7bE

If2. Дано целое число. Если оно является положительным, то прибавить к нему 1; в противном случае вычесть из него 2. Вывести полученное число.

if2

If3. Дано целое число. Если оно является положительным, то прибавить к нему 1; если отрицательным, то вычесть из него 2; если нулевым, то заменить его на 10. Вывести полученное число.

Для того чтобы решить эту задачу мы должны использовать вложенный if.

if3 510x648

Мы работаем в PascalABC.NET. Только в этой СР есть возможность написать а -= 2.

If5. Даны три целых числа. Найти количество положительных и количество отрицательных чисел в исходном наборе.

if5

Длиннющая блок-схема.

If30. Дано целое число, лежащее в диапазоне 1–999. Вывести его строку-описание вида «четное двузначное число», «нечетное трехзначное число» и т. д.

if30

Вот и все! Не забывайте кликать по кнопочкам и добавлять наш сайт в закладки!

§ 10. Алгоритмическая конструкция повторение

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

Читайте так же:
Счетчики реактивной энергии меркурий

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

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

Существует несколько возможностей управлять тем, сколько раз будет повторяться тело цикла.

Алгоритмическая конструкция цикл с параметром (цикл со счетчиком) — способ организации цикла, при котором количество повторов зависит от начального и конечного значений параметра цикла.

Таким образом, цикл с параметром организует выполнение команд тела цикла заранее известное число раз (пример 10.1).

Параметр цикла определяет нумерацию действий в цикле. Параметр цикла может принимать только целые значения. Часто нумерацию начинают с 1 и заканчивают числом N (пример 10.2). В этом случае цикл выполнится N раз. Если нумерация установлена двумя произвольными числами N 1 (начальное значение) и N 2 (конечное значение), то цикл выполнится ( N 2 – N 1 + 1) раз.

Алгоритмическая конструкция цикла с параметром может изображаться на блок-схеме следующим образом (значение параметра изменяется от 1 до N ):

В данной конструкции в прямоугольнике(ах) записываются повторяющиеся команды алгоритма (тело цикла), которые выполняются N раз (Да). При этом после каждого выполнения команд тела цикла происходит проверка, который раз выполняется цикл. На блок-схеме переход на проверку условия изображается в виде стрелки, выходящей из тела цикла и возвращающейся к проверке. Как только команды тела цикла выполнятся N раз (Нет), цикл завершается (пример 10.3). Если N  0, то команда тела цикла не выполнится ни разу.

10.2. Использование команды цикла с параметром для исполнителя Робот

Чтобы составлять алгоритмы с циклами для компьютерного исполнителя Робот, нужно знать, как записывается команда цикла.

Для записи цикла с параметром используется команда for . Формат записи команды :

for var i:= N1 to N2 do 1

Строка for var i:= N1 to N2 do является заголовком цикла . Эту строку можно прочитать следующим образом: «Для переменной i от N 1 до N 2 делай». Если N 2  N 1, то команды тела цикла выполнятся ( N 2 – N 1 + 1) раз, иначе цикл не выполнится ни разу.

Операторные скобки — пара слов, определяющих в языке программирования блок команд, воспринимаемый как единое целое, как одна команда.

Слова begin и end; являются операторными скобками в языке Pascal . Если тело цикла состоит из одной команды, операторные скобки можно опустить.

Пример 10.4. Решим задачу с2 из встроенного задачника.

Робот должен закрасить клетки поля, перемещаясь вправо. Для закрашивания всех 10 клеток поля нужно в цикле выполнить 10 раз команды:

Данные команды образуют тело цикла.

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

Читайте так же:
Расширение счетчики для сайтов

Пример 10.5. Решим задачу с7 из встроенного задачника.

На поле исполнителя Робот присутствуют стены. При обходе стен Робот выполняет следующие команды:

Чтобы решить задачу, Робот должен повторить эти команды 5 раз. Оформим данные команды как вспомогательный алгоритм kvadrat и вызовем его в цикле.

В рассмотренном примере тело цикла состоит из одной команды kvadrat , поэтому операторные скобки begin end ; можно не использовать.

Понятие цикла используется в различных сферах человеческой деятельности.

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

Цикло м называют тот или иной круг наук: гуманитарный цикл наук, физико-математический цикл.

Циклом является законченный ряд каких-либо произведений, чего-либо излагаемого, исполняемого: цикл лекций, цикл стихотворений.

Понятие цикла используется в математике, химии, биологии, геологии, музыке, литературе, информатике и других науках.

Пример 10.1. Приготовление пельменей.

    1. Вскипятить воду.
    2. Для i = 1..10 повторять:

    1. 2.1.
      Достать пельмень из упаковки.
    2. 2.2.
      Бросить пельмень в кипящую воду.

    В данном примере параметр цикла i изменяется от 1 до 10. Действия «достать пельмень из упаковки» и «бросить пельмень в кипящую воду» выполняются 10 раз и составляют тело цикла.

    Блок-схема данного алгоритма будет выглядеть следующим образом:

    Пример 10.2. Вычислим a n (например, 3 5 = 243). Алгоритм возведения числа в степень может быть описан следующим образом:

      1. Ввести значения a и n .
      2. Определить начальное значение результата r = 1.
      3. Для i = 1.. n повторять:
        1. 3.1.Умножить результат на a .

        Пример 10.3. В фольклорных произведениях часто встречается многоголовый Змей Горыныч (количество голов может быть, например, 7). Алгоритм победы над Змеем Горынычем может быть описан следующим образом:

        Циклические алгоритмические структуры

        Циклические алгоритмические структуры — это алгоритмы, реализующие действия, повторяющиеся неоднократно.

        Виды циклических алгоритмов

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

        • Алгоритмы, в которых есть циклы с предварительным условием.
        • Алгоритмы, в которых есть циклы с после условием (постусловием).

        Такие алгоритмы считаются условными циклическими алгоритмами. Очевидно, что оба типа циклов являются взаимозаменяемыми, но при этом имеют следующие отличия:

        1. В алгоритме цикла с предварительным условием, проверка условия осуществляется до выполнения команд тела цикла, а в цикле с постусловием эта проверка делается после команд тела цикла.
        2. В алгоритме цикла с постусловием команды тела цикла один раз должны быть выполнены в любом случае, а в цикле с предварительным условием команды тела цикла могут вообще не выполняться.
        3. В алгоритме цикла с предварительным условием выполняется проверка условия, по которому цикл может быть продолжен, а в алгоритме цикла с постусловием выполняется проверка условия завершения цикла.

        Циклические алгоритмические структуры

        При формировании условных циклических алгоритмов необходимо учитывать следующие моменты:

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

        Помимо этого, есть ещё так называемый циклический алгоритм, обладающий безусловной структурой. Его применяют, когда количество необходимых выполнений команд тела цикла известно заранее.

        Циклический алгоритм, обладающий безусловной структурой. Автор24 — интернет-биржа студенческих работ

        Рисунок 1. Циклический алгоритм, обладающий безусловной структурой. Автор24 — интернет-биржа студенческих работ

        Готовые работы на аналогичную тему

        Исполнение циклического алгоритма с безусловной структурой необходимо начать с задания переменной i исходного значения in. Далее следует выполнить проверку на превышение переменной i конечного значения iK. Если это превышение имеет место, то осуществляется завершение цикла и передача управления идущей за телом цикла команде. Иначе начинается выполнение команд тела цикла, и к значению переменной i прибавляется величина шага di. Затем опять проверяется величина переменной i и весь процесс повторяется. Естественно, что вместо безусловного циклического алгоритма можно использовать один из условных. Следует заметить, что переменная i считается циклическим параметром, поскольку она является переменной, изменяемой внутри цикла по некоторому правилу и оказывает непосредственное влияние на его завершение.

        Приведём конкретный пример применения циклической алгоритмической структуры. Требуется определить максимальный общий делитель (МОД) пары натуральных чисел А и В. Входными данными являются: А и В. Выходными данными будут: А и МОД. Чтобы решить поставленную задачу можно использовать алгоритм Евклида, который заключается в последовательном уменьшении большего из чисел на величину меньшего. Эту процедуру следует выполнять до того момента, когда обе величины не сравняются. Эти действия показаны в таблице:

        Поиск МОД для чисел А = 25 и В = 15. Автор24 — интернет-биржа студенческих работ

        Рисунок 2. Поиск МОД для чисел А = 25 и В = 15. Автор24 — интернет-биржа студенческих работ

        Блок-схема алгоритма решения этой задачи изображена на рисунке ниже.

        Алгоритм поиска максимального общего делителя. Автор24 — интернет-биржа студенческих работ

        Рисунок 3. Алгоритм поиска максимального общего делителя. Автор24 — интернет-биржа студенческих работ

        Чтобы решить поставленную задачу в алгоритме применяется цикл с предварительным условием, а именно, команды тела цикла будут выполняться повторно до момента, когда А сравняется с В.

        Рассмотрим следующий пример. Выполняется последовательный ввод чисел, признаком окончания последовательности является цифра нуль. Требуется выяснить, есть ли в этой числовой последовательности хотя бы пара одинаковых соседних чисел. В качестве входных данных будем рассматривать:

        • X0 является текущим членом последовательности.
        • X1 является последующим членом последовательности.

        В качестве выходных данных будем рассматривать сигнал о присутствии в числовой последовательности пары одинаковых соседних компонентов. Ещё для работы алгоритма потребуется вспомогательная переменная F1, которая получит значение «истинно», когда будут обнаружены два одинаковых стоящих рядом компонента, и в противном случае она будет иметь значение «ложно». Блок-схема алгоритма решения данной задачи изображена на рисунке ниже.

        Блок-схема. Автор24 — интернет-биржа студенческих работ

        Рисунок 4. Блок-схема. Автор24 — интернет-биржа студенческих работ

        Использование в данном случае цикла с постусловием обусловлено тем обстоятельством, что требуется сначала выполнить сравнение пары компонентов последовательности, а далее уже принимать решение о завершении цикла.

        В рассмотренных выше примерах заданы такие условия, что количество повторений команд тела цикла заранее неизвестно. Циклы этого типа являются циклами с неопределённым количеством повторов, а в общем случае может быть неизвестно о наличии конца цикла в принципе. Если в цикле можно определить заранее число повторений команд тела цикла по начальной информации, то такой цикл называется циклом с определимым количеством повторов. Приведём пример применения такого типа цикла. Необходимо сформировать таблицу значений функции y = esin(x)cos(x) на участке [0;p] при шаге 0.1. В качестве входных данных примем:

        1. Исходная величина аргумента равна нулю.
        2. Значение аргумента в конце равно р.
        3. Величина шага возрастания аргумента равна 0.1.

        В качестве выходных данных примем:

        1. Весь диапазон значений аргумента Х.
        2. Все значения функции Y.

        В начальных условиях задачи число повторений цикла не задаётся в явной форме, то есть задачу можно решить с применением цикла с предварительным условием. Алгоритм решения приведён на рисунке ниже:

        Блок-схема. Автор24 — интернет-биржа студенческих работ

        Рисунок 5. Блок-схема. Автор24 — интернет-биржа студенческих работ

        Но если взглянуть на проблему с обратной стороны, то заранее понятно изменение параметра цикла Х и известны его граничные значения. То есть имеется возможность вычислить число повторений цикла n, и затем использовать безусловный циклический оператор. Алгоритм решения задачи для этого варианта приведён на рисунке 6:

        Циклический алгоритм со счетчиком блок схема

        БлогNot. «Универсальная» блок-схема и 3 типовых алгоритма 🙂

        «Универсальная» блок-схема и 3 типовых алгоритма 🙂

        Дважды за день заходила речь об одном и том же, да и жаль выкидывать пару картинок, могут ещё понадобиться. Речь шла об изображении базовых типовых алгоритмов, связанных с расчётом какой-либо элементарной характеристики последовательности (массива) — суммы, количества, произведения, максимума, минимума и т.п. В картинках не показаны «начало» и «конец», только содержательная часть.

        ГОСТовские «перевёртыши» на практике крайне неудобны, классическое изображение с помощью «ромбика» часто сбивает начинающих с толку похожестью на обычное ветвление (плюс они забывают делать шаг в конце тела цикла), а вот значок «цикла с параметром», если отказаться от паскалевского шага, непременно равного единице, удобен и нормально воспринимается.

        I Алгоритм табулирования (составление списка или таблицы)

        Алгоритм табулирования (составление списка или таблицы)
        Алгоритм табулирования (составление списка или таблицы)

        Что писать в фигурках вместо цифр?

        1. Примем, что управляющая переменная цикла называется x , а здесь зададим её начальное ( x1 ) и конечное ( x2 ) значения, а также шаг изменения dx . Это можно записать присваиванием x1=0,x2=1,dx=0.1 или поставить вместо прямоугольника параллелограмм (оператор ввода) с подписью » ввод x1,x2,dx «;

        2. Обычно внутри значка «цикл с параметром» (цикл, пределы изменения и шаг управляющей переменной которого известны) пишут что-то вроде псевдокода: » для x от x1 до x2 шаг dx » или то же самое в форме x=x1,x1+dx..x2 или просто x=x1,x2,dx ;

        3. Для очередного x вычислить y=f(x) . Этот шаг может включать несколько действий и предполагать вставку дополнительных блоков «расчёт» или условных операторов;

        4. Вывести строку таблицы: вывод x, f(x)

        II. Алгоритм вычисления суммы, количества или произведения нужных элементов последовательности

        Алгоритм вычисления суммы, количества или произведения нужных элементов последовательности
        Алгоритм вычисления суммы, количества или произведения нужных элементов последовательности

        Вместо цифр в элементах блок-схему указываем:

        1. Для каждой искомой величины задать по переменной и присвоить ей начальные значения: сумме s=0 , количеству k=0 , произведению p=1 (на самом деле, это не совсем корректно, но для обсуждаемого уровня сойдёт);

        2. Выполняется как в задаче I;

        3. Считаем очередной элемент последовательности y=f(x) , с тем же замечанием, что к задаче I;

        4-5. Если y отвечает условию задачи (проверка на шаге 4), сумма на шаге 5 ищется в виде s=s+f(x) , количество в виде k=k+1 , произведение в виде p=p*f(x) . При нескольких искомых величинах блок вида 4-5 может повторяться несколько раз;

        6. По выходе из цикла выводим найденную величину или величины.

        III. Алгоритм поиска максимума или минимума

        Блок схема задачи II годится и для этого случая.

        1. Для каждого максимума или минимума задать по переменной (примем, что минимум обозначен min , а максимум — max ) и присвоить каждой переменной начальные значения: максимуму – заведомо малое значение (например, -10 30 , оператор будет иметь вид Max=-10 30 ) или первый элемент последовательности (массива); минимуму присвоить заведомо большое значение (например, 10 30 ) или первый элемент последовательности;

        2-3. Выполняются как в задачах I-II, с теми же замечаниями.

        4-5. Для поиска максимума проверяется условие 4 f(x)>max , выполняется действие 5 вида max=f(x) , дли минимума проверяется условие 4 f(x)<min и выполняется действие 5 вида min=f(x) . С чем сравнивали max или min , то им и присваиваем.Могут понадобиться дополнительные условия, связанные логической операцией «И» либо «ИЛИ» с основным, например, поиск максимального из отрицательных элементов предполагает проверку y<0 and y>max ;

        6. По выходе из цикла выводим найденную величину или величины.

        Несмотря на обилие средств для рисования блок-схем, удобнее простого Paint из Win7 и выше для этой цели ничего пока не придумали 🙂

        IV. Схема ввода и обработки элементов одномерного массива

        Как правило, ввод, обработка или вывод одномерного массива (вектора, списка) выполняется поэлементно с помощью цикла с параметром (цикла «for»). Счётчиком цикла служит номер элемента в массиве (обычно применяется нумерация с единицы). Ниже показаны ввод и обработка массива x из 6 элементов.

        Схема ввода и обработки элементов одномерного массива
        Схема ввода и обработки элементов одномерного массива

        V. Реализация алгоритма в кратных (вложенных) циклах

        Основное отличие – все действия над матрицей (таблицей) выполняются поэлементно в двойном цикле следующего вида:

        Блок-схема двойного цикла с параметром
        Блок-схема двойного цикла с параметром

        Здесь показан ввод матрицы A из 6 строк и 4 столбцов, а счётчиками внешнего и внутреннего цикла с параметром служат номера строки ( i ) и столбца ( j ) в матрице. Обработка и вывод элементов матрицы могут быть реализованы аналогичными конструкциями, часто, если элементы обрабатываются последовательно и независимо друг от друга, ввод и обработку или обработку и вывод можно объединить.

        голоса
        Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector