כל הפוסטים

מדריך: איך ליצור מחשבון בC#?

היום נלמד איך ליצור תכנית בסיסית וראשונית בהחלט בC# לאחר הפוסט הזה יהיו לכם מספיק כלים להתמודד עם שאר הלימוד הבסיסי בעצמכם. פיתוח תוכנה הוא מקצוע שדורש הרבה השקעה ולמידה עצמית. הע

מדריך: איך ליצור מחשבון בC#?

היום נלמד איך ליצור תכנית בסיסית וראשונית בהחלט בC#

לאחר הפוסט הזה יהיו לכם מספיק כלים להתמודד עם שאר הלימוד הבסיסי בעצמכם.

פיתוח תוכנה הוא מקצוע שדורש הרבה השקעה ולמידה עצמית.

העצה הכי טובה שלי אליכם: למדו כדי לעשות ולא כדי ללמוד

כאשר אנחנו נכנסים ללימוד של נושא על מנת להשיג תוצר מוגמר, הלימוד יהיה הרבה יותר מהנה וסוחף מאשר אם סתם נחליט יום אחד - “אני רוצה ללמוד C#”. בדרך כלל, הדרך מתסכלת מאוד כשאין מטרה.

בחרו את הפרויקט הראשוני שלכם.

הוא יכול להיות מחשבון, משחק איקס עיגול, שאלון טריוויה או כל דבר שעולה על דעתכם.

דרישות קדם: היכרות בסיסית עם עולם התכנות (משתנים, תנאים, לולאות ומתודות)

איך ליצור מחשבון בC#?

1. תחילה נפתח את Visual Stusio 2017

2. ניצור פרויקט חדש מסוג Console Application וניתן לו את השם Calculator נלחץ על New > Project



נבחר ב Console App .NET Framework, ניתן שם לאפליקציה שלנו ונלחץ על OK

3. העתיקו את הקוד הזה לקובץ Program בפרויקט החדש שפתחתם:

לא לדאוג, מיד תקבלו הסבר על כל שורה שכתובה.

using System;
using System.Linq;

namespace Calculator
{
    class Program
    {
        private static readonly string[] operations = { "+", "-", "*", "/" };
        static void Main(string[] args)
        {

            bool KeepOn = true;
            while (KeepOn)
            {
                double result = 0;
                double firstNumber = SetNumber("Type you first number : ");
                double secondNumber = SetNumber("Type you second number: ");

                string stringOperation =
                    SetOperation(
                        "Enter the operation + (addition), - (subtraction), * (multiplication), / (division) :");

                switch (stringOperation)
                {
                    case "+":
                    case "addition":
                        result = firstNumber + secondNumber;
                        break;
                    case "-":
                    case "soustraction":
                        result = firstNumber - secondNumber;
                        break;
                    case "*":
                    case "multiplication":
                        result = firstNumber * secondNumber;
                        break;
                    case "/":
                    case "division":
                        result = firstNumber / secondNumber;
                        break;
                }
                Console.WriteLine("Result of {0} {1} {2} = {3}", firstNumber, stringOperation, secondNumber, result);
                Console.WriteLine("Continue?[Y/N]");
                KeepOn = Console.ReadKey().Key == ConsoleKey.Y;
                Console.Clear();
            }

        }

        private static double SetNumber(string outputText)
        {
            double parse;
            Console.Write(outputText);
            string tempInput = Console.ReadLine();
            while (!double.TryParse(tempInput, out parse))
            {
                Console.WriteLine("Incorrect input !");
                Console.Write(outputText);
                tempInput = Console.ReadLine();
            }
            return double.Parse(tempInput);
        }

        private static bool IsValidOperation(string input)
        {
            return operations.Contains(input);
        }

        private static string SetOperation(string outputText)
        {
            Console.Write(outputText);
            string tempInput = Console.ReadLine();
            while (!IsValidOperation(tempInput))
            {
                Console.WriteLine("Incorrect input !");
                Console.Write(outputText);
                tempInput = Console.ReadLine();
            }
            return tempInput;
        }
    }
}

הסבר על הקוד:

using System;

using System.Linq;

שימוש ספריות וטיפוסים אשר נמצאים ב namespace אחר (לאחר ייבוא ה Reference)

namespace Calculator

הגדרת הnamespace

