|
برامج رياضيه
|
|
02-07-2010, 02:28 AM
(اخر تعديل لهذه المشاركة : 02-07-2010 02:35 AM بواسطة مصطفى الشريف.)
مشاركات: #1
|
|||
|
|||
|
برامج رياضيه
السلام عليكم لن تصدق كم الاخطاء التي ستقابلك عند محاوله كتابه برنامج يقوم بحساب معادله بسيطه... والسبب في هذه الاخطاء هو ليس عدم معرفتك بصيغه الكود او ال syntax او مبادئ اللغه التي تستخدمها في كتابه الكود.. ولكن السبب هو الاهمال في تعلم الجزئ الخاص بأنواع البيانات وكيفيه التحويل ينها.!!! على العموم البرامج التي سنضعها هنا هي للتدريب على هذا الجزئ. والتي بأذن الله سترفع مستواك بشكل كبير في هذ المفهوم الهام على شرط الفهم التام لكل سطر من الكود نبتدي ببرنامج لحساب الدفعه الشهريه -لمبلغ قرض معلوم -معدل فائده معلوم -مده قرض او اجل استحقاق محدد ![]() بغض النظر عن طريقه حساب الدفعه يدوياً المفروض ان الاخوه خريجي تجاره دمنهور (وانا منهم) يكونوا حافضين المعادله اما الساده الباش مهندسين فسيتخدموا الدوال الجاهزه ![]() ![]() ![]() ![]() لتحميل البرنامج LoanCalc.rar البرنامج يعتمد على داله جاهزه تقوم بحساب الدفعه الشهريه اسمها ()Pmt بالبحث عنها في ال MSDN نجد المعلومات التاليه اولاً الصيغه العامه كود: Function Pmt( _ثانياً المعاملات Parameters Rate Required. Double specifies the interest rate per period. For example, if you get a car loan at an annual percentage rate (APR) of 10 percent and make monthly payments, the rate per period is 0.1/12, or 0.0083. معدل الفائده نوع double NPer Required. Double specifies the total number of payment periods in the annuity. For example, if you make monthly payments on a four-year car loan, your loan has a total of 4 × 12 (or 48) payment periods. مده القرض بالاشهر نوع double PV Required. Double specifies the present value (or lump sum) that a series of payments to be paid in the future is worth now. For example, when you borrow money to buy a car, the loan amount is the present value to the lender of the monthly car payments you will make. قيمه القرض نوع double FV Optional. Double specifying future value or cash balance you want after you have made the final payment. For example, the future value of a loan is $0 because that is its value after the final payment. However, if you want to save $50,000 during 18 years for your child's education, then $50,000 is the future value. If omitted, 0 is assumed. القيمه المستقبليه وهي اختياريه من النوع double Due Optional. Object of type DueDate Enumeration that specifies when payments are due. This argument must be either DueDate.EndOfPeriod if payments are due at the end of the payment period, or DueDate.BegOfPeriod if payments are due at the beginning of the period. If omitted, DueDate.EndOfPeriod is assumed. استحقاق الفائده يعني يتم الدفع مقدماً او مؤخر الكود الخاص بحساب الدفعه PHP كود: Dim Payment As Doubleاولاً التعريفات كود: Dim Payment As Doubleفي الكود السابق قمت بتعريف المعاملات حسب ذكر انواعهم في ال MSDN فيما عدا مبلغ القرض عرفته رقم صحيح Integer حيث انه من المستبعد ان يقترض شخص 1000 و 0.5 جني كذلك عرفت مده القرض كرقم صحيح. ثانياً استدعاء الداله كود: Tryبما ان المدخلات ستكون من التكستات بالفورمه فان انواعها ستكون STRING و بالتالي وجب تحويل الانواع كلاً على حسب التعريف يعني مثلاً في الكود التالي كود: LoanVal = CInt(TextBox1.Text)قمت بتحويل القيمه في مربع النص الى قيمه رقميه صحيحه (ارجوا الرجوع الى الدرس الخاص بتحويل انواع البيانات) الكود التالي مقتبس: InterRate = 0.01 * Convert.ToDouble(TextBox2.Text) / 12 لتحويل معدل الفائده من ارقام مثل 14 الي القيمه المؤيه يعني 0.14 ثم قسمتها على 12 كود: If CheckBox1.Checked Thenالكود السابق يقوم بتحديد المتغير payEarly الى DueDate.BegOfPeriod او DueDate.EndOfPeriod. كود: Payment = Pmt(InterRate, LoanDuration, -LoanVal, 0, payEarly)الكود السابق يقوم باستدعاء الداله و تمرير المدخلات لها ثم في السطر الثاني يقوم بعرض ناتج الداله لاحظ تنسيق طريقه العرض حيث ان المخرجات تكون كبيره جداً من النوع Double لذا استخدمت طريقه التنسيق. [b]=============================================== [/b]لو حملت المثال ستجد الكود فيه بعض الزيادات و الغرض منها هو تصحيح الاخطاء وتنقيح المدخلات يعني مثلاً في حاله ادخال المستخدم حروف في التكستات او رموز عنده سيفشل تحويل الانواع من String الى Integer .... يعني مثلاً الاجراء التالي PHP كود: Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPressحيث لا يقبل اي ادخال لا يعرف على انه رقم ( Not Char.IsDigit(e.KeyChar كذلك يقبل الادخال ذو الكود Chr(8) يعني زر ال Back space او المسح. لكن الكود فيه مشكله حقيقيه حيث يتم تعريف المدخلات على انها Integer والجدير بالذكر ان هذا النوع اقصى قيمه له هي 2,147,483,647 يعني لو حاول المستخدم حساب الدفعات الشهريه لمبلغ الدين الخارجي المستحق على جمهوريه مصر العربيه الشعبيه...!!!!!!!!!! او اي قيمه اكبر من 2,147,483,647 مثل 2,147,483,6470 سيحدث خطأ OverFlow لذلك الكود التالي فائدته هو التحق من ان ادخال المستخدم لم يتعدى الحد المسموح PHP كود: If CDbl(TextBox1.Text) > Int32.MaxValue Thenحيث يقارن الكود بين قيمه التكست بوكس و اكبر قيمه في النوع Integer الاخوه اللي بيبرمجوا بال #C لن يستطيعوا الوصول لفضاء الاسماء Financial لانه مقتصر على الفيجوال بيسك لذلك قم باستيراد اسم Microsoft.VisualBasic اولاً كالتالي ;using Microsoft.VisualBasic ثم قم باستدعاء الداله. السلام عليكم 01100001-00101101-01101100-00101101-01101100-00101101-01100001-00101101-01101000
|
|||
|
|
02-07-2010, 04:06 AM
مشاركات: #2
|
|||
|
|||
|
RE: برامج رياضيه
جزاكم الله خيرا
|
|||
|
|
|









