פעולת מניה היא ספירה,
פעולת צבירה היא סיכום.
בהרבה מאוד בעיות במדעי המחשב יש צורך לספור דבר מה, לדוגמה:
כמה תלמידים יש בכיתה.
כמה נוסעים עלו לרכבת.
כמה הצביעו עבור כל מפלגה בבחירות.בהרבה מאוד בעיות אחרות במדעי המחשב יש לצבור סכומים, לדוגמה:
מהו סכום כל הקניות שרכשנו החודש.
מהו המשקל הכולל של כל ארגזי התפוחים שהועמסו על המשאית.
מהו מחזור המכירות החודשי של החברה.בשני המקרים, גם של צובר וגם של מונה, נצטרך להגדיר משתנה מיוחד לטובת המשימה ולאפס אותו.
ישנם מקרים בהם באותו האלגוריתם נצטרך גם מונה וגם צובר, חישובי ממוצעים לדוגמה:
מהו ממוצע הציונים של התלמיד - צבירה של הציונים וחלוקה במספר הציונים.
במקרה זה נצטרך להגדיר שני משתנים, אחד עבור המונה והשני עבור הצובר.
מספרים אקראיים
לטובת דוגמאות הקוד הבאות יהיה נוח להגריל מספרים בצורה אקראית במקום להקליד אותם.
ניתן להשתמש במחלקה Random, המחלקה Random מגרילה מספרים בצורה אקראית.
במחלקה מוגדרת המתודה Random.Next(int min, int max).
נראה אותה בפעולה החל מדוגמת הקוד הבאה.
מונה
נכתוב דוגמת קוד המריצה לולאה 100 פעמים, בכל איטראציה מוגרל מספר אקראי בין 1 ל-100, עם סיום הביצוע של הלולאה נדפיס את מספר המספרים האי זוגיים שהוגרלו (CounterSample):
בשורה 5 מוגדר אובייקט מהמחלקה Random, נעשה שימוש באובייקט מהמחלקה הזו (rnd) על מנת להגריל מספרים אקראיים. בשורה 6 מוגדר המשתנה counter, המשתנה counter משמש כמונה, בהמשך נעזר בו על מנת למנות את מספר המספרים האי זוגיים שהוגרלו על ידי האובייקט rnd.
המשתנה rnd_num המוגדר בשורה 7 ישמור את המספרים שהוגרלו אקראית על ידי rnd.
בכל איטרציה של הלולאה (שורה 8) נגדריל מספר אקראי (שורה 10) ונבדוק האם הוא זוגי או אי-זוגי (שורה 11),
במידה והוא אי-זוגי נגדיל את המשתנה counter ב-1 (שורה 13).
בכל משמש המשתנה counter כמונה.
פלט:
צובר נכתוב דוגמת קוד המריצה לולאה 100 פעמים, בכל איטראציה מוגרל מספר אקראי בין 1 ל-100, עם סיום הביצוע של הלולאה נדפיס את סכום המספרים הזוגיים שהוגרלו (AccumulatorSample):
ההתחלה מאוד דומה לתרגיל דוגמה הראשון: בשורה 5 מוגדר אובייקט מהמחלקה Random, נעשה שימוש באובייקט מהמחלקה הזו (rnd) על מנת להגריל מספרים אקראיים. בשורה 6 מוגדר המשתנה accumulator, המשתנה accumulatorמשמש כצובר , בהמשך נעזר בו על מנת לסכם (לצבור) את מספר המספרים הזוגיים שהוגרלו על ידי האובייקט rnd. המשתנה rnd_num המוגדר בשורה 7 ישמור את המספרים שהוגרלו אקראית על ידי rnd. בכל איטרציה של הלולאה (שורה 8) נגדריל מספר אקראי (שורה 10) ונבדוק האם הוא זוגי או אי-זוגי (שורה 11), במידה והוא זוגי נוסיף את ערכו לערך הקיים ממשתנה accumulator (שורה 13). בכך משמש המשתנה accumulatorכצובר.
פלט: מונה וצובר
לא מעט אלגוריתמים דורשים גם מונה וגם צובר, חישובי ממוצעים הם דוגמה קלאסית,
נכתוב דוגמת קוד המריצה לולאה 100 פעמים, בכל איטראציה מוגרל מספר אקראי בין 1 ל-100, עם סיום הביצוע של הלולאה נדפיס את הממוצע של כל המספרים הזוגיים שהוגרלו (CalcAverageSample):
תוכנית שמחשבת ממוצע זקוקה גם לצובר וגם למונה.
צובר - כי אנחנו צריכים ללסכם את סכום כל המספרים.
מונה - כי צריך לדעת כמה מספרים סיכמנו.
בתוכנית הדוגמה נחשב את הממוצע של כל המספרים הזוגיים שיוגרלו על ידי האובייקט rnd. בשורה 6 מוגדר המשתנה sum - המשתנה sum הוא צובר, במשתנה זה נסכם את סכום כל המספרים האקראיים שיוגרלו בשורה 11.
בנוסף, בשורה 15 נספור את מספר המספרים שסוכמו. בשורה 18 נחלק את הצובר במונה ונקבל את הממוצע.