امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
بررسی GoTo
نویسنده پیام
Iron_Fist غایب
مدیر بازنشسته
*****

ارسال‌ها: 1,456
موضوع‌ها: 70
تاریخ عضویت: آبان ۱۳۸۴

تشکرها : 109
( 456 تشکر در 134 ارسال )
ارسال: #12
RE:  بررسی GoTo
Mamad2003 نوشته است:ببینید از نظر من استفاده کردن یا نکردن از goto بستگی به مهارت و تجربه خود برنامه نویس داره !
همون طور که گفتم تمام زبانهای برنامه نویسی سطح بالا راهکارهای بهتری رو برای پرش های مختلف در سطح برنامه ارائه می کنند که در مقابلش وجودیت goto رو بسیار کم رنگ می کنه !
اگر کسی بسیار تازه کار باشه ( یعنی با امکانات زبان مربوطه آشنا نباشه ) یا نتونه یه کد دقیق توی یه زبان برنامه نویسی بصورتی رو کاملا کارا بنویسه شاید برای سادگی ، در تبدیل منطقش به الگوریتم و برنامه ، از goto استفاده کنه . خیلی اوقات هم ممکنه برنامه نویسی از goto برای راحت کردن فهم برنامه اش استفاه کنه مثلا نخواد یا نتونه برنامه رو بشکل پیچیده بازگشتی یا Recursive بنویسه و یا حتی نتونه یه راه حل مشخص بدون goto براش پیدا کنه ، اونوقته که میاد و از goto استفاده می کنه ! در کل من خیلی به ندرت از goto استفاده می کنم و کرده ام و اکثر اوقات نیازی به اون نمی بینم ! اما بعضی اوقات همون جور که آقا جواد هم گفتند در کدی مثل On Error Goto دیگه اجتناب ناپذیره و باید استفاده بشه چون راه دیگه ای نداریم . بطور کل برنامه نویسان نست به Goto خیلی جبهه گیری می کنند و استفاده از اون رو یه برنامه نویسی درست نمی دونن اما بقول جمله ای از کتاب ++VC آقای Ivor Horton ، کلمه کلیدی Goto و استفاده از اون نمیتونه برنامه نویسی بدی باشه اما معمولا برنامه نویسان از اون دوری می کنند و استفاده از اون رو درست نمی دونند !

همون طور که گفتم goto مدل مشابه سطح پایین jump معمولی هست و از سطح پایین به سطح بالا ارث رسیده اما با وجود امکانات سطح بالا تقریبا بی مصرفه مگر در مواردی که ذکر کردم !
آها این شد یه تحلیل درست
من می خواهم این طرز فکر اشتباه نسبت به یه دستور رو از سر بسیاری
از دوستان که اون رو مضر قلمداد می کنن بیرون کنم و بهشون نشون بدم که
استفاده از این دستور باعث کاهش ارزش های برنامه نمی شه ( الته از راه
گفتگو و اثبات نه زور Biggrin )
چون یکی از معیار های ( به نظر من ) اشتباه مدارس و دانشگاه های
ایران و خیلی از افراد در ارزش گذاری بر برنامه استفاده نرکدن از اینگونه
دستور هاست !
(آخرین ویرایش در این ارسال: ۰۸-تير-۱۳۸۵, ۱۷:۱۷:۲۶، توسط Iron_Fist.)
۰۸-تير-۱۳۸۵, ۱۶:۵۰:۰۳
ارسال‌ها
پاسخ
Iron_Fist غایب
مدیر بازنشسته
*****

ارسال‌ها: 1,456
موضوع‌ها: 70
تاریخ عضویت: آبان ۱۳۸۴

تشکرها : 109
( 456 تشکر در 134 ارسال )
ارسال: #13
RE:  بررسی GoTo
Payman62 نوشته است:goto یکی از اشکالاتش اینه که فهم کد رو برای دیگران مشکل میکنه. یکی هم این که خود برنامه نویس ممکنه کمی گیج بشه و احتمال خطا در برنامش بالا بره.
ولی با استفاده از حلقه ها و exit و زیربرنامه ها هم فهم کد راحت تر میشه. هم کد ها مرتب تر میشن و برنامه نویس کمتر گیج میشه و احتمال باگ و خطا میاد پایین. هم برنامه با کلاس تر و حرفه ای تر میشه و شکل استاندارد به خودش میگیره.
اینو نگا یه ساعته که انگار داریم روضه می خونیم  Rolleyes
پیمان جان برو از بالا تا پایین مطالب رو بخون و لطفآ بعد بیا تاپیک بزن
چون شما دقیقآ صحبت های آقای ارفعی رو که من کلی روش صحبت
کردم تکرار کردید
----------------------------------------------------------------------------
ببینید دوستان شما تا حالا هر چی از بدی GoTo شنید رو فراموش کنید
و بیاید و به طور منطقی و بدون تعصب اونو بررسی کنید
اصلآ در تجارب خدتون در استفاده از GoTo هیچگاه به مشکلی بر خوردید ؟
(آخرین ویرایش در این ارسال: ۰۸-تير-۱۳۸۵, ۲۲:۰۸:۰۹، توسط Iron_Fist.)
۰۸-تير-۱۳۸۵, ۱۶:۵۴:۰۴
ارسال‌ها
پاسخ
hamed_Arfaee آفلاین
مدیر بخش
*****

ارسال‌ها: 1,334
موضوع‌ها: 231
تاریخ عضویت: تير ۱۳۸۳

تشکرها : 1250
( 2634 تشکر در 730 ارسال )
ارسال: #14
RE: بررسی GoTo
Iron_Fist نوشته است:آقای عارفی
اولندش که عارفی خودتیBiggrin
اسم من حامد ارفعی

در ضمن من استفاده از این goto رو رد نمی کنمیه دلایلی که گفتم علت کاربرد کمش رو توجیح کردم

درضمن من به خاطر استفاده از این دستور یکبار 3 نمره یکجا از دست دادم
بخاطر همین ازش بدم می آد ولی نه تا به حدی که ازش استفاده نکنم

حامد ارفعی

موفقيت، پيش رفتن است، نه به نقطه ي پايان رسيدن.(آنتوني رابينز)


تریگرها در SQL server

آیا میدانید SQL ای
۰۸-تير-۱۳۸۵, ۱۸:۱۴:۵۹
وب سایت ارسال‌ها
پاسخ
Darg غایب
مدير بازنشسته
*****

ارسال‌ها: 894
موضوع‌ها: 40
تاریخ عضویت: تير ۱۳۸۴

تشکرها : 381
( 702 تشکر در 190 ارسال )
ارسال: #15
RE: بررسی GoTo
Iron_Fist نوشته است:ببینید دوستان شما تا حالا هر چی از بدی GoTo شنید رو فراموش کنید
و بیاید و به طور منطقی و بدون تعصب اونو بررسی کنید
اصلآ در تجارب خدتون در استفاده از GoTo هیچگاه به مشکلی بر خوردید ؟
اتفاقا چون من تحصیلات آکادمیک و حتی آموزشگاهی در مورد کامپیوتر (برنامه نویسی) ندارم, چیزی از جایی نشنیدم و هر چی میگم ترشحات ذهنی خودمه Rolleyes

حالا اینجا مسائلی وجود داره که تفکرات و اعتقادات خودمه اما حداقل برای خودم قانع کنندست:

نقطه نورانی: به اعتقاد این حقیر, کاپایلر برای اجرای
کدهای برنامه از روشی موسوم به نقطه نورانی استفاده می کنه.
نقطه نورانی همون فوکوس (هد خواننده) کامپایلره که کد ها رو خط به خط
ترجمه و اعمال می کنه. برای دیدن این نقطه نورانی در VB6 به جای اجرای
برنامه با F5 از کلید F8 استفاده کنید!
نقطه نورانی فقط یه تصویر ذهنیه که با استفاده از اون تونستم خیلی از
رفتار های زبان VB رو برای خودم استنباط کنم.


ستون پین ماشین (سیستم): حالا اون نقطه نورانی
وقتی به یک فرامینی (نظیر Dim) میرسه چون اون ها رو قبلا و در لحظه ورود
به Sub اجرا کرده, Skip میکنه. یعنی دیگه اجراشون نمی کنه. اینه که وقتی
شما یک آرایه رو دوبار در یک Sub تعریف کنید می بینید که فوکوس کامپایلر
(نقطه نورانی) روی اسم تعریف Sub یعنی در Private Sub subName() متوقف
میشه و ایراد کارتون رو بهتون میگه!
حالا این گونه فرمان ها که به وسیله نقطه نورانی Skip می شند رو
ستون پین ماشین اسم گذاشتم.

از اونجایی که بنده عادت کردم (برای زیبایی و خواناتر شدن کدم) به تمام فرمان ها
یک Tab از ستون سمت چپ فاصله بدم اما در مورد فرامینی که خاصیت
ستون پین ماشین رو دارند این کار رو نمی کنم و اون ها رو به بدنه VB یعنی
ستون سمت چپ می چسبونم.

اما ربط ستون پین ماشین با مشکل استفاده از Goto برای من:
برای استفاده از Goto مصلما باید یک Label رو هم ایجاد کنید. اما می دوندید
که در زمان ایجاد Label: (بخونید لیبل دو نقطه) VB اون رو به طور خودکار به
ستون سمت چپ می چسبونه و این باعث میشه Label تعریفی بره جزعه
فرمان های ستون پین ماشین. اما به اعتقاد من باید Label رو زیر مجموعه و
مکمل Goto دونست نه ستون پین ماشین. Cool

حالا تکلیف Label هم معلوم نیست که چی هست و حتی خود VB رفتار
خوبی باهاش نداره.
کد:
Dim Label As String
    Label = 1
    If Label Then GoTo Label
    MsgBox "By"
    End

Label:
    MsgBox "Hi"
    End

خیلی جالبه در کد بالا روی Label: کلید های Ctrl+I رو بگرید میگه
Local Label As String
Amaze

این بود یکی از ایرادات Goto که در کد نویسی سطح بالا هم تکلیفش روشن نیست!

حالا یکی دیگه چرا در کد پایین برنامه هنگ میکه. با وجود اینکه نقطه نورانی
روی کل خط متوقف میشه اما ...
کد:
Label: GoTo Label


البته اصلا نمی خوام بگم Goto بده یا خوبه یا مثلا سرعت رو کم میکنه یا زیاد
, خوانایی رو بد میکنه یا خوب فقط دارم نظر شخصی خودم رو میگم.

یک کد دیگه:
کد:
If Label GoTo Label
کد بالا رو بنویسید و به یک خط دیگه از برنامه برید تبدیل میشه به:
کد:
If Label Then GoTo Label

مگه Goto جزعی از ساختار If then هم هست (که هست)

البته برای زیر برنامه ای که طله خطا داره همین Goto نازنازی حجم کد رو هم
بالا می بره:

کد:
Private Sub SampleJ()
    On Error GoTo ErrorTrap
    
'.
'.
'.

Exit Sub 'For UnActive Error Commands
ErrorTrap:
    MsgBox Err.Number
End Sub

تو کد بالا Exit Sub آخری به خاطر نرفتن نقطه نورانی به خط ErrorTrap
به وجود اومده.

ایراد زیاد میشه گرفت مثلا On Error Goto 0 چیه؟
اگر فرمانه ساختارش چرا این شکلیه.
اگر شکل کلی رو رعایت کرده پس چرا ما خط صفر در برنامه ندارم و ...
۰۸-تير-۱۳۸۵, ۱۸:۳۹:۴۸
وب سایت ارسال‌ها
پاسخ
Mamad2003 آفلاین
کاربر با تجربه
****

ارسال‌ها: 1,150
موضوع‌ها: 18
تاریخ عضویت: آذر ۱۳۸۲

تشکرها : 9
( 388 تشکر در 232 ارسال )
ارسال: #16
RE: بررسی GoTo
نقل قول: من به خاطر استفاده از این دستور یکبار 3 نمره یکجا از دست دادم
متاسفانه اساتید ایرانی همین هستند ! کاریشون نمیشه کرد . توی امتحان برنامه نویسی ، به برنامه نوشته شده اهمیتی نمیدن بلکه به جفنگیات دورش اهمیت می دن و همچین برخورد می کنند که انگار مسابقه کد نویسی توی مایکروسافت برگزار شده ! من از همین مشکل ها رو با معلم های برنامه نویسی ایران داشتم مثلا سر فلش های مسخره فلوچارت !! حالا یارو نمیدونه که فلوچارت و الگوریتم قوانین خاص سختگیرانه ای ندارند ! خب بخاطر همینه که ما اینقدر کشور پیشرفته ای هستیم !!!!

نقل قول: نقطه نورانی: به اعتقاد این حقیر, کاپایلر برای اجرای
کدهای برنامه از روشی موسوم به نقطه نورانی استفاده می کنه.
نقطه نورانی همون فوکوس (هد خواننده) کامپایلره که کد ها رو خط به خط
ترجمه و اعمال می کنه. برای دیدن این نقطه نورانی در VB6 به جای اجرای
برنامه با F5 از کلید F8 استفاده کنید!
نقطه نورانی فقط یه تصویر ذهنیه که با استفاده از اون تونستم خیلی از
رفتار های زبان VB رو برای خودم استنباط کنم.

