الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استشارة حول سلسة دروس من الأعضاء الكرام ,,

مغلق
بدأه Khaled.Alshaya في 6 ديسمبر 2007 · 14 رد · 1,164 مشاهدة · في ارشيف قسم C/C++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ,,

فكرت كثيراُ في طرح دروس حول موضوع في لغة ++C و لكني ترددت كثيراُ في اختيار الموضوع, و لكني في النهاية فكرت في طرح موضوع يتحاشاه الكثير من المبرمجين, ألا وهو دراسة تطبيقية على مستوى الـ Bit.

سيكون كالتالي :

الجزء الأول :

1) مقدمة لوحدة التخزين في الحاسب الـ Bit ( لجميع المبرمجين )

, و أهميتها لمبرمجي اللغات العالية المستوى.

2) التفكير على مستوى الـ Bit و إمكانية التعامل مع الـ Bits في اللغات عالية المستوى,

و الفرق بينها و بين المعاملات المنطقية.

3) المعاملات التي توفرها C++ للتامل على مستوى الـ Bit:

و هي المعاملات التالية :

AND, OR, XOR, The Complement, Shifting Operations.

4) متى يستحسن التعامل مع البيانات على مستوى الـ Bit.

الجزء الثاني :

تطبيقات صغيرة عملية على مستوى الـ Bit.

الجزء الثالث :

مقدمة حول التشفير, و مشروع التشفير باستخدام XOR.

كل جزء سيكون عبارة عن مقال مستقل ,,

ما أطلبه هنا هو ملاحظات حول الدروس و ما ينبغي إضافته و ما ينبغي حذفه,,

و يمكنك طبعاُ إبداء رأيك بكل صراحة, حول تغيير الموضوع,,

تحياتي للجميع ,,

تم تعديل هذه المشاركة بواسطة Khaled.Alshaya في 6 ديسمبر 2007 في 08:13

#2

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

الموضوع الذي اخترته جميل..و مفيد..

لكن كنت أتمنى أن يكون في هذا المنتدى دورة متقدمة في c++

و التي تشمل على overloading operator

inheritance

polymorphism

tamplate

و التوسع في copy constructor

لأن هنا دورات في c++ منذ فترة اقيمت لكن لم تكمل الشرح إلى هذه الدروس...

و الدورة المقامة حاليا ابتدأت من الأول..و سيطول الوقت حتى يصل الى هذه الدروس..و نحن بحاجة الآن لشرح هذه الدروس قبل فوات الأوان..

أرجو أن تضعوا اقتراحي بعين الاعتبار..

و سدد الله خطاكم

#3

السلام عليكم ,,

أهلاُ أختي العزيزة ,,

شكراُ على الصراحة المطلقة :D و هذا هو المطلوب ,,

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

Operators Overloading
Copy Constructors

و سأحاول و ضع مقالتين لهذين الموضوعين و أتكلم عنهما بإسهاب بإذن الله ,,

و بالنسبة للـOperators Overloading سأحاول وضع تطبيق جميل للفكرة مع المقالة,,

بالنسبة للـ Templates فأذكر أن هناك دروس جميلة جداُ لأخ يسمى Time لم يعد يشارك في المنتدى و لكنه تكلم عن الورائة و تعدد الواجهات و القوالب ,, سأحاول إيجاد المواضيع و إضافتها للمواضيع المهمة المثبتة ,,

تحياتي ,,

#4

ألف مليون شكر لك..

جبر الله خاطرك و أعزك في الدارين..

بصراحة تنفس لنا كربة...

و عندي سؤال..

متى نرسل الكائن أو نرجعه من أحد الدوال by reference أو by value?

أرجو أن تضع اجابة سؤالي مع شرحك لـcopy constructor

#5
اقتباس
بالنسبة للمواضيع التي طرحتها ,, فسأتكقل بالتالي ,,كودOperators Overloading

Copy Constructors

و أنا سأتكفل بالتالي إن سنح لي الوقت ;)

inheritance
polymorphism

It's hard to stay in such ridiculous situation

#6
اقتباس
و التي تشمل على overloading operator

inheritance

polymorphism

tamplate

و التوسع في copy constructor

مثال على الـ polymorphism

ما هو الـPolymorphism في البرمجة الكائنية

ما هي فائدة الـ polymorphism

#7

أثابكم الله جميعا...

و شاكرة لكم حسن تعاونكم

#8
اقتباس
متى نرسل الكائن أو نرجعه من أحد الدوال by reference أو by value?

هذا الموضوع لا علاقة مباشره بينه و بين ال Operator Overloading ... لكن سأحاول توضيع الفكره ...

الان كل متغير نقوم بتعريفه في البرنامج يأخذ او يحجز جزءا في الذاكره .. الان وجود هاذا المتغير في الذاكره يهدف الى استخدامه لاحقا في البرنامج ... و لنفترض مثلا اننا نريد برنامجا يقوم بإدخال رقمين ... و نريد معرفة ال Order الطبيعي ... مثلا أدخلنا 10 و من ثم 20 ... في هذه الحاله الترتيب صحيح ... لأن 10 اصغر من 20 ... و نقوم بطباعة الناتج و لكن لو ادخلنا 20 ثم 10 نريد ان تقوم بعمل swap للقيمتين بحيث يظهران بشكل Ordered ... الان نأخذ البرنامج:

int main()
	 {
		 int no1 = 20, no2 = 40;
		 int no3 = 55, no4 = 25;

		 order(no1, no2);
		 order(no3, no4);

		cout << "Number 1 = " << no1 << endl;
		cout << "Number 2 = " << no2 << endl;
		cout << "Number 3 = " << no3 << endl;
		cout << "Number 4 = " << no4 << endl;

		return 0;
	 }

void order(int& n1, int& n2)			// Method to order (replace) two numbers
	{
		 if (n1 > n2)								 
			 {
				 int temp = n1;
				 n1 = n2;
				 n2 = temp;
			 }
	}

الان لو لاحظنا الكود السابق ...

نقوم بوضع 4 قيم ل 4 متغيرات ألا و هي no1, no2, no3 & no4 على الترتيب ...

هنا يتم حجز مكان في الذاكره لكل متغير منهم.

نلاحظ في ال mian اننا نقوم باستدعاء داله اسمها order و هي المسئوله عن فحص الارقام المدخله و مقارنة كل رقمين مع بعضهما لمعرفة هل هم في سيغة order ام لا كما وضحت في كلامي سابقا.

و يتم الاستدعاء كالتالي:

		 order(no1, no2);

في هذا الحاله يذهب البرنامج ليبحث عن الداله order و التي تعريف ال header لها هو:

void order(int& n1, int& n2)

و و يتم اسناد القيمتين no3 و no4 للداله لعملية فحص الرقمين و التي قيمهما على التوالي 55 و 25

بمعنى أن في ال method header سيتم إعطاء قيمة no3 ل n1 و قيمة no4 ل n4 ....

لكن ما نريد أن نلاحظه هنا تعريف الداله order ... نلاحظ في ال header انه تم تعريف n1 و n2 ليس بالطريقه المعتاده حيث نلاحظ وجود & ... هنا ماذا تعني & !!!

قبل شرح ما هيتها و فائدتها لنفترض ان برنامجنا كما هو باستثناء وجود & ...

الذي يحدث ... أن الداله order تأخذ نسخه من المتغيرات المخزنه في الذاكره (في حالتنا هما no3 و no4) ... و تقوم الدالة بإجراء العمليات و الإجراءات على هذه النسخه من المتغيرات دون التأثير على وضع المتغير الأصلي في الذاكره ... بمعنى أن اي تعديل على المتغيرات سيتم التعديل على النسخه المأخوذه من قبل الداله و طباعتها ... و ينتهي استخدام هذه النسخه بمجرد انتهاء البرنامح أو إغلاقه و هذا ما يسمى بال By Value ...

لكن مع وجود & ... هنا يختلف الوضع و منها ينطلق مفهوم ال Reference ...

وجود ال & يعني ان الداله لن تأخذ نسخه من المتغيرات ... و انما ستقوم بعمل access على المتغيرات بشكل مباشر على الذاكره ... و أي تعديل سيتم سيتم تعديله على القيم الموجود في الذاكره بشكل كامل ...

ملخص:

الفرق بين كل من By Value و By Reference هو ان ال Value لا يؤثر على طبيعة المتغير أو قيمته الأصليه في الذاكره و انما يؤخذ نسخه من هذا المتغير و يتم التعديل عليها.

أما ال By Reference فيتم الوصول للمتغير الرئيسي في الذاكره و اتمام العمليات عليه بشكل مباشر و أي تغيير يتم التغيير مباشرة على هذا المتغير و حالته في الذاكره.

Done !

It's hard to stay in such ridiculous situation

#9

وكمثال على التعامل مع bit يمكن كتابة خواريزمية الضغط LZW

d4baa0.gif
#10

وفقك الله على شرحك الماتع و الكافي..

شكرا لك..

بانتظار شرح الأشياء الأخرى من الاخوان بارك الله فيهم

#11
اقتباس
ما أطلبه هنا هو ملاحظات حول الدروس و ما ينبغي إضافته و ما ينبغي حذفه,,

و يمكنك طبعاُ إبداء رأيك بكل صراحة, حول تغيير الموضوع,,

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

ربما من الأفضل كتابة التساؤلات والدروس في مواضيع منفصلة

#12

السلام عليكم:

أبداء وتوكل على الله ولا توجل عملك

اي موضوع لا يهم المهم ان يكون عرضك للموضوع شامل وكامل

نحن في حاجه الى موضوع مفيد ونافع

بالتوفيق ان شاء الله.

tvquran_6.gif

#13

السلام عليكم حقيقة أخي Khaled.Alshaya دروسك متقدمة غالبية الطلاب أو الزوار يبحثون عن ما يدعمون به أنفسهم لكي تكون كمنصة إنطلاق مثل أسئلة الأخت المشتاقة للرحمن أما بالنسبة لي فأنا أرى أهم شيء هو شرح دوال API و مصطلحات MSDN التي تكون جديدة ، في الآخير أتمنى أن تتقبل فائق إحترامي لك و للأعضاء .

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#14

السلام عليكم ,,

بالنسبة للأخت المشتاقة للرحمن ,, فقد وضعت مقالة رداُ على عملية ارجاع الكائن by ref و by value و متى نستخدم الطريقتين بما أن الأخ محمد قد وضع الإجابة على الارسال ,,

متى نرسل الكائن أو نرجعه من أحد الدوال By Reference أو By Value ؟

و إن شاء الله سأبدأ بوضع الدروس في الفترة القادمة عندما أنتهي من إعداد الجزء الثاني و الثالث ,,

تحياتي ,,

#15

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

جزاك الله خيرا و وفقك لخيري الدنيا و الآخرة و أجزل لك المثوبة...

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

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…