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

سي بلس بلس من البدايه الي الاحتراف

مغلقرائج
بدأه البارودي في 7 فبراير 2005 · 167 رد · 20,167 مشاهدة · في المواضيع والدروس
مشاركة: واتساب X فيسبوك تيليجرام
#26

• الكتل و رؤية المتغيرات

جسم حلقة التكرار و الذي يتكون من القوسين "{ }" و الذين يحددون عدة بيانات تسمي بكتلة الكود.

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

الرؤية تعني أن بيانات البرنامج يمكن أن تدخل " تري" المتغير.

(نحن سنناقش أبعاد الرؤية في المستوي الخامس " الدوال")

في برنامج Cubelist نحن نعرف المتغير Cubeالذي يتم تكعيبة داخل الكتلة في البيانات.

Int Cube=numb*numb*numb;

لا يمكن أن تدخل أو تستخدم هذا المتغير خارج الكتلة. إنها مرئية فقط داخل محتويات القوسين "{ }". وذلك إذا وضعت هذا البيان :

Cube=10;

بعد جسم حلقة التكرار.

المعالج سيشير إلي خطأ لان المتغير Cube ليس معرف خارج حلقة التكرار.

من احد فوائد تحديد رؤية المتغيرات بان نفس الاسم للمتغير يمكن أن يستخدم ضمن كتل مختلفة داخل نفس البرنامج.

(تعريف المتغيرات داخل الكتل كما فعلنا في برنامج إل Cubelist

يكون رئيسي في لغة إل C++ لكن ليس محبذا أو ليست له شعبية في لغة إلC )

تم تعديل هذه المشاركة بواسطة البارودي في 13 فبراير 2005 في 01:28

#27

• أسلوب التثليم(الطلب) و التكرار

يملي أسلوب البرمجة الجيد بان جسم حلقة التكرار يكون معوجا – ذلك حول حقا نسبة إلي بيانات حلقة التكرار ( و إلي بقية البرنامج ).

في مثال إل Fordemo خط واحد بيكون معوجا و في مثال إل Cubelist تكون الكتلة بأكملها مضمنه كذلك القوسين "{ }" تكون معوجا .

هذا التثليم تكون أداة بصرية مهمة إلي المبرمج:

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

المعالج لا يهتم إذا أنت قد وضعت الاعوجاج أم لا ( علي الأقل ليس هناك طريقة للإخبار إذا هو اهتم ).

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

نحن نري القوسين "{ }" تم محاذاتهم عموديا . لكن بعض المبرمجين يفضلون وضع قوس البداية مباشرة "{" بعد بيان الحلقة مثل هذا:

post-14-1108247805_thumb.jpg

#28

هذا يوفر خط في التسجيل لكن يجعل الأمر أكثر صعوبة للقراءة.

و ذلك منذ أن كان القوس الافتتاحي "{" صعب للرؤية.

و أصعب للمجاراة بقوس الإغلاق المطابق "}".

الأسلوب الآخر وهو أن يتم اعوجاج جسم الحلقة ولكن ليس الأقواس:

post-14-1108247897_thumb.jpg

#29

هذا موقف مشترك لكن علي الأقل لبعض الناس يجعل الأمر أكثر صعوبة علي العين لإيصال الأقواس "{ }" إلي جسم حلقة التكرار.

علي أي حال يمكنك أن تستخدم تقريبا أي شئ منهما. مهما كان الأسلوب الذي ستختاره استخدمه بثبات.

#30

• معالجة الحركة

يمكنك استخدام المعالجة المستقبلية المبنية في معالجك لإنشاء عرض متحرك مثير لعملية التكرار.

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

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

الأوامر المضبوطة ضرورية لإطلاق المعالج يتفاوت مع المعالجات المختلفة سواء كان "Microsoft visual C++"

أو"Borland C++" كما هو ملائم.

بضغط مفتاح دالة التأكيد يمكنك أن تتسبب في تنفيذ احد سطور برنامجك في وقت التنفيذ.

ستشاهد سلسلة البيانات تنفذ بينما البرنامج يمضي.

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

يمكنك استخدام المعالج أيضا لمراقبة ما يحدث إلي قيم المتغيرات المختلفة بينما تلاحظ خطوة خطوة خلال البرنامج.

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

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

ثانيا استشير الملحق الملائم للأوامر علي كيف يستعمل نوافذ المشاهدة.

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

عادتا مصدر المشكلة سيصبح واضحا.

#31

• اختلافات حلقة التكرار For

تعبير الزيادة ليس بحاجة إلي زيادة متغيرات حلقة التكرار هو يمكنه أن يؤدي أي عملية أنت تحبها.

في المثال القادم هو تناقص متغيرات حلقة التكرار.

برنامج Factor يسال المستخدم لإدخال رقم. وبعد ذلك يحسب مضروب هذا العدد ( المضروب محسوب بضرب العدد الأصلي في جميع الأعداد الصحيحة الايجابية التي اصغر منه . هكذا مضروب 5 هو 5*4*3*2*1 أو 120.)

المثال:

#include<iostream.h>

int main()
{
	unsigned int numb;
	unsigned long fact=1;

	cout<<"Enter a number: ";
	cin>>numb;

	for(int j=numb;j>0;j--)
  fact*=j;
	cout<<"Factorial is "<<fact<<endl;
	return 0;
}

post-14-1108248337_thumb.jpg

#34

في هذا المثال تعبير التهيئة يقوم بوضع قيمة المتغير j إلي القيمة المدخلة بواسطة المستخدم. يسبب تعبير الاختبار إلي تنفيذ حلقة التكرار طالما قيمة إل J اكبر من صفر . تعبير الزيادة يؤدي إلي نقص قيمة إل J بعد كل عملية تكرار.

نحن استخدمنا النوع Unsigned long للمضروب منذ أن كانت مضروبات الأعداد الصغيرة كبيرة جدا.

علي أنظمة إل 32-Bit مثل إل Windows إل Int مثل Long تماما.

لكن Long يعطي قدرة إضافية علي أنظمة إل 16-Bit .

المخرجات توضح أن كيف المضروبات الكبيرة يمكن أن تكون لأعداد مدخلة صغيرة.

اكبر عدد يمكن أن تستخدمه في الإدخال هو 12 .

أنت لن تحصل علي رسالة خطأ بالنسبة للمدخلات الكبيرة لكن النتيجة ستكون خطأ كما أن قدرة النوع Long ستتجاوز.

#35

• تعريف المتغيرات داخل جملة حلقة التكرار For

هناك تجعيده أخري في هذا البرنامج : إن متغير حلقة التكرار j تم تعريفه داخل جملة التكرار For :

For ( int j=numb; j>0; j-- )

هذا بناء مشترك في لغة إل C++ . إنها تعرف المتغير مباشرة بقدر الإمكان إلي نقطة الاستخدام في التسجيل. المتغيرات تم تعريفها في جملة التكرار هذه الطريقة مرئية من نقطة التعريف فصاعدا في التسجيل ( علي خلاف المتغيرات التي تم تعريفها ضمن الكتلة والتي فقط مرئية داخل الكتلة). من الأفضل أن لا تستخدم هذا الأسلوب إلا إذا كانت المتغيرات سيتم استخدامها خارج حلقة التكرار.

تم تعديل هذه المشاركة بواسطة البارودي في 13 فبراير 2005 في 01:59

#36

• التهيئة المتعددة وتعبيرات الاختبار

يمكنك أن تضع أكثر من تعبير واحد في جزء التهيئة لجملة التكرار For . يتم الفصل بين كل تعبير بفصله.

يمكنك أيضا أن تضع أكثر من تعبير زيادة ولكن لا يمكنك أن تضع أكثر من تعبير اختبار.

ها هو مثال:

post-14-1108249388_thumb.jpg

#37

هذا المثال له متغير حلقة تكرار طبيعي هو j و لكن هناك متغير تهيئة آخر وهو Alpha و تناقص في الجزء الثالث في Beta .

المتغيران Alpha و Beta ليس بحاجه إلي أن يقيما علاقة مع بعضهم البعض أو مع J . تعبيرات التهيئة المتعددة وتعبيرات الزيادة المتعددة منفصلة عن بعضهما البعض بفواصل.

في الحقيقة يمكنك أن تحذف كل أو بعض التعبيرات إذا أنت تريد ذلك.

التعبير:

For (;; )

إنها تماما مثل حلقة التكرار While بتعبير الاختبار المتحقق. نحن سننظر إلي حلقة التكرار While بعد ذلك.

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

بينما هذه النظرات يمكن أن تجعل التسجيل أكثر تصغيرا يميلون إلي نقص مقروئيته أيضا.

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

#38

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

* وللدول العربيه بمزيد من التقدم* ;)

#40

• حلقة التكرار While

حلقة التكرار For تنفذ شئ ثابت لعدد معين من المرات. ماذا يحدث إذا أنت لا تعرف كم عدد المرات التي تحتاجها لتنفيذ شئ ما قبل أن تبدأ التكرار؟

في هذه الحالة سنستخدم نوع مختلف من حلقة التكرار: حلقة التكرار While .

في المثال التالي : ENDON0 يطلب من المستخدم إدخال سلسلة من الأعداد . عندما الرقم المدخل يساوي صفر حلقة التكرار تنتهي.

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

#include<iostream.h>

int main()
{
	int n=99;

	while(n != 0)
  cin>>n;
	cout<<endl;
	return 0;
}

post-14-1108388114_thumb.jpg

#43

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

حلقة التكرار While تبدو مثل نسخة مبسطة من حلقة التكرار For . إنها تحتوي علي تعبير اختبار و لكن لا تحتوي علي تعبير تهيئة أو تعبير زيادة.

الشكل التالي يعرض تخطيط لحلقة التكرار While .

post-14-1108390119_thumb.jpg

تم تعديل هذه المشاركة بواسطة البارودي في 14 فبراير 2005 في 17:08

#44

بمجرد أن شرط حلقة التكرار متحقق فان الحلقة تستمر في التنفيذ.

في برنامج ENDON0 تعبير الاختبار

N != 0

(n لا تساوي 0 ) يستمر هذا الشرط متحقق حتى يدخل المستخدم الرقم صفر.

الشكل التالي يوضح عملية حلقة التكرار While.

إن بساطة حلقة التكرار While خداعة نوعا ما. بالرغم من أن ليس هناك تعبير تهيئة متغير الحلقة ( n في برنامج ENDON0 ) يجب أن يتم تهيئته قبل بداية حلقة التكرار. جسم حلقة التكرار يجب أيضا أن يحتوي أيضا علي بعض التعبيرات التي تغير قيم متغيرات حلقة التكرار. ما عدا ذلك الحلقة لن تنتهي.

في برنامج ENDON0 هو

Cin >> n;

post-14-1108389710_thumb.jpg

تم تعديل هذه المشاركة بواسطة البارودي في 14 فبراير 2005 في 17:01

#45

• بيانات متعددة في حلقة التكرار

المثال التالي .. WHILE4 يستخدم بيانات متعددة في حلقة التكرار while . هو يختلف عن برنامج Cubelist و الذي تم مشاهدته سابقا مع حلقة التكرار For .

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

دعنا نفترض ذلك في هذا البرنامج من المهم وضع النتائج في عمود يتكون من أربع أرقام عريضة.

لضمان أن النتائج ملائمة لعرض هذا العمود فيجب علينا أن نوقف عمل حلقة التكرار قبل أن تكون النتائج اكبر من 9999 .

بدون حسابات مسبقة نحن لا نعلم ما الرقم الذي سيعطي نتيجة بهذا الحجم لذا تركنا البرنامج يخمن ذلك.

تعبير الاختبار في جملة while ينهي البرنامج قبل أن تكون قيمة المضروب اكبر من المطلوب.

#include<iostream.h>
#include<iomanip.h>

int main()
{
	int pow=1;
	int numb=1;

	while(pow<10000)
	{
  cout<<setw(2)<<numb;
  cout<<setw(5)<<pow<<endl;

  ++numb;
  pow=numb*numb*numb*numb;
	}
	cout<<endl;
	return 0;
}

post-14-1108820069_thumb.jpg

تم تعديل هذه المشاركة بواسطة البارودي في 19 فبراير 2005 في 16:35

#46

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

في كل وقت خلال الحلقة نحن نقوم بزيادة قيمة المتغير Numb .

لكن لا نستخدم المتغير Numb داخل تعبير الاختبار في حلقة التكرار While بالرغم أن نتيجة قيمة المضروب تتوقف عندما يتوقف عمل حلقة التكرار.

ها هي المخرجات:

post-14-1108820265_thumb.jpg

#49

السلام عليكم أخي , هل يمكنك وضع الدروس في ملفات وورد كالجزء الأول من الدوره و شكرا.

qassam.gif
#50

جزاك الله خيرا

وإلى الأمام

لا إله إلا الله محمد رسول الله

mask.gif

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

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

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

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

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

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