{

class Program

הגדרת המחלקה

{

    private static readonly string[] operations = { "+", "-", "\*", "/" };

הגדרת מערך אשר יכיל את כל הפעולות החשבוניות שנרצה שהמחשבון שלנו יהיה מסוגל לבצע

שימו לב: המערך יוגדר מחוץ לMain והגדרתו תכלול 3 מילות מפתח;

private: הגדרת המשתנה לשימוש רק ברמת המחלקה שלנו

static: יהיה קיים רק מופע אחד של המשתנה, לא יהיה ניתן לאתחל אותו מאובייקטים שונים

readonly: לא ניתן יהיה לשנות את ערכו של המשתנה לאחר הגדרתו

    static void Main(string[] args)

הגדרת הפונקציה הראשית של האפליקציה

    {
        bool KeepOn = true;

השמת משתנה bool אשר יכיל מידע על האם נרצה להמשיך

        while (KeepOn)

הגדרת לולאה אשר תרוץ כל עוד המשתמש ירצה להמשיך (ערך הbool יהיה true)

        {
            double result = 0;

הגדרת משתנה בו יושם ערך תוצאת החישוב

            double firstNumber = SetNumber("Type you first number : ");
            double secondNumber = SetNumber("Type you second number: ");

קריאה למתודה SetNumber עם ההודעה שנרצה להציג למשתמש כפרמטר, והשמת הערך שיוחזר מהפונקציה במשתנים firstNumber ו secondNumber (משתנים אשר ייצגו את המספרים עליהם נבצע פעולות חשבוניות)

            string stringOperation =
                SetOperation(
                    "Enter the operation + (addition), - (subtraction), \* (multiplication), / (division) :");

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

            switch (stringOperation)

התחלת בלוק Switch בתוכו תנוהל בחירת המשתמש. נבדוק את ערך הקלט stringOperation ונבצע פעולה מתאימה

            {
                case "+":
                case "addition":
                    result = firstNumber + secondNumber;

מקרה חיבור

                    break;
                case "-":
                case "subtraction":
                    result = firstNumber - secondNumber;

מקרה חיסור

                    break;
                case "\*":
                case "multiplication":
                    result = firstNumber \* secondNumber;

מקרה כפל

                    break;
                case "/":
                case "division":
                    result = firstNumber / secondNumber;

מקרה חילוק

                    break;
            }
            Console.WriteLine("Result of {0} {1} {2} = {3}", firstNumber, stringOperation, secondNumber, result);

הצגת התוצאה שהתקבלה

            Console.WriteLine("Continue?[Y/N]");

תשאול המשתמש האם ירצה להמשיך לבצע פעולות חשבון או לצאת מהאפליקציה

            KeepOn = Console.ReadKey().Key == ConsoleKey.Y;

קבלת קלט עבור המשתנה KeepOn, אם המשתמש יקיש על המקש Y המחשבון ימשיך לפעול

            Console.Clear();

פקודה אשר תנקה את חלון החשבון

        }
    }
    private static double SetNumber(string outputText)

הגדרת מתודה לקבלת מספר אשר מקבלת כפרמטר הודעה להציג למשתמש.

שים לב, המתודה היא private ו static (מהסיבות שהוזכרו קודם)

    {
        double parse;

משתנה אשר יכיל את המספר הנקלט לאחר המרתו לטיפוס double

        Console.Write(outputText);

הדפסת ההודעה למשתמש

        string tempInput = Console.ReadLine();

השמת הקלט בתוך משתנה מטיפוס string בשם tempInput

        while (!double.TryParse(tempInput, out parse))

הגדרת לולאה שתרוץ כל עוד המשתנה שקלטנו (אשר נקלט כstring) לא יהיה בר המרה לטיפוס double

        {

כניסה לבלוק הלולאה אם התנאי מתקיים

            Console.WriteLine("Incorrect input !");

הדפסה שהקלט שהוכנס שגוי

            Console.Write(outputText);

הדפסת הודעת בקשת הקליטה שוב

            tempInput = Console.ReadLine();

קבלת קלט

        }

יציאה מבלוק הלולאה

        return double.Parse(tempInput);

במידה והstring שהתקבל מצליח להיות מומר לטיפוס double נחזיר את הdouble שהמרנו למשתמש

    }
    private static bool IsValidOperation(string input)

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

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

    {
        return operations.Contains(input);

בדיקה אם הקלט נמצא במערך באמצעות הפעלת הפעולה Contains על המערך

    }
    private static string SetOperation(string outputText)

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

שים לב, המתודה היא private ו static (מהסיבות שהוזכרו קודם)

    {
        Console.Write(outputText);

הצגת ההודעה למשתמש

        string tempInput = Console.ReadLine();

קבלת הקלט מהמשתמש אל תוך משתנה tempInput מטיפוס string

        while (!IsValidOperation(tempInput))

הגדרת לולאת while אשר תרוץ כל עוד המשתמש לא יכניס קלט של פעולת חשבון תקינה

        {

תחילת בלוק הלולאה

            Console.WriteLine("Incorrect input !");

הצגת הודעה למשתמש שהקלט שהכניס שגוי

            Console.Write(outputText);

הצגת ההודעה שקיבלנו כפרמטר למשתמש (שוב)

            tempInput = Console.ReadLine();

קבלת הקלט

        }

סגירת בלוק הלולאה

        return tempInput;

החזרת הפעולה החשבונית לאחר הבדיקה

    }
}

}

עכשיו לאחר שסיימנו לכתוב ולהבין את התכנית שלנו כל מה שנשאר לעשות זה רק להריץ באמצעות לחיצה על F5

אם זוהי תכנית ה C# הראשונה שלכם, עשיתם היום צעד ענק ביכולותיכם ומכאן תוכלו להמשיך וללמוד את שאר הבסיס בעצמכם.

החלטתי לתת לכם כמה מקורות מידע שעזרו לי מאוד בתחילת דרכי כמתכנת:

  1. http://webmaster.org.il/articles/csharp

  2. https://www.tutorialspoint.com/csharp/

  3. https://www.youtube.com/watch?v=pSiIHe2uZ2w

  4. https://www.dotnetperls.com/

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

בפוסטים הבאים ניכנס לעולם הבדיקות האוטומטיות והתכנות המתקדם.

הישארו איתי :)