logo search
ответы информатика

Вопрос 47. Способы описания алгоритмов. Типовые алгоритмические конструкции. Примеры.

Алгоритм - точное предписание исполнителю совеpшить определенную последовательность действий для достижения поставленной цели за конечное число шагов.

Алгоритмы  можно  записывать  не только при помощи слов. В настоящее время различают  несколько способов описания алгоритмов: 


1. Словесный,  т.е. записи на естественном языке, описание словами последовательности выполнения алгоритма.

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


2. Формульно-словесный, аналогично пункту 1, плюс параллельная демонстрация используемых формул.

В качестве примера можно привести ведение лекций преподавателем (словесный способ) с одновременной записью формул на доске (формульный).


3. Графический, т.е. с помощью блок-схем.

Графический способ представления алгоритмов является более компактным и наглядным по сравнению со словесным. При графическом исполнении алгоритм изображается в виде последовательности связанных между собой блочных символов, каждый из которых соответствует выполнению одного из действий. Такое графическое представление называется схемой алгоритма или блок-схемой. В блок-схеме каждому типу действий (вводу исходных данных, вычислению значений выражений, проверке условий, управлению повторением действий, окончанию обработки и т.п.) соответствует геометрическая фигура, представленная в виде блочного символа. Блочные символы соединяются линиями переходов, определяющими очередность выполнения действий. Символы, наиболее часто употребляемые в блок-схемах.


4. Программный, т.е. тексты на языках программирования.

cls

input a, b

c = a + b

print c

Рассмотрим примеры разработки программ.

Задача 1

Дан кирпич прямоугольной формы со сторонами A, B, C и прямоугольное отверстие в стене со сторонами X и Y. Определить, пройдет ли кирпич в отверстие, если допускается располагать его грани только параллельно сторонам отверстия.

Решение

Основная идея решения заключается в упорядочивании сторон кирпича и отверстия по возрастанию. Если меньшая сторона кирпича меньше меньшей стороны отверстия, а вторая по размеру сторона кирпича меньше большей стороны отверстия, то кирпич пройдет, иначе — нет. Таким образом, требуется решить подзадачи упорядочивания сторон кирпича и сторон отверстия. Поскольку цель задачи — дать ответ "пройдет" или "не пройдет", будем выполнять упорядочивание, не вводя новых переменных. Для сторон отверстия задача решается просто: если X>Y, то обменять значения X и Y. Упорядочить стороны кирпича можно за три обмена: A и B, B и C и вновь A и B. Блок-схема алгоритма решения задачи показана на рис. 1.

Код программы:

Option Explicit
Private Sub Main()
  Dim A As Single, B As Single
  Dim C As Single, X As Single
  Dim Y As Single, R As Single
  A = CSng(InputBox("Введите A"))
  B = CSng(InputBox("Введите B"))
  C = CSng(InputBox("Введите C"))
  X = CSng(InputBox("Введите X"))
  Y = CSng(InputBox("Введите Y"))
  If A>B Then R=A: A=B: B=R
  If B>C Then R=B: B=C: C=R
  If A>B Then R=A: A=B: B=R
  If X>Y Then R=X: X=Y: Y=R
  If A<X AND B<Y then
    MsgBox("Пройдет")
  Else
    MsgBox("Не пройдет")
  End If
End Sub

В коде программы следует обратить внимание на форму записи команд ветвления, используемых для обмена величин: каждая из них занимает одну строку. При этом команды присваивания после служебного слова Then разделены двоеточием. Для такой синтаксической формы не следует использовать команду End If.

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

Блок – схемы. Условные обозначения

Начало - конец

Процесс

Ввод-вывод

Типовой
процесс

Решение (условие)

Базовые алгоритмические структуры  

Следование

Ветвление

Повторение (цикл)