التعامل مع السجلات structure في لغة C++ - ProgrammerTech
Language:

Search

التعامل مع السجلات structure في لغة C++

  • Share this:
التعامل مع السجلات structure في لغة C++

السجلات structure لغة C++

السجلات ( structure ) هي مجموعة من البيانات المختلفة في النوع (أي يكون بعضها من نوع int و بعضها char و بعضها float ....الخ) مع بعضها البعض بحيث يمكن التعامل معها كوحدة واحدة.

كلمة struct تستخدم من أجل تعريف نوع جديد, و النوع الجديد هذا يُمكنه أن يحتوي على مجموعة من القيم بشكل مرتب و سهل التعامل معها.

مثلاً لكتابة برنامج لتسجيل بيانات موظفين في الشركة نحتاج لتخزين:

  1. اسم الموظف و هو من نوع مصفوفة حرفية char name[40].
  2. عنوانه وهو من نوع مصفوفة حرفية char address[40].
  3. عمره متحول من نوع عدد صحيح int age.
  4. راتبه متحول من نوع عدد حقيقي float salary.

كما نلاحظ فإن جميع هذه البيانات يجب التعامل معها كوحدة واحدة لأنها لموظف واحد, لذلك فإننا بحاجة إلى سجل خاص لهذا الموظف.

 

التصريح عن سجل في C++

للتصريح عن سجل نستخدم الكلمة المحجوزة struct و هي إختصار لكلمة structure و معناها تركيب.

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

ثم يتم التصريح عن متحول خاص لهذا السجل ضمن القائمة الرئيسية للبرنامج.

يتم التصريح عن السجل بأحد الطرق الآتية

#include <iostream.h>
struct employee   /اسم السجل
{
--------;
--------;
--------;
--------;
};   /يجب وضع الفاصلة المنقوطة سيمي كولن
void main()
{
struct employee emp;  /نصرح عن متحول خاص بالسجل

كما نلاحظ فإننا كتبنا السجل و بداخله جميع المتحولات الموجودة و ثم بدأنا بكتابة البرنامج بالعبارة المعتادة void main() و ثم صرحنا عن متغير خاص بهذا السجل.

طبعاً نختار اسم المتحول كيفياً و ثم نتابع كتابة البرنامج.

 

إنشاء كائن من struct في C++

struct Book {
    string title;
    string author;
    double price;
    int numberOfPages;
};
struct Book book; 

 

كيفية كتابة المتحولات داخل السجل

#include <iostream.h>
struct employee
{
char name[40];
char address[40];
int age;
float salary;
};
//نصرح عن متحول خاص بهذا السجل كالتالي
void main()
{
struct employee emp;

أنشأنا مصفوفة نوع char و بها 40 موظف, و بعده أنشأنا مصفوفة ثانية لكتابة عنوان الموظف, و مصفوفة ثالثة int لكتابة  عمر هذا الموظف, و في النهاية أنشأنا مصفوفة float لكتابة راتب هذا الموظف.

ثم صرحنا عن متحول خاص بهذا السجل بواسطة struct employee emp;.

 

كيفية ادخال و إخراج المعلومات داخل السجل

عندما نريد مثلاً إدخال عمر الموظف فإننا نكتب cin>> emp . age; و عندما نريد ادخال اسم الموظف. نكتب cin>>emp . name; و لا نكتب الأقواس عندما نريد إدخال الإسم كاملاً كما تعلمنا في المصفوفات.

أما عندما نريد إخراج أي قيمة فإننا نستبدل cin بـ cout كما هو معروف.

كما يمكننا ان نعلم عن التصريح بطريقة أخرى كما يلي

void main()
{
struct employee
{
-------;
-------;
-------;
-------;
}; /ونكمل البرنامج

مثال 1

اكتب برنامج يقوم بطباعة معلومات طالب و علامته و رقم الأيدي id لهذا الطالب.

#include <iostream.h>
using namespace std;
struct student
{
    int id;
    string name;
    int grade;
};
int main()
{
    student stu;
    stu.id=1;
    stu.name="Ahmed";
    stu.grade=60;
    cout << stu.id << endl;
    cout << stu.name << endl;
    cout << stu.grade << endl;
    return 0;
}

نتيجة الكود

1
Ahmed
60

كما لاحظنا بالمثال السابق سجلنا بيانات الطالب Ahmed و علامته و الأيدي و طبع لنا بياناته, ماذا إذا كان لدينا اكثر من طالب كيف ستكون البيانات؟.

مثال 2

اكتب برنامج يقوم بطلب من المستخدم بإدخال بيانات 4 طلاب يطلب الأيدي و الأسم و العلامة.

#include <iostream.h>
using namespace std;
struct student
{
    int id;
    string name;
    int grade;
};
int main()
{
    student stu[4];
    for(int i=0;i<4;i++)
    {
    cout << "enter info student" << i+1 << endl;
    cin >> stu[i].id;
    cin >> stu[i].name;
    cin >> stu[i].grade;
    }
    for(int i=0;i<4;i++)
    {
    cout << stu[i].id << endl;
    cout << stu[i].name << endl;
    cout << stu[i].grade << endl;
    }
    return 0;
}

كما لاحظنا في المثال عند تشغيل البرنامج طلب مننا ادخال بيانات الطالب الأول ثم ضغطنا انتر و طلب بيانات الثاني و الثالث فالرابع ثم طبعهم لنا.

لمشاهدة الدرس على يوتيوب للإستيعاب اكثر من الرابط الآتي

https://youtu.be/xndZQLTu5u8


Tags:
Muhammad Alush

Muhammad Alush

إسمي محمد تركي العلوش من سورية من ريف حلب الشرقي 1994, محب للتقنية و التعلم الذاتي, و جميع خبراتي تعلمتها ذاتياً, و اللغات البرمجية التي أتقنها هي html, css, javascript, php, c, python بالإضافة إلى حبي الكبير لمجال الشبكات.

موقعي programmer-tech.com