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

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

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

يطبع هذا البرنامج احد الرسائل الثلاثة المحتملة , معتمدا علي سواء إذا كان المستخدم سيدخل الرقم33 ,45 أو 78 .

كما أنت قد تتذكر , تسجيلات طويلة (LPS) احتوت العديد من الأغاني و المقلوبة في 33 RPM , الأصغر 45s حملت فقط أغنية وحيدة , و إل 78s كانت الصيغة التي سبقت LPS و45s .

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

Switch ( Speed )

أقواس شيالات {} تحدد عدد من بيانات الحالات . كل كلمة محجوزة من Case تتبع بثابت , و الذي لا يوضع في أقواس حصر ( ) لكن يتبع بالنقطتين ":" .

Case 33:

أنواع بيانات الثابت ل Case يجب أن يتفاعل مع متغير Switch .

الشكل التالي يعرض تنسيق جملة Switch :

post-36368-1114405450_thumb.jpg

#102

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

عندما تكون هذه إل case هي المطلوبة فان البيانات فورا التي بعد الكلمة المحجوزة Case يتم تنفيذها حتى يتم الوصول إلي Break .

ها هو مثال علي مخرجات PLATTER :

post-36368-1114405588_thumb.jpg

#104

• جملة Break

برنامج PLATTERS لديه جملة Break في نهاية كل قسم من أقسام Case . تؤدي الكلمة المحجوزة Break إلي الخروج من بيان Switch بالكامل. التحكم يذهب إلي البيان الذي يأتي بعد نهاية تركيبة Switch , وكما هو موجود في برنامج PLATTERS يؤدي إلي نهاية البرنامج.

لا تنسي إل Break ; بدونها, التحكم سيمرر إلي الأسفل ( " أو انهيارات خلال") إلي البيانات للحالة التالية أو إلي Next case , و التي عادتا التي لا تريدها ( بالغم من إن أحيانا بتكون مفيدة ).

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

إن عملية جملة Switch تظهر في الشكل التالي .

الكلمة المحجوزة Break أيضا تستخدم للهروب من التكرار.

نحن سنناقش هذا قريبا.

post-36368-1114405877_thumb.jpg

#105

• جملة Switch مع المتغيرات الحرفية (Character variables)

مثال PLATTERS يوضح جملة Switch معتمدة علي متغير من النوع Int .

يمكنك أيضا استخدام النوع Char.

ها هو برنامجنا ADELSEIF تم إعادة كتابته لكي يكون ADSWITCH :

#include<iostream.h>
#include<conio.h>

int main()
{
	char dir='a';
	int x=10, y=10;

	while(dir != '\r')
	{
  cout<<"\n Your location is "<<x<<", "<<y;
  cout<<"\n Enter direction(n,s,e,w): ";
  dir=getche();
  switch(dir)
  {
  case'n': y--; break;
  case's': y++; break;
  case'e': x++; break;
  case'w': x--; break;
  case'\r': cout<<"Exiting\n";break;
  default: cout<<" try again\n";
  }
	}
	return 0;
}

post-36368-1114406234_thumb.jpg

#107

المتغير الحرفي Dir استخدم كمتغير Switch , و الثوابت الحرفية 'n' و 's' وهكذا استخدمت كثوابت ل Case .

( لاحظ ذلك يمكنك استخدام الأعداد الصحيحة و الحروف كمتغيرات ل Switch كما هو موضح في آخر مثالين ولكن لا يمكنك استخدام النوع Floating-point الأعداد العشرية )

منذ هم قصار جدا, البيانات التي تلي كل كلمة محجوزة Case كتبت علي سطر واحد و التي تجعل اللسته أكثر ضغطا.

نحن أيضا أضفنا Case لطباعة رسالة الخروج عند الضغط علي [Enter] .

#108

• الكلمة المحجوزة Default

في برنامج ADSWITCH حيث تتوقع أن تري الحالة الأخيرة في أسفل بناء Switch , بدلا من ذلك ستري الكلمة المحجوزة default.

هذه الكلمة المحجوزة تعطي بناء Switch طريق لاتخاذ إجراء لو كانت قيمة متغير حلقة التكرار لم يتفاعل مع أي ثابت من ثوابت case .

هنا نحن نستخدمه لطباعة جملة " Try again " لو المستخدم ادخل حرفا غير معروف.

ليس من الضروري وضع break بعد default عندما نكون في نهاية Switch علي أية حال.

بيان Switch هي طريقة أساسية لفهم موضوع تحليل المدخلات المدخلة بواسطة المستخدم.

كل الحروف المسموح بها ممثلة من قبل case.

إنها فكرة جيدة لاستخدام جملة default في كل جمل Switch حتى ولو كنت لا تفكر بأنك ستحتاجها.

أي بناء مثل:

post-36368-1114407120_thumb.jpg

#109

ينذر المبرمج ( أو المستخدم ) أن شئ ما فشل أو خطأ في عملية البرنامج.

لمصلحة الإيجاز نحن لا نتضمن عادتا مثل بيان default , لكن يجب عليك ذلك خصوصا في البرامج الجدية.

#110

• Switch ضد أو مقابل IF…Else

متى تستخدم سلسلة من جمل If…Else ( أو Else…If ) ومتى تستخدم جملة Switch ؟ في بناء If…Else يمكنك استخدام سلسة من التعبيرات التي تتضمن المتغيرات الغير مرتبطة ومعقدة كما تحب .

علي سبيل المثال:

post-36368-1114407296_thumb.jpg

#111

في جملة Switch , علي أية حال, كل الفروع مختارة بنفس المتغير;

الشئ الوحيد الذي يميز فرع واحد عن الآخر هو قيمة هذا المتغير.

أنت لا يمكنك أن تقول:

post-36368-1114407396_thumb.jpg

#112

ثابت Case يجب أن يكون عدد صحيح أو حرف ثابت , مثل 3 أو 'a' , أو تعبير يجمع علي ثابت مثل 'a'+32 .

عندما تجتمع هذه الشروط , جملة Switch تكون نظيفة جدا – سهلة الكتابة و الفهم .إنها يجب أن تستخدم وقت الإمكان, خصوصا عندما تكون شجرة القرارات لها أكثر من بضعة إمكانيات.

#113

• المعامل الشرطي

هنا نوع غريب من معامل القرار .

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

علي سبيل المثال, هنا جملة If…Else قد أعطت المتغير Min القيمة alpha أو القيمة beta معتمدة علي أي الأصغر فيهم :

post-36368-1114876503_thumb.jpg

تم تعديل هذه المشاركة بواسطة البارودي في 30 أبريل 2005 في 18:56

#114

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

هذا المعامل يشمل رمزين و الذين يعملون في ثلاث محاور. انه فقط مثل المعامل الذي في إل C++ ; المعاملات الأخرى تعمل في محور أو محورين علي الأكثر.

هنا تكافؤ في نفس أجزاء البرنامج , مستخدما المعامل الشرطي:

post-36368-1114876655_thumb.jpg

#116

إن علامة الاستفهام و علامة إل ":" يؤدون إلي تكوين معامل شرطي.

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

post-36368-1114876816_thumb.jpg

#117

هو تعبير اختبار. هو و alpha و beta يمثلون ثلاث محاور.

إذا تحقق تعبير الاختبار , فان كامل التعبير الشرطي سيتعامل مع قيمة المحور الذي يلي علامة الاستفهام : alpha في المثال.

إذا لم يتحقق تعبير الاختبار، فان التعبير الشرطي سيتعامل مع قيمة المحور الذي يلي علامة ":" : في المثال beta .

علامات الحصر التي حول تعبير الاختبار لم يحتاجها المعالج ، لكنهم مفضلين ومألوفين أنهم يجعلون الجملة أسهل في القراءة ( وتحتاج جميع المساعدات التي يمكن أن تصبح ) .

الشكل التالي يعرض تنسيق المعامل الشرطي والشكل الذي يليه يعرض عملياتها.

post-36368-1114877130_thumb.jpg

post-36368-1114877200_thumb.jpg

#118

التعبير الشرطي يمكن أن يخصص إلي متغير آخر , أو يستخدم في أي مكان قيمة يمكن أن تكون. في هذا المثال هو خصص إلي المتغير Min .

هنا مثال آخر: الجملة استخدمت معامل شرطي لإيجاد قيمة مطلقة للمتغير n . ( القيمة المطلقة للرقم عبارة عن رقم سالب تم إزالة الإشارة السالبة منه لذلك بتكون موجبة دائما.)

post-36368-1114877321_thumb.jpg

#119

لو كانت n اصغر من الصفر فان التعبير سيصبح –n , رقم موجب.

ولو كانت n ليست اصغر من صفر , فان التعبير سيبقي n . إن القيمة ستكون مطلقة ل n , و التي خصصت إلي absvalue.

هنا برنامج Condi . CPP و الذي يستخدم معامل الشرط لطباعة x كل ثماني مسافات في سطر من النص .

ربما تستخدم هذا لتري أين تم توقف إل Tab علي شاشتك .

#include<iostream.h>

int main()
{
	for(int j=0;j<80; j++)
	{
  char ch=(j%8) ? ' ' : 'x';
  cout<<ch;
	}
	return 0;
}

post-36368-1114877591_thumb.jpg

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

#122

بينما إل j تدور خلال الأعداد من صفر إلي 79 فان معامل الباقي يسبب التعبير (j%8) لكي يصبح غير متحقق, - ذلك , الصفر- فقط عندما j تكون مضروب ل 8 .

لذي فان التعبير الشرطي

post-36368-1114877994_thumb.jpg

#123

يأخذ القيمة ' ' ( مسافة واحدة ) عندما لا تكون إل j مضروب لل8 , و القيمة "x" عندما تكون كذلك.

أنت قد تعتقد أن هذا محكم أو موجز , لكننا كان يمكننا أن ندمج الجملتين في جسم حلقة التكرار لكي تعطينا شكل واحد. بإزالة المتغير Ch :

post-36368-1114878121_thumb.jpg

#124

مبرمجي إل C++ ( و إل C ) في شركة HOTSHOT يحبون هذا النوع من الأشياء - يحصلون علي الكثير من النشاط من الاكواد القليلة جدا. لكنك لست بحاجة إلي أن تكافح إلي الاكواد القليلة في حالة إذا أنت لا تريد ذلك. أحيانا يصبح منعزل أو مظلم لذا فانه لا يساوي الجهد.

ومع ذلك فان استخدام المعامل الشرطي بيكون اختياري : جملة If…Else و بعض سطور البرامج الأخرى الإضافية ستنجز نفس الشئ.

#125

• المعاملات المنطقية

حتى الآن رأينا عائلتين من المعاملات ( بالإضافة إلي المعامل الشرطي الشاذ ) .

أولا المعاملات الحسابية + , - , * , / , و % .

ثانيا المعاملات العلاقية > , < , => , =< , == , و != .

دعنا نفحص العائلة الثالثة من المعاملات , و تسمي المعاملات المنطقية.

تلك المعاملات تسمح لك لدمج المتغيرات المنطقية منطقيا ( تلك , متغيرات من النوع Bool , بالقيم True أو False ).

علي سبيل المثال," اليوم هو يوم عمل" له قيمة منطقية, سواء كانت هذه القيمة صادقة أو خاطئة ( True أو False ) .

التعبير المنطقي الآخر " ماريا أخذت السيارة " .

نحن يمكننا أن ( نربط ) ننشئ علاقة بين هذه التعبيرات منطقيا :

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

الاتصال المنطقي هنا هو الكلمة.

و التي تزود قيمة حقيقية أو خاطئة ( True أو False ) إلي مجموعة العبارتين. فقط لو كان كل منهما صادق (True) فيجب عليا أن اخذ الحافلة. :rolleyes:

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

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

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

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

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

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

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