מהו קלט מהמשתמש ולמה הוא חשוב?

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

וידוא תקינות של קלט משתמש

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

הפונקציה ReadLine

כדי לקבל קלט משתמש, נשתמש בפונקציה
console.ReadLine()
 
הרעיון של הפונקציה הוא שהיא תקבל מספר כלשהו של תווים מהמשתמש, ותסתיים רק כאשר המשתמש ילחץ על Enter, כי זהו הסימן של שורה חדשה ולכן אפשר לומר שהפונקציה הזו מקבלת שורה של קלט.
הפונקציה מחזירה string שכולל בתוכו את מה שהמשתמש הזין.
 

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

תוכנית שמבקשת קלט מהמשתמש ומחזירה לו את הקלט שהוזן:
 
void Main(String[] args)
{
Console.WriteLine("Please enter a string");
string input = Console.ReadLine();
Console.WriteLine("Your input was " + input);
}
 
תוכנית שמבקשת מהמשתמש את שמו ואת גילו, ומחזירה את שמו ואת גילו בשנה הבאה:
 
static void Main(string[] args)
{
    Console.WriteLine("Please enter your name:");
    string userName = Console.ReadLine();
    Console.WriteLine("Please enter your age:");
    string userAge = Console.ReadLine();
    int age = Convert.ToInt32(userAge);
    Console.WriteLine("Your name is " + userName + " And your age is " + age + ". Next year you will be " + (age+1));
}
 
שימו לב שבתוכנית זו השתמשנו ב- Convert.ToInt32 כדי להמיר את קלט המשתמש, שהתקבל כ- string, למספר מסוג int. אם המשתמש הזין ערך שלא ניתן להפוך למספר התוכנית תזרוק Exception ובהמשך נלמד כיצד להתמודד עם מקרים כאלו.
 
תוכנית שמבקשת מהמשתמש שני מספרים ומציגה את הסכום, ההפרש, המכפלה והמנה:
 
static void Main(string[] args)
{
    Console.WriteLine("Please enter the first number:");
    string num1Str = Console.ReadLine();
Console.WriteLine("Please enter the second number:");
    string num2Str = Console.ReadLine();
    
int num1 = Convert.ToInt32(num1Str);
int num2 = Convert.ToInt32(num2Str);

Console.WriteLine(num1 + " + " + num2 + " = " + (num1 + num2));
Console.WriteLine(num1 + " - " + num2 + " = " + (num1 - num2));
Console.WriteLine(num1 + " * " + num2 + " = " + (num1 * num2));
Console.WriteLine(num1 + " / " + num2 + " = " + (num1 / num2));
}