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

صفحه 1 از 3 123 آخرینآخرین
نمایش نتایج: از شماره 1 تا 10 از مجموع 22
Like Tree1نفر پسندیدند

موضوع: راهنمایی درمورد برنامه نویسی به روشهای ماجولار , ساخت یافته , رویه ای و شی گرا در سی شارپ

  1. #1
    کاربر فعـال
    تاریخ عضویت
    2013 March
    ارسال ها
    101
    تشکر
    154
    تشکر شده 124 بار در 75 پست


    آيا اين پست براي شما سودمند بود؟ بله | خیر

    راهنمایی درمورد برنامه نویسی به روشهای ماجولار , ساخت یافته , رویه ای و شی گرا در سی شارپ

    سلام دوستان . من چند تا مثال حل شده به روش رویه ای در سی شارپ میخام . بعد همون رو ساخت یافته هم . اصلا کسی مطلبی داره ؟ تقریبا شکل ساخت یافته مشخصه . ولی در رویه ای باید تا میشه main کوتاه باشه و متد زیاد . حالا همین رویه ای رو چطور تنوع بدم و مثلا 2_3 جور حل کنم ؟ تو کتابا به صورت کلی با یک روند دیگه ای توضیح دادن . ولی من احتیاج به نوشتن برنامه بصورت های ماژولار و ساخت یافته و شی گرا دارم . ممنون . .

    موضوعات مشابه:
    ویرایش توسط jellyfish : 7th May 2013 در ساعت 07:55 PM

  2. #2
    Moderator
    تاریخ عضویت
    2012 November
    ارسال ها
    128
    تشکر
    28
    تشکر شده 173 بار در 77 پست


    1 امتياز مثبت از 1 راي
    آيا اين پست براي شما سودمند بود؟ بله | خیر
    شما باید یک مسئله رو برای خودتون مطرح کنید ، به طور مثال برنامه محاسبه مساحت یک مستطیل حالا باید براش برنامه ای بنویسید ، در روش ساخت یافته هدف و تاکید بر این هست که دستور goto از برنامه تا حد امکان حذف بشه و بجاش از block هایی مثل For,While و ... استفاده بشه ، در برنامه نویسی ماژولار یا رویه ای ، هدف بر اینکه یک مسئله بزرگ به زیر مسئله های کوچک تر شکسته بشه و برای هر کدام یک تابع نوشته بشه و در رویه ی اصلی برنامه هر تابع ای که نیاز بود در هر جای برنامه صدا زده بشه ، فکر کنم حالا بتونید برنامه ای که می خواید را با این توضیحاتی که دادم بنویسید...
    داستان شی گرا هم که تا حد زیادی مشخصه و فکر نکنم نیاز به توضیح بیشتری باشه...


  3. #3
    کاربر فعـال
    تاریخ عضویت
    2013 March
    ارسال ها
    101
    تشکر
    154
    تشکر شده 124 بار در 75 پست


    آيا اين پست براي شما سودمند بود؟ بله | خیر
    ممنون . خوب توضیح ندادم . اینارو میدونم . مثلا دریافت عدد که ببینم زوجه یا فرد . این صورت سوال . حالا ساخت یافته و رویه ایش چطوریه ؟ من احتیاج به دیدنه چند نمونه حل شده دارم تا جواب اشکالاتم رو بفهمم . مثلا میدونم ساخت یافته ( حلقه _ شرط ) = از main شروع میشه و یعنی بلوک که ترتیب اجرای دستورات رو داریم . و بلوک تو در تو داریم و بلوک متدیه که اسم نداره و ... . در رویه ای متد داریم و فراخانی یعنی فعل داریم و انجام کار . متد های مختلف یعنی طبقه بندیه دستورات . ولی اگر در متدها متغیر مشترک داشته باشیم چی ؟ اخه گفتیم متد ها اشتراکی ندارن . یک متد میتونه از متد دیگه ای درست بشه ؟ ایا تو در تو میشه یا دو تا متد جدا ؟ سوالاتم این شکلیه . یعنی با حجم مطالب درسیه زیاد باید سریع چند تا مثال ساده . متوسط . سخت . ببینم تا درک بهتری داشته باشم . اون مثال بالا رو حل کردم . ایمیل تون رو بنویسید تا بفرستم . . بازم ممنون .


  4. #4
    Moderator
    تاریخ عضویت
    2012 November
    ارسال ها
    128
    تشکر
    28
    تشکر شده 173 بار در 77 پست


    2 امتياز مثبت از 2 راي
    آيا اين پست براي شما سودمند بود؟ بله | خیر
    و بلوک متدیه که اسم نداره
    فکر نکنم خیلی این تعریف درست باشه!! حالا در این مورد باید طراحان زبان های برنامه نویسی نظر بدن!!
    در رویه ای متد داریم و
    در رویه ای پروسیجر یا زیر برنامه یا تابع داریم ، متد ، تابع عضو یک کلاس می باشد ، بهتره از واژه تابع استفاده کنید...
    ولی اگر در متدها متغیر مشترک داشته باشیم چی ؟
    منظورتون از متد مشترک چیه؟!
    ک متد میتونه از متد دیگه ای درست بشه ؟
    نه میتونه ، یک تابع دیگه ای را در خودش فراخوانی (صدا) کنه...
    ایا تو در تو میشه یا دو تا متد جدا ؟
    مطمئنن جدا ، وگرنه دلیلی نداریم که بصورت رویه ای کد بنویسیم ، ما بصورت رویه ای کد مینویسیم تا پیچیدگی ها از بین برند و نهایتا spaghetti code نداشته باشیم...
    مثلا دریافت عدد که ببینم زوجه یا فرد . این صورت سوال . حالا ساخت یافته و رویه ایش چطوریه ؟
    به این اشکال :
    ساخت یافته :
    #include <iostream>
    #include <conio.h>

    using namespace std;

    int main()
    {


    int input_number;
    cin>>input_number;
    if (input_number%2==0)
    cout<<"even"<<endl;
    else
    cout<<"odd"<<endl;

    getch();
    return 0;
    }


    رویه ای :
    using namespace std;

    bool check_number(int number);

    int main()
    {


    int input_number;
    cin>>input_number;
    bool state=check_number(input_number);

    if (state)
    cout<<"even"<<endl;
    else
    cout<<"odd"<<endl;

    getch();
    return 0;
    }

    bool check_number(int number)
    {
    if (number%2==0)
    return true;
    else
    return false;

    }

    می بینید در مثال رویه ای ما برای حل مسئله از یک تابع استفاده کردیم و در برنامه صدا زدیم ، حتی میتونستیم یک تابع دیگه برای چاپ عبارت بنویسیم....

    ویرایش توسط returnx : 5th May 2013 در ساعت 10:04 PM

  5. #5
    بنیانگذار
    تاریخ عضویت
    2010 January
    محل سکونت
    زیر سایه خدا
    سن
    37
    ارسال ها
    1,308
    تشکر
    2,923
    تشکر شده 2,205 بار در 886 پست
    نوشته های وبلاگ
    37


    1 امتياز مثبت از 1 راي
    آيا اين پست براي شما سودمند بود؟ بله | خیر
    جوابها خیلی قشنگ بودن
    منتها چند مطلب رو میخواستم هم بپرسم و هم اشاره بکنم .
    1.منظور از
    نقل قول نوشته اصلی توسط jellyfish نمایش پست ها
    روش رویه ای
    روشی هست که در مدل تابعی یا declarative وجود داره ؟ قصد پیاده سازی اون رو در زبان دیگه ای مثلا مثل سی شارپ دارید ؟ یا نه منظور همون استفاده از ساختار توابع و .... هست ؟ چون صحبت از ساخت یافته کردید بعدش و بعد شی گرا این احتمال رو دادم شاید منظورتون این باشه چون اگه دومی باشه که جناب returnx جواب دادن اما اگه بخش اول باشه بنظرم بایستی کمی جواب تغییر کنه تا صرفا از نرم مدل تابعی تبعیت بشه (مثل لیسپ)

    یه مطلب دیگه که بنظرم اومد گفتنش بد نباشه (قصد جسارت ندارم خدای نکرده ) در مورد :
    متد میتونه از متد دیگه ای درست بشه ؟
    بستگی به زبان برنامه نویسی داره . همونطور که جناب returnx اشاره کردن در خانواده زبانهای سی (سی و سی++ و سی شارپ و احیانا جاوا) ما اینو نداریم اما در زبان پاسکال ما دقیقا یک همچین مفهومی رو داریم (توابع متداخل). یعنی شما میتونید در داخل یک تابع یک تابع (و یا بیشتر) دیگه رو ایجاد کنید و ازش استفاده کنید .


    در مورد عنوان تاپیک هم لطف کنید یه نام با معناتر انتخاب کنید .
    نقل قول نوشته اصلی توسط jellyfish نمایش پست ها
    من احتیاج به نوشتن برنامه بصورت های ماژولار و ساخت یافته و شی گرا دارم . ممنون
    ماژولار زیرمجوعه ای از برنامه نویسی ساخت یافته اس یعنی شما بخشهای مختلف برنامه رو هر کدوم رو در قالب یک تابع جداگانه بنویسید (بصورت مستقل) تا اینطوری مدیریت پروژه رو بهتر بتونید انجام بدید - توسعه سریعتر بشه -چون افراد مختلف میتونن رو بخشهای مختلف کار کنن - کار دیباگ برنامه راحتتر بشه و ...
    یه زحمت بکشید عنوان مناسب رو با توجه به این توضیحات ویرایش کنید.

    نکته



    توکل بخدا
    http://DeepLearning.ir
    اولین و تنها مرجع یادگیری عمیق ایران


    هرکس از ظن خود شد یار من
    از درون من نجست اسرار من




  6. #6
    Moderator
    تاریخ عضویت
    2012 November
    ارسال ها
    128
    تشکر
    28
    تشکر شده 173 بار در 77 پست


    1 امتياز مثبت از 1 راي
    آيا اين پست براي شما سودمند بود؟ بله | خیر
    نقل قول نوشته اصلی توسط Hossein نمایش پست ها
    اما در زبان پاسکال ما دقیقا یک همچین مفهومی رو داریم (توابع متداخل). یعنی شما میتونید در داخل یک تابع یک تابع (و یا بیشتر) دیگه رو ایجاد کنید و ازش استفاده کنید .
    Pascal Family تنها زبان هایی هست که هیچ وقت سراغشون نرفتم و از این موضوع اصلا اطلاع نداشتم !!! نکته ی جالبی بود...
    البته در C هم ظاهرا همچین چیزی امکان پذیر بود اما من اطلاع نداشتم ولی در C++ برداشته شد اما در C++ میشه با یک ترفند اینکار پیاده کرد ، اما توصیه میشه اصلا اینکار رو انجام ندین چون کار بیهوده ای است :
    void test()
    {
    struct local_func
    {
    static void test_func()
    {
    cout<<"Yes";
    }
    };

    local_func::test_func();
    }//End function


    البته روش دیگری که برای نوشتن تابع های تو در تو به ذهنم میرسه ، استفاده از تابع های inline است ، درسته که از لحاظ پیاده سازی جدا از هم نوشته میشن ، اما در زمان کامپایل تابع inline که صدا زده میشه به جای فراخوانی خودش نوشته میشه ، اینکار باعث میشه سرعت کامپایل کمی بالا تر هم بره ، اما اصولا از تابع های inline هم زیاد استفاده نمیشه در برنامه نویسی مدرن...

    در ضمن در مدل رویه ای حتی بازم میشه کد منُ به شکل زیر تغییر داد ، یعنی برای تشخصی عدد زوج یک تابع ، و برای فرد یک تابع دیگر و همدیگر را صدا بزنند:
    #include <iostream>
    #include <conio.h>

    using namespace std;

    void even(int a);
    void odd(int a);

    int main()
    {


    int input_number;
    cin>>input_number;
    // bool state=check_number(input_number);
    /*
    if (state)
    cout<<"even"<<endl;
    else
    cout<<"odd"<<endl;
    */
    odd(input_number);

    getch();
    return 0;
    }

    void even(int a)
    {
    if ((a%2)==0)
    cout<<"number is even"<<endl;
    else
    odd(a);
    }

    void odd(int a)
    {
    if ((a%2)!=0)
    cout<<"number is odd"<<endl;
    else
    even(a);
    }


    این کد رو از اینجا گرفتم ، هرچند در این مقاله هدف معرفی مفهوم دیگری بود اما خوب مثالش به کارمون اومد!!

    ویرایش توسط returnx : 6th May 2013 در ساعت 08:54 AM
    Hossein این نویسه را میپسندد.

  7. #7
    کاربر فعـال
    تاریخ عضویت
    2013 March
    ارسال ها
    101
    تشکر
    154
    تشکر شده 124 بار در 75 پست


    آيا اين پست براي شما سودمند بود؟ بله | خیر
    سلام دوستان . عموی عزیزم به رحمت خدا رفت و من چند جلسه دانشگاه نرفتم .حالا که ایمیلتون رو دادین تمریناتم رو میزارم تا از راهنماییتون استفاده کنم .منظورم نوشتن یک برنامه خوب نیست و میدونم شی گرا عالیه .من میخام برنامه ها رو هم رویه ای بنویسم هم ساخت یافته .تا درک بهتری داشته باشم و الان نمیخام از کلاسها استفاده کنم .و دارم فعلا محدود کار میکنم ولی بعد حتما توسعه میدم . ممنون از همه . در ضمن از لینک فوق العاده تون ممنون . واقعا برای من مناسبه . . .

    ویرایش توسط jellyfish : 6th May 2013 در ساعت 12:44 PM

  8. #8
    کاربر فعـال
    تاریخ عضویت
    2013 March
    ارسال ها
    101
    تشکر
    154
    تشکر شده 124 بار در 75 پست


    آيا اين پست براي شما سودمند بود؟ بله | خیر
    جناب حسین سلام . ببینین من الان موضوع صحبتم سی شارپه . در اموزش اون به دانشجوها در مبانی رویکرد consoleApplication هست . یعنی چیدمان دستورات برای اجرای کار با for . if . ... . در پیشرفته علیرغم اینکه هدف اموختن تکنیکهای نوشتن برنامه های بزرگه اساتید سریع شروع به توضیحات منوها میکنن . این یعنی دانشجوها کپی پیست و اصلا سبک برنامه نویسی رو ندارن و نمیدونن یعنی چی ؟ من سعی میکنم با جزئیات جلو برم که با دید بازتری کارکنم و با خوندن مثالهای مختلف تفاوتها رو میبینم . یعنی یک صورت سوال با چند روش . معلومه که اگر برنامه ای شی گرا باشه کم غلط تر . با توسعه بیشتر . خواندنی تر هست علیرغم اینکه در نوشتنی بودن بدتر . ولی چون من تازه کارم یک برنامه رو از هر روشی انجام میدم تا کارم بهتر بشه . در مورد پاسکال حق با شماست ولی ++c رو کار نکردم . از اونجایی که همیشه عجولم و زودی میخام جواب تو ذهنم رو پیدا کنم بد توضیح میدم . ببخشید . ولی از لینک دوستمون خیلی خوشم اومده . شما هم اصلا رو در باسی نکنید . اگر اشتباهی داشتم بگید . دوست دارم برنامه هام رو مثل ایشون منم بزارم . اونوقت میبینید که چی کار میکنم . فعلا بجای استفاده از متد ها و ... سعی میکنم از دستورات و نوشتن اونها استفاده کنم . مثل فاکتوریل . عدد نپر و ... . .


  9. #9
    Moderator
    تاریخ عضویت
    2012 November
    ارسال ها
    128
    تشکر
    28
    تشکر شده 173 بار در 77 پست


    1 امتياز مثبت از 1 راي
    آيا اين پست براي شما سودمند بود؟ بله | خیر
    نقل قول نوشته اصلی توسط jellyfish نمایش پست ها
    منظورم نوشتن یک برنامه خوب نیست و میدونم شی گرا عالیه .
    یک نکته ای هست که باید شما توجه کنید اینکه برنامه ی خوب صرفا برنامه ای نیست که با قوانین شی گرایی پیاده شده ، یک برنامه خوب میتونه ساخت یافته یا رویه ای باشه ، حالا اگر از زمان اجرا و بهینه بودن الگوریتم ها بگزریم ، برنامه ای خوب نوشته شده که اگر فرد دیگری کدتون رو مطالعه کرد ، براحتی بتونه منطق برنامتون رو درک کنه ، شما باید همیشه دقت داشته باشید که وقتی کد مینویسید با این تصور بنویسید ، که کدتون رو نفر دیگری قرار بخونه (این نکته در کار های تیمی بسیار مهمِ ) ، این در حالیه که میشه کدی با قوانین شی گرایی نوشت اما خود صاحب کد هم بعد از چند روز ازش سر در نیاره!!! کامنت گذاری مناسب کد خیلی میتونه کمک کنه ، که البته کامنت گذاری هم نباید بیش از حد باشه!! پارامتر بعدی میتونه ، با مفهوم بودن نام های متغیر ها باشه ، که حتی اساتید هم در این کار دقت کافی ندارن ،حتی برای شمارنده های حلقه پیشنهاد میشه بجای i,j,k,.. از اسامی مثل counter,col_counter,row_counter و... استفاده بشه... پارامتر بعدی که میتونه تو خوانایی برنامه کمک کنه بازم در نام گذاری اسامی متغیر ها و تابع ها هست ، مثلا بجای readtext میشه از ReadTexe استفاده کرد که این روش رو در دات نت به وضوح میبینید که به این استاندارد Pascal Case Coding میگن ، یا میتونید از Camel Case استفاده کنید که در JavaScript استفاده شده یا روش های دیگه ای که موجوده...
    فکر کنم خواندن این مقاله بتونه بهتون کمک بیشتری کنه...
    ر پیشرفته علیرغم اینکه هدف اموختن تکنیکهای نوشتن برنامه های بزرگه اساتید سریع شروع به توضیحات منوها میکنن .
    متاسفانه ، در دانشگاه های ما برنامه نویسی یاد نمیدن و صرفا زبان برنامه نویسی یاد میدن ، اگر در دانشگاه ها برنامه نویسی یاد بدن خیلی از مشکلات بچه ها حل میشه و تو سوئیچ کردن بین زبان های مختلف هیچ مشکلی نخواهند داشت...

    ویرایش توسط returnx : 6th May 2013 در ساعت 09:19 PM

  10. #10
    کاربر فعـال
    تاریخ عضویت
    2013 March
    ارسال ها
    101
    تشکر
    154
    تشکر شده 124 بار در 75 پست


    آيا اين پست براي شما سودمند بود؟ بله | خیر
    عزیزم این در کل یعنی خوانایی . یعنی وقتی مثلا یک تیم دیگه برنامه رو ده سال دیگه تحویل گرفت وقتشو تلف نکنه و سریع برنامه بیاد دستش . خصوصا موقع توسعه دادن و یا غلط گیری و ... . ( برنامه ای خوب نوشته شده که اگر فرد دیگری کدتون رو مطالعه کرد ، براحتی بتونه منطق برنامتون رو درک کنه ، شما باید همیشه دقت داشته باشید که وقتی کد مینویسید با این تصور بنویسید ، که کدتون رو نفر دیگری قرار بخونه (این نکته در کار های تیمی بسیار مهمِ ) ، این در حالیه که میشه کدی با قوانین شی گرایی نوشت اما خود صاحب کد هم بعد از چند روز ازش سر در نیاره!!! کامنت گذاری مناسب کد خیلی میتونه کمک کنه ، که البته کامنت گذاری هم نباید بیش از حد باشه!! پارامتر بعدی میتونه ، با مفهوم بودن نام های متغیر ها باشه ، که حتی اساتید هم در این کار دقت کافی ندارن ،حتی برای شمارنده های حلقه پیشنهاد میشه بجای i,j,k,.. از اسامی مثل counter,col_counter,row_counter و... استفاده بشه... پارامتر بعدی که میتونه تو خوانایی برنامه کمک کنه بازم در نام گذاری اسامی متغیر ها و تابع ها هست . ) . . در مورد دانشگاه هم کاملا با هاتون موافقم ولی بعضی اوقات استثنائ پیش میاد بطوریکه در برنامه نویسی به ادم جهت میدن .


 

 
صفحه 1 از 3 123 آخرینآخرین

کاربران برچسب خورده در این موضوع

علاقه مندی ها (Bookmarks)

علاقه مندی ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  


Powered by vBulletin
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.6.0
Persian Language By Ustmb.ir
این انجمن کاملا مستقل بوده و هیچ ارتباطی با دانشگاه علوم و فنون مازندران و مسئولان آن ندارد..این انجمن و تمامی محتوای تولید شده در آن توسط دانشجویان فعلی و فارغ التحصیل ادوار گذشته این دانشگاه برای استفاده دانشجویان جدید این دانشگاه و جامعه دانشگاهی کشور فراهم شده است.لطفا برای اطلاعات بیشتر در رابطه با ماهیت انجمن با مدیریت انجمن ارتباط برقرار کنید
ساعت 01:38 PM بر حسب GMT +4 می باشد.