Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_Схемы алгоритмов программ_версия3.doc
Скачиваний:
1
Добавлен:
14.08.2019
Размер:
4.41 Mб
Скачать

3.2.1. Применение соединений на схемах

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

  • схема выполнена на двух или более листах;

  • соединяемые символы расположены на значительном расстоянии друг от друга;

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

Если в случае обрыва линии потока продолжение программы дано на том же листе, без переноса на другой лист, на месте обрыва на одном и другом конце линии потока изображается символ «соединитель», представляющий собой окружность диаметром 0.5a. Внутри окружностей указывается один и тот же идентификатор.

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

Если схема занимает более одного листа, линия потока обрывается, а для связи символов используется межстраничный соединитель. Внутри символа «межстраничный соединитель» указывается адрес – откуда (или куда) направлена линия потока. Надпись дается в две строки: в первой строке указывается номер листа, во второй – порядковый номер символа, или его координаты.

  1. Составление схем алгоритмов

    1. Общие рекомендации с примерами схем алгоритмов.

Как составить схему алгоритма? Начнем с рассмотрения конкретного примера. Допустим, имеется одномерный массив целых чисел. Число элементов массива – 20; A – имя массива; i – индекс элемента, определяющий его порядковый номер. Максимальное значение i = 20. Требуется определить сумму всех элементов массива A. Обозначим сумму буквой S.

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

На схеме каждая операция отражается в виде определенной геометрической фигуры – символа, внутри которого дается формализованная запись выполненной операции.

Рассмотрим последовательность выполнения схемы алгоритма.

  1. Изображение схемы начнем с символа «пуск - останов», так как каждый вычислительный процесс имеет начало и конец и это должно быть отражено на схеме. Внутри символа пишется слово «начало» (рис 4.1).

  2. Исходные данные вводятся в оперативную память ПК. Для обозначения этой операции используется символ «ввод-вывод». Внутри этого символа указывается имя и размер массива A : [A i]20.

  3. По условию задачи необходимо определить сумму элементов массива. Сумма обозначена произвольно выбранной буквой S. Пользуясь символом «комментарий», расшифровываем принятое обозначение, чтобы каждый мог прочесть его однозначно. Сумме S присваивается нулевое значение. Это означает пересылку 0 в ту ячейку, которая предназначена для накапливания суммы. Мы как бы очищаем ячейку от каких-либо других значений, что бы не допустить искажения результата. Для отображения операции присваивания на схеме используется символ «процесс».

В этом месте необходимы следующие пояснения. Алгоритм описывает действия не над конкретными значениями, а над абстрактными объектами. Основными объектами программирования являются переменные. Переменные в программе отличаются от переменных, используемых в записи математических формул. Несмотря на сходство терминов, правила использования переменных в программах для ПК отличаются от правил работы с математическими переменными. Это различие необходимо учесть. В программировании переменную можно трактовать как одну или несколько ячеек оперативной памяти ПК, которым присвоено определенное имя. Содержимое этих ячеек может меняться, но имя переменной остается неизменным.

В математике значение переменной в рамках определенной задачи неизменно, но меняется в других задачах из данного класса. Именно поэтому конструкция

S = S + 1

воспринимается программистом совершенно естественно, а уравнение

S = S + 1

математик сочтет неверным. В первом случае имеется в виду вычисление суммы содержимого ячейки S и числовой константы 1 и занесение полученного результата в ту же ячейку S. Второй случай равносилен неверному тождеству 0 = 1.

  1. Начальные значения индекса i, определяющий порядковый номер элемента, принимает значение 1, i = 1, обращается к первому элементу массива.

  2. Далее необходимо 20 раз выполнить однотипные операции по добавлению к сумме S очередного значения элемента массива: S = S + ai. Повторяющиеся однотипные действия оформляются в виде цикла, для чего используются символы начала и конца цикла. В эти символы вписывается признак (имя) цикла и в один из них ─ условие завершения цикла. Следует обратить внимание, что в соответствии с ГОСТ 19.701-90 в символ цикла вписывается условие его завершения, а в большинстве языков программирования используется логическое выражение продолжения работы цикла (если «истина» ─ работа цикла продолжается). На каждой итерации цикла (одно выполнение тела цикла) в ячейке памяти, предназначенной для S, появляется новое значение суммы.

  3. Для использования на каждой итерации цикла очередного значения элемента массива ai, необходимо увеличивать каждый раз индекс на 1. С увеличением значения i на 1 (i = i + 1) получаем новый элемент массива, для чего используется символ «модификация».

  4. Если значение i превысит значение 20 ─ цикл завершит свою работу. За рамками цикла, получив окончательный результат, т.е. сумму всех 20 элементов массива, значение S выдается на печать. Операция вывода данных отображается на схеме символом «ввод-вывод». Внутри символа следует написать S.

  5. Заканчивается схема символом «пуск-останов», внутри которого пишется слово «конец».

Рис. 4.1. Схема алгоритма

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

Пример 1.Пользователь вводит 3 различных числа. Определить из них наибольшее значение.

Пример 2. Дан линейный массив чисел [ Аi ]30 . Определить в нём наибольшее значение элементов.

Пример 3. Дан линейный массив чисел [Ai]50. Определить среднеарифметическое значение элементов массива.

Пример 4.Определить номер элемента в ряду чисел Фибоначчи, значение которого впервые превысит контрольное значение М. Начало ряда чисел: 1, 1, 2, 3, 4, 5 … т.е, каждое следующее число равно сумме двух предыдущих. (М>2).

Пример 6. Дан линейный массив чисел [ Аi ]50 . Определить среднеарифметическое значение отдельно для положительных и отдельно для отрицательных значений элементов массива. (ноль считать положительным значением)

Пример 7. Дан двухмерный массив чисел [ Bi,j ]20x30. Определить максимальный элемент в каждом столбце и его координаты (i, j).