Как составить алгоритм если есть программа


Загрузить PDF


Загрузить PDF

Эта статья поможет вам написать алгоритм на любом языке программирования. В современном мире языки программирования являются важнейшей составляющей нашей жизни и используются для того, чтобы разрабатывать различные компьютерные программы и приложения. Если вы хотите написать код, сначала вам нужно разработать алгоритм.

Шаги

  1. Изображение с названием Write an Algorithm in Programming Language Step 1

    1

    Помните, что создание алгоритма — это поэтапный процесс.

  2. Изображение с названием Write an Algorithm in Programming Language Step 2

    2

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

  3. Изображение с названием Write an Algorithm in Programming Language Step 3

    3

    Приступите к процессу.

  4. Изображение с названием Write an Algorithm in Programming Language Step 4

    4

    Вводите в алгоритм переменные и операции с ними.

  5. Изображение с названием Write an Algorithm in Programming Language Step 5

    5

    Если в алгоритме есть какие-то циклы, постарайтесь составлять списки подчисел.

  6. Изображение с названием Write an Algorithm in Programming Language Step 6

    6

    Если цикл или условие не могут быть выполнены, постарайтесь сделать так, чтобы программа переходила к предыдущему шагу.

  7. Изображение с названием Write an Algorithm in Programming Language Step 7

    7

    Используйте операторы перехода, чтобы переходить от одного оператора к другому.

  8. Изображение с названием Write an Algorithm in Programming Language Step 8

    8

    Постарайтесь не включать излишние первоначальные данные в алгоритм.

  9. Изображение с названием Write an Algorithm in Programming Language Step 9

    9

    Опишите выражения.

  10. Изображение с названием Write an Algorithm in Programming Language Step 10

    10

    Используйте выражения, прерывающие и завершающие процесс.

    Реклама

  1. Изображение с названием Write an Algorithm in Programming Language Step 11

    1

    Получите входные данные пользователя.

  2. Изображение с названием Write an Algorithm in Programming Language Step 12

    2

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

  3. Изображение с названием Write an Algorithm in Programming Language Step 13

    3

    Если соответствуют, запустите сессию и перенаправьте пользователя в личный кабинет.

  4. Изображение с названием Write an Algorithm in Programming Language Step 14

    4

    Если не соответствуют, выведите на экран сообщение об ошибке, перенаправьте его на ту же страницу с формой логин-пароль и попросите ввести данные снова.

  5. Изображение с названием Write an Algorithm in Programming Language Step 15

    5

    Завершение алгоритма.

    Реклама

Советы

  • Удалите избыточные комментарии.
  • Используйте соответствующую логику.
  • Используйте быстрые и эффективные вычислительные циклы.
  • Делайте алгоритм как можно более лаконичным.
  • Делайте алгоритм как можно более эффективным.
  • Придумайте четкий план действий, прежде чем приступать к написанию алгоритма.

Реклама

Предупреждения

  • Всегда проверяйте пространственную и временную сложность алгоритма.
  • Не забывайте прерывать процесс, иначе произойдет сбой.

Реклама

Об этой статье

Эту страницу просматривали 8460 раз.

Была ли эта статья полезной?


Download Article


Download Article

An algorithm is a set of steps designed to solve a problem or accomplish a task. Algorithms are usually written in pseudocode, or a combination of your speaking language and one or more programming languages, in advance of writing a program. This wikiHow teaches you how to piece together an algorithm that gets you started on your application.

