6804

Автоматизация разметки блок-схем алгоритмов

Лабораторная работа

Информатика, кибернетика и программирование

Автоматизация разметки блок-схем алгоритмов. Номер зачётной книжки: 831910 =100000011111112 Алгоритм обнаружения бесконечных циклов: Проверяем все операционные вершины на наличие перехода назад, если есть переход назад - помечаем блок д...

Русский

2013-01-08

84.4 KB

4 чел.

Автоматизация розметки блок-схем алгоритмов.

Номер зачётной книжки: 831910 =100000011111112;

Алгоритм обнаружения бесконечных циклов:

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

Иначе выводим сообщение о бесконечном цикле, и номер вершины в которой обозначен неверный переход.

Скриншоты программы:

Листинг программы:

import java.io.Serializable;

import java.util.ArrayList;

public class Algorithm implements Serializable{

 private static final long serialVersionUID = 1L;

 

 private int[][] mConnections;

 private int[][] mSignals;

 private ArrayList<String> signals;

 private boolean[] isY;

 

 public Algorithm(){}

 public Algorithm(int[][] mC, int[][] mS, ArrayList<String> signs){

 System.out.println("Connection matrix:  ");

 mConnections =mC;

 mSignals = mS;

 signals = signs;

 isY = new boolean[mC.length];

 for(int i = 0; i < mC.length; i ++){

 int sum = 0;

  for(int j = 0; j<mC.length;j++) {

   sum+= mC[i][j];

  }

  if(sum>1) isY[i] = false;

  else isY[i] = true;

 }

}

 public boolean isY(int i){

 return isY[i];

}

 

 public boolean checkInfinite(int from, int to) {

 if((to - from) == 1){return true;}

 for(int i = from; i < to; i++){

  if(isY(i)){

   if(fromTo(i)>to){ return false;}

   if(fromTo(i)<from){

    boolean inF = checkInfinite(fromTo(i), to);

    if(inF){return false;}

   }

  } else if(!isY(i)){

   if(fromTo_0(i)>to){ return false;}

   if(fromTo_0(i)<from){

    boolean inF = checkInfinite(fromTo(i), to);

    if(inF){return false;}

   }

   if(fromTo_1(i)>to){ return false;}

  }

 }

 return true;

}

 

 public String findInfiniteLoop(){

 String messageLine="algorithm is correct";

 int nNodes = mConnections.length;

 for(int out = 0; out < nNodes; out++){

  if(!isY(out)) continue;

  for(int in = 0; in < nNodes; in++){

   int current = mConnections[out][in];

   if((current==1)&&(out>in)){

    if(checkInfinite(in, out))

    messageLine = " infinite loop at  "+(out+1);

    return messageLine;

   }

  }

 }  

 return messageLine;

}

 

 public int fromTo(int from){

 int to=0;

 for(int i = 0; i<mConnections.length; i++) {

  if(mConnections[from][i]==1){ to = i+1; break; }

 }

 return to;

}

 

 public int fromTo_1(int from){

 return from+1;

}

 

 public int fromTo_0(int from){

 int to=0;

 for(int i = 0; i<mConnections.length; i++) {

  if((mConnections[from][i]==1)&&(i!=from)){ to = i+1; break; }

 }

 return to;

}

}


 

А также другие работы, которые могут Вас заинтересовать

25580. Опыты Эббингауза по изучению памяти 27.5 KB
  для того чтобы изучать память через воспроизведение необходимо измерить результат заучивания а для этого необходимо иметь материал заучивания который можно было количественно измерить и он должен быть одинаковой трудности. Для изучения памяти разработал три разновидности метода заучивания: метод полного заучивания многократное повторение слогов до полного их безошибочного воспроизведения метод экономии позволял выяснить в какой мере каждое новое повторение способствует запоминанию ранее заученных слогов и метод поправок возможность...
25581. Экспериментальное изучение мышления в Вюрцбургской школе 34 KB
  Экспериментальное изучение мышления в Вюрцбургской школе. В опытах по изучению мышления роль экспериментатора сводилась к регистрации и редакции речевого отчёта испытуемого. Первые экспериментальные исследования в области мышления открывают опыты Марбе и Майера с Орта которые были посвящены изучению психологических особенностей суждения 1901. Поэтому Марбе отнёс мышления к логике.
25582. Сеченов и его роль в естественнонаучной перестройки психологии 33 KB
  Проект развития психологии как самостоятельной науки одновременно с Вундтом был предложен выдающимся отечественным физиологом И. Система взглядов Сеченова представляла собой оригинальную теоретическую программу естественнонаучной перестройки психологии на основе использования объективных методов исследования. Признание рефлекторной природы психического позволило Сеченову поновому посмотреть: на предмет психологии как науки; происхождение психических деятельностей исходный методологический принцип изучения психики; изучать психический...
25583. Вклад Бехтерева в развитие отечественной психологии 29.5 KB
  Вклад Бехтерева в развитие отечественной психологии. Бехтерева являлся разносторонний подход к изучению человека. Бехтерева психофизиологическая проблема и изучение материальной основы психического. По мнению Бехтерева психология должна изучать не только сознание что делает субъективная психология с помощью интроспекции но и бессознательную сферу а также внешние проявления организма так как они являются выражением психической жизни.
25584. Павлов и значение его опыта изучения высшей нервной деятельности. Для психологии 29.5 KB
  Павлов и значение его опыта изучения высшей нервной деятельности. Павлов Иван Петрович 18491936 русский физиолог. Учение Павлова о высшей нервной деятельности сложилось под влиянием материалистических традиций русской философии и развивало идеи Сеченова. Руководящим для Павлова являлось представление о рефлекторной саморегуляции работы организма имеющей эволюционнобиологический адаптивный смысл.
25585. Основные направления в отечественной психологии дореволюционного периода 28 KB
  основные направления в отечественной психологии дореволюционного периода. рассмотрение исторических и социальных изменений с точки зрения человека его практической пользы а также преобладание нравственных этических проблем в российской психологии. Главными её выразителями были университетские профессора психологии и философии отстаивающие идею субстанциональности психики её независимости от материального мира и проповедующие схоластические описательные методы её постижения. Бурное развитие естествознания в России подготовило почву для...
25586. Развитие прикладных отраслей в отечественной психологии в довоенные период 28 KB
  развитие прикладных отраслей в отечественной психологии в довоенные период. Одним из направлений прикладной психологии переживавшим в 2030е гг. Очевидно что государство диктатуры пролетариата каким изначально являлась послереволюционная Россия не могло не уделять серьезного внимания проблемам руководства управления человеческими ресурсами различным формам воздействия на человека включая и психологическое воздействие Таким образом в результате развития психотехнического движения был накоплен разнообразный и богатый опыт...
25587. Становление понятийного аппарата психологии как предмет истории психологии 27.5 KB
  Его нельзя смешивать с предметом самой психологии как науки. История же психологии описывает и объясняет как эти факты и законы открывались порой в мучительных поисках истины человеческому уму. Задача истории психологии: Задачей истории психологии является анализ возникновения и дальнейшего развития научных знаний о психике.
25588. Основные категории психологии в их исторической перспективе 30.5 KB
  Субъект личность индивид Это к Рубинштейну или куда Человека как субъект деятельности. Человек субъект 3х видов деятельности по Рубинштейну: работа игра учеба. Ананьев выделяет общение как вид деятельности. Игру рассматривал как производную от ведущего типа деятельности.