- Средства описания структурных алгоритмов
- Уроки 31 — 32 Алгоритмы, структуры алгоритмов, структурное программирование
- Алгоритмы и величины
- Этапы решения задачи на компьютере
- Понятие алгоритма
- Данные и величины
- Вопросы и задания
- Структура алгоритмов
- Базовые алгоритмические структуры
- Комбинации базовых структур
- Вопросы и задания
- Паскаль — язык структурного программирования
- Эволюция программирования
- Языки программирования высокого уровня
- История Паскаля
- Структура процедурных языков программирования высокого уровня
- Структура программы на Паскале
- Вопросы и задания
Средства описания структурных алгоритмов
План темы
1. Основные и дополнительные алгоритмические структуры.
2. Средства описания структурных алгоритмов.
Основные и дополнительные алгоритмические структуры
Одним из способов обеспечения высокого уровня технологичности разрабатываемого программного обеспечения является структурное программирование.
Различают три вида вычислительного процесса, реализуемого программами: линейный, разветвленный и циклический.
Линейная структура процесса вычислений предполагает, что для получения результата необходимо выполнить некоторые операции в определенной последовательности.
Разветвленная структура процесса вычислений предполагает, что конкретная последовательность операций зависит от значений одной или нескольких переменных.
Циклическая структура процесса вычислений предполагает, что для получения результата некоторые действия необходимо выполнить несколько раз.
После того, как в 60-х годах XX в. было доказано, что любой алгоритм можно представить с использованием трех основных управляющих конструкций, в языках программирования высокого уровня появились управляющие операторы для реализации соответствующих конструкций. Эти три конструкции принято считать базовыми. К ним относят:
· следование – обозначает последовательное выполнение действий;
· ветвление – соответствует выбору одного из двух вариантов действий;
· цикл-пока – определяет повторение действий, пока не будет нарушено некоторое условие, выполнение которого проверяется в начале цикла.
Помимо базовых конструкций, языки программирования высокого уровня обычно используют еще три конструкции, которые можно составить из базовых конструкций:
· выбор – обозначает выбор одного варианта из нескольких в зависимости от значения некоторой величины;
· цикл-до – обозначает повторение некоторых действий до выполнения заданного условия, проверка которого осуществляется после выполнения действий в цикле;
· цикл с заданным числом повторений (счетный цикл) – обозначает повторение некоторых действий указанное количество раз.
Эти шесть конструкций были положены в основу структурного программирования.
Рис. 1. Базовые конструкции: а – следование; б – ветвление; в – цикл-пока
Рис. 2. Дополнительные конструкции: а – выбор; б – цикл-до; в – счетный цикл
Программы, написанные с использованием только структурных операторов передачи управления, называют структурными.
Представление алгоритма программы в виде блок-схемы с точки зрения структурного программирования имеет два недостатка:
· предполагает слишком низкий уровень детализации, что часто скрывает суть сложных алгоритмов;
· позволяет использовать неструктурные способы передачи управления, причем часто в блок-схеме они выглядят проще, чем эквивалентные структурные.
Кроме блок-схем, для описания алгоритмов можно использовать псевдокоды, Flow-формы и диаграммы Насси-Шнейдермана.
Средства описания структурных алгоритмов
Псевдокоды. Псевдокод – формализованное текстовое описание алгоритма (текстовая нотация).
Использование псевдокодов ориентирует только на структурные способы передачи управления и потому требует более тщательного анализа разрабатываемого алгоритма. Псевдокоды хорошо согласуются с основным методом структурного программирования – методом пошаговой детализации.
Таблица 1. Псевдокоды
Задача. В векторе A(n) найти заданное число y.
Цикл-пока i≤n и A[i]≠у
то Вывести «Элемент найден»
иначе Вывести «Элемент не найден»
Flow-формыпредставляют собой графическую нотацию описания структурных алгоритмов, которая иллюстрирует вложенность структур. Каждый символ Flow-формы соответствует управляющей структуре и изображается в виде прямоугольника. Для демонстрации вложенности структур символ Flow-формы может быть вписан в соответствующую область прямоугольника любого другого символа. В прямоугольниках символов содержится текст на естественном языке или в математической нотации. Размер прямоугольника определяется длиной вписанного в него текста и размерами вложенных прямоугольников.
На рис. 3 представлен фрагмент поискового цикла с использованием Flow-формы.
Рис. 3. Алгоритм поискового цикла
Диаграммы Насси-Шнейдермана являются развитием Flow-форм. Основное их отличие от Flow-форм заключается в том, что область обозначения условий и вариантов ветвления изображают в виде треугольников (рис. 4). Такое обозначение обеспечивает большую наглядность представления алгоритма.
Рис. 4. Условные обозначения диаграмм Насси-Шнейдермана для основных конструкций: а – следование; б – ветвление; в – выбор; г – цикл-пока; д – цикл-до
Графические нотации лучше отображают вложенность конструкций, чем псевдокоды.
Недостатком Flow-форм и диаграмм Насси-Шнейдермана является сложность построения изображений символов, что усложняет практическое применение этих нотаций для описания больших алгоритмов.
Источник
Уроки 31 — 32
Алгоритмы, структуры алгоритмов, структурное программирование
Алгоритмы и величины
Этапы решения задачи на компьютере
Часто эту последовательность называют технологической цепочкой решения задачи на компьютере. Непосредственно к программированию в этом списке относятся пункты 3, 4, 5. На этапе постановки задачи должно быть четко определено, что дано и что требуется найти. Здесь очень важно определить полный набор исходных данных, необходимый для решения задачи. Второй этап — формализация задачи. Здесь чаще всего задача переводится на язык математических формул, уравнений, отношений. Если решение задачи требует математического описания какого-то реального объекта, явления или процесса, то формализация равносильна получению соответствующей математической модели. Третий этап — построение алгоритма. Опытные программисты часто сразу пишут программы на языках программирования, не прибегая к каким-либо специальным способам описания алгоритмов (блок-схемам, псевдокодам). Однако в учебных целях полезно использовать эти средства, а затем переводить полученный алгоритм на язык программирования. Первые три этапа — это работа без компьютера. Дальше следует собственно программирование на определенном языке в определенной системе программирования. Последний (шестой) этап — это уже использование разработанной программы в практических целях. Выполнение учебных заданий на программирование обычно заканчивается пятым этапом, т. е. доказательством правильности составленной программы. Таким образом, программист должен обладать следующими знаниями и навыками: • уметь строить алгоритмы; Основой программистской грамотности является развитое алгоритмическое мышление. Понятие алгоритмаОдним из фундаментальных понятий в информатике является понятие алгоритма. Сам термин «алгоритм» пришел из математики. Это слово происходит от «Algorithmi» — латинского написания имени Мухамеда аль-Хорезми (787-850 гг.), выдающегося математика средневекового Востока. В XII веке был осуществлен латинский перевод его математического трактата, из которого европейцы узнали о десятичной позиционной системе счисления и правилах арифметики многозначных чисел. Именно эти правила в то время называли алгоритмами. Сложение, вычитание, умножение «столбиком», деление «уголком» многозначных чисел — вот первые алгоритмы в математике. Правила алгебраических преобразований, вычисление корней уравнений также можно отнести к математическим алгоритмам. В наше время понятие алгоритма трактуется шире.
В школьном курсе информатики с понятием алгоритма, с методами построения алгоритмов ученики впервые знакомятся на примерах учебных исполнителей: Робота, Черепашки, Чертежника и др. В учебнике для 9 класса описан графический исполнитель — ГРИС. Эти исполнители ничего не вычисляют. Они создают рисунки на экране, перемещаются в лабиринтах, перетаскивают предметы с места на место. Таких исполнителей принято называть исполнителями, работающими в обстановке. В разделе информатики под названием «Программирование» изучаются методы программного управления работой компьютера. Следовательно, в качестве исполнителя выступает компьютер. Он работает с величинами — различными информационными объектами: числами, символами, кодами и пр. Поэтому алгоритмы, предназначенные для управления компьютером, принято называть алгоритмами работы с величинами. Данные и величины
По отношению к программе данные делятся на исходные, результаты (окончательные данные) и промежуточные данные, которые получаются в процессе вычислений (рис. 3.1). Например, при решении квадратного уравнения: ах 2 + bх + с = 0 исходными данными являются коэффициенты а, b, с; результатами — корни уравнения х1, х2; промежуточными данными — дискриминант уравнения: D = b 2 — 4ас. Для успешного освоения программирования необходимо усвоить следующее правило: всякая величина занимает свое определенное место в памяти компьютера. Иногда говорят — ячейку памяти. Хотя термин «ячейка», с точки зрения архитектуры современных компьютеров, несколько устарел, однако в учебных целях его удобно использовать. У всякой величины имеются три основных свойства: имя, значение и тип. На уровне команд процессора величина идентифицируется адресом ячейки памяти, в которой она хранится. В алгоритмах и языках программирования величины делятся на константы и переменные. Константа — неизменная величина, и в алгоритме она представляется собственным значением, например: 15, 34.7, ‘k’, true. Переменные величины могут изменять свои значения в ходе выполнения программы и представляются символическими именами — идентификаторами, например: X, S2, cod15. Любая константа или переменная занимают ячейку памяти, а значение этих величин определяется двоичным кодом в этой ячейке. Теперь о типах величин — типах данных. С понятием типа данных вы уже встречались, изучая в курсе информатики основной школы электронные таблицы и базы данных. Это понятие является фундаментальным для программирования. В каждом языке программирования существует своя концепция типов данных, своя система типов. Однако в любой язык входит минимально необходимый набор основных типов данных, к которому относятся целый, вещественный, логический и символьный типы. С типом величины связаны три ее свойства: множество допустимых значений, множество допустимых операций, форма внутреннего представления. В таблице 3.1 представлены эти свойства основных типов данных. Типы констант определяются по контексту (т. е. по форме записи в тексте), а типы переменных устанавливаются в описаниях переменных. Есть еще один вариант классификации данных: классификация по структуре. Данные делятся на простые и структурированные. Для простых величин (их еще называют скалярными) справедливо утверждение: одна величина — одно значение. Для структурированных: одна величина — множество значений. К структурированным величинам относятся массивы, строки, множества и др.
Как известно, всякий алгоритм (программа) составляется для конкретного исполнителя, в рамках его системы команд. О каком же исполнителе идет речь в теме «Программирование обработки информации»? Ответ очевиден: исполнителем является компьютер. Точнее говоря, исполнителем является комплекс: компьютер + система программирования (СП). Программист составляет программу на том языке, на который ориентирована СП. Схематически это изображено на рис. 3.2, где входным языком исполнителя является язык программирования Паскаль. Независимо от того, на каком языке программирования будет написана программа, алгоритм решения любой задачи на компьютере может быть составлен из команд: • присваивания; Для описания алгоритмов в дальнейшем мы будем использовать блок-схемы и учебный Алгоритмический язык, применяемый в школьном курсе информатики. Вопросы и задания1. Перечислите и охарактеризуйте этапы решения задач на компьютере. 2. Дайте определение алгоритма. 3. Что такое «система команд исполнителя алгоритмов» (СКИ)? 4. Какими возможностями обладает компьютер как исполнитель алгоритмов? 5. Назовите команды, входящие в СКИ компьютера, из которых составляется любая программа обработки данных. 6. Перечислите различные варианты классификации данных. 7. Придумайте пример задачи, решаемой на компьютере, и назовите для нее исходные, промежуточные и итоговые данные. Структура алгоритмов
|