если то иначе все какой алгоритм
Если то иначе все какой алгоритм
Алгоpитм — заранее заданное понятное и точное предписание возможному исполнителю совершить определенную последовательность действий для получения решения задачи за конечное число шагов.
Исполнитель алгоритма — это некоторая абстрактная или реальная (техническая, биологическая или биотехническая) система, способная выполнить действия, предписываемые алгоритмом.
Среда (или обстановка) — это «место обитания» исполнителя.
Отказы исполнителя возникают, если команда вызывается при недопустимом для нее состоянии среды.
Основные свойства алгоритмов :
1. Понятность для исполнителя — исполнитель алгоритма должен понимать, как его выполнять. Иными словами, имея алгоритм и произвольный вариант исходных данных, исполнитель должен знать, как надо действовать для выполнения этого алгоритма.
2. Дискретность (прерывность, раздельность) — алгоpитм должен представлять процесс решения задачи как последовательное выполнение простых (или ранее определенных) шагов (этапов).
3. Определенность — каждое правило алгоритма должно быть четким, однозначным и не оставлять места для произвола. Благодаря этому свойству выполнение алгоритма носит механический хаpактеp и не требует никаких дополнительных указаний или сведений о решаемой задаче.
4. Результативность (или конечность) состоит в том, что за конечное число шагов алгоpитм либо должен приводить к решению задачи, либо после конечного числа шагов останавливаться из-за невозможности получить решение с выдачей соответствующего сообщения, либо неограниченно продолжаться в течение времени, отведенного для исполнения алгоритма, с выдачей промежуточных результатов.
5. Массовость означает, что алгоpитм решения задачи pазpабатывается в общем виде, т.е. он должен быть применим для некоторого класса задач, различающихся лишь исходными данными. При этом исходные данные могут выбираться из некоторой области, которая называется областью применимости алгоритма.
Виды алгоритмов
Алгоритмы как логико-математические средства отражают указанные компоненты человеческой деятельности и тенденции, а сами алгоритмы, в зависимости от цели, начальных условий задачи, Петей ее решения, определения действий исполнителя подразделяются следующим образом:
механические алгоритмы (детерминированные, жесткие, например, алгоритм работы машины, двигателя). Механический алгоритм задает определенные действия, обозначая их в единственной и достоверной последовательности, обеспечивая тем самым однозначный требуемый или искомый результат, если выполняются те условия процесса, задачи, для которых разработан алгоритм;
вероятностные (стохастические) алгоритмы дают программу решения задачи несколькими путями или способами, приводящими к вероятному достижению результата;
эвристические алгоритмы – это алгоритмы, в которых достижение конечного результата программы действий однозначно не определено, так же как не обозначена вся последовательность действий исполнителя. К эвристическим алгоритмам относят, например, инструкции и предписания. В этих алгоритмах используются универсальные логические процедуры и способы принятия решений, основанные на аналогиях, ассоциациях и прошлом опыте решения схожих задач.
линейные алгоритмы – наборы команд (указаний), выполняемых последовательно во времени друг за другом;
разветвляющиеся алгоритмы – алгоритмы, содержащие хотя бы одно условие, в результате проверки которого компьютер обеспечивает переход на один из двух возможных шагов;
циклические алгоритмы – алгоритмы, предусматривающие многократное повторение одного и того же действия (одних и тех же операций) над новыми исходными данными. К циклическим алгоритмам сводится большинство методов вычислений, перебора вариантов;
вспомогательные (подчиненные) алгоритмы (процедуры) – алгоритмы, ранее разработанные и целиком используемые при алгоритмизации конкретной задачи. В некоторых случаях при наличии одинаковых последовательностей указаний (команд) для различных данных с целью сокращения записи так же выделяют вспомогательные алгоритмы.
Логическая структура любого алгоритма может быть представлена комбинацией трех базовых структур: следование, ветвление, цикл.
Характерной особенностью базовых структур является наличие в них одного входа и одного выхода.
1. Базовая структура «следование». Образуется последовательностью действий, следующих одно за другим:
Школьный алгоритмический язык
Школьный алгоритмический язык
1. если—то
2. если—то—иначе
3. выбор
4. выбор—иначе
Примеры структуры ветвление
Школьный алгоритмический язык
Школьный алгоритмический язык
Примеры структуры цикл
Школьный алгоритмический язык
Пример вложенных циклов для
Вычислить сумму элементов заданной матрицы А(5,3).
Пример вложенных циклов пока
Вычислить произведение тех элементов заданной матрицы A(10,10), которые расположены на пересечении четных строк и четных столбцов.
Урок 8. Блок-схема оператора if
В предыдущих уроках мы рассмотрели наиболее простой, линейный тип алгоритмов. Напомню, что всего существует три типа: линейные, разветвляющиеся и циклические (алгоритмы с повторениями). В этом уроке я расскажу вам о втором типе алгоритмов — об алгоритмах с ветвлениями.
Ветвления
Ветвление – это команда алгоритма, в которой делается выбор, выполнять или не выполнять какую-нибудь группу команд в зависимости от условий.
Ветвление используется в двух случаях:
В блок-схеме условие ветвления изображается в ромбе, из которого обязательно выходят ДВЕ стрелки – первая (стрелка «Да») указывает на команды, которые будут выполняться в случае, если условие соблюдено; вторая (стрелка «Нет») – на команды, которые будут выполнены, если условие не соблюдено. Даже если команда, на которую указывает одна из стрелок (Чаще всего «Нет») отсутствует, стрелка все равно имеет место быть.
Алгоритм с ветвлением, представленный в виде блок-схемы.
В словесной формулировке запись ветвления выглядит так:
Реализация ветвления в Паскаль.
Как же реализовать ветвление в Паскаль? Проще, чем вы думаете:
if then else
Запомните! Перед else никогда не ставят точку с запятой!
Давайте поговорим об условии выбора. Понятно, что этологическое выражение. Если оно является правдой, то выполняется главная ветвь, если ложь, то боковая ветвь.
Задачи из блока if.
Рассмотрим несколько задач из сборника М.Э.Абрамяна «1000 задач по программированию».
If1. Дано целое число. Если оно является положительным, то прибавить к нему 1; в противном случае не изменять его. Вывести полученное число.
В данной программе даже не надо реализовывать боковую ветвь.
If2. Дано целое число. Если оно является положительным, то прибавить к нему 1; в противном случае вычесть из него 2. Вывести полученное число.
If3. Дано целое число. Если оно является положительным, то прибавить к нему 1; если отрицательным, то вычесть из него 2; если нулевым, то заменить его на 10. Вывести полученное число.
Для того чтобы решить эту задачу мы должны использовать вложенный if.
If5. Даны три целых числа. Найти количество положительных и количество отрицательных чисел в исходном наборе.
Длиннющая блок-схема. 🙂
If30. Дано целое число, лежащее в диапазоне 1–999. Вывести его строку-описание вида «четное двузначное число», «нечетное трехзначное число» и т. д.
Вот и все! Не забывайте кликать по кнопочкам и добавлять наш сайт в закладки!
Базовые структуры алгоритмов
Логическая структура любого алгоритма может быть представлена комбинацией трех базовых структур: следование, ветвление и цикл.
Характерной особенностью базовых структур является наличие в них одного входа и одного выхода.
Базовая структура «следование»
Образуется последовательностью действий, следующих одно за другим:
В линейном вычислительном процессе все операции выполняются последовательно в порядке их записи. Типовым примером такого процесса является стандартная вычислительная схема, состоящая из трех этапов:
q ввод исходных данных;
q вычисление по формулам;
q вывод результата.
Базовая структура «ветвление»
Обеспечивает в зависимости от результата проверки условия (да или нет) выбор одного из альтернативных путей работы алгоритма. Каждый из путей ведет к общему выходу, так что работа алгоритма будет продолжаться независимо от того, какой путь будет выбран. Структура ветвление существует в четырех основных вариантах:
Запись псевдокодом | Графическое изображение |
1. Если-то | |
если условието действия все | |
2. Если-то-иначе | |
если условие то действия 1 иначе действия 2 все | |
3. Выбор | |
выбор при условие 1: действия 1 при условие 2: действия 2. при условие N: действия N все | |
4. Выбор-иначе | |
выбор при условие 1: действия 1 при условие 2: действия 2. при условие N: действия N иначедействия N+1 все | |
Базовая структура «цикл»
Обеспечивает многократное выполнение некоторой совокупности действий, называемых телом цикла. Управление повторением цикла осуществляется с помощью переменной, называемой параметром цикла. Сначала этому параметру присваивается некоторое начальное значение, затем цикл выполняется с изменением параметра при каждом повторении от начального к конечному значению на величину, называемую шагом цикла.
Шаг цикла может быть положительным или отрицательным. В зависимости от этого параметр цикла возрастает или уменьшается. Цикл прекращается, если параметр цикла принимает значение, которое лежит вне границ диапазона между начальным и конечным значениями.
Различают три вида циклов:
Циклы с предусловием и постусловием используются тогда, когда предварительно неизвестное количество повторений.
В цикле с предусловием сначала проверяется условие и, если оно выполняется, то осуществляются действия, указанные в теле цикла. Выполнение цикла прекращается, когда условие не выполняется. Для этого необходимо, чтоб действия в теле цикла влияли на изменение условия. В противном случае наступит «зацикливание» — бесконечное выполнение цикла. Оно является типовой ошибкой в случае использования циклов.
Запись псевдокодом | Графическое изображение |
1. Цикл с предусловием (Цикл-Пока). Предписывает выполнять тело цикла до тех пор, пока выполняется условие, записанное после слова «пока». | |
нц пока условие тело цикла (последовательность действий) кц | |
2. Цикл с постусловием (Цикл-До). Предписывает выполнять тело цикла до тех пор, пока не выполняется условие, записанное после слова «до». | |
нц повторять тело цикла (последовательность действий) до условие Кц | |
3. Цикл с параметром (Цикл-Для). Предписывает выполнять тело цикла для всех значений некоторой переменной (параметра цикла) в заданном диапазоне | |
нц для i от i1до i2 шаг i3 тело цикла (последовательность действий) кц | |
Цикл с постусловием выполняется аналогично, но условие проверяется после выполнения действий в теле цикла. Повторение действий тела цикла происходит тогда, когда условие не выполняется.
Действия в теле цикла с постусловием выполняются всегда хотя бы один раз, а с предусловием могут не выполняться ни одного раза, если в самом начале условие не выполняется.
В цикле с параметром последовательно выполняются следующие типовые операции:
1. Задание начального значения используемого параметра цикла (например, если переменной цикла является i, то ей присваивается значение i1, т.е. i:=i1).
2. Выполнение действий, предусмотренных в теле цикла.
3. Изменение параметра цикла, который обеспечивает вычисление результата с новыми начальными данными (например, если параметр цикла i изменяется с шагом i3, i:=i+ i3) и переход к следующему шагу.
4. Проверка текущего значения параметра цикла с заданным конечным значением (i
Базовые алгоритмические структуры
Базовые алгоритмические структуры
Выделяют три базовые алгоритмические структуры (конструкции):
Каждая алгоритмическая структура имеет одну точку входа и одну точку выхода.
Для реализации структуры ветвление используются две структурированные
команды школьного АЯ – если и выбор, каждая из которых может быть полной и неполной.
Полная команда если имеет вид
Полная команда выбор имеет вид
В блок-схемах и школьном АЯ – это логическое выражение,
результатом которого может быть одно из двух возможных значений – истина или ложь. В школьном АЯ эти значения записывают как да и нет. В языках программирования часто используются значения True и False. В компьютере эти значения хранятся как 1 и 0.
Полная форма команды если определяет две ветви команд: первая выполняется в случае истинности условия; вторая – в случае его ложности. В каждой ветви может выполняться не одна команда, а серия команд.
Неполная форма команды если предполагает, что при истинности условия
выполняется команда1 (серия команд), в противном случае никакие действия не выполняются.
Команда выбор используется для организации множественного ветвления.
3. Циклическая структура (цикл) обеспечивает многократное выполнение одних и тех же команд.
Существуют разновидности циклических структур:
— с предусловием (пока),
Любая циклическая структура состоит из двух частей – заголовка и тела цикла.
Набор команд, повторяющихся при выполнении цикла, называют телом цикла.
Заголовок определяет количество повторений тела цикла.
В цикле с предусловием заголовок имеет вид
Выполнение тела цикла ( ) будет повторяться до тех пор, пока условие истинно.
В цикле с параметром заголовок цикла имеет вид:
— параметр цикла, это может быть переменная целого типа;
– начальное значение параметра цикла,
– конечное значение параметра цикла.
Цикл с параметром выполняется следующим образом:
1. параметр цикла принимает начальное значение;
2. если параметр цикла не превышает конечного значения, выполняется тело цикла, иначе – выход из цикла, переход к следующей команде алгоритма.
3. параметр цикла изменяется на единицу или на заданный шаг;
4. переход к пункту 2.
Тело цикла с параметром при шаге 1 выполняется ( – +1) раз.
Если конечное значение меньше начального значения при шаге больше нуля, тело цикла не выполняется ни разу.
Найдите среди 3 целых чисел наибольшее (числа произвольные)
алг максимум (цел а, б, в)
вывод ‘ введите три произвольных числа’
то вывод ‘ максимальным числом является’, а
то вывод ‘ максимальным числом является’, б
Найдите среди 4 произвольных чисел минимальное
алг минимум (вещ а, б, с, е)
нач вывод ‘ введите 4 произвольных числа’
то вывод ‘ максимальное число-‘,а
то вывод нс,’ истина’
иначе вывод нс,’ложь’
Найдите Факториал натурального числа n ( Факториалом натурального числа n является произведение всех натуральных чисел на промежутке от 1 до n)
алг факториал (вещ а. б цел н, и)
вывод ‘ введите количество натуральных чисел’
нц для и от 1 до н
вывод ‘ введите число’
вывод ‘ факториал ‘,н,’целых чисел равен’, а
алг максимум (вещ а, б цел и, н)
вывод ‘ введите количество целых чисел для сравнения’
нц для и от 1 до н
вывод ‘введите число’
вывод ‘ максимальным числом среди данных является число’, а
Найдите среди n-целых чисел количество отрицательных
алг совпадение (вещ а, б, с цел н, и, з)
вывод ‘ введите количество натуральных чисел’
вывод ‘введите число’
нц для и от 1 до н
вывод нс,’ введите число’
вывод ‘ количество совпадений с первым числом равно’, з
Последовательно вводятся n-целых чисел. Найти количество совпадений с первым числом
алг совпадение_1 (вещ а, б, с цел н, и, з)
вывод ‘ введите количество натуральных чисел’
вывод ‘введите число’
нц для и от 1 до н
вывод нс,’ введите число’
вывод ‘ количество совпадений с первым числом равно’, з
Последовательно вводятся n-целых чисел. Найти разницу между максимальным и минимальным значениями данных чисел
Условный оператор. Если то иначе. Программирование на языке Питон для начинающих
Все ранее рассматриваемые программы имели линейную структуру: все инструкции выполнялись последовательно одна за одной, каждая записанная инструкция обязательно выполняется.
Подобные действия исполнителя (программы на языке Python) можно назвать Последовательными действими и описываются они последовательными строками программы. Стоит, правда, добавить, что в программах Python важны отступы, поэтому все операторы, входящие в последовательность действий, должны иметь один и тот же отступ.
Разумеется, одними только последовательными действиями в программировании не обойтись, поэтому при написании алгоритмов используется еще и ветвление. Ветвление так же еще называют у словной инструкцией — это развилка на пути выполнения программы. Наша программа может пойти по одному пути, а может и по другому. То, какой путь будет выбран, определяется в зависимости от проверки условия.
Операторы сравнения
Как правило, в качестве проверяемого условия используется результат вычисления одного из следующих операторов сравнения:
Меньше — условие верно, если первый операнд меньше второго.
> Больше — условие верно, если первый операнд больше второго.
Например, условие (x * x Операторы сравнения возвращают значения специального логического типа bool. Значения логического типа могут принимать одно из двух значений: True (истина) или False (ложь). Если преобразовать логическое True к типу int, то получится 1, а преобразование False даст 0. При обратном преобразовании число 0 преобразуется в False, а любое ненулевое число в True. При преобразовании str в bool пустая строка преобразовывается в False, а любая непустая строка в True. Булевы значения истина и ложь всегда возвращаютсятся в качестве результата, когда выражение сравнивается или оценивается ( Попробуйте сами. Нажмите кнопку RUN ) :
В условной инструкции может отсутствовать слово else и последующий блок. Такая инструкция называется неполным ветвлением. Например, если дано число x и мы хотим заменить его на абсолютную величину x, то это можно сделать следующим образом:
Это одно из существенных отличий синтаксиса Питона от синтаксиса большинства языков, в которых блоки выделяются специальными словами, например, нц. кц в Кумире, begin. end в Паскале или <фигурными>скобками в Си.
Логические операторы
Иногда нужно проверить одновременно не одно, а несколько условий. Например, проверить, является ли данное число четным можно при помощи условия (n % 2 == 0) (остаток от деления n на 2 равен 0), а если необходимо проверить, что два данных целых числа n и m являются четными, необходимо проверить справедливость обоих условий: n % 2 == 0 и m % 2 == 0, для чего их необходимо объединить при помощи оператора and (логическое И): n % 2 == 0 and m % 2 == 0.
В Питоне существуют стандартные логические операторы: логическое И, логическое ИЛИ, логическое отрицание (НЕ).
Пример. Проверим, что хотя бы одно из чисел a или b оканчивается на 0:
if a % 10 == 0 or b % 10 == 0:
Проверим, что число a — положительное, а b — неотрицательное:
Или можно вместо not (b = 0).
Инструкция множественного ветвления
Вложенные условные инструкции
Вместо многоточий можно писать произвольные инструкции. Обратите внимание на размеры отступов перед инструкциями. Блок вложенной условной инструкции отделяется большим отступом. Уровень вложенности условных инструкций может быть произвольным, то есть внутри одной условной инструкции может быть вторая, а внутри нее — еще одна и т.д.