السلام
مزحبا بك في منتدانا . يمكنك التسجيل والمشاركة. ننتظرك


salam
 
الرئيسيةالبوابةاليوميةمكتبة الصورس .و .جبحـثالأعضاءالمجموعاتالتسجيلدخول

شاطر | 
 

 عمل آلة حاسبة ظريفة

اذهب الى الأسفل 
كاتب الموضوعرسالة
Admin
Admin


عدد المساهمات : 234
تاريخ التسجيل : 30/10/2012

مُساهمةموضوع: عمل آلة حاسبة ظريفة    الجمعة نوفمبر 02, 2012 2:04 am

عمل آلة حاسبة ظريفة

أولا : تصميم الواجهة كما بالصورة التالية



ملاحظات على التصميم
1 - يمكنك تصميم الواجهة بصورة افضل من ذلك حسب ما ترغب وبالشكل الذي تريد
2 - الأزرار تحتوي على خاصية " الضغط على مفتاح Alt مع المفتاح المطلوب وهذه يتم ضبطها من خلال الخاصية text
حيث يتم وضع العلامة & قبل الحرف المراد تسطيرة في عنوان زر الأمر مثلا
زر أمر عنوانة " file" واريد تسطير حرف L تكتب كالتالي FI&LE

ثانيا : كود البرنامج

المتغيرات المستخدمة في البرنامج وهي
الكود:
  Dim ms As String = ""

    Dim a As Double ' first value
    Dim b As Double ' second value
    Dim c As Integer = 0 ' 1=add, 2=sub, 3=mul, 4=div
    Dim flag As Boolean = False
    Dim ina As Boolean = False
    Dim inb As Boolean = False
المتغيرات المستخدمة ووظيفة كل متغير
1 - المتغير MS ويعبر عن القيمة المخزنة فيذاكرة الحاسبة والقيمة الأبتدائية لها هي لاشيئ
2 - المتغير a ويعبر عن القيمة المدخلة الأولى
3 - المتغير b ويعبر عن القيمة المدخلة الثانية وهي من النوع double
4 - المتغير c وهو يعبر عن قيمة برقم العملية المطلوب تنفيذها وهي تأخذ القيم 1 للجمع و2 للطرح و3 للضرب و4 للقسمة
5 - المتغير flag وهو علم من النوع yes/no ويستخدم لأختبار وجود قيمة بمربع النص
6 - المتغير ina & المتغير inb وتحدد على وجود قيمة للرقم الأول ووجود قيمة للرقم الثاني

اجراءات العمليات الأربعة

اجراء يتم انشائه لتنفيذ عملية الجمع
الكود:
Public Sub addition()
        TextBox1.Text = a + b ' add operation
        a = TextBox1.Text ' To continue operation
        Console.WriteLine("Value of a after in addition is " + a.ToString)
        b = 0
        c = 0
        flag = True
    End Sub
الإجراء السابق بقوم بجمع قيمة a&b
ويضع النتيجة في مربع النص وكذلك يعتبر القيمة في مربع النص هي رقم أول
لعملية تالية ولذلك يخزنها في المتغير a مرة ثانية
ثم يصفر قيمة المدخل الثاني وكذلك رقم العملية لإجراء عملية ثانية
ثم يجعل المتغير flag = true والذي يعني وجود قيمة بمربع النص
والكود الالي لبقية الإجراءات للعمليات التالية

الكود:
 Public Sub subtraction()
        TextBox1.Text = Val(a) - Val(b) ' subtraction
        a = Val(TextBox1.Text) ' To continue operation
        Console.WriteLine("Value of a in Subtraction is " + a.ToString)
        b = 0
        c = 0
        flag = True
    End Sub
    Public Sub multi()
        TextBox1.Text = Val(a) * Val(b) ' multiplication
        a = Val(TextBox1.Text) ' To continue operation
        Console.WriteLine("Value of a in Multiplication is " + a.ToString)
        b = 0
        c = 0
        flag = True
    End Sub
    Public Sub divi()
        TextBox1.Text = Val(a) / Val(b) ' division
        a = Val(TextBox1.Text) ' To continue operation
        Console.WriteLine("Value of a in Division is " + a.ToString)
        b = 0
        c = 0
        flag = True
    End Sub
