41621

Генерация таблицы переходов и функций возбуждения тригеров

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

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

В результате выполнения данной лабораторной работы я приобрёл навыки анализа графовых структур и автоматизации процедуры построения таблицы переходов. Мной был разработан класс для генерации таблицы переходов.

Русский

2013-10-24

141.5 KB

2 чел.

  Национальный Технический Университет Украины

“Киевский Политехнический Институт”

Факультет Информатики и Вычислительной Техники

Кафедра вычислительной техники

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

по курсу «Автоматизация проэктирования

компьютерных систем»

Выполнил:

студент IV курса

Группы ИВ-83

Чуб Александр

Киев

2011 г.

Тема: Генерация таблицы переходов и функций возбуждения тригеров.

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

 

Q[t]

Q[t+1]

J

K

0

0

0

-

0

1

1

-

1

0

-

1

1

1

-

0

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

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

import javax.swing.table.AbstractTableModel;

import java.util.*;

import java.util.regex.Pattern;

public class GraphTableModel extends AbstractTableModel{

private static final long serialVersionUID = 1L;

 

private ArrayList<ArrayList<String>> graphTable;

private int numOfQ;

private int pSignalsB;

private int pSignalsE;

public GraphTableModel(NewGraph graph){

 graphTable = new ArrayList<ArrayList<String>>();

 numOfQ = graph.getNumOfQ();

 graphTable.add(createHeaderRow(graph));

 addRows(graph);

}

private ArrayList<String> createHeaderRow(NewGraph graph){

 ArrayList<String>  headers = new ArrayList<String>();

 headers.add("Transition");

 for(int i = 0; i<numOfQ;i++){

  headers.add("Q"+i+"[t]");

 }

 for(int i = 0; i<numOfQ;i++){

  headers.add("Q"+i+"[t+1]");

 }

 pSignalsB=headers.size();

 for(String signal:graph.getSignals()) {

  headers.add(signal);

 }

 pSignalsE=headers.size();

 for(int i = 0; i < numOfQ;i++) {

  headers.add("J"+i+"K"+i);

 }

 return headers;

}

 

 

 

private void addRows(NewGraph graph){

 ArrayList<GraphNode> nodes = graph.getNodes();

 for(GraphNode node :nodes) {

  for(GraphLink link: node.getLinkedNodes()){

   ArrayList<String> tableRow = new ArrayList<String>();

   tableRow.add(node.getName()+" ->"+link.linkedNode.getName());

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

    tableRow.add(""+node.getBitCode().charAt(i));

   }

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

    tableRow.add(""+link.linkedNode.getBitCode().charAt(i));

   }

   

   Pattern pat = Pattern.compile(",");

   String[] lexems = null;

   if(link.yConditions.size()!=0){ lexems = pat.split(link.yConditions.get(0));}

   System.out.println(node.getName()+"  ->"+link.linkedNode.getName());

   String xSignal=null;

   String x = null;

   if(link.yConditions.size()!=0){

    xSignal =link.xConditions.get(0);

    x= "1";

    if(xSignal.length()==3){x ="0"; xSignal =xSignal.substring(1, 3);}

   }

   for(int i = pSignalsB;i <pSignalsE;i++){

    tableRow.add("-");

    if(xSignal!=null){

     if(graphTable.get(0).get(i).equals(xSignal)){

      tableRow.set(tableRow.size()-1,x);

      continue;

     }

    }

    if(lexems!=null){

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

      if(graphTable.get(0).get(i).equals(lexems[j])){

       tableRow.set(tableRow.size()-1,"1");

       break;

      }

     }

    }

    

   }

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

    String jk = getJK(node.getBitCode().charAt(i),

      link.linkedNode.getBitCode().charAt(i));

    tableRow.add(jk);

   }

   graphTable.add(tableRow);

  }

 }

}

private String getJK(char from, char to){

 String jk = "";

 if((from=='0')&&(to=='0')){jk = "0-";}

 if((from=='0')&&(to=='1')){jk = "1-";}

 if((from=='1')&&(to=='0')){jk = "-1";}

 if((from=='1')&&(to=='1')){jk = "-0";}

 return jk;

}

@Override

public int getColumnCount() {

 return graphTable.get(0).size();

}

@Override

public int getRowCount() {

 return graphTable.size();

}

@Override

public Object getValueAt(int arg0, int arg1) {

 return graphTable.get(arg0).get(arg1);

}

}

