بعد التحية
هناك العدديد من المواضيع الحالية التي تتكلم عن طريقة كتابة الأكوااد البرمجية والأسلوب الصحيح في كتابتها .
فهل توافقون على فتح هذا النقاش نضرا لأهمية .
(h)
بعد التحية
هناك العدديد من المواضيع الحالية التي تتكلم عن طريقة كتابة الأكوااد البرمجية والأسلوب الصحيح في كتابتها .
فهل توافقون على فتح هذا النقاش نضرا لأهمية .
(h)
التخصص : نظم معلومات - جامعة سبأ - اليمن
من مواضيعي :
السلسلة الذهبية في تعلم البرمجة [شرح عن الإجراءات والدوال function وبناء الـ Classes] .
أعتقد طريقة كتابة اللغة العربية سيكون موضوعا مشوقا أكثر:
أصلحت الأخطاء...
اقتباسهناك العديد من المواضيع الحالية التي تتكلم عن طريقة كتابة الشفرات البرمجية والأسلوب الصحيح في كتابتها .فهل توافقون على فتح هذا النقاش نظرا لأهميته؟
:) لا تزعل، أمزح معك!
صفحاتي: صفحة حسام الملحم www.hussam.ws مدونة
آخر المشاريع: مشروع لغة برمجة عربية شيئية التوجه
ألعاب على الجوال : 1-(لعبة O X على الجوال ) 2-(لعبة الرقم السري على الجوال ) 3-(لعبة آخر حبة على الجوال )
ألعاب على الحاسب: لعبة الوزراء الثمان ، لعبة شطرنج ، لعبة التركيب Tetris
مواضيعي:
الفرق الجذري بين الجافا و C# شرح التعامل مع WTK لبرمجة الجوالات
مشاركاتي:
برنامج (كاتب) للكاتب فهد OMLX، برنامج (المحول) للكاتب فهد OMLX، برنامج (Unit Storm) للكاتب بشير C&Dell، أيهما أكبر الأعداد الصحيحة أم الطبيعية للكاتب Romanof، سؤال رياضي بحت للكاتب VB6-Rocket، التحدي الكبير للكاتب ANSI،
فعلاً أخي فواز الشمري موضوع مهم جداُ لاننا حتي الان نقوم بكتابة الكود التقليدي ولم نستفيد بما فيه الكفاية من الميزة الجديدة الموجودة في الـ VB.NET وهي أن الـ VB.NET هو Object Oriented Programming ونحن أحياناُ كثيرة نقوم بتكرار نفس الكود (أقصد هنا مايقوم به الكود) في أكثر من نموذج واحد في نفس المشروع أو في أكثر من مشروع ! لماذا لا نتجه في كتابة الكود الي الاستفادة من الوراثة والتي تعتبر من أهم مايميز الـ OOP .
هل سألت نفسك يوماً لماذا لا تكون لي مكتبتي الخاصة (مكتبة شفرات) ؟؟
أعتقد أنه يجب علينا تصنف الشفرات الي فئات مثلاً شفرات الوصول لقاعدة البيانات , شفرات التعامل مع قواعد البيانات (هذا علي سبيل المثال) وذلك لكي يكون النقاش محدد ومفيد .
والله الموفق .
يبدو ان الموضوع يكون جيد للمناقشة :
اخي hazzoom سوف اضع بعض الأمثلة ولكن أتمنا ان تشاركوا معي ايضاً :
نحن نود ان نكون قادرين على كتابة برامجنا بأقل حجم ممكن وكذلك نحاول ان نتفادى البطئ في البرنامج بشكل عام .
كما ذكرالأخ Ammar Gaffar ان oop تعتبر مهمة جدا وهذا موضوع سيكون من ضمن النقاشات إن شاء الله ....
التخصص : نظم معلومات - جامعة سبأ - اليمن
من مواضيعي :
السلسلة الذهبية في تعلم البرمجة [شرح عن الإجراءات والدوال function وبناء الـ Classes] .
السلام عليكم
فعلا موضوع يستحق المتابعة
واود لو واحد ينصحنا مالفرق بين
Structure
Class
ايهما اسرع؟
وماخصائص كل منهما؟
وإن شاء الله ستكون لنا مشاركات جيدة بهذا الصدد
أوافقك الرأي أخي فواز
ولكن لاتنسى أن ذلك يعود إلى خبرة المبرمج
كلما كان المبرمج أكثر خبرة كلما كانت أكواده مختصرة وسريعة في التنفيذ
وأيضا عامل المنطقية في العمل ( ماذا تريد أن تصنع ؟)
من المفترض أن يقوم الشخص بترتيب الفكرة في ذهنه أو على ورق أولاً
ثم يقوم بتنفيذها (البرنامج التطبيقي) ..
ونرجع ونقول عامل الخبرة مهم ! !
مثلا فلان يكتب الكود في عشرة أسطر وغيره في سطرين مع أن الهدف واحد !!!!
وجهة نظر :rolleyes:
اقتباسونرجع ونقول عامل الخبرة مهم ! !مثلا فلان يكتب الكود في عشرة أسطر وغيره في سطرين مع أن الهدف واحد !!!!
معك كل الحق في هذه النقطة , ولكن مشكلتنا أننا في معظم الأحيان نقفز مباشرة الي كتابة الشفرة وهذا في إعتقادي هو أكبر خطا يقع فيه المبرمج , وعامل الخبرة مؤثر جداً ولكن يمكننا تقليل تأثيره بالبداية الصحيحة .
وهنالك عامل آخر أهم من الخبرة وهو طبيعة البرنامج احياناً يضطر المبرمج الي إتباع أسلوب في نظر معظم المبرمجين خاطئ وهو يعرف ذلك جيداً ومع ذلك يقوم باتباعه وذلك لأنه يقوم بما يريده البرنامج علي أكمل وجه .
علي سبيل المثال : المعروف جيداً لمستخدمي ومبرمجي الـ SQL Server أن استخدام الـ Cursors بطئ نسبياُ , ولكن الـ Cursors في بعض الأحيان مفيدة أكثر بكثير من بطئها .
وعامل طبيعة البرنامج أيضاً يمكن حصره ..
والله الموفق
موضوع يستحق التثبيت فارجو ممن لديه اي خلفيه عن هذا الموضوع ان لايتردد في طرحها لكي تعم الفائده ,
انا حاليا افتقد لمثل هذه الامور في البرمجه كترتيب الكود
اعيد واكرر من لديه اي شيئ حول هذا الموضوع ان يفيدنا فيه
ودمتم سالمين -waf
أعتقد أن هناك أمر هامة في هذا الموضوع
أولا - يجب أن يكون الكود بأقل عدد أوامر ممكنة وينفذ الهدف منه بسرعة
ثانيا - يجب البحث عن الكود الأسرع في التنفيذ والأسهل في الفهم
ثالثا- ترتيب الكود بطريقة منطقية مفهومة وإضافة التعليقات بكثرة قدر الإمكان لشرح كل شئ في الكود فأنت إذا لم تفتح السورس كود وتعدل فيه لعدة أشهر ستنسى ما قمت بعمله وفي هذه الحالة ستساعدك التعليقات كثيرا
رابعا - فكرة عمل مكتبة تضم جميع الأكواد الموجودة لدينا فكرة رائعة وتوفر الوقت فعندما تحتاج إلى الكود ستجده ضمنها وتربطه مباشرة ببرنامجك وبهذا يوفر عليك الكثير من الوقت والجهد
وهنا لدي اقتراح لماذا لانقوم بالتعاون فيما بيننا لعمل مكتبة أكواد موحدة يستفيد منها الجميع بدل ان يقوم كل واحد منا بعمل مكتبة خاصة به وبهذا نتبادل المعلومات والخبرات ويستفيد الجميع
عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه
نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا
ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا
محمد سامر أبو سلو
-09
اخي samerselo ,
كلامك جميل ولكن بالنسبه لعمل مكتبه للاكواد من اين ابدا وكيف مثلا على اي اساس سوف يتم ترتيب هذه المكتبه
ارجو الافاده وشكرا
اخوتي الاعزاء
اذا اردتم فعلا صنع ادوات عربية حقيقية
فلتبدأ سويا بذلك ونتمنى ان تكون الادوات base
وليطرح احد منكم فكرة
ولكن يجب ان نكوّن فريقا اولا ثم ننتخب مشرفا بالتصويت
ويقوم المشرف بتوزيع الادوار حيث تمرر الاداة او مجموعة الادوات الى كل واحد من الفريق
يقوم بتطوير مايجده مناسبا
ثم عند الانتهاء حيث تكون الادوات جاهزة نصوّت لتأكيد او حذف ماتم عمله من خصائص واحداث
السلام عليكم
موضوع جميل جدا وفعلا بحاجة الى نقاش
بالنسبة للفرق بين الـclass والـstruct هذا توضيح بسيط
لفئة Class تختلف عن struct من عدة نواحي هذه اهمها:
1- النوع Type :
الفئة Class من نوع Reference Type والـ Struct من نوع Value Type وهذا هو الاختلاف الرئيسي والاهم بين الاثنين... والاختلاف هذا يعني ان الفئة من نوع مرجعي يعني ان المتغيرات عبارة عن مؤشر ولاتحتوى على القيمة بشكل مباشر، وهي تنشأ في الذاكرة في Heap، اما Struct فهو قيمة Value Type اي ان المتغيرات تحتوى على قيمتها الحقيقة بدون مؤشرات. وهي تنشا في الذاكرة في الـ Stack. وهذه ميزة، حيث ان استخدامك للـ Struct يفيدك في الكائنات التي تحتاج الى سرعة اي كانك تتعامل مع الانواع الرئيسية للغة مثل Int او String.
2- الوراثة Inheritance
كل كائنات struct تكون مشتقة من الفئة الاساسية System.ValueType، كما انه لايمكن وراثة الـ struct، كما انه لايمكن توريث الـ struct من اي فئة اخرى، يمكنك فقط توريث الواجهات Interfaces، كما ان الـ struct دائما يكون غير قابل للاشتقاق كما ذكرت لذلك لايمكن استخدام الكلمات المحجوزة sealed او abstract معها. وايضا، بما ان struct غير قابل للاشتقاق لايمكن استخدام الكلمات المحجوزة protected ولا protected internal لاعضاء strcut، كما لايمكن استخدام الكلمات المحجوزة virtual ولا override على اعضاء الـ struct، فقط يمكن استخدامها مع الاعضاء من الفئة الاساسية System.ValueType.
طبعا كل ماسبق عكس مايحدث في الفئات Classes حيث انه يمكن اشتقاقها، ويمكنك وراثة اي فئة اخرى لتكون الفئة الاساسية base class. ويمكنك تحديد ماتشاء من المعرفات على الاعضاء.
3- اسناد القيم
كما ذكرت، اسناد القيم الى متغير جديد من نوع struct يقوم بنسخ محتوياته كاملة الى المتغير الجديد، على عكس الفئات، فانه يقوم بنسخ المؤشر فقط اما محتويات المتغير الحقيقة فانه لايتم نسخها ويتم استخدمها في كل المتغيرات المنسوخة من الفئة..
VB.NET and C# Comparison
http://www.harding.edu/fmccown/vbnet_csharp_comparison.html
=-=-=-=-=-=-=
ذو العلم يشقى فى النعيم بعلمه .:. واخو الجهالة فى الشقاوة ينعم
=-=-=-=-=-=-=
يا من بدنياه اشتغل . قد غره طول الأمل . فالموت يأتى بغتة . والقبر صندوق العمل
=-=-=-=-=-=-=
ان لم تستطع ان تجد ما تفعله فافعل ما لم تسطع ان تجده