كود ادخال اقيم بالضغط على الأرقام من 0 الى 9
الكود:
 If flag = False Then
            TextBox1.Text = TextBox1.Text + "1"
        Else
            flag = False
            TextBox1.Text = ""
            TextBox1.Text = TextBox1.Text + "1"
        End If
    End Sub
في هذا الكود لو لم يكن هناك قيمة في مربع النص فنجعل مربع النص يحتوي الرقم 1
وإن كان هناك قيمة مكتوبة بمربع النص فان مربع النص يحتوي على القيمتين لتصبح رقم مكون من رقمين وهكذا

ويمكنك كتابة اكواد الأرقام الباقية بنفس الطريقة

كود العمليات الأربعة
كود الجمع
الكود:
 If TextBox1.Text = "" Then

        Else
            If ina = True And TextBox1.Text <> "" Then
                b = Val(TextBox1.Text)
                If c = 1 Then
                    addition()
                ElseIf c = 2 Then
                    subtraction()
                ElseIf c = 3 Then
                    multi()
                ElseIf c = 4 Then
                    divi()
                End If
                c = 1
            Else
                ina = True
                a = Val(TextBox1.Text)
                TextBox1.Text = ""
                c = 1
            End If
        End If
- وفي هذا الكود يتم التأكد أن مربع النص غير خالي ووجود قيمة اولية قد خزنت بالمتغير ina
2 - وفي هذه الحالة يضع القيمة الموجودة بمربع النص بالمتغير b كقيمة ثانية
ويتاكد أن رقم العملية المستخدمة هو 1 لإستدعاء اجراء الجمع او 2 لإستدعاء
اجراء الطرح أو 3 لإستدعاء اجراء الضرب او 4 لإستدعاء اجراء القسمة وفي
النهاية يضع قيمة العملية 1 للمتغير c
3 - اذا لم يتحقق اي شرط من الشروط السابقة ( مربع النص غير خالي ووجود
قيمة اولية ادخلت ) فسنعتبر الموجود بمربع النص هذا هو القيمة الأولي ونقوم
بإفراغ محتويات مربع النص لإستقبال قيمة ثانية

تابعونا في الدرس التالي لشرح بقية الكود ووضع التطبيق العملي للبرنامج

كود عملية الطرح
الكود:
[b] If ina = True And TextBox1.Text <> "" Then
            b = Val(TextBox1.Text)
            If c = 1 Then
                addition()
            ElseIf c = 2 Then
                subtraction()
            ElseIf c = 3 Then
                multi()
            ElseIf c = 4 Then
                divi()
            End If
            c = 2
        ElseIf ina = False and c =0 And TextBox1.Text = "" Then
            c = 5
            TextBox1.Text = "-"
        ElseIf ina = True And TextBox1.Text = "" Then

        ElseIf ina = False And TextBox1.Text <> "" And TextBox1.Text <> "-" Then
            ina = True
            a = Val(TextBox1.Text)
            TextBox1.Text = ""
            c = 2
        ElseIf TextBox1.Text = "-" Then
            c = 0
            ina = False
            TextBox1.Text = ""
        End If
[/b]
شرح الكود
1- يتم التأكد من أن مربع النص غير فارع وأن هناك قيمة اولى مخزنة بالمتغير inta وهذا يعني وجود قيميتن لإجراء عملية الطرح
2 - يتم تخزين القيمة الحالية بالمربع في المتغير b الذي يمثل الفيمة الثانية
3 - يتم التأكد من رقم العملية وتنفذ الإجراء الخاص بالعملية الذي تم شرحة في الدرس السابق
4 - هكذا يكون تم عملية الطرح
5 - بقية الكود يناقش حدوث خطأ معين مثل انه لا توجد قيمة أولى أو عدم وجود
قيمة بمربع النص وهكذا فيتم انهاء العملية ووضع قيمة بالمتغير C

كود الضرب
الكود:
[b] If TextBox1.Text = "" Then
            a = 0
            c = 3
            ina = True
        Else
            If ina = True And TextBox1.Text <> "" Then
                b = Val(TextBox1.Text)
                If c = 1 Then
                    addition()
                ElseIf c = 2 Then
                    subtraction()
                ElseIf c = 3 Then
                    multi()
                ElseIf c = 4 Then
                    divi()
                End If
                c = 3
            Else
                ina = True
                a = Val(TextBox1.Text)
                TextBox1.Text = ""
                c = 3
            End If
        End If
