Буль алгебрасы

Автор: Пользователь скрыл имя, 12 Ноября 2011 в 09:20, реферат

Описание работы

Жалпы алғанда буль функцияларының жалған және елеулі айнымалыларының дискреттік математикада ойнайтын рөлі өте зор. Бірінші оларды теориялық тұрғыдан қарастырайық. Буль функцияларының жалған және елеулі айнымалылары деп .............. атайды.
Бұл айнымалылардың маңызы өте зор. Мысалы, функция көп айнымалы болса, кейбір айнымалыларын (жалған айнымалыларды) алып тастауға болады. Ол бізге барлық параметрлер бойынша үнемдеуге мүмкіндік береді. Сондықтан осы үнемдеуді жүзеге асыратын программдық пакет құру актуалды мәселе. Бұл жұмыста қойылған мақсат бойынша бірінші теориялық, одан кейін программалық жүзеге асыру жүргізілді.

Содержание

Кіріспе..................................................................................3
Мазмұны 1
Кіріспе 2
Буль функцияларының жалған және елеулі айнымалылары 10
Есеп шығару мысалы 10
Буль функцияларының жалған және елеулі 12
айнымалыларын программада жүзеге асыру 12

Работа содержит 1 файл

Анар Омирбаева Информатика.doc

— 280.50 Кб (Скачать)

    Try

      intVar:=StrToInt(Edit1.Text);

    Except

      ShowMessage('Ввведите, все-таки, кол-во переменных');

      Exit;

    End;

    StringGrid1.Visible:=True;

    StringGrid1.ColCount:=intVar+1;

    StringGrid1.RowCount:=Power(2,intVar)+1;

    For i:=1 to StringGrid1.ColCount-1 do

      StringGrid1.Cells[i,0]:='x'+IntToStr(i);

    For i:=1 to StringGrid1.RowCount-1 do

      StringGrid1.Cells[0,i]:=IntToStr(i)+')';

    StringGrid1.ColCount:=StringGrid1.ColCount+1;

    StringGrid1.Cells[StringGrid1.ColCount-1,0]:='Function Value';

    Button2.Visible:=True;

    For i:=1 to StringGrid1.RowCount-1 do

      For j:=1 to StringGrid1.ColCount-2 do

        StringGrid1.Cells[j,i]:=IntToStr(Meaning(i,StringGrid1.ColCount-2-j+1));

    StringGrid1.Options:=[goEditing];

  End;

  RadioGroup1.Visible:=False;

  Button1.Visible:=False;

  ComboBox1.Enabled:=True;

end; 

procedure TForm1.Edit1Click(Sender: TObject);

begin

  Edit1.SelectAll;

end; 

procedure TForm1.Button2Click(Sender: TObject);

Var Ret, i, j, N, M, p, k: IntType;

   Bol : Boolean;

  mT1 : Mas;

begin

  //Main Algorythm Block

  If ComboBox1.ItemIndex=-1 then

  Begin

    ShowMessage('Выберите функцию');

    Exit;

  End; 

  If ComboBox1.ItemIndex=0 then

  Begin

    For i:=1 to StringGrid1.RowCount-1 do

    Begin

      Ret:=0;

      For j:=1 to StringGrid1.ColCount-2 do

        Ret:=Ret or StrToInt(StringGrid1.Cells[j,i]);

      StringGrid1.Cells[StringGrid1.ColCount-1,i]:=IntToStr(Ret);

    End;

  End; 

  If ComboBox1.ItemIndex=1 then

  Begin

    For i:=1 to StringGrid1.RowCount-1 do

    Begin

      Ret:=1;

      For j:=1 to StringGrid1.ColCount-2 do

        Ret:=Ret and StrToInt(StringGrid1.Cells[j,i]);

      StringGrid1.Cells[StringGrid1.ColCount-1,i]:=IntToStr(Ret);

    End;

  End; 

  //Finding Fictive Vars 

  M:=StringGrid1.ColCount-2;

  N:=StringGrid1.RowCount-1; 

  For i:=1 to N do

    mT[i]:=StrToInt(StringGrid1.Cells[M+1,i]);

  k:=0;

  For i:=1 to M do

  Begin

    FillChar(mT1, SizeOf(mT1), 0);

    For j:=1 to N do

    Begin

      p:=Power(2,i-1);

      If ((j=1)or(mT1[j]<>-1))and(j+p<=N) then

      Begin

        Bol:=(mT[j]=mT[j+p]);

        If not Bol then

        Begin

          Label1.Caption:=Label1.Caption+' x'+IntToStr(M-i+1);

          k:=1;

          mT1[j]:=-1;

          mT1[j+p]:=-1;

          Break;

        End;

      End;

    End;

    If k=0 then

    Begin

      Label2.Caption:=Label2.Caption+' x'+IntToStr(M-i+1);

    End

    Else

      k:=0;

  End; 

  // End Of Finding Fictive Vars

end; 

procedure TForm1.Button3Click(Sender: TObject);

Var j, i, n, m, p, k : IntType;

     Bol : Boolean;

     mT1 : Mas;

begin

  ComboBox1.Enabled:=False; 

   //Finding Fictive Vars 

  M:=StringGrid1.ColCount-2;

  N:=StringGrid1.RowCount-1; 

  For i:=1 to N do

    mT[i]:=StrToInt(StringGrid1.Cells[M+1,i]);

   

  k:=0;

  Label1.Caption:='Vulnerable:';

  Label2.Caption:='Fictive:';

  For i:=1 to M do

  Begin

    FillChar(mT1, SizeOf(mT1), 0);

    For j:=1 to N do

    Begin

      p:=Power(2,i-1);

      If ((j=1)or(mT1[j]<>-1))and(j+p<=N) then

      Begin

        Bol:=(mT[j]=mT[j+p]);

        If not Bol then

        Begin

          Label1.Caption:=Label1.Caption+' x'+IntToStr(M-i+1);

          k:=1;

          Break;

        End;

        mT1[j]:=-1;

        mT1[j+p]:=-1;

      End;

    End;

    If k=0 then

    Begin

      Label2.Caption:=Label2.Caption+' x'+IntToStr(M-i+1);

    End

    Else

      k:=0;

  End; 

  // End Of Finding Fictive Vars 

end;

end. 
 
 

        • Қорытынды
       

      Қорытындылай  келе жасалған жұмыстың нәтижелерін  белгілейік:

      1. Алынған тақырып бойынша толық теориялық талдау жүргізілді.
      2. Талдау бойынша жалған және елеулі айнымалыларды табу алгоритмі толықтай, өзге қосымша алгоритмдерді қолдана отырып, жүзеге асырылды.

      Авторлармен жұмыс  барысында келесі ескертулер енгізілді:

      1. Программа қолданысы кезіндегі кейбір шектеулер.
      2. Көп айнмалылармен жұмыс істегендегі програма орындалуының тездігі.

      Қолданылған әдебиеттер тізімі: 

      1. Яблонский С.В., “Введение в дискретную математику”, М., Высшая школа, 2002
      2. Акимов О.Е., Дикретная математика, М., Лаборатория базовых знаний, 2001
      3. Новиков, Дискретная математика для программистов, Питер, 2003
      4. Тірек конспект,КБТУ, 2003,

Информация о работе Буль алгебрасы