Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 | 3 |

 

  Вопрос: Вопрос по Randomize Добавлено: 09.04.06 05:05  

Автор вопроса:  Павел | Web-сайт: www.hono.ru

Ответить

  Ответы Всего ответов: 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 не солидно

Моё предложение:
Использовать конструкцию Goto только в сочитании On Error, и всё.

Очередной стереотип. Скажи мне, уважаемый, в асме нынче тоже стало несолидно использовать команды безусловного перехода. Или моду нынче задают ламеры?

Ответить

Номер ответа: 18
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #18
Добавлено: 12.04.06 13:19
Тут в форуме кто то выкладывал генератор случайных чисел для MASM, но в VB он к сожалению никак не воспроизводится, т.к. использует старшую часть 64-битного результата умножения для дальнейших вычислений.

По теме спора.
 Во первых GOTO определяет не только использование безусловного перехода, а в том числе и переходов с условиями. Ну а во вторых, в языках высокого уровня для циклических повторений есть более удобные формы записи, которые при компиляции в машинный язык заменяются на переходы. Правда в VB почему-то забыли добавить оператор Iterate, но при желании и без него тоже можно обойтись. Всё зависит от самомго ненадёжного звена в компьютере - человека :), как он построит структуру программы, так и будет. Если хочет, то на одних GOTO (это не проблема), хочет вообще без GOTO, ну а захочет скомбинирует. Если умеешь и так и по другому, тебе только + (не тот что модератер даёт :)).

Использовать конструкцию Goto только в сочитании On Error, и всё.

 Ну вот, пока гнался за модой и отстал от жизни. :) Эта форма записи давно заменена на Попытка...Исключение...КонецПопытки.

Ответить

Номер ответа: 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-сайт: basicproduction.nm.ru
 Профиль | | #20
Добавлено: 12.04.06 14:47
ЗЫ прикиньте, эти ламеры, пишущие на asm и sql, до сих пор употребляют Goto, jmp и т.п. Вот дебилы, да?

 Допустим про "ламеров" sql я ничего сказать не могу, а вот про ассемблерщиков это ты зря. Язык высокого уровня тем и отличается от ассемблера что при компиляции программы на ЯВУ она в этот самый ассемблер и транслируется. Если возможности процессора ограничены изменением значения указателя на следующую выполняемую инструкцию (проще говоря переход это есть изменение значения регистра EIP), то выше этого ты всё равно не прыгнешь, разве что напишешь свой компилятор/интерпретатор, но это уже совсем другая история.

Ну, скажем мне невозобновляемая система не особо нравится. Скажем, раньше напишешь On Error Resume Next - и забываешь про ошибки. В коде можно было лепить что угодно, все лаги просто игнорировались. А теперь...

 Такой системы быть не должно (по моему скромному мнению конечно). В конечном продукте должны возникать только те ошибки, которые предусмотрены программистом, иначе конечным продуктом это назвать сложно. Конечно в идеале ничего никогда не происходит, так что каждая система скорее всего позволяет игнорировать ошибки.

К счастью (ли?), до VB6 эта концепция еще не добралась :)

 Ну "не добралась" это громко сказано. Скорее "официально не поддерживается". Кто тебе мешает использовать такой стиль самостоятельно. Например, так:
Private Sub Form_Load()
 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-сайт: basicproduction.nm.ru
 Профиль | | #23
Добавлено: 12.04.06 19:15
Оператор GOTO - неотьемлимая часть языка Бейсик и никуда от этого не денешся. Другое дело что циклические конструкции распространились несколько позже. Использование GOTO всё же приемлимо в некоторых нестандартных или критических по скорости алгоритмах, где автомат компилятора показывает неудовлетворительные результаты.

Ответить

Номер ответа: 24
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #24
Добавлено: 12.04.06 20:59
#include <iostream>
#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-сайт: sharpc.livejournal.com
 Профиль | | #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 - твоя позиция ясна. Но иногда это все же не "чуть-чуть" увеличение кода а очень даже.
Я, еще раз говорю, привык к нему и легко разбираю коды с метками и переходами - не представляю как без перехода обойтись иногда... Когда это модуль или здоровенная процедура, где из-за некорректных данных или прерывания нужно перескочить на начало или пропустить что-то, а иногда нужно вырваться из сложной условной структуры, да еще и вверх.
И верно сказано
Оператор GOTO - неотьемлимая часть языка Бейсик

Ответить

Номер ответа: 30
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #30 Добавлено: 17.04.06 11:01

И верно сказано
Оператор GOTO - неотьемлимая часть языка Бейсик

Как ни парадоксально, я пользуюсь им в основном в С++. Как раз благодаря его невозобновляемой системе обработки ошибок, но не только.
Как я уже сказал, если при получении на определенном этапе неудовлетворительного результата в зависимости от него нужно вернуться к определенному шагу процедуры - не используя меток и GoTo что мне придется там нагораживать - подумать страшно! Если вообще этот алгоритм можно будет назвать жизнеспособным. Так что не стоит его списывать, а если есть программеры, которые утвержадют что использование Goto - это аттавизм, или что ActiveX - это пошлость - ну это их проблемы...

Ответить

Страница: 1 | 2 | 3 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам