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

سي بلس بلس

مغلقرائج
بدأه البارودي في 28 نوفمبر 2004 · 165 رد · 36,744 مشاهدة · في المواضيع والدروس
مشاركة: واتساب X فيسبوك تيليجرام
#52

• العبارات المخصصه

الشفرات ( العبارات )

Var1=20;

Var2=Var1+20;

خصصت قيم الي متغيرين . علامة التساوي ( = ) مثلما تخمن تجعل القيم التي في اليمين تكون مخصصة للمتغيرات التي في اليسار .

ال = في ال C++ تعتبر مثل ال ( := ) في ال Pascal او ال = في ال Basic .

في السطر الاول نشاهد ذلك . Var1 التي من قبل لم يكن لها قيمة احضرت القيمة 20 .

#53

• الثوابت من النوع Integer

الرقم 20 هو ثابت من النوع Integer .

الثوابت لا تتغير اثناء مسلك او تشغيل البرنامج .

الثوابت من النوع Integer تشتمل علي التسعة اعداد الاولية العدديه .

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

و يجب ان تكون اكذوبه ضمن صفوف ال Integer في الصف الثاني من البرنامج نشاهد ذلك .

علامة الجمع ( + ) تضيف قيمة ال Var1 و 20 في حين ان 20 تمثل ثابت اخر . الناتج من عملية الاضافة هذه يخصص كقيمة لل Var2

#54

• اختلاف المخرجات

الشفرة

Cout<<"Var1 + 20 is ";

تعرض عبارة ثابتة كما راينا سابقا .

الشفرة التالية

Cout<<Var2<<endl;

تعرض قيمة المتغير Var2 . كما تستطيع ان تري في نافذة المخرجات .

مخرجات البرنامج هي

Var1 + 20 is 40

لاحظ ان Cout و العامل << يعرفون كيف يعالجون الاختلاف بين ال Integer و ال String .

لو ارسلناهم حروف سوف يطبعوا كعبارة او جملة .

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

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

وكما تري المخرجات للعبارة الثانية ل Cout تظهر في نفس السطر في المخرجات علي الشاشة .

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

الان سنري طريقة اخري باستخدام بعض الاشياء و التي تسمي المعالجات او المشغلات .

#55

• المشغل EndL

اخر عبارة Cout في برنامج IntVars تنتهي بكلمة غير متداولة : Endl .

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

انه نفس التاثير كما لو ارسلنا او كتبنا الحروف " \n " لكن بنوع ما اوضح . انه مثال علي المشغلات .المشغلات هي اوامرالي مجري المخرجات حيث تعدل و تغير المخرجات لتسير في طرق متعددة .

نحن سنري الكثير منها بعد ذلك . واذا تحدثنا بدقة Endl ( ليست مثل '\n' ) ايضا تؤدي الي ان المخرجات تتوازن لكي تكون كاسحة . لكن ذلك يحدث بطريقة غير منظورة لذي من اجل معظم هذه الاغراض السطر الثاني سيكون مماثل له .

#56

• الانواع الاخري من المتغير Integer

هذه عدة انواع عديدة من الارقام Integer بجانب النوع Int اكثر النوعين الشائعيين هما Long و Short .

( علي سبيل الحصر سنتكلم جيدا عن النوع Char كما تكلمنا عن النوع Int . لكن سنقوم بتغطيتهم كل بمفرده ) .

نحن سنلاحظ ان مساحة النوع Int تابعة للنظام . علي العكس تماما ان النوعين Long و Short يملكون مساحه ثابتة لا يهمه اي النظام استخدم .

النوع Long عادتا ياخذ اربعة Bytes التي هي نفس المساحة التي ياخذها النوع Int في نظام النوافذ 32-Bit .

كذلك تاخذ نفس الحدود من -2147483648 الي 2147483647 .

انها تستطيع ايضا ان تكتب مثل Int Long; هذا معناه انه نفس النوع Long .

انها نقاط قليلة لاستخدام النوع Long في النظام 32Bit لانها نفس النوع Int . ومع ذلك لو برنامجك احتاج ان يشتغل في نظام 16Bit كذلك مثل ال Ms-Dos . او في اصدار قديم من النوافذ . مخصصين النوع Long سيضمن اربعة Bit من النوع Integer .

في نظام ال 16Bit النوع Int يملك نفس الحدود للنوع Short .

في كل انظمة النوع Short تأخذ اثتين Bytes وتعطي له حدود

من -32768 الي 32767 .

من المحتمل انها ليست النقاط المستخدمة للنوع Short في انظمة النوافذ الحديثة الا اذا كانت مهمة لحفظ الذاكرة .

النوع Int وان كان اكبر مرتين دخل اسرع من النوع Short .

لو احتجت ان تنشئ ثابت من النوع Long استخدم الحرف L بعد قيمة الرقم كما في

Longvar=7678L; // Assigns long constant 7678 to longvar

العديد من المعالجات تعرض النوع Integer التي خصصت بصراحة ارقام ال Bits المستخدمة ( تذكر ان 8Bits تساوي Bytes ) هذه اسماء الانواع و التي اسبقت ب Two underscore هذه الاسماء هي

_Int8 , _Int16 , _Int32 , _Int64 النوع _Int8 مطابق ل Char . وعلي الاقل في نظام ال 32Bits النوع _Int16 مطابق ل Short . و ال _Int32 مطابق لكلا من Int و Long . النوع _Int64 تمسك بنوع Integer كبير بارتفاع الي 19 رقم عشري احادي .

مستخدمين اسماء هذه الانواع و التي لها ميزة ان الارقام Bytes استخدمت للمتغير الذي لم يعد للاستخدام .

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

تم تعديل هذه المشاركة بواسطة البارودي في 4 ديسمبر 2004 في 00:50

#57

• المتغير من النوع Character

النوع Char يخزن Integers التي تتراوح قيمتها بين -128 الي 127 .

المتغيرات من هذا النوع تشغل فقط 1Bytes ( 8Bits ) من الذاكره .

المتغيرات من النوع Character في بعض الوقت تستخدم لتخذين الارقام التي تحدد نفسها في هذا المجال المحدود .

لكن غالبا ما تستخدم كثيرا لتخزين حروف ال ASCII .

و كما تعلم الحروف ASCII تضع اسلوب الحروف التي تنوب عنها ارقام كذلك مثل ' a ' و ' b ' و ' $ ' و ' 3 ' و هكذا مثل الارقام . هذه الارقام تكون في محيط من 0 الي 127 . مع انظمة النوافذ يزيد هذا المحيط الي 255 . لكي يمد بالعديد من اللغات الاجنبية الاخري و حروف النقش والرسم .

التعقيدات نتجت عندما استخدمنا الحروف الاجنبية وايضا عندما البرنامج تحول بين انظمة تشغيل الحاسب في نفس اللغة .

هذا لان الحروف في محيط 128 الي 255 .

لا تعتبر قاعدة او مقياس و لان الواحد Byte مساحة النوع Char صغير جدا ليمد ارقام الحروف في اللغات العديدة . كذلك مثل اللغة اليابانية .

Standard C++ امد بنوع من الحروف الكثيرة و التي تسمي Wchar_t . لاستعمال الحروف الاجنبية . هذا مهم لو كنت تكتب برنامج للتقسيم العالمي و مع ذلك في هذا الكتاب سنتجاهل النوع Wchar_t و نفترض ان نحن سنتعامل مع حروف ASCII .

والتي وجدت موضوعة في الاصدار المتداول من النوافذ .

تم تعديل هذه المشاركة بواسطة البارودي في 4 ديسمبر 2004 في 01:04

#58

• ثوابت الحروف

