Lec-2-C++ - WordPress.com
Download
Report
Transcript Lec-2-C++ - WordPress.com
المحاضرة الثانية
محتويات المحاضرة
مراحل عمل أي برنامج في لغة C++
أنواع البيانات
اإلعالن عن المتغيرات
الثوابت
إسناد القيم إلى المتغيرات
واجهة برنامج visual studio 2010
2
مراحل عمل أي برنامج في لغة
C++
تمر برامج لغة السي ++بعدة مراحل رئيسية قبل تنفيذها ,ونستطيع القول بأنها تمر بـ 6مراحل رئيسية:
التنفيذ
تحميل
البرنامج
الربط
ترجمة
البرنامج
معالجة
البرنامج
إنشاء
برنامج
المرحلة األولى :إنشاء البرنامج Creating a Program
.
عند االنتهاء من كتابة البرنامج
نقوم بحفط الملف في RAM
كتابة برنامج C++في اي editor
( محرر ) وتعديل الكود
•nameOfFile.cpp
•nameOfFile.cxx
•nameOfFile.cc
•nameOfFile.C
أشهر الصيغ
تحفظ الملفات البرمجية ( source
)codeفي القرص (الهاردسيك)
المرحلة الثانية والثالثة :ترجمة ومعالجة البرنامج Preprocessing and Compiling a C++
Program
010010
110111
101110
011111
compiling
Preprocessing
في هذه المرحلة عندما يقوم المبرمج بعميلة compilingللبرنامج وهي العملية التي يقوم فيه المترجم compiler
بتحويل البرنامج من اللغة عالية المستوى High Level Programming Languageإلى لغة اآللة machine code
قبل هذي المرحلة تنفذ مرحلة المعالجة Preprocessingوهي عبارة عن مجموعة من االوامر تجعل الكومبايلر يقوم
بتحويل اجزاء من الكود الى لغة اآللة بناءاً على تلك االوامر وتسمى هذه االوامر بتوجيهات المعالج
المرحلة الرابعة :الربط Linking
بداية يجب ان نعرف ان لكل البيانات dataأوالدوال functionsالموجودة في أي برنامج في C ++لها مرجع
مُعرف في مكان ما.
إما مُعرفة عن طريق المكتبات المستخدمة في البرنامج او عن طريق المكتبات المنشأه من قبل المبرمجين انفسهم.
عندما يقوم المترجم بتحويل الكود من اللغة عالية المستوى الى لغة اآللة يقوم الواصل linkerبربط الدوال
والبيانات بلـغة اآللة machine codeمن أجل انشاء البرنامج النهائي executable image
بمعنى انه إذا تمت عميلة الترجمة Compilingبشكل صحيح باإلضافة إلى عميلة الربط linkingيتم انشاء
البرنامج النهائي executable image
المرحلة الخامسة :التحميل Loading
قبل مرحلة تشغيل اي برنامج يقوم المحمل Loaderبسحب البرنامج النهائي executable imageمن القرص
( )Hard diskوإضافته إلى الذاكرة الرئيسية RAMمن اجل االستعداد لتشغيل البرنامج باإلضافة إلى إضافة جميع
المكتبات المستخدمة في البرنامج.
المرحلة السادسة :التنفيذ Execution
في المرحلة األخيرة يقوم الكمبيوتر بتشغيل البرنامج عن طريق وحدة المعالجة المركزية CPUبتنفيذ أوامر
البرنامج .أمر واحد في كل مره.
صورة
توضيحية
للمراحل
أنواع البيانات األساسية للغة الـ C++
كلمات لغة الـ
C++
أسماء تعريفية
Identifiers
الكلمات
المحجوزة
األسماء التعريفية :Identifiers
هي الكلمات /األسماء التي ينتقيها المبرمج ليسمي بها المتغيرات والثوابت التي يحتاج إلى تعريفها داخل
البرنامج (البد من تعريف اي بيانات قبل استخدامها في .)C++
وتطلق األسماء التعريفية على :
•المتغيرات :هي أسماء تحجز مواقع في الذاكرة لحفظ البيانات داخلها .
•الدوال .
•المؤشرات.
قواعد تسمية األسماء التعريفية في لغة : C++
-١أن يبدأ بحرف أو بخط تحتي "_” مثل int _new :و, int newوال يمكن أن يبدأ االسم برقم مثل :
int 7new
-٢أن ال يحتوى االسم على رموز خاصة مثل int age% :عدا الخط التحتي "_”
-3ال يمكن أن يحتوي على فراغ مثلint a ge :
-3أن ال يكون االسم إحدى الكلمات المحجوزة مثل . char do :
بعض األمثلة الصحيحة على األسماء التعريفية :
X_ray .b
B6 .a
Ok_ .d
Matrix .c
Soft_fine .f
A .e
Door12 .g
هل األسماء التعريفية التالية صحيحة أو خاطئة مع ذكر السبب :
int 7_age
خاطئة ..ألنها بدأت برقم وليس بحرف
char Student
صحيحة
int Number#
خاطئة ..ألنها احتوت على رمز خاص وهو #
int Student name
int StudentId
خاطئة ..ألنها احتوت على فراغ (مسافة)
صحيحة
ومن الجدير بالذكر ،أن لغة C++تفرق بين الحروف األبجدية الصغيرة
والكبيرة
فمثال األسماءSYSTEM , system, System ,sySTem :
ُتعامل كأسماء مختلفة عن بعضها البعض بسبب اختالف معاملة المترجم
للحروف الصغيرة والكبيرة.
اختيار أسماء معبرة ذات داللة ومعنى واضح للمتغيرات يجعل البرنامج أكثر
تعبيرا ُ عن مضمونه أي أنه يصبح أكثر سهولة للفهم.
في لغة C++يجب أن يعلن عن المتغيرات مسبقا (أي قبل تخصيص أي قيمة لها ) واال فلن يتعرف لها
الكومبايلر
الصيغة العامة لإلعالن عن المتغيرات:
مثال:
;int a
;float MyNumber
;double b
ولإلعالن عن ع ّدة متغيرات من نوع واحد فيمكننا االعالن عنها بعبارة واحده ويُفصل بين كل متغير
واآلخر بعالمة فاصلة (: ),
;a,b,c
وهو اختصار للتالي :
;a
;b
;c
int
int
int
int
.1المتغيرات النصية :
•المتغير من النوع char
يتم تخزين األحرف في متغيرات من النوع char
الحرف :هو حرف أو رمز أو رقم موضوع بين عالمتي التنصيص المفردة ( ‘
‘) مثل ’‘C
لتعريف متغير من النوع :char
;char variable_name
مثال-:
;char ba
تنشئ مساحة من الذاكرة لحرف واحد فقط وتسميه .baلتخزين حرف ما في هذا المتغير نكتب
‘ba='z
يمكن استعمال المتغيرات من النوع charلتخزين أرقام كاملة بدالً من أحرف ،فمثالً يمكننا كتابة:
;ba=2
لكن نطاق القيم الرقمية التي يمكن تخزينها في النوع charيتراوح بين –128إلى 127لذا فإن هذه
الطريقة تعمل مع األرقام الصغيرة فقط.
.1المتغيرات النصية :
•المتغير من النوع string
يتم تخزين سلسلة من األحرف في متغيرات من النوع string
الحرف :هو مجموعة من الحروف أو رموز أو أرقام موضوعة بين عالمتي التنصيص ( “
”“NAME
لتعريف متغير من النوع :string
;String variable_name
مثال-:
;string NAME
تنشئ مساحة من الذاكرة وتسميه .NAMEلتخزين قيمة ما في هذا المتغير نكتب
”NAME = “SARA
“) مثل
.2المتغيرات الصحيحة :
•المتغير من النوع int
يوجد هناك انواع عديد لتعريف المتغيرات الصحيحة ,و لكن االكثر استخدام هو المتغير intالذي يحجز
مساحة قدرها byte-4في أنظمة 32-bitو 2-byteفي أنظمة 16-bitو هو يكفي الستخدامه في حلقات
التكرار و بعض العمليات الرياضية البسيطة.
لتعريف متغير صحيح من النوع :int
ولتعريف عدّة متغيرات:
أو نستطيع اختصار ماسبق بتعريف المتغيرات بنفس السطر بهذه الطريقة :
نفصل بين أسماء
المتغيرات بـ (),
•النوع longو short
باالضافة الى النوع Intيوجد هناك longو shortيمثالن االعداد الصحيحة .يعتمد حجم
الذاكرة المحجوزة لنوع intعلى نوع النظام المستخدم ,و ما يميز هذين النوعين هو ان حجمهما
ثابت تحت ظل أي نظام .
لتعريف المتغير من هذه االنواع إليكِ هذا المثال :
-3المتغيرات الحقيقية:
•متغير من النوع double
يتيح لكِ امكانية تعريف متغير حجمه byte -8و القيم التي يحتويها خيالية .في الحقيقة يستخدم هذا النوع
لتعريف متغير يحمل ارقام كسرية و يخزنها بشكل كسري:
أي قيمة يتم تخزينها ُتحول إلى رقم كسري و إن كانت رقم صحيح ,كمثال الرقم 29يخزنه المتغير
doubleبشكل 29.0و هكذا يتعامل مع باقي األرقام.
•المتغير من النوع float
إن كنت تنوين استخدام ارقام كسرية بسيطة فأنصحك باستخدام النوع floatبدل double
المشكلة التي تبرز مع النوع doubleهو عند تعريف عشرات المتغيرات من هذا النوع ,فإنها
تستهلك مساحة بالذاكرة مما يمنح برنامجك البطئ عند التنفيذ.
-4النوع غير المعلّمة unsigned
افتراضيا المتغيرات التي تحدثنا عنها قبل قليل تحمل األرقام الموجبة و السالبة معا ً .إن اردت اجبارها على
حمل االرقام الموجبة فقط فما عليك سوى إدراج الكلمة المحجوزة unsignedفي بداية تعريف المتغير:
بعد إجبارك للمتغيرات على حمل القيم الموجبة ,ال تحاولين وضع أي قيم سالبة مهما حدث:
-5المتغيرات المنطقية :
•المتغير المنطقي bool
المتغير المنطقي boolالذي يحتوي على قمتين اما trueأو falseوهذه القيمتين ما هي اال ارقام
صحيحة فالـ trueتعني واحد 1أما الـ falseتعني , 0يحجز هذا المتغير مساحة قدرها 1-byte
اسم النوع
يستعمل لتخزين
الحجم
أمثلة عن القيم المخزنة
char
أحرف
1 byte
’‘a
short
أرقام صحيحة قصيرة
2 bytes
222
int
أرقام صحيحة عادية الحجم
long
أرقام صحيحة طويلة
float
أرقام حقيقية قصيرة
double
أرقام حقيقية مزدوجة
long double
أرقام حقيقية ضخمة
2 bytes
4 bytes
4 bytes
8 bytes
10 bytes
153,406
123,456,789
3,7
7,533,039,395
9,176,321,236,01202,6
بعد تعريف المتغير يمكن ان نضع له قيمة تناسب نوعه و الفضل يعود الى المُعامل ( = ) الذي يقوم
بوضع القيم من اليمين الى المتغير الموجود على اليسار:
ال يقتصر االمر هنا على وضع قيمة بعد التعريف .بل ويمكن وضع قيم اثناء التعريف ,و تسمى
القيمة االبتدائية :initial value
و لتعريف اكثر من متغير و وضع قيم لها:
الثوابت
الثوابت هي مواقع لحفظ البيانات كالمتغيرات لكن المتغير يمكن تبديل قيمته على عكس الثابت الذي
يثبت على قيمته األساسية ,وبالتالي فيمكن القول بأنها عبارة عن متغيرات تحمل قيم ثابته طيلة زمن تنفيذ
البرنامج .
يتم االعالن عن الثوابت عن طريق استخدام الكلمة المحجوزة const
الصيغة العامة لإلعالن عن الثوابت تأخذ شكلين وهما :
مثال :
;1. float const pi=3.14
;2. int const max= 5000
أو
;1. const float pi=3.14
;2. const int max= 5000
الكلمات المحجوزة
في أي لغة برمجية توجد كلمات ُتستخدم من قبل اللغة لتعريف دوالها او كائناتها الخاصة ,لغة
C++تحتوي أيضا على هذه الكلمات و ال تستطيع ان تستخدمها لتعريف متغيرات أو دوال أو
كائنات.
إذاً الكلمات المحجوزة هي:
معرفة مسبقا ً لمترجم الـ C++ولها معنى خاص وتؤدي وظيفة معينة و ال يجوز
هي كلمات ّ
إعادة تعريفها أو استعمالها في غير ما ُخصصت له.
بعض الكلمات المحجوزة في لغة الـ :C++
Do
If
For
Main
else
While
Return
Include
Xor
Not
or
And
عرفي المتغيرات التالية :
Xو yو zأرقام صحيحة
nو mأرقام حقيقة
cnحرف
;int x,y,z
;float m,n
;char cn
إلنشاء مشروع جديد:
file –> new -> Project
3
1
2
4
5
تسمية المشروع