مشروع أنشاء الة حاسبة معقدة مثل حاسبة الويندوذ الى حد ما

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

مشروع أنشاء الة حاسبة معقدة مثل حاسبة الويندوذ الى حد ما

مُساهمة من طرف أحمد مناع في الخميس ديسمبر 22, 2011 1:21 pm

بسم الله الرحمن الرحيم



أخوانى الكرام أهلا وسهلا بكم فى مشروع أخر وهو عبارة عن الة حاسبة تشبة الى حد كبير الالة الحاسبة الموجودة فى الويندوذ ...فبعد أن قمنا فى المشروع السابق بأنشاء الة حاسبة بسيطة ...نأتى الان لانشاء الة حاسبة أكثر تعقيدا من السابقة و التى تعتمد على المتغيرات و ايضا بعض الاكواد التى تعتبر جديدة عليك بعض الشىء ....


أولا :الادوات المطلوبة



_ عدد 23 زر أمر

_عدد 2 فيرم farme

_عدد 3 صندوق نص textbox


ثانيا : ضبط الادوات



تعلمنا سويا فى دروس سابقا كيف تضبط أدواتك بما أننا شرح ذلك سابقا فلا داعى للتكرار ...و كل ما اريده منك الان أن تضع أدواتك على الفورم و تضبها كما فى الشكل التالى :







من الصورة السابقة تستطيع أن تضبط أدواتك و تضع الاسم المناسب (caption) لكل زر فقد تعلمنا ذلك جديدا ...لكن هناك خاصية جيدة عليك لزر الاوامر الا وهى خاصية تغير خلفية الز بلون معين ....الامر بيسط جدا فلكى تقوم بتغير لون الخليفية لاى زر من خلال الخاصية ستايل style بأن تجعلها تساوى Graphical ثم بعد ذلك تختار اللون المناسب لخلفية الزر عن طريق الخاصية BackColor....وذلك كما فى الصورة التالية :







و ايضا نجعل خاصية MaxLength لنصدوق النص الاول _شاشة العمليات الحسابية _ تساوى 16 و ذلك لنجعل عدد الارقام بهذا الصندق 16 رقم فقط لانه لو لم نعطى قيمة لهذه الخاصية فأن هذا الصندوق سيسمح للمستخدم أدخال ارقام الى مالا نهاية ...أما عند تحديد قيمة لهذه الخاصية فلن يقبل الصندوق أكثر من تلك القيمة ....أنظر الصورة التالية :





أما عند تحديد قيمة لتلك الخاصية فأنها لن تسمح الا بتلك القيمة من الارقام ....كما فى الصورة التالية







أخيرا نجعل الخاصية Locked لجميع صناديق النصوص الثلاثة تساوى True وذلك لمنع المستخدم من الكتابة فيهم ...


ثالثا : كتابة الكود أو الشفرة البرمجية :



بالنسبة لزر أوامر الارقام و الفاصلة العشرية :



يوجد فى الالة الحاسبة التى نحن بصدد برمجتها عدد 11 زر خاص بالارقام و العلامة العشرية تم ترقيمها من الرقم (صفر)حتى الرقم (9)بالاضافة الى زر (.)العلامة العشرية .....المطلوب من تلك الازرار هو عند الضغط عليها يتم كتابة الرقم الخاص بها فى شاشة الناتج الحسابى text1 ....و الكود الخاص بكل زر سيكون على النحو التالى :



بالنسبة لزر العلامة العشرية (.)





الكود:


Text1.Text = Text1.Text + "."





بالنسبة للزر (صفر):



الكود:
Text1.Text = Text1.Text + "0"



بالنسبة للزر (1)



الكود:
Text1.Text = Text1.Text + "1"



بالنسبة للزر (2)



الكود:
 Text1.Text = Text1.Text + "2"



وهكذا بالنسبة لجميع الارقام الباقية حتى تصل الى الرقم (9)...وتعالو نشرح الاكواد السابقة :



الكود الاول : بقول للبرنامج عند الضغط على رز (.) العلامة العشرية أكتب فى شاشة الناتج الحسابى (text1) علامة عشرية (.) بالاضافة الى القيمة الموجودة أساسا فى تلك الشاشة (text1)



الكود الثانى : بنفس المنطق بقول للبرنامج عند الضغط على رز (1) أكتب فى شاشة الناتج الحسابى (text1) الرقم (1) بالاضافة الى القيمة الموجودة أساسا فى تلك الشاشة (text1) ....و بنفس المنطق لجميع الاكواد الاخرى حتى تصل للرقم (9)...



حتى الان لم ننتهى من برمجة أزار الاوامر الخاصة بالارقام و العلامة العشرية لان هناك مشكة سوف تقابلنا لو أكتفينا بالكود السابق ...الا وهى وجود قيم أخرى فى text1 ....فمثلا كتنبا الرقم (12)ثم ضغطنا على زر الجمع (+) و نريد أن كتب الرقم الثانى وليكن (13)..فسنجد أن الرقم الاول (12) مازال موجود فى شاشة الناتج الحسابى text1 وعند كتابة الرقم الثانى (13) سنجد أن البرنامج قد قام بكتابة الرقم الثانى بالاضافة الى الرقم الاول وسنجد أن شاشة الناتج الحسابى text1 مكتوب بها الرقم على هذا الشكل (1213)......



أذن المطلوب هو مسح أى قيمية فى شاشة الناتج الحسابى text1 بشرطين ...الاول أن يكون ذلك بعد الضغط على أحد أزرار العمليات الحسابية (+),(-),(*),(/)أو زر(=)....أما الشرط الثانى هو أن يتم ذلك أيضا مع أول ضغطة لادخال الرقم الثانى ...كيف يمكن عمل ذلك عن طريق الكود ؟



الحل بيسط ....نقوم بعمل متغير من نوع Boolean وليكن أسمه test وذلك ليبين لنا إذا ما كنا لتونا قد ضغطنا على أحد أزرار العمليات أو = أم لا بحيث يمسح شاشة الناتج الحسابى text1 مع أول ضغطة لادخال الرقم الثانى....وطبعا درسنا سابقا ماذا نقصد بالمتغير و أنواعه وكيفية التصريح عنه؟ فأرجوا أن ترجع الية ...وتعالوا ألان نكنب الكود بعد التعديل :



1 : يتم التصريح فى القسم العام للنموذج عن المتغير test كما فى الكود التالى :



الكود:


Dim text As Boolean



2 :الكود الخاص بزر أمر العلامة العشرية (.)....سيكون بعد التعديل على النحو التالى :

الكود:


If Test = True Then
Test = False
Text1.text = ""
End If

Text1.text = Text1.text + "."






شرح الكود السابق .....



- أستخدمنا جملة IF _وهى من الجمل الشرطية _ فبقول للبرنامج لو المتغير test يساوى True عندئذ أجعل هذا المتغير يساوى false ثم أمسح القيم الموجودة فى text1 ...وأنتهى بـــ end if ...بعد ذلك أكتب فى شاشة الناتج الحسابى text1 العلامة العشرية (.) بالاضافة الى القيمة الموجودة اساسا فى مربع النص text1 أو شاشة الناتج الحسابى .....



3- الكود الخاص بزر الامر رقم (1)...سيكون بنفس منطق الكود السابق مع تغير طفيف وهو أن يكتب البرنامج رقم (1) بدلا من العلامة العشرية ...على النحو التالى :



الكود:


If Test = True Then
Test = False
Text1.text = ""
End If

Text1.text = Text1.text + "1"





وعلى هذا القياس كرر تلك العملية لجميع أزرار الامر الخاصة بالارقام حتى تصل الى الرقم (9)



كتابة الكود بالنسبة لأزرار العمليات الحسابية (+),(-),(*),(/):



تعالوا يا أخوانى الان نحدد المطلوب من تلك الزراير السابقة و تتمثل فى :



_ جعل المتغير test يساوى Ture

_ حفظ الرقم الاول المدخل من المستخدم فى متغير ما حتى نستطيع أجراء العمليات الحسابية علية

_أن يكتب البرنامج نوع العملية الحسابية فى صندوق النص الثانى text2



بعد ما حددنا الاجراءات الملطوبة من تلك الزراير ....نأتى لكتابة الكود :



1_ نقوم بعمل متغير من نوع double وليكن أسمه N1 وذلك لحفظ الرقم الاول المدخل من المستخدم كما أوضحنا سابقا ....وذلك عن طريق كتابة الكود التالى فى قسم التصريحات للنموذج :



الكود:


Dim N As Double




2_ ثم نكتب الكود التالى تحت كل زر من أزارا العمليات الحسابية السابقة .....فمثلا تحت زر الامر (+) نكتب الكود التالى :



الكود:


Test = True
N = Val(Text1.text)
Text2.text = "+"






وتحت زر (-) الطرح نكتب الكود التالى :



الكود:


Test = True
N = Val(Text1.text)
Text2.text = "-"




وهكذا بالنسبة لزر امر الضرب(*)و زر الامر القسمة (/) مع تغير نوع العملية فى السطر الثالث من الكود



كتابة الكود بالنسبة لزر الامر يساوى (=).



المطلوب من هذا الزر هو عند الضغط عليه عرض ناتج العملية الحسابية فى صندوق النص الاول text1 بناء على نوع العملية الموجودة فى صندوق النص الثانى text2 ثم بعد ذلك يجعل البرنامج المتغير test تساوى True ثم يكتب فى صندوق النص الثانى علامة (=)....أذن الكود لهذا الزر سيكون على النحو التالى :



الكود:




If Text2.text = "+" Then
Text1.text = N + Val(Text1.text)
End If

If Text2.text = "-" Then
Text1.text = N - Val(Text1.text)
End If

If Text2.text = "*" Then
Text1.text = N * Val(Text1.text)
End If

If Text2.text = "/" Then
Text1.text = N / Val(Text1.text)
End If


Test = True
Text2.text = "="







شرح الكود السابق ....نقول للبرنامج أذا كانت قيمة صندوق النص الثانى text2 تساوى علامة الجمع (+)عندئذ أجعل قيمة صندوق النص الاول text1 تساوى قيمية المتغير (N) أو الرقم الاول المخزن+ القيمة الموجودة حاليا فى text1 ....وتم تكرار جملة الشرط هذه مع باقى العمليات الحسابية الاخرى (-),(/),(*).....ثم بعد ذلك جعلنا المتغير test تساوى true و أيضا التكست الثانى قيمة (=)


لكن ولأنه قد تحدث أخطاء ناتجة عن قسمة على الصفر مثلاً ، أو OverFlow ، ولكي لا يتوقف البرنامج فإننا نضع العبارة التالية في بداية الاجراء :



On Error Resume Next



بالنسبة لزر الامر (c):



يستخدم هذا الامر فى الالة الحاسبة لالغاء العملية الحسابية و مسح البيانات المدخلة و بالتالى فأن الكود الخاص بهذا الزر سيكون على النحو التالى :



الكود:


Text1.text = ""
Text2.text = ""







بالنسبة لزر الامر (CE):



يستخدم هذا الامر فى الالة الحاسبة لمسح البيانات الموجودة حاليا فى شاشة الحاسبة مع عدم الغاء باقى العملية ....وبالتالى سيكون الكود على النحو التالى :



الكود:


Text1.Text = ""






بالنسبة لزر الامر BackSpace



المطلوب من هذا الزر هو مسح رقم واحد من الارقام التى بالشاشة مع كل ضغطة ...فمثلا أريد أن أكتب 1245 فقمت كتابتة بالخطأ هكذا 1254 فبدلا من مسح الرقم كاملا ثم أعادة كتابتة أقوم بالضغط على زر BackSpace لمسح الرقم 5 ثم 4 و أقوم بتصحيح الخطأ .....و لكى يتم كتابة الكود لهذا الزر فيجب علينا أستخدام دالة Left والتي ستقتص نصاً من اليسار بطول النص - 1 ، وذلك بالشكل التالي :



الكود:


If Len(Text1.text) <> 0 Then Text1.text = Left(Text1.text, Len(Text1.text) - 1)





بالنسبة لزر الامر (+/-)



هذا الزر الخاص بتغير أشارة الرقم الى سالب أو موجب ولكى يتم ذلك فهناك كود بيسط جدا للغاية وهو على النحو التالى :



الكود:


Text1.Text = Val(Text1.Text) * -1






لاحظ يا عزيزى أننا فى الكود السابق طلبنا من البرنامج عند الضغط على هذا الزر أن يجعل قيمة text1 تساوى تلك القيمة مضروبة فى سالب (1) ...وبالتالى فأن الناتج لو كان بالسالب سيصبح بالموجب لان (سالب*سالب موجب)...ولو أن الرقم الموجود بالموجب فسيصبح بالسالب لان(سالب *موجب = سالب)....Very Happy Very Happy



بالنسبة لزر الامر +M



طبعا هذا الزر خاص بزاكرة الالة لكى نخنزن به أى رقم نريده ......أذن سنقوم بعمل متغير من نوع double وليكن أسمه Memory ليحل محل الذاكرة .......ويتم ذلك عن طريق التصريح عن اسم المتغيرة و نوعة فى قسم التصريحات بالنموذج من خلال الكود التالى :



الكود:


Dim Memory As Double






بعد ذلك نقوم بكتابة الكود التالى فى زر الامر +M



الكود:


Memory = Val(Text1.text)
Text3.text = M


شرح الكود :

فى السطر الاول ...بقول للبرنامج أجعل قيمة المتغير Memory تساوى القيمة الموجودة فى Text 1

فى السطر الثانى ...بقول للبرنامج أكتب حر M لكى أبين للمستخدم أن ذاكرة الحاسبة مخزن بها أرقام



بالنسبة لزر الامر MR

هذا الزر مطلوب منه عرض القيمة الموجودة فى الذاكرة على شاشة الناتج الحسابى text1 وبالتالى فأن الكود سيكون على النحو التالى :



