שאלה קשה למקצוענים

שאלה קשה למקצוענים

אני צריך לקבל מהמשתמש שורת פקודה,אחרי זה אני צריך לבדוק אם הפקודות שהוקלדו תקינות ,יש אפשרות שפקודה תחזור על עצמה יותר מפעם אחת ,למשל repeat 10[fd 15 repeat 15[fd 2 rt 19]rt 5]g ,יש למישהו רעיון איך עושים את זה?
 

cald

New member
יש כמה אפשרויות

אפשרות אחת היא להשתמש בפונקצית for לדוגמה, for i=1 to 10 bla bla bla next עוד אפשרות היא להשתמש ב while while a<=10 bla bla bla a=a+1 wend או ב goto 1 bla bla bla a=a+1 if a<=10 then goto 1 וישנן עוד אלף דרכים אפשריות, רק תבחר
 
לא הבנת אותי

אחרי שאני קורא את שורת הפקודה ומכניס אותה למערך אני צריך לבדוק אם הפקודות תקינות , הבעייה היא שאותה פקודה מופיעה יותר מפעם אחת כי אני עושה את זה ב SELECT CASE ,עכשיו ברגע שיש לי נגיד BLA BLA יש לה CASE מסויים שבתוכו הוראות של מה לעשות (אני עכשיו בתוך הקייס של BLA BLA ,עכשיו אני אומר למחשב אוקיי תמשיך אז אני צריך לבנות עוד SELECT CASE אחד שלם בתוך הקייס הקודם נכון? מסובך מדיי
 

kernel32

New member
הגיע זמן KERNEL32

אז ככה: עד איזו רמה אפשר להיכנס לפקודות (ז"א - כמה פעמים ברצף יכול המשתמש להכניס את הפקוה BLA ?) הפתרון הטוב ביותר הוא ליצור את ה SELECT כפונקציה ולקרוא לה כמה פעמים שאתה צריך. קרנל.
 
אז ככה

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

nscom2k

New member
....

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

eliranh

New member
נשמע מסובך!

תעשה פונקציה שכל פעם תקרא לה שתקבל את הפקודה... וגם את מספר הפעמים לעשות כלומר שזה יתרגם את זה וככה יהיה לך ממש קל לדוגמא stam(pkuda as string, number as interger)1 אחרי שפיענחת כמה פעמים לעשות הםונקציה תחזור על עצמה for i = 1 to number bla bla...
 
למעלה