b523db2bbea7098aeccea0f78f41f223
     
     
     
    
    
    
    
    
    
    
 
تقنية و أشياء أخرى
تقنية و أشياء أخرى
مختلف المقالات و النقاشات و الروابط المتعلقة بالتقنية او المواضيع العامة
27 - سلسلة تبسيط البرمجة – برنامج الحلقة غير المحدودة While
                         عربي     English

27 - سلسلة تبسيط البرمجة – برنامج الحلقة غير المحدودة While

   محمد جمال الذياب        08-02-2020  
   عبد الرحمن أحمد   
27 - سلسلة تبسيط البرمجة – برنامج الحلقة غير المحدودة While
السلام عليكم ورحمة الله وبركاته
بسم الله الرحمن الرحيم
لعل بعضكم تسائل منذ بداية البرامج هل يعقل أن أقوم بتنفيذ البرنامج في كل مرة ليحقق المطلوب
والجواب طبعا لا ولكن لكون الحل يكمن في الحلقات فأجلت الموضوع إلى حين شرح الحلقات غير المحدودة
في برنامجنا اليوم ستضاف ميزة للبرنامج أنه سيسأل المستخدم في حال رغبته بتكرار التنفيذ أو الخروج من البرنامج
على مبدأ Play Again
لنضع الكود أولا ثم نشرحه
 
Module Module1
Sub Main()
Dim Birthday As Date
Dim Choice As String = "y"
Do While Choice <> "n"
Console.Clear()
Console.WriteLine("Enter a birthday = ? | Note : format is dd/MM/yyyy , Example : 17/06/1982")
Birthday = Console.ReadLine()
Dim Age, Years, Monthes, Days As Double
Age = DateDiff("yyyy", Birthday, Date.Now)
Years = DateDiff("yyyy", Birthday, Date.Now)
Monthes = DateDiff("m", Birthday, Date.Now)
Days = DateDiff("d", Birthday, Date.Now)
Console.WriteLine("The age is :" & Age & " Years")
Console.WriteLine("The age in years is : " & Years)
Console.WriteLine("The age in monthes is : " & Monthes)
Console.WriteLine("The age in days is : " & Days)
Console.WriteLine()
Console.WriteLine("Tray again ? y = Yes or n = No")
Choice = Console.ReadLine(0)
Loop

End Sub
End Module


نلاحظ في هذا البرنامج عدة أشياء جديدة
أولها تعريف متحول من نوع جديد وهو النوع تاريخ Date وهذا النوع من المعطيات صمم ليتم التعامل مع قيم الوقت والتاريخ بصيغها المختلفة وذلك من أجل ضبط التعامل مع قيمه وفق قواعد التاريخ والوقت من مثل انحصار الأيام بين 1 و 31 بحسب الشهر وإن كانت السنة كبيسة
أو انحصار الشهور بين 1 و 12 وهكذا
كما عرفنا المتغير Choice لنحفظ فيه اختيار المستخدم في حال الرغبة بتكرار التنفيذ أو الخروج
يأتي بعد ذلك تعريف بلوك جديد وهو بلوك حلقة تكرارية غير محددة بحيث يعتمد تكرارها على تحقق شرط يتم فحصه في بداية الحلقة
وهذا الشرط هو مقارنة قيمة المتغير Choice مع الحرف n لكي نقرر هل سندخل في الحلقة مرة أخرى أم سنخرج خارجها ونخرج من البرنامج
في البداية ولكوننا نريد الدخول لأول مرة هيئنا قيمة المتحول بالخيار y لكي يتحقق الشرط ويدخل إلى جسم الحلقة
في داخل كتلة الحلقة قمنا بسؤال المستخدم أن يدخل تاريخ ميلاد ما وفق الصيغة التي حددناه له لضمان الحصول على نتائج صحيحة
ووضعنا مثال وهو إدخال الأيام بخانتين ثم شرطة مائلة ثم الأشهر كرقمين ثم شرطة مائلة ثم السنة كأربع أرقام
بعد أن يدخل المستخدم التاريخ يتم حفظه في المتغير Birthday
ولكونه من النوع تاريخ فسيقوم هو بمهمة تحويل السلسلة الرمزية المدخلة إلى تاريخ ولهذا في حال إدخال تاريخ بصيغة غير معروفة أو رموز عشوائية فسيتولد خطأ ويتوقف البرنامج عند هذا السطر لعدم إمكانية تحويل المدخل إلى تاريخ حقيقي
بعد أن تحفظ قيمة التاريخ نقوم باستدعاء دالة معرفة مسبقا وهي Datediff بحيث تأخذ عدة بارمترات وتعيد لنا الفرق وفق الوحدة التي حددناها له
حيث مررنا بالبارمتر الأول الوحدة yyyy ونعني أننا نريد أن يعيد لنا الفرق بالسنين
ثم أدخلنا التاريخ الأقدم وهو التاريخ الذي أدخلناه ثم بالبارمتر الثالث أدخلنا تاريخ اليوم والذي يؤمنه خاصية تابعة للصنف Date وهي الخاصية Now حيث تحوي دائما تاريخ اللحظة الحالية
ثم نحفظ القيمة العائدة من دالة الفرق ونضعها في المتغير Age أي العمر
كما استدعينا نفس دالة الفرق ولكن مع تغيير الوحدة فمرة سنوات ومرة أشهر ومرة أيام
وحفظناها في متحولات ثم عرضنا الجميع على الشاشة
بعد ذلك نسأل المستخدم عن رغبته في إعادة المحاولة من أجل تاريخ جديد أو الخروج
فإن أدخل الحرف n أي أنه لا يرغب بالإعادة فإنه سينتقل التنفيذ إلى الأعلى كتلة الحلقة ويتم التحقق من الشرط ولكونه غير محقق فسيقفز إلى ما بعد Loop خارجا من كتلة الحلقة ومن ثم الخروج من البرنامج
أما في حال إدخال الرمز y أو أي رمز آخر فسيكون شرط الحلقة متحقق ويدخل مرة أخرى لجسم الحلقة ويمسح الشاشة وينفذ من جديد
وهكذا
الواجب :
البرنامج يخرج في حال تم إدخال الحرف n وما عداه سيبقى يعيد التنفيذ
نريد أن نعكس الأمر أي نجعله يعيد فقط في حال إدخال الرمز y وما عداه يخرج في حال إدخال أي رمز آخر
دمتم سالمين
التعليقات
   yousser - يوسف تمزيت   