Steps

  1. Image titled Write an Algorithm in Programming Language Step 1

    1

    Determine the outcome of your code. What is the specific problem you want to solve or the task you want it to accomplish? Once you have a solid idea of what you’re aiming to accomplish, you can determine the steps it will take to get there.

  2. Image titled Write an Algorithm in Programming Language Step 2

    2

    Decide on a starting point. Finding your starting and ending point are crucial to listing the steps of the process. To determine a starting point, determine the answers to these questions:[1]

    • What data/inputs are available?
    • Where is that data located?
    • What formulas are applicable to the issue at hand?
    • What are the rules to working with the available data?
    • How do the data values relate to each other?

    Advertisement

  3. Image titled Write an Algorithm in Programming Language Step 3

    3

    Find the ending point of the algorithm. As with the starting point, you can find the end point of your algorithm by focusing on these questions:

    • What facts will we learn from the process?
    • What changes from the start to the end?
    • What will be added or no longer exist?
  4. Image titled Write an Algorithm in Programming Language Step 4

    4

    List the steps from start to finish. Start with broad steps. To use a real-world example, let’s say your goal is to have lasagna for dinner. You’ve determined that the starting point is to find a recipe, and that the end result is that you’ll have a lasagna fully cooked and ready to eat by 7 PM. Your steps may look something like this:

    • Search for a recipe online.
    • Look for the ingredients you already have in the kitchen.
    • Make a list of ingredients you’ll need from the store.
    • Buy the missing ingredients.
    • Return home.
    • Prepare the lasagna.
    • Remove the lasagna from the oven.
  5. Image titled Write an Algorithm in Programming Language Step 5

    5

    Determine how you will accomplish each step. Now that you have a step-by-step outline, it’s time to think about how you might code each step. Which language will you use? What resources are available? What’s the most efficient way to accomplish each step in that language? Incorporate some of that code into your algorithm. Expand each step until you’ve detailed the entire process.

    • For example, the first step in our lasagna algorithm is Search for a recipe online. But what is involved in this search? Be specific. For example:
      • Turn on your computer.
        • Check to make sure you’re connected to the internet. Connect to the internet if you aren’t already.
      • Open a web browser.
      • Enter your search terms.
      • Click a recipe link.
      • Determine whether the recipe meets your needs.
        • Filter out recipes that aren’t vegetarian.
        • Make sure the recipe makes at least 5 servings.
      • Repeat some of these steps until you find the right recipe.
    • Consider the resources at your disposal, such as the capabilities of the system you’re developing a program for. In the case of lasagna, we assume the person making the lasagna knows how to search the internet, operate an oven, etc.
  6. Image titled Write an Algorithm in Programming Language Step 6

    6

    Review the algorithm. Now that you’ve written your algorithm, it’s time to evaluate the process. Your algorithm is designed to accomplish something specific, and you’ll need it to start writing your program. Ask yourself the following questions, and address each as necessary:[2]

    • Does the algorithm solve the problem/accomplish the task?
    • Does it have clearly defined inputs and outputs?
    • Should the end goal be redefined to be more general? More specific?
    • Can any of the steps be simplified?
    • Is the algorithm guaranteed to end with the correct result?
  7. Advertisement

Add New Question

  • Question

    How do I write an algorithm that 7 is greater than 5?

    nicholasz2510 Gaming, Travel, and Music

    nicholasz2510 Gaming, Travel, and Music

    Community Answer

    The syntax can vary over different languages, but to write the conditional 7 is greater than 5 would most likely by simply be this: 7 > 5.

  • Question

    How do I make an algorithm of the sum of two numbers?

    Adam Blalock

    Adam Blalock

    Community Answer

    To add two numbers in a programming language, you just use a «+» between them. In Python (a programming language), it would look like: x = 10, y = 13; print x + y.

  • Question

    Is there any way to understand this easier? I’m 15 and still trying to understand the concepts.

    Community Answer

    I just started programming and my college professors are very vague and make understanding the concepts pretty hard. Your best bet is to keep looking up the terms on Google, that’s what I’ve been doing, and it works to a degree.

See more answers

Ask a Question

200 characters left

Include your email address to get a message when this question is answered.

Submit

Advertisement

  • Check out existing algorithms for ideas on writing your own.

  • Use fast calculating iterations.

  • Focus on efficiency when coding.

Show More Tips

Thanks for submitting a tip for review!

Advertisement

About This Article

Article SummaryX

1. Determine the problem or task to accomplish.
2. Decide the starting point.
3. Figure out the endpoint.
4. List the steps that occur between the start and finish.
5. Break down the steps as necessary.
6. Review the algorithm and change where necessary.

Did this summary help you?

Thanks to all authors for creating a page that has been read 439,135 times.

Is this article up to date?

Схемаэто абстракция какого-либо процесса или системы, наглядно отображающая наиболее значимые части. Схемы широко применяются с древних времен до настоящего времени — чертежи древних пирамид, карты земель, принципиальные электрические схемы. Очевидно, древние мореплаватели хотели обмениваться картами и поэтому выработали единую систему обозначений и правил их выполнения. Аналогичные соглашения выработаны для изображения схем-алгоритмов и закреплены ГОСТ и международными стандартами.

На территории Российской Федерации действует единая система программной документации (ЕСПД), частью которой является Государственный стандарт — ГОСТ 19.701-90 «Схемы алгоритмов программ, данных и систем» [1]. Не смотря на то, что описанные в стандарте обозначения могут использоваться для изображения схем ресурсов системы, схем взаимодействия программ и т.п., в настоящей статье описана лишь разработка схем алгоритмов программ.

Рассматриваемый ГОСТ практически полностью соответствует международному стандарту ISO 5807:1985.

Содержание:

  1. Элементы блок-схем алгоритмов
  2. Примеры блок-схем
  3. Нужны ли блок-схемы? Альтернативы

Элементы блок-схем алгоритмов

