Спаситеее. Генератор случайных чисел
Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill
Странно, неужели они логику одного из фундаментальных операторов поменяли?
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Что-то припоминается мне из теории Паскаля, что про счетчик цикла for по выходе из цикла говорится, что его значение никак не гарантировано. Т.е. при программировании не следует делать никаких допущений о значении этой переменной.Хыиуду писал(а):Странно, неужели они логику одного из фундаментальных операторов поменяли?
Мне припоминалось, что при выходе из цикла for значение индекса равно последнему значению плюс один. Потому что цикл, если не ошибаюсь, ассемблерно реализован примерно так (в переводе опять же на Паскаль):
Код: Выделить всё
i:=startvalue-1;
lab1: i:=i+1;
if i>endvalue then goto lab2;
{выполнение команд цикла}
goto lab1;
lab2: {идти дальше по программе}
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Снова. Насколько я помню, это (значение счетчика цикла по его выходу) никем не гаратировано. То, что в какой-то реализации какого-то языка получается такой результат, не гарантирует, что вдругой реализации даже этого де языка результат будет такой же. Пожалуй, это можно назвать "недокументированной особенностью". А, как известно, полагаться на недокументированные штучки - это риск.Хыиуду писал(а):Мне припоминалось, что при выходе из цикла for значение индекса равно последнему значению плюс один. Потому что цикл, если не ошибаюсь, ассемблерно реализован примерно так (в переводе опять же на Паскаль):Код: Выделить всё
i:=startvalue-1; lab1: i:=i+1; if i>endvalue then goto lab2; {выполнение команд цикла} goto lab1; lab2: {идти дальше по программе}
А я и говорю, левые штучки. Впрочем, у меня на ТурбоПаскале 7.0, сколько себя помню, так и было.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
-
- Сообщения: 6
- Зарегистрирован: 23 мар 2007, 12:24
Большое человеческое спасибо. Наверное минут за пять программу написали, но все равно - помощь неоценима. Добавила там еще счетчик, а то количество попыток неправильно выдавал 
