تعلم كيفية البرمجة ب #C


الدرس: قراءة لوحة المفاتيح في وحدة التحكم


الصفحة السابقة
لقد كتبنا الكثير منها  Console.WriteLine() ، والآن حان وقت القراءة. في هذه الحالة ، يجب أن تكون قادرًا على استرداد ما أدخله المستخدم على لوحة المفاتيح. 
في الواقع ، البرنامج الذي لا يوجد لديه تفاعل مع المستخدم ليس مثيرًا للاهتمام حقًا. يمكنك أن تتخيل لعبة حيث نشاهد فقط؟ يطلق عليه فيديو ، إنه ممتع للغاية ، لكنه ليس كذلك!
اليوم ، هناك العديد من واجهات الاتصالات التي يمكن استخدامها على الكمبيوتر (لوحة المفاتيح والماوس والأصابع أجهزة التوجيه، إلخ). سنبحث في هذا الفصل في كيفية معرفة ما كتبه المستخدم على لوحة المفاتيح في تطبيق وحدة التحكم.

قراءة جملة


عندما نعطيها الفرصة ، سيكون مستخدم برنامجنا قادرًا على إدخال الأشياء باستخدام لوحة المفاتيح الخاصة به. يمكننا أن نسأله عن عمره ، إذا كان يريد إنهاء طلبنا ، والسماح له بإدخال بريد إلكتروني ، إلخ.
لذلك نحن بحاجة إلى طريقة لإدخال الحروف عن طريق الكتابة على لوحة المفاتيح. يمكننا القيام بذلك باستخدام الطريقة Console.ReadLine :

string saisie = Console.ReadLine();
عندما يواجه تطبيقنا هذه التعليمات ، يتوقف مؤقتًا وينتظر إدخالها من المستخدم. يتوقف الإدخال عندما يتحقق المستخدم من صحة ما كتبه مع المفتاح enter . لذلك التعليمات التالية:

Console.WriteLine("Veuillez saisir une phrase et valider avec la touche \"Entrée\"");
string saisie = Console.ReadLine();
Console.WriteLine("Vous avez saisi : " + saisie); 
سوف تنتج:
c sharp .net framework
ستلاحظ أننا نقوم بتخزين نتيجة الإدخال في متغير سلسلة الكتابة. غالبًا ما يكون النوع الوحيد الذي سيكون تحت تصرفنا أثناء إدخال المستخدم. هذا بالطبع يعني أنه إذا كنت بحاجة إلى معالجة عمر الشخص ، فسوف يتعين تحويله إلى عدد. مثلا :

bool ageIsValid = false;
int age = -1;
while (!ageIsValid)
{
    Console.WriteLine("Veuillez saisir votre age");
    string saisie = Console.ReadLine();
    if (int.TryParse(saisie, out age))
        ageIsValid = true;
    else
    {
        ageIsValid = false;
        Console.WriteLine("L'age que vous avez saisi est incorrect ...");
    }
}
Console.WriteLine("Votre âge est de : " + age); 
وسيكون لدينا:
c sharp .net framework
من السهل فهم هذا الكود الآن بعد أن أتقنت الحلقات والشروط.
نبدأ من خلال تهيئة المتغيرات لدينا. ثم نطلب من المستخدم إدخال سنه. نحاول تحويله إلى عدد صحيح ، إذا نجح ، يمكننا المضي قدمًا ، وإلا ، طالما أن العمر غير صالح ، فإننا نبدأ الحلقة مرة أخرى.
من الضروري أن تتحقق دائمًا من ما يدخله المستخدم ، وهذا سيوفر لك الكثير من الأخطاء وتعطل التطبيق الخاص بك في وقت غير مناسب. كثيرا ما يقال أنه في تكنولوجيا المعلومات ، يجب أن لا تثق في المستخدم.

قراءة حرف


قد يحدث أننا بحاجة إلى إدخال حرف واحد فقط ، لذلك سنتمكن من استخدام الطريقة Console.ReadKey() .
يمكننا استخدامه على سبيل المثال لأخذ استراحة في تطبيقنا. تتطلب التعليمة البرمجية التالية انتباه المستخدم قبل بدء عملية حسابية مهمة للغاية:

Console.WriteLine("Veuillez appuyer sur une touche pour démarrer le calcul ...");
Console.ReadKey(true);
int somme = 0;
for (int i = 0; i < 100; i++)
{
    somme += i;
}
Console.WriteLine(somme); 
والتي سوف تعطينا:
c sharp .net framework
لاحظ أننا مرّرنا true كمُدخل للوظيفة للإشارة إلى C# أننا لا نريد أن يظهر إدخالنا على الشاشة. إذا كان المُدخل false و انا قد ضغطت على سبيل المثال ،  hلبدء الحساب ، فستكون النتيجة مسبوقة بـ "h" ...
الى جانب ذلك ، كيف يمكنك معرفة أي مفتاح تم إدخاله؟
يكفي مراقبة محتوى المتغير الذي تم إرجاعه بواسطة الطريقة Console.ReadKey . في هذه الحالة ، تقوم بإرجاع متغير من النوع ConsoleKeyInfo . يمكننا مقارنة قيمة "المفتاح" لهذا المتغير وهو تعداد من النوع ConsoleKey . مثلا :

Console.WriteLine("Voulez-vous continuer (O/N) ?");
ConsoleKeyInfo saisie = Console.ReadKey(true);
if (saisie.Key == ConsoleKey.O)
{
    Console.WriteLine("On continue ...");
}
else
{
    Console.WriteLine("On s'arrête ...");
} 
نلاحظ بفضل الإكمال التلقائي أن التعداد ConsoleKey له القيمة الكاملة:
c sharp .net framework
لذلك نحن نقارن القيمة  ConsoleKey.O التي تمثل المفتاح o .
لاحظ أن النوع " ConsoleKeyInfo" هو ما يسمى البنية و Key خاصية للهيكل. سنعود إلى ما يعنيه هذا حقًا في درس مستقبلي. الآن ، فقط ضع في اعتبارك أنه متغير متقدم يسمح لاحتواء العديد من الأشياء ...

في الخلاصة


  • Console.ReadLine تتيح لنا الطريقة قراءة المعلومات التي أدخلها المستخدم على لوحة المفاتيح.
  • من الممكن قراءة جملة كاملة تنتهي بالمفتاح  Enter أو بحرف واحد فقط.