Читайте также: |
|
Представление программы в виде алгоритма наглядно показывает его структуру и связь между блоками. Ограничение текстовой области блока алгоритма не даёт возможности подробно описать свойства блока. При увеличении текстовой области алгоритм загромождается информацией, излишней при рассмотрении структуры и резко сокращается количество блоков на единицу площади алгоритма. Во избежание этих недостатков предлагается дополнить алгоритм таблицей и связать блоки алгоритма и строки таблицы гиперссылками. Представим на рисунке и таблице конечный результат связи алгоритма получения первых RM простых чисел и таблицы с пояснениями и дадим описание формировании связи алгоритма и таблицы.
Описание формирования связей:
1. Сформировать таблицу.
2. В строках таблицы отметить закладки.
3. Расположить метки, к которым будут подключены гиперссылки закладок на блоках алгоритма так, чтобы метки выходили краями за блоки.
4. Связать обычным образом метки и закладки.
5. В алгоритме отметить закладку возврата в алгоритм (***).
6. В строках таблицы расположить метки возврата к алгоритму.
7. Связать метки возврата и закладку возврата.
***
Рис. Алгоритм получения первых RM простых чисел.
Блок | Имя БЛОКА | Да | Нет | Свойства и события блока |
б/н | Настройки, Объявления, Инициализации | Выполняется настройка экрана. Объявляются переменные, инициализируемые с целью проведения отладочных действий. | ||
б/н | Way = 1 | Объявляется переменная пути. | ||
i = 0 | Уст. значения рабочей переменной с целью отслеживания элементов массива с найденными простыми числами. | |||
M[i] = 2 | Задаётся первое простое число. | |||
i++ | Переключение на следующий элемент массива. | |||
i<RM | Проверяется достижение границы массива. | |||
j = 0 | Устанавливается значение индексной переменной с целью перелистывания элементов массива при проверке текущего числа на делимость на числа из массива найденных простых чисел. | |||
K%M[j]=0 | Проверка делимости проверяемого числа на значение элемента из массива простых чисел. | |||
K++ | Переход к следующему проверяемому числу. | |||
j++ | Переход ск следующему элементу массива. | |||
j<i | Все ли найденные числа проверены. | |||
M[i] = K | Запись в массив нового простого числа. | |||
Вывод | Вывод содержимого массива простых чисел. | |||
Стоп | Переход к завершению работы кода. | |||
K = 3 | Блок был пропущен!! Установка начального значения проверяемого числа. |
Вариант кода программы алгоритма:
# include <iostream.h>
# include <conio.h> // Подключение стандартных библиотек.
# include <stdio.h>
const int RM = 144; // Задание количества рассчитываемых простых чисел.
//--------------------------------------------------------------------------
void main() // Головная функция.
{
textmode( C4350 ); textattr( 0x70 ); clrscr(); // Настройка текстового экрана.
int M[RM]; // Создание пустого массива с целочисленными элементами.
int i= -111, j= -111, K= -111; // Рабочие переменные.
for (i= 0; i<RM; i++) M[i]= -111; i= -111; // Инициализация для отладки.
int Way = 1; // Определение и инициализация переменной пути.
for (;;) // Бесконечный цикл работы алгоритма.
{
// gotoxy( 1, 50 ); clreol(); printf(" Way= %3d i= %3d j= %3d K= %3d" // ТБ.
// " M[i]= %5d M[j]= %5d",Way,i,j,K,M[i],M[j]); // ТБ.
// getch(); // Тестирующий блок (ТБ).
switch (Way)
{
case 1: i= 0; Way= 20; continue;
case 2: M[i]= 2; Way= 3; continue;
case 3: i++; Way= 4; continue;
case 4: if (i<RM) { Way= 5; continue; }
Way= 11; continue;
case 5: j=0; Way= 6; continue;
case 6: if (K%M[j]= = 0 ) { Way= 7; continue; }
Way= 8; continue;
case 7: K++; Way= 5; continue;
case 8: j++; Way= 9; continue;
case 9: if (j<i) { Way= 6; continue; }
Way= 10; continue;
case 10: M[i]=K; Way= 3; continue;
case 11: K=6; // Задаём количество столбцов и цикл вывода результата:
for (i= 0; i<RM/K; i++) printf("% 10 d % 10 d % 10 d % 10 d % 10 d % 10 d \n\n",
M[K*i], M[K*i+ 1 ], M[K*i+ 2 ], M[K*i+ 3 ], M[K*i+ 4 ], M[K*i+ 5 ]);
Way= 12; continue;
case 12: getch(); break; // Посмотрели и вышли из switch ().
case 20: K= 3; Way= 2; continue;
}
break; // Выход из бесконечного цикла.
}
}
Дата добавления: 2015-07-19; просмотров: 53 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Сопоставление свойств проводников и диэлектриков | | | О. Алескандр Ельчанинов |