منتدى برامج نت | برامج نت | دليل المواقع | العاب فلاش | برامج | عيادة الطب | Free software
العاب افلام موقع منتديات

المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : * دروس مباشرة في البرمجه بلغة C#2005 مع الإجابة عن الأسئلة *


الصفحات : [1] 2

حماة النهضة
02-13-2007, 05:41 AM
بسم الله الرحمن الرحيم

فهرس الدروس


مقدمة (http://www.bramjnet.com/vb3/showpost.php?p=2631541#post2631541)

الدرس الأول - مفهوم لغات البرمجة (http://www.bramjnet.com/vb3/showpost.php?p=2684560#post2684560)

الدرس الثاني - المتغيرات (http://www.bramjnet.com/vb3/showpost.php?p=2733015#post2733015)

الدرس الثالث - الجمل الشرطية و الدوارات (http://www.bramjnet.com/vb3/showpost.php?p=2779061#post2779061)

الدرس الرابع - الإجراءات والدوال (http://www.bramjnet.com/vb3/showthread.php?p=2808699#post2808699)

الدرس الخامس - تشغيل ملف فيديو (http://www.bramjnet.com/vb3/showpost.php?p=2841621#post2841621)

الدرس السادس - تشغيل ملفات الريال بلاير (http://www.bramjnet.com/vb3/showpost.php?p=2864443#post2864443)

الدرس السابع - التنقل في ملف الميديا (http://www.bramjnet.com/vb3/showpost.php?p=2877761#post2877761)

الدرس الثامن - المصفوفات والقوائم (http://www.bramjnet.com/vb3/showpost.php?p=2899400#post2899400)

الدرس التاسع - دوال إنتاج الأرقام العشوائية (http://www.bramjnet.com/vb3/showpost.php?p=2950709#post2950709)

الدرس العاشر - التعامل مع أكثر من نافذة (http://www.bramjnet.com/vb3/showpost.php?p=2956321#post2956321)

الدرس الحادي عشر - التعامل مع ملفات XML (http://www.bramjnet.com/vb3/showpost.php?p=2966450#post2966450)

الدرس الثاني عشر - بعض مبادئ الإختبار والتحسين (http://www.bramjnet.com/vb3/showpost.php?p=3002335#post3002335)

الدرس الثالث عشر - التحكم بالصوت (http://www.bramjnet.com/vb3/showpost.php?p=3920967#post3920967)

الدرس الرايع عشر - تسجيل الأصوات (http://www.bramjnet.com/vb3/showpost.php?p=4096806#post4096806)

الدرس الخامس عشر - قوائم البرنامج (http://www.bramjnet.com/vb3/showpost.php?p=4122704&postcount=274)

الدرس السادس عشر - طول الملف (http://www.bramjnet.com/vb3/showpost.php?p=4144618&postcount=276)

الدرس السابع عشر - تغيير الواجهات الرسومية (http://www.bramjnet.com/vb3/showpost.php?p=4160492&postcount=280)


************

ستايلات للبرنامج

هذه عدد من الستايلات (http://www.7oma.com/csharp/styles/styles.zip) الجاهزة يتم إستخدامها بنسخ جميع المجلدات إلى مجلد Styles

http://www.7oma.com/csharp/styles/1.JPG

http://www.7oma.com/csharp/styles/4.JPG

http://www.7oma.com/csharp/styles/3.JPG

http://www.7oma.com/csharp/styles/2.JPG

http://www.7oma.com/csharp/styles/5.JPG

http://www.7oma.com/csharp/styles/6.JPG

http://www.7oma.com/csharp/styles/7.JPG

http://www.7oma.com/csharp/styles/8.JPG

http://www.7oma.com/csharp/styles/9.JPG

http://www.7oma.com/csharp/styles/10.JPG

تحميل الستايلات (http://www.7oma.com/csharp/styles/styles.zip)

..


مقدمة

السلام عليكم ورحمة الله وبركاته

بإختصار الموضوع عبارة عن مجموعة دروس مبسطة في لغة C# 2005 للمبتدئين

بهدف إنشاء هذا البرنامج لتشغيل الصوتيات والمرئيات :

http://www.7oma.com/csharp/images/image12-2.jpg

الدروس ستكون مقسمة إلى قسمين , قسم الدرس وقسم التطبيق

وفي كل درس نبدأ بشرح الفكرة أو المفهوم أو القاعدة

وفي قسم التطبيق نطبق اللي تعلمناه من الدرس على مشروع البرنامج

ونستمر بهذه الطريقة كل درس إلى أن ننجز المشروع

لكن قبل البداية يجب تجهيز برنامجين للعمل على اللغة

البرنامج الأول من ميكروسوف وهو برنامج ملفات لغة البرمجة .NET Framework

يمكن تحميلة من صفحة التحميل الرئيسية لميكروسوفت :

http://www.microsoft.com/downloads/

ثم إبحث عن Net Framework 2.0

حجم الملف يقارب 24 ميجا بايت

عند فتح هذا اللينك ستجد زر مكتوب عليه Download

.........

البرنامج الثاني هو بيئة التطوير , أي المكان الذي سنكتب فيه تعليمات البرنامج ونجربه

يوجد هناك عدة بيئات تطوير مجانية متوفره منها بيئة ميكروسوفت بإصدارها المضغوط Express

لتحميل C# 2005 Express (http://msdn.microsoft.com/vstudio/express/visualcsharp/default.aspx)

حجم الملف يقارب 450 ميجا بايت

إذا لم تستطع تحميل هذه البيئة فهناك بيئة أخرى مجانية

Sharp Developer (http://prdownloads.sourceforge.net/sharpdevelop/SharpDevelop2_2.0.0.1591_Setup.exe?use_mirror=nchc )

حجم الملف يقارب 4 ميجا بايت

لتنظيم العمل على الدروس ينصح عمل مجلد جديد على القرص المحلي D وتسميته CS

يجب أولاً تنصيب البرنامج الأول dotnetfx.exe

وعند الإنتهاء منها يتم تنصيب البيئة SharpDevelop2_2.0.0.1591_Setup.exe أو C# Express

وبهذا تكون مستعداً لتلقي الدرس الأول

..

Al_Shaimaa
02-13-2007, 06:06 AM
تسلم أخي الكريم و أن شاء الله أكون أحد المنضمين لهذه الدروس..... ربنا يوفقك :)

veto_44
02-13-2007, 10:51 AM
شكرا لك خي الفاضل مبادرة طيبة منك اتمنى منك الاستمرار بها
ومنتظرين الدرس الاول دمت برعاية الله وحفظه .

الفرعون المحترف
02-13-2007, 11:10 AM
ماشاء الله بارك الله فيك اخي الحبيب
شكرا لك بالتوفيق

zakimoulayabdellah
02-13-2007, 11:13 AM
goood friend
thinks

حماة النهضة
02-14-2007, 04:13 AM
تسلم أخي الكريم و أن شاء الله أكون أحد المنضمين لهذه الدروس..... ربنا يوفقك :)
السلام عليكم ..

مرحبا بكِ أختي

ويسعدنا الترحيب بأول المشتركين معنا

وفقكم الله لما يحب ويرضى :)


..][ حمــاة النهضــة ][..

حماة النهضة
02-14-2007, 04:22 AM
شكرا لك خي الفاضل مبادرة طيبة منك اتمنى منك الاستمرار بها
ومنتظرين الدرس الاول دمت برعاية الله وحفظه .

السلام عليكم ..

مرحبا بك أخي

وسأستمر بإذن الله للنهاية وإن بقي معي شخص واحد فقط

والدرس الأول سيكون يوم الثلاثاء الجاي إن شاء الله لن نتأخر

وتسلم أخي الكريم الله يحفظك ويحميك :)


..][ حمــاة النهضــة ][..

حماة النهضة
02-14-2007, 04:26 AM
ماشاء الله بارك الله فيك اخي الحبيب
شكرا لك بالتوفيق
السلام عليكم ..

مرحبا بك أخي

بارك الله لنا ولك

أسعدني ترحيبك كثيرا

الله يحفظك ويحميك أخي :)


..][ حمــاة النهضــة ][..

حماة النهضة
02-14-2007, 04:34 AM
goood friend
thinks
السلام عليكم ..

مرحبا أخي

تسلم .. العفو ^^


---------------------------

كما اتفقنا تكون البداية يوم الثلاثاء الجاي بإذن الله ولو في أحد بده يغير الميعاد يقول وممكن يتغير بما يناسبكم

والسلام عليكم ورحمة الله وبركاته


..][ حمــاة النهضــة ][..

imadin
02-14-2007, 07:56 AM
بارك الله فيك أخي الكريم ،ان شاء الله اكون حاضر

abdou0000
02-14-2007, 09:25 AM
thx for that generous effort i really needed to learn this language for me study

حماة النهضة
02-15-2007, 04:11 PM
بارك الله فيك أخي الكريم ،ان شاء الله اكون حاضر
السلام عليكم ..
يسعدني هذا أخي الكريم ..
بارك الله لنا ولك
:)

..][ حمــاة النهضــة ][..

حماة النهضة
02-15-2007, 04:25 PM
thx for that generous effort i really needed to learn this language for me study
Don't mention it ^^
ربنا يحميك ويوفقك بدراستك ...
:)

---------------------------------------------

موعدنا الثلاثاء القادم بإذن الله .. أو ممكن نبدأ يوم الأحد يكون أسرع ^^

والسلام عليكم رحمة الله وبركاته


..][ حمــاة النهضــة ][..

Ahmed_ghanam
02-16-2007, 12:15 PM
مشكور اخى الكريم بارك الله فيك

حماة النهضة
02-20-2007, 07:24 AM
السلام عليكم ورحمة الله وبركاته
أهلا جميعا .. مشتركين وأعضاء وزوار ..
اليوم موعد درسنا الأول .. حاولت أن أضعه يوم الأحد ولكن المنتدى علق معي !
المهم أن نبدأ .. هيا :smailes100:


الدرس الاول

مفهوم لغات البرمجة

منذ بداية ظهور الكهرباء وتطورها , ظهرة فكرة معالجة التيار الكهربائي والإستفادة منه

فمثلاً المصباح يأخذ الكهرباء ويعالجها "يحولها" إلى ضوء

والراديو يأخذ الكهرباء ويحولها إلى صوت .. وهكذا

وبالتالي فإن أي عمل مع الكهرباء يحتاج إلى ثلاثة أشياء مهمة

1- مدخلات "تيار كهربائي".

2-معالجة "تحويل التيار إلى ضوء , صوت....".

3-مخرجات "ضوء , صوت ....".

بالإضافة إلى جهاز التحويل "المصباح , الراديو"

الحاسوب لا يخرج عن هذه القاعدة فهو يحتاج إلى مدخلات ليعالجها ويحولها إلى مخرجات

مثلاً عندما تضغط اي زر في لوحة المفاتيح , فإن تيار كهربائي يتولد وينطلق بإتجاه المعالج

المعالج بدوره يحول هذا التيار إلى تيار مختلف ينطلق نحو الشاشة ويظهر الحرف

قد يتسائل البعض كيف يفرق المعالج بين زر وآخر في لوحة المفاتيح , فجميع الأزرار تطلق تيار كهربائي

وهذا هو أساس العمل في الحاسوب , حيث أن معالج الكمبيوتر لا يستقبل تيار مستمر

كما في المصباح , أو في الراديو , أو في أي جهاز كهربائي

وإنما معالج الكمبيوتر يستقبل تيار متغير ,

للتوضيح نفرض أن العدد 1 يمثل مرور تيار والعدد 0 يمثل عدم مرور التيار

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

0000000000000000

أما عندما نضيئ المصباح فإن التيار يكون هكذا

1111111111111111

وهكذا مع الراديو و المكواه و.و.و.

لكن في الحاسوب يختلف شكل التيار لأنه يكون متغير فيكون شيئاً هكذا

110001010100011110101000111010101001

وهذه هي الطريقة التي يفرق المعالج حرف عن حرف آخر فالتيار الذي يمثل حرف الواو مثلاً يكون هكذا

11001010 وحرف الطاء يكون هكذا 10111010 وحرف النون يكون هكذا 01010011

وبالتالي فإن كلمة وطن ستكون هكذا

010100111011101011001010

ولا ننسى أن معنى 0 عدم مرور تيار و معنى 1 مرور تيار وبإفتراض أن سرعة قراءة المعالج لرقم هي ثانية واحد

فأن التيار الكهربائي الذي يمثل حرف الواو 11001010 سيكون هكذا:

في البداية ينقطع التيار لفترة ثانية ثم يمر التيار لمدة ثانية

ثم ينقطع لمدة ثانية ثم يمر لمدة ثانية ثم ينقطع لمدة ثانيتين ثم يمر لمدة ثانيتين

أي أن المعالج سيستغرق ثمان ثواني لقراءة حرف الواو

في المثال السابق افترضنا أن سرعة المعالج هي ثانية لكنها في الحقيقة أسرع بكثير

ومن هنا أعتقد انا فهمنا ما معنى سرعة المعالج "هي سرعة قراءته للرقم الواحد"

والرقم الواحد سواءاً كان 1 أو 0 يسمى "بت" Bit

فعندما تكون سرعة المعالج 3200 يعني أنه يقراً 3200 ميجا بايت في الثانية الواحدة

والميجا يحتوي على 1024 كيلو بايت والكيلو بايت يحتوي على 1024 بايت

والبايت يحتوي على 8 بت

يعني أن هذا المعالج يقراً 26843545600 بت في الثانية الواحدة

يعني أنو بيقرأ حرف الواو في مدة 0.000000000037 من الثانية

والآن بعد أن عرفنا كيف يقرأ الكمبيوتر الكلمات بقي أن نعرف كيف ينفذ الكمبيوتر الأوامر المطلوبة منه.

كان الحاسوب في بدايته يستقبل الأوامر كتيار كهربائي مثل ما رأينا سابقاً

لكن هذه الطريقة غير عملية , فإذا أردنا أن نأمر الكمبيوتر بأن يطبع كلمة وطن على الشاشة

فسيكون الأمر شبيهاً بهذا 01010011101010101011010100111011101011001010

فهذه هل اللغة التي يفهمها الحاسوب , لكنها لغة صعبة الفهم على الإنسان

لذلك ظهر ما يسمى بلغات البرمجة " وهي لغات قريبة من لغة الإنسان ويفهما الحاسوب"

حيث أن لغات البرمجه سهلت التعامل مع الحاسوب وأصبح من الممكن إصدار الأوامر للحاسوب هكذا

Print "وطن"

وحيث أن الحاسوب لا يفهم هذه اللغة يوجد ما يسمى بالمترجم , وهو برنامج ملحق بلغة البرمجة

وظيفته قراءة الأوامر المدخلة وتحويلها إلى تيار يفهمه المعالج , لكن عملية الترجمة تتم بشكل غير ظاهر

فما على المبرمج إلا أن يكتب الأوامر ويشغل البرنامج .. والمترجم يقرأ Print "وطن" ويحولها إلى

01010011101010101011010100111011101011001010 ويرسلها إلى المعالج..

مفهوم الكائنات

في لغات البرمجة كل شيئ يعتبر كائن له صفات وله أفعال كأي كائن في الوجود

فمثلاً السيارة كائن له صفات "مثل اللون والشكل وعدد الإطارات...." وله أفعال مثل "السير , التوقف, ..."

لا حظوا أن الأفعال قد تكون من الكائن نفسه "السير" و قد تكون من كائن آخر

في الحاسوب أيضاً الأمر لا يختلف فكل شيئ يعتبر كائن له صفات وأفعال

فمثلاً هذا المنتدى كائن له صفات وأفعال

وزر"إقتباس" تحت هذه المشاركة هو كائن له صفات مثل اللون

و الكلام المكتوب عليه و الحجم... وله أفعال مثل أنه يعمل رد جديد مع إقتباس الرد الحالي...

و صندوق النص في آخر هذه الصفحة عند الرد السريع ,

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

وزر ابدأ أو Start في الوندوز هو كائن وشريط المهام Task Bar هو كائن يحتوي على كائن آخر "زر ابدأ"

إذن يمكن لكائن أن يحتوي على عدة كائنات فالسيارة كائن يحتوي على كائن آخر وهي الإطارات مثلاً

التطبيق

بعد تنصيب البرامج أفتحوا مجلد CS اللي عملتوه في القرص D

وداخل المجلد CS اعملوا مجلد جديد اسمه Projects

من سطح المكتب أفتحو ايقونة برنامج بيئة التطوير وهذا شكلها:

http://www.freewebtown.com/gfsd/Image1-1.JPG

بعد ما يفتح معاكم برنامج البيئة بيظهر لكم زرين في الوسط هكذا :

http://www.freewebtown.com/gfsd/Image1-2.JPG

إذا لم تظهر الصورة ممكن تشوفوها هنــا (http://www.mexat.com/vb/attachment.php?attachmentid=142620&d=1154797694)

اضغطوا على زر New Solution المعلم عليه بالأحمر

بتظهر لكم هذه النافذة:

http://www.freewebtown.com/gfsd/Image1-3.JPG

اضغطوا على إشارة + الموضحه في رقم 1 وبعدين أضغطوا علىwindows applications كما في رقم 2

ويعدين أنقروا على Windows Application كما في رقم 3 , عند صندوق اسم المشروع أكتبوا

MyMediaPlayer كما في رقم 4 وبعدين أنقروا على الزر في رقم 5 وإختاروا مجلد Projects

اللي عملتوه داخل مجلد CS في القرص D وبعدين انقروا على زر Create في رقم 6

بتظهر لكم نوافذ المشروع وفيها شفرة المشروع الإفتراضية , تحت نافذة الشفرة انقروا على زر Design كما في الصورة

http://www.freewebtown.com/gfsd/Image1-4.JPG

بتظهر أمامكم هذه النوافذ:

http://www.freewebtown.com/gfsd/Image1-5.JPG

في اليسار انقروا على Windows Forms كما في رقم 1 بتظهر لكم جميع الكائنات اللي نحتاجها في البرامج

وفي الوسط بتظهر لكم نافذة فارغة نسميها Form وهذه النافذة هي النافذة الرئيسية للمشروع

ولا ننسى إن هذه النافذة تعتبر كائن لها صفات مثل إسمها " MyMediaPlayer" ولها أفعال مثل ما راح نشوف بعدين

على اليسار فيه جدول وهذا هو جدول صفات الكائنات ومن خلاله ممكن نغير أي صفة من صفات الكائن

أيش رأيكم لو نغير لون الفورم إلى الأزرق.. نروح على جدول الخصائص وندور على خاصية BackColor

ننقر على الصندوق اللي قدامها بتظهر لنا قائمة ألوان , نختار منها أي لون وليكن الأزرق

نلاحظ أن لون الفورم تغير , يعني أن احنا غيرنا صفة من صفات هذا الكائن

الآن رجعوا الكائن للونه الطبيعي

فيه صفة أيضاً مهمة إسمها Text دوروا عليها في جدول الصفات عند رقم 2

حتلاقوا مكتوب أمامها MyMediaPlayer

أمسحوها وأكتبوا بدلها "مشغل الصوت والفيديو".

ملاحظة: لسهولة الوصول إلى الصفات ممكن نرتب الصفات بالترتيب الأبجدي بالضغط على زر الترتيب في أعلى جدول الصفات :

http://www.freewebtown.com/gfsd/Image1-6.JPG

من نافذة الأدوات على اليسار انقروا على صورة الزر الكتوب قدامه Button

واستمروا في الضغط واسحبوا الماوس لفوق الفورم الفاضي

يعني اعملوا سحب للزر وافتلتوه فوق النافذة الفاضية بيكون شكل النافذة هكذا:

http://www.freewebtown.com/gfsd/Image1-7.JPG

ممكن تغيروا حجم أو موقع الزر زي ما تحبوا , الآن تأكدوا من إختيار الزر و روحوا على نافذة الصفات

دوروا على صفة اسمها Text وأكتبوا بدل button1 أكتبوا "ترحيب".

لاحظوا أنا غيرنا صفة من صفات الزر , ولكن كيف نغير من أفعال الزر لأنه كائن ولا بد له من أفعال

والزر يمكن أن يفعل أي شيء لكنا نريده أن يظهر رسالة ترحيب ..

للذهاب إلى أفعال الزر أنقر نقراً مزدوجا Double Click على الزر , ستظهر لك نافذة الشفرة :

http://www.freewebtown.com/gfsd/Image1-8.JPG

وينتقل مؤشر الماوس إلى مكان بين حاصرتين مكتوب فوقة void Button1Click...

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

لا تهتم للشفرة المكتوبة فوق ولا تعدل فيها أبدأ فهي مهمه لتشغيل البرنامج

الآن بين الحاصرتين يجب أن نكتب الأمر الذي يظهر الرسالة وهذا الأمر هو


MessageBox.Show("مرحباً بكم إلى سي شارب");


لنشرح الأمر , أولا MessageBox هو كائن في لغة البرمجة يمثل إظهار رسالة

و Show هو كائن أخر داخل كائن MessageBox ويقوم بطباعة الرسالة على الشاشة

وكلمة "مرحباً بكم إلى سي شارب" تعتبر مدخل للكائن وهو يعالج الأمر ويخرج الرسالة على الشاشة

لاحظ أن الأمر MessageBox.Show يعني أظهر رسالة , ولكن المعالج لن ينفذة لأنه لا يعرف ماذا يكتب في الرسالة

لذلك يجب فتح قوس وكتابة الرسالة بين علامة إقتباس , والقوسين تعني أن بينهما مدخلات ,

أما علا مة الأقتباس فهي مهمة لأنه بدونها سيعتبر المترجم أن مرحباً بكم إلى سي شارب هي جزء من الأمر

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

في نهاية السطر يجب كتابة الفاصلة المنقوطه ختى نخبر المترجم أن هذه هي نهاية السطر وينتقل إلى السطر التالي

ملاحظة: يجب أن تكون حذراً جداً عند كتابة الشفرة فزيادة نقطة أو حرف تجعل المترجم يرتبك ولا تشغل البرنامج

وأيضاً يجب مراعاة الأحرف الكبيرة والصغيرة

فالمترجم لن يفهم هذا الأمر messagebox بينما يفهم هذا الأمر MessageBox


بقي لنا أن نشغل البرنامج ونرى كيف سيعمل , لتشغيل البرنامج أنقر على زر التشغيل أعلى نافذة الشفرة:

http://www.freewebtown.com/gfsd/Image1-9.JPG

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

http://www.freewebtown.com/gfsd/Image1-10.JPG

مبروك لقد نجحت في تنفيذ أول برنامج بلغة C#

الواجب

اعمل مشروع جديد و اعمل فيه زر لرسالة ترحيب

غيّر لون النافذة الأساسية , و غير حجمها , وغير لون الزر وغير حجمه

وممكن تعمل زر ثاني يظهر رسالة ثانية وارسل التطبيق

لإرسال التطبيق:

اذهب إلى مجلد CS في القرص D ثم إلى مجلد Projects ثم إلى مجلد MyMediaPlayer

ثم إلى مجلد bin ثم إلى مجلد Debug ستجد ملف تنفيذي بإسم MyMediaPlayer

هذا هو برنامجك الأول .. أضغطه ببرنامج الونزيب وأرسله لي

ملاحظة:لما تعمل الواجب أو لما بدك تجرب الكائنات الثانية , أعمل مشروع جديد

والعب فيه زي ما تحب بس لا تعدل أي حاجة في المشروع اللي بنطبق عليه

. نهاية الدرس الأول .

Desert_Eagle

--------------------
أخي Ahmed_ghanam
مرحبا بك أخي ..
يسعدني مرورك والاستمرار ^^
بارك الله لنا ولك ..
:)
--------------------
أنتظركم ..
الله يحميكم ويوفقكم يارب ..
ولو في أي شيء مش واضح أو أسئلة .. تفضلوا ^^

والسلام عليكم ورحمة الله وبركاته


..][ حمــاة النهضــة ][..

dutsh2006
02-20-2007, 03:58 PM
بجد مشكووور
بس لى طلب صغير
انا عايز أمر إظهار التاريخ وامر الخروج من البرنامج
مستنى ردك

imadin
02-21-2007, 03:33 PM
مشكور على الدرس واستفدت منه حقيقة

dutsh2006
02-21-2007, 09:29 PM
بجد مشكووور
بس لى طلب صغير
انا عايز أمر إظهار التاريخ وامر الخروج من البرنامج
مستنى ردك

حماة النهضة
02-23-2007, 06:43 AM
بجد مشكووور
بس لى طلب صغير
انا عايز أمر إظهار التاريخ وامر الخروج من البرنامج
مستنى ردك
العفو ^^

لاظهار التاريخ
System.DateTime.Now.ToShortDateString();

الدالة Now في الفئة DateTime ترجع قيمة من نوع تاريخ للتاريخ الحالي المسجل في النظام

وفيها دوال تحويل كثيرة منها ToShortDateString

للخروج من البرنامج:
Application.Exit();

الكائن Application يمثل خصائص ووظائف التطبيق الحالي

Desert_Eagle


..][ حمــاة النهضــة ][..

حماة النهضة
02-23-2007, 07:13 AM
مشكور على الدرس واستفدت منه حقيقة
الحمد لله ^^
وإن شاء الله تستفيد من باقي الدروس كمان ..

ربنا يحميك ..

-----------------------
بنتظر التطبيقات من الأعضاء المتابعين معي لحتى نقدر ننزل الدرس الجديد بميعاده يوم الثلاثاء الجاي إن شاء الله ^^
هنا بالموضوع أو بالرسايل الخاصة ..

في أمان الله


..][ حمــاة النهضــة ][..

حماة النهضة
02-27-2007, 02:14 PM
السلام عليكم ورحمة الله وبركاته
أهلا جميعا .. :)

اليوم موعد الدرس الثاني .. لنبدأ ...

الدرس الثاني

المتغيرات

في الدرس الأول تعلمنا أن كل شيئ في الحاسوب يعتبر كائن

وفي الحقيقة هناك نوعين من الكائنات :

كائنات حقيقية: وهي التي لها صفات وأفعال ويمكن أن يكون لها تمثيل مرئي

متغيرات : وهي متغيرات لا تحتوي على صفات أو أفعال وإنما تحتوي على قيمة محددة ولا تكون مرئية

أي انه من الممكن أن يحتوي الكائن "المتغير" X على قيمة مخزنة في ذاكرة الحاسوب

ومن الممكن أن تكون قيمة المتغير أما رقم أو نص أو حرف أو رقم عشري أو....

وإذا أردنا أن ننشئ متغير في ذاكرة الحاسوب فيجب أن نحدد نوع القيمة التي ستحملها المتغير

مع العلم أننا نختار إسم الكائن كما نشاء مادام الإسم يحقق الشروط التالية:

1-أن يكون اسم المتغير حروف أو ارقام لاتينية

2-أن لا يكون أول حروف الإسم رقم , فهذا الإسم غير مسموح 5int بينما هذا مسموح int5

3-أن لا يحتوي الإسم على علامات أواشارات مثل # أو $ أو * أو + , الإشارة المسموحة فقط هي _

وهذه الشروط تنطبق على أسماء الكائنات أو المتغيرات ألتي سنقوم بإنشائها

إذن المتغير هو كائن يستخدم لتخزين قيمة من نوع محدد

مثلاً إذا أردنا أن نعرف متغير اسمه x من نوع رقم سيكون الكود كالتالي:

int x;

وكلمة int إختصار لكلمة integer ومعناها عدد صحيح

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

لاحظ أنك تستطيع تغيير اسم المتغير كما تشاء المهم أن تراعي شروط التسمية الثلاثة

وإذا أردنا تحميل هذا المتغير قيمة محدد يكون الكود كالتالي:

x=20;

الكود السابق معناه أن المتغير x يحمل القيمة 20 ويستمر بحمل القيمة حتي يتوقف البرنامج أو نحملة قيمة أخرى

لاحظ الكود التالي:

int Var1;
int Var2;
Var1=10;
Var2=Var1;

قمنا بتعريف متغيرين من نوع رقم صحيح ثم حملنا الرقم الأول قيمة 10

وفي السطر الأخير حملنا المتغير الثاني قيمة المتغير الأول أي أن المتغير الثاني يحمل أيضاً القيمة 10

ملاحظة مهمه:في لغات البرمجه معامل التساوي ليس تبادلي يعني أن

Var2=Var1

لا تساوي أبداً

Var1=Var2

لإن معامل = في لغات البرمجة يقوم بنقل قيمة المتغير في اليمين إلى المتغير في اليسار

فلو عكسنا المعاملات في السطر الأخير من الكود السابق هكذا :


int Var1;
int Var2;
Var1=10;
Var1=Var2;

فسيظهر لنا خطأ عند السطر الأخير لأن المعالج سيحاول نقل ما في المتغير Var2 إلى المتغير Var1

ولكن المتغير Var2 لا يحتوي على أي قيمة لذلك سيظهر لنا الخطأ

بعض أنواع المتغيرات وكيفية تعريفها:

رقم صحيح int
نص أو كلمة string
رقم حقيقي "رقم يقبل الكسور العشرية مثل 41.51" double
حرف char
تاريخ أو وقت DateTime
قيمة بوليانية bool

معنى القيمة البوليانية أي أن المتغير يحمل قيمة صح أو خطأ , للتوضيح:

int k;
string w;
double m;
char n;
bool p;

k=15;
w="هذا نص";
m=12.15;
n="م";
p=true;

لا حظ أن المتغير من نوع رقم لا يحتاج إلى علامتي إقتباس

بينما المتغير من نوع نص أو حرف يحتاج إلى علامتي إقتباس

المتغير من نوع bool يحمل أما قيمة true أو false

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


k="نص";

سيظهر لنا خطأ لأنا نحاول أن نحمل المتغير k قيمة من نوع نص

بينما المفروض أن يحمل قيمة من نوع رقم كما عرفناه

وأيضاً هذا الكود خاطئ لنفس السبب

k=w;

حيث أن w يحتوي على قيمة من نوع نص و k المفروض أن يحمل قيمة من نوع رقم

ماذا لو كان لدينا هذا الكود:

w="45";
k=w;

سيظهر لنا خطأ أيضاً عند السطر الثاني بالرغم من أن w يحمل رقم

لأن المترجم لا يعرف أن w يحمل رقم , فهو يعتبر كل ما هو بين علامتي اقتباس على أنه نص

وبالتالي فالمترجم لن يقبل أن يحمل k قيمة نصية لأن من المفروض أن يحمل رقم

للتغلب على هذه المشكلة يوجد في بيئة التطوير كائن للتحويل ما بين الأنواع

وهذا الكائن يقوم بتحويل القمية إلى أي نوع فإذا اردنا تنفيذ الكود السابق بإستخدام كائن التحويل:

w="45";
k=Convert.ToInt32(w);

الكائن Convert قام بأخذ قيمة w وحولها إلى رقم ثم حملها للمتغير k

لاحظ أننا للوصول إلى أفعال أو صفات الكائن نكتب اسم الكائن ثم نقطة ثم فعل أو صفة الكائن

فالكائن Convert يحتوي على فعل ToInt32 لذلك كتبنا اسم الكائن ثم نقطه ثم فعل الكائن

ووضعنا بين القوسين المدخلات , ومن أفعال الكائن Convert:

ToInt32 للتحويل إلى رقم صحيح كما رأينا في المثال السابق
ToString للتحويل إلى نص
ToDouble للتحويل إلى عدد عشري
ToChar للتحويل إلى حرف
ToBoolean للتحويل إلى قيمة بوليانية

يتبع ... التطبيق.. في الرد التالي

حماة النهضة
02-27-2007, 02:33 PM
التطبيق:

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

غير النص الكتوب في الزر من "ترحيب" إلى "اظهار قيمة x" من خلال تعديل الصفة Text من جدول الصفات

انقر نقراً مزدوجا على الزر لتنتقل إلى شفرة الزر .. ثم قم بحذف سطر الأوامر التالي:
MessageBox.Show("مرحباً بكم إلى سي شارب");

في مكان اكود المحذوف أكتب الكود التالي:

int x;
x=50;
MessageBox.Show(x);

في السطر الأول عرفنا متغير اسمه x سيحمل قيمة من نوع رقم صحيح

في السطر الثاني حملنا المتغير x قيمة 50

في السطر الثالث كتبنا أمر اظهار الرسالة , لاحظ أننا وضعنا x بدل نص الرسالة

إلى أن المترجم سيقوم بإظهار رسالة ويكتب داخلها القيمة المحملة على x

قبل تجربة البرنامج , هل تعتقد أن هناك خطأ في الشفرة السابقة؟

نعم هناك خطأ فلو تجرب تشغيل البرنامج ثم الضغط على الزر ستظهر لك رسالة خطأ

وسبب الخطأ أن كائن MessageBox.Show يحتاج إلى مدخلات من نوع نص ليظهرها في الرسالة

وقد مررنا x على أنه المدخلات ولكنه من نوع رقم صحيح

ربما يتسائل البعض ما أدراني أن الكائن MessageBox.Show يحتاج إلى مدخلات من نوع نص وليس من نوع رقم

الأمر بسيط جداً , إذا كنت تريد ان تعرف نوع المدخلات التي يحتاجها الكائن

سيظهر لك ذلك في رسالة صغيرة بمجرد ما تفتح القوس الأول كما في الصورة:

http://www.freewebtown.com/gfsd/Image2-1.JPG

عندما انتهيت من كتابة القوس الأول ظهر صندوق المعلومات وأظهر اسماء وانواع المدخلات التي يحتاجها الكائن

السهم يشير إلى الكلمة التاليه:
string text
الجزء الأول من الكلمة السابقة يعني نوع المدخل وهو string يعني نص

والجزء الثاني هو أسم المدخل text وهذا سنشرحه فيما بعد ,

ولكن ما يهمنا هو الجزء الأول لنعرف نوع المدخل الذي يحتاجه الكائن

ملاحظة:بعض الكائنات ومنها كائن MessageBox.Show يمكن أن تقبل مدخلا تمتعدده

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

الكائن MessageBox.Show يقبل 21 نوع من المدخلات

ومن الممكن أن تتجول بين أنواع المدخلات الممكنه للكائن بالضغك على زر الأسهم فوق وتحت

في لوحة المفاتيح عند ظهور صندوق معلومات المدخلات كما في الصورة:

http://www.freewebtown.com/gfsd/Image2-2.JPG

ولكن ما يهمنا حالياً من أنواع المدخلات هو النوع رقم 15 الذي يحتاج فقط لنص الرسالة


نعود إلى الكود السابق الذي أظهر لنا خطأ نتيجة تضارب انواع البيانات

لحل مشكلة التضارب نستخدم كائن التحول لتحول قيمة x إلى نص ثم تمريرها إلى الكائن
MessageBox.Show

لأنه كما قلنا لا يقبل إلا مدخلات من نوع نص و x من نوع رقم

الكائن الذي يحول من رقم إلى نص هو Convert.ToString

وبالتالي سيصبح الكود الصحيح هكذا:

int x;
x=50;
MessageBox.Show(Convert.ToString(x));

جرب البرنامج الآن واضغط على الزر ستظهر لك رسالة مكتوب عليها 50

وهكذا تغلبنا على مشكلة تضارب البيانات

..

لتوسيع التطبيق سنستخدم كائن آخر من كائنات البيئة وهو مربع النص

اضغط على زر Design أسفل الشفرة لترجع إلى نافذة التصميم

http://www.freewebtown.com/gfsd/Image2-3.JPG

الآن قم بسحب كائن مربع النص وأفلته فوق النافذة كما سحبت الزر في الدرس الأول

http://www.freewebtown.com/gfsd/Image2-4.JPG

ليصبح شكل النافذة هكذا:

http://www.freewebtown.com/gfsd/Image2-5.JPG

تأكد من إختيار من إختيار مربع النص واذهب إلى جدول الصفات

إبحث عن الصفة (Name) ستجد مكتوباً أمامها textBox1 غيرها إلى t1

لاحظ أنا غيرنا إسم الكائن من textBox1 إلى t1 وذلك لسهولة التعامل معه في الشفره كما سنرى لاحقاً

الآن اضغط مزدوجاً على الزر لترجع إلى الشفرة

أمسح السطر الثاني من الكود السابق وأكتب بدل منه هذا الكود

x=t1.Text;

لاحظ أن الكائن t1 الذي هو مربع النص له صفة اسمها Text وهي تمثل النص المكتوب عليه

معنى الكود السابق أن المترجم سيقوم بأخذ ما هو مكتوب في مربع النص المسمى t1 ويحمله للمتغير x

أي أن الكود كاملأ سيصبح هكذا:
int x;
x=t1.Text();
MessageBox.Show(Convert.ToString(x));

ملاحظة:لمعرفة صفات وأفعال الكائن أكتب إسم الكائن ثم أكتب نقطة ,

ستظهر لك نافذة بجميع اعمال وصفات الكائن ففي المثال السابق بمجر ما تكتب t1 ثم تكب نقطة

سيظهر لك هذا الصندوق :

http://www.freewebtown.com/gfsd/Image2-6.JPG

وبمجرد ما تكتي حرف t من كلمة Text سينقل الإختيار في الصندوق إلى كلمة Text:

http://www.freewebtown.com/gfsd/Image2-7.JPG

وللإختصار اضغط على زر Tab لكي تكتب كلمة Text آلياً


لاحظ في الصورة السابقة أن نوع صفة Text هو string أي نص

وبالتالي لو حاولت تنفيذ البرنامج وضغط الزر سيظهر خطأ لأننا حاولنا أن نحمل المتغير x قيمة نصيه

بينما يجب أن نحملة رقم , يأتي دور كائن التحويل مرة أخرى ولكن هذه المرة من نص إلى رقم

فيصبح الكود الكامل والصحيح هكذا:
int x;
x=Convert.ToInt32(t1.Text);
MessageBox.Show(Convert.ToString(x));
في السطر الأول عرفنا متغير من نوع رقم

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

وفي السطر الثالث لم نغير شيء

الآم نفذ البرنامج , وقبل أن تضغط الزر أكتب أي رقم في مربع النص ثم اضغط الزر

ستظهر لك رسالة بالرقم الذي كتبته

تأكد انك ستكتب رقم وليس حرف وإلا ظهرت لك رسالة خطأ

..

لتوسيع التطبيق أضف متغيرين آخرين y,z وأضف مربع نص آخر وسمه t2

غير النص المكتوب على الزر وأكتب بدلاً منه "اظهار ناتج الجمع"

ليكون شكل النافذة هكذا:

http://www.freewebtown.com/gfsd/Image2-8.JPG

الآن اذهب إلى الشفرة وعدلها إلى التالي:

int x;
int y;
int z;
x=Convert.ToInt32(t1.Text);
y=Convert.ToInt32(t2.Text);
z=x+y;
MessageBox.Show(Convert.ToString(z));
عرفنا ثلاثة متغيرات من نوع رقم صحيح

في السطر الرابع حملنا x الرقم المكتوب في t1

وفي السطر الخامس حملنا y الرقم المكتوب في t2

وفي السطر السادس حملنا z مجموع x وy

وفي السطر السابع أظهرنا قيمة z في الراسلة , لاحظ أنا وضعنا z بدل x في السطر الأخير

الآن قم بتنفيذ البرنامج , وأكتب عدداً صحيحاً في كل مربع نص وأضغط الزر

ستظهر لك نافذة مجموع العددين :

http://www.freewebtown.com/gfsd/Image2-9.JPG

اغلق الرسالة وجرب أن تضع في أحد مربعات النص رقماً حقيقياً مثل 41.25 واضغط على الزر

ستظهر لك رسالة خطأ لأن المتغيرات xوyوz تحمل متغيرات من نوع رقم صحيح وأنت حاولت أن تحملها رقم حقيقي

اضغط على زر Continue في رسالة الخطأ ليتم إيقاف تنفيذ البرنامج:

http://www.freewebtown.com/gfsd/Image2-10.JPG

إذهب إلى الشفرة وحاول أن تجد الحل للقيام بجمع أعداد حقيقية, وذلك هو الواجب

تلميح:نعرف أن double تعني رقم حقيقي والكائن Convert.ToDouble يحول إلى رقم حقيقي

ما عليك إلا أن تضع double بدل من int

وتضعConvert.ToDouble بدل من Convert.ToInt32

لحظة , لم ينتهي الواجب بعد

أضف إلى البرنامج ثلاثة أزرار إضافية للقيام بباقي العمليات الرياضية

1-اظهار ناتج الطرح

2-اظهار ناتج الضرب

3-اظهار ناتج القسمة

ليصبح شكل النافذه هكذا:

http://www.freewebtown.com/gfsd/Image2-11.JPG

موفقين

. نهاية الدرس الثاني .

Desert_Eagle


أي أسئلة أو استفسارات .. أنا حاضر :)
وأي أحد بده يعرض علي الواجب أشوفه .. حاضر بإذن الله ...

الله معكم ..
السلام عليكم ورحمة الله وبركاته


..][ حمــاة النهضــة ][..

azedine
02-27-2007, 04:29 PM
je sui la
bay azedine

rosana
02-27-2007, 08:04 PM
سلام للجميع
انا عجبني الموضوع الفكرة روعة
انا معاكم متابعكم و لي محتاج مساعدة انا بالخدمة عندي بعض المعلومات على #c

imadin
02-27-2007, 08:14 PM
جهد واضح يستحق أكثر من كلمة شكر ،أنا متابع للدورة

محمد-00-
02-27-2007, 08:17 PM
مشكووووووووور

frod85
02-27-2007, 11:06 PM
تسلم أخي الكريم و أن شاء الله أكون أحد المنضمين لهذه الدروس..... ربنا يوفقك

البردعى
03-02-2007, 01:52 AM
ياجماعه انا باعلن انضمامى رغم انى متاخر لكنى هازاكر ان شاء الله بس لىل استفسار الاول هو ايه الفرق بين c#2005 وc++ علشان بس ابقى فى الصوره

حماة النهضة
03-02-2007, 01:53 PM
je sui la
bay azedine
مرحبا بك يا أخي ..
يسعدنا هذا ...
:)


سلام للجميع
انا عجبني الموضوع الفكرة روعة
انا معاكم متابعكم و لي محتاج مساعدة انا بالخدمة عندي بعض المعلومات على #c
وعليكم السلام ورحمة الله وبركاته
مرحبا أختي ..
وشكرا كتير على الرد والمساعدة ...
:)


جهد واضح يستحق أكثر من كلمة شكر ،أنا متابع للدورة
مرحبا بك يا أخي ..
ردودك تسعدنا لأنك تتابع معنا أول بأول ...
:)


..][ حمــاة النهضــة ][..

حماة النهضة
03-02-2007, 02:05 PM
مشكووووووووور
العفو ^^


تسلم أخي الكريم و أن شاء الله أكون أحد المنضمين لهذه الدروس..... ربنا يوفقك
مرحبا أخي ..
يارب تستفيد بجد من هذه الدروس ^^ ..
:)


ياجماعه انا باعلن انضمامى رغم انى متاخر لكنى هازاكر ان شاء الله
مرحبا أخي ..
ولا يهمك التأخير .. المهم تتابع معنا .. وربنا يوفقك ...
:)

بس لىل استفسار الاول هو ايه الفرق بين c#2005 وc++ علشان بس ابقى فى الصوره
هي نسخة مطورة من C++ حيث كان من المفترض تسميتها C++++
مطورة لا يعني أنها أفضل من C++ في كل النواحي , تبقى كل لغة لها مميزات وعيوب
وتتميز C# بأنها تجمع بين قوة C++ وسهولة Visual Basic
على أن C++ تبقى اللغة الأفضل لتطبيقات الهاردوير وأنظمة التشغيل


..][ حمــاة النهضــة ][..

حماة النهضة
03-02-2007, 02:47 PM
هذا الرد مخصص لكل المتابعين معنا بالدروس ... :)

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

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

منتظر ردودكم لنستمر بشكل أفضل ...
:)


..][ حمــاة النهضــة ][..

@...Khalefa
03-02-2007, 04:07 PM
الله الله
مجهود جبار يستحق التقدير وربنا يعينك علية وعلينا
وعلى فكرة شرحك فوق الممتاز
ومـــــــــــــشــــــــــــــــــــــــــكور علية

imadin
03-03-2007, 12:08 PM
أخي حماة النهضة فيما يخص شرحك هو ممتاز لاجدال فيه مع التطبيق مع أني تخلفت على الدرس الثاني وان شاء الله أتدارك،لو بإمكانك تجعل كل أسبوع درسين خاصة الدروس الأولى
التي قد تكون بسيطة واحنا معك للنهاية ان شاء الله وشكرا

سرمد الزهراء
03-05-2007, 01:36 PM
بسم الله الرحمن الرحيم
اللهم صل على محمد وآل محمد الطيبين الطاهرين
السلام عليكم أخي حماة النهضة
أنا من محبين لغة الفيجوال بيسك وانا من مدة ابحث عن هكذا دروس على النسخة الجديدة 2005 وانشاء الله أوفق في متابعة دروسكم من حين لحين وأوفق في تطبيقها ....
ولكن لدي استفسار عن البرنامجين الذين يجب علينا تنزيلهما برنامج ملفات البرمجة وبرنامج بيئة التطوير ...ماذا يعنوا ...وهل هو ضروري تنزيلهما ...بالرغم من ان البرنامج الفيجوال بيسك موجود عندي على الجهاز ... ونحن نستطيع كتابة البرنامج فيه والله أعلم
مشكور أخي على الدرسان الأوليان ...
أما بالنسبة للدروس فنحن نستطيع تعريف المتغيرات هكذا dim x,y,z as integer
ثم نخصص ل x مكان لكي نضع القيمة فيه ونكتب مثلا x= 10
y=15
z=x+y
textbox1.text=z
صح هكذا ..أخي الكريم
في الأخير أتمنى منكم أن تعطوني كود ربط الفلاش بالفيجوال ...مع اني حاولت وأضفت أداة
shokwavflash على ماأعتقد اسمها هكذا ثم حاولت وضعها على الفورم لكن كان يعطيني رساله خطأ فيها failed to import the activex control (please ensure it is properly registered)
انشاء اللكتبت الرساله صح ...وهي الظاهر تعني اضافة اداة أخرى يمكن آكتف كنترول لكن ماأعرف كيف ....
مشكور أخي مرة ثانية والسلام عليكم

حماة النهضة
03-06-2007, 09:06 AM
الله الله
مجهود جبار يستحق التقدير وربنا يعينك علية وعلينا
وعلى فكرة شرحك فوق الممتاز
ومـــــــــــــشــــــــــــــــــــــــــكور علية
مرحبا أخي ..
تسلم أخي هذه شهادة نعتز بها .. :o


أخي حماة النهضة فيما يخص شرحك هو ممتاز لاجدال فيه مع التطبيق مع أني تخلفت على الدرس الثاني وان شاء الله أتدارك،لو بإمكانك تجعل كل أسبوع درسين خاصة الدروس الأولى
التي قد تكون بسيطة واحنا معك للنهاية ان شاء الله وشكرا
مرحبا أخي ..
تسلم .. يعني الحمد لله ما بتواجه مشكلة بالتطبيق ؟
إن شاء الله تتابع وتكون لحقت الدرس التاني ..
وخلاص إن شاء الله بنزل درس اليوم ويوم السبت كمان ..
ربنا يحميك ويحفظك .. :)


بسم الله الرحمن الرحيم
اللهم صل على محمد وآل محمد الطيبين الطاهرين
السلام عليكم أخي حماة النهضة

وعليكم السلام ورحمة الله وبركاته
مرحبا أختي ..
يسعدنا أن تتابعي الدروس معنا ..
ولكن هذه الدروس في السي شارب ..
وليست في الفيجوال :)

ربنا يحميكِ ويوفقك للخير ..



يتبع الدرس الثالث >>


..][ حمــاة النهضــة ][..

حماة النهضة
03-06-2007, 09:14 AM
الدرس الثالث

الجمل الشرطية:

معظم عمل الحاسوب يقوم على المقارنة بين قيمتين لإتخاذ أي قرار

بكلمة أدق أي عمل يقوم به الحاسوب هو عبارة عن عدد من المقارنات

بين قيم مخزنة في مسجلات المعالج ,

مسجلات المعالج هي عبارة عن أجزاء من المعالج يمكن أن تخزن قيم صغيرة

وكل مسجل يستطيع أن يخزن 16 بت , وهذه القيم المخزنة يقوم المعالج بمقارنتها

مع قيم اخرى في مسجلات أخرى من نفس العالج لإنتاج تيار كهربائي يمثل نتيجة المقارنة

إذاً مبدأ عمل الحاسوب هو المقارنه , عرفنا المقارنه على مستوى المعالج

ولكن هذا لا يهمنا , وما يهمنا هو المقارنه على مستوى لغة البرمجة

والمقارنه تعتبر أحد أهم اعمدة اي لغة من اللغات , وهناك عدت صيغ للمقارنة

1- إذا كان (الشرط) فـ
{التعليمات التي تنفذ في حالة توفر الشرط}

if (x>y)
{
MessageBox.Show("إكس أكبر من واي");
}

في الكود السابق سيقوم المعالج بإظهار الرسالة إذا كان x أكبر من y وإلا فلن تظهر أي رسالة

لاحظ أننا لم نضع الفاصة المنقوطة بعد الشرط لأن المعالج لم يكمل جملة الشرط ويجب أن ندعه يكمل

الجملة إلى نهاية الحاصرة الثانية

2-إذا كان (الشرط) فـ
{التعليمات التي تنفذ في حالة توفر الشرط}
وإلا
{التعليمات التي تنفذ في حالة عدم توفر الشرط}

if (x>y)
{
MessageBox.Show("إكس أكبر من واي");
}
else
{
MessageBox.Show("إكس ليس أكبر من واي");
}

في الكود السابق سيقوم المعالج بإظهار رسالة "إكس أكبر من واي" إذا كان x أكبر من y

أما إذا لم يكن x اكبر من y فستظهر رسالة "إكس ليس أكبر من واي"

لاحظ أننا لم نضع فاصلة منقوطة بعد كلمة else لأن التعليمة لم تكتمل بعد

3-إذا كان(الشرط1) فـ
{التعليمات التي تنفذ عن توفر الشرط1}
وإلا إذا كان (الشرط 2) فـ
{التعليمات التي تنفذ في حالة عدم توفر الشرط1 و توفر الشرط 2}
وإلا إذا كان ...

if (x>5)
{
MessageBox.Show("اكس أكبر من خمسة");
}
else if(x<4)
{
MessageBox.Show("اكس ليس أكبر من خمسة , وأكس أصغر من أربعة");
}
..

في الكود السابق يبدأ المعالج بفحص الشرط الأول فإذا تحقق يظهر رسالة "اكس أكبر من خمسة"

وإن لم يتحقق فإنه ينتقل إلى الشرط الثاني فإذا تحقق سيظهر رسالة "اكس ليس أكبر من خمسة , وأكس أصغر من أربعة"

وهكذا حتي ينتهي من جميع الشروط .. لاحظ أنه من الممكن أن يكون في الجملة أكثر من شرطين

هناك عدد من معاملات المقارنه بالإضافة إلى < و >:

< أكبر من

مثل ما رأينا سابقاً

> أصغر من

مثل ما رأينا سابقاً

== يساوي


if (x == y)
{
MessageBox.Show("اكس يساوي واي");
}


=! لا يساوي


if (x != y)
{
MessageBox.Show("اكس لا يساوي واي");
}


أحياناً نحتاج إلى شرط مزدوج , أي أننا نحتاج إلى شرط مكون من جزئين

مثلاً إذا كان x أكبر من y و x أصغر من z

if (x>y & x<z)
{
MessageBox.Show("اكس أكبر من واي و أصغر من زد");
}

لاحظ انا وضعنا الشرطين بينها علامة &

أما إذا أردنا شرط مزدوج من نوع آخر :

مثلاً إذا كان x أكبر من y أو x يساوي 10

if (x>y | x==10)
{
MessageBox.Show("اكس أكبر من واي أو يساوي 10");
}

لاحظ انا وضعنا الشرطين بينها علامة |

إذا & تعني و

و | تعني أو

ملاحظة ساذجة: علامة | يمكن طباعتها بالضغط على Shift مع زر \ والذي عادة ما يأتي بجانب زر المسح BackSpace وفوق زر Enter

الدوارات:

هناك أنواع كثيرة من الدوارات لكننا سنتعرف حالياً على أهم نوع منها

والدوارات هي تعليمات فائدتها تكرار تعليمات محدد لعدد محدد من المرات

مثلاً إذا أردنا أن نظهر رسالة ما عشر مرات أو عشرين مرة , لن نكتب التعليمة عشر أو عشرين مرة

حيث يستخدم المعالج متغير من نوع رقم كعداد وفي كل مرة تنفذ العملية يزداد العداد رقم واحد

وهكذا حتى يتوفر شرط وقوف الدواره , وأحياناً قد يكون عداد عكسي يعني أنه في كل مرة ينقص رقم

إذن هناك أربعة أشياء مهمة لجملة الدوارة for

1- متغير من نوع عدد يستخدم كعداد مع تزويدة برقم إبتدائي يبدأ منه

2- شرط إستمرار الدوارة في العمل

3- تعريف نوع العداد هل هو تصاعدي أم تنازلي

4- التعليمات التي تنفذ

for (int i = 0;i < 10;i++)
{
MessageBox.Show("من الدوارة");
}

في الكود السابق كلمة for تستخدم لتعريف الدوارة

بعد فتح القوس وضعنا تعريف للعداد int i=0 ووضعنا له قيمة 0 أي أن العداد سيبدأ من 0

وضعنا فاصلة منقوطة وو ضعنا بعدها شرط الإستمرار في العمل وهو أن يكون i أصغر من عشرة

وضعنا فاصلة منقوطة ووضعنا بعدها نوع العداد وهو تصاعدي ++i أما إذا كان تنازلي نضع --i

ثم أغلقنا القوس وفتحنا حاصرتين بينهما التعليمات التي سينفذها المعالج

معنى الدوارة السابقة أن المعالج سيظهر الرسالة للمرة الأولى ثم يزيد i ويفحص شرط الإستمرار

أذا تحقق شرك الإستمرار يظهر الرسالة مرة أخرى ويزيد العداد برقم ويفحص شرط الإستمرار .....

في الكود السابق سيقوم المعالج بإظهار الرسالة عشر مرات

ملاحظة : يمكن إستخدام متغير العداد داخل التعليمات

for (int i = 0;i < 10;i++)
{
MessageBox.Show(Convert.ToString(i));
}

في الكود السابق سيظهر المعالج الرسالة للمرة الأولى وفيها قيمة العداد الأولية وهي 0

وفي المرة الثانية سيظهر الرسالة وفيها قيمة العداد بعد أن زاد برقم أي 1

وهكذا حتى العدد 9 , وعندما يزد العداد بعدها برقم أي يصبح 10 سيفحص المعالج شرط الإستمرار

وهو أن يكوت المتغير أصغر من 10 ولكن المتغير هذه المرة ليس أصغر من عشرة لذلك سيتوقف

المعالج عن تنفيذ التعليمات ويخرج من جملة for

يتبع التطبيق

حماة النهضة
03-06-2007, 09:33 AM
التطبيق:

أفتح تطبيق الدرس السابق :

وقم بحذف صنوقي النص بواسطة زر Delete

غير النص المكتوب في الزر إلى "تشغيل الدوارة"

من صندوق الأدوات قم بسحب أداة القائمة :

http://www.freewebtown.com/gfsd/Image3-1.JPG

من خلال الخاصية (Name) قم بتغيير إسم القائمة من ListBox1 إلى l1

ليسهل التعامل معها من الشفرة

ملاحظة: عند عمل تطبيق باللغة العربية يجب تحويل الأدوات في النافذه للترتيب العربي

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

وهي صفات RightToLeft و صفة RightToLeftLayout من جدول الصفات

حيث تكون الخاصية الأولى Yes والخاصية الثانية True :

http://www.freewebtown.com/gfsd/Image3-2.JPG

عندها ستلاحظ ان إتجاه الأدوات تغير ويصبح شكل النافذة هكذا :

http://www.freewebtown.com/gfsd/Image3-3.JPG

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

وأكتب بدلاً عنه هذا الكود:

for (int i=0;i<10;i++)
{
l1.Items.Add(" من الدوارة ");
}

قمنا بعمل دوارة من الصفر إلى 10 لإضافة كلمة "من الدوارة" إلى القائمة

الكائن l1.Items.Add يقوم بإضافة ما داخل القوس للقائمة l1

وبالتالي فالكود السابق سيقوم بكتابه كلمة "من الدوارة" عشر مرات على القائمة

جرب تشغيل البرنامج وإضغط على الزر , يجب أن ترى شيئاً كهذا:

http://www.freewebtown.com/gfsd/Image3-4.JPG

ملاحظة : إذا أردنا أن نجمع كلمتين أو نصين في نص واحد فيمكننا إستخدام إشارة +

مثلاً إذا أردنا أن نظر رسالة تقول مرحباً بكم فيمكن عمل ذلك هكذا

MessageBox.Show("مرحباً" + "بكم");

هناك كلمتين ربطنا بينهما بعلامة +

والآن لنعدل التطبيق قليلاً لكي نجرب إستخدام العداد :

قم يتعديل كود الدوارة وأضف إلى كلمة "من الدوارة" أضف العداد هكذا:


for (int i=0;i<10;i++)
{
l1.Items.Add(" من الدوارة " + Convert.ToString(i));
}

بما أن العداد من نوع رقم إستخدمنا كائن التحويل لنحوله إلى نص ثم ربطناه بكلمة "من الدوارة"

عند تشغيل البرنامج سترى شيئاً كهذا :

http://www.freewebtown.com/gfsd/Image3-5.JPG

أعتقد أن الصورة لا تحتاج للشرح ...

الآن لماذا لا نطبق جملة شرطية داخل الدوارة ..

سنكتب شفرة لطباعة كلمة "من الدوارة"

و إذا كان العداد أكبر من خمسة سنضيف كلمة "أكبر من خمسة" :

قم بتغيير كود الدوارة إلى هذا الكود:

for (int i=0;i<10;i++)
{
if (i>5)
{
l1.Items.Add(" من الدوارة " + Convert.ToString(i) + " أكبر من خمسة ");
}
else
{
l1.Items.Add(" من الدوارة " + Convert.ToString(i) );
}
}

الكود باللون الأحمر سينفذ عشر مرات .

والكود بالخط المائل سينفذ إذا كان العداد i أكبر من خمسة.

والكود الذي تحته خط سينفذ إذا كان العداد i أصغر من أو يساوي خمسة .

عند تنفيذ البرنمج ستكون النافذه هكذا :

http://www.freewebtown.com/gfsd/Image3-6.JPG

الواجب:

الواجب صعب شويه هاي المرة ...

إستخدم الدوارة والجمل الشرطية لتنفيذ عملية إضافة نصوص للقائمة 12 مرة

بحيث يكتب في آخر كل نص ما إذا كان العداد أكبر من 6 أو يساوي 6 أو أصغر من 6

لتكون النتيجة هكذا:

http://www.freewebtown.com/gfsd/Image3-7.JPG

تلميح : ستستخدم الجمل الشرطية من النوع الثالث بثلاث شروط

أي أن جملة الشرط ستكون شبيهة بهذه:

if (...)
{
...
}
else if(...)
{
...
}
else if(...)
{
...
}


أكمل الفراغات ^^:) طبعاً كل هذا داخل الدوارة

. نهاية الدرس الثالث .


بالمناسبة .. فين الواجب ؟؟
ضروري ترسلوا الواجب ...

والسلام عليكم ورحمة الله وبركاته


..][ حمــاة النهضــة ][..

ehabkazem
03-06-2007, 06:37 PM
الله يعطيك العافية أخوي
أتمنى اكون أيضا من المشتركين

sami_f12
03-06-2007, 10:15 PM
السلام عليكم
merci mon frére pour tout les aide

حماة النهضة
03-07-2007, 05:46 PM
بسم الله الرحمن الرحيم
اللهم صل على محمد وآل محمد الطيبين الطاهرين
السلام عليكم أخي حماة النهضة
أنا من محبين لغة الفيجوال بيسك وانا من مدة ابحث عن هكذا دروس على النسخة الجديدة 2005 وانشاء الله أوفق في متابعة دروسكم من حين لحين وأوفق في تطبيقها ....
ولكن لدي استفسار عن البرنامجين الذين يجب علينا تنزيلهما برنامج ملفات البرمجة وبرنامج بيئة التطوير ...ماذا يعنوا ...وهل هو ضروري تنزيلهما ...بالرغم من ان البرنامج الفيجوال بيسك موجود عندي على الجهاز ... ونحن نستطيع كتابة البرنامج فيه والله أعلم
مشكور أخي على الدرسان الأوليان ...
أما بالنسبة للدروس فنحن نستطيع تعريف المتغيرات هكذا dim x,y,z as integer
ثم نخصص ل x مكان لكي نضع القيمة فيه ونكتب مثلا x= 10
y=15
z=x+y
textbox1.text=z
صح هكذا ..أخي الكريم
في الأخير أتمنى منكم أن تعطوني كود ربط الفلاش بالفيجوال ...مع اني حاولت وأضفت أداة
shokwavflash على ماأعتقد اسمها هكذا ثم حاولت وضعها على الفورم لكن كان يعطيني رساله خطأ فيها failed to import the activex control (please ensure it is properly registered)
انشاء اللكتبت الرساله صح ...وهي الظاهر تعني اضافة اداة أخرى يمكن آكتف كنترول لكن ماأعرف كيف ....
مشكور أخي مرة ثانية والسلام عليكم
وعليكم السلام ورحمة الله وبركاته

أختي الحين بقدر أرد عليكِ قبلها انشغلنا سامحينا .. :)

البرنامجين مش ضروري تنزليهم ما دام معك البيئة شغاله

أما خطأ الأكتيف إكس فـ..

الـ VB الإصدارات 6 وما قبلة المفروض تشتغل الأكتيف اكس بكل سهولة لأنها Com

أما إصدارت 2002 و 2003 و2005 , فممكن تظهر بعض المشاكل فيها لأن هذه اللغات بتشتغل على تقنية جديدة .NET

والادوات المضافة المفروض تكون Managed يعني تكون كمان بتقنية .NET مش Com

لكن مع ذلك لا زال هناك دعم لأدوات Com في الإصدارات الحديثة

عموما إذا كنت تشتغل على VB6 وطلعت لك المشكلة هذه فحاولي تستخدمي إصدار أحدث من ملف الأكتيف أكس

أما إذا كنت تستخدم VB.NET فعلى الأغلب السبب أحد هذين:

1- سجل الأداة في الريجستري تبع النظام قبل إضافتها للمشروع .

2- إذا ما أشتغلت معك بالطريقة الأولى :

بعد إضافة الأداة إلى الـ Tool Box وقبل ما تضيفها للفورم

روحي إلى مجلد المشروع وإحذفي المجلدين obj و bin

وبعدين أرجعي للمشروع وضيفي الأداه للفورم .

أن شاء الله تشتغل معك.

وعليكم السلام ورحمة الله وبركاته


..][ حمــاة النهضــة ][..

حماة النهضة
03-07-2007, 06:11 PM
الله يعطيك العافية أخوي
أتمنى اكون أيضا من المشتركين
مرحبا أخي ..
الله يوفقك حاول تشوف الدروس السابقة وتتابع معنا ^^
بيسعدنا انضمامك لنا أخي ...
:)


السلام عليكم
merci mon frére pour tout les aide
وعليكم السلام ورحمة الله وبركاته
مرحبا أخي ..
العفو ^^
بيسعدنا وجودك معنا بالتأكيد
:)


والسلام عليكم ورحمة الله وبركاته


..][ حمــاة النهضــة ][..

حماة النهضة
03-07-2007, 06:24 PM
الله يعطيك العافية أخوي
أتمنى اكون أيضا من المشتركين
مرحبا أخي ..
الله يوفقك حاول تشوف الدروس السابقة وتتابع معنا ^^
بيسعدنا انضمامك لنا أخي ...
:)


السلام عليكم
merci mon frére pour tout les aide
وعليكم السلام ورحمة الله وبركاته
مرحبا أخي ..
العفو ^^
بيسعدنا وجودك معنا بالتأكيد
:)


والسلام عليكم ورحمة الله وبركاته


..][ حمــاة النهضــة ][..

سرمد الزهراء
03-09-2007, 07:37 AM
مشكور أخي على الشرح ....وأيضا على ردك علي ومساعدتي وانشاء الله أشوف الطريقة وبحاول وانشاء الله تزبط معاي
أنا طبقت الدرس الأول والثاني ...
لكن عندي استفسار بسيط بالنسبة للكود
x=Convert.ToInt32
ماذا يعني الرقم 32 هنا ...وقد لاحظت ان ليس كل الأنواع بجانبها أرقام فقط بعضها ..:smailes45:
مشكور أخي كثيرا كثيرا
السلام عليكم .

infocom
03-09-2007, 09:19 PM
السلام عليكم ورحمة الله وبركاته
اشكرك اخي العزيز على هذا الدرس المفيد وان شاء الله سوف احضر كل الدروس

bdh_m
03-09-2007, 10:07 PM
مجهود يستحق كل الثناء و الشكر و التقدير

حماة النهضة
03-10-2007, 02:07 PM
السلام عليكم ورحمة الله وبركاته
اشكرك اخي العزيز على هذا الدرس المفيد وان شاء الله سوف احضر كل الدروس
وعليكم السلام ورحمة الله وبركاته
مرحبا أخي ..
حسنا يسعدنا انضمامك بالتأكيد ..
:)


مجهود يستحق كل الثناء و الشكر و التقدير
مرحب أخي ..
العفو ^^


يتبع الدرس الرابع بعد قليل ^^


..][ حمــاة النهضــة ][..

حماة النهضة
03-10-2007, 02:16 PM
الدرس الرابع

الإجراءات Procedures

الإجراء هو مجموعة أوامر ينفذها المعالج مكتوبة بين حاصرتين { }

ويتم تعرفها في مكان واحد في البرنامج ويمكن إستدعائها عدة مرات

والإجراء له ثلاثة أشياء مهمة :

1- تعريف الإسمName Decleration

2-المدخلاتParameters

3-الشفرة مكتوبة بين حاصرتين Code

فمثلاً عند الدخول إلى شفرة زر رسالة الترحيب في الدرس الأول

سنرى هذا الكود:

void Button1Click(object sender, System.EventArgs e)
{
MessageBox.Show("مرحباً بكم في السي شارب");
}

الكود السابق يمثل إجراء ينفذه المعالج عند الضغط على الزر

نلاحظ انه يحتوي على الثلاث الأشياء المهمة للإجراء

وهي تعريف الإسم:
void Button1Click
و المدخلات:
(object sender, System.EventArgs e)
والشفرة مكتوبة بين حاصرتين:
{
MessageBox.Show("مرحباً بكم في السي شارب");
}
في التعريف void تعني إجراء أي أننا سنعرف متغير من نوع إجراء

كما عرفنا متغير من نوع رقم في الدرس السابق:
int x;
بنفس الطريقة عند تعريف الإجراء:
void x;
لكن هذا التعريف لا يكفي فهو لا يحتوي على الثلاث الأشياء المهمة

مثلاً لو أردنا إجراء يظهر رسالة مكتوب عليها مثلاً "من داخل الإجراء"

فسكون التعريف كالتالي:
void sm()
{
MessageBox.Show("من داخل الإجراء");
}

عرفنا متغير من نوع إجراء اسمه sm إختصار لـ Show Message ..يمكنك تغيير إسم الإجراء كما
تشاء

يوجد لدينا الإسم:
void sm
والمدخلات:
()
لا يوجد لدينا مدخلات في هذا الإجراء ولكن يجب عمل الأقواس الفارغة

وسنعرف فيما بعد كيف نتعامل مع المدخلات

ولدينا الشفرة:
{
MessageBox.Show("من داخل الإجراء");
}
وبالتالي فالتعريف كامل ويمثل إجراء لإظهار رسالة ,

والآن إذا أردنا في أي مكان من البرنامج تنفيذ الإجراء فما علينا سوى كتابة اسمه هكذا:
sm();
التعليمة السابقة تجعل المعالج يبحث عن الإجراء sm وينفذ الأوامر بداخلة.

ربما يقول البعض ما الداعي من عمل إجراء وكتابة الكود داخلة ثم إستدعاءه

لماذا لا نكتب الكود مباشرة كما فعلنا في الدرس الأول؟؟؟

والجواب ببساطه ماذا لو أردت إظهار الرسالة خمس مرات؟؟

بالطريقة القديمة ستكتب هكذا:

void Button1Click(object sender, System.EventArgs e)
{
MessageBox.Show("من داخل الإجراء");
MessageBox.Show("من داخل الإجراء");
MessageBox.Show("من داخل الإجراء");
MessageBox.Show("من داخل الإجراء");
MessageBox.Show("من داخل الإجراء");
}

أما بطريقة الإجراءات فستكتب هكذا:

void Button1Click(object sender, System.EventArgs e)
{
sm();
sm();
sm();
sm();
sm();
}

void sm()
{
MessageBox.Show("من داخل الإجراء");
}

الكود بالأزرق هو كود الضغط على الزر و الكود بالأحمر هو كود إجراء إظهار الرسالة

نلاحظ أن طريقة الإجراءات تسهل التعامل أكثر وتوفر الوقت والجهد

ربما يقول البعض لا يوجد فرق كبير بين الطريقتين لكن ماذا إذا كانت الرسالة كبيرة جداً

أو ماذا إذا كانت الأوامر أكثر من مجرد إظهار رسالة

عندها بالتأكيد الإجراء سيوفر الكثير من الجهد والوقت

وإيضا المدخلات تجعل الإجراءات أكثر فائدة :

مثلاً لو أردنا أن نطور الإجراء السابق ليظهر رسالة مختلفة في كل مرة نستدعيه

سنجعل الرساله المراد إظهارها علي أنها مدخل متغير ويكون تعريف الإجراء كالتالي:
void sm(string msg)
{
MessageBox.Show(msg);
}

المدخلات هي متغيرات كما رأينا حيث عرفنا متغير مدخل اسمه msg من نوع نص string

وفي تعليمة إظهار الرسالة جعلنا الكائن MessageBox.Show يظهر ما في المتغير المدخل msg

الآن عند إستدعاء الإجراء يجب تمرير قيمة من نوع نص مكان المتغير المدخل هكذا:

sm("من داخل الإجراء");
sm("رسالة مختلفة من نفس الإجراء");

نلاحظ أن الإجراء آظهر رسائل مختلفة بنفس الشفرة

الأمر الأول في الكود السابق سيظهر رسالة مكتوب عليها "من داخل الإجراء"

والأمر الثاني سيظهر رسالة مكتوب عليها "رسالة مختلفة من نفس الإجراء"

ملاحظة: إذا كان لدينا أكثر من مدخل فنفصل بينها بالفاصلة مثلاً:
void sm(int x,string msg)

وعند الإستدعاء :

sm(14,"رسالة");



الدوال Functions

الدول هي إجراءات لكن لها خاصية أنها ترجع قيم

يعني رأينا في الإجراءات أنا نستدعيها للقيام بعمل محدد فقط

أما الدوال فإنا نستدعيها للقيام بعمل محدد وإرجاع قيمة لنا

ولها خمس أشياء مهمة:

1- تعريف الإسم Name Decleration

2-نوع القمية التي ستحملها الدالة Result Data Type

3-المدخلات Parameters

4-الشفرة مكتوبة بين حاصرتين Code

5-تعليمة تحميل الدالة للقيمة الناتجة Return phrase

مثلاً إذا إردنا عمل دالة تقوم بأخذ رقمين وترجع لنا مجموعهما فيكون التعريف كما يأتي:
int sum(int x,int y)
{
int z;
z=x+y;
return z;
}
في السطر الأول عرفنا دالة إسمها sum ترجع متغير من نوع رقم int

ولينا مدخلين من نوع رقم x و y

وبين الحاصرتين لدينا التعليمات التي تقوم بجمع المتغيرين

وفي التعليمة الأخيرة return z تعني تحميل الدلة القيمة الموجود في z وهي مجموع xوy

وعند الإستدعاء بنفس الطريقة في الإجراءات لكن الدالة تكون محملة بقيمة :
sum(4,5);
بدون الدالة ستكود شفرة جمع رقمين هكذا:

int z;
z=4+5;
MessageBox.Show(Convert.ToString(z));

أما بإستخدام الدالة فتكون الشفرة هكذا:
int z;
z=sum(4,5);
MessageBox.Show(Convert.ToString(z));
لاحظ أنا استدعينا الدالة وحملنا ما داخلها للمتغير z

في المثال السابق تعرفنا كيف نستخدم الدالة , رغم اننا لم نستفد منها كثيراً في المثال السابق

ولكن كان الغرض منه توضيح إستخدام الدوال .

عزل - كبسلة المتغيرات Variables Encabsulation

مارأيك بالكود التالي:

void Button1Click(object sender, System.EventArgs e)
{
int x;
x=10;
AddFive();
}

void AddFive()
{
int y;
y=5+x;
MessageBox.Show(Convert.ToString(y));
}
الكود بالأزرق هو إجراء الضغط على الزر , وبالأحمر إجراء إظهار قيمة x مضاف إليها 5

لو قمت بتنفيذ الكود السابق , ما الذي ينتج ,,, ستقول ستظهر رسالة مكتوب عليها 15

سأقول لا للبعد والنسيان ^^ لا مش صح , بينتج خطأ جسيم !!

السبب أن المتغير x معرف داخل الإجراء باللون الأزرق

وبالتالي فالمفروض أن نستخدمة في هذا الإجراء فقط , وإذا أستخدمناه في إجراء آخر كما فعلنا

فإن المعالج لن يتعرف على هذا المتغير !! .. ولكن ماذا لو أردنا أن نستخدم متغير في أكثر من إجراء؟؟

الجواب:

المتغيرات Variables تنقسم إلى نوعين رئيسيين :

1-متغيرات محلية Local وهي التي تعرف وتستخدم داخل الإجراء فقط

2-متغيرات دولية "ما لقيت لها مصطلح عربي" Global وهي التي تعرف خارج الإجراء وتستخدم من قبل إجراءات كثيرة

والمتغيرات الدولية تنقسم إلى قسمين :

ِa- متغيرات خاصة private وهي تستخدم من قبل إجراءات ودوال النافذة الواحدة فقط ولا تراها النوافذ الأخرى

private int x;

b-متغيرات عامة public وهي تستخدم من قبل إجراءات ودوال النافذة والنوافذ الأخرى

public int x;

إذن إذا أردنا أن نستخدم متغير في عدة إجراءات فإننا نعرفة خارج الإجراء

والأفضل يكون تعريف المتغيرات الدولية في بداية كود النافذة فوق دالة Main :


//هنا تعريف المتغيرات الدولية
[STAThread]
public static void Main(string[] args)
.
.

وبالتالي فالإجراء السابق بعد التعديل سيصبح هكذا :


private int x;
.
.
void Button1Click(object sender, System.EventArgs e)
{
x=10;
AddFive();
}

void AddFive()
{
int y;
y=5+x;
MessageBox.Show(Convert.ToString(y));
}
طبعاً بفرض أن احنا حطينا تعريف المتغير x فوق دالة Main

بهذه الطريقة عرفنا x مرة واحدة وممكن نستخدمة في أكثر من إجراء من نفس النافذة

ملاحظة: إذا أردنا أن نكتب تعليق في الشفرة أو ملاحظة بدون أن يقرأها المترجم

فإننا نكتب في بداية السطر // والمترجم لن يقرأ الكود التي تحول لونها إلى الأخضر كما فعلنا

في الكود السابق , أما إذا كانت الملاحظة من عدة أسطر ولا نريد أن نضيف // لكل سطر نتيجة الكسل أو ما شابه

فيكفي أن نكتب*/ في بداية الملاحظة و/* في نهاية الملاحظة :

int x;
/* هذا السطر لن يقرأه المترجم
وهذا السطر ايضا
وهذا أيضاً*/
MessageBox.......




يتبع ..

حماة النهضة
03-10-2007, 02:24 PM
ملحق 1 : تعقب الأخطاء Appendix 1 : Error Handling

كثيراً ما تحدث أخطاء في البرامج نتيجة تعامل المستخدم مع البرنامج ,

وبدون تعقب للأخطاء سيغلق البرنامج بمجرد أي خطأ , لذلك يجب على المبرمج

تعقب الأخطاء ليمنع من إغلاق البرنامج وليظهر رسالة للمستخدم بالخطأ

مثلاً في تطبيق الآله الحاسبة في الدرس الثاني ماذا لو أدخل المستخدم حرف بدل من رقم

بالتأكيد كائن التحويل Convert.ToInt32 سيطلق خطأ لأنه لت يستطيع تحويل حرف إلى رقم

الكود كان هكذا :
int x;
int y;
int z;
x=Convert.ToInt32(t1.Text);
y=Convert.ToInt32(t2.Text);
z=x+y;
MessageBox.Show(Convert.ToString(z));
وعند إدخال حرف إلى مربع النص t1 أو t2 فستظهر رسالة خطأ ويتوقف البرنامج

لتعقب الأخطاء نستخدم جملة try و catch حيث نكتب الكود الذي يمكن أن يسبب خطأ

ضمن جملة try ونكتب الكود الذي ينفذ في حالة حدوث حطأ ضمن جملة catch

ويصبح الكود السابق هكذا:
int x;
int y;
int z;
try
{
x=Convert.ToInt32(t1.Text);
y=Convert.ToInt32(t2.Text);
}
catch
{
MessageBox.Show("تأكد من إدخال أرقام فقط");
}
z=x+y;
MessageBox.Show(Convert.ToString(z));
الكود باللون الأزرق هو مكان إحتمال وجود الخطأ لأنه المكان الذي يتم تحويل المدخلات إلى رقم

وإذا حصل إي خطأ فإن المعالج سينتقل لتنفيذ الكود باللون الأحمر

أما إذا لم يحدث أي خطأ , فالمعالج لن ينفذ الكود بالأحمر ..

ملحق 2 :إنهاء البرنامج Appendix 2 : Program Termination

لإنهاء البرنامج نحتاج إلى كائن يتعامل مع بيئة الدوت نت وهذه هي التعليمة :
System.Environment.Exit(0);
الكائن Environment يمثل بيئة الدوت نت الذي يعمل عليها البرنامج

والتعليمة Exit تجعل المعالج ينهي البرنامج ويفرغ الذاكرة Release Memory References

والمدخل 0 يعني إنهاء البرنامج تماماً و سنعرف فيما بعد مدخلات أخرى لهذه التعليمة

ملحق 3 : التعامل مع ملفات المشروع Appendix 3 :-Dealing with project files

في لغات البرمجة المشروع ليس ملف وحيد فقط ,

انما مجموعة من الملفات المترابطة مع بعضها بواسطة ملف المشروع

وعند فتح المشروع يجب فتح الملف الأساسي للمشروع وسيقوم هو آلياً

بتحميل جميع ملفات المشروع لبيئة التطوير :

http://www.freewebtown.com/gfsd/Image4-1.JPG

كما في الصورة فالملف الأساسي للمشروع هو بامتداد csproj

وإذا كان المشروع متعدد البرامج فالملف الأساسي هو بإمتداد sln

أما إذا كان المشروع برنامج واحد كما في مشروعنا فيمكن فتح أي منهما

وإذا أردت أن تنسخ المشروع فعليك نسخ المجلد بالكامل الذي يحتوي على جميع الملفات

ثم فتح المشروع بواسطة ملف المشروع الأساسي

يتبع التطبيق..

حماة النهضة
03-10-2007, 04:01 PM
التطبيق

ربما تسائل الكثير عن وظيفة الملفات الكثيرة التي تنتهي بإمتداد dll

حان الوقت لنعرف ذلك ^^ , dll هي إختصار لـ Dynamic Link Library

هذه الملفات كتبت بلغة برمجة و تحتوي على دوال وإجرائات وكائنات

و تستخدم في برامج أخرى, مثلاً دالة إظهار رسالة كما إستخدمناها في الدروس السابقة

موجودة في ملف اسمة System.dll ينزل مع لغة البرمجة , وبدون هذا الملف

لن نستطيع إظهار الرسالة , حيث أن شفرة إظهار الرسالة ورسم صندوق الرسالة

ورسم زر موافق ورسم شريط العنوان كلها هذه الشفرة مكتوبة مسبقاً وموجود في الملف System.dll

ونحن ما علينا سوى إستدعائها من الملف كما نستدعي دالة أو إجراء عادي ,

وهناك دوال كثيرة أخري تتعلق بقواعد البيانات موجوده في الملف System.Data.dll

وهناك دوال الرسم موجوده في System.Drawing.dll ....

إي أن الدوال و الإجراءات والكائنات في لغات البرمجة مقسمة في ملفات بغرض تنظيمها

وعندما تريد إستخدام دالة في ملف محدد يجب أن تظيف هذا الملف إلى مشروعك

حتى يتعرف علية المعالج ويستطيع إستدعاء الدوال داخلة .

ربما تسأل كيف إستخدمنا دالة إظهار الراسالة في الدروس السابقة ولم نظيف ملف System.dll

الإجابة أن لغة البرمجة تظيف هذا الملف آلياً لأنه يحتوي على دوال كثيرة الإستخدام ومهمة

ولتعرف إن هذا الملف مضاف في المشروع :

http://www.freewebtown.com/gfsd/Image4-2.JPG

أفتح نافذة ملفات المشروع كما في رقم 1 ثم إفتح الملحقات References رقم 2

سترى مجموعة من الملفات مضافة للمشروع ومنها ملف System رقم 3

وفي بداية كود النافذة يجب إستدعاء الملف بإستخدام تعليمة using حتى يتم تحميل

جميع كائنات ودوال الملف ويتمكن المعالج من معرفتها وإستخدامها .

أحياناً ملف dll يحتوي على كائنات داخلة وداخل كل كائن دوال مختلفة

في هذه الحالة لن نستطيع إستدعاء الدالة كما فعلنا في دالة إظهار الرسالة

لأن المعالج لا يعرف مكان الدالة في الملف فهو يفحص الدوال الموجوده في الملف

ولكنه لا يفحص الكائنات , لذلك لا يجد الدوال المخزنة داخل كائنات

ويجب علينا أن نحدد عنوان الدالة داخل الملف ,

ويتم ذلك بكتابة إسم الكائن متبوعاً بنقطة ثم إسم الكائن الداخلي ... زهكذا حتى نصل إللى مكان الدالة

مثلاً دالة إنهاء البرنامج هي Exit , وهذه الدالة موجوده داخل كائن إسمة Environment

وهذا الكائن موجود داخل ملف System , فإذا إستدعينا هذه الدالة بإسمها فقط فإن المعالج لن يعرف عنوانها

ويظهر لنا خطأ , لذلك وجب علينا تحديد عنوانها هكذا :
System.Environment.Exit(0);
..

وبما أن تطبيقنا يشغل ملفات صوت وفيديو فيجب علينا إضافة الملفات التي يوجد فيها دوال الصوت والفيديو

ودوال الصوت والفيديو موجود في ملف dll بالمرفقات وللأسف هذا الملف لا ينزل مع لغة البرمجة

لذلك يجب تنزيله من المرفقات , وهذ الملف هو : Microsoft.DirectX.AudioVideoPlayback.dll

بعد تنزيل الملف وفك الضغط , إفتح المشروع وافتح نافذة ملفات المشرع

واضغط بالزر الأيمن على References وإختار Add Reference

http://www.freewebtown.com/gfsd/Image4-3.JPG

ستظهر لك هذه النافذة:

http://www.freewebtown.com/gfsd/Image4-4.JPG

إختر Browse من تبويب .Net Assemply ثم أضف الملف اللذي قمت بتنزيله

حتى يظهر الملف في قائمة الملفات المختارة رقم 3 , ثم إختر OK

سترى أن الملف تم إضافتها إلى قائمة الملفات الملحقة :

http://www.freewebtown.com/gfsd/Image4-5.JPG

الآن في أعلى كود النافذة يجب إستدعاء الملف ليتعرف عليه المعالج وذلك بإضافة الكود:

using Microsoft.DirectX.AudioVideoPlayback;
يضاف هذا الكود أسفل تعليمات الإضافة الإفتراضية كما في الصورة :

http://www.freewebtown.com/gfsd/Image4-6.JPG

الآن إذهب إلى تصميم نافذة تطبيق الدرس السابق و قم بحذف القائمة l1

وعدل النص في الزر من "تشغيل الدوارة" إلى "فتح ملف الصوت"

إسحب زر آخر وأكتب عليه "تشغيل ملف الصوت"

ثم إسحب أداة OpenFileDialog إلى النافذة

http://www.freewebtown.com/gfsd/Image4-7.JPG

ستلاحظ أنها لن تضاف في النافذة وإنما في شريط أصفر تحت

وذلك لأن هذه الأداة لا تظهر على النافذة مثل الزر أو صندوق النص

الآن إختر الأداة من الشريط الأصفر و غير إسمها من openFileDialog1 إلى OF ليسهل التعامل معها من الكود

حتى يصبح شكل النافذة هكذا :

http://www.freewebtown.com/gfsd/Image4-8.JPG

الآن سنقوم بتعريف متغير من نوع مشغل صوت Audio, وهذا النوع موجود في ملف Microsoft.DirectX.AudioVideoPlayback

كنا نعرف متغير من نوع رقم هكذا :
int x;
وبنفس الطريقة سنعرف متغير"كائن" من نوع مشغل صوت
Audio ap;
عرفنا كائن أسمة ap من نوع Audio ..

لاحظ أن النوع Audio لا يعتبر متغير وإنما كائن لأنه يحتوي على أفعال وصفات ودوال كما سنرى

ولكن لاحظ أننا سنستخدم هذا الكائن في إجرائين إثنين , إجراء فتح الملف و إجراء تشغيل الملف

إذا في إجراء سنعرفه ؟؟ .... يجب أن يكون هذا المتغير متغر دولي Global

لذلك يجب أن نعرفه خارج الإجرائين ونحدد هل هو عام لجميع النوافذ أم خاص لهذه النافذة

إبحث عن مكان في الشفرة خارج الإجرائين , والمفضل أن يكون كما حددته في الدرس

وقم بتعريف الكائن بهذا الكود :
private Audio ap;
بما اننا سنستخدمة في هذه النافذة فقط جعلنا نوعه خاص private :

http://www.freewebtown.com/gfsd/Image4-9.JPG

الآن افتح التصميم و اضغط مزدوجاً على زر "فتح ملف الصوت" لتذهب إلى الكود

إمسح الكود من الدرس السابق : وأضف هذا الكود :
OF.ShowDialog();
ap=Audio.FromFile(OF.FileName);

أضغط مزدوجا على زر "تشغيل ملف الصوت" وأضف هذا الكود:
ap.Play();

في الكود الأول إستخدمنا دالة ShowDialog في أداة فتح الملفات OF لتظهر لنا نافذة لفتح ملف الصوت :

http://www.freewebtown.com/gfsd/Image4-10.JPG

هذة الدالة ترجع قيمة من نوع نص تحتوي على مسار الملف الذي إخترته

وفي السطر الثاني إستخدمنا دالة FromFile في كائن Audio لفتح الملف وتحميلة للمتغير ap

لاحظ أن الدالة FromFile تتطلب مدخل من نوع نص يحتوي على مسار الملف المراد تحميلة

ومسار هذا الملف هو القيمة التي سترجعها الدالة OF.FileName

في الكود الثاني إستخدمنا دالة Play في المتغير ap لتشغيل ملف الصوت

الآن قم بتشغيل البرنامج وإضغط على زر "فتح ملف الصوت"

وإختر ملف صوت من نوع mp3 أو wav , لا تختر ملف من نوع rm

سنعرف فيما بعد كبف نشغل ملفات rm و ram

بعد إختيار الملف اضغط على زر "تشغيل ملف الصوت"

واستمع للصوت الناتج من برنامجك^^

ملاحظة : بما ان التطبيق أستخدم دوال داخل ملف Microsoft.DirectX.AudioVideoPlayback

فانه عند تشغيل البرنامج سيقوم المعالج بنسخ هذا الملف إلى مسار البرنامج

ولن يعمل البرنامج إلا إذا كان هذا الملف إلى جانبه في نفس المجلد

الواجب

*ماذا لو إخترت ملفاً غير صوتياً وجربت تشغيلة

بالطبع سيظهر لك خطأ ويتوقف البرنامج , ما رأيك لو تعقبت هذا الخطأ

وأظهرت رسالة بالعربية تخبر المستخدم ما اللذي يجري .

تلميح : ظهر الخطأ سيكون عند تعليمة
ap.Play();
لذلك يجب وضع هذه التعليمة ضمن جملة try و ...

*أضف زر لإنهاء البرنامج وأرسل التطبيق ..

ملاحظة مهمة:

ليعمل تطبيق الصوت في أنظمة لا تحتوي على DirectX SDK

يجب إرفاق ملف DirectX في مجلد التطبيق بجانب ملف البرنامج

بمعنى أن نضع هذا الملف بجانب ملف البرنامج exe كما في الصورة

http://www.7oma.com/csharp/images/Image4-11.JPG
الصورة هنــا (http://www.mexat.com/vb/attachment.php?attachmentid=164020&stc=1&d=1156973437) كمان

والملف موجود هنـــا (http://www.7oma.com/csharp/DirectX.zip)..

. نهاية الدرس الرابع .

موفقين ^^

والسلام عليكم ورحمة الله وبركاته


..][ حمــاة النهضــة ][..

سرمد الزهراء
03-10-2007, 09:04 PM
بسم الله الرحمن الرحيم
اللهم صل على محمد وآل محمد الطيبين الطاهرين
السلام عليكم ورحمة الله وبركاته
مشكور أخي عالدروس مع اني متخلفة قليلا عنها بسبب الدراسة ومشروع التخرج إلا اني انشاء الله متابعة
بالنسبة للدرس الثالث الجمل الشرطية والدوارات ....
for (int i=0;i<10;i++)
{
هنا الكود ستكون الأرقام من الصفر إلى التسعة فقط
if (i>5)
{
وهنا عندما وضعنا جملة شرطيه حددنا فيها اذا كانت القيمة أكبر من خمسة
l1.Items.Add(" من الدوارة " + Convert.ToString(i) + " أكبر من خمسة ");
}
راح يطبع في اللسته كلمة من الدوارة + أكبر من خمسة مع التحويل بالطبع
else
{
لكن اذا كان الشرط غير ذلك أو أصغر من خمسه راح يطبع من الدوارة فقط
l1.Items.Add(" من الدوارة " + Convert.ToString(i) );
}
لدي استفسارات ...هل يعني هذا أن الأعداد التي أكبر من خمسة وأصغر من عشرة هي التي يتحقق لها الشرط الأول (صح)ولهذا في الشرط الثاني هو وضع الأعداد التي أصغر من خمسة من نفسه لأنني محددة من فوق في البداية
2- نحن لم نضع أي شي في الفورم لكي ندخل له مدخل عليه يخرج الشرط الأول أو الثاني ...هل لهذا السبب حقق الشرطين ووضعهم في اللسته ...
أنا عارفة إن استفساراتي مو لهناك لكني أتأكد ...لو سمحت أخي
وأنا عملت الواجب وصار عندي فيه خطأ مادري ليش تحت i

سرمد الزهراء
03-10-2007, 09:21 PM
أخي العزيز السلا م عليكم
أنا أبي أرسل التطبيقات أو الواجبات اله عملتها بس كيف يمكن أرفعها للمنتدى أو ارسلها الكم .....مع اني ماأستطيع أرسل بالخاص تلزمني 15 مشاركة

imadin
03-11-2007, 12:06 PM
معلش تخلفت عن الدرس الرابع وهذا واجب الدرس 3

سرمد الزهراء
03-13-2007, 12:13 PM
مشكور أخي الكريم على الدروس
وهذا واجب الدرس الأول والثاني والثالث ....بس الثالث صار فيه عندي خطأ مادري ليش ....
:smailes41:

حماة النهضة
03-13-2007, 01:34 PM
السلام عليكم ورحمة الله وبركاته

كيف حالكم اليوم ؟
يارب مبسوطين دايما ...

نبدأ مع أختي سرمد الزهراء ..
عذرا أختي حاولت أرد بالأمس الموقع كان مغلق , نرد اليوم ...
بالنسبة للكود
x=Convert.ToInt32
ماذا يعني الرقم 32 هنا ...وقد لاحظت ان ليس كل الأنواع بجانبها أرقام فقط بعضها ..
الرقم الأخير من المتغير يعني حجمة في الذاكرة, مثلاً int16 حجمه 16 بت و int32 حجمة 32 بت

وفيه 64 كمان, وكل نوع له مدى محدد ما يقدر يتجاوزه, مثلاً int16 يقدر يخزن أي رقم من من – 32,768 إلى 32,767

و int32 يقدر يخزن أي رقم من – 2,147,483,648 إلى 2,147,483,647

و int64 له مدى أكبر بكثير, لذلك إخترنا int32 كحل وسط , لأنه يخزن أرقام كبيرة , وما يستهلك مكان كبير في الذاكرة

بالنسبة للدرس الثالث الجمل الشرطية والدوارات ....
for (int i=0;i<10;i++)
{
هنا الكود ستكون الأرقام من الصفر إلى التسعة فقط
if (i>5)
{
وهنا عندما وضعنا جملة شرطيه حددنا فيها اذا كانت القيمة أكبر من خمسة
l1.Items.Add(" من الدوارة " + Convert.ToString(i) + " أكبر من خمسة ");
}
راح يطبع في اللسته كلمة من الدوارة + أكبر من خمسة مع التحويل بالطبع
else
{
لكن اذا كان الشرط غير ذلك أو أصغر من خمسه راح يطبع من الدوارة فقط
l1.Items.Add(" من الدوارة " + Convert.ToString(i) );
}
لدي استفسارات ...هل يعني هذا أن الأعداد التي أكبر من خمسة وأصغر من عشرة هي التي يتحقق لها الشرط الأول (صح)ولهذا في الشرط الثاني هو وضع الأعداد التي أصغر من خمسة من نفسه لأنني محددة من فوق في البداية
2- نحن لم نضع أي شي في الفورم لكي ندخل له مدخل عليه يخرج الشرط الأول أو الثاني ...هل لهذا السبب حقق الشرطين ووضعهم في اللسته ...
أنا عارفة إن استفساراتي مو لهناك لكني أتأكد ...لو سمحت أخي
وأنا عملت الواجب وصار عندي فيه خطأ مادري ليش تحت i
جملة for تختبر شرط أن i أصغر من عشرة

وجملة if الداخلية تختبر شرط أن i أكبر من خمسة

اللي راح ينحط في اللسته هو كل الأرقام اللي تحقق شرط for

بس اللي راح ينحط قدامه كلمة "من الدورارة" هو اللي راح يحقق شرط for و شرط if

مثلاً الرقم 3 يحقق شرط for ولا يحقق شرط if

فهو يمر بجلة for ولايمر بجملة if بل يمر بجملة else

أما الرقم 6 فهو يحقق شرط for و شرط if , فهو يمر بجملة for وجملة if أيضاً

العدد 11 لا يحقق جملة for , فهو لا يمر بجملة for أي أنه لا يمر بجملة if أيضاَ


طيب أختي .. يبدو انك عرفتي كيف ترفقي الملفات .. :smailes103:

راح أشوف الواجب وأرد عليكِ بأقرب وقت ..
خير ^^ ...

=====================

وباقي الواجبات >>

أخي infocom :smailes103:

أخي imadin :smailes103:
معلش تخلفت عن الدرس الرابع وهذا واجب الدرس 3
خير إن شاء الله
ما في أي مشاكل ^^

حاول تتابع معنا واليوم الدرس الجديد بيكون موجود
أو ..
أرى أنكم تحتاجون لبعض الوقت .. لا يضر هذا أبدا ^^
أهم شيء تتابعوا معنا وانتم مرتاحين ..

يارب ما أكون نسيت شيء تاني ...

لو بتريدوا نأجل الدرس كم يوم أو يكون السبت القادم إن شاء الله
منتظر ردكم ^^



..][ حمــاة النهضــة ][..

سرمد الزهراء
03-13-2007, 03:11 PM
]بسم الله الرحمن الرحيم
السلام عليكم أخي العزيز حماة النهضة وعلى تحملك ايانا
وآسفة على إزعاجك ....مرة أخرى وعلى كثرة أسئلتي وطلباتي ...
ولكن مشكلتي مع أداة الفلاش التي أريد أن أضيفها لم تحل ....
ولقد بحثت عن الأداة Managed بحثت عنها في التقنيتين ال .NET والCom ولم أجدها ....فقط وجدت في تقنية NET هذه الأداة macromedia flash factory object وتوقعت انها لها علاقة بأداة الفلاش shokwavflash
ولدي اشكال على ملف وخطأ الآكتيف آكس أنا لا أعرف ماهو أو ماذا يفعل ...لكي أعمل على إصدار أفضل منه ...علما بأني أستخدم مايكروسوفت فيجوال ستوديو .نت 2005
مع اني أخي الكريم عملت إضافة لأداة الفلاش shokwavflash فقط في مايكروسوفت فيجوال ستوديو .نت 2003 وانضافت واستطعت أضع فيها كود واربط فلاش باالفيجوال ...
وأرجوك أخي أن توضح لي هذا السطر

1- سجل الأداة في الريجستري تبع النظام قبل إضافتها للمشروع

أرجوك ياأخي الكريم أن تساعدني ....ماذا أفعل لهذه الأداة ...

انظر إلى الأخطاء التي طلعت لي من اضافة الأداتين على الفورم [/COLOR]
Warning 1 Could not resolve dependent COM reference "stdole, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
وهذا
Warning 2 Failed to create the wrapper assembly for type library "AxShockwaveFlashObjects". Exception of type 'Microsoft.Build.Tasks.ComReferenceResolutionExcep tion' was thrown. AxShockwaveFlashObjects
وهذا
Warning 3 The referenced component 'AxShockwaveFlashObjects' could not be found. Failed to create the wrapper assembly for type library "AxShockwaveFlashObjects". Exception of type 'Microsoft.Build.Tasks.ComReferenceResolutionExcep tion' was thrown.

أعرف اني أطلت كثيرا ولكن بالسؤال نتعلم وانشاء الله أجرك على الله
السلام عليكم ورحمة الله وبركاته

سرمد الزهراء
03-13-2007, 03:15 PM
أنا أخي الكريم درست من الدرس الرابع لكن يبيله شوي .....
الله يعين ..لأن هذا الأسبوع صايرة مزحومة ....
وانشاء الله نوفق في ذلك

حماة النهضة
03-13-2007, 03:19 PM
مشكور أخي الكريم على الدروس
وهذا واجب الدرس الأول والثاني والثالث ....بس الثالث صار فيه عندي خطأ مادري ليش ....
:smailes41:
أختي ..

طيب ايش الخطأ , ممكن تنقلي رسالة الخطأ هنا عشان نعرف نعالجه

شفت ردودك الحين أختي ^^
طيب برد عليكِ بوقت تاني لأني خارج الحين ...



اخوتي :)
خلاص نأجل درس اليوم ليوم السبت ولو جاهزين بنخليه بكرة إن شاء الله ...


والسلام عليكم ورحمة الله وبركاته



..][ حمــاة النهضــة ][..

سرمد الزهراء
03-13-2007, 03:22 PM
يارب ما أكون نسيت شيء تاني ...

لو بتريدوا نأجل الدرس كم يوم أو يكون السبت القادم إن شاء الله
منتظر ردكم ^^

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

سرمد الزهراء
03-13-2007, 03:30 PM
أخي حماة النهضة ...
هذا الكود اله كتبته
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < 12;i++) ;
if (i < 6)
i1.Items.Add("من الدوارة "+Convert.ToString(i1)+"أصغر من سته");
else if (i== 6)

i1.Items.Add("من الدوارة " + Convert.ToString(i1) + "تساوي سته");
else if (i > 6)
i1.Items.Add("من الدوارة " + Convert.ToString(i1) + "أكبر من سته");
وبيحط لي خطأ تحت حرف i
والرساله اله بتطلع لي هي
Error 1 The name 'i' does not exist in the current

سرمد الزهراء
03-13-2007, 03:36 PM
انشاء الله أخي الكريم ...انتظر ردودك ....
ومشكور على تحملك لي لكثرة طلباتي وأسئلتي
وحطيت الخطأ .....حق اله طلع بالواجب
مشكووووووووووووووووور :smailes9:
السلام عليكم

حماة النهضة
03-14-2007, 04:08 PM
السلام عليكم ورحمة الله وبركاته

يا شباب ممكن بس توضيح بسيط ...

حمـاة النهضـة
إحنا مجموعة من الأشخاص أو الشباب بنحاول نعمل شيء مفيد وبنحاول ننوصل للنهضة .. لذلك فحماة النهضة ليس اسم شخص بل هو اسم مجموعتنا ... :)
بالطبع هذا ليس تعريف بحماة النهضة .. فقط نوضح أنها مجموعة وليست فرد واحد
ربنا يوفقكم ...

]بسم الله الرحمن الرحيم
السلام عليكم أخي العزيز حماة النهضة وعلى تحملك ايانا
وآسفة على إزعاجك ....مرة أخرى وعلى كثرة أسئلتي وطلباتي ...
ولكن مشكلتي مع أداة الفلاش التي أريد أن أضيفها لم تحل ....
ولقد بحثت عن الأداة Managed بحثت عنها في التقنيتين ال .NET والCom ولم أجدها ....فقط وجدت في تقنية NET هذه الأداة macromedia flash factory object وتوقعت انها لها علاقة بأداة الفلاش shokwavflash
ولدي اشكال على ملف وخطأ الآكتيف آكس أنا لا أعرف ماهو أو ماذا يفعل ...لكي أعمل على إصدار أفضل منه ...علما بأني أستخدم مايكروسوفت فيجوال ستوديو .نت 2005
مع اني أخي الكريم عملت إضافة لأداة الفلاش shokwavflash فقط في مايكروسوفت فيجوال ستوديو .نت 2003 وانضافت واستطعت أضع فيها كود واربط فلاش باالفيجوال ...
وأرجوك أخي أن توضح لي هذا السطر

1- سجل الأداة في الريجستري تبع النظام قبل إضافتها للمشروع

أرجوك ياأخي الكريم أن تساعدني ....ماذا أفعل لهذه الأداة ...

انظر إلى الأخطاء التي طلعت لي من اضافة الأداتين على الفورم
Warning 1 Could not resolve dependent COM reference "stdole, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
وهذا
Warning 2 Failed to create the wrapper assembly for type library "AxShockwaveFlashObjects". Exception of type 'Microsoft.Build.Tasks.ComReferenceResolutionExcep tion' was thrown. AxShockwaveFlashObjects
وهذا
Warning 3 The referenced component 'AxShockwaveFlashObjects' could not be found. Failed to create the wrapper assembly for type library "AxShockwaveFlashObjects". Exception of type 'Microsoft.Build.Tasks.ComReferenceResolutionExcep tion' was thrown.

أعرف اني أطلت كثيرا ولكن بالسؤال نتعلم وانشاء الله أجرك على الله
السلام عليكم ورحمة الله وبركاته
طيب هذا برنامج صغير (http://www.7oma.com/csharp/flash.zip) بالفجوال بيسك 2005 لتشغيل ملف فلاش

جربية وشوفي كوده , طبعاً لازم يكون منزل في جهازك الفلاش بلاير

الفلاش بلاير هو اللي يشغل ملفات الفلاش , وتتأكدي أنو منزل عندك إذا ملفات الفلاش في أي صفحة أنترنت شغاله

معناها أنو منزل في جهازك

طبعاً الإداه اللي أستخدمتها في البرنامج هي الإصدار التاسع b

موجوده هنا (http://www.7oma.com/csharp/flash9b.zip)

أما إذا رجعت تظهر الرسالة القديمة فبعد ما تضيفي الأداه للمشروع إحذفي مجلدي bin و obj

وراح تشتغل إن شاء الله



أخي حماة النهضة ...
هذا الكود اله كتبته
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < 12;i++) ;
if (i < 6)
i1.Items.Add("من الدوارة "+Convert.ToString(i1)+"أصغر من سته");
else if (i== 6)

i1.Items.Add("من الدوارة " + Convert.ToString(i1) + "تساوي سته");
else if (i > 6)
i1.Items.Add("من الدوارة " + Convert.ToString(i1) + "أكبر من سته");
وبيحط لي خطأ تحت حرف i
والرساله اله بتطلع لي هي
Error 1 The name 'i' does not exist in the current
بالنسبة للخطــأ
كتبت لك الكود أختي و وضحت فيه الأخطاء

for (int i = 0; i < 12;i++) ;
if (i < 6)
i1.Items.Add("من الدوارة "+Convert.ToString(i1)+"أصغر من سته");
else if (i== 6)

i1.Items.Add("من الدوارة " + Convert.ToString(i1) + "تساوي سته");
else if (i > 6)
i1.Items.Add("من الدوارة " + Convert.ToString(i1) + "أكبر من سته");

أول شيء ما في فاصلة منقوطة بعد جملة if الأولى عشان ما نفصل if الأولى عن باقي المجموعة

تاني شيء

إحنا بنحول المتغير i وليس i1 اللي هوا مربع النص

فإنتي كنتي واضعة مربع النص ليتم تحويله ل string لذلك هو بيعتبر إنه فيه خطأ باقي

شيء إضافي

لو إنتي رفعتي الفاصلة المنقوطة بالأعلى بعد أول جملة IF

راح يشتغل البرنامج لكن راح يكون في خطأ غريب و هوا راح يظهر لك كلام غريب في مربع النص

لإنك محولة مربع النص ل string و ليس المتغير i

لذلك لازم تعدلي i1 و تحطي بدلها المتغير i عشان تظهر النتيجة صحيحة

و كذلك في الأقواس نسيتيها

يعني المفروض الكود يكون كذا :

private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < 12;i++)
{
if (i < 6)
{
i1.Items.Add("من الدوارة "+Convert.ToString(i)+"أصغر من سته");
}
else if (i== 6)
{
i1.Items.Add("من الدوارة " + Convert.ToString(i) + "تساوي سته");
}
else if (i > 6)
{
i1.Items.Add("من الدوارة " + Convert.ToString(i) + "أكبر من سته");
}
}
}

بالتوفيق و ما شاء الله عنك


انشاء الله أخي الكريم ...انتظر ردودك ....
ومشكور على تحملك لي لكثرة طلباتي وأسئلتي
وحطيت الخطأ .....حق اله طلع بالواجب
مشكووووووووووووووووور :smailes9:
السلام عليكم
ما في مشكلة أختي .. أي أسئلة بدكم اياها بنرد عليكم بإذن الله ^^

وعليكم السلام ورحمة الله وبركاته



..][ حمــاة النهضــة ][..

[/COLOR]

omar89amir
03-14-2007, 09:19 PM
:smailes65: مشكورررررررررررررررر

omar89amir
03-14-2007, 09:20 PM
جزاك الله كل خير

omar89amir
03-14-2007, 09:21 PM
موضوع رائع

omar89amir
03-14-2007, 09:22 PM
استمر في ابداعنى

omar89amir
03-14-2007, 09:22 PM
الف شكررررررررررررررر

omar89amir
03-14-2007, 09:23 PM
ممنون اخويه

omar89amir
03-14-2007, 09:23 PM
الله يخليك

omar89amir
03-14-2007, 09:24 PM
صدك موضوع رائع

omar89amir
03-14-2007, 09:25 PM
الله يخليك وبدعنى

سرمد الزهراء
03-15-2007, 04:49 PM
السلام عليكم أخي العزيز
وأشكرك على تعبك معايه ....شكرا جزيلا
فتحت المشروع (البرنامج )وشفت الفلاش وفتح عندي وشفت الكود بعد
وشفت بعد الأداة ..لكن بسئل أنا ماقد ضفت أداة من قبل للبرنامج ...فهل أضع الأداة داخل ملفات البرنامج اله على قرص السي وأضيفها في البرنامج من toolbox باليمين أختار choose Item >>>وبعدين أضيفها في com >>>من Browse وأختار موقع الأداة وراح تنضاف ..وله هناك طريقة تانية ....أنا أخاف اسوي اله كتبته تصير مصيبة عندي ...
ومشكور أخي وجزاك الله ألف خير....
السلام عليكم
:smailes9:

حماة النهضة
03-16-2007, 08:19 AM
أختي سرمد الزهراء

وعليكم السلام ورحمة الله وبركاته

ماشاء الله عليك مجتهدة بارك الله فيك واصلي دائماً نحن معك

مافي داعي للشكر أختي , إذا بنقدر نساعد فما بنقصر إن شاء الله

الأداة أنا حطيتها لك كإحتياط , لأنها عادة موجوده في النظام

يعني ضيفيها من من toolbox باليمين choose Item >>>وبعدين في com

بتلاقيها موجوده معك في القائمة هناك مفيش داعي تعمليلها browse

ولما تضيفيها للتول بوكس وتظهر الرسالة اللي ظهرت لك أول مرة احذفي مجلدات obj و bin

وراح تشتغل معك إن شاء الله

أما إذا ما لقيتي الأداة في قائمة com فلازم تنزلي الفلاش بلاير

وما تخافي أختي ماراح تحصل عندك مصيبة إن شاء الله ^^

ربنا يوفقك

..

حماة النهضة
03-17-2007, 03:16 PM
السلام عليكم ورحمة الله وبركاته

شكراً لكل الناس اللي ماشين معنا بالدروس بارك الله فيكم


بالتوفيق يارب للجميع ..ورنا الهمة يلا .....

الدرس الخامس


تشغيل ملف فيديو

دوال تشغيل الفيديو موجودة في ملف Microsoft.DirectX.AudioVideoPlayback.dll

الذي أضفناه إلى التطبيق في الدرس السابق

دوال الفيديو تشبه إلى حد كبير دوال الصوت عدى عن إختلافات بسيطة

من اهم هذه الإختلافات أنه يمكنك أن تحدد كائن حاضن Owner Control لشاشة الفيديو

معنى كائن حاضن اي كائن يعمل كشاشة فيديو

أما إذا لم تحدد كائن حاضن فان التطبيق سيفتح نافذه جديدة لتكون شاشة الفيديو

قراءة أحداث المفاتيح

كل كائن له صفات و دوال كما عرفنا سابقاً , والكائنات تحتوي أيضاً على أحداث Events

مثلاً الزر له عدة أحداث منها عند الضغط عليه Click وعند الضغط المزدوج DoubleClick

و عند مرور مؤشر الماوس به MouseOver

وفي الدروس السابقة إستخدمنا حدث Click فقط

للتصفح بين أحداث الكائن , إختر الكائن ثم أفتح نافذة الصفات "الخواص" واختر زر الأحداث:

http://www.7oma.com/csharp/images/image5-1.jpg

ستظهر لك قائمة بجميع الأحداث للكائن المحدد

ولكي تضيف تعليمات عند حدوث حدث معين اضغط مزدوجاً على أسم الحدث في القائمة

ستتنتقل إلى الشفرة لتكتب التعليمات التي تنفذ عن حدوث ذلك الحدث

ومن الأحداث المهة حدث KeyPress وينطلق هذا الحدث عند الضغط على أي مفتاح

في لوحة المفاتيح .

التطبيق

إفتح تطبيق الدرس السابق وعدل النص في زر فتح ملف الصوت إلى "فتح ملف ميديا"

وفي زر تشغيل ملف الصوت إلى "تشغيل ملف ميديا"

أضف زراً جديداً وغير النص فيه إلى "ملئ الشاشة"

قبل تشغيل ملف الفيديو يجب أن نحدد له كائن حاضن ليعمل كشاشة

افتح التصميم وأضف أدات البانيل إلى الفورم:

http://www.7oma.com/csharp/images/image5-3.jpg

تأكد من إختيار البانيل و غير صفة الإسم إلى p1

غير صفة العرض Width إلى 400 وصفة الإرتفاع Height إلى 300

http://www.7oma.com/csharp/images/image5-4.jpg

من خلال صفة BackgroundImage إختر اي صورة لتكون خلفية الشاشة

ليصبح شكل النافذة هكذا:

http://www.7oma.com/csharp/images/image5-5.jpg

أضغط مزدوجاً على أي زر للذهاب إلى الشفرة ,

نحتاج إلى تعريف كائن عام Global من نوع فيديو ولأننا سنستخدمة في أكثر من إجراء

سنعرفه خارج جميع الإجراءات والدوال , إذهب إلى الشفرة حيث عرفنا متغير الصوت في الدرس السابق

وأكتب تعريف كا ئن الفيديو :

private Video vp;

تحت تعريف كائن الصوت من الدرس السابق :

http://www.7oma.com/csharp/images/image5-2.jpg

سنجعل التطبيق يفتح ملفات صوت أو ملفات فيديو , لكن المشكلة أن للصوت كائن

وللفيديو كائن آخر , وبالتالي يجب أن نعرف نوع الملف حتى نستخدم الكائن المحدد

وبما أن أنواع الفيديو كثيرة جداً فلا يمكننا فحص نوع الملف لتأكد من نوعه

وبالتالي فالحل الوحيد هو أن نحاول أولا تشغيل الملف بكائن الفيديو

فإن ظهر لنا خطأ فنحاول نشغلة بكائن الصوت , وأن ظهر لنا خطأ للمرة الثانية فالملف غير صالح

قد يسأل البعض لماذا بدأنا بتجربة كائن الفيديو مع أن معظم الملفات ستكوت صوت

والإجابة أن كائن الصوت ممكن أن يشغل ملفات فيديو بدون صورة , يعني انه يفتح ملف الفيديو

ويشغل الصوت الذي فيه , وبالتالي فربما يكون الملف فيديو ويتم تشغيله كملف صوت

لذلك يجب أولاً تجربة كائن الفيديو حتى إذا كان ملف فيديو يشغل الصوت مع الصورة

وإذا كان ملف صوت نجرب كائن الصوت ..

لعمل ذلك نحتاج إلى تنفيذ جملة تعقب الإخطاء try مرتين متداخلتين:

try
{
//شغل ملف الفيديو
}
catch
{
try
{
//شغل ملف الصوت
}
catch
{
//الملف غير صالح
}
}

أولا سنجرب فتح ملف فيديو فإذا حدث خطأ فإن المترجم ينتقل لتنفيذ التعليمات داخل جملة catch

والتي هي باللون الأزرق , وهناك جملة tryأخرى نقوم من خلالها بتجربة فتح ملف صوت

فإذا حدث أي خطأ فان المترجم ينتقل لتنفيذ تعليمات catch التي تحتها خط

في زر فتح ملف الميديا أمسح الكود السابق وأكتب بدلاً عنه :

OF.ShowDialog();
try
{
vp = Video.FromFile(OF.FileName);
vp.Owner = p1;
p1.Width = 400;
p1.Height = 300;
}
catch
{
try
{
ap = Audio.FromFile(OF.FileName);
}
catch
{
MessageBox.Show("الرجاء إختيار ملف صالح");
}

}

التعليمة OF.ShowDialog تفتح نافذة فتح ملف ميديا

عند إختيار الملف نجرب تشغيل الفيديو عبر هذه التعليمات:

vp = Video.FromFile(OF.FileName);
vp.Owner = p1;
p1.Width = 400;
p1.Height = 300;

في السطر الأول نحمل الملف الموجود في كائن فتح الملف إلى كائن الفيديو

في السطر الثاني نحدد الكائن الحاضن Owner لكائن الفيديو

في السطر الثالث والرابع , نعيد تحديد حجم الكائن الحاضن إلى الحجم الأصلي

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

في ملف الفيديو لذلك من الأفضل إعادة تحجيم الكائن الحاضن

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

ap = Audio.FromFile(OF.FileName);

عند حدوث خطأ آخر هنا سينتقل المترجم إلى تنفيذ تعليمة catch الداخلية وهي إظهار رسالة الخطأ

سنستخدم نفس الطريقة في إجراء الضغط على زر تشغيل ملف الميديا

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

try
{
vp.Play();
}
catch
{
try
{
ap.Play();
}
catch
{
MessageBox.Show("حدث خطأ اثناء محاولة تشغيل الملف");
}
}

نجرب تشغيل ملف الفيديو وإذا حدث خطا نجرب تشغيل ملف الصوت وإذا حدث خطأ آخر نظهر رسالة.

افتح التصميم واضغط مزدوجاً على زر ملئ الشاشة وأكتب تعليمة ملئ الشاشة لكائن الفيديو:

vp.Fullscreen = true;

كائن الفيديو يحتوي على صفة Fullscreen من نوع قيمة بوليانية اما صح أو خطأ

فإذا حددنا الصفة بقية true فأن تشغيل الفيديو سيكون ملى الشاشة

و إذا حددناها false سيرجع تشغيل الفيديو إلى الكائن الحاضن

عرفنا كيف نجعل التشغيل ملئ الشاشة لكن المشكل كيف نرجعه للكائن الحاضن

لأنه في وضع ملى الشاشة لن نستطيع أن نرى أي شيئ في شاشة الكمبويتر سوى الفيديو

يأتي هنا دور حدث الضغط على أي من مفاتيح لوحة المفاتيح حيث سنجعل الفيديو

يرجع إلى الكائن الحاضن بمجرد الضغط على أي من مفاتيح لوحة المفاتيح

إفتح التصميم وإختر النافذة الأساسية "لا تختر أي زر أو كائن تأكد من إختيار النافذه كلها"

إذهب إلى قائمة الإحداث وأضغط مزردوجاً على الحدث KeyPress

http://www.7oma.com/csharp/images/image5-6.jpg

ستنتقل إلى شفرة الحدث , أكتب تعليمة إعادة صورة الفيديو إلى الكائن الحاضن :

vp.Fullscreen = false;

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

فلن ينطلق حدث الضغط على النافذة , سينطلق الحدث على الزر المحدد فقط

والشفرة السابقة على النافذه الأساسية ,,,

الحل أن هناك صفة في النافذة تمكنها من إطلاق الحدث حتى ولو حصل في أي كائن من الكائنات

هذه الخاصية هي KeyPreview عدلها من False إلى True لتصبح كما في الصورة

http://www.7oma.com/csharp/images/image5-7.jpg

الآن شغل البرنامج وجرب تشغيل ملف صوت أو فيديو او ملف نصي

تلميحات الأدوات

أحيانا تحتاج إلى إظهار ملا حظة بسيطة للمستخدم عن وظيفة زر في التطبيق مثلاً

وتظهر هذا الملاحظات في مستطيل أصفر يظهر بمجرد مرور الماوس من فوق الزر

مثلاً لو تمرر الماوس فوق زر Start في شريط المهام ستظهر هذه الملاحظة

Click here to begin

لعمل مثل هذه الملاحظات في تطبيقنا نحتاج لإضافة كائن جديد

افتح التصميم واسحب كائن تلميحات الأدوات ToolTip

http://www.7oma.com/csharp/images/image5-8.jpg

الآن في أي كائن تختارة ستجد صفة جديدة إسمها ToolTip on toolTip1

أكتب فيها أي تلميح نصي للكائن :

http://www.7oma.com/csharp/images/image5-9.jpg

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

http://www.7oma.com/csharp/images/image5-10.jpg

الواجب

أرسل التطبيق.

.نهاية الدرس الخامس.

..

سرمد الزهراء
03-18-2007, 06:43 PM
السلام عليكم ورحمة الله وبركاته
كيف حالكم إخواني وأخواتي جميع
استاذي الكريم
لدي بعض النقاط على الدرس الرابع
أنا جربت في الإجراءات الإستدعاء ولكن حصلت لي بعض الأخطاء بعضها حل والبعض الأخر لا ...

void Button1Click(object sender, System.EventArgs e)
{
sm();
sm();
sm();
sm();
sm();
}

void sm()
{
MessageBox.Show("من داخل الإجراء");
}

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

وهذا البرنامج ...انظر اله كيف لما اتشغله ...وحطيت بعد الكود في مجلد وورد

وانشاء الله سأنزل بقية ملاحظاتي :smailes107: واستفساراتي ...على هذا الدرس الرابع

سرمد الزهراء
03-18-2007, 07:26 PM
void sm(string msg)
{
MessageBox.Show(msg);
}

المدخلات هي متغيرات كما رأينا حيث عرفنا متغير مدخل اسمه msg من نوع نص string
وفي تعليمة إظهار الرسالة جعلنا الكائن MessageBox.Show يظهر ما في المتغير المدخل msg
الآن عند إستدعاء الإجراء يجب تمرير قيمة من نوع نص مكان المتغير المدخل هكذا:

sm("من داخل الإجراء");
sm("رسالة مختلفة من نفس الإجراء");

نلاحظ أن الإجراء آظهر رسائل مختلفة بنفس الشفرة
الأمر الأول في الكود السابق سيظهر رسالة مكتوب عليها "من داخل الإجراء"
والأمر الثاني سيظهر رسالة مكتوب عليها "رسالة مختلفة من نفس الإجراء"

أنا فهمتهم:smailes54: لكن ....
لم استطع عملهم ....لأني اذا حطيتهم كلهم في زر واحد يعملوا لي أخطاء .....:(

سرمد الزهراء
03-18-2007, 07:37 PM
والأفضل يكون تعريف المتغيرات الدولية في بداية كود النافذة فوق دالة Main :

[CODE]
//هنا تعريف المتغيرات الدولية
[STAThread]
public static void Main(string[] args)

أنا ماعندي بالنافذة من فوق الدالة Main....وين احط الكود ....
هذي الصفحة اله عندي وضعتها
ايش ممكن اعمل ...اذا مو موجود ..عشان أقدر اخلي المتغير public أو private

حماة النهضة
03-19-2007, 07:06 AM
السلام عليكم ورحمة الله وبركاته
كيف حالكم إخواني وأخواتي جميع
استاذي الكريم
لدي بعض النقاط على الدرس الرابع
أنا جربت في الإجراءات الإستدعاء ولكن حصلت لي بعض الأخطاء بعضها حل والبعض الأخر لا ...

void Button1Click(object sender, System.EventArgs e)
{
sm();
sm();
sm();
sm();
sm();
}

void sm()
{
MessageBox.Show("من داخل الإجراء");
}

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

وهذا البرنامج ...انظر اله كيف لما اتشغله ...وحطيت بعد الكود في مجلد وورد

وانشاء الله سأنزل بقية ملاحظاتي :smailes107: واستفساراتي ...على هذا الدرس الرابع



أوكي يا أختي راح نرد على كل أسألتك

لازم يكون الكود المكتوب داخل دالة إجراء النقر على الزر كذا :

void Button1Click(object sender, System.EventArgs e)
{
sm();
sm();
sm();
sm();
sm();
}

void sm()
{
MessageBox.Show("من داخل الإجراء");

يعني لما تسحبي الزر من صندوق الأدوات إلى الفورم

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

sm();
sm();
sm();
sm();
sm();

يعني بيكون شكل الكود كامل يشبه هذا :

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{

}

private void button1_Click(object sender, EventArgs e)
{
sm();
sm();
sm();
sm();
sm();
}

void sm()
{
MessageBox.Show("من داخل الإجراء");
}
}
}

وبعدين هذا بس توضيح عشان فهم الإجراءات والدوال وما راح نحتاجه في التطبيق

حماة النهضة
03-19-2007, 07:19 AM
void sm(string msg)
{
MessageBox.Show(msg);
}

المدخلات هي متغيرات كما رأينا حيث عرفنا متغير مدخل اسمه msg من نوع نص string
وفي تعليمة إظهار الرسالة جعلنا الكائن MessageBox.Show يظهر ما في المتغير المدخل msg
الآن عند إستدعاء الإجراء يجب تمرير قيمة من نوع نص مكان المتغير المدخل هكذا:

sm("من داخل الإجراء");
sm("رسالة مختلفة من نفس الإجراء");

نلاحظ أن الإجراء آظهر رسائل مختلفة بنفس الشفرة
الأمر الأول في الكود السابق سيظهر رسالة مكتوب عليها "من داخل الإجراء"
والأمر الثاني سيظهر رسالة مكتوب عليها "رسالة مختلفة من نفس الإجراء"

أنا فهمتهم:smailes54: لكن ....
لم استطع عملهم ....لأني اذا حطيتهم كلهم في زر واحد يعملوا لي أخطاء .....:(


شوفي يا اختي المفروض ما تحطيهم كلهم في زر واحد اللي في الزر الواحد هم الرسالتين:

sm("من داخل الإجراء");
sm("رسالة مختلفة من نفس الإجراء");

أما الإجراء نفسة فهو لازم يكون خارج إي إجراء ثاني

يعني بيكون الكود كامل زي كذا :


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{

}

private void button1_Click(object sender, EventArgs e)
{
sm("من داخل الإجراء");
sm("رسالة مختلفة من نفس الإجراء");
}

void sm(string msg)
{
MessageBox.Show(msg);
}
}
}

حماة النهضة
03-19-2007, 07:22 AM
والأفضل يكون تعريف المتغيرات الدولية في بداية كود النافذة فوق دالة Main :


//هنا تعريف المتغيرات الدولية
[STAThread]
public static void Main(string[] args)

أنا ماعندي بالنافذة من فوق الدالة Main....وين احط الكود ....
هذي الصفحة اله عندي وضعتها
ايش ممكن اعمل ...اذا مو موجود ..عشان أقدر اخلي المتغير public أو private

حطيها في أي مكان خارج أي إجراء , والأفضل تكون تحت هذه السطرين بعد الحاصرة يعني :

[CODE]public partial class Form1 : Form
{
private ......



ربنا يوفقك

..
وأي شيء نحن حاضرين أسألي وبنجاوبك بإذن الله

سلام

imadin
03-19-2007, 07:45 AM
استفسار لو سمحت في الدرس الرابع
لما أشغل ملف صوتي وأقوم بتشغيل ملف ثاني فوقه يشتغل الثاني بدون أن يختفي الأول يعني يحدث تداخل للملفين ماهو الحل ؟؟
وإن شاء الله أتدارك الدرس الخامس فحقيقة الموقع كثيرا مايعملي مشاكل ومايريد يدخل