Отслеживание вводимых данных, Отслеживание соответсвию типа |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Отслеживание вводимых данных, Отслеживание соответсвию типа |
Account |
12.11.2008 9:13
Сообщение
#1
|
Бывалый Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: 0 |
Есть переменная типа byte. Ее вводит пользователь вручную. Вопрос следующий, есть ли возможность отследить введеное значение пользователем (проверить на cоответствие типу), не прибегая к дополнительным переменным и подпрограммам). (вопрос относиться к Pascal и C)
|
Lapp |
12.11.2008 9:31
Сообщение
#2
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
есть ли возможность отследить введеное значение пользователем (проверить на cоответствие типу) Возможность, безусловно, есть. Но вот это:не прибегая к дополнительным переменным и подпрограммам - повергает меня в некоторое недоумение.. А что оно значит? Что считать "дополнительным"?-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Account |
12.11.2008 9:40
Сообщение
#3
|
Бывалый Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: 0 |
НУ тогда опустите данное высказывание
Цитата не прибегая к дополнительным переменным и подпрограммам И какие варианты можете предложить? |
volvo |
12.11.2008 11:41
Сообщение
#4
|
Гость |
"Защиту от дурака" делаешь? Обычно вводят строку, ее конвертируют в число, и проверяют все возможные ошибки, которые при этом могли произойти:
function get_byte(var b: byte): boolean;Попробуй обойти Сообщение отредактировано: volvo - 12.11.2008 12:28 |
Account |
12.11.2008 12:14
Сообщение
#5
|
Бывалый Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: 0 |
volvo , результат принимаю, НО теперь обратимся к моему первому посту
Цитата не прибегая к дополнительным переменным и подпрограммам function get_byte(var b: byte): boolean; попадает под него. Какие еще есть варианты. Также хотелосьбы пояснение к следующему
Сообщение отредактировано: Account - 12.11.2008 12:15 |
volvo |
12.11.2008 12:27
Сообщение
#6
|
Гость |
Цитата Какие еще есть варианты. Есть еще варианты пользоваться более современными средствами разработки: FPC, скажем, позволяет:var b: byte; P.S. Комментарии выше добавлены... |
Account |
12.11.2008 12:42
Сообщение
#7
|
Бывалый Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: 0 |
По поводу более ссовременных средств понятно)
Цитата { Проверяем, была ли при вводе строки ошибка. Если была, то Ok будет False } ok := (ioresult = 0); а сравнивание результата функции ioresult с нулем производиться автоматом чтоли без оператора условия, это заложено в компиляторе или интерпритаторе посредством директивы {$I-} ........ {$I+} или просто заложено? и вот Цитата ok and (err = 0) and (length(s) < 4) and ((n > 0) and (n <= 255)); таже история что и спредыдущим выражением? А так я понимаю если без выше упомянутых вариантов, возможно только если менять срутктуру самой процедуры readln языка. |
volvo |
12.11.2008 13:06
Сообщение
#8
|
Гость |
Цитата а сравнивание результата функции ioresult с нулем производиться автоматом чтоли без оператора условия, это заложено в компиляторе ok := (ioresult = 0) cовершенно аналогично: if (ioresult = 0) then ok := true: происходит сравнение ioresult с нулем, и результат сравнения (истина или ложь) заносится в переменную Ok. Цитата если без выше упомянутых вариантов, возможно только если менять срутктуру самой процедуры readln языка. Каким образом ты собрался ее менять? Если б ты уточнил задачу, зачем тебе это понадобилось, возможно получил бы еще варианты, а то ничего не сказав хочешь получить ответ, а мне лень придумывать все возможные способы реализации и применения этой мути, да еще с такими ограничениями, как "не прибегая к дополнительным переменным и подпрограммам". |
Account |
12.11.2008 13:23
Сообщение
#9
|
Бывалый Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: 0 |
volvo
Цитата Каким образом ты собрался ее менять? Я не собрался, а предположил. Не сердись и спасибо за ответы. |
Lapp |
12.11.2008 13:36
Сообщение
#10
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Я не собрался, а предположил. Но все равно странное предположение - менять компилятор под свою задачу.. Бывает, люди делают свои предпроцессоры, если у них обширный круг специфических задач. Но сам компилятор - извини, непонятно.. Заинтриговал . Может, все же скажешь - зачем? -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Account |
12.11.2008 14:26
Сообщение
#11
|
Бывалый Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: 0 |
Lapp
Цитата Бывает, люди делают свои предпроцессоры У меня не такие знания в этом, не потяну Цитата Заинтриговал . Может, все же скажешь - зачем? Как таковой причины нет, делая одно задание где вчастности нужно было ограничить пользователю диапозон вводимого значения, тогда этим и заинтересовался, и подумал как бы было не плохо, чтоб таже самая процедура readln проверяла поступающие в нее данные, соответсвие вводимого типу указанной переменной, помоему былобы просто великолепно. P.S. Случайно дублировл пост, не нашел как убрать дубликат, поэтому просто убрал текст( Сообщение отредактировано: Account - 12.11.2008 14:30 |
Lapp |
12.11.2008 15:02
Сообщение
#12
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
как бы было не плохо, чтоб таже самая процедура readln проверяла поступающие в нее данные, соответсвие вводимого типу указанной переменной, помоему былобы просто великолепно. Это палка о двух концах. Языки более высокого уровня могут предоставлять подобные средства - но при этом неизбежно уменьшаются свободы программиста. Паскаль уровнем выше ассемблера, но ниже, скажем, PHP или MatLab. Соответвенно, возможности его несколько уже, чем у ассемблера, но значительно шире, чем на PHP - хотя последний предоставляет очень удобный во многих случаях интерфейс. Иными словами - все за счет чего-то. P.S. Случайно дублировл пост, не нашел как убрать дубликат, поэтому просто убрал текст( Ничего страшного, бывает. Я удалил. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Account |
12.11.2008 16:13
Сообщение
#13
|
Бывалый Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: 0 |
Это палка о двух концах. Согласен. Вообще былоб не плохо иметь возможность править внутренние процедуры и функции языка На этом думаю тема исчерпана и можно ее удалить, чтоб не засоряла форум (Но это конечно на Ваше усмотрение ) P.S. Спасибо за ответы и дискуссию) Сообщение отредактировано: Account - 12.11.2008 16:19 |
Lapp |
13.11.2008 1:16
Сообщение
#14
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Согласен. Вообще былоб не плохо иметь возможность править внутренние процедуры и функции языка Хоть ты и пишешь, что соглосен, но видно, что ты не понял.. Эта возможность, если бы и была, была бы не на пустом месте - скорее всего, за счет эффективности (и цены). Я не говорю про переносимость - и так ясно..На этом думаю тема исчерпана и можно ее удалить, чтоб не засоряла форум Все темы являются собственностью Форума (а не авторов) и удалению не подлежат (за исключением вредоносных). Это не "мусор", а богатство Форума. Прошу учитывать это в дальнейшем. Просьбы об удалении (и только отдельных сообщений!) рассматриваются исключительно в самых крайних случаях.-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Account |
13.11.2008 11:20
Сообщение
#15
|
Бывалый Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: 0 |
Lapp
Цитата Все темы являются собственностью Форума (а не авторов) и удалению не подлежат (за исключением вредоносных). Это не "мусор", а богатство Форума. Прошу учитывать это в дальнейшем. Просьбы об удалении (и только отдельных сообщений!) рассматриваются исключительно в самых крайних случаях. Я и не настаивал, а просто предложил. Так что если, не так выразился, звиняй) А вообще раньше когда выполнял задания, и надо было вводить какието данные, например опятьже размерность массива например, я не особо парился над темой проверки, а вот тут в последние вермя меня это прсто что то зацепило, ведь обязательно найдеться тот кто захочет попробовать ввести не то что от него требуеться, и стало это тут вот у меня занозой))) |
volvo |
13.11.2008 12:21
Сообщение
#16
|
Гость |
Цитата в последние вермя меня это прсто что то зацепило, ведь обязательно найдеться тот кто захочет попробовать ввести не то что от него требуеться, и стало это тут вот у меня занозой))) Из этого совершенно не следует, что должна быть необходимость менять библиотечные подпрограммы языка. Как делать защиту "от дурака" тебе было показано. НЕиспользование дополнительных процедур/функций/переменных это никому не нужные усложнения. Ты что, в программе тоже не используешь никакие процедуры/функции/переменные? Используешь наверняка. Тогда почему надо обязательно ставить для проверки эти ограничения? Ну, мозолит тебе глаза эта дополнительная функция - вынеси ее в отдельный модуль, в конце концов, и используй когда тебе надо с той же легкостью, с которой ты используешь какой-нибудь ClrScr из библиотеки CRT. Можешь даже назвать свою новую функцию ReadLn (Да, да... Этого никто и никогда не запрещал, это просто обычный идентификатор, с ним можешь делать все, что угодно), и ты вообще не увидишь разницы в использовании. Не надо искусственно ограничивать возможности языка. Это уже получается не программирование, а извращение. |
Account |
13.11.2008 12:59
Сообщение
#17
|
Бывалый Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: 0 |
volvo , спасибо. Учту все твои советы.
|
Текстовая версия | 28.09.2024 5:29 |