ثوابت الحروف تستخدم علامة تنصيص واحدة حول الحرف مثل 'a' و 'b'

( لاحظ ان هذا مختلف عن الجمل الثابتة و التي تستخدم علامتين تنصيص " " ) .

عندما معالج ال C++ يقابل مثل ثوابت الحروف فانها تترجم بشفرة ASCII المناظرة لها .

الثابت 'a' تظهر في البرنامج كمثال ستترجم في ال 97 كما هو مبين في الشكل رقم ( 4)

المتغيرات من النوع Character يمكن ان تحتوي علي ثوابت حروف كقيمة .

post-14-1102112169_thumb.jpg

تم تعديل هذه المشاركة بواسطة البارودي في 4 ديسمبر 2004 في 01:16

#59

و البرنامج التالي يظهر بعض الامثلة علي ثوابت الحروف و المتغيرات و اسم البرنامج CharVAr.Cpp

البرنامج :

#include<iostream.h>
int main()
{
	char charvar1='a';
	char charvar2='\t';

	cout<<charvar1;
	cout<<charvar2;

	charvar1='b';

	cout<<charvar1;
	cout<<'\n';
	return 0;
}

post-14-1102112489_thumb.jpg

تم تعديل هذه المشاركة بواسطة البارودي في 4 ديسمبر 2004 في 01:21

#62

• الاختصارات

المتغيرات يمكن ان تختصر في نفس الوقت التي تعرف فيه .

في هذا البرنامج متغيرين من النوع Char - Charvar1 و Charvar2 – اختصروا الي ثوابت الحروف 'A' و '\t' .

#63

• الهروب المتتابع

هذا شكل ثاني من اشكال الثوابت التي من النوع Character . '\t' وهو احد الشواذ مثل '\n' التي رايناها من قبل . انها مثال للهروب المتتابع .

الاسم يعكس الحقيقة ان Backslash تسبب " هروب " من الاسلوب البسيط للحروف المترجمه .

في هذه القضية t لم تترجم كالحروف 't' لكن ترجمت كحروف الtab .

ال tab تسبب الطباعة للتكملة في الوقوف التالي لل tab في نافذة عرض البرنامج . ال tab تؤدي الي الوقوف بعد 8 مسافات .

ثوابت الحروف الاخري '\n' ترسل بصورة تلقائية للCout في السطر التالي من البرنامج .

الهروب المتتابع يمكن ان يستخدم كحروف الفصل في الجمل الثابته .

الجدول رقم (1) يظهر قائمة بحروف الهروب المتتابع العام .

post-14-1102199062_thumb.jpg

تم تعديل هذه المشاركة بواسطة البارودي في 5 ديسمبر 2004 في 01:24

#64

بعد ال Back slash علامة التنصيص الواحده و علامتين التنصيص كل هؤلاء لهم معاني خاصة عندما استخدموا كثابت .

انهم يجب ان يكونوا نائبين بواسطة الهروب المتتابع عندما نريد ان نعرضهم كحروف . ها هو مثال لعلامتين تنصيص في جملة ثابته :

Cout<<"\" Run , sport , run > \" She said.";هذا سيترجم الي :

" Run , sport , run " she said. بعض الوقت تحتاج ان تنوب ثوابت الحروف التي لا تظهر في لوحة المفاتيح .

كذلك مثل حروف الرسم زيادة علي شفرة ال ASCII 127 لفعل ذلك يمكنك ان تستخدم ال '\xdd' الوكيلة بينما كل من d بقيت للارقام السداسي عشر .

لو اردت ان تطبع مثلث اصم قائم الزاوية كمثال ستجد كذلك قائمة حروف مثل الارقام العشرية 178 التي تكون ارقام في السادس عشر B2 في جدول ال ASCII .

هذه الحروف ستكون موكله بالحروف الثابته '\XB2' سنري امثله لهذا في وقت اخر .

برنامج ال CharVars يطبع قيم المتغير CharVar1 ('A') و قيم المتغير Charvar2 (atab ) .