Блок-схема представляет собой совокупность символов, соответствующих этапам работы алгоритма и соединяющих их линий. Пунктирная линия используется для соединения символа с комментарием. Сплошная линия отражает зависимости по управлению между символами и может снабжаться стрелкой. Стрелку можно не указывать при направлении дуги слева направо и сверху вниз. Согласно п. 4.2.4, линии должны подходить к символу слева, либо сверху, а исходить снизу, либо справа.

Есть и другие типы линий, используемые, например, для изображения блок-схем параллельных алгоритмов, но в текущей статье они, как и ряд специфических символов, не рассматриваются. Рассмотрены лишь основные символы, которых всегда достаточно студентам.

flowcharts_terminator
Терминатор начала и конца работы функции
Терминатором начинается и заканчивается любая функция. Тип возвращаемого значения и аргументов функции обычно указывается в комментариях к блоку терминатора.
flowcharts_data
Операции ввода и вывода данных
В ГОСТ определено множество символов ввода/вывода, например вывод на магнитные ленты, дисплеи и т.п. Если источник данных не принципиален, обычно используется символ параллелограмма. Подробности ввода/вывода могут быть указаны в комментариях.
flowcharts_process
Выполнение операций над данными
В блоке операций обычно размещают одно или несколько (ГОСТ не запрещает) операций присваивания, не требующих вызова внешних функций.
flowcharts_solution
Блок, иллюстрирующий ветвление алгоритма
Блок в виде ромба имеет один вход и несколько подписанных выходов. В случае, если блок имеет 2 выхода (соответствует оператору ветвления), на них подписывается результат сравнения — «да/нет». Если из блока выходит большее число линий (оператор выбора), внутри него записывается имя переменной, а на выходящих дугах — значения этой переменной.
flowcharts_procedure
Вызов внешней процедуры
Вызов внешних процедур и функций помещается в прямоугольник с дополнительными вертикальными линиями.
flowcharts_loop
Начало и конец цикла
Символы начала и конца цикла содержат имя и условие. Условие может отсутствовать в одном из символов пары. Расположение условия, определяет тип оператора, соответствующего символам на языке высокого уровня — оператор с предусловием (while) или постусловием (do … while).
flowcharts_preprocess
Подготовка данных
Символ «подготовка данных» в произвольной форме (в ГОСТ нет ни пояснений, ни примеров), задает входные значения. Используется обычно для задания циклов со счетчиком.
flowcharts_connector
Соединитель
В случае, если блок-схема не умещается на лист, используется символ соединителя, отражающий переход потока управления между листами. Символ может использоваться и на одном листе, если по каким-либо причинам тянуть линию не удобно.
flowcharts_comment
Комментарий
Комментарий может быть соединен как с одним блоком, так и группой. Группа блоков выделяется на схеме пунктирной линией.

Примеры блок-схем

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

Сортировка вставками

Массив в алгоритме сортировки вставками разделяется на отсортированную и еще не обработанную части. Изначально отсортированная часть состоит из одного элемента, и постепенно увеличивается.

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

insertsort_flowchart

Блок-схема алгоритма сортировки вставками

В приведенной блок-схеме для организации цикла используется символ ветвления. В главном цикле (i < n) перебираются элементы необработанной части массива. Если все элементы обработаны — алгоритм завершает работу, в противном случае выполняется поиск позиции для вставки i-того элемента. Искомая позиция будет сохранена в переменной j в результате выполнения внутреннего цикла, осуществляющем сдвиг элементов до тех пор, пока не будет найден элемент, значение которого меньше i-того.

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

Сортировка пузырьком

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

bubblesort_flowchart

Блок-схема алгоритма сортировки пузырьком

На блок-схеме показано использование символов начала и конца цикла. Условие внешнего цикла (А) проверяется в конце (с постусловием), он работает до тех пор, пока переменная hasSwapped имеет значение true. Внутренний цикл использует предусловие для перебора пар сравниваемых элементов. В случае, если элементы расположены в неправильном порядке, выполняется их перестановка посредством вызова внешней процедуры (swap). Для того, чтобы было понятно назначение внешней процедуры и порядок следования ее аргументов, необходимо писать комментарии. В случае, если функция возвращает значение, комментарий может быть написан к символу терминатору конца.

Сортировка выбором

В сортировке выбором массив разделяется на отсортированную и необработанную части. Изначально отсортированная часть пустая, но постепенно она увеличивается. Алгоритм производит поиск минимального элемента необработанной части и меняет его местами с первым элементом той же части, после чего считается, что первый элемент обработан (отсортированная часть увеличивается).

selectsort_flowchart

Блок-схема сортировки выбором

На блок-схеме приведен пример использования блока «подготовка», а также показано, что в ряде случаев можно описывать алгоритм более «укрупнённо» (не вдаваясь в детали). К сортировке выбором не имеют отношения детали реализации поиска индекса минимального элемента массива, поэтому они могут быть описаны символом вызова внешней процедуры. Если блок-схема алгоритма внешней процедуры отсутствует, не помешает написать к символу вызова комментарий, исключением могут быть функции с говорящими названиями типа swap, sort, … .

