Я долго думал, что же сделать нам с тобой на втором
уроке по Delphi. Калькулятор? Не интересно. Hello, world? Ну, это же
примитив. Лучше намутить и интересное, и нестандартное. И веселое! Короче,
писать сегодня будем «искусственный интеллект»!!!
Запускай Delphi. Помни, я использую Borland Delphi 6, и если в предыдущих
версиях что-то не будет работать, я не виноват. Хотя, вряд ли такое
случится. Во всяком случае сегодня.
Пока грузится всеми любимый продукт, расскажу тебе принцип нашей программы.
Пользователь вводит фразы, например: «привет», «как дела?», «как тебя
зовут» и т.д. Если программа видит такую фразу, то соответственно отвечает.
Никакой логической обработки, если есть вопрос как тебя зовут, то будет
ответ – меня зовут так-то. Конечно, тоже очень примитивная программа,
но все-таки второй урок!
Кидай на форму три компонента – Tmemo, TEdit и TButton, как на рисунке.
В мемо будут все фразы – и фразы пользователя, и программы. В едите
пользователь будет вводить слова, а кнопкой будет отправлять их на обработку
программе. Все просто.

Свойство Caption у Button измени на «Ввод» или что-то в этом роде. У
Edit’a text просто сделай пустым. Но лучше напиши там «привет». Потом
скажу зачем. Можешь еще у Memo в свойстве Lines написать приветствие
или что пожелаешь сам. Теперь выдели саму форму – Form1. Ее свойство
Caption измени с Form1 на «Супер-пупер прога Васи Финтифлюшкина». Хотя,
может тебя и не так зовут :).
С дизайном разобрались. Пора кодить. Дважды кликни по кнопке – откроется
редактор кода. Теперь там пишем:
if edit1.Text='привет' then
begin
memo1.Lines.Add('Пользователь: '+ edit1.Text);
memo1.Lines.Add('Компьютер: '+'привет, привет!');
end;
Давай разбираться. Первая строчка – условие. Идет проверка – если свойство
text компонента edit1 равно «привет», тогда начинаем действия. Соответственно,
если написанный текст – это не «привет», то ничего происходить не будет.
Допустим, условие прошло. Начинается небольшая процедура – begin означает
начало. Третья строчка – в компонент memo1 в свойство Lines добавляется
новая строка. В скобках после memo1.lines.add то, что будет добавляться.
В апострофах (‘’) текст, который будет выводится. Там написано – ‘Пользователь:
’ Это значит, что новая строка будет начинаться со слова «Пользователь:
». Далее идет «+edit1.Text); Как вы, наверное, заметили, текст идет
уже без апострофов. Это означает, что выводится будет не текст, а значение
свойства указанного там. В нашем случае будет выводиться то, что записано
в свойстве text компонента edit1. Плюсик означает, что к тексту будет
«прибавляться» еще текст.
Теперь разберемся, что мы вообще только что сделали в третьей строке.
А тут все просто – в memo1 выводится строка следующего содержания «Пользователь:
привет». То есть как в чатах – сначала кто сказал, а потом – что сказал.
Чтобы не было путаницы.
Идем далее. Четвертая строчка. Похоже на третью, но это уже ответ компьютера.
Здесь добавляется строчка, но текст берется не из другого компонента,
а пишется сразу. То есть на экран появится «Компьютер: привет, привет!».
Такая вот беседа.
Командой end закрываем нашу маленькую процедуру. Да, чтобы не было
путаницы, здесь полный код процедуры нажатия кнопки TButton с моими
комметариями:
procedure TForm1.Button1Click(Sender: TObject);
begin //начало процедуры
if edit1.Text='привет' then //проверка, условие иными словами
begin // начало подпроцедуры
memo1.Lines.Add('Пользователь: '+ edit1.Text); // пишем в мемо
фразу пользователя
memo1.Lines.Add('Компьютер: '+'привет, привет!'); // пишем
в мемо фразу компа
end; // конец подпроцедуры
end; // конец процедуры
Конечно, теперь программа умеет отвечать только на «привет». Да и то,
если напишешь с большой буквы, то не ответит. Поэтому на каждую фразу
нужно будет заводить по отдельному условию в процедуру Buttun.Click.
Все будут выглядеть как первая, только будет меняться фраза пользователя
и ответ программы. К примеру:
if edit1.Text='как дела' then
begin
memo1.Lines.Add('Пользователь: '+ edit1.Text);
memo1.Lines.Add('Компьютер: '+'да потихоньку');
end;
if edit1.Text='как тебя зовут' then
begin
memo1.Lines.Add('Пользователь: '+ edit1.Text);
memo1.Lines.Add('Компьютер: '+'меня.. мм… Патефон Иваныч!');
end;
и так далее. Условий можно ставить сколько угодно. Получается, буквально
10-15 часов кодинга, и с твоей программой можно поболтать по-человечески!
:) Шучу, не сиди за компом много. Глаза испортишь. Ну все, бывай!