מדריך: איך ליצור מחשבון בC#?
היום נלמד איך ליצור תכנית בסיסית וראשונית בהחלט בC#
לאחר הפוסט הזה יהיו לכם מספיק כלים להתמודד עם שאר הלימוד הבסיסי בעצמכם.
פיתוח תוכנה הוא מקצוע שדורש הרבה השקעה ולמידה עצמית.
העצה הכי טובה שלי אליכם: למדו כדי לעשות ולא כדי ללמוד
כאשר אנחנו נכנסים ללימוד של נושא על מנת להשיג תוצר מוגמר, הלימוד יהיה הרבה יותר מהנה וסוחף מאשר אם סתם נחליט יום אחד - "אני רוצה ללמוד C#". בדרך כלל, הדרך מתסכלת מאוד כשאין מטרה.
בחרו את הפרויקט הראשוני שלכם.
הוא יכול להיות מחשבון, משחק איקס עיגול, שאלון טריוויה או כל דבר שעולה על דעתכם.
דרישות קדם: היכרות בסיסית עם עולם התכנות (משתנים, תנאים, לולאות ומתודות)
איך ליצור מחשבון בC#?
1. תחילה נפתח את Visual Stusio 2017
2. ניצור פרויקט חדש מסוג Console Application וניתן לו את השם Calculator
נלחץ על New > Project
נלחץ על New > Project
s
.
3. העתיקו את הקוד הזה לקובץ Program בפרויקט החדש שפתחתם:
לא לדאוג, מיד תקבלו הסבר על כל שורה שכתובה.
הסבר על הקוד:
using System;
using System.Linq;
namespace Calculator
הגדרת הnamespace
{
class Program
הגדרת המחלקה
{
private static readonly string[] operations = { "+", "-", "*", "/" };
הגדרת מערך אשר יכיל את כל הפעולות החשבוניות שנרצה שהמחשבון שלנו יהיה מסוגל לבצע
שימו לב: המערך יוגדר מחוץ לMain והגדרתו תכלול 3 מילות מפתח;
private: הגדרת המשתנה לשימוש רק ברמת המחלקה שלנו
static: יהיה קיים רק מופע אחד של המשתנה, לא יהיה ניתן לאתחל אותו מאובייקטים שונים
readonly: לא ניתן יהיה לשנות את ערכו של המשתנה לאחר הגדרתו
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 "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;
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;
}
}
bool KeepOn = true;
השמת משתנה bool אשר יכיל מידע על האם נרצה להמשיך
הגדרת לולאה אשר תרוץ כל עוד המשתמש ירצה להמשיך (ערך הbool יהיה true)
double result = 0;
הגדרת משתנה בו יושם ערך תוצאת החישוב
double secondNumber = SetNumber("Type you second number: ");
קריאה למתודה SetNumber עם ההודעה שנרצה להציג למשתמש כפרמטר, והשמת הערך שיוחזר מהפונקציה במשתנים firstNumber ו secondNumber (משתנים אשר ייצגו את המספרים עליהם נבצע פעולות חשבוניות)
SetOperation(
"Enter the operation + (addition), - (subtraction), * (multiplication), / (division) :");
קריאה למתודה SetOperation עם ההודעה שנרצה להציג למשתמש כפרמטר, והשמת הערך שיוחזר מהפונקציה במשתנה stringOperation (משתנה אשר יכיל את פעולת החשבון הנבחרת)
switch (stringOperation)
התחלת בלוק Switch בתוכו תנוהל בחירת המשתמש. נבדוק את ערך הקלט stringOperation ונבצע פעולה מתאימה
case "+":
case "addition":
result = firstNumber + secondNumber;
מקרה חיבור
case "-":
case "subtraction":
result = firstNumber - secondNumber;
מקרה חיסור
case "*":
case "multiplication":
result = firstNumber * secondNumber;
מקרה כפל
case "/":
case "division":
result = firstNumber / secondNumber;
מקרה חילוק
}
Console.WriteLine("Result of {0} {1} {2} = {3}", firstNumber, stringOperation, secondNumber, result);
הצגת התוצאה שהתקבלה
תשאול המשתמש האם ירצה להמשיך לבצע פעולות חשבון או לצאת מהאפליקציה
קבלת קלט עבור המשתנה KeepOn, אם המשתמש יקיש על המקש Y המחשבון ימשיך לפעול
פקודה אשר תנקה את חלון החשבון
}
private static double SetNumber(string outputText)
הגדרת מתודה לקבלת מספר אשר מקבלת כפרמטר הודעה להציג למשתמש.
שים לב, המתודה היא private ו static (מהסיבות שהוזכרו קודם)
double parse;
משתנה אשר יכיל את המספר הנקלט לאחר המרתו לטיפוס double
הדפסת ההודעה למשתמש
השמת הקלט בתוך משתנה מטיפוס string בשם tempInput
הגדרת לולאה שתרוץ כל עוד המשתנה שקלטנו (אשר נקלט כstring) לא יהיה בר המרה לטיפוס double
כניסה לבלוק הלולאה אם התנאי מתקיים
הדפסה שהקלט שהוכנס שגוי
הדפסת הודעת בקשת הקליטה שוב
קבלת קלט
יציאה מבלוק הלולאה
במידה וה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);
הצגת ההודעה למשתמש
קבלת הקלט מהמשתמש אל תוך משתנה tempInput מטיפוס string
הגדרת לולאת while אשר תרוץ כל עוד המשתמש לא יכניס קלט של פעולת חשבון תקינה
{
תחילת בלוק הלולאה
הצגת הודעה למשתמש שהקלט שהכניס שגוי
הצגת ההודעה שקיבלנו כפרמטר למשתמש (שוב)
tempInput = Console.ReadLine();
קבלת הקלט
סגירת בלוק הלולאה
החזרת הפעולה החשבונית לאחר הבדיקה
}}
}
עכשיו לאחר שסיימנו לכתוב ולהבין את התכנית שלנו כל מה שנשאר לעשות זה רק להריץ באמצעות לחיצה על F5
אם זוהי תכנית ה C# הראשונה שלכם, עשיתם היום צעד ענק ביכולותיכם ומכאן תוכלו להמשיך וללמוד את שאר הבסיס בעצמכם.
החלטתי לתת לכם כמה מקורות מידע שעזרו לי מאוד בתחילת דרכי כמתכנת:
האתרים הללו יכללו את כל הבסיס שתצטרכו על מנת להתקדם וללמוד להיות מפתחי אוטומציה מצוינים.
בפוסטים הבאים ניכנס לעולם הבדיקות האוטומטיות והתכנות המתקדם.
הישארו איתי :)
עזר לי מאוד!
השבמחקעוזר להבין קונספטים שנראים מאוד מסובכים בהתחלה