Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
(1)АСД курс / 1_semestr_lab / Lab01_razrabotka_i_ofor.doc
Скачиваний:
81
Добавлен:
06.02.2016
Размер:
4.45 Mб
Скачать

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  2. Исходные данные вводятся в оперативную память ПК. Для обозначения этой операции используется символ «ввод-вывод». Внутри этого символа указывается имя и размер массива A: [Ai]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).

Соседние файлы в папке 1_semestr_lab