[/b]
شرح الكود
الكودواضح جدا كما تم شرحة في الأزرار السابقة

كود القسمة
الكود:
[b] If TextBox1.Text = "" Then
            a = 0
            c = 4
            ina = True
        Else
            If ina = True And TextBox1.Text <> "" Then
                b = Val(TextBox1.Text)
                If c = 1 Then
                    addition()
                ElseIf c = 2 Then
                    subtraction()
                ElseIf c = 3 Then
                    multi()
                ElseIf c = 4 Then
                    divi()
                End If
                c = 4
            Else
                ina = True
                a = Val(TextBox1.Text)
                TextBox1.Text = ""
                c = 4
            End If
        End If
[/b]
نفس الشرح السابق

كود زر المساواه =
الكود:
[b]  b = Val(TextBox1.Text)
        If c = 1 Then
            addition()
        ElseIf c = 2 Then
            subtraction()
        ElseIf c = 3 Then
            multi()
        ElseIf c = 4 Then
            divi()
        End If
[/b]

الكود واضح جدا وهو استدعاء اجراء العملية المطلوبة

كود زر المسح C
الكود:
[b] TextBox1.Text = ""
        a = Nothing
        b = Nothing
        c = 0
        flag = False
        ina = False
        inb = False
[/b]

الكود أيضا واضح جدا

كود تخزين قيمة بذاكرة الحاسبة ms
الكود:
[b]If TextBox1.Text = "" Then
        Else
            ms = TextBox1.Text
        End If
[/b]
حيث يتم تخزين قيمة مربع النص الى المتغير ms وإن كان مربع النص فارغ فلن يتم تخزين شيئ

كود قراءة القيمة المخزنة بذاكرة الحاسبة MR
الكود:
[b] If ms = "" Then
        Else
            TextBox1.Text = ms
        End If
[/b]
الكود واضح إن كان المتغير ms به قيمة يتم وضعها بمربع النص

كود أزالة المخزن بذاكرة الحاسبة MC
الكود:
[b] If ms = "" Then
        Else
            ms = ""
        End If
[/b]

الكود واضح جدا
اكواد الأزرار الباقية واضحة جدا وهضغها في مرة واحدة
الكود:
[b]
كود زر 1/x

    Private Sub Button16_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button16.Click
        TextBox1.Text = 1 / Val(TextBox1.Text)
    End Sub

كود زر الجزر التربيعي
    Private Sub Button15_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button15.Click
        TextBox1.Text = Val(System.Math.Sqrt(TextBox1.Text))
    End Sub

كود زر مسح مربع النص

  Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click
        TextBox1.Text = ""
    End Sub
كود حذف ارقام للخلف
        z = TextBox1.Text.Length
        If TextBox1.Text = "" Then
        Else
            y = TextBox1.Text.Substring(0, z - 1)
            TextBox1.Text = y
        End If
كود زر الفاصلة العشرية .
  Private Sub ButtonDot_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonDot.Click
        ' Just little change here, when empty put "0."
        If InStr(TextBox1.Text, ".") Then

        Else
            If c <> 0 Then
                If TextBox1.Text = "" Then
                    TextBox1.Text = "0."
                ElseIf TextBox1.Text = "-" Then
                    TextBox1.Text = TextBox1.Text + "0."
                Else
                    TextBox1.Text = TextBox1.Text + "."
                End If
            Else
                If TextBox1.Text = "" Then
                    TextBox1.Text = "0."
                Else
                    TextBox1.Text = TextBox1.Text + "."
                End If
            End If
        End If
    End Sub
كود زر الخروج
    Private Sub ButtonExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonExit.Click
        'Exiting
        MsgBox("Thanks for Using Calc v1.4", MsgBoxStyle.OkOnly, "Good Bye...")
        Me.Close()
    End Sub
[/b]
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://salam.forum-canada.com
 
عمل آلة حاسبة ظريفة
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
السلام :: منتدى لغات برمجة :: منتدى Microsoft Visual Basic-
انتقل الى: