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

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

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

הבעיה היא לא הgoto

מתוזמן נעוץ נעול הועבר תכנות
51 פוסטים 8 כותבים 762 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • WWWW מנותק
    WWWW מנותק
    WWW
    השיב לחוקר ב נערך לאחרונה על ידי
    #11

    @חוקר ב API של ימות זה עוד יותר מסובך. כל העניין של חזרה אחורה.
    באסטריסק זה הרבה יותר קל.

    WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

    ח תגובה 1 תגובה אחרונה
    2
    • nigunN מנותק
      nigunN מנותק
      nigun
      השיב לשואף ב נערך לאחרונה על ידי nigun
      #12

      @שואף
      לא הבנתי מה קורה בתוך הפונקציה readAGI?
      למה לא לעשות לולאה ולהעביר לפונקציה את מספר הפעמים שהלולאה אמורה לרוץ כל עוד לא התקבל תגובה?
      ואם אתה מעביר "0" הלולאה תרוץ לנצח.
      ואז מבחוץ זה יראה משהו כזה:

      $bankInputAkdama = 'ברוך הבא למערכת איתור חשבונות בנק מוגבלים';
      $bank = readAGI($bankInputAkdama . TEXT . 'הזן מספר בנק ולסיום סולמית', NUMBERSNOSTAR,1);
      if (!$bank) $bank = readAGI(TEXT . 'הזן מספר בנק ולסיום סולמית', NUMBERSNOSTAR,0);
      
      

      אמנם זה לא פותר את הבעיה של חזרה שלב אחד אחורה
      אבל במקומות אחרים שלא צריך את זה
      הקוד יראה קצת יותר אלגנטי

      מייל: nigun@duck.com

      תגובה 1 תגובה אחרונה
      1
      • ח מנותק
        ח מנותק
        חוקר
        השיב לWWW ב נערך לאחרונה על ידי
        #13

        @WWW אמר בהבעיה היא לא הgoto:

        @חוקר ב API של ימות זה עוד יותר מסובך. כל העניין של חזרה אחורה.
        באסטריסק זה הרבה יותר קל.

        אני לא מכיר עדיין אסטריסק אבל מקטע הקוד שהעתיק כאן @שואף אני לומד שגם שם זה לא קורה מחשבות של המתכנת.., ועדיין הוא צריך לכתוב קוד שמבצע מה יקרה במידה כזו או כזו, אם כן הקיש או לא הקיש.
        אז בזה אני לא רואה חילוק בין הAPI של ימות לאסטריסק.

        תגובה 1 תגובה אחרונה
        1
        • nigunN מנותק
          nigunN מנותק
          nigun
          השיב לWWW ב נערך לאחרונה על ידי nigun
          #14

          @WWW אמר בהבעיה היא לא הgoto:

          איך זה שאני אף פעם לא השתמשתי בGOTO?

          למעשה איך אתה עובר אחורה לנקודה ספציפית, בלי לקבל קוד ספגטי?

          מייל: nigun@duck.com

          dovidD תגובה 1 תגובה אחרונה
          1
          • dovidD מנותק
            dovidD מנותק
            dovid ניהול
            השיב לnigun ב נערך לאחרונה על ידי
            #15

            במקרה של שואף אפשר לעשות בלולאות
            אחת על הכל "לבדיקה חדשה הקש כוכבית"
            ועל כל מקטע ומקטע עד שהתשובה לא ריקה (והכי טוב להעביר לפוקנציה וכנאמר).
            אבל הgoto במקרה של flow של שיחה הוא הגיוני לחלוטין, מותר וצריך להשתמש בו לדעתי,
            הטענה שלי הייתה שיעשו משהו גנרי וקל לכאלה מקרים, אבל אני מסכים עם שואף שזה בקלות יכול להסתבך. אני חושב על קובץ כמו XML ששמה עושים את הסתעפויות, כולל תנאים וכו' והקוד יידע להריץ אתת הקובץ הזה ולנהל לפיו שיחה.

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

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

            clickoneC תגובה 1 תגובה אחרונה
            3
            • clickoneC מנותק
              clickoneC מנותק
              clickone
              השיב לdovid ב נערך לאחרונה על ידי
              #16

              @dovid כשאתה מבקש נתונים מהמשתמש באפליקציית קונסול, (CLI), איך תנהל את זה?
              בעצם זה שקול לאותו דבר.....

              כן הייתי מוסיף את זה לתוך הפונקצייה של ReadAGI כי שם זה לכאורה המקום שלו.
              אבל זה הגיוני במרכזייה
              הגיוני גם מה שאתה אומר, שאם יש יותר מנתון אחד, שתהיה פונקצייה מרכזית שתדע לקבל הכל (ואולי גם את הולידציות הנדרשות....)

              אין טסט כמו פרודקשן.

              המייל שלי urivpn@gmail.com

              dovidD תגובה 1 תגובה אחרונה
              1
              • dovidD מנותק
                dovidD מנותק
                dovid ניהול
                השיב לclickone ב נערך לאחרונה על ידי
                #17

                @clickone חזק! דימוי מצויין!
                זה בעצם אומר שללא ספק יש כבר ספריות שעושות את זה.

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

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

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

                  הנה דוגמא בnodejs

                  $ node contact.js a 
                  # The Above command lauches a prompt
                  ? Enter firstname .. John
                  ? Enter lastname .. Doe
                  ? Enter phone number .. +145****
                  ? Enter email address .. john.doe@contacto.com
                  New contact added
                  

                  הכל אוטומטי וגנרי בזכות ספריות מתאימות, זה ההגדרה:

                  const questions = [
                    {
                      type : 'input',
                      name : 'firstname',
                      message : 'Enter firstname ..'
                    },
                    {
                      type : 'input',
                      name : 'lastname',
                      message : 'Enter lastname ..'
                    },
                    {
                      type : 'input',
                      name : 'phone',
                      message : 'Enter phone number ..'
                    },
                    {
                      type : 'input',
                      name : 'email',
                      message : 'Enter email address ..'
                    }
                  

                  זה הקוד! :

                  prompt(questions).then((answers) =>  addContact(answers));
                  

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

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

                  nigunN ח 2 תגובות תגובה אחרונה
                  5
                  • nigunN מנותק
                    nigunN מנותק
                    nigun
                    השיב לdovid ב נערך לאחרונה על ידי
                    #19

                    @dovid
                    יפה
                    אבל איפה הוא יכניס את החזרה שלב אחד אחורה?
                    לא תמיד הכוכבית חוזרת להתחלה או דווקא לשלב אחד אחורה
                    זה יכול להיות למשל 3 שלבים אחורה

                    מייל: nigun@duck.com

                    תגובה 1 תגובה אחרונה
                    1
                    • ח מנותק
                      ח מנותק
                      חוקר
                      השיב לdovid ב נערך לאחרונה על ידי
                      #20

                      @dovid אמר בהבעיה היא לא הgoto:

                      הנה דוגמא בnodejs

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

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

                        עושים גם לזה משהו מוכן, תחשוב על משהו כזה

                         condition: x => x.input == '*', action: 'goToStep', param: 2
                        

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

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

                        nigunN תגובה 1 תגובה אחרונה
                        2
                        • nigunN מנותק
                          nigunN מנותק
                          nigun
                          השיב לdovid ב נערך לאחרונה על ידי
                          #22

                          @dovid
                          ומה קורה מאחורי הקלעים? GOTO?

                          מייל: nigun@duck.com

                          dovidD תגובה 1 תגובה אחרונה
                          1
                          • dovidD מנותק
                            dovidD מנותק
                            dovid ניהול
                            השיב לnigun ב נערך לאחרונה על ידי
                            #23

                            @nigun מאה אפשרויות... goto לא תיתכן לדעתי באופן דינמי.

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

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

                            nigunN תגובה 1 תגובה אחרונה
                            1
                            • nigunN מנותק
                              nigunN מנותק
                              nigun
                              השיב לdovid ב נערך לאחרונה על ידי
                              #24

                              @dovid
                              אז מה כן? מערך?

                              מייל: nigun@duck.com

                              dovidD תגובה 1 תגובה אחרונה
                              1
                              • dovidD מנותק
                                dovidD מנותק
                                dovid ניהול
                                השיב לnigun ב נערך לאחרונה על ידי
                                #25

                                @nigun כתבתי לך מאה אפשרויות, אתה מציק.
                                אתה באמת רוצה שתחיל לפרט? הנה חשבת לבד על מערך, יופי יש לך תשובה אפשרית.

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

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

                                nigunN תגובה 1 תגובה אחרונה
                                0
                                • nigunN מנותק
                                  nigunN מנותק
                                  nigun
                                  השיב לdovid ב נערך לאחרונה על ידי
                                  #26

                                  @dovid
                                  רציתי לדעת האם אני בכיוון?

                                  מייל: nigun@duck.com

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

                                    @nigun אחד הכיוונים 🙂
                                    המימוש פה הוא החלק השולי.

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

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

                                    תגובה 1 תגובה אחרונה
                                    3
                                    • י מנותק
                                      י מנותק
                                      יוסף בן שמעון
                                      השיב לnigun ב נערך לאחרונה על ידי
                                      #28

                                      @nigun לא נראה לי שזה אמור להיות מורכב, קח פונקציה כזו

                                      function buildQuestions (questions) {
                                          var answers = {};
                                          for (var i = 0; i < questions.length; i++) {
                                              var question = questions[i];
                                              var input = read(question);
                                              answers[question.name] = input;
                                          }
                                          return answers;
                                      }
                                      function read (question) {
                                          var input = readAGI(question.massage, question.type);
                                          if (!input && question.isRequired && question.tryAgain) {
                                              --question.tryAgain;
                                              return read(question);
                                          }
                                          return input;
                                      }
                                      

                                      ותעביר לה גייסון כמו שדוד הציע, תוסיף לגייסון שדות כמו isRequired tryAgain ויש לך קוד שיתאים לכל השיחות

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

                                        צורת הדברים כבר נידונה והתבשלה כאן
                                        https://tchumim.com/post/59303
                                        ועדיין אין לי פיתרון לשלוחה שאמורה להיות עם תפריטים ותפריטי משנה וכו'.
                                        אציין שלכן אני עדיין לא עברתי לצורת העבודה של מערך נתונים נדרשים, כי לרוב אני מתחיל עם תפריטים וכו, ורק בשלב כלשהוא יש לי למשל רישום שאני עובד כעת לקבל רשימת נתונים בזה אחר זה.
                                        ולכן יותר נוח לי לעבוד על ידי שאני דורש נתון נתון ומבצע פקודות לפי הנתון שקיבלתי

                                        י תגובה 1 תגובה אחרונה
                                        4
                                        • י מנותק
                                          י מנותק
                                          יוסף בן שמעון
                                          השיב לחוקר ב נערך לאחרונה על ידי
                                          #30

                                          @חוקר שקול כתיבה בצורה כזו

                                          const questions = {
                                              firstname: {
                                                  type: 'input',
                                                  name: 'firstname',
                                                  message: 'Enter firstname ..',
                                                  nextStep () {
                                                      if(answers.talmid) return this.yeshivaCode;
                                                      else return this.otherStep
                                                  }
                                              }
                                          }
                                          

                                          אפשר לשכלל את זה ולעבוד עם שני סוגי מחלקות, מחלקת Menu ומחלקת Question, כל תפריט יכיל מערך של שאלות, וה nextStep או שיחזיר את השאלה הבאה או מופע של תת תפריט.
                                          ואל תאמר מה לי ולצרה זו, ההשקעה שווה. לא לחינם דוד התחלחל למראה הקוד הפרוצדורלי, קשה לי להבין איך מתחזקים כזה קוד, קוד כזה עם תתי תפריטים הופך להיות בלתי אפשרי לתחזוקה, אם תעבוד מונחה עצמים אני בטוח שתרגיש את ההבדל

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

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

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

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