الكود:


Text1.text = Memory






بالنسبة لزر الامر MC



هذا الزر مطلوب منه مسح القيمة الموجودة فى الذاكرة و بالتالى فأن الكود الخاص بهذا الزر سيكون على النحو التالى :



الكود:


Memory = 0
Text3.text = ""






لاحظ أننا أضفنا السرط الثانى فى الكود لكى نوضح للمستخدم أن الذاكرة فارغة من خلال Text3







بهذا أخوانى الكرام نكون قد أنتهينا من برمجة الة حاسبة معقده بعض الشىء .....و اليكم المشروع بالكامل فى المرفقات
المرفقات
الة حاسبة.zip لا تتوفر على صلاحيات كافية لتحميل هذه المرفقات.(3 Ko) عدد مرات التنزيل 123

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم

إن فقدت مكان بذورك التي بذرتها يوما ما سيخبرك المطر أين زرعتها ..لذا إبذر الخير فوق أي أرض وتحت أي سماء ومع أي أحد.. فأنت لا تعلم أين تجده ومتى تجده؟! إزرع جميلا ولو في غير موضعه .... فلا يضيع جميلا أينما زرعا .. فما أجمل العطاء... فقد تجد جزاءه في الدنيا أو يكون لك ذخرا في الآخرة
avatar
أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 815
النقاط : 1484
التقيم : 69
الدولة : مصر
الجنس : ذكر

http://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: مشروع أنشاء الة حاسبة معقدة مثل حاسبة الويندوذ الى حد ما

مُساهمة من طرف جورج صبحى في الإثنين فبراير 27, 2012 7:39 am

أخى أحمد ....





لماذا لا أستطيع تحميل الملف المرفق من المرفقات ....مكتوب لا تتوفر على صلاحيات كافية لتحميل هذه المرفقات...



أرجوا حل المشكلة
avatar
جورج صبحى
.....
.....

تاريخ التسجيل : 18/02/2011
المساهمات : 98
النقاط : 211
التقيم : 3
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: مشروع أنشاء الة حاسبة معقدة مثل حاسبة الويندوذ الى حد ما

مُساهمة من طرف أحمد مناع في الإثنين فبراير 27, 2012 3:53 pm

جورج صبحى كتب:أخى أحمد ....





لماذا لا أستطيع تحميل الملف المرفق من المرفقات ....مكتوب لا تتوفر على صلاحيات كافية لتحميل هذه المرفقات...



أرجوا حل المشكلة



جارى حل المشكلة ياسيد جورج ....وشكرا لك على التنبيه و على مواضيعك المميزة ....فينك ياراجل من زمان

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم

إن فقدت مكان بذورك التي بذرتها يوما ما سيخبرك المطر أين زرعتها ..لذا إبذر الخير فوق أي أرض وتحت أي سماء ومع أي أحد.. فأنت لا تعلم أين تجده ومتى تجده؟! إزرع جميلا ولو في غير موضعه .... فلا يضيع جميلا أينما زرعا .. فما أجمل العطاء... فقد تجد جزاءه في الدنيا أو يكون لك ذخرا في الآخرة
avatar
أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 815
النقاط : 1484
التقيم : 69
الدولة : مصر
الجنس : ذكر

http://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: مشروع أنشاء الة حاسبة معقدة مثل حاسبة الويندوذ الى حد ما

مُساهمة من طرف السنى في الأحد مارس 04, 2012 7:52 am

جارى حل المشكلة ياسيد جورج ....وشكرا لك على التنبيه و على مواضيعك المميزة ....فينك ياراجل من زمان




شكرا لك أخى أحمد أنا أستطعت التحميل من المرفقات
avatar
السنى
.......
.......

تاريخ التسجيل : 18/02/2011
المساهمات : 186
النقاط : 346
التقيم : 18
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

مشكوووووووووووور

مُساهمة من طرف أحمد في الأربعاء أبريل 16, 2014 6:17 pm

مشكوووووووووووور

أحمد
زائر


الرجوع الى أعلى الصفحة اذهب الى الأسفل

egypt

مُساهمة من طرف ج في الجمعة أكتوبر 31, 2014 12:44 pm

كيف اضيف مفتاح لحساب المساحات ومفتاح لحل معادله الى الحاسبه

ج
زائر


الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: مشروع أنشاء الة حاسبة معقدة مثل حاسبة الويندوذ الى حد ما

مُساهمة من طرف abdullah في الثلاثاء يناير 24, 2017 11:18 pm

مشكوووووووووووور
avatar
abdullah
.
.

تاريخ التسجيل : 24/01/2017
المساهمات : 5
النقاط : 5
التقيم : 0
الدولة : مصر
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى