דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. סדר החישוב של תנאים

סדר החישוב של תנאים

מתוזמן נעוץ נעול הועבר ארכיון code613m
3 פוסטים 3 כותבים 283 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • מ מנותק
    מ מנותק
    מנצפך 0
    כתב ב נערך לאחרונה על ידי
    #1

    זכורני מ-C# שאם רציתי להתנות במשתנה שעלול להיות לא מוגדר/מאותחל, במקום לבדוק:

    If (X !=null)
    

    ואז לעשות את התנאי שלי, הייתי בודק:

    If (X !=null && <התנאי שלי>)
    

    כי אם הייתי בודק מיד את התנאי שלי, היתה שגיאה שהמשתנה לא מוגדר.
    היוצא מהנ"ל שברגע שהתנאי הראשון לא מתקיים,לא עוברים לתנאי השני (במקרה של &&), אפילו שזה באותה "שורה".
    שאלתי:
    האם גם בשאילתת מסד נתונים (SQL ו-NoSQL) זה עובד כך? כי אני רוצה לעשות תנאי מתמטי מסובך, אבל יש לי גם תנאי פשוט יותר שגם צריך להתקיים.
    השאלה היא האם יש חשיבות לסדר.

    פורסם במקור בפורום CODE613 ב08/06/2016 22:04 (+03:00)

    תגובה 1 תגובה אחרונה
    0
    • dovidD מנותק
      dovidD מנותק
      dovid ניהול
      כתב ב נערך לאחרונה על ידי
      #2

      לתכונה שאתה מתאר קוראים short-circuiting (וזה קורה ב&& וב|| הכפולים בC# לאפוקי הבודדים).
      את השאלה המעניינת שלך שואלים פה http://stackoverflow.com/q/11219791/1271037, והתשובה היא א. אם מה שמטריד אותך זה ביצועים - בכל מקרה אתה מוגן כי כי תוצאה מוקדמת מפסיקה את חישוב התנאי הנוסף (גם בסדר הפוך, מה שאין בC#).
      ב. שאין כל שליטה על מי יבוצע ראשון והאם יבוצע - האופימייזר מחליט מה לבצע קודם (ובזה יש מעלה על C# שכן שם זה לפי הסדר לטוב ולמוטב).
      פה יש המחשה ע"י שגיאת חלוקה באפס: https://blogs.msdn.microsoft.com/bartd/2011/03/03/dont-depend-on-expression-short-circuiting-in-t-sql-not-even-with-case/, ואף הוא מביא פתרון איך לסדר את זה מה שבעצם כופה על הSQL סדר.

      פורסם במקור בפורום CODE613 ב08/06/2016 23:37 (+03:00)

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      תגובה 1 תגובה אחרונה
      3
      • א מנותק
        א מנותק
        ארכיטקט
        כתב ב נערך לאחרונה על ידי
        #3

        במסדי נתונים האופטימייזר בוחר את הסדר של התנאים לפי הסטטיסטיקות שלו וכו', אתה לא יכול לשלוט על זה.
        בשפות אחרות כגון C# הסדר הוא אכן לפי מה שכתב המתכנת.

        פורסם במקור בפורום CODE613 ב08/06/2016 23:41 (+03:00)

        אידיאולוגיות גדולות נכנסות למטחנה של עולם המעשה ויוצאות ממנו בפירורים (ווינסטון צ'רצ'יל, סתם סתם, זה שלי)

        תגובה 1 תגובה אחרונה
        1

        בא תתחבר לדף היומי!
        • התחברות

        • אין לך חשבון עדיין? הרשמה

        • התחברו או הירשמו כדי לחפש.
        • פוסט ראשון
          פוסט אחרון
        0
        • דף הבית
        • קטגוריות
        • פוסטים אחרונים
        • משתמשים
        • חיפוש
        • חוקי הפורום