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

 }

}


 

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

52828. Використання мультимедійних засобів для проведення лекційного заняття з дисципліни «Основи менеджменту та маркетингу» 26.03 MB
  По-перше. Кожен викладач може розробити власний пакет лекцій, який буде максимально адаптований саме для певного кола слухачів. Для створення таких лекцій необхідний лише один персональний компютер, на якому установлено стандартний пакет програм Microsoft Office, a саме стандартна програма Power Point.
52829. Школа бізнесу 37.5 KB
  Мета: Ознайомити дітей з грошовими одиницями інших держав, продовжувати вчити дітей ощадливо ставитися до грошей, економно та раціонально їх використовувати. Пригадати основний закон економіки. Розрізняти першочергові і другорядні потреби. Вправляти в розв’язуванні кросвордів, читанні ребусів; розвивати пам'ять, логічне та образне мислення, творчу уяву, пізнавальні інтереси.
52830. Машини і механізми 200 KB
  Мета. Ознайомити учнів з різними видами машин і механізмів, де і як вони використовуються у виробництві; розвивати мислення, уяву, мовлення, виховувати інтерес до різних видів професій.
52831. РЕАЛІЗАЦІЯ МЕТОДУ ПРОЕКТІВ З ВИКОРИСТАННЯМ ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ ПРИ ПРОЕКТУВАННІ ДІЯЛЬНОСТІ ФІРМИ СТУДЕНТАМИ СПЕЦІАЛЬНОСТІ „ЕКОНОМІКА ПІДПРИЄМСТВА“ 121 KB
  Зявилась можливість бути учасником міжнародних проектів телеконференцій спілкуватися з величезною і дуже різноплановою аудиторією. Серед різноманітних напрямів нових педагогічних технологій найбільш адекватним до поставлених завдань є метод проектів. Численними дослідженнями встановлено що метод проектів виступає як важливий компонент системи продуктивної освіти і є нестандартним нетрадиційним способом організації освітніх процесів через активні дії планування прогнозування аналіз синтез спрямованих на реалізацію...
52832. Екосистеми світу. Ecosystems of the World 83.5 KB
  To start with we’ll see how well you know the matter of our discussion and revise the lexical units which help us to keep it and be aware of the problem under consideration. On your desks there are cards with words and word-combinations. During two minutes define them and give examples. At that time one of you will go to the board and draw a scheme of an ecosystem with all elements it comprises and give the definition what an ecosystem is.
52833. Математична наука навколо нас 67 KB
  Математична наука навколо нас Протягом усього свідомого життя людина здобуває нові знання. Знанняце сукупність інформаціїяку вона дістає з навколишнього світу в процесі суспільновиробничої практики. Головна мета такого уроку спостереження предметів явищ процесів які вивчаються та вміння використовувати теоретичні знання на практичних прикладах що супроводжується поясненням учителя. У процесі уроку учні зможуть: повторити теоретичні відомості ; поглибити свої знання про...
52834. Конструювання та розвязання економічних задач в середовищі табличного процесору Microsoft Excel 108.5 KB
  Раціональність вибору вказаних класів пояснюється тим, що разом з наочно-образним мисленням, що допомагає цілісно бачити обєкти, в учнів у цьому віці активно розвивається асоціативне мислення, сприяюче засвоєнню різних абстрактних понять.
52835. ЛОКАЛЬНІ ЕКСТРЕМУМИ ФУНКЦІЇ ДВОХ ЗМІННИХ 182 KB
  Викладено методику проведення лекційного заняття з використанням інтерактивних форм навчання з теми Локальні екстремуми функції двох змінних Для викладачів вищої математики вищих навчальних закладів 12 рівнів акредитації. 10 Додатки: Додаток А Текст лекції Локальні екстремуми функції двох змінних 18 Додаток Б Приклади задач економічного характеру. Група: БО 27 Тема: Локальні екстремуми функції двох змінних Мета заняття: Методична: показати методику проведення лекції із застосуванням техніки зворотного...
52836. Графики нагрузок промыленных установок 243.5 KB
  Цеховые электрические сети напряжением до 1000 В являются составной частью систем электроснабжения промышленного предприятия и служат для распределения электроэнергии внутри цехов а также для питания некоторых электроприемников расположенных за пределами цеха на территории предприятия. Схема внутрицеховой сети определяется технологическим процессом производства планировкой помещений цеха взаимным расположением источника питания подстанций и приемников электроэнергии их единичной установленной...