Без этой конструкции или за пределами ее программа не может выполнить алгоритм.
Так же на первой строке нужно указать исполнителя для которого вы пишите алгоритм.
использовать ИМЯ_ИСПОЛНИТЕЛЯ (слово использовать с маленькой буквы, имя исполнителя с заглавной буквы).
Правильные конструкции будут с полужирном начертанием, правильные команды будут выделены синим, название исполнителя должно быть зеленым цветом.
Вспомогательные алгоритмы
Вспомогательный алгоритм — это фрагмент программного кода (подпрограмма), к которому можно обратиться из любого места основной программы. Эта подпрограмма обычно имеет входные и выходные данные.
Роль вспомогательного алгоритма: упростить работу с большим кодом. Задав имя последовательности команд, можно многократно обращаться к этой последовательности, указывая только ее имя.
Вспомогательные алгоритмы пишутся под основным , т.к программа Кумир считает основным алгоритмом первую конструкцию алг-нач-кон.
Пример программы со вспомогательным алгоритмом
АЛГОРИТМЫ в ПРОГРАММИРОВАНИИ для новичков | Левенштейн, Фибоначчи, Факториал и т.д.
алг забор | Основной алгоритм
звено | Обращение к вспомогательному алгоритму
алг звено | Вспомогательный алгоритм
Метод последовательной детализации
Использованный нами подход облегчает программирование сложных задач. Задача разбивается на более простые подзадачи. Решение каждой оформляется в виде вспомогательного алгоритма, а основной алгоритм организует связку между ними.
Метод программирования, при котором сначала пишется основная программа, в ней записываются обращения к пока еще не составленным подпрограммам, а потом описываются эти подпрограммы, называется методом последовательной (пошаговой) детализации. Причем количество шагов детализации может быть гораздо большим, чем в нашем примере, поскольку сами подпрограммы могут содержать внутри себя обращения к другим подпрограммам.
Сборочный метод
Возможен и другой подход к построению сложных программ: первоначально составляется множество подпрограмм, которые могут понадобиться при решении задачи, а затем пишется основная программа, содержащая обращения к ним. Подпрограммы могут быть объединены в библиотеку подпрограмм и сохранены в долговременной памяти компьютера. Такую библиотеку можно постепенно пополнять новыми подпрограммами.
Например, если для управления графическим исполнителем создать библиотеку процедур рисования всех букв и цифр, то программа получения любого текста будет состоять из команд обращения к библиотечным процедурам.
Описанный метод называется сборочным программированием.
Часто в литературе по программированию используется такая терминология: метод последовательной детализации называют программированием сверху вниз, а сборочный метод — программированием снизу вверх.
Типы алгоритмических структур
Следование
Следование — алгоритмическая конструкция, отображающая естественный, последовательный порядок действий. Алгоритмы, в которых используется только структура «следование», называются линейными алгоритмами.
Блок-схемы для начинающих (Блок схемы алгоритмов)
Графическое представление алгоритмической конструкции «следование» приведено на рисунке справа.
Пример программы (линейный алгоритм)
алг закрашивание клетки
Ветвление — алгоритмическая конструкция, в которой в зависимости от результата проверки условия («да» или «нет») предусмотрен выбор одной из двух последовательностей действий (ветвей). Алгоритмы, в основе которых лежит структура «ветвление», называют разветвляющимися .
При выполнении команды если КуМир сначала проверяет условие , записанное между если и то . При соблюдении этого условия выполняется события 1 , в противном случае — события 2 (если они есть), после чего КуМир переходит к выполнению команд, записанных после слова все . Если условие не соблюдается, а события 2 вместе с иначе отсутствует, то КуМир сразу переходит к выполнению команд, записанных после слова все.
Графическое представление и общий вид алгоритмической конструкции «ветвление» приведено на рисунке справа.
Источник: sites.google.com
Алгоритм
Чтобы решить сложную задачу, ее нужно разбить на несколько более простых. Такой детальный, пошаговый план очень удобен и облегчает понимание. А если способ записи и подход сделать единым, можно создать язык, который будет понятен пользователям/исполнителям со всего мира, включая компьютеры.
План урока:
Начнем урок с простой задачи. Что нужно сделать, если хочется выпить чая?
Один человек сразу включает чайник, потом начинает искать чашки, заварку, сахар.
Второй действует согласно плану:
- Проверить наличие заварки и сахара.
- Если их нет, купить.
- Если все есть, найти чашку, проверить ее чистоту.
- Поставить чайник греться.
- Ополоснуть чашку кипятком.
- Насыпать заварку, залить кипятком.
- Добавить сахар.
Первый человек сразу бежит к цели, сломя голову, а второй – определяется с целью, разбивает сложный процесс на простые этапы и шаг за шагом идти к результату. Такой линейный алгоритм из жизни позволяет не запутаться, не пропустить что-то важное. Второй подход рациональнее, логичнее и удобнее, позволяет сложную задачу разбить на более простые.
Система команд или алгоритм, не просто удобнее, она позволяет выполнить задачу даже тому, кто не делает это часто, то есть новичку.
Алгоритмы, которыми мы пользуемся
Алгоритм – конечная последовательность действия, пошаговый план, инструкция, способ действия позволяющие достичь желаемого результата. Состоит из простейших команд.
Такие удобные инструкции мы используем постоянно, даже не осознавая это.
Давайте вспомним, какими детальными инструкциями мы пользуемся:
- пошаговые кулинарные рецепты;
- мастер-классы по рукоделию;
- инструкции к оборудованию;
- план действия при ЧП.
Имея цель, мы обрабатываем входные данные и получаем результат или объяснение, почему результат не может быть получен. Это напоминает функцию, но в случае с алгоритмами даны четкие рекомендации, что и как делать.
Пример в виде красочной инструкции и сухой пошаговой рекомендации:
Работа за компьюетром Инструкция по настройке
А в информатике без них не обойтись – именно на алгоритмах основано программирование.
При написании такой последовательности команд важно разбивать процесс на самые простые действия, которые понимаются однозначно как разработчиком, так и тем, кто будет ими пользоваться.
Если действия однотипные, например, «набрать ковш воды и вылить» или «взять яблоко и проверить, есть ли червоточина», то его записывают 1 раз и повторяют конечное число раз.
Когда все задания/этапы будут выполнены, они должны привести к желаемому результату.
Исполнители, система команд исполнителя (СКИ)
Алгоритм разрабатывается с учетом определенного исполнителя. Это означает, что инструкция для пользователя спутниковой антенны и рекомендации для инженера-настройщика будут совершенно разными, хотя в обоих случаях каждый этап будет элементарный.
Исполнитель – субъект/объект, который может выполнить команды данного алгоритма.
Исполнителем может быть живое существо и неживой механизм. Человек, животное, которое понимает команды, робот, станок, компьютер – все они могут быть исполнителями.
Компьютер (ПК) – автоматизированный исполнитель команд. Алгоритмы программ для ПК пишут на языках программирования (С++, Basic, Pascal, Delphi, Ассемблер, Фортран).
Для каждого типа и уровня исполнителей существует своя система команд исполнителя (СКИ).
Свойства алгоритмов
Независимо от того, разрабатывается ход приготовления яичницы или запуска космического корабля, они должны обладать 5 основными свойствами:
- Детерминированность – все описания должны быть однозначными, понятными.
Понятность – процедура должна быть на языке, который понятен той категории исполнителей, для которых она пишется.
Для ребенка 2 лет обучение пользованию игрушкой будет происходить простыми словами, с минимумом этапов (возьми, нажми эту кнопочку, поставь на пол). А для ребенка 10 лет инструкция уже будет включать проверку и замену батареек, установку отпавшей части.
- Дискретность – строгие команды, идущие в определенной последовательности.
Точность – команды должны быть конкретными, понятными, однозначными.
Пример непонятного и неточного задания мы помним из сказки: “Пойди туда, не знаю куда. Принеси то, не знаю что”.
- Массовость – план действия подходит под аналогичные ситуации с разными исходными данными. То есть инструкция по приготовлению бутерброда с колбасой позволяет брать разный хлеб и мясопродукт или заменить его сыром.
- Результативность – выполнение команд должно приводить к результату. Не должно быть ошибок. При использовании допустимых исходных параметров алгоритм должен давать правильный результат всегда.
- Конечность – каждая команда и процедура в целом должны выполняться за конечное число шагов, то есть он не должен быть бесконечным, зацикленным.
Пример бесконечного алгоритма
- включить воду;
- намочить руки и мыло;
- выключить воду;
- намылить руки;
- включить воду.
В этом примере нет конечных команд: вымыть руки и выключить воду. Пользователь по этой инструкции будет бесконечно мыть руки, точить воду.
Классификация алгоритмов
Если выполняемые действия идут одно за другим, то инструкция будет последовательной, линейной. Если же операции повторяются при разных условиях, то порядок действия будет меняться. Следует использовать различные виды алгоритмов.
Виды алгоритмов:
- линейный – этапы выполняются один раз, друг за другом;
- алгоритм с повторением или циклический – действия повторяются необходимое количество раз или до достижения результата. Повторение действий называют циклом;
- разветвляющийся – исходя из указанного условия выбирается одна последовательность команд или другая;
- вспомогательный – процедура, которая является отдельной частью и может выполняться самостоятельно, но обычно используется в составе других алгоритмов, после указания названия.
Чаще используют алгоритмы повторения с условием, так как идеальные условия встречаются редко.
Источник
Линейная модель подходит для простых задач, когда нет условий или повторений. Для нее важна последовательность команд алгоритма. Например, вычисление среднего арифметического, площади фигуры. В обычной жизни – это список действий, которые нужно выполнить, чтобы купить хлеб, сварить яйцо или сделать бутерброд.
Запишем схему линейного алгоритма (покупки чая):
- Взять пакет и кошелек с деньгами.
- Зайти в любой продуктовый маркет.
- Выбрать нужный сорт чая.
- Заплатить за товар.
- Чай положить в пакет, пойти домой.
Для многих задач важно выполнение определенного условия.
Пример алгоритма ветвления – если нужного сорта нет, то процесс покупки чая усложняется:
- Взять пакет и кошелек с деньгами.
- Зайти в любой продуктовый маркет.
- Посмотреть, есть ли чай «Элитный».
- Если да, то узнать цену, отдать деньги.
- Покупку положить в пакет, пойти домой.
- Если нет, найти сорт «Белый, китайский», узнать цену, отдать деньги.
- Упаковку положить в пакет, вернуться домой.
- Если нет ни «Элитного», ни «Белого, китайского», то пойти в другой магазин и повторить все с пункта №3.
Эту же задачу можно описать при помощи циклического алгоритма, если есть повторение определенной операции.
3. Описание алгоритма программы.
В начале программы следует описание всех переменных и констант используемых при решении задачи.
Константы:
- max — размер максимально возможной длины строки для расчёта (присвоено значение 70). Согласно условию задания, строки в текстовом файле, в которых свыше 70 символов, обрабатываться не будут;
- bak – константа для указания расширения файла резервной копии;
- about – информация об авторе;
- big– строка содержащая текст предупреждения о том что в файле присутствуют строки превышающие максимальный размер (max).
- n — Размер максимальной строки, т.е. строки по которой будет происходить выравнивание всего текста;
- d — Количество пробелов в строке;
- z — Количество пустых символов в конце строки недостающих до максимальной строки;
- all- Общее количество пробелов и пустых символов в строке;
- m – Длина строки;
- c – Количество разрывов в строке между словами;
- need – Необходимое, среднее, количество пробелов в каждом разрыве, для форматирования;
- y – Разница в длине отформатированной строки от максимальной перед выравниванием;
- i, j – Служебные переменные для циклов;
- fin, fou – Переменные инициализации входного и выходного файла;
- k – Количество букв в имени текстового файла;
- b– Флаг наличия пробела в предыдущем символе, false – нет пробела, true – есть пробел;
- g – Флаг наличия в файле строки больше максимально допустимой;
- f – Переменная для хранения текущей строки;
- name, name_bak – Имена файлов оригинала и резервной копии;
- a – Массив для хранения номера позиций начал разрывов в строке;
- e– Массив для хранения количества пробелов в каждом разрыве строки;
- r – Массив для хранения длин каждого слова в строке.
3.2. Алгоритм работы программы.
- open — Процедура открытия файла, и создание резервной копии;
- calc_end – Процедура удаления пробелов в конце строки;
- calc_string– Процедура расчёта количества и расположения пробелов;
- calc_itog– Процедура расчёта нового расположения пробелов;
- string_edit– Процедура формирования новой строки.
- name– имя файла.
- name_bak- имя резервного файла;
- fin, fou– Переменные инициализации входного и выходного файла;
- k– Количество букв в имени текстового файла.
- Инициализированный файл fin.
- m– Длина строки;
- f– Переменная для хранения текущей строки.
- m– Длина строки;
- f – Переменная для хранения текущей строки.
- m– Длина строки;
- f – Переменная для хранения текущей строки.
- b– Флаг наличия пробела в предыдущем символе.
- a – Массив для хранения номера позиций начал разрывов в строке;
- e– Массив для хранения количества пробелов в каждом разрыве строки;
- r – Массив для хранения длин каждого слова в строке;
- d– Количество пробелов в строке;
- c– Количество разрывов в строке между словами.
- Расчёт кол-ва, размера и начальных позиций разрывов производится путём использования флага наличия пробела в предыдущем символе – b (false – нет пробела, true – есть пробел). Происходит это следующим образом:
- c– Количество разрывов в строке между словами;
- m – Длина строки;
- n — Размер максимальной строки.
- z — Количество пустых символов в конце строки недостающих до максимальной строки;
- all — Общее количество пробелов и пустых символов в строке.
- need – Необходимое, среднее, количество пробелов в каждом разрыве, для форматирования.
- f – Переменная для хранения текущей строки;
- need – Необходимое, среднее, количество пробелов в каждом разрыве, для форматирования;
- a – Массив для хранения номера позиций начал разрывов в строке;
- r – Массив для хранения длин каждого слова в строке;
- e– Массив для хранения количества пробелов в каждом разрыве строки.
- m – Длина строки;
- y – Разница в длине отформатированной строки от максимальной, перед выравниванием.
- f – Переменная для хранения текущей строки.
Источник: studfile.net