Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Связь алгоритма с пояснениями к блокам

Читайте также:
  1. III. Структура как система, держащаяся внутренней связью
  2. Test с пояснениями
  3. V. Связь с другими правовыми актами
  4. Аудитория и ее взаимосвязь с оратором
  5. Б) Введение и усвоение алгоритма построения произвольной пирамиды.
  6. Береги связь с общиной
  7. Биологическая обратная связь?

 

Представление программы в виде алгоритма наглядно показывает его структуру и связь между блоками. Ограничение текстовой области блока алгоритма не даёт возможности подробно описать свойства блока. При увеличении текстовой области алгоритм загромождается информацией, излишней при рассмотрении структуры и резко сокращается количество блоков на единицу площади алгоритма. Во избежание этих недостатков предлагается дополнить алгоритм таблицей и связать блоки алгоритма и строки таблицы гиперссылками. Представим на рисунке и таблице конечный результат связи алгоритма получения первых 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 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Сопоставление свойств проводников и диэлектриков| О. Алескандр Ельчанинов

mybiblioteka.su - 2015-2024 год. (0.009 сек.)