Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Учебная программа INTTEST





Игра “Угадай число”: программа случайным образом выбирает целое число в диапазоне О... 1000 и запоминает его. Пользователь пытается угадать его и вводит свое число. Сравнив ввод с запомненным числом, программа сообщает - больше, меньше или равно введенное число запомненному. Ввод продолжается до угадывания, после чего программа предлагает сыграть еще раз.

Поскольку пользователь вводит только числа, изменим форму fmExample: как и в предыдущей программе intmult вместо компонента edinput типа TEdit поместим на форму одноименный компонент типа TMaskEdit. Выберите опцию File | New | Application, щелкните по компоненту edinput и удалите его с помощью клавиши Delete, затем поместите на его место компонент MaskEdit (страница Additional),назовите его edInput (свойство Name) и в его свойство

EditMask поместите строку

0999;1;

В секцию private описания класса fmExampie поместите объявление целочисленного поля х:

Private

{ Private declarations }

X: Integer;

Для обработчика события OnActivate формы fmExampie Напишите такой код:

procedure TfmExample.FormActivate(Sender: TObject);

Begin

X:= Random (1001); // Загадываем случайное число

edinput.SetFocus; // Передаем строке edinput фокус ввода

Caption:= 'Угадай целое число в диапазоне О...1000';

IbOutput.Caption:== 'Введите число:';

End;

Поместите в обработчик события onciick кнопки bbRun такой код:

procedure TfmExample.bbRunClick(Sender: TObject);

Var

Y: Integer;

Begin

if edinput.Text = '' then

Exit; // Если нет входного текста, прекращаем работу

// Преобразуем ввод в число:

Y:= StrToInt(Trim(edInput.Text));

edinput.Text := ''; // Очищаем ввод

edinput.SetFocus; // Устанавливаем фокус ввода

{ Параметр Tag = 0 означает угадывание числа, иначе - ответ на вопрос, будет ли пользователь играть после угадывания }

if Tag = 0 then

if X < Y then // Угадывание числа

mmOutput.Lines.Add('X < '+IntToStr(Y))

else if X > Y then

mmOutput.Lines.Add('X > '+IntToStr (Y))

else // X = Y begin

mmOutput.Lines.Add("X = +IntToStr(Y));

MessageBeep(MB_OK); // Звук для привлечения внимания

IbOutput.Caption:='Вы угадали! Введите 1, если хотите повторить:';

Tag:= 1; // Следующий ввод - ответ на вопрос

End;

else // Анализ ответа

if Y = 1 then

Begin

X:= Random(1001); // Новое число

IbOutput.Caption:= 'Введите число:';

Tag := 0; // Следующий ввод - угадывание

edinput.SetFocus

End

Else

Close;

End;

Комментарий к программе

При активизации окна программы обработчик FormActivate с помощью оператора

Х:= Random(1001);

помещает в поле X случайное целое число в диапазоне от 0 до 1001 -1 = 1000 (параметр обращения к генератору псевдослучайных чисел Random на единицу больше верхней границы диапазона).

Каждый компонент Delphi имеет целочисленное свойство Tag, которым программист может распоряжаться по своему усмотрению. Программа использует это свойство формы fmExampie для разделения алгоритма обработки события OnClick кнопки bbRun на два варианта: пользователь угадывает число (тад = 0) или отвечает на предложение сыграть еще раз (тад = 1). В момент создания экземпляра класса TfmExmple - объекта fmExample - все его поля обнуляются, поэтому первоначально Tag = 0 и программа анализирует угадывание числа. При угадывании срабатывает составной оператор

Begin

mmOutput.Lines.Add('X = Ч-IntToStr(Y));

MessageBeep(MB OK); // Звук для привлечения внимания

IbOutput.Caption:='Вы угадали! Введите 1, если хотите повторить:';

Tag:= 1; // Следующий ввод - ответ на вопрос

End

и Tag получает значение 1 (стандартная процедура MessageBeep заставляет звуковую систему ПК издать короткий звуковой сигнал).

Теперь очередной щелчок по кнопке bbRun будет означать, что пользователь подготовил ответ на вопрос, и программа анализирует его. Если пользователь ввел число отличное от 1, произойдет обращение к методу close формы fmExample и программа прекратит работу.

5.4.3. Операторы повторений

В языке Object Pascal имеются три различных оператора, с помощью которых можно запрограммировать повторяющиеся фрагменты программ.

Счетный оператор цикла FOR имеет такую структуру:

for <параметр цикла>:= <нач_знач> to <кон знач> do <оператор>;

Здесь for, to, do - зарезервированные слова (для, до, выполнить);

<параметр_цикла> - переменная типа Integer (точнее, любого по-, рядкового типа, см. гл. 7); <нач_знач> - начальное значение - выражение того же типа; <кон_знач> - конечное значение - выражение того же типа; <оператор> - произвольный оператор Object Pascal.

При выполнении оператора for вначале вычисляется выражение <нач_знач> и осуществляется присваивание <параметр_цикла>:= <нач_знач>. После этого циклически повторяется:

  • проверка условия <параметр_цикла> <= <кон_знач>; если условие не выполнено, оператор for завершает свою работу;
  • выполнение оператора <оператор>;
  • наращивание переменной <параметр_цикла> на единицу.






Дата добавления: 2015-10-18; просмотров: 411. Нарушение авторских прав; Мы поможем в написании вашей работы!




Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...


Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...


Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...


Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Алгоритм выполнения манипуляции Приемы наружного акушерского исследования. Приемы Леопольда – Левицкого. Цель...

ИГРЫ НА ТАКТИЛЬНОЕ ВЗАИМОДЕЙСТВИЕ Методические рекомендации по проведению игр на тактильное взаимодействие...

Реформы П.А.Столыпина Сегодня уже никто не сомневается в том, что экономическая политика П...

Вопрос 1. Коллективные средства защиты: вентиляция, освещение, защита от шума и вибрации Коллективные средства защиты: вентиляция, освещение, защита от шума и вибрации К коллективным средствам защиты относятся: вентиляция, отопление, освещение, защита от шума и вибрации...

Задержки и неисправности пистолета Макарова 1.Что может произойти при стрельбе из пистолета, если загрязнятся пазы на рамке...

Вопрос. Отличие деятельности человека от поведения животных главные отличия деятельности человека от активности животных сводятся к следующему: 1...

Studopedia.info - Студопедия - 2014-2024 год . (0.01 сек.) русская версия | украинская версия