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

اريد شرح Structures & Enumerations

بدأه memo_elmasry في 30 أبريل 2012 · 1 رد · 1,114 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

من المقرر علينا في مادة " البرمجة الهيكلية" الدرس ده ومش فاهم فيه حاجة خالص ياريت لو حد يتكرم ويقدم ليا شرح بسيط لهذا الجزء وهو "Structures

& Enumerations"

فمثال هذا الكود

#include <iostream>
using namespace std;
struct part //declare a structure
{ int modelnumber; //ID number of widget
int partnumber; //ID number of widget part
float cost; //cost of part
};
////////////////////////////////////////////////////////////////
void main()
{
part part1; //define a structure variable
part1.modelnumber = 6244; //give values to structure members
part1.partnumber = 373;
part1.cost = 217.55F; //display structure members
cout << “Model ” << part1.modelnumber;
cout << “, part ” << part1.partnumber;
cout << “, costs $” << part1.cost << endl;
}
#2

لو أنك تريد كتابة مكتبة لواجهة رسومية وتودّ أن تكتب دالة مثلاً لعرض نافذة. النافذة لها خواص معينة مثل "عنوان النافذة" و "عرضها" و "إرتفاعها". يُمكنك إستغلال البُنية struc في لتحديد تلك الخواص هكذا :

#include<stdio.h>

typedef struct {
    char* title;
    int   width;
    int   height;
} Window;

int main(void) {

    Window mywindow;

    mywindow.title  = "Hello world!";
    mywindow.width  = 640;
    mywindow.height = 400;

    printf("Your Window: title = %s | width = %d | height = %d\n",
           mywindow.title, mywindow.width, mywindow.height );    

    return(0);
}

وتفيد البنية في تنظيم وترتيب المتغيرات والثوابت المتنوعة والتي تنتمي لنفس المجموعة. تستخدمها أفضل من أن تستخدم المتغيرات :

typedef struct {
    char* title;
    int   width;
    int   height;
} Window;

أفضل من :

char* Window_title;
int Window_width;
int Window_height;

الحساب enum قريبة منها ولكنها تأخذ أرقام صحيحة فقط أو مُحرفات وقيمها ثابتة. يمُكنك إستغلالها في عملية تحديد نوع الزر الذي يظهر على النافذة كمثال, زر OK يقابل 1 وزر yes no يقابل 1 .. إلخ :

#include<stdio.h>

typedef enum {
    MB_OK       =  0,
    MB_YESNO    =  1,
    MB_EXIT     =  2,
} Button;

int main(void) {

    Button button;

    printf("OK button     = %d\n", MB_OK);
    printf("Yes No button = %d\n", MB_YESNO);
    printf("Exit button   = %d\n", MB_EXIT);

    return(0);
}

تفيد في ترتيب الثوابت التي تنتمي لنفس المجموعة. تستخدمها أفضل من أن تستخدم الثوابت :

typedef enum {
    MB_OK       =  0,
    MB_YESNO    =  1,
    MB_EXIT     =  2,
} Button;

أفضل من :

const int Button_MB_OK       =  0;
const int Button_MB_YESNO    =  1;
const int Button_MB_EXIT     =  2;

إقرأ كتاب الـC الشامل ستجد شرح عربي لها ﻷن هناك خواص لكل منها لم أذكرها.

2

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