
a ל-b.12345 % 10 נותן 5, כלומר הספרה הימנית.13 % 2 נותן 1, ולכן 13 הוא אי-זוגי.18 % 3 נותן 0, ולכן 18 מתחלק ב-3.x += 3 שקול ל-x = x + 3. כך פועלים גם -=, *=, /= ו-%=.a++ ו-++a מוסיפים אחד ל-a, אבל ההבדל מתברר כשהפעולה מופיעה בתוך פקודה אחרת:a++) המחשב קודם משתמש בערך הישן, ורק אחר כך מגדיל.++a) המחשב קודם מגדיל, ואז משתמש בערך החדש.--.>, <, >=, <=, == ו-!= מחזירים true או false. שימו לב ש-== הוא השוואה, ו-= הוא השמה. בביטוי כמו result = a <= b ההשוואה מתבצעת לפני ההשמה.הטקסט המלא של הדקות הראשונות בהרצאה «פעולות מתמטיות - אופרטורים - חלק 1» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אנחנו מגיעים לנושא שנקרא אופרטורים. מה זה אופרטור? אופרטור זהו סימן שמבצע פעולה ונותן לנו את התוצאה של הפעולה הזאת. לדוגמה, האופרטור פלוס מבצע פעולה של חיבור בין שני מספרים.
בואו נראה דוגמה לשימוש בפלוס. אם יש לנו int a שווה 3, int b שווה 4, אנחנו יכולים לקחת איזשהו משתנה נוסף, לדוגמה summary, ולהכניס לתוכו את a פלוס b.
כמובן המחשב יבצע פעולה של חיבור ואז הפעולה הזאת הולכת להיכנס לתוך המשתנה סם. אם אנחנו נציג את סם הוא כמובן יראה 7. אוקיי, אז אנחנו הולכים לראות בסרטון הזה כמה דברים לגבי אופרטורים.
למה חשוב לנו לדעת את זה? מפני שכאשר אנחנו מתכנתים אנחנו מבצעים המון פעולות חישוביות, פעולות של בדיקות, כל מיני פעולות כאלה במהלך הקוד שאנחנו כותבים.
לכן חשוב לנו לדעת איזה אופרטורים קיימים, ומה בדיוק הפעולות שהם מבצעים. קודם כל מונחים. הסימן נקרא אופרטור. שני הערכים שהוא מקבל משני הצדדים שלו נקראים אופרנדים.
אופרנד זה בעצם הנפעל על ידי האופרטור. אז אם פלוס זה האופרטור, בוא נרשום את זה פה a and b are the operands. אופרנד, מי שהאופרטור פועל עליו.
יכול להיות לנו אופרנד אחד ויחיד, יכולים להיות לנו שני אופרנדים ויכולים להיות לנו שלושה אופרנדים לאופרטור. בואו נסתכל דוגמה, יש לנו כאן A ועוד B. A ועוד B ואומר שיש לנו שני אופרנדים.
לכן פלוס נחשב אופרטור בינארי מפני שהוא עובד על שני אופרנדים. בואו ניקח דוגמה נוספת int x שווה מינוס A. מינוס בהגדרה הזאתי נחשב אופרטור אונארי מפני שהוא פועל רק על אופרנד אחד.
יכולנו גם לרשום פה פלוס, פלוס a. זאת אומרת שx שווה בייסקלי למה שa שווה. אז פלוס נחשב במקרה הזה כאופרטור אונארי, ולכן פלוס בגדול הוא גם אופרטור בינארי שפועל על שני אופרנדים, וגם אופרטור אונארי שפועל על אופרנד אחד.
ישנו עוד אופרטור אחד ויחיד, שפועל על שלושה אופרנדים, אופרטור הזה נחשב אופרטור טרינארי, ואנחנו נראה אותו באחד הסרטונים הבאים. עכשיו, ניתן לחלק את כל האופרטורים לקטגוריות לפי הפעולות שהם מבצעות.
אם האופרטור הוא אופרטור מתמטי כמו פלוס-מינוס, אז הוא שייך לקבוצת האופרטורים המתמטיים. אז איזה אופרטורים מתמטיים קיימים? אנחנו יכולים להשתמש במתמטיקל אופרטורס בחיבור, חיסור, כפל, חילוק ומודולו.
כמובן חיבור, חיסור, כפל, חילוק זה הפעולות הסטנדרטיות מעולם המתמטיקה. מודולו זה אופרטור השארית. מה הכוונה? אם יש לנו int נאם 1 שווה 3 ויש לנו את נאם 2. בואו נגיד שנאם 1 שווה 4 ונאם 2 שווה 3. אנחנו עכשיו רוצים לפתוח איזשהו משתנה ולהכניס לתוכו את נאם 1 מודולו נאם 2. מה יהיה בריזולטור?
אז בעצם האופרטור הזה זה לא אופרטור חלוקה וזה גם בטח שלא אופרטור אחוז כמו הסימן, הוא רק מתואר כאחוז. מה שהאופרטור הזה עושה זה את השארית בחלוקה של שני החלקים האלה. זאת אומרת אם ניקח 4 לחלק ל-3 כמובן שזה לא מספר שלם התוצאה ולכן תהיה פה שארית.
אפשר להתייחס ל-4 לחלק ל-3 כ-4 שלישים. אם יש לנו 4 שלישים אז בעצם 3 שלישים 3 שלישים ליתר דיוק תופסים שלם 1 ומתוך 4 שלישים נשאר לנו שליש 1 ולכן השארית בחלוקה של 4 לחלק ל-3 זה 1 מפני שזה שליש 1. אז אם אנחנו נריץ כרגע את התוכנית הזאת אנחנו נקבל 1.
אז בעצם אופרטור המודולו מבצע שארית. איך אנחנו יכולים בעצם להשתמש איתו בתוכנית אמיתית? אם לדוגמה אנחנו לוקחים איזשהו מספר 12345 ומבצעים מודולו 10, אז מה תהיה התוצאה?
מודולו 10 תמיד ייתן לנו את הספרה האחת והיחידה הימנית ביותר. למה? מפני שכאשר אנחנו ניקח 12345, את המספר הזה, 12,345 לחלק ל-10 אנחנו תמיד נקבל שארית 5.
תמיד הספרה הימנית תהיה שארית. בואו נסתכל על זה ונראה שקיבלנו 5. כך אנחנו יכולים לדוגמה להוציא את הספרה הימנית ממספר. אם ניקח לדוגמה int right digit שווה 12345 מודול 10 ונדפיס את right digit אנחנו נקבל 5. זאת אומרת שהצלחנו להוציא או לחלץ את הספרה הימנית מכל מספר שהוא.
דבר נוסף שאנחנו יכולים לבדוק, ואם יש לנו לדוגמה את המספר 13 מודולו 2, האם יש שארית בחלוקה של 13 ל-2? 13 לחלק ל-2 זה לא מספר שלם, יש לנו שארית שהיא 1, כלומר יש חצי 1. בואו נריץ ונקבל 1, אנחנו רואים אותו פה.
אוקיי, בואו ניקח את 14 מודולו 2. 14 לחלק ל-2 בדיוק 7, זאת אומרת שאין לנו שארית, אפשר להגיד ש-14 לחלק ל-2 זה 7 שלמים ואפס שארית, אפס חצאים.
ולכן אנחנו נקבל 0. כל מספר אי-זוגי שנחלק אותו ב-2 נקבל שארית 1. כל מספר זוגי שנחלק ב-2 לא נקבל שום שארית ולכן השארית היא 0. כך אנחנו יכולים בעזרת מודולו, או יותר נכון מודולו 2, לדעת אם מספר מתחלק ב-2 בלי שארית או לא.
כלומר האם מספר הוא זוגי כן או לא. אם אנחנו מבצעים את אותו הסיפור על 3, גם כאן אם השארית היא 0 המספר מתחלק ב-3. אם השארית היא לא 0 המספר לא מתחלק ב-3. בואו ניקח את שמונה עשרה, שמונה עשרה מודולו שלוש זה אפס מפני ששמונה עשרה מתחלק בשלוש.
לכן אנחנו יכולים לדעת האם כל מספר מתחלק בכל מספר אחר לפי השארית של המודולו שלו. אז יש המון שימושים לאופרטור מודולו והוא נחשב גם כן באחד מהאופרטורים המתמטיים שקיימים.
קיים את אופרטור ההשמה. אופרטור ההשמה זה אופרטור חשוב שדיברנו עליו בסרטונים הקודמים וגם בסרטון הזה. ומה שהוא אומר בעצם זה אני לוקח את הערך שנמצא מימין לי ומכניס אותו לתוך משתנה שנמצא משמאלי.
זה אומר שמצד שמאל של אופרטור ההשמה, אופרטור השווה, חייב להיות משתנה ולא קבוע. אנחנו לא יכולים לרשום 3 שווה a.
בעולם המתמטיקה זה נחשב השוואה, בעולם התכנות זה נחשב טעות. אי אפשר לעשות את הדבר הזה בעולם התכנות, אנחנו כבר יכולים לראות את השגיאה שהמערכת נותנת לנו.
אפילו שזה חוקי במתמטיקה, במתמטיקה האמיתית זה אומר פשוט ש-a שווה ל-3, בעולם התכנות אופרטור השווה עושה משהו אחר לגמרי.
אופרטור השווה אומר, אני מנסה לקחת את מה שיש מצד ימין שלי ולהכניס למשתנה שנמצא בצד שמאל. אם אין לי משתנה בצד שמאל אני לא יכול לבצע את הפעולה ולכן זאת שגיאה.
אם אנחנו רושמים a שווה 3 זה אומר שאנחנו לוקחים את המספר 3 עושים אותו בתוך המשתנה A. במידה ואנחנו מבצעים איזושהי פעולה שבנויה ממספר אופרטורים אנחנו יכולים לשים ביניהם סוגריים בשביל לתת קדימויות לאופרטורים שונים.
בואו ניקח דוגמא, ניקח איזשהו משתנה value ונכניס לתוכו את A ועוד B כפול 1 ועוד 17. המחשב נותן קדימות לכפל וחילוק ומודולו על פני חיבור וחיסור.
עושים פה לדוגמה מינוס. אם אנחנו רוצים לשנות את הקדימות ואנחנו יכולים בלי שום בעיה להשתמש בסוגריים. סוגריים קודמים לכל, ולכן המחשב קודם כל יבצע את a כפול b, ולא את b כפול num1 במידה ולא היה סוגריים.
ויש לנו גם את הסוגריים שאנחנו יכולים לשלב אותם כאופרטור בפני עצמם. ישנה קבוצה נפרדת של אופרטורים שנחשבים אופרטורי קיצור. מה הכוונה באופרטורי קיצור?
אם אנחנו עכשיו לוקחים int x1, מכניסים לתוכו 10, ולאחר מכן אנחנו אומרים x1 שווה למה שהיה בו ועוד, בואו נניח 3. כאשר אנחנו נציג את x1 אנחנו הולכים לקבל 13. בעצם מה שעשינו פה זה הוספנו לאיזשהו משתנה ערך.
בואו נוריד את כל מה שהיה לפני זה ונישאר רק עם הקוד הזה. לקחנו משתנה שנקרא x1, שמנו בתוכו 10, הוספנו לתוכו את מה שהיה בו פלוס 3 והצגנו את התוצאה.
אנחנו הולכים לקבל 13, אחלה. הפעולה הזאת זו פעולה שמבצעים אותה הרבה בעולם התכנות. כלומר, הרבה פעמים קורה שיש לנו משתנה ואנחנו רוצים להוסיף לו ערך, או להוריד ממנו ערך, או להכפיל ערך במה שיש בו, או לחלק ערך במה שיש בו,
או לבצע מודולו על מה שיש בו. אז במקום לרשום את כל הסיפור הזה, אנחנו יכולים להשתמש באופרטור קיצור. אופרטור קיצור מבצע את הדבר הבא:
פלוס שווה במקום שווה x פלוס שלוש פלוס שווה שלוש עכשיו לא להתבלבל אנחנו לא יכולים לעשות שווה פלוס הדבר הזה לא קיים או ליתר דיוק הוא בא ובעצם אומר שאנחנו מכניסים לx1 על ידי הפרטור שווה את 3 כי פלוס 3 זה 3 לכן קודם כל אנחנו רושמים פלוס ואחר כך שווה כאן בעצם המחשב לוקח את מה שרשמנו פה ומחליף אותו לזה x1 פלוס שווה 3 זה בדיוק אותו דבר כמו לומר
x1 שווה לx1 ועוד 3 בואו נריץ ונקבל 13 איזה עוד דברים קיימים איזה עוד אופרטורי קיצור קיימים אז יש לנו כמובן את מינוס שווה מינוס שווה זה x1 שווה לx1 מינוס 3 יש לנו את כפול שווה שזה שווה לx1 כפול 3 יש לנו את לחלק שווה k שווה x1 שווה ל-x1 במקרה זה חלקי 3 ויש לנו את מודולו שווה.
כאן בעצם אנחנו אומרים לתוך x1 אנחנו מכניסים את מה שהיה בו מודולו 3. אנחנו כמובן יכולים לעשות את זה על כל אחד מהמספרים האחרים שקיימים בעולם.
מינוס שווה ל-9. כאן אנחנו לוקחים את x1 מכניסים לתוכו מינוס שווה 9 כלומר מכניסים לתוכו את מה שהיה בו מינוס 9. אז אפשר לעשות את זה כמובן על כל מספר שהוא בעולם.
דבר נוסף שחשוב להבין בנוגע לאופרטור ההשמה. בואו ניקח דוגמה נוספת. int a שווה 1, int b שווה 2, int c שווה a שווה b. מותר לבצע את הדבר הזה.
מה בעצם אמרנו פה? אמרנו שלתוך c אנחנו רוצים להכניס משהו מוזר, אנחנו רוצים להכניס את a שווה b. עכשיו, מה בדיוק הולך להיכנס לתוך c?
אז מה שהולך לקרות זה שb הולך להיכנס קודם כל לתוך a ולאחר מכן הוא הולך גם להיכנס לתוך C. זאת אומרת ש-C יכיל 2 בסיום התרגיל הזה. ואנחנו רואים את ה-2 מוצג על המסך.
אבל אם אנחנו נסתכל באמת מה קרה כאן, אז המחשב רואה כמובן את הפקודה משמאל לימין, והוא אומר, קודם כל אני מבצע את ההשמה הזאת, אבל מה זה אומר שאני מבצע את ההשמה השמאלית? זה אומר שאני צריך לסיים את מה שיש מצד ימין.
מה שיש מצד ימין זה A שווה ל-B, וזה אומר הכנס את B לתוך A, הכנס את הערך שיש בתוך B, כלומר 2, לתוך המשתנה A. אז המחשב קודם כל נאלץ לעשות את זה, ואז הוא מחזיר מפעולת ההשמה את הערך שהיה מצד ימין.
זה אומר שפעולת השמה לוקחת את הערך שהיה מצד ימין, מכניסה למשתנה מצד שמאל, ואז הערך מצד ימין חוזר, מתייצב בפעולת ההשמה, לדוגמה כאן יחזור 2, ורק לאחר מכן המחשב ממשיך לפעולת השמה הבאה, הדפסה או כל דבר אחר.
זאת הסיבה שאנחנו ראינו כרגע שיש לנו 2 ב-C. דוגמה נוספת שאנחנו יכולים להראות בהקשר הזה, אם יש לנו לדוגמה int x, בואו נגיד שהוא שווה ל-10, ויש לנו את int y, אנחנו יכולים עכשיו להדפיס y שווה 10, ולאחר מכן להדפיס את y, או יותר נכון y שווה x.
ומה בעצם קורה כאן? פה לקחנו את x שערכו הוא 10, והכנסנו בתוך y, כעת y שווה 10. לאחר מכן, פעולת ההשמה החזירה את הערך שהיה מצד ימין, כלומר 10, ולכן הפקודה הזאת תציג לנו 10. מאחר מכן אנחנו מציגים את y שכמובן גם הוא יהיה 10.
בואו נוריד את זה, נריץ ונראה פעמיים 10 על המסך. דיברנו מקודם על אופרטורי קיצור, ישנם עוד סדרה של ארבעה אופרטורי קיצור מאוד מעניינים, בואו נסתכל עליהם.
נניח שאנחנו לוקחים לכאן int a שווה 3, ואנחנו לוקחים int שווה 4. אנחנו מבצעים a++. a++ זה אופרטור קיצור, יותר נכון,++ זה אופרטור קיצור, ומה ש++ אומר זה a שווה לa+1. אם אנחנו נציג כרגע את a אנחנו הולכים לקבל 4 מפני שהיה ב-a3 וקידמנו אותו ל4. בואו נריץ ונקבל 4. למה יש אופרטור מיוחד
בשביל לעלות ב-1? מפני שהעלאה ב-1 או חיסור ב-1 זה פעולה מאוד מאוד נפוצה בעולם התכנות. אנחנו נראה בהמשך מתי משתמשים בה. אז בעצם מה שעשינו כאן זה לקחנו את a ופשוט העלינו אותו ב-1.
אוקיי, אבל אנחנו יכולים לבצע גם ++a גם זה אופרטור נוסף שאומר a שווה ל-a+1 אם אנחנו נריץ את זה שוב פעם אנחנו נקבל 4 מפני שהיה ב-a שלוש וקידמנו אותו לארבע.
אז מה באמת ההבדל בין a++ לבין++a? בואו נראה בדיוק. נתחיל עם a++ a++ אומר a שווה a+1 אבל האופרטור נקרא פוסט אינקרמנט פוסט אינקרמנט אומר קודם כל תבצע את הפעולה ולאחר מכן תבצע את האופרטור.
מה זה אומר קודם כל תבצע את הפעולה? איזה פעולה יש פה? אז למעשה השורה הזאת מכילה רק פעולה של קידום, רק את האופרטור.
אבל מה היה קורה אם היינו אומרים דבר כזה? שווה ל-a++. בואו נגיד שבהתחלה אפילו אין ב-b שום דבר. כעת אנחנו רואים שיש לנו שימוש באופרטור, אבל זה נמצא בתוך פעולה יותר גדולה, איזושהי פקודה חיצונית שבתוכה יש שימוש באופרטור.
פוסט אינקרמנט פשוט אומר, קודם כל תבצע את הפעולה האחרת, לא את האופרטור, אל תבצע אותי קודם כל. ולאחר מכן, אחרי שסיימת עם הפעולה, תבצע את האופרטור.
זאת אומרת שראשית המחשב יבצע b שווה a, כאשר a עדיין מחזיק בערך הקודם שלו, בערך 3. לאחר מכן המחשב יבצע את האופרטור ויעלה את a ל-4. אז אם אנחנו עכשיו הולכים ומבצעים את הדבר הבא:
a שווה, נשרשר אותו עם a, b שווה ונשרשר אותו עם, מה שאנחנו הולכים לקבל כאן זה a הולך להיות 4 מפני שהוא קודם אבל b הולך לקבל את הפעולה הקודמת או יותר נכון את הערך הקודם והוא היה 3. בואו נריץ ונראה שa אכן שווה 4, b שווה 3. בואו ניקח את אותו הסיפור נשכפל אותו ונגדיר עכשיו פלוס פלוס a במקום a פלוס פלוס זה נקרא פרה אינקרמנט.
פוסט זה אחרי פרה זה לפני וזה מדובר על האופרטור עצמו. פוסט אינקרמנט אומר הפעולה של האופרטור