
- •Центральный филиал
- •Тема 6: «Основы алгоритмизации»
- •Тема 6.2. Основы алгоритмизации
- •Литература
- •Содержание занятия и методика его проведения
- •1. Основные понятия моделирования систем, процессов и явлений
- •2. Алгоритм: понятие, свойства, виды
- •Способы записи алгоритмов наиболее распространены следующие формы представления алгоритмов:
- •3. Представление алгоритмов с помощью схем
- •Вопросы для самопроверки
3. Представление алгоритмов с помощью схем
Общепринятыми способами записи являются: графическая запись с помощью схем и символьная запись с помощью какого-либо алгоритмического языка.
Схема алгоритма это графический способ представления алгоритма, каждое действие при этом изображается в виде последовательности связанных символов. Порядок выполнения действий указывается стрелками. Написание алгоритмов с помощью функциональных символов регламентируется: ГОСТ 19.701-90 ЕСПД. Схемы алгоритмов, программ, данных и систем. Обозначения условные и правила выполнения. Внешний вид основных функциональных символов, применяемых при написании схем алгоритмов, приведён в табл. 1.
Таблица 1
Название |
Символ (рисунок) |
Выполняемая функция (пояснение) |
1. Процесс |
|
Символ отображает функцию обработки данных любого вида (выполнение определённой операции или группы операций, приводящее к изменению значения, формы или размещения информации или к определению, по которому из нескольких направлений потока следует двигаться). |
2. Решение |
|
Символ отображает решение или функцию переключательного типа, имеющую один вход и ряд альтернативных выходов, один и только один из которых может быть активизирован после вычисления условий, определённых внутри этого символа. |
3. Данные |
|
Символ отображает данные, носитель данных не определён. |
4. Документ |
|
Символ отображает данные, представленные на носителе в удобочитаемой форме (машинограмма, документ для оптического или магнитного считывания, микрофильм, рулон ленты с итоговыми данными, бланки ввода данных). |
5. Граница цикла |
|
Символ, состоящий из двух частей, отображает начало и конец цикла. Обе части символа имеют один и тот же идентификатор. Условия для инициализации, приращения, завершения и т.д. помещаются внутри символа в начале или в конце, в зависимости от расположения операции, проверяющей условие. |
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.
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?
Рис. 2.
Задание 5. Укажите пропущенный фрагмент в алгоритме (рис. 4):
а) определяющем
количество положительных элементов в
массиве G[i],
б) определяющем количество отрицательных элементов в массиве G[i],
Задание 6. Как необходимо изменить алгоритм (рис. 4), чтобы он
а) определял сумму всех элементов массива G;
б) определял сумму всех чётных элементов массива G;
в) произведение всех элементов массива G;
г) произведение всех нечётных элементов массива G.
SHAPE
\* MERGEFORMAT
Рис. 4.
Задание 7. Задан одномерный массив A1, A2, A3, …, An. Что определяет указанный на рис. 5 фрагмент алгоритма?
Нет
Нет
Да
Да
Рис. 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) Если ZX, то 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);
Конец программы.