На блоге можно найти другие примеры блок-схем:

  • блок-схема проверки правильности расстановки скобок арифметического выражения [2];
  • блок-схемы алгоритмов быстрой сортировки и сортировки слиянием [3].

Часть студентов традиционно пытается рисовать блок-схемы в Microsoft Word, но это оказывается сложно и не удобно. Например, в MS Word нет стандартного блока для терминатора начала и конца алгоритма (прямоугольник со скругленными краями, а не овал). Наиболее удобными, на мой взгляд, являются утилиты MS Visio и yEd [5], обе они позволяют гораздо больше, чем строить блок-схемы (например рисовать диаграммы UML), но первая является платной и работает только под Windows, вторая бесплатная и кроссплатфомренная. Все блок-схемы в этой статье выполнены с использованием yEd.

Частные конторы никакие блок-схемы не используют, в книжках по алгоритмам [6] вместо них применяют словесное описание (псевдокод) как более краткую форму. Возможно блок-схемы применяют на государственных предприятиях, которые должны оформлять документацию согласно требованиям ЕСПД, но есть сомнения — даже для регистрации программы в Государственном реестре программ для ЭВМ никаких блок-схем не требуется.

Тем не менее, рисовать блок-схемы заставляют школьников (примеры из учебников ГОСТ не соответствуют) — выносят вопросы на государственные экзамены (ГИА и ЕГЭ), студентов — перед защитой диплом сдается на нормоконтроль, где проверяется соответствие схем стандартам.

Разработка блок-схем выполняется на этапах проектирования и документирования, согласно каскадной модели разработки ПО, которая сейчас почти не применяется, т.к. сопровождается большими рисками, связанными с ошибками на этапах проектирования.

Появляются подозрения, что система образования прогнила и отстала лет на 20, однако аналогичная проблема наблюдается и за рубежом. Международный стандарт ISO 5807:1985 мало чем отличается от ГОСТ 19.701-90, более нового стандарта за рубежом нет. Там же производится множество программ для выполнения этих самых схем — Dia, MS Visio, yEd, …, а значит списывать их не собираются. Вместо блок-схем иногда применяют диаграммы деятельности UML [6], однако удобнее они оказываются, разве что при изображении параллельных алгоритмов.

Периодически поднимается вопрос о том, что ни блок-схемы, ни UML не нужны, да и документация тоже не нужна. Об этом твердят программисты, придерживающиеся методологии экстремального программирования (XP) [7], ходя даже в их кругу нет единого мнения.

В ряде случаев, программирование невозможно без рисования блок-схем, т.к. это один процесс — существуют визуальные языки программирования, такие как ДРАКОН [8], кроме того, блок-схемы используются для верификации алгоритмов (формального доказательства их корректности) методом индуктивных утверждений Флойда [9].

В общем, единого мнения нет. Очевидно, есть области, в которых без чего-то типа блок-схем обойтись нельзя, но более гибкой альтернативы нет. Для формальной верификации необходимо рисовать подробные блок-схемы, но для проектирования и документирования такие схемы не нужны — я считаю разумным утверждение экстремальных программистов о том, что нужно рисовать лишь те схемы, которые помогают в работе и не требуют больших усилий для поддержания в актуальном состоянии [10].

Список использованных источников:

  1. ГОСТ 19.701–90 (ИСО 5807–85) «Единая система программной документа­ции».
  2. Алгоритм. Свойства алгоритма https://pro-prof.com/archives/578
  3. Алгоритмы сортировки слиянием и быстрой сортировки https://pro-prof.com/archives/813
  4. yEd Graph Editor https://www.yworks.com/products/yed
  5. Книги: алгоритмы https://pro-prof.com/books-algorithms
  6. Рамбо Дж., Якобсон А., Буч Г. UML: специальный справочник. -СПб.: Питер, 2002. -656 с.
  7. Кент Бек Экстремальное программирование: разработка через тестирование – СПб.: Питер – 2003
  8. Визуальный язык ДРАКОН https://drakon.su/
  9. Шилов Н.В. Верификация шаблонов алгоритмов для метода отката и метода ветвей и границ. Моделирование и анализ информационных систем, ISSN 1818 – 1015, т.18, №4, 2011
  10. Брукс Ф., Мифический человеко — месяц или как создаются программные системы. СПб. Символ Плюс, 1999 — 304 с. ил.

Понравилась статья? Поделить с друзьями:
  • Как составить план урока физкультуры
  • Как найти дельта стороны
  • Как найти периметр авсд прямоугольник
  • Как с помощью диспетчера задач найти вирус
  • Как исправить ошибку 0xc0000005 при запуске всех приложений