Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пз_12_Элементы алгоритмизации.doc
Скачиваний:
3
Добавлен:
14.09.2019
Размер:
400.9 Кб
Скачать

3. Представление алгоритмов с помощью схем

Общепринятыми способами записи являются: графическая запись с помощью схем и символьная запись с помощью какого-либо алгоритмического языка.

Схема алгоритма  это графический способ представления алгоритма, каждое действие при этом изображается в виде последовательности связанных символов. Порядок выполнения действий указывается стрелками. Написание алгоритмов с помощью функциональных символов регламентируется: ГОСТ 19.701-90 ЕСПД. Схемы алгоритмов, программ, данных и систем. Обозначения условные и правила выполнения. Внешний вид основных функциональных символов, применяемых при написании схем алгоритмов, приведён в табл. 1.

Таблица 1

Название

Символ

(рисунок)

Выполняемая функция (пояснение)

1. Процесс

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

2. Решение

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

3. Данные

Символ отображает данные, носитель данных не определён.

4. Документ

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

5. Граница цикла

Группа 119

Символ, состоящий из двух частей, отображает начало и конец цикла. Обе части символа имеют один и тот же идентификатор. Условия для инициализации, приращения, завершения и т.д. помещаются внутри символа в начале или в конце, в зависимости от расположения операции, проверяющей условие.

6. Предопределённый процесс

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

7. Соединитель

Символ отображает выход в часть схемы и вход из другой части этой схемы и используется для обрыва линии и продолжения её в другом месте.

8. Терминатор

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

9. Ручной ввод

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

10. Дисплей

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

Правила построения схем алгоритмов:

  • схема алгоритма строится сверху вниз;

  • в любой схеме алгоритма имеется только один элемент, соответствующий началу алгоритма, и один элемент, соответствующий концу алгоритма;

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

  • должен быть хотя бы один путь от каждого элемента в конец схемы алгоритма.

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

1. Метод структурного построения – любой алгоритм может быть построен из комбинации трёх базовых структур: линейный алгоритм (следование), разветвляющийся алгоритм (развилка) и цикличный алгоритм (повтор).

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

3. Метод пошаговой декомпозиции.

4. Метод модульности (модель – логически связанные фрагменты программы, выполняющие одну функцию и состоящие из обозримого числа шагов).

Например, требуется построить схему алгоритма для вычисления значения функции z(x)= , при x = 10. Результат вывести на экран монитора.

Используя символы таблицы 3.1 и приведённые правила построения схем алгоритмов, получим (рис. 3.1):

Входные параметры алгоритма: x=10.

Выходные параметры алгоритма: z(10).

Задание 1. Установите порядок выполнения операций для вычисления значения выражения Y=3*(X-Z)3 + 2*Z.

Группа 103

  • Y=Y+Y+Y

  • Y=Y+2*Z

  • Y=Y*Y*Y

  • Y=X-Z

Задание 2. Установите порядок выполнения операций так, чтобы при начальных значениях x=N+2, y=N-3, z=2*N (где N  номер студента по журналу) результирующим стало значение z=10.

  • z = z*z 4*z

  • x = x-2*y

  • x = x*x

  • z = 4*x z

Задание 3. На рис. 1 предложен алгоритм вычисления значения переменной C в зависимости от начальных условий X и Y.

а) Чему будет равно значение переменной С в результате выполнения алгоритма (рис. 1) при начальных условиях (см. табл. 2)

б) Какая ошибка допущена в схеме алгоритма на рис. 1?

в) Как производится ввод данных (начальных условий) алгоритма (рис. 1) и куда выводится результат работы данного алгоритма?

Таблица 2

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

X=1

X=4

X=-3

X=0

X=-1

X=7

X=3

X=8

X=2

X=-3

X=-6

X=1

X=5

X=-4

X=4

Y=-2

Y=8

Y=1

Y=5

Y=-1

Y=3

Y=-4

Y=11

Y=5

Y=-1

Y=0

Y=-2

Y=8

Y=-3

Y=9

Задание 4. Задан фрагмент алгоритма (рис. 2).

а) Какие значения примут переменные k и z в результате выполнения данного алгоритма с начальными значениями из табл. 2?

б) Изменятся ли значения переменных k и z в результате выполнения данного алгоритма при тех же начальных условиях (табл. 2), если во втором символе «Решение» условие изменить на (z<0) или (x<y)?

Чему в этом случае будут равны значения переменных k и z?

Группа 77

Группа 57

Рис. 2.

Задание 5. Укажите пропущенный фрагмент в алгоритме (рис. 4):

а) определяющем количество положительных элементов в массиве G[i],

б) определяющем количество отрицательных элементов в массиве G[i],

Задание 6. Как необходимо изменить алгоритм (рис. 4), чтобы он

а) определял сумму всех элементов массива G;

б) определял сумму всех чётных элементов массива G;

в) произведение всех элементов массива G;

г) произведение всех нечётных элементов массива G.

Прямоугольник 30 Группа 31 SHAPE \* MERGEFORMAT

Рис. 4.

Задание 7. Задан одномерный массив A1, A2, A3, …, An. Что определяет указанный на рис. 5 фрагмент алгоритма?

Прямая соединительная линия 17 Блок-схема: процесс 29 Прямая соединительная линия 24 Блок-схема: процесс 19 Прямая соединительная линия 16 Прямая соединительная линия 28 Блок-схема: процесс 15

Нет

Нет

Прямая соединительная линия 27

Да

Да

Блок-схема: процесс 18 Блок-схема: решение 22 Блок-схема: решение 23

Прямая соединительная линия 13 Прямая соединительная линия 14

Прямая соединительная линия 12

Прямая соединительная линия 11

Рис. 5.

4. Описание алгоритмов с помощью псевдокода

Псевдокод  система обозначений и правил, предназначенная для единообразной записи алгоритмов. Занимает промежуточное место между естественным и формальным языками. С одной стороны, он близок к обычному естественному языку, поэтому алгоритмы могут на нём записываться и читаться как обычный текст. С другой стороны, в псевдокоде используются некоторые формальные конструкции и математическая символика, что приближает запись алгоритма к общепринятой математической записи.

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

Оператор присваивания  служит для вычисления выражений и присваивания их значений переменным. Общий вид: А := В, где знак ":=" означает команду заменить прежнее значение переменной, стоящей в левой части, на вычисленное значение выражения, стоящего в правой части.

Например, a := (b+c)*sin(Pi/4); i:= i+1.

Для ввода и вывода данных используют команды

ввод или считать (имена переменных);

вывод или написать (имена переменных, выражения, тексты).

Для ветвления применяют команды если…то и выбор, для организации циклов  команды для…до и пока.

Задание 8. Что выполняет приведённая ниже программа 1?

Программа 1;

Начать программу

Написать (‘Введите значение M’);

Считать (M);

Написать (‘Введите значение X’);

Считать (X);

Написать (‘Введите значение K’);

Считать (K);

Начало цикла

Для i=1 до M

Написать (X);

X:= X+K;

Конец цикла;

Конец программы.

Задание 9. Чему будет равно значение переменной Z после выполнения фрагмента алгоритма (начальные значения X и Y взять из табл. 3.2)?

7) Если X<Y, то Z=2*(X+Y)

иначе Z=2*(X-Y);

8) Если Z>Y, то Z=

иначе Z=(Z-1)2;

9) Если ZX, то Z=Z+2*X;

Задание 10. Чему будет равно значение переменной s после выполнения ниже приведённого фрагмента алгоритма, где N – номер студента по журналу?

s:=0;

Начало цикла i

Для i от 1 до N+2

Начало цикла j

Для j от 1 до i

s:=n+1;

Конец цикла j

Конец цикла i

Вывод s

Задание 11. Дан массив целых чисел A[i], (N  номер студента по журналу). Что выводит приведенная ниже программа 2?

Программа 2;

Начать программу

Написать (‘Введите элементы массива A’);

Начало цикла i1

Для i от 1 до N+3

Считать (A[i]);

Конец цикла i1;

X:=A[N];

Начало цикла i2

Для i от 1 до N+2

Если A[i]>X то X:=A[i];

Конец цикла i2;

Написать (X);

Конец программы.