نمایش نتایج 1 تا 19 از 19

نام تاپیک: راه فرار از حلقه for ؟

  1. #1

    راه فرار از حلقه for ؟

    به نظر شما راهی برای فرار از حلقه for وجود داره ؟ یه برنامه نوشتم همش مجبور به استفاده از حلقه for یا foreach شدم. نزدیک به 10یا 11 تا حلقه طولانی و تو درتو.، بررسی کردنش هم مشکله.

  2. #2

    نقل قول: راه فرار از حلقه for ؟

    نقل قول نوشته شده توسط csharpdoost مشاهده تاپیک
    به نظر شما راهی برای فرار از حلقه for وجود داره ؟ یه برنامه نوشتم همش مجبور به استفاده از حلقه for یا foreach شدم. نزدیک به 10یا 11 تا حلقه طولانی و تو درتو.، بررسی کردنش هم مشکله.
    درود بر شما

    سیستم شما چه کار قرار انجام بده؟ اون قسمتی که حلقه گذاشتید وظیفش چیه؟

  3. #3

    نقل قول: راه فرار از حلقه for ؟

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

  4. #4
    کاربر دائمی
    تاریخ عضویت
    دی 1383
    محل زندگی
    اصفهان
    پست
    1,436

    نقل قول: راه فرار از حلقه for ؟

    برای جلوگیری از تو در تو شدن زیاد، از متد استفاده کنید.حلقه های داخلی رو (هر کدوم مناسب برای متد شدن هستن) توی متد بنویسید و توی حلقه خارجی فراخوانیشون کنید.مثلا متد محاسبه اضافه کاری...
    به طور معمول بهتره حلقه شما بیشتر از 3 سطح تو در تو نباشه.

  5. #5

    نقل قول: راه فرار از حلقه for ؟

    نقل قول نوشته شده توسط plus مشاهده تاپیک
    برای جلوگیری از تو در تو شدن زیاد، از متد استفاده کنید.حلقه های داخلی رو (هر کدوم مناسب برای متد شدن هستن) توی متد بنویسید و توی حلقه خارجی فراخوانیشون کنید.مثلا متد محاسبه اضافه کاری...
    به طور معمول بهتره حلقه شما بیشتر از 3 سطح تو در تو نباشه.
    حرف شما متین. من هم سعی کردم اینکار رو بکنم . اما میخوام بدونم آیا میشه یه حلقه رو کلا به روشی دیگر نوشت. مثال میزنم توی sql از select برای انتخاب فیلد مورد نظر استفاده میکنیم که ما نیازی به ایجاد حلقه نداریم .و خود بانک حالا به هر روشی که خودش انجام میده فیلد مورد نظر ما رو بهمون میده.(این یه مثاله. موضوع من ربطی به sql نداره فقط برای تفهیم مسئله است) آیا توی برنامه نویسی هم میشه به جای حلقه که ما رو به نام موردنظر برسونه از دستوری مشابه استفاده کنیم؟ این اسامی رو توی چیزی به غیر آرایه بریزیم و از دستوراتی استفاده کنیم که نیاز به ایجاد حلقه نباشه.

  6. #6
    کاربر دائمی آواتار wolf_majid
    تاریخ عضویت
    آذر 1387
    محل زندگی
    اصفهان
    پست
    534

    نقل قول: راه فرار از حلقه for ؟

    حلقه را میشه با توابع بازگشتی شبیه سازی کرد

  7. #7

    نقل قول: راه فرار از حلقه for ؟

    از datatable يا dataview استفاده كني ميشه select رو زد

  8. #8
    کاربر دائمی
    تاریخ عضویت
    دی 1383
    محل زندگی
    اصفهان
    پست
    1,436

    نقل قول: راه فرار از حلقه for ؟

    توی #C ، با استفاده از LINQ میتونید به روش دیگه ای کار های تکراری رو انجام بدین که تا حدی کار با حلقه ها رو ساده تر میکنه.LINQ ماجرای طولانی داره میتونید در موردش جستجو کنید من فقط یک مثال میزنم براتون
    فرض کنید یک آرایه از Student داریم و میخواهیم اونایی که ID شون زوج هست رو انتخاب کنیم:

    Student[] students = new Student[] { .... };

    Student[] result = students.Where( student => student.Id % 2 == 0).ToArray();
    // OR
    Student[] result = (from Student student in students
    where student.Id % 2 == 0
    select student).ToArray();

    عبارتی که داخل پارنتز اول میبینید هم یک Lamba Expression (عبارت لاندا) هست، در مورد این هم میتونید جستجو کنید و یا به MSDN مراجعه کنید.

  9. #9

    نقل قول: راه فرار از حلقه for ؟

    نقل قول نوشته شده توسط wolf_majid مشاهده تاپیک
    حلقه را میشه با توابع بازگشتی شبیه سازی کرد
    میشه بیشتر توضیح بدید. چطوری ؟ میتونید یه مثال بزنید؟

  10. #10

    نقل قول: راه فرار از حلقه for ؟

    نقل قول نوشته شده توسط hamid_hr مشاهده تاپیک
    از datatable يا dataview استفاده كني ميشه select رو زد
    تا اونجا که میدونم datatable مربوط به بانکه. حرف من بیشتر توی خود برنامه است . یعنی منظور شما اینه که datatable رو میشه برای اطلاعاتی که از یه غیر از بانکه استفاده کرد؟ اگه میشه چطوری؟

  11. #11
    کاربر دائمی آواتار wolf_majid
    تاریخ عضویت
    آذر 1387
    محل زندگی
    اصفهان
    پست
    534

    نقل قول: راه فرار از حلقه for ؟

    نقل قول نوشته شده توسط csharpdoost مشاهده تاپیک
    میشه بیشتر توضیح بدید. چطوری ؟ میتونید یه مثال بزنید؟
    مثال فاکتوریل :

     private int fac(int num)
    {
    if (num == 1 || num==0)
    return 1;
    return num*fac(num - 1);
    }



    private void button1_Click(object sender, EventArgs e)
    {
    MessageBox.Show(fac(5).ToString());
    int sum = 1;
    for (int i = 1; i <= 5; i++)
    {
    sum *= i;
    }
    MessageBox.Show(sum.ToString());
    }

  12. #12

    نقل قول: راه فرار از حلقه for ؟

    اطلاعات رو در چه ساختاری نگهداری میکنید؟
    به نظر من هم اگر اطلاعات رو داخل دیتاتیبل یا دیتاست لود کنید به راحتی میتونید اونو فیلتر کنید و نتیجه رو ذخیره کنید.
    کد لود اطلاعات رو قرار بدید تا دوستان بررسی کنند.

  13. #13
    کاربر دائمی آواتار mc_laren
    تاریخ عضویت
    آذر 1385
    محل زندگی
    بهبهان
    پست
    197

    نقل قول: راه فرار از حلقه for ؟

    مگه شما برای خوندن اطلاعات فایل اکسلت از چه روشی استفاده می کنی ؟
    من که برای خوندشون از روش زیر استفاده می کنیم که با این روش میشه برای Select شرط بذاری و داده های دلخواهت رو برگردونی

    Dim StrCnn As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=" + FilePath + ";" & _
    "Extended Properties=""Excel 8.0;HDR=YES"""


    Dim olecnn As New OleDbConnection(StrCnn)
    Dim oleda As New OleDbDataAdapter("Select * from [Sheet1$]", olecnn)
    Dim Dst As New DataSet
    olecnn.Open()
    oleda.Fill(Dst, "Sheet1")
    olecnn.Close()
    olecnn.Dispose()

  14. #14

    نقل قول: راه فرار از حلقه for ؟

    نقل قول نوشته شده توسط wolf_majid مشاهده تاپیک
    مثال فاکتوریل :

     private int fac(int num)
    {
    if (num == 1 || num==0)
    return 1;
    return num*fac(num - 1);
    }



    private void button1_Click(object sender, EventArgs e)
    {
    MessageBox.Show(fac(5).ToString());
    int sum = 1;
    for (int i = 1; i <= 5; i++)
    {
    sum *= i;
    }
    MessageBox.Show(sum.ToString());
    }
    ببخشید اینترنتم دیشب قطع شد.
    این کدها مربوط به اعداده . در مورد رشته ها هم میشه چنین کاری کرد؟

  15. #15

    نقل قول: راه فرار از حلقه for ؟

    دوستان ببخشید اینترنتم دیشب قطع شد. این چند تا از کدها. برای اتصال به اکسل :


    Worksheet worksheetbarname, worksheet110_99_88_1
    Range range_radif
    object mis = System.Reflection.Missing.Value;
    Microsoft.Office.Interop.Excel.Application ExcelAppbarnameh = new Microsoft.Office.Interop.Excel.Application();

    ExcelAppbarnameh.Visible = false;
    System.Threading.Thread.CurrentThread.CurrentCultu re = new System.Globalization.CultureInfo("en-US");

    Microsoft.Office.Interop.Excel.Application ExcelApp_110_99_88 = new Microsoft.Office.Interop.Excel.Application();

    ExcelApp_110_99_88.Visible = false;
    System.Threading.Thread.CurrentThread.CurrentCultu re = new System.Globalization.CultureInfo("en-US");


    //باز کردن برنامه اصلی یا همان برنامه شیفتی پرسنل
    Workbook workbook_barnameh = ExcelAppbarnameh.Workbooks.Open(FileName_barnameh, mis, mis, mis, mis, mis,
    mis, mis, mis, mis, mis, mis, mis, mis, mis);
    Sheets sheetsbarnameh = workbook_barnameh.Worksheets;

    //باز کردن اکسل دومی یا همان 110_99_88
    Workbook workbook110_99_88 = ExcelApp_110_99_88.Workbooks.Open(FileName110_99_8 8, mis, mis, mis, mis,
    mis, mis, mis, mis, mis, mis, mis, mis, mis, mis);
    Sheets sheets110_99_8 = workbook110_99_88.Worksheets;

  16. #16

    نقل قول: راه فرار از حلقه for ؟

    این هم برای خواندن نام شیتها و . . .

    string namesheet = "";
    int Countsheetbarname = 12;
    for (int t = 1; t <= Contsheetbarname; t++)//خواندن نام شیتها در برنامه اصلی
    {
    int q = 0;
    worksheetbarname = (Worksheet)sheetsbarnameh.get_Item(t);
    namesheet = worksheetbarname.Name;
    if (namesheet != "جراحی" && namesheet != "اورژانس" && namesheet != "بیهوشی" && namesheet != "CCU")
    continue;
    else
    {
    // شیت اول کد 99
    worksheet110_99_88_1 = (Worksheet)sheets110_99_8.get_Item(4);
    //شیت دوم کد 99
    worksheet110_99_88_2 = (Worksheet)sheets110_99_8.get_Item(5);


    range_radif1 = (Range)worksheetbarname.get_Range("B" + 7, "B" + 26);
    System.Array valuearray_radif1 = (System.Array)range_radif1.Value2;

  17. #17

    نقل قول: راه فرار از حلقه for ؟

    دوستان چی شد ادامه نمیدید؟

  18. #18
    کاربر دائمی آواتار wolf_majid
    تاریخ عضویت
    آذر 1387
    محل زندگی
    اصفهان
    پست
    534

    نقل قول: راه فرار از حلقه for ؟

    نقل قول نوشته شده توسط csharpdoost مشاهده تاپیک
    ببخشید اینترنتم دیشب قطع شد.
    این کدها مربوط به اعداده . در مورد رشته ها هم میشه چنین کاری کرد؟
    شدن که میشه اما تبدیل کردنش سخته

    کد حلقه ات را بگذار تا بررسی کنم

  19. #19
    کاربر دائمی آواتار RED-C0DE
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    31 4E 20 20 54 48 33 20 20 28 72 59 70 54 30 47 33 4E 31 28 20 20 5C 2F 30 52 31 7C 7C 29 20 20 7C 2
    پست
    551

    نقل قول: راه فرار از حلقه for ؟

    ی پیشنهاد وسط بحثتون: تا جایی ک می شه از کامپوننتهای COM استفاده نکنید.
    (دلیل هم زیاد داره)
    دنبال معادل .net ایش بگردین همیشه اگه می شه از اون استفاده کنید.

تاپیک های مشابه

  1. کمک در مورد حلقه For
    نوشته شده توسط as_200340 در بخش برنامه نویسی در 6 VB
    پاسخ: 2
    آخرین پست: شنبه 30 اردیبهشت 1385, 03:51 صبح
  2. حلقه FOR (از "A" تا "z")
    نوشته شده توسط هانی هاشمی در بخش برنامه نویسی در 6 VB
    پاسخ: 5
    آخرین پست: پنج شنبه 11 اسفند 1384, 14:48 عصر
  3. ایجاد کامپوننت در حلقه for
    نوشته شده توسط sima_gh7 در بخش برنامه نویسی در Delphi
    پاسخ: 26
    آخرین پست: دوشنبه 11 مهر 1384, 09:58 صبح
  4. حلقه For Each برای آرایه چند بعدی ؟
    نوشته شده توسط habedijoo در بخش VB.NET
    پاسخ: 0
    آخرین پست: یک شنبه 16 مرداد 1384, 09:23 صبح
  5. تغییر مشخصه تمام کامپوننتهای شبیه در یک حلقه For ؟؟
    نوشته شده توسط v_shalchian در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 7
    آخرین پست: چهارشنبه 29 مرداد 1382, 19:10 عصر

قوانین ایجاد تاپیک در تالار

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