iralebedeva.ru :: зелёный коллаж с цветами
КОНТАКТЫ
E-mail: ira.alma@gmail.com

iralebedeva.ru :: зелёный коллаж с цветами


ТАБЛИЦЫ ИСТИННОСТИ DELPHI 7.0 :: Закладка Additional компонент StringGrid

Для того чтобы разобраться в том, как работает компонент StringGrid, посмотрим решение конкретной задачи.

Условие задачи:
Построить таблицу истинности для функции:
Формула (функция)
Таблица истинности

Теоретическое обоснование

Таблица истинности — это табличное представление логической схемы (операции), в котором перечислены все возможные сочетания значений истинности входных сигналов (операндов) вместе со значением истинности выходного сигнала (результата операции) для каждого из этих сочетаний.
В нашем примере в таблице будут работать четыре столбца. Три исходных и один результирующий. В первые три столбца таблицы в нашем примере мы должны будем вписать все возможные наборы комбинаций значений истинности высказываний a, b, c.
Напомню порядок заполнения исходных столбцов: первый столбец делится пополам — верхняя половина заполняется нулями, нижняя — единицами; второй столбец — на 4 части: первая четверть заполняется нулями, вторая — единицами, третья — нулями, четвёртая — единицами; третий столбец делится уже на восемь частей и т.д.
Нетрудно заметить, что если n — число исходных столбцов, то число строк в таблице истинности равно 2n. В нашем примере число исходных столбцов 3, число строк 23=8. Впрочем, в нашей таблице строк будет девять, но верхняя строка будет фиксированной, в ней будут представлены имена высказываний (см. рисунок).

Ход работы

Создайте новый проект.
Из палитры компонентов выберите закладку Additional и добавьте в форму компонент StringGrid.
Установите в палитре Object Inspector (инспектор объектов), закладка Properties (свойства) для этого компонента следующее:
FixedCols — 0 (фиксированных столбцов в нашей таблице не будет)
DefaultColWidth — 24 (уменьшаем ширину столбцов)
ColCount — 4 (четыре столбца)
RowCount — 9 (девять строк)
Height — 228 (ширина таблицы)
Width — 103 (высота таблицы)
Последние два свойства вы можете отрегулировать самостоятельно.

Из палитры компонентов выберите закладку Standard и вынесите на форму компоненты: Label (текст-комментарий) и Button (эта кнопка будет запускать в ход механизм заполнения таблицы).
В палитре Object Inspector, Properties для компонента Label:
Caption — Таблица истинности y = NOT b OR a AND b or NOT c (комментарий)
WordWrap — True (переносить по словам)

В палитре Object Inspector, Properties для компонента Form:
Caption — Алгебра логики (текст заголовка окна программы)
Position — poScreenCenter (окно программы будет при загрузке размещено в центре экрана)
Размер формы отрегулируйте самостоятельно.

В палитре Object Inspector, Properties для компонента Button:
Caption — Заполнить таблицу (текст на кнопке)
Ширину кнопки отрегулируйте самостоятельно.

Теперь нужно заставить кнопку работать — запрограммировать для неё механизм заполнения таблицы. Для этого в Code Editor (редактор кода) для кнопки Button пропишите следующее:

procedure TForm1.Button1Click(Sender: TObject);
 var y,a,b,c:boolean;
     i:integer;
     astr,bstr,cstr,ystr:string;
begin
 i:=0;
 for a:=false to true do
   for b:=false to true do
     for c:=false to true do
       begin
         if a=false then astr:='0' else astr:='1';
         if b=false then bstr:='0' else bstr:='1';
         if c=false then cstr:='0' else cstr:='1';
         y:= not b or a and b or not c;
         if y=false then ystr:='0' else ystr:='1';
         Form1.StringGrid1.cells[0,i+1]:=astr;
         Form1.StringGrid1.cells[1,i+1]:=bstr;
         Form1.StringGrid1.cells[2,i+1]:=cstr;
         Form1.StringGrid1.cells[3,i+1]:=ystr;
         i:=i+1;
       end;
end;
И, наконец, напомню, что верхняя строка в нашей таблице фиксирована и в ней уже при загрузке программы должны быть проставлены имена высказываний.
Для этого в палитре Object Inspector, закладка Event (событие) для компонента Form запрограммируем событие OnActivate:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Form1.StringGrid1.cells[0,0]:=' a ';
  Form1.StringGrid1.cells[1,0]:=' b ';
  Form1.StringGrid1.cells[2,0]:=' c ';
  Form1.StringGrid1.cells[3,0]:=' y ';
end;
Остаётся только запустить программу на выполнение.

Задания для самостоятельной работы

Задача №1
Построить таблицу истинности для функции:
Формула (функция)

Задача №2
Заполнить таблицу размером 11x11 в соответствии со следующим условием: если номер столбца и номер строки ячейки, чётные то в ячейку вписать единицу, в противном случае вписать в ячейку ноль. Левый столбец и верхнюю строку сделать фиксированными и пронумеровать. Нумерацию осуществить уже при загрузке формы, а заполнение таблицы «поручить» кнопке «Заполнить таблицу».

Задача №3
Заполнить таблицу размером 8x8 в шахматном порядке («чёрные клетки» заполнить единицами, «белые клетки» нулями).Змейка В таблице логичнее сделать 9 строк и 9 столбцов, но при этом левый столбец и верхнюю строку сделать фиксированными и пронумеровать. Нумерацию осуществить уже при загрузке формы, а заполнение таблицы «поручить» кнопке «Заполнить таблицу».

Задача №4
Заполнить таблицу размером 4x4 «змейкой» (см. рисунок). В таблице отсутствуют фиксированные строка и столбец. Заполнение таблицы «поручить» кнопке «Заполнить таблицу».

Задача №5
Заполнить таблицу размером 5x5 случайными числами в диапазоне от 20 до 70. В таблице отсутствуют фиксированные строка и столбец. Заполнение таблицы «поручить» кнопке «Заполнить таблицу».

Желаю Вам успехов в самостоятельном решении задач!




ваш комментарий *
 
ваше имя

защитный код (цифры с картинки) *




   WilliamZose [12.02.2017, 19:21]
Hello.
I need to contact admin.
Thank you.
   Irina Lebedeva [14.02.2017, 09:06]
Hello.
Contact Admin: ira.alma@gmail.com
   гость [11.03.2017, 03:08]
Спасибо. Написал курсовую работу на ура.
Хороший урок с таблицей истинности.

§ Алиса в лесу Забывчивости
Решение логических задач методом рассуждений
«Из ложных посылок можно вывести истинное заключение».
Аристотель

§ Загадка Эйнштейна, а может быть и Кэрролла на новый лад ;-)
Решение логических задач табличным способом
«Если бы это было так, это бы ещё ничего, а если бы ничего, оно бы так и было, но так как это не так, так оно и не этак! Такова логика вещей!».
Льюис Кэрролл

§ Кто из богатырей победил Змея Горыныча?
Решение логических задач средствами алгебры логики
Посвящается Ельдесу Амерхановичу Бурину,
моему университетскому преподавателю информатики
Алма-Ата, КазГПУ, 1987–1992 год

«В научном мышлении всегда присутствует элемент поэзии. Настоящая наука и настоящая музыка требуют однородного мыслительного процесса». Альберт Эйнштейн

§ Три дочери писательницы Жаклин Деманж
Решение логических задач табличным способом
«Логика, которая одна может дать достоверность, есть орудие доказательства; интуиция есть орудие изобретательства».
Жюль Анри Пуанкаре

§ Способы умножения без таблицы умножения (гимнастика для ума)
Посвящается Елене Петровне Каринской,
моему школьному преподавателю математики и классному руководителю
Алма-Ата, РОФМШ, 1984–1987 год

Русский способ умножения; рисовательный способ умножения :-)
Некоторые математические символы на HTML




statistics
Рейтинг@Mail.ru       Яндекс.Метрика

Распространение материалов сайта приветствуется.
Ссылка на материалы весьма желательна, но не строго обязательна ;-)
«Знание должно служить творческим целям человека. Мало накоплять знания;
нужно распространять их возможно шире и применять в жизни». Рубакин Н.А.