עמוד ראשי מירק סקריפטינג מדריכים [מדריך] לולאת While וGoto

[מדריך] לולאת While וGoto

mIRC Guides - בפורום זה יפורסמו מדריכים לשפת המירק, הסברת פקודות ואפשרויות במירק וגם הסברים לשימוש בתוכניות חיצוניות לטובת המירק. לפרסום מדריכים יש לפרסמם תחילה בפורום "פרסום קודים ומדריכים" ולאחר מכאן הם יועברו לפורום זה.

הצטרף: 01 יולי 2010, 13:18
הודעות: 66
פורסם: 03 אוגוסט 2011, 22:52
לולאת While

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

alias count1 {
  var %i = 1
  while (%i <= 10) {
    echo -a %i
    inc %i
  }
}

הקוד מגדיר משתנה בשם %i שווה ל1, ואז מתחיל לולאה בתנאי שהמשתנה %i קטן או שווה ל 10.
הלולאה פועלת כי התנאי מחזיר תשובה נכונה.
בתוך הלולאה הקוד מחזיר כל פעם את הנתונים (מספר) שבתוך המשתנה %i , ומעלה ב1 (inc) את המשתנה, ואז שוב מתחיל את הלולאה, ואם עדיין המשתנה קטן או שווה ל10 הוא עושה את הלולאה עד שמגיע המספר 11 ואז כבר התנאי מחזיר שקר $false.

ישנם 2 פקודות המשמשות לשליטה על הלולאה.
/break

עוצר את הלולאה, לא כמו /halt שעוצר את כל הקוד עצמו גם אחרי הלולאה - /break פשוט עוצר את הלולאה עצמה וממשיך בקוד.
/continue

חוזר להתחלת הקוד שבתוך הלולאה. (מתחיל את הלולאה מחדש)

אני אתן דוגמא לשימוש בלולאת while כדי שתבינו יותר:
אני אבנה קוד שפשוט מחזיר לך את כל הניקים שנמצאים בערוץ.
אז נתחיל, מה שאנחנו צריכים לדעת זה
$nick($active,0) מחזיר את מספר המשתמשים בערוץ
$nick($active,3) מחזיר את המשתמש השלישי בערוץ

אז ככה, קודם נתחיל לולאה המתחילה מ1 ולא מפסיקה כל עוד המשתנה שנגדיר יהיה שווה למספר המשתמשים בערוץ:

var %i = 1
while (%i <= $nick($active,0)) {
  inc %i
}

עכשיו מה שנעשה, נגדיר עוד משנה שהוא ישמור את כל הניקים בערוץ, אליו נכניס כל פעם בלולאה את הניק ונמנה בסוף הלולאה את כל הניקים שבערוץ, ואחרי הלולאה נחזיר את כל הניקים בפקודת echo
var %i = 1, %nicks
while (%i <= $nick($active,0)) {
  %nicks = %nicks $nick($active,%i)
  inc %i
}
echo -a %nicks

אז מה עשינו בעצם ? הלולאה עוברת על כל איש שבערוץ, מוסיפה את הניק שלו למשתנה הקיים ואחרי שהלולאה מסתיימת היא מחזירה את המשתנה עם הניקים
$nick($active,%i) - %i זה הניק במקום



פקודת ה Goto

הפקודה /goto מאפשרת לך לקפוץ מנקודה אחת בקוד לנקודה אחרת.
אפשר להשתמש בgoto לשימוש דומה ללולאת while, ואפשר להשתמש גם כמו תנאי (if)

אז ככה, הפקודה לקפוץ למקום בשם מסויים היא
/Goto <Name>

ובהמשך הקוד צריכה להיות התבנית הבסיסית של הGoto שהיא
:Name
<Commands>
halt


דוגמא לשימוש בGoto של /help :

alias number {
  if ($1 == 1) goto one
  elseif ($1 == 2) goto two
  else goto unknown
  :one
  echo One
  halt
  :two
  echo Two
  halt
  :unknown
  echo Unknown number!
  halt
}

המשתמש קורא לאליאס number, לדוגמא /number 2
אם לדוגמא נקח ש $1 == 2 אז הקוד יקפוץ ע"י הפקודה goto לtwo. ואז כמו שכתוב בקוד, הוא יציג echo Two ויפסיק את הקוד ע"י הפקודה halt.



אם יש משהו שלא הסברתי טוב, לא הבנתם .. בבקשה צרו איתי קשר במירק ערוץ #mIRCs או בהודעה פרטית כדי שאוכל לערוך זאת ותוכלו ללמוד ממדריך זה.
מדריך זה נכתב ע"י שחר Arthas עבור פורום mIRCs.co.il בלבד.
אין להעתיק / לפרסם בפורום אחר ללא אישור ממני, מי שיעשה את זה דמו בראשו.
תמונה

הצטרף: 13 יולי 2010, 16:40
הודעות: 37
פורסם: 03 אוגוסט 2011, 23:51
אחלה מדריך אחי,
מסודר ומובן תודה רבה.

הצטרף: 16 יולי 2010, 07:51
הודעות: 7
פורסם: 03 אוגוסט 2011, 23:57
כל הכבוד שחר, מדריך מעולה.
תודה רבה.

המשך לשתף אותנו בידע שלך.

הצטרף: 15 אוגוסט 2010, 14:55
הודעות: 20
פורסם: 04 אוגוסט 2011, 00:00
כל הכבוד שחר, מדריך מעולה.
תודה רבה.

המשך לשתף אותנו בידע שלך.

הצטרף: 20 יוני 2011, 21:35
הודעות: 100
פורסם: 04 אוגוסט 2011, 00:04
קבל ח"ח.

הצטרף: 17 פברואר 2011, 08:57
הודעות: 8
פורסם: 04 אוגוסט 2011, 18:37
תודה רבה [:


חזור אל מדריכים