Перевёл с беларусского))) Местами нейросеть. Хитрый автор.
Зимняя тишина обернула общагу радиотехнического института, будто ковертывая их в пушистую ковдру снега. Свет в окнах был редким-большинство студентов уже разъехались по домам, оставив после себя только гулкие корридоры и пустые кухни. Но на третьем этаже, в угловой комнате кружка, еще горела лампочка. И это был не просто теплый луч в холодной зиме-это был последний шанс для молодого программиста Андрея выполнить то, что он обещал себе и друзьям: до Нового 1993 года запустить на старой «Электроника ДВК-2» программу, которая будет отсчитывать пять минут до боя курантов.
Андрей сидел присутствуя нажимая кнопки клавиатуры, которая твердыми ударами отвечала ему своими металлическими сцуками. Часы на стене били четверть на одиннадцатую-до Нового года оставалось меньше часа. А до момента, когда Андрей хотел увидеть свой таймер в действии, - всего пять минут.
- Черт, - сказал он, глядя на экран. Курсор марготов, но цифры не менялись. Программа снова "зависла". Он уже третий раз переписывал таймер с нуля, так как первые варианты или не запускались, или делали бесконечный цикл, или просто выбивали ошибку «неправильный формат».
Все из - за того, что он хотел сделать это «по - своему» - не просто цикл FOR, а отсчитывание в режиме реального времени, с обновлением каждую секунду, со звуковым сигналом в конце и, если возможно, с изображением на экране.
- Ты же сам сказал, что это будет как Новый год в КГБ! - засмеялся из-под шкафа гена, который лежал на своей койке, читая Стругацких. - Только что-без огня и без троп в будущее.
Андрей не ответил. Он боялся, что если начнет говорить, то потеряет концентрацию. А концентрация была его единственным оружием против времени, холода и вахтеров, которые могли прийти «переварить, не сжег ли кто что». В общем ящике уже сгорел один трансформатор, и теперь на весь кружок действовал "режим технического поста": никаких дополнительных принадлежностей после десяти часов вечера. Но Андрей был хитрый - он подключил " ДВК " напрямую к розетке через пол, использовав старый удлинитель от радиоприемника. Правда, сейчас вся кимната была под ударом: в любой момент могла пойти Искра.
Он снова набрал код:
DIM totalSeconds AS INTEGER
DIM minutes AS INTEGER
DIM seconds AS INTEGER
DIM i AS INTEGER
- Ну же... - шептал он, нажимая F9. Экран на секунду погас, потом снова появилась надписи, и цифры начали бежать. Но не каждую секунду-слишком быстро. Андрей потянул ручку своего «записчика программиста "(обычной тетрадки в клетку, где считал такты процессора) и снова начал считать: "1000 итераций-это примерно 0.8 секунды ... значит, надо 1250»"
За окном завыло ветер, и хвойные ветви лупили в стекло, будто кто-то мечтал войти. В целом доме, пожалуй, только здесь и знали, что до боя курантов - пять минут. Андрей снова исправил цифру в строке 60 и перезапустил.
На этот раз пошло. Цифры менялись ровно раз в секунду. 298 ... 297 ... 296 ... он отвернулся от экрана и посмотрел на Гену:
- Работает.
- Ну, значит, у нас сейчас официальные атомные часы, - засмеялся тот, но вставал и подошел.
- Покажи.
Он взял с стола последнюю конфету "Мишка на север" и разорвал бумажку.
- Это будет наш первый подарок в новом году.
- Только если программа не сломается на 3-й секунде.
Но она не ломалась. Цифры шли дальше. Андрей уже начал чувствовать, как сердце стучать часто, как в первый раз, когда он первый раз принес девушке записи с текстами песен Depeche Mode. Тогда он боялся, что она скажет "нет « ... а теперь боялся, что машина скажет»ERROR".
280… 270… 260…
В дверях незнакомый голос:
- Кто здесь живет?
- Черт! Вахтер! - Гена быстро спрятал конфету и бросился гасить лампочку.
- Нет! - крикнул Андрей. - Нельзя!
Он был в двух шагах от целевой линии. До Нового года-менее пяти минут. И он хочет, чтобы все они увидели, как это работает. Он не боялся вахтера. Он боялся, что не сделает этого сам.
- Товарищ вахтер, - сказал он, выходя в корридор, - у нас здесь эксперимент. . Сейчас выйдет официальный комментарий по телевидению.
- Какой эксперимент в одиннадцатую ночью? - нахмурился человек в форму.
- Вычислительный. Ученые спросили... - И тут он упомянул, что вахтер сам был выпускником этого института. - Вы же, видимо, знаете профессора Козлова? Он руководит проектом…
Имя было вымышленное. Но вахтер извилист лицо:
- Козлов?.. Нет, не знаю.
- Ну, значит, не важно, - засмеялся Андрей и тихо закрыл дверь.
По крайней мере они получили еще минуту.
240 … 230… 220…
- А что будет, если в момент боя курантов у нас погаснет свет? - спросил Гена.
- Тогда Новый год наступит раньше, - ответил Андрей. - Но мы просто поверим, что все выйдет.
30… 29… 28…
Гена уже стоял сбоку, придерживая в руках конфету как секретный реликвий. Андрей чувствовал, как пот снизу палится по спине. Он хочет быть тем, кто несет мир во тьму. Даже если это только на пять минут. Даже если это только на старой машине.
10… 9… 8… 7… 6… 5… 4… 3… 2… 1…
В момент, когда на экране появилось " С НОВЫМ годом!"и программа свысока падала BEEP, за окном, на площади, издали раздался первый звон курантов. Издалека, но понятно. Как будто мир сам ответил на его молитву.
Гена не выдержал и обнял его.
- Ты сделал это, брат!!
- Не я... - сказал Андрей, глядя на мерцающий курсор. - Мы!
На столе остался теплый стакан, старые бумаги и машина, которая работала. В этот момент ему казалось, что он не просто написал таймер. Он сделал нечто большее-он победил время. Хотя бы на пять минут. И когда через несколько минут в кимнату ввалились друзья из других комнат с бутылками минеральной воды и мандаринами, Андрей уже знал: он больше не только студент, который учится писать программы. Он-тот, кто может изменить что-то важное. Даже если это только зимний вечер в гуртажитке. Даже если все, что он имеет, - это только BASIC и пять минут.
А новый 1993 год уже начался. И он был полон возможностей…
' ------------------------------------------------------------
'Это программа песочные часы на пять минут, написанный на MS BASIC
'Со скромностью и любовью к точности, от скромного программиста забаненного на yaplakal.com
' ------------------------------------------------------------
'Описываем переменные для сохранения общего количества секунд, времени, оставшегося, и управления циклом
DIM totalSeconds AS INTEGER
DIM minutes AS INTEGER
DIM seconds AS INTEGER
DIM i AS INTEGER
'Устанавливаем продолжительность: пять минут, переведенных в секунды (5 * 60)
totalSeconds = 300
'Сообщаем, что обратный отсчет начался
PRINT " песок времени начинает сыпаться..."
PRINT " пройдет пять минут-не больше и не меньше."
'Главный цикл обратного отсчета: одна итерация на каждую секунду
FOR i = totalSeconds TO 0 STEP -1
'Вычисляем текущие минуты и секунды из общего количества секунд, оставшихся
minutes = I \ 60 ' целочисленное деление дает полные минуты
seconds = I MOD 60 ' остаток дает секунды, оставшиеся
'Выводим текущее время, оставшееся, в удобном виде
PRINT USING "осталось времени: # # минут и # # секунд"; minutes; seconds
'Делаем паузу на одну секунду, чтобы имитировать равномерный тык часов
'В QBASIC для этого используется команда SLEEP
SLEEP 1
'Очищаем экран перед следующим выводом (необязательно, но добавляет четкости)
'Примечание: CLS может вызвать марганение; удалите, если не нравится
CLS
NEXT i
'Если цикл закончился, значит, пять минут уже прошли
PRINT " пять минут прошли, как и было сказано!"
PRINT " этот момент-сейчас!"