الله ينور عليك يا عم سولو بس لو تتكرم وتقول ما هو ال Heap ؟؟؟
أنا عارف ال Stack لكن ما هو ال Heap الله أعلم ؟؟؟
بسم الله الرحمن الرحيم
Heap
هو منطقة في الذاكرة يتم حفظ مؤشرات الي العناوين التي تحوي القيم الحقيقية الموجودة في Stack
يعني ببساطة الHeap يحفظ بها عناوين القيم الموجودة في Stack
مثال
Integer a=100
اين توضع 100؟؟؟
في Stack
واين يوضع اسم المتغير a???
ايضا في Stack
ولكن اين يوضع عنوان a في الذاكرة ؟
في Heap
ارجو ان اكون وفقت في ايصال المعلومة
و ان حدث خطا ارجو التوضيح
سلام
حكمتي الدائمة.....................................................
ان ما عند الله لا يطلب الا بطاعته
.....................................................................
?who is Ingm
Name: Hasan Adel Hasan
Education: BCs in IS from Faculty of computers & information systems
Mansoura University- 2003
E-mail: hsn_3004@yahoo.com
بعد اذنكو يا جماعة
انا شايف ان الموضوع كان ماشي في اتجاه و اخذناه نحن في اتجاه اخر تماما
الافضل ان نتحدث عن اساليب رفع كفاءة الكود
Code Optimization
واساليب رفع كفاءة البرنامج بشكل عام
Performance Optimization Techniques
ما رايكم ؟
سلام
تم تعديل هذه المشاركة بواسطة Ingm في 14 أغسطس 2005 في 06:34
حكمتي الدائمة.....................................................
ان ما عند الله لا يطلب الا بطاعته
.....................................................................
?who is Ingm
Name: Hasan Adel Hasan
Education: BCs in IS from Faculty of computers & information systems
Mansoura University- 2003
E-mail: hsn_3004@yahoo.com
اقتباسارجو ان اكون وفقت في ايصال المعلومة
الحمد لله وصلت بسهوله , وشكرا جزيلا ,,,
اقتباسالافضل ان نتحدث عن اساليب رفع كفاءة الكودCode Optimization
واساليب رفع كفاءة البرنامج بشكل عام
Performance Optimization Techniques
بس ده مش هينفع بالشكل المضبوط طالما أساسيات ال OOP ضايعه من عندنا لأن أغلب أعضاء VB.NET كانوا في VB 6.0 (وأنا أول واحد) ولم نتعود علي أسلوب ال OOP فأنا أقترح ان يضع أحد كتاب في ال OOP من خلال ال VB.NET ونتناقش فيه( من حيث تحسين أسلوب كتابة الكود) ,
صحيح الطريقه دي هتخلينا نبعد شويه عن المطلوب لكن في النهايه هنوصل الي الهدف بطريقه علميه ,,
بسم الله الرحمن الرحيم
اولا
احمد الله تعالي اني لم استمر كثيرا مع vb6 و الا كنت عمري ما هافهم يعني ايه OOP
:lol: :lol: :lol:
عموما انا ملاحظ فعلا اني مشكلة مبرمجي VB.NET انهم بيفكروا بعقلية مبرمجي VB6
<_< <_<
يا جماعة انسوا VB6 تماما و ارموه خلف ظهوركم طالما تريدون ان تتعلموا لغات محترمة (مثل VB.NET OR C# OR JAVA)
اما بخصوص كتاب عن OOP فانا عندي كتاب اسمة
OOP in dot net framework
بس مش فاكر هوه فين دلوقتي :lol:
سلام
حكمتي الدائمة.....................................................
ان ما عند الله لا يطلب الا بطاعته
.....................................................................
?who is Ingm
Name: Hasan Adel Hasan
Education: BCs in IS from Faculty of computers & information systems
Mansoura University- 2003
E-mail: hsn_3004@yahoo.com
يوجد مقالتي ((بالعربي(( لمن يريد تعلم التوارث و تطبيقاته
http://www.geocities.com/moayad_mardini/ar...nheritance.html
اخيرا وجدته
وهو باسم
MS Press - OOP with Microsoft VB.NET and C# Step By Step.pdf
الي عايز الكتاب ده يبعتلي رسالة لان حجمه 2.35 ميجا
بريدي هو
hsn_3004@yahoo.com
سلام
تم تعديل هذه المشاركة بواسطة Ingm في 14 أغسطس 2005 في 08:38
حكمتي الدائمة.....................................................
ان ما عند الله لا يطلب الا بطاعته
.....................................................................
?who is Ingm
Name: Hasan Adel Hasan
Education: BCs in IS from Faculty of computers & information systems
Mansoura University- 2003
E-mail: hsn_3004@yahoo.com
اقتباسبعد اذنكو يا جماعة :angry:انا شايف ان الموضوع كان ماشي في اتجاه و اخذناه نحن في اتجاه اخر تماما
كلام ingm مزبوط
الموضوع خرج عن مساره كليا
السلام عليكم ورحمة الله ...
ساقوم هنا بشرح دالة أستخدمها في جميع برامجي مع ملاحظة أنني ساشرحها لتوضيح النقاط التالية :
كيفية تطبيق الوراثة علي البرنامج.
كيفية كتابة الشفرات القياسية وأعني هنا الشفرات التي يستفيد منها أو يمكن تطبيقها في كل البرامج
كيفية بناء Library وكيفية إستخدامها
هذا المثال لا يعني أننا يجب أن نبدأ من هذه النقطة ولكن لتوضيح الخطوط العريضة للموضوع
الدالة هي تقوم بالتحقق من إدخالات المستخدم للحقول المطلوبة في الكائنين : TextBox AND ComboBox
أولاً قم بفتح مشروع جديد من نوع ClassLibrary وقم بتسميته MyValidation
سيتم إنشاء Class1 تلقائياً (من الأفضل أن نقوم بتسمية فئة تدل علي محتواها)
قم بأنشاء Class جديد وتسميته ValidationClass
قم باضافة المرجع System.Windows.Forms.dll وذلك عن طريق الضغط بالزر الأيمن علي Reference واختيار Add Reference
قم بالاعلان عن المرجع System.Windows.Forms.dll في بداية الـ Class باستخدام الشفرة التالية :
Imports System.Windows.Forms
داخل الـ Validation Class قم بكتابة الشفرة التالية :
'Validate Controls Public Function IsValidated(ByVal mybox As Control, ByVal ErrProvider As ErrorProvider, Optional ByVal TagName As String = "Required") As Boolean Dim Ctrl As Control Dim IsValid As Boolean = True 'Validate Text Boxes For Each Ctrl In mybox.Controls If Ctrl.Tag = TagName Then If TypeOf Ctrl Is TextBox And Ctrl.Text = String.Empty Then ErrProvider.SetError(Ctrl, "Required Field!") IsValid = False Else ErrProvider.SetError(Ctrl, "") End If 'Validate Combo Boxes If TypeOf Ctrl Is ComboBox Then If Ctrl.Visible = True Then If CType(Ctrl, ComboBox).SelectedIndex() <= -1 Then ErrProvider.SetError(Ctrl, "Invalid Selection!") IsValid = False Else ErrProvider.SetError(Ctrl, "") End If End If End If End If Next Return IsValid End Function
قم بحفظ المشروع وعمل Build .
فيما يلي وصف مختصر لمعاملات الدالة :
MyBox : يمثل الكائن الذي يحتوي علي الـ Controls التي تريد عمل Validate لها ويفضل دائماً في واجهات الاستخدام استخدام GroupBox .
ErrProvider : كائن الـ Error Provider الذي يجب وضعه في النموذج لتحديد الحقول المطلوبة ولم يتم الإدخال فيها
TagName : وهو أختياري وهنا أستخدمه لمرونة التحكم في الكائنات التي أريد التحقق منها
الان لعمل إختبار للمكتبة السابقة قم باضافة مشروع جديد للمشروع الحالي وقم بتسميته TestValidation وهو Windows Application عادي
أولاً يجب إضافة المكتبة MyValidation.dll والمعمولة سابقاً الي التطبيق وذلك بالضغط بالزر الايمن علي Reference ثم Add Reference ثم Browse وقم باضافة المكتبة والتي تكون موجودة داخل المجلد bin الخاص بالمشروع MyValidation
قم باضافة GroupBox للنموذج.
قم باضافة ثلاثة مربعي نص للنموذج TextBoxes ومربعي سرد Combo Boxes داخل الـ GroupBox .
قم باضافة Error Provider للنموذج وقم بتسميته ErrProvider
في الخاصية Tag للكائنين TextBoxes والكائنين ComboBox أكتب Required
قم باضافة زر وأكتب فية الشفرة التالية :
Dim Obj As New MyValidation.ValidationClass
If Obj.IsValidated(GroupBox1, ErrProvider) Then
MsgBox("Validate Complete")
End Ifقم بعمل Run للمشروع وعند الضغط علي الزر بدون كتابة أي شئ في الحقول المطلوبة يظهر الـ Error Provider
تخيل أنك تعمل علي نموذج يحتوي علي 30 حقل ستجد أن امر التحقق من المدخلات أسهل بكثير من أن تقوم به لكل أداة علي حدا !
في المثال السابق أريد توضيح نقطة أساسية وهي أنه يجب أن نبحث عن الأفكار وليس الشفرات فالشفرات متوفرة بصورة رهيبة ولكن هل نستفيد منها ؟؟
الملف المرفق يحتوي علي المثالين السابقين .
والله الموفق.
بارك الله فيك ومشكور وما قصرت :rolleyes:
abumarie2003 كتب:-09اخي samerselo ,
كلامك جميل ولكن بالنسبه لعمل مكتبه للاكواد من اين ابدا وكيف مثلا على اي اساس سوف يتم ترتيب هذه المكتبه
ارجو الافاده وشكرا
أولا - يجب تحديد مكتبتين 1 - التحكمات التي نطورها بأنفسنا نجمعها في مكتبة واحدة للتحكمات
2 - الأكواد التي نستفيد منها في البرامج المختلفة نجمعها في مكتبة للأكواد
وفتح موضوع خاص لكل مكتبة
ثانيا - تحديد فريق عمل من الإخوة الأعضاء الذين يودون الاشتراك في المكتبات وتقسيمه إلى فريقين فريق لكل مكتبة
ثالثا - يقوم الجميع بطرح كل ما لديهم من أكواد مصدرية تفيد أيا من المكتبتين ووضعها في الموضوع المناسب
رابعا - يقوم شخص متفق عليه في كل موضوع بتجميع هذه الأكواد في مكتبة حسب النوع المتفق عليه وطرح نسخة جاهزة ونسخة سورس ليستفيد منها الجميع
هذا تصوري لطريقة عمل المكتبة التي أقترحها
وأنتظر رؤية هل أحد لديه تصور أفضل
وطبعا موافقة الجميع على تنفيذ الفكرة
تم تعديل هذه المشاركة بواسطة samerselo في 14 أغسطس 2005 في 16:24
عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه
نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا
ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا
محمد سامر أبو سلو
اقتباسأولا - يجب تحديد مكتبتين 1 - التحكمات التي نطورها بأنفسنا نجمعها في مكتبة واحدة للتحكمات2 - الأكواد التي نستفيد منها في البرامج المختلفة نجمعها في مكتبة للأكواد
وفتح موضوع خاص لكل مكتبة
ثانيا - تحديد فريق عمل من الإخوة الأعضاء الذين يودون الاشتراك في المكتبات وتقسيمه إلى فريقين فريق لكل مكتبة
ثالثا - يقوم الجميع بطرح كل ما لديهم من أكواد مصدرية تفيد أيا من المكتبتين ووضعها في الموضوع المناسب
رابعا - يقوم شخص متفق عليه في كل موضوع بتجميع هذه الأكواد في مكتبة حسب النوع المتفق عليه وطرح نسخة جاهزة ونسخة سورس ليستفيد منها الجميع
إقتراح جميل وعملي فعلاً ,, أوافق الأخ samerselo علي إقتراحه الجميل
هذا الموضوع مغلق.
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…