انها اذا تضع لل CharVar1 قيمه جديده ('B') تطبع ذلك وفي النهاية تطبع سطر جديد .

المخرجات تظهر كذلك :

A B

تم تعديل هذه المشاركة بواسطة البارودي في 5 ديسمبر 2004 في 01:29

#65

• المدخلات بواسطة Cin

الان راينا بعض المتغيرات المستخدمة هيا بنا نري كيف البرنامج ينجز عملية الادخال Input .

المثال التالي من البرنامج يسال المستخدم عن درجة الحرارة بالفهرينهايت ثم يحولها الي الدرجة بالسيلزيوس ويعرض النتيجة ويستخدم متغيرات من النوع Integer . ملف المصدر Fahren.cpp .

الكود :

#include<iostream.h>

int main()
{
	int ftemp;
	cout<<"Enter temperature in fahrenheit:";
	cin>>ftemp;
	int ctemp=(ftemp-32)*5/9;
	cout<<"Equivalent in celsius is:"<<ctemp<<'\n';
	return 0;
}

post-14-1102288436_thumb.jpg

تم تعديل هذه المشاركة بواسطة البارودي في 6 ديسمبر 2004 في 02:13

#68

الشفرة : Cin>>Ftemp;

تؤدي الي ان البرنامج ينتظر المستخدم حتي يدخل رقم .

الرقم النتج يضع في المتغير Ftemp .

الكلمة المحجوزة Cin ( تنطق "C in" ) هي عبارة عن كائن معرف من قبل في ال C++ لكي تناسب قاعدة مجري المدخلات . هذا المجري ينوب عن تدفق البيانات من الكلمة المحجوزة ( علي الاقل تكون مباشرة )

ال >> هو عامل ادخال او الاحضار من المعامل . انها تاخذ القيمة من مجري الكائن اللي علي الشمال وتضعها في المتغير اللي علي اليمين .

هذه بعض امثلة التفاعل بالبرنامج :

Enter temperature in Fahrenheit : 212

Equivalent in Celsius is : 100

الشكل (5) يعرض الادخال باستخدام Cin وعامل الادخال >> :

post-14-1102288805_thumb.jpg

تم تعديل هذه المشاركة بواسطة البارودي في 6 ديسمبر 2004 في 02:21

#69

• تعريف المتغيرات في نقطة مستخدمه

برنامج ال Fahren يحتوي علي العديد من التجاعيد بجانب كفاءة مدخلاته . انظر بدقة في القائمة . اين تعريف المتغير Ctemp ؟ لاحظ في اول البرنامج . لكن السطر التالي الي اخر سطر استخدموا لتخزين نتيجة العمليات الحسابية . كما لاحظنا سابقا . يمكنك تعريف المتغيرات في كل مكان في البرنامج . فقط لاحظ في البداية . ( العديد من اللغات التي تحتوي علي C تستلزم تعريف كل المتغيرات قبل اول شفرة منفذه في البرنامج ).

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

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

تم تعديل هذه المشاركة بواسطة البارودي في 6 ديسمبر 2004 في 02:27

#70

• الحزمه او السلسله <<

عامل الادخال << استخدم مرارا في الشفرة الثانية من Cout في برنامج Fahren . هذا شرعي و قانوني تماما .

البرنامج في الاول ارسل العبارة :

"Equivalent in Celsius is:"

الي Cout ثم ارسلت قيمة المتغير Ctemp . وفي النهاية حرف السطر الجديد '\n' .

عامل التلخيص >> كان يمكنه ان يحزم او يجمع ب Cin في نفس الطريقه مع ترك المستخدم ان يدخل قيم مسلسله او متتابعه. ومع ذلك هذه الكفاءه و القدره لم تستخدم كذلك كثيرا .

لانها استبعدت فرصة لحث المستخدم بين المدخلات .

