Вопрос № 143788: Даны действительные положительные числа a, b, c, x, y. Выяснить, пройдет ли кирпич с ребрами a, b, c в прямоугольное отверстие со сторонами x, y. Просовывать кирпич в отверстие разрешается только так, чтобы каждое из его ребер было параллельно или пе...Вопрос № 143801: Здравствуйте Уважаемые эксперты. Я недавно занялся изученим Turbo pascal и еще далеко не со всеми его функциями знаком. Но меня интересует такая вещь, есть
ли в нем такая функция чтобы при нажатии определенной клавиши осуществлялось определенное дейс...Вопрос № 143829: Добрый вечер! Не могли бы вы, объяснить как работает эта программа (комментарии к программе)! Заранее спасибо!...
Вопрос № 143.788
Даны действительные положительные числа a, b, c, x, y. Выяснить, пройдет ли кирпич с ребрами a, b, c в прямоугольное отверстие со сторонами x, y. Просовывать кирпич в отверстие разрешается только так, чтобы каждое из его ребер было параллельно или перпендикулярно каждой из сторон отверстия.
Здравствуйте Уважаемые эксперты. Я недавно занялся изученим Turbo pascal и еще далеко не со всеми его функциями знаком. Но меня интересует такая вещь, есть ли в нем такая функция чтобы при нажатии определенной клавиши осуществлялось определенное действие. Тоесть я представляю это таким образом ... readln(x); if x = 'd' then goto m1; if x = 'a' then goto m2; ... В общем я представляю х как string. Но мне хочется чтобы не надо было вводить и нажимать ЕNTER, а чтобы сразу после
щелчка на определеную кнопку выполнялось действие. Пожалуйста подскажите, что для этого необходимо сделать. Заранее огромное спасибо.
Отвечает: sir Henry
Здравствуйте, Пашков Дмитрий Владимирович! Если это действие одноразовое, то можно воспользоваться одной функцией ReadKey из модуля CRT, вот например:
Код:
Program myprog1; Uses Crt;
Var x: Char; Begin x:=ReadKey; {Если до этого момента никакая клавиша не была
нажата, то ReadKey ожидает нажати} {Теперь, в зависимости от той или иной нажатой клавиши, выполняем определённые действия} Case x of 'a': Begin {Нажата клавиша a} WriteLn('Нажата клавиша <a>'); WriteLn('Имитируем Abort...'); End; 'd': Begin {Нажата клавиша d} WriteLn('Нажата клавиша <d>'); Write('Имитируем бурную деятел
ьность...'); End; else {Этот блок выполняется, если нажата любая другая клавиша кроме a и d. Вставлять его желательно, т.к. люди часто ошибаются и им надо об ошибке сообщить.} WriteLn('Эге! Про эту клавишу мы не договаривались - ', x); End; End.
Заметьте, я не использую goto, чтобы не бегать по программе в поисках того, что у нас назначено на нажатию определённой клавиши, а записал нужные действия сразу в блоке рапознавания нажатой
клавиши. Несколько другой случай, когда выход из программы осуществляется по нажатию какой-то определённой клавиши. Тут нам поможет ReadKey в сочетании с циклом:
Код:
Program myprog2; Uses Crt;
Var x: Char; Begin Repeat
x:=ReadKey; WriteLn('Нажата клавиша - ', x); Until x = #27; WriteLn('Выход из программы...'); End.
Здесь программа в цикле отображает все нажатые клавиши и если нажата клавиша ESC, то цикл завершается и программа прерывается. Поскольку клавиша ESC не имеет отображения на экране, по крайней мере в текстовом режиме, то использован её код в сочетании с символом #. Многие неотображаемые на экране клавиши можно проверять по их коду в сочетании с символом #. Например
клавиши "Стрелка влево" и "Стрелка вправо" имеют коды соответственно 75 и 77. При написании программы они будут обозначаться #75 и #77.
Ответ отправил: sir Henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 15.09.2008, 05:40 Оценка за ответ: 5 Комментарий оценки: Cпасибо большое. Я бы и не додумался сам. Большое спасибо. Еще раз.
Вопрос № 143.829
Добрый вечер! Не могли бы вы, объяснить как работает эта программа (комментарии к программе)! Заранее спасибо!
Приложение:
Отправлен: 13.09.2008, 19:36
Вопрос задал: Miracle (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 9)
Отвечает: Евчик Сергей Александрович
Здравствуйте, Miracle! Программа с коммантами в приложении. Надеюсь я объяснил что она делает т.к. учитель с меня никакой :-((( Удачи.
Приложение:
Ответ отправил: Евчик Сергей Александрович (статус: 3-ий класс)
Ответ отправлен: 14.09.2008, 18:28 Оценка за ответ: 5 Комментарий оценки: Большое Вам спасибо! Вот теперь всё понятно!
Жаль, что не поставить 10+!