Страница: 1 | 2 | 3 |
Вопрос: Вопрос по Randomize
Добавлено: 09.04.06 05:05
Автор вопроса: Павел | Web-сайт:
Ответы
Всего ответов: 35
Номер ответа: 16
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #16
Добавлено: 11.04.06 23:15
ок. Моё предложение:
Использовать конструкцию Goto только в сочитании On Error, и всё.
Номер ответа: 17
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #17
Добавлено: 12.04.06 11:20
Использовать конструкцию Goto только в сочитании On Error, и всё.
Очередной стереотип. Скажи мне, уважаемый, в асме нынче тоже стало несолидно использовать команды безусловного перехода. Или моду нынче задают ламеры?
Номер ответа: 18
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #18
Добавлено: 12.04.06 13:19
Тут в форуме кто то выкладывал генератор случайных чисел для MASM, но в VB он к сожалению никак не воспроизводится, т.к. использует старшую часть 64-битного результата умножения для дальнейших вычислений.
По теме спора.
Во первых GOTO определяет не только использование безусловного перехода, а в том числе и переходов с условиями. Ну а во вторых, в языках высокого уровня для циклических повторений есть более удобные формы записи, которые при компиляции в машинный язык заменяются на переходы. Правда в VB почему-то забыли добавить оператор Iterate, но при желании и без него тоже можно обойтись. Всё зависит от самомго ненадёжного звена в компьютере - человека , как он построит структуру программы, так и будет. Если хочет, то на одних GOTO (это не проблема), хочет вообще без GOTO, ну а захочет скомбинирует. Если умеешь и так и по другому, тебе только + (не тот что модератер даёт ).
Ну вот, пока гнался за модой и отстал от жизни. Эта форма записи давно заменена на Попытка...Исключение...КонецПопытки.
Номер ответа: 19
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #19
Добавлено: 12.04.06 14:01
Я, конечно, не авторитет, но по моей скромной ИМХЕ Goto - наиболее удобный вариант если нужно в зависимости от условия вернуться к определенному фрагменту кода. Можно, конечно, городить вложенные опреаторы повтора, но это на любителя...
ЗЫ прикиньте, эти ламеры, пишущие на asm и sql, до сих пор употребляют Goto, jmp и т.п. Вот дебилы, да?
ЗЫЫ
Попытка...Исключение...КонецПопытки.
Ну, скажем мне невозобновляемая система не особо нравится. Скажем, раньше напишешь On Error Resume Next - и забываешь про ошибки. В коде можно было лепить что угодно, все лаги просто игнорировались. А теперь...
К счастью (ли?), до VB6 эта концепция еще не добралась
Номер ответа: 20
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #20
Добавлено: 12.04.06 14:47
Допустим про "ламеров" sql я ничего сказать не могу, а вот про ассемблерщиков это ты зря. Язык высокого уровня тем и отличается от ассемблера что при компиляции программы на ЯВУ она в этот самый ассемблер и транслируется. Если возможности процессора ограничены изменением значения указателя на следующую выполняемую инструкцию (проще говоря переход это есть изменение значения регистра EIP), то выше этого ты всё равно не прыгнешь, разве что напишешь свой компилятор/интерпретатор, но это уже совсем другая история.
Такой системы быть не должно (по моему скромному мнению конечно). В конечном продукте должны возникать только те ошибки, которые предусмотрены программистом, иначе конечным продуктом это назвать сложно. Конечно в идеале ничего никогда не происходит, так что каждая система скорее всего позволяет игнорировать ошибки.
Ну "не добралась" это громко сказано. Скорее "официально не поддерживается". Кто тебе мешает использовать такой стиль самостоятельно. Например, так:
Dim A As Integer, B As Integer, C As Integer
On Error Resume Next
A = 1
C = A / B
If Err > 0 Then
MsgBox Error, , Err
Else
MsgBox "No errors"
End If
End Sub
PS: В IDE настройте прерывание только на необработанные ошибки.
Номер ответа: 21
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #21
Добавлено: 12.04.06 15:40
Никто на асме мегабольшие проги не кодит. Соответственно найти что-то в коде проще, при всём этом такая задумка асма изначально. Опираясь на учебники, статьи, и другую литиратуру по программированию, а также, на свой опыт (я ведь в прошлом тоже кодил и гоуту и "абы работало", сделал для себя вывод, что лучше обходится без гоуту, особенно в больший и средних программах. ИМХО
Номер ответа: 22
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #22
Добавлено: 12.04.06 16:04
2 Hacker: CInt преобразует данные в тип Integer и округляет
Номер ответа: 23
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #23
Добавлено: 12.04.06 19:15
Оператор GOTO - неотьемлимая часть языка Бейсик и никуда от этого не денешся. Другое дело что циклические конструкции распространились несколько позже. Использование GOTO всё же приемлимо в некоторых нестандартных или критических по скорости алгоритмах, где автомат компилятора показывает неудовлетворительные результаты.
Номер ответа: 24
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #24
Добавлено: 12.04.06 20:59
#include <conio.h>
using namespace std;
int main(){
cout << "C++ has ";
goto m1;
cout << "not ";
m1:
cout << "goto." << endl;
getch();
return 0;
}
Угадайте, что выводит? 0 error, 0 warnings
Номер ответа: 25
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #25
Добавлено: 13.04.06 11:20
Ты эт к чему?
Номер ответа: 26
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #26
Добавлено: 13.04.06 22:14
К тому, что goto это элемент даже таких серьезных языков, как C++, а если звезды зажигают, значит, это кому-нибудь нужно.
Номер ответа: 27
Автор ответа:
Nj
ICQ: 223663115
Вопросов: 21
Ответов: 285
Профиль | | #27
Добавлено: 13.04.06 22:31
Все это хорошо, есть кто любит goto и кто его записал в позорные операторы... Но лично я не представляю себе более простого способа перехода куда нужно, к тому же я помню старый добрый QВ где вообще без него никуда...
А сейчас реже, но все же в больших проуедурах как-раз использую.
2 HACKER - ясно, но поделись, почему
И я еще раз спрашиваю - как ты решишь эту (с циклом) задачу без гоуту? Увеличишь код?
Номер ответа: 28
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #28
Добавлено: 13.04.06 23:52
Да. Увеличу... В принципе согласен с CyRax'ом, гоуту будет побыстрее. И объясню почему нелюблю его... Вопервых читаемость, хорошо если процедура на экран влазит... да и даже если влазит, просматривая код приходится "прыгать" глазами, а это раздражает... потом привычка, вот отучил себя, щас без гоуту, начать писать с ним, и мне станет влом, как говорит Nj, увеличивать код... Вот при таком увеличении, обычно не сбивается структура подпрограммы, если надо что-то переделать, изменить, вырезать шмот кода итп итд... с гоуту это страшный гемор, без него - лишь чуть больше кода, причём код этот только помогает в читаемости проги в целом...
Номер ответа: 29
Автор ответа:
Nj
ICQ: 223663115
Вопросов: 21
Ответов: 285
Профиль | | #29
Добавлено: 14.04.06 22:58
2 HACKER - твоя позиция ясна. Но иногда это все же не "чуть-чуть" увеличение кода а очень даже.
Я, еще раз говорю, привык к нему и легко разбираю коды с метками и переходами - не представляю как без перехода обойтись иногда... Когда это модуль или здоровенная процедура, где из-за некорректных данных или прерывания нужно перескочить на начало или пропустить что-то, а иногда нужно вырваться из сложной условной структуры, да еще и вверх. И верно сказано
Номер ответа: 30
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #30
Добавлено: 17.04.06 11:01
И верно сказано
Оператор GOTO - неотьемлимая часть языка Бейсик
Как ни парадоксально, я пользуюсь им в основном в С++. Как раз благодаря его невозобновляемой системе обработки ошибок, но не только.
Как я уже сказал, если при получении на определенном этапе неудовлетворительного результата в зависимости от него нужно вернуться к определенному шагу процедуры - не используя меток и GoTo что мне придется там нагораживать - подумать страшно! Если вообще этот алгоритм можно будет назвать жизнеспособным. Так что не стоит его списывать, а если есть программеры, которые утвержадют что использование Goto - это аттавизм, или что ActiveX - это пошлость - ну это их проблемы...