ستون پین ماشین (سیستم): حالا اون نقطه نورانی
وقتی به یک فرامینی (نظیر Dim) میرسه چون اون ها رو قبلا و در لحظه ورود
به Sub اجرا کرده, Skip میکنه. یعنی دیگه اجراشون نمی کنه. اینه که وقتی
شما یک آرایه رو دوبار در یک Sub تعریف کنید می بینید که فوکوس کامپایلر
(نقطه نورانی) روی اسم تعریف Sub یعنی در Private Sub subName() متوقف
میشه و ایراد کارتون رو بهتون میگه!
حالا این گونه فرمان ها که به وسیله نقطه نورانی Skip می شند رو
ستون پین ماشین اسم گذاشتم.

شما در واقع دارید کد های برنامه رو خط به خط دنبال می کنید یا Trace می کنید نه کامپایل ! فرق کامپایل تا Trace از زمین تا آسمونه ! همون طور که گفتم توی کامپایل با label ها طوری دیگه برخورد میشه !





گويند بهشت و حور و کوثر باشد  ..  جوي می و شير و شهد و شکر باشد
پر کن قدح باده و بر دستم نه      ..   نقدي ز هزار نسيه خوشتر باشد  
۰۸-تير-۱۳۸۵, ۱۹:۳۱:۲۱
ارسال‌ها
پاسخ
Darg غایب
مدير بازنشسته
*****

ارسال‌ها: 894
موضوع‌ها: 40
تاریخ عضویت: تير ۱۳۸۴

تشکرها : 381
( 702 تشکر در 190 ارسال )
ارسال: #17
RE:  بررسی GoTo
Mamad2003 نوشته است:شما در واقع دارید کد های برنامه رو خط به خط دنبال می کنید  یا Trace می کنید نه کامپایل ! فرق کامپایل تا Trace از زمین تا آسمونه ! همون طور که گفتم توی کامپایل با label ها طوری دیگه برخورد میشه !
خوب انقدر سخت نگیر Biggrin
گفتم که این فقط یک جور تصوره (شخصیه) و برای توجیه بعضی چیزاها لازمه
اسکلتی بزنیم که ممکنه اصلا درست نباشه Wink.

صحبت شما درمورد دنبال کردن Trace ها درسته اما مقصود من از بیان اون حرف ها چیز دیگه ای بود:
اینکه چرا Goto و Label رو زشت (ناجور) می بینم!
۰۸-تير-۱۳۸۵, ۱۹:۴۵:۴۴
وب سایت ارسال‌ها
پاسخ
Iron_Fist غایب
مدیر بازنشسته
*****

ارسال‌ها: 1,456
موضوع‌ها: 70
تاریخ عضویت: آبان ۱۳۸۴

تشکرها : 109
( 456 تشکر در 134 ارسال )
ارسال: #18
RE: بررسی GoTo
نقل قول: اولندش که عارفی خودتی
اسم من حامد ارفعی
آقا شرمنده Shy
من نکرتم دربست Biggrin

از نظرات دوستان بسیار ممونم Smile

۰۸-تير-۱۳۸۵, ۲۲:۰۵:۳۲
ارسال‌ها
پاسخ
Payman62 آفلاین
مدیر بخش ویژوال بیسیک
*****

ارسال‌ها: 2,273
موضوع‌ها: 149
تاریخ عضویت: اسفند ۱۳۸۴

تشکرها : 1308
( 3661 تشکر در 942 ارسال )
ارسال: #19
RE:   بررسی GoTo
Iron_Fist نوشته است:پیمان جان برو از بالا تا پایین مطالب رو بخون و لطفآ بعد بیا تاپیک بزن
----------------------------------------------------------------------------
ببینید دوستان شما تا حالا هر چی از بدی GoTo شنید رو فراموش کنید
و بیاید و به طور منطقی و بدون تعصب اونو بررسی کنید
اصلآ در تجارب خدتون در استفاده از GoTo هیچگاه به مشکلی بر خوردید ؟
من تاپیک نزدم. این اسمش پسته. محض اطلاع مدیر بخش.Biggrin

خوب میبینی که همه با goto مشکل دارن. هیچ کی رابطه خوبی باهاش نداره. واسه همین کسیم استفاده نمیکنه که بگه به مشکل برخورده یا نه.
۰۹-تير-۱۳۸۵, ۱۳:۲۲:۰۶
ارسال‌ها
پاسخ
Iron_Fist غایب
مدیر بازنشسته
*****

ارسال‌ها: 1,456
موضوع‌ها: 70
تاریخ عضویت: آبان ۱۳۸۴

تشکرها : 109
( 456 تشکر در 134 ارسال )
ارسال: #20
RE: بررسی GoTo
نقل قول: من تاپیک نزدم. این اسمش پسته. محض اطلاع مدیر بخش
خوب هرچی زدی
برای من اسمش مهم نیست
نقل قول: خوب میبینی که همه با goto مشکل دارن. هیچ کی رابطه خوبی باهاش نداره. واسه همین کسیم استفاده نمیکنه که بگه به مشکل برخورده یا نه.
نخوندی دیگه !
اگر تحلیل آقای ممد 2003 رو می خوندی اوضاع دستت می اومد
البته صحبت دوستان دیگه هم مفید هست و کم از صحبت ممد جان نداره
(آخرین ویرایش در این ارسال: ۰۹-تير-۱۳۸۵, ۱۴:۳۰:۲۵، توسط Iron_Fist.)
۰۹-تير-۱۳۸۵, ۱۴:۲۸:۴۷
ارسال‌ها
پاسخ
Iron_Fist غایب
مدیر بازنشسته
*****

ارسال‌ها: 1,456
موضوع‌ها: 70
تاریخ عضویت: آبان ۱۳۸۴

تشکرها : 109
( 456 تشکر در 134 ارسال )
ارسال: #21
RE: بررسی GoTo
یه چیز جالب
امروز که کدهای درون ام اس دی ان رو نگاه می کردم
مکررآ از GoTo در کد های نمونه زبان های مختلف استفاده شده بود At
۰۹-تير-۱۳۸۵, ۱۵:۱۴:۵۵
ارسال‌ها
پاسخ
arnh آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 959
موضوع‌ها: 75
تاریخ عضویت: آبان ۱۳۸۴

تشکرها : 38
( 172 تشکر در 76 ارسال )
ارسال: #22
RE:    بررسی GoTo
Payman62 نوشته است:خوب می بینی که همه با goto مشکل دارن. هیچ کی رابطه خوبی باهاش نداره. واسه همین کسیم استفاده نمیکنه که بگه به مشکل برخورده یا نه.

همه نه !
مثلا من مشکل ندارم . آقا جواد هم همیشه می گه تو چقدر کدهات کثیفه !

منم یه جواب دارم . نه منطقی نه علمی . (ببخشید دیگه ...)

به نظر من تنها مشکل استفاده از Go To اینه
بعضی از افراد نمی تونن اونو درک کنن . (مث بعضی معلما )
و البت دستشون توی کار نیست .

اگه کسی بتونه از Goto به صورت درست استفاده کنه ( که از بس باهاش مخالفت شده کسی ازش استفاده نمی کنه ) و ذهن بازی هم داشته باش ..

1. می تونه حجم کدها رو خیلی کم کنه (البت حرفه : یعنی استفاده از تمامی فرامین برنامه نویسی + GoTo )

2. برنامه های که نوشتنشون محال به نظر می رسه رو بنویسه ..

3 . برنامه نویسی رو به یک هنر تبدیل کنه که غالب افراد قادر به یاد گرفتن این هنر نباشند ( می دونم نامردی ) Biggrin

و تنها عیبی که به نظر می رسه .. مشکل انتشار این سورسه .. چون برای بیشتر کدنویس ها (فرق داره با برنامه نویس Rolleyes) با مشکل سواتی روبرو می شن .Smile

بازم باید ببخشید .. می دونم قراره خیلی انتقاد بشه Biggrin
۱۰-تير-۱۳۸۵, ۰۸:۴۱:۵۰
وب سایت ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Rolleyes بررسی اتصال به اینترنت با روشی کاملا مطمئن 1120 3 5,515 ۰۴-مرداد-۱۳۹۲, ۱۹:۵۲:۱۳
آخرین ارسال: amir360
  بررسی رکورد ها automa 5 5,669 ۱۰-اردیبهشت-۱۳۹۱, ۱۸:۲۹:۱۵
آخرین ارسال: Ghoghnus
  [سوال] اجرا و بررسی دستورات SQL در ADODB one hacker alone 2 3,205 ۱۶-مرداد-۱۳۹۰, ۱۰:۳۶:۱۵
آخرین ارسال: one hacker
  شبیه سازی Goto در notepad dcamera 3 2,754 ۱۴-شهریور-۱۳۸۸, ۰۲:۳۹:۳۶
آخرین ارسال: dcamera

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 6 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS