Professional Documents
Culture Documents
المحاضرة الرابعة
Structures التراكيب
مقدمة إلى تراكيب البيانات
int, float, ما زلنا حىت ىذه ادلرحلة من الربجمة بلغة C++نستخدم أنواع البيانات األساسية ادلعرفة يف لغة C++مثل:
char, double, long intاخل ،ويف بعض التطبيقات حنتاج إىل استخدام أنواع بيانات أخرى لتمثيل بعض البيانات،
ويف لغة C++ميكن للمربمج استحداث أنواع بيانات جديدة خاصة بو اعتماداً على أنواع البيانات األساسية يف لغة
C++وىذه األنواع تسمى "أنواع بيانات معرفة من قبل ادلستخدم ) "(User defined data typesومن أىم ىذه
األنواع اليت ميكن للمستخدم تعريفها ومن مث استخدامها يف الربامج ىي الًتاكيب.
Structure Define تعريف التركيب:
ىو عبارة عن جمموعة من العناصر اليت تربطها مع بعضها البعض عالقات وثيقة وىذه العناصر من ادلمكن أن
تكون من أنواع خمتلفة من البيانات (… )int,float,char,وختزن ىذه ادلعطيات يف الذاكرة بشكل متتايل حتت اسم
واحد ،ويستخدم لتمثيل بيانات شيء ما ،مثل سجل بيانات طالب ،سجل بيانات سيارة وىكذا.
فمثالً التركيب التالي يوضح سجل طالب:
struct struct_name
{
data type ;field1_name
data type ;field2_name
.
.
.
data type ;fieldn_name
;}
struct student
{
;int no
;]char name [20
;]char address[20
;}
مثال :3لإلعالن عن تركيب موظف حيوي احلقول (الرقم ،االسم ،الراتب) نكتب التايل:
struct emp
{
;int emp_no
;]char emp_name[20
;float emp_salary
;}
التعامل مع التراكيب:
بعد تعريف الًتكيب وقبل استخدامو جيب اإلعالن او التصريح عن متغري أو متغريات من الًتكيب الستخدامها يف
الوصول إىل حقول الًتكيب .حيث أنو ال ميكن الوصول اىل حقول الًتكيب بشكل مباشر اال عن طريق متغري من نوع
الًتكيب.
فمثالً ميكن التصريح عن ادلتغريين std1, std2على أهنما متغريان من نوع الًتكيب studentكما يلي:
وذلك باستعمال الكلمة احملجوزة structمث ) (structureباالسم person يف ادلقطع الربجمي أعاله مت تعريف تركيب
مت تعريف حقولو داخل القوسني { } ،ىذا الًتكيب حيتوى على حقل من نوع صحيح intباالسم noوحقل حريف
باالسم nameوىكذا .ومت ختزين قيم يف بعض حقول الًتكيب عن طريق متغري الًتكيب per1مع أداة النقطة مثل
;"per1.name="ali";per1.tel="123456
تدخل كل حقول الًتكيب يف كل العمليات الرياضية وادلنطقية وكذالك عمليات اإلدخال واإلخراج.
مثال:
اكتب برنامج إلدخال بيانات الطالب (تركيب الطالب) وىي الرقم اجلامعي واالسم والعنوان والقسم وادلستوى وادلعدل
الفصلي وادلعدل الًتاكمي مث طباعتها باستخدام الًتكيب.
>#include<iostream.h
)( int main
{
//Creating the Structure
struct student
{
;int no
;]char name[30
;]char address[20
;]char department[15
;int level
;float gpa
;float cgpa
;}
;student st
//end of Creating
) بدالً >- للوصول إىل حقول الًتكيب باستخدام مؤشر الًتكيب نستخدم أداة السهم (
من (.).
. يوضح حالة إذا كان متغري الًتكيب موجود حيث يستخدم مؤشر الًتكيب لإلشارة إىل متغري الًتكيب:2مثال
#include<iostream.h>
int main ()
{
struct time
{
int seconds,minutes,hour;
};
time t1, *t2;
t2= & t1;
t2->seconds =22;
t2->minutes =45;
t2->hour =2;
//printing the structure by using structure variable
cout<<"time:"<<t1.hour<<":"<<t1.minutes
<<":"<<t1.seconds<<"\n";
//printing the structure by using structure pointer
cout<<"time:"<<t2->hour<<":"<<t2->minutes
<<":"<<t2->seconds<<"\n";
return 0;
}
,االسم ,ادلعدل ( مث طباعتو. .1اكتب برنامج إلدخال سجل لطالب مشتمالُ على احلقول التالية (الرقم
.2اكتب برنامج إلدخال سجل دلوظف مشتمالُ على احلقول التالية( االسم ،الراتب ) مث طباعتو مع الصايف بعد
استقطاع . 15%
.3اكتب برنامج إلدخال سجل لصنف مشتمالُ على احلقول التالية(االسم,السعر,العدد) مث طباعتها مع القيمة
اإلمجالية.
.4اكتب برنامج إلدخال سجالت دلادة مشتمالُ على احلقول التالية (االسم ,درجة النظري ,درجة العملي) مث