تم تعديل هذه المشاركة بواسطة البارودي في 6 ديسمبر 2004 في 02:35

#71

• التعبيرات

اي اعداد او تنسيق للمتغيرات و الثوابت و المعاملات التي خصصت للحسابات التي تدعي تعبيرات .

هكذا Alpha+12 و (Alpha-37)*beta/2 و هي تعبيرات .

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

بعض الاجزاء من التعبيرات ربما عادتا تكون تعبيرات ايضا .

في المثال التالي : Beta/2 و Alpha-37 بتكون تعبيرات ايضا . حتي و لو كان متغير مفرد و ثابت . مثل Alpha و 37 حسبوا لكي يكونوا تعبيرات .

لاحظ ذلك التعبيرات ليست مثل الشفرات .

الشفرات تخبر الحاسب ليفعل بعض الاشياء و تنتهي بفاصله منقوطه Semicolon . بينما التعبيرات تخصص للعمليات الحسابية . و يمكننا وضع العديد من التعبيرات في جمل الشفرات .

تم تعديل هذه المشاركة بواسطة البارودي في 6 ديسمبر 2004 في 03:00

#72

• الاولويات

لاحظ العبارة في التعبير

(Ftemp-32)*5/9

بدون العبارة ( المقصود بالعبارة هنا هي الاقواس التي وضعت ) فان عملية الضرب ستنفذ اولا لان * له الاولويه عن - .

لو وضعنا العباره فان عملية الطرح ستنفذ اولا ثم عملية الضرب .

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

ماذا عن الاولويات لكل من علامتي * و / ؟

عندما عمليتان حسابيتان يحتوا علي نفس الاولويات .

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

الاولويات و اقواس العبارات قياسيا يطبقوا نفس الاسلوب في علم الجبر و في لغات الحاسب الاخري .

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

#73

• الانواع Floating point

نحن تكلمنا عن النوع Int و النوع Char كل منهما يمثلوا الاعداد من النوع Integer – هذه الاعداد بدون كسور عشرية .

الان هيا بنا نختبر طريقة اخري لتخزين الاعداد – المتغيرات من النوع Floating Point .

المتغيرات من النوع Floating Point تمثل الاعداد التي بها كثر عشري مثل 3.1415927 و 0.0000625 و -10.2 .

انها تحتوي علي كل من جزء صحيح Integer علي شمال نقطة الكسر العشري و جزء من صحيح علي يمين نقطة الكسر .المتغيرات من النوع Floating point تمثل ما يسميه علم الحساب الاعداد الحقيقية و التي تستخدم لحساب الكميات كذلك مثل المسافات و المساحات و درجة الحرارة.

انها نمازج تحتوي علي كسور عشرية .

ها هي ثلاثة انواع من المتغيرات Floating point في ال C++ :

النوع Float و النوع Double و النوع Long double

هيا بنا نبدأ باصغرهم . النوع Float .

#74

• النوع Float

النوع Float يخزن ارقام في حدود من 3.4*10^-38 الي 3.4*10^38 وبالضبط سبع ارقام احادية .

انها تشغل 4Bytes (32Bits ) في الذاكرة كما هو موضح في الشكل رقم (6) .

post-14-1102345875_thumb.jpg

تم تعديل هذه المشاركة بواسطة البارودي في 6 ديسمبر 2004 في 18:11

#75

مثال البرنامج التالي :

يحث المستخدم لوضع رقم من النوع Floating point و الذي ينوب عن نصف قطر الدائرة . حيث انه سيحسب و يعرض مساحة الدائرة .

البرنامج : اسم الملف المصدر Circarea.cpp

#include<iostream.h>

int main()
{
	float rad;
	const float pi=3.14159f;
	cout<<"Enter radius of circle:";
	cin>>rad;
	float area=pi*rad*rad;
	cout<<"area is "<<area<<endl;
	return 0;
}

post-14-1102346117_thumb.jpg

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

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