функція keypressed
У мові програмування Pascal є кілька засобів для роботи з клавіатурою. З деякими з них ми вже познайомилися. Це оператори Read і Readln, які дозволяють вводити дані з клавіатури. Зручність використання цих 2-х процедур полягає в тому, що вони автоматично перетворюють Зауважте, що ви в значення заданого типу.
Наприклад, припустимо, що в програмі оголошена змінна «chislo» з типом даних Integer: var chislo: integer ;. Тоді оператор Readln (chislo) змусить програму зупинитися і чекати введення з клавіатури символів, які повинні бути числами. Після введення ці символи будуть перетворені у відповідні виконавчі значення і привласнені змінної «chislo». Нарпімер, якщо ми введемо число 10, то воно буде перетворено в двійкову систему числення. Результатом буде число 1010. Тепер, припустимо, що змінна «chislo» має тип String: var chislo: string ;. В цьому випадку, оператор Readln (chislo) також зупинить хід програми і буде чекати введення символів. Якщо ми введемо з клавіатури числа, то вони будуть перетворені в двійковий код згідно кодової таблиці ASCII. Наприклад, число 10 буде перетворено так: символ «1» згідно з таблицею ASCII має код 49 (в двійковій системі числення 110001). Символ «0» має код 48 (в двійковій системі числення 110000). Таким чином, символи 10 будуть перетворені в двійкові значення 110001 і 110000 і привласнені змінної «chislo».
Однак, незважаючи на простоту і зручність використання стандартних процедур Read і Readln вони має певні недоліки. Одним з головних недоліків є відображення на екрані символів, що вводять, які за задумом програми виводити не потрібно. Крім того, процедури Read і Readln здатні до введення лише певної кількості чисел, букв і розділових знаків. Але вони не здатні розпізнати натискання на клавіатурі таких клавіш як «Ctrl», «Esc», «Alt» і інших функціональних клавіш.
У модулі CRT присутні більше зручна для цих цілей функція, яка називається ReadKey. Перш ніж познайомитися з цією функцією розглянемо іншу функцію з модуля CRT під назвою KeyPressed.
Функція KeyPressed служить для перевірки, чи була натиснута клавіша і повертає значення або True (якщо клавіша була натиснута), або False (якщо не натискати жодної клавіші). Розглянемо наступний приклад.
Тут наводиться код програми, яка виводить на екран випадкові числа. Тут використовується цикл Repeat..Until. Цикл в програмі буде нескінченним, тому що умова зупинки циклу (until 2> 3) не виконається ніколи (це умова я взяв від балди, лише для того, щоб продемонструвати роботу нескінченної програми).
При запуску програми на екран будуть виводитися різні числа, причому програма буде працювати до нескінченності, які б клавіші ви не натискали. В процесі роботи програма не реагує на натискання клавіш, за винятком одночасного натискання клавіш «Ctrl + Break», які використовуються для примусового завершення програми.
Змінимо рядок №10, виставивши іншу умову: until keypressed. Тепер цикл буде виконуватися до тих пір, поки не буде натиснута яка-небудь клавіша.
Після запуску програми натисніть на будь-яку клавішу на клавіатурі. Цикл перестане працювати, і числа більше не будуть виводитися.