ТАБЛИЦЫ ИСТИННОСТИ 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
Распространение материалов сайта приветствуется.
Ссылка на материалы весьма желательна, но не строго обязательна ;-)
«Знание должно служить творческим целям человека. Мало накоплять знания;
нужно распространять их возможно шире и применять в жизни». Рубакин Н.А.
|