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);

 }

}


 

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

47936. Місто як продукт розвитку суспільства. Історичний процес розвитку міст. Класифікація міст 926 KB
  Вибір території для будівництва населених пунктів або міст. Достатність території для перспективного розвитку. Умови інженерного обладнання території. Місцевість повинна мати оптимальні ухили рельєфу для нормального водовідведення поверхневих вод з території та організації вулично дорожнього руху.
47937. ІНТЕЛЕКТУАЛЬНІ ПРОДУКТИ, ІНТЕЛЕКТУАЛЬНА ВЛАСНІСТЬ ТА ІНТЕЛЕКТУАЛЬНИЙ КАПІТАЛ 634.5 KB
  Поняття про інтелектуальні продукти власність та капітал ЛЕКЦІЯ Обєкти інтелектуальної власності Еволюція правової охорони інтелектуальної власності Бурхливий розвиток товарних відносин уже в середні віки призвів до загострення конкуренції між виробниками продукції за ринки збуту. Основні принципи цього закону зберегли свою актуальність до наших днів і стали основою для багатьох національних законодавчих актів з питань інтелектуальної власності. Про серйозність відношення до охорони інтелектуальної власності у США свідчить...
47938. Сутність філософії та її роль у суспільстві 829 KB
  Основні поняття: філософія філософствування мудрість дискурс праксис світогляд світовідчуття світорозуміння світосприйняття типи світогляду наука релігія міф ідеологія метафізика онтологія гносеологія антропологія аксіологія логіка рефлексія соціальна філософія етика методи філософії предмет філософії функції філософії категорії філософії. Методи та функції філософії. Історично міфологія передує релігії та філософії.
47939. Філософія. Конспект лекцій 909 KB
  Опорний конспект лекцій âФІЛОСОФІЯâ для підготовки бакалаврів з усіх напрямів та спеціальностей денної форми навчання статус дисципліни нормативна Ірпінь 2011 Тема 1: Сутність філософії та її роль у суспільстві Мета: ознайомити студентів з основами філософських знань що передбачає розуміння смислу поняття світогляду і знання його типології зясування звязку між світоглядом і філософією. Основні поняття: філософія філософствування мудрість дискурс праксис світогляд світовідчуття світорозуміння світосприйняття типи...
47940. ЭЛЕМЕНТЫ ВЫСШЕЙ МАТЕМАТИКИ. СБОРНИК ПРАКТИЧЕСКИХ ЗАНЯТИЙ 2.29 MB
  Сборник состоит из пояснительной записки, описания практических занятий, которые снабжены общими теоретическими сведениями, контрольными вопросами и заданиями в соответствии с программой и списка рекомендуемой литературы. Сборник практических занятий окажет помощь преподавателям в организации практических занятий, а также может пригодиться студентам при повторении изученного материала и подготовке к экзамену.
47941. Підприємництво та основи ринку 1.15 MB
  План Мета завдання створення і розвитку підприємства. Мета завдання створення і розвитку підприємства. Статус підприємця здобувається через державну реєстрацію підприємства. З цього визначення зрозуміло що ціль діяльності підприємства задоволення суспільних потреб та отримання прибутку.
47942. Цивільне право України 988 KB
  План поняття ЦП як галузі права предмет і метод ЦП принципи ЦП функції системи ЦП П №1 Теорії критерію розподілу права на приватне та публічне Теорія №1 інтересу. №3 методу правового регулювання використовується цивілістами ЦП є однією із галузь приватного права. Приватне право моє підґрунтя на природні права ЦПУ це сукупність правових норм які регулюють особисті немайнові та майнові відносини цивільні засновані на юридичній рівності вільному волевиявленні і майновій самостійності їх учасників ч.
47943. Информатика в школе 382.5 KB
  Процедуры вывода Write и WriteLn. читается райт и райтлайн; переводится пиши и пиши строку С помощью операторов Write и WriteLn изображают на экране ту или иную информацию состоящую из символов. Правила записи и выполнения оператора WriteLn те же что и у Write с одним исключением после его выполнения следующий оператор Write или WriteLn печатает свою информацию с начала следующей строки а после выполнения оператора Write продолжает печатать в той...
47944. Правознавство. Теорія держави і права 1.42 MB
  Держава у різних народів формувалась не однаково. Окрім закономірних причин виникнення держав, що проявлялися у всіх народів були в окремих народів і специфічні причини, які Ф. Єнгельс у своїй праці „Походження сім’ї, приватної власності і держави” назвав форми виникнення держави : а) афінська; б) римська; в) германська.