سي بلس بلس
• العبارات المخصصه
الشفرات ( العبارات )
Var1=20;
Var2=Var1+20;
خصصت قيم الي متغيرين . علامة التساوي ( = ) مثلما تخمن تجعل القيم التي في اليمين تكون مخصصة للمتغيرات التي في اليسار .
ال = في ال C++ تعتبر مثل ال ( := ) في ال Pascal او ال = في ال Basic .
في السطر الاول نشاهد ذلك . Var1 التي من قبل لم يكن لها قيمة احضرت القيمة 20 .
• الثوابت من النوع Integer
الرقم 20 هو ثابت من النوع Integer .
الثوابت لا تتغير اثناء مسلك او تشغيل البرنامج .
الثوابت من النوع Integer تشتمل علي التسعة اعداد الاولية العدديه .
انها يجب ان لا تكون كسور عشرية او لا تحتوي علي نقطة عشرية في الثوابت من النوع Integer .
و يجب ان تكون اكذوبه ضمن صفوف ال Integer في الصف الثاني من البرنامج نشاهد ذلك .
علامة الجمع ( + ) تضيف قيمة ال Var1 و 20 في حين ان 20 تمثل ثابت اخر . الناتج من عملية الاضافة هذه يخصص كقيمة لل Var2
• اختلاف المخرجات
الشفرة
Cout<<"Var1 + 20 is ";
تعرض عبارة ثابتة كما راينا سابقا .
الشفرة التالية
Cout<<Var2<<endl;
تعرض قيمة المتغير Var2 . كما تستطيع ان تري في نافذة المخرجات .
مخرجات البرنامج هي
Var1 + 20 is 40
لاحظ ان Cout و العامل << يعرفون كيف يعالجون الاختلاف بين ال Integer و ال String .
لو ارسلناهم حروف سوف يطبعوا كعبارة او جملة .
لو ارسلناهم كأعداد صحيحة ( Integer ) سيطبعوا كارقام انها ربما تبدوا واضحة و صريحة .
لكن يبدوا انة مثال اخر لعامل التشحين و الكلمات المحجوزة المستقبلية لل C++ . ( مبرمجي ال C سيتذكرون ان ذلك مثل الدالة Printf( ) تحتاج لتخبر ليس فقط لعرض المتغير لكن نوع المتغير يكون جيد الذي يصنع تركيبه اقل بعدا عن المنطق ) .
وكما تري المخرجات للعبارة الثانية ل Cout تظهر في نفس السطر في المخرجات علي الشاشة .
لايوجد منشئ سطور ادرج بصورة تلقائية . لو اردت ان تبدأ في سطر جديد . يجب عليك ان تدرج منشئ سطور بنفسك . سنري كيف نفعل ذلك باستخدام الهروب المتتابع ' \n ' .
الان سنري طريقة اخري باستخدام بعض الاشياء و التي تسمي المعالجات او المشغلات .
• المشغل EndL
اخر عبارة Cout في برنامج IntVars تنتهي بكلمة غير متداولة : Endl .
انها تؤدي الي الانتقال الي سطر جديد لكي يدرج في مجري البرنامج لذلك الحروف المتتالية ستعرض في سطر جديد .
انه نفس التاثير كما لو ارسلنا او كتبنا الحروف " \n " لكن بنوع ما اوضح . انه مثال علي المشغلات .المشغلات هي اوامرالي مجري المخرجات حيث تعدل و تغير المخرجات لتسير في طرق متعددة .
نحن سنري الكثير منها بعد ذلك . واذا تحدثنا بدقة Endl ( ليست مثل '\n' ) ايضا تؤدي الي ان المخرجات تتوازن لكي تكون كاسحة . لكن ذلك يحدث بطريقة غير منظورة لذي من اجل معظم هذه الاغراض السطر الثاني سيكون مماثل له .
• الانواع الاخري من المتغير 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
• المتغير من النوع 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
• ثوابت الحروف
ثوابت الحروف تستخدم علامة تنصيص واحدة حول الحرف مثل 'a' و 'b'
( لاحظ ان هذا مختلف عن الجمل الثابتة و التي تستخدم علامتين تنصيص " " ) .
عندما معالج ال C++ يقابل مثل ثوابت الحروف فانها تترجم بشفرة ASCII المناظرة لها .
الثابت 'a' تظهر في البرنامج كمثال ستترجم في ال 97 كما هو مبين في الشكل رقم ( 4)
المتغيرات من النوع Character يمكن ان تحتوي علي ثوابت حروف كقيمة .
تم تعديل هذه المشاركة بواسطة البارودي في 4 ديسمبر 2004 في 01:16
و البرنامج التالي يظهر بعض الامثلة علي ثوابت الحروف و المتغيرات و اسم البرنامج 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;
}تم تعديل هذه المشاركة بواسطة البارودي في 4 ديسمبر 2004 في 01:21
و ها هو ملف البرنامج
• الاختصارات
المتغيرات يمكن ان تختصر في نفس الوقت التي تعرف فيه .
في هذا البرنامج متغيرين من النوع Char - Charvar1 و Charvar2 – اختصروا الي ثوابت الحروف 'A' و '\t' .
• الهروب المتتابع
هذا شكل ثاني من اشكال الثوابت التي من النوع Character . '\t' وهو احد الشواذ مثل '\n' التي رايناها من قبل . انها مثال للهروب المتتابع .
الاسم يعكس الحقيقة ان Backslash تسبب " هروب " من الاسلوب البسيط للحروف المترجمه .
في هذه القضية t لم تترجم كالحروف 't' لكن ترجمت كحروف الtab .
ال tab تسبب الطباعة للتكملة في الوقوف التالي لل tab في نافذة عرض البرنامج . ال tab تؤدي الي الوقوف بعد 8 مسافات .
ثوابت الحروف الاخري '\n' ترسل بصورة تلقائية للCout في السطر التالي من البرنامج .
الهروب المتتابع يمكن ان يستخدم كحروف الفصل في الجمل الثابته .
الجدول رقم (1) يظهر قائمة بحروف الهروب المتتابع العام .
تم تعديل هذه المشاركة بواسطة البارودي في 5 ديسمبر 2004 في 01:24
بعد ال 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
• المدخلات بواسطة 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;
}تم تعديل هذه المشاركة بواسطة البارودي في 6 ديسمبر 2004 في 02:13
وها هو ملف البرنامج :
الشفرة : Cin>>Ftemp;
تؤدي الي ان البرنامج ينتظر المستخدم حتي يدخل رقم .
الرقم النتج يضع في المتغير Ftemp .
الكلمة المحجوزة Cin ( تنطق "C in" ) هي عبارة عن كائن معرف من قبل في ال C++ لكي تناسب قاعدة مجري المدخلات . هذا المجري ينوب عن تدفق البيانات من الكلمة المحجوزة ( علي الاقل تكون مباشرة )
ال >> هو عامل ادخال او الاحضار من المعامل . انها تاخذ القيمة من مجري الكائن اللي علي الشمال وتضعها في المتغير اللي علي اليمين .
هذه بعض امثلة التفاعل بالبرنامج :
Enter temperature in Fahrenheit : 212
Equivalent in Celsius is : 100
الشكل (5) يعرض الادخال باستخدام Cin وعامل الادخال >> :
تم تعديل هذه المشاركة بواسطة البارودي في 6 ديسمبر 2004 في 02:21
• تعريف المتغيرات في نقطة مستخدمه
برنامج ال Fahren يحتوي علي العديد من التجاعيد بجانب كفاءة مدخلاته . انظر بدقة في القائمة . اين تعريف المتغير Ctemp ؟ لاحظ في اول البرنامج . لكن السطر التالي الي اخر سطر استخدموا لتخزين نتيجة العمليات الحسابية . كما لاحظنا سابقا . يمكنك تعريف المتغيرات في كل مكان في البرنامج . فقط لاحظ في البداية . ( العديد من اللغات التي تحتوي علي C تستلزم تعريف كل المتغيرات قبل اول شفرة منفذه في البرنامج ).
تعريف المتغيرات التي نستخدمها يمكن ان تجعل القائمة اسهل للفهم . لانك لا تحتاج الي ان تشير مرارا او تكرارا الي بداية القائمة للبحث عن تعريف المتغيرات .
ومع ذلك الممارسة يجب ان تستخدم بعقلانية او حرية التصرف . المتغيرات تستخدم في اماكن عديده في الداله بتعريف جيد في اول الداله .
تم تعديل هذه المشاركة بواسطة البارودي في 6 ديسمبر 2004 في 02:27
• الحزمه او السلسله <<
عامل الادخال << استخدم مرارا في الشفرة الثانية من Cout في برنامج Fahren . هذا شرعي و قانوني تماما .
البرنامج في الاول ارسل العبارة :
"Equivalent in Celsius is:"
الي Cout ثم ارسلت قيمة المتغير Ctemp . وفي النهاية حرف السطر الجديد '\n' .
عامل التلخيص >> كان يمكنه ان يحزم او يجمع ب Cin في نفس الطريقه مع ترك المستخدم ان يدخل قيم مسلسله او متتابعه. ومع ذلك هذه الكفاءه و القدره لم تستخدم كذلك كثيرا .
لانها استبعدت فرصة لحث المستخدم بين المدخلات .
تم تعديل هذه المشاركة بواسطة البارودي في 6 ديسمبر 2004 في 02:35
• التعبيرات
اي اعداد او تنسيق للمتغيرات و الثوابت و المعاملات التي خصصت للحسابات التي تدعي تعبيرات .
هكذا Alpha+12 و (Alpha-37)*beta/2 و هي تعبيرات .
عندما الحسابات تخصص في التعبيرات التي انجزت النتيجة عادتا تكون قيمة. علي هذا النمط لو ال Alpha ب7 فان اول تعبير ظاهر سياخذ القيمة 19 .
بعض الاجزاء من التعبيرات ربما عادتا تكون تعبيرات ايضا .
في المثال التالي : Beta/2 و Alpha-37 بتكون تعبيرات ايضا . حتي و لو كان متغير مفرد و ثابت . مثل Alpha و 37 حسبوا لكي يكونوا تعبيرات .
لاحظ ذلك التعبيرات ليست مثل الشفرات .
الشفرات تخبر الحاسب ليفعل بعض الاشياء و تنتهي بفاصله منقوطه Semicolon . بينما التعبيرات تخصص للعمليات الحسابية . و يمكننا وضع العديد من التعبيرات في جمل الشفرات .
تم تعديل هذه المشاركة بواسطة البارودي في 6 ديسمبر 2004 في 03:00
• الاولويات
لاحظ العبارة في التعبير
(Ftemp-32)*5/9
بدون العبارة ( المقصود بالعبارة هنا هي الاقواس التي وضعت ) فان عملية الضرب ستنفذ اولا لان * له الاولويه عن - .
لو وضعنا العباره فان عملية الطرح ستنفذ اولا ثم عملية الضرب .
لان كل العمليات التي بداخل قوسين العبارة ستنفذ اولا .
ماذا عن الاولويات لكل من علامتي * و / ؟
عندما عمليتان حسابيتان يحتوا علي نفس الاولويات .
فان احدهما التي في الشمال ستنفذ اولا . لذي فان في هذه الحاله عملية الضرب هي التي ستنفذ بعد العملية الاولي ثم عملية القسمة .
الاولويات و اقواس العبارات قياسيا يطبقوا نفس الاسلوب في علم الجبر و في لغات الحاسب الاخري .
لذي هم من المحتمل يستخدموا بصورة طبيعيه تماما . و مع ذلك الاولويات تكون نقطة مهمه في ال C++ . سنعود اليها مرة اخري عندما نقدم انواع مختلفة من العمليات .
• الانواع 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 .
• النوع Float
النوع Float يخزن ارقام في حدود من 3.4*10^-38 الي 3.4*10^38 وبالضبط سبع ارقام احادية .
انها تشغل 4Bytes (32Bits ) في الذاكرة كما هو موضح في الشكل رقم (6) .
تم تعديل هذه المشاركة بواسطة البارودي في 6 ديسمبر 2004 في 18:11
مثال البرنامج التالي :
يحث المستخدم لوضع رقم من النوع 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;
}هذا الموضوع مغلق.