Выводы:

 В результате выполнения данной лабораторной работы я приобрёл навыки анализа графовых структур и автоматизации процедуры построения таблицы переходов. Мной был разработан класс для генерации таблицы переходов. А также я реализовал методы для визуального отображения сгенерированной таблицы переходов автомата.

import javax.swing.table.AbstractTableModel;

import java.util.*;

import java.util.regex.Pattern;

public class GraphTableModel extends AbstractTableModel{

 private static final long serialVersionUID = 1L;

 

 private ArrayList<ArrayList<String>> graphTable;

 private int numOfQ;

 private int pSignalsB;

 private int pSignalsE;

 public GraphTableModel(NewGraph graph){

 graphTable = new ArrayList<ArrayList<String>>();

 numOfQ = graph.getNumOfQ();

 graphTable.add(createHeaderRow(graph));

 addRows(graph);

}

 //marking the heading row of the table

 private ArrayList<String> createHeaderRow(NewGraph graph){

 ArrayList<String>  headers = new ArrayList<String>();

 headers.add("Transition");//matching the the transition

 for(int i = 0; i<numOfQ;i++){//marking all Q

  headers.add("Q"+i+"[t]");

 }

 for(int i = 0; i<numOfQ;i++){

  headers.add("Q"+i+"[t+1]");

 }

 pSignalsB=headers.size();//get pointer on signals beginning

 for(String signal:graph.getSignals()) {//marking all signals

  headers.add(signal);

 }

 pSignalsE=headers.size();//pointer on signals ending

 for(int i = 0; i < numOfQ;i++) {

  headers.add("J"+i+"K"+i);

 }

 return headers;

}

 

 

 

 //add all infomative rows in the table

 private void addRows(NewGraph graph){

 ArrayList<GraphNode> nodes = graph.getNodes();

 for(GraphNode node :nodes) {

  for(GraphLink link: node.getLinkedNodes()){

   ArrayList<String> tableRow = new ArrayList<String>();

   tableRow.add(node.getName()+" ->"+link.linkedNode.getName());//adding the transition

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

    tableRow.add(""+node.getBitCode().charAt(i));//adding the Qs of output node

   }

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

    tableRow.add(""+link.linkedNode.getBitCode().charAt(i));//adding information about input node

   }

   

   Pattern pat = Pattern.compile(",");

   String[] lexems = null;

   //spliting Y conditions on list of with each one

   if(link.yConditions.size()!=0){ lexems = pat.split(link.yConditions.get(0));}

   System.out.println(node.getName()+"  ->"+link.linkedNode.getName());

   String xSignal=null;

   String x = null;

   if(link.yConditions.size()!=0){

    xSignal =link.xConditions.get(0);

    x= "1";

    //checking if our transit with 0 signal of current Y.

    if(xSignal.length()==3){x ="0"; xSignal =xSignal.substring(1, 3);}

   }

   //finding and marching signals from the transition into appropriate columns

   for(int i = pSignalsB;i <pSignalsE;i++){

    tableRow.add("-");//if there not such signal then we leave it -

    if(xSignal!=null){

     if(graphTable.get(0).get(i).equals(xSignal)){

      tableRow.set(tableRow.size()-1,x);

      continue;

     }

    }

    if(lexems!=null){

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

      if(graphTable.get(0).get(i).equals(lexems[j])){

       tableRow.set(tableRow.size()-1,"1");

       break;

      }

     }

    }

    

   }

   //matching our JK transitions

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

    String jk = getJK(node.getBitCode().charAt(i),

      link.linkedNode.getBitCode().charAt(i));

    tableRow.add(jk);

   }

   graphTable.add(tableRow);

  }

 }

}

 //JK function

 private String getJK(char from, char to){

 String jk = "";

 if((from=='0')&&(to=='0')){jk = "0-";}

 if((from=='0')&&(to=='1')){jk = "1-";}

 if((from=='1')&&(to=='0')){jk = "-1";}

 if((from=='1')&&(to=='1')){jk = "-0";}

 return jk;

}

 @Override

 public int getColumnCount() {

 return graphTable.get(0).size();

}

 @Override

 public int getRowCount() {

 return graphTable.size();

}

 @Override

 public Object getValueAt(int arg0, int arg1) {

 return graphTable.get(arg0).get(arg1);

 }

}


 

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

81667. А.С. Пушкин как литературный критик. Проблематика его литературно-критических статей и заметок; жанровое, стилевое своеобразие. Типологический анализ одной из работ 35.6 KB
  Его статьи и художественные произведения становились итогом долгих и основательных раздумий о самых разнообразных теоретических проблемах художественного творчества о предмете и назначении искусства о взаимосвязи писателя и общества об историзме и народности литературы роли критики в развитии эстетического вкуса читателей путях становления русского литературного языка и т. В многообразном по своему составу литературнокритическом наследии Пушкина есть и опыты больших историколитературных обобщений незавершенная статья О ничтожестве...
81668. Творчество А. С. Пушкина в критике разных эпох. Сравнительный типологический анализ статей В. Г. Белинского (8-я, 9-я, из цикла «Сочинения Александра Пушкина»), Д. И. Писарева («Пушкин и Белинский»), Д. С. Мережковского («Пушкин») 39.06 KB
  Пушкина в критике разных эпох. Белинского 8я 9я из цикла Сочинения Александра Пушкина Д. Вообще творчеству Пушкина Белинский посвящает огромное количество критических статей и сочинений. Обратимся к 89 статьям сочинения Александра Пушкина.
81669. Литературно-критическое тв-во Н.В.Гоголя. Типологический анализ одной из статей 40.33 KB
  Статья Плетнева Чичиков или Мертвые души Гоголя опубликованная в июльском номере Современника за 1842 г. Плетнев как и Белинский ставил Гоголя в первый ряд среди современных писателей отмечая удивительную верность автора действительности. В произведениях Гоголя П. Вяземский решительно противился тому что именем Гоголя теоретики натуральной школы пытались придать ей идейную и эстетическую целостность.
81670. Особенности развития литературной критики в 1840-е гг. Литер.критика «Отечественных записок». Славянофильская критика. Литературно-критическая позиция журнала «Современник» 34.72 KB
  Анненков определялись противостоянием двух сформировавшихся на рубеже 1830 1840х годов течений русской общественной мысли западничества и славянофильства. отстаивали необходимость исторического движения России по европейскому пути выдвигали на первый план идею свободы и самоценности человеческой личности подчеркивали исчерпанность тех начал которые составляли основу древнерусской жизни. – публиковали свои статьи на страницах Москвитянина Московских литературных и ученых сборниковРусской беседы выступили против перенесения...
81671. Понятие о литературной критике, ее происхождение. Значение термина «критика» 28.26 KB
  Значение термина критика. В широком общекультурном смысле литературная критика обозначение восходящей к глубокой древности филологической рефлексии по поводу любого словесно-организованного текста. В современной западной культуре понятия литературная наука и литературная критика часто совпадают и употребляются на правах синонимов. В специальном литературоведческом смысле закрепленном отечественной гуманитарной традицией литературная критика род литературно-творческой и литературно-коммуникативной деятельности направленной на...
81672. Природа и предмет литературной критики. Взаимодействие критики с различными отраслями искусства и науки. Соотношение критики и литературоведения. Основные функции критики 31.97 KB
  Литературная критика двойственна по своей природе. Литературная критика естественно соотносится со многими областями науки и культуры: с филологией философией историей эстетикой герменевтикой культурологией психологией социологией книговедением с публицистикой и журналистикой с критикой художественное музыкальной театральной с кинокритикой телевизионной критикой и др. Испытывая непосредственное влияние близких или смежных гуманитарных сфер литературная критика в слою очередь способствует их развитию. Литературная критика одна...
81673. Типология литературной критики с точки зрения субъекта критической деятельности 38.99 KB
  Для критики словесного искусства нужны люди которые бы показывали бессмыслицу отыскивания мыслей в художественном произволении м постоянно руководили бы читателем в том бесконечном лабиринте сцеплений в котором и состоит сущность искусства и к тем законам которые служат основанием этих сцеплений. Сопряжение собственного эстетического опыта и литературной неизведанности явленной в оцениваемых словеснохудожественных произведениях одна из постоянно одолеваемых сложностей профессиональной литературной критики. Лидеров профессиональной...
81674. Типология литературной критики с точки зрения ее соотношения с определенными литературными направлениями 33.54 KB
  эстетические взгляды критика; Его соц. Классицистическая критика. Ломоносов Тредиаковский Сумароков Державин Херасков Лукин Плавильщиков Сентименталистская критика.Реакционная критика лагеря официальной народности.
81675. Типология литературной критики с точки зрения метода литературно-критической деятельности 31.86 KB
  эстетические взгляды критика; Его соц. В качестве рабочих определений можно предложить следующие: публицистическая филологическая и философская критика. Публицистическая критика в оценке литературных явлений идет от жизни выясняя в первую очередь их общественное звучание. Такова декабристская критика критика Белинского 1840х годов революционнодемократическая критика шестидесятников народническая марксистская критика.