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

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

Program: Prac_ndf.cBooldif.zip
Súbor exe: Booldif.exe
Potrebné: 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
Prí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.
//************************************************************************//
// STATIST.C                                                              //
// Funkcie pre statisticke zobrazenie vypoctu
//                                                            11.11.1997  //
//************************************************************************//
#include <dos.h>
#include "mbooldif.h"
#include "glob.h"
#include "error.h"
#include "util.h"
#include "video.h"
#include "okno.h"
#include "menu.h"
 
//************************************************************************//
// ZARAD_STAT zaradi statisticke informacie do struktury                  //
// ako=0 pre udalostou 1=po udalosti                          12.11.1997  //
//************************************************************************//
void zarad_stat( char text[], int ako )
{
struct time t;
long cas;
 
 gettime(&t);
 cas = t.ti_hund + 100.0 * ( t.ti_sec + 60.0 * ( t.ti_min + ( 60.0 * t.ti_hour ) ) );
 
 if( ako == 0 ) {
     strcpy( s_stat[p_stat].s_text, text );
     s_stat[ p_stat ].cas = cas;
     min_mem = 0;
    }
   else
    {
     s_stat[ p_stat ].cas = cas - s_stat[ p_stat ].cas + 1;
     s_stat[ p_stat ].pamet = 10*( min_mem +1 );
     // pocas prace nastavuje min_mem funkcia pamet()
     min_mem = 0;
     if( p_stat < max_stat ) p_stat++;
    }
}
 
 
//************************************************************************//
// STATISTIKA zobrazi udaje o priebehu vypoctu                            //
//                                                            11.11.1997  //
//************************************************************************//
 
int statistika( void )
{
int zx,zy;
int i;                   // devka
FILE *tmp,*fopen();      // ulozi slovnik
long c_cas=0;
 
 zx=_stlpcov/2-38;
 zy=_riadkov/2-10;
 if( view_okno(zx,zy,zx+76,zy+20,atributy[42],atributy[43],3," ›tatistick‚ Łdaje ")==FALSE) {
   chybove_okno( chyba[1] );
   return(1);
   }
 
 // ideme zapisovat do suboru
 tmp=fopen( strspoj( temp,TmpSubor[7] ) ,"w+t" );// tmp subor STATIST.TMP
 if ( tmp == NULL ) {
    chybove_okno(chyba[17]);		// disk chraneny proti zapisu, alebo tak neako
    return( FALSE );
   }
 
 // zistime celkovy cas
 for( i=0; i < p_stat; i++ ) c_cas = c_cas + s_stat[i].cas;
 
 fprintf( tmp,"\n Doteraj¨Ą v˜po‡et mal nasledovn‚ n roky \n" );
 fprintf( tmp," ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ\n\n" );
 // vypiseme
 for( i=0; i < p_stat; i++ )
    fprintf( tmp," %23s = %4lu ms [%4.1f%c]  %8lu b [%5.1f%c]\n", s_stat[i].s_text,
             (unsigned long)s_stat[i].cas, (float)( 100.0 * s_stat[i].cas/c_cas), 37,
             (unsigned long)s_stat[i].pamet, (float)( 100.0 * s_stat[i].pamet/volne_mem), 37 );
 
 fprintf( tmp," ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ\n" );
 fprintf( tmp,"              Celkom ‡as = %4lu ms    Pam„Ÿ : %4lu byte", c_cas, volne_mem );
 fprintf( tmp,"\n\n Celkov˜ ‡as v˜po‡tu je bez zdr‘anĄ sa pri komunik cii s u‘ĄvateŒom.");
 fprintf( tmp,"\n Celkov  pam„Ÿ vyjadruje voŒnŁ pam„Ÿ pre programov˜ k˘dom a z sobnĄk.\n");
 fclose( tmp );
 
 zapni_kurzor();
 zobraz_tmp ( TmpSubor[7],0 );
 vypni_kurzor();
 zatvor_okno();
 return(0);
}
 
/*---------------------------------END--------------------------------------*/