Program rieši problém generovania testov prostredníctvom Boolovskej diferencie

Delphi & Pascal (česká wiki)
Přejít na: navigace, hledání
Kategórie: Programy v C, C++

Program: Prac_ndf.cBooldif.zip
Soubor exe: Booldif.exe
Potřebné: Adresar.cColor.cDerivac.cError.cFunkcie.cHelp.cKey.cLine_edi.cMain.cMenu.cObsluha.cOkno.cPrac_ndf.cSlovnik.cSlov_fon.cStatist.cUtil.cVideo.cVystupy.cAdresar.hColor.hDefine.hError.hFunkcie.hGlob.hKey.hLine_edi.hMbooldif.hMenu.hOkno.hSlov_fon.hUtil.hVideo.h
Příklady: Example.zipBin_10_o.ndfBin_10_o.ndfBin_1and.ndfBin_2rad.ndfBin_3rad.ndfBin_4rad.ndfHard.ndfI_reg_lo.ndfReg_jk.ndfScitac_s.ndfScp_1rad.ndfScp_2rad.ndfScp_2r_1.ndfScp_3rad.ndfScp_4r_2.ndfScp_6r_3.ndfScp_8r_4.ndfSc_1r_pj.ndfSc_1r_sj.ndfSc_1_aoi.ndfSc_2r_4.ndfSc_3r_6.ndfSc_7400n.ndfSc_aon.ndfSimp3_a.ndfSimp3_b.ndfSimp4_a.ndfSimp4_b.ndfSimp4_c.ndfSimp6_a.ndfTest_vod.ndfZle.ndf
Manual: Prirucky.zip

Program rieši problém generovania testov prostredníctvom Boolovskej diferencie. Riešenie vyplýva z metódy matematicej derivácie logických zápisov funkcie v tvare Boolovského zápisu. Vytvára vektory porúch pre daný obvod, pričom zohľadňuje všetky vetviace sa vodiče. Výsledkom je úplný test.
Je implementovaný v programovacom jazyku C pre operačný systém MS-DOS, alebo iný s ním kompatibilným. Program je vhodný pre interaktívny spôsob komunikácie s užívateľom, čo umožňuje pohodlné pracovné prostredie podobné systémom Turbo Vision.

Ako príklad skúste nasledovné.
  • Menu->Voľby->Vstup->Zo Súboru. Vyberte si niektorý z ukážkových súborov.
  • Menu->Činnosť->Boolovské diferencie->Primárne vodiče
  • Menu->Činnosť->Boolovské diferencie->Vnútorné vodiče
  • Menu->Výsledky - môžete si pozrieť výsledky práce programu


POZNÁMKA: Zdrojové kódy ktoré simulujú prostredie Turbo Vision niesu dielom autora.
/*****************************************************************************
*									     *
*                             Subor ERROR.C                                  *
*									     *
*****************************************************************************/
 
#include <stdio.h>
#include <stdlib.h>
 
#include "key.h"
#include "glob.h"
#include "okno.h"
#include "video.h"
#include "menu.h"
#include "util.h"
#include "slov_fon.h"
#include "error.def"
#include "error.h"
 
 
 
//************************************************************************//
// ERROR                                                                  //
//                                                            30.10.1997  //
//************************************************************************//
 
void error(int i)
{
 chybove_okno(chyba[i]);
}
 
 
//************************************************************************//
// CHYBOVE_OKNO								  //
//                                                            30.10.1997  //
//************************************************************************//
 
void chybove_okno(char *sprava[])
{
 register int i=0;
 int vyska;
 int sirka;
 int zx;
 int zy;
 vyska=zisti_vysku_chyby(sprava);
 sirka=zisti_sirku_chyby(sprava);
 zx=(_stlpcov-sirka)/2;
 zy=(_riadkov-vyska)/2-1;
 if(otvor_okno(zx,zy,zx+sirka,zy+vyska,atributy[17],atributy[18],2)==FALSE)
	neodstranitelna_chyba();
 tlac_riadok_help(" ~ENTER ~ESC n vrat",atributy[4],atributy[5]);
 while(*sprava!=NULL)
	tlac_retazec(zx+1,zy+1+(i++),atributy[17],*sprava++);
 pip();
 do i=key();
 while(i!=ENTER && i!=ESC);
 zatvor_okno();
}
 
 
//************************************************************************//
// HLASKY                                                                 //
//                                                            30.10.1997  //
//************************************************************************//
 
void hlasky(char *sprava[])
 
{
 register int i=0;
 int vyska;
 int sirka;
 int zx;
 int zy;
 vyska=zisti_vysku_chyby(sprava);
 sirka=zisti_sirku_chyby(sprava);
 zx=(_stlpcov-sirka)/2;
 zy=(_riadkov-vyska)/2-3;
 if(otvor_okno(zx,zy,zx+sirka,zy+vyska,atributy[20],atributy[21],2)==FALSE)
	neodstranitelna_chyba();
 tlac_riadok_help(" ~ENTER ~ESC n vrat",atributy[4],atributy[5]);
 while(*sprava!=NULL)
	tlac_retazec(zx+1,zy+1+(i++),atributy[20],*sprava++);
 pip();
 do i=key();
 while(i!=ENTER && i!=ESC);
	zatvor_okno();
}
 
 
//************************************************************************//
// NEODSTRANITELNA_CHYBA						  //
//                                                            30.10.1997  //
//************************************************************************//
 
void neodstranitelna_chyba(void)
{
 nastav_video_mod(0x02);
 printf("\n\nNeodstranitelna chyba !!!\n\7");
 exit(1);
}
 
//************************************************************************//
// ZISTI_SIRKU_CHYBY							  //
//                                                            30.10.1997  //
//************************************************************************//
 
int zisti_sirku_chyby(char *polozky[])
{
 register int i=0,j;
 int max=0;
 char *p;
 
 while(polozky[i] != 0)
	{
	j=0;
	p=polozky[i];
	i++;
	while(*p++!='\0')
		j++;
	if(j>max)
		max=j;
	}
 return max+2;
}
 
//************************************************************************//
// ZISTI_VYSKU_CHYBY							  //
//                                                            30.10.1997  //
//************************************************************************//
 
int zisti_vysku_chyby(char *polozky[])
{
 register int i=0;
 
 while(polozky[i++]!=NULL);
 return i+1;
}
 
/*----------------------------------END-------------------------------------*/