تطبيق عملي رائع، حساب عمرك بالسنوات والشهور والأيام
معذرة على التأخر في الواجب وذلك لسببين:
1- هذه المرة لم أفهم الكود جيدا (كان عليك منذ البداية إخبارنا بعمل البرنامج المخرج)
2- كنت أبحث عن طريقة لتنفيذ نفس البرنامج على البايثون (فأنا جديد في هذه اللغة لذا لا أعرف كيف التعامل بالتواريخ في البايثون)
عل أي هذا هو الواجب، أتمنى أن يكون صحيحا
 
Module Module1
Sub Main()
Dim birthday As Date
Dim choise As String = "y"
Do While choise = "y"
Console.Clear()
Console.Write("entrer a birthday = ? | Note: format is dd/mm/yyyy, example 17/06/1982")
Console.WriteLine()
birthday = Console.ReadLine()
Dim age, years, monthes, days As Double
age = DateDiff("yyyy", birthday, Date.Now)
years = DateDiff("yyyy", birthday, Date.Now)
monthes = DateDiff("m", birthday, Date.Now)
days = DateDiff("d", birthday, Date.Now)
Console.WriteLine("the age is:" & age & "years")
Console.WriteLine("the age in years is: " & years & "years")
Console.WriteLine("the age in monthes is: " & monthes & "monthes")
Console.WriteLine("the age in days is: " & days & "days")

Console.WriteLine("do you try again ? y=yes")
choise = Console.ReadLine()

Loop
End Sub
End Module

   yousser - يوسف تمزيت   
كما لدي سؤال
في آخر سطور البرنامج كتبت
 
Choice = Console.ReadLine(0)


لماذا وضعت القيمة صفر بين القوسين؟ ما الفائدة منها ؟
   عبد الرحمن أحمد   
بما أننا نريد قيمة مرتجعة لنضعها في المتغير Choice
لذا بإمكاننا أن نعيد رمز واحد بدلا من سطر كامل
والرقم يحدد أي حرف نريد
وهنا حددت له أول رمز بحث لو أضاف فراغ أو أكثر من حرف يتجاهل البقية ويأخذ الأول فقط
ولو أردت الحرف الثاني فيجب وضع 1 وهكذا لأن الموقع يبدأ من الصفر
   yousser - يوسف تمزيت   
نعم فهمت
   MaherAz   
مقدمة السلسلة
https://io.hsoub.com/programming/5218
الدرس السابق 26
https://io.hsoub.com/programming/6978
الدرس التالي 28
https://io.hsoub.com/programming/7058
  الموضوع و التعليقات و باقي البيانات في هذه الصفحة منقولة و معدلة من المصدر على الرابط التالي : https://io.hsoub.com/programming/7009
  هذا الموضوع مرخص تحت : رخصة المشاع الإبداعي BY-SA
المشاركة :
تويتر
فيسبوك
الإيميل
لينكد إن
واتساب
الرابط

ما هي محاسن ومساويء العمل الحر بنظام الساعة في كل شيء ؟ (طرح للنقاش) ما هي محاسن ومساويء العمل الحر بنظام الساعة في كل شيء ؟ (طرح للنقاش)
رغبتي المجنونة في أن أكون لكل شيء رغبتي المجنونة في أن أكون لكل شيء
فيرفكس 30 جاهز للتحميل فيرفكس 30 جاهز للتحميل
حسوب يحذو حذو مواقع التواصل الإجتماعي!؟ حسوب يحذو حذو مواقع التواصل الإجتماعي!؟
الجزء الاول : تطبيقات اندرويد مفتوحة المصدر الجزء الاول : تطبيقات اندرويد مفتوحة المصدر
شخصيتي ضعيفة ولا أستطيع مواجهة أي أحد، فما الحل ؟ شخصيتي ضعيفة ولا أستطيع مواجهة أي أحد، فما الحل ؟
هل نحتاج موقع reddit للمجتمع العربي ؟ هل نحتاج موقع reddit للمجتمع العربي ؟

الروابط المختصرة    سياسة الخصوصية    شروط الإستخدام    من أنا    من نحن    الأسئلة الشائعة    موضوع عشوائي    اتصل بنا   
                           
Developed by : MJ7.org