OnWorks Linux ו-Windows Online WorkStations

לוגו

אירוח מקוון בחינם עבור תחנות עבודה

<הקודם | תוכן | הבא>

משימה

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



[me@linuxbox ~]$ foo=

[me@linuxbox ~]$ echo $foo


[me@linuxbox ~]$ if (( foo = 5 )); ואז מהדהד "זה נכון."; fi

זה נכון.

[me@linuxbox ~]$ echo $foo

5

[me@linuxbox ~]$ foo=

[me@linuxbox ~]$ echo $foo


[me@linuxbox ~]$ if (( foo = 5 )); ואז מהדהד "זה נכון."; fi

זה נכון.

[me@linuxbox ~]$ echo $foo

5


בדוגמה שלמעלה, אנו מקצים תחילה ערך ריק למשתנה Foo ולוודא שהוא אכן ריק. לאחר מכן, אנו מבצעים א if עם הפקודה המורכבת (( foo = 5

)). התהליך הזה עושה שני דברים מעניינים: 1) הוא מקצה את הערך של 5 למשתנה

foo, ו-2) הוא מוערך כ-true כי ל-foo הוקצה ערך שאינו אפס.


תמונה

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


תמונה

בנוסף =, המעטפת מספקת גם סימונים שמבצעים כמה משימות שימושיות מאוד:


טבלה 34-4: מפעילי הקצאה


תיאור סימון

תיאור סימון


תמונה

פרמטר = ערך משימה פשוטה. מקצה ערך ל פרמטר.


תמונה

פרמטר += ערך חיבור. שווה ערך ל פרמטר = פרמטר +

ערך.


תמונה

פרמטר -= ערך חִסוּר. שווה ערך ל פרמטר = פרמטר -

ערך.


תמונה

פרמטר *= ערך כֶּפֶל. שווה ערך ל פרמטר = פרמטר

* ערך.


תמונה

פרמטר /= ערך חלוקה שלמים. שווה ערך ל פרמטר =

פרמטר / ערך.


תמונה

פרמטר %= ערך מודולו. שווה ערך ל פרמטר = פרמטר %

ערך.


תמונה

פרמטר++ משתנה לאחר תוספת. שווה ערך ל פרמטר =

פרמטר + 1 (עם זאת, ראה דיון להלן).


תמונה

פרמטר-- משתנה לאחר ירידה. שווה ערך ל פרמטר =

פרמטר - 1.


תמונה

++פרמטר תוספת מראש משתנה. שווה ערך ל פרמטר =

פרמטר + 1.


תמונה

--פרמטר ירידה משתנה מראש. שווה ערך ל פרמטר =

פרמטר - 1.


תמונה


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

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



[me@linuxbox ~]$ foo=1 [me@linuxbox ~]$ echo $((foo++)) 1

[me@linuxbox ~]$ echo $foo

[me@linuxbox ~]$ foo=1 [me@linuxbox ~]$ echo $((foo++)) 1

[me@linuxbox ~]$ echo $foo


2

2


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


[me@linuxbox ~]$ foo=1 [me@linuxbox ~]$ echo $((++foo)) 2

[me@linuxbox ~]$ echo $foo

2

[me@linuxbox ~]$ foo=1 [me@linuxbox ~]$ echo $((++foo)) 2

[me@linuxbox ~]$ echo $foo

2


עבור רוב יישומי המעטפת, הקידומת של המפעיל תהיה השימושית ביותר.

האופרטורים ++ ו-- משמשים לעתים קרובות בשילוב עם לולאות. נבצע כמה שיפורים בסקריפט המודולו שלנו כדי להדק אותו מעט:



#! / bin / bash

# modulo2: הדגימו את האופרטור modulo עבור ((i = 0; i <= 20; ++ אני )); לַעֲשׂוֹת

אם (((i % 5) == 0 )); ואז printf "<%d> " $i

אחר

printf "%d " $i

פי בוצע

printf "\ n"

#! / bin / bash

# modulo2: הדגימו את האופרטור modulo עבור ((i = 0; i <= 20; ++ אני )); לַעֲשׂוֹת

אם (((i % 5) == 0 )); ואז printf "<%d> " $i

אחר

printf "%d " $i

פי בוצע

printf "\ n"


מחשוב ענן מערכת ההפעלה המוביל ב-OnWorks: