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

Header Files

بدأه Souls-hunteR في 27 مارس 2008 · 5 رد · 1,116 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كتير منكن شاف في بداية البرامج كلمة #include, شو هادا طيب يا أخي؟ مع شو بياكلو؟؟ هادا بكل بساطة إستدعاء لمكتبة أو شي اسمو header file. لنفرض عنا البرنامج التالي:

#include <iostream.h>

class Time
{
public:
 Time();
 void setTime(int,int,int);
 void printMilitary();
 void printStandard();
private:
 int hour;
 int minute;
 int second;
};

Time::Time()
{
 hour = minute = second = 0;
}

void Time::setTime(int h,int m,int s)
{
 hour = (h >= 0 && h < 24) ? h : 0;
 minute = (m >= 0 && m < 60) ? m : 0;
 second = (s >= 0 && s < 60) ? s : 0;
}

void Time::printMilitary()
{
 cout<<(hour < 10 ? "0" : " ")<<hour<<":"<<(minute < 10 ? "0" : " ")<<minute
  <<":"<<(second < 10 ? "0" : " ")<<second;
}

void Time::printStandard()
{
 cout<<((hour == 0 || hour == 12) ? 12 : hour % 12)<<":"<<(minute < 10 ? "0" : " ")<<minute
  <<":"<<(second < 10 ? "0" : " ")<<second<<(hour < 12 ? " AM" : " PM");
}

int main()
{
 Time t;

 cout<<"Initial military time: ";
 t.printMilitary();
 cout<<endl<<"Initial standard time: ";
 t.printStandard();

 t.setTime(13,27,6);
 cout<<endl<<endl<<"Military time after setTime: ";
 t.printMilitary();
 cout<<endl<<"Standard time after setTime: ";
 t.printStandard();

 t.setTime(99,99,99);
 cout<<endl<<endl<<"Military time after invalid setTime: ";
 t.printMilitary();
 cout<<endl<<"Standard time after invalid setTime: ";
 t.printStandard();

 cout<<endl;

 return 0;
}

هادا البرنامج متل مالنا شايفين بطبع الوقت يلي نحنا منعطي, ما بدنا هلأ شو عمل البرنامج. الأهم من هذا, إذا كان عنا مو class واحد, بل شي مئة class. إذا بدك تعدل شي فيه, ما أحلاك و الله و إنت عم تدور قطعة كود صغيرة ل class من بين مئة واحد و من بين ألف سطر كود. بس متل ما حكيت, في شي اسمو Header File, هدا الشي بدو يحتوي على class أو function أو كود لغرض معين. خلينا نعمل فايل اسمو time1.h و هو بدو يحتوي على تعريف ال class:

class Time
{
public:
 Time();
 void setTime(int,int,int);

 void printMilitary();
 void printStandard();

private:
 int hour;
 int minute;
 int second;
};

منعمل فايل تاني منسمي time1.cpp, و هو بدو يحتوي عمل ال functions تبع ال class:

#include <iostream.h>

Time::Time()
{
 hour = minute = second = 0;
}

void Time::setTime(int h,int m,int s)
{
 hour = (h > 0 && h <=24 ) ? h : 0;
 minute = (m > 0 && m <= 60) ? m : 0;
 second = (s > 0 && s <= 60) ? s : 0;
}


void Time::printMilitary()
{
 cout<<(hour < 10 ? "0" : " ")<<hour<<":"<<(minute < 10 ? "0" : " ")<<minute
  <<":"<<(second < 10 ? "0" : " ")<<second;
}

void Time::printStandard()
{
 cout<<((hour == 0 || hour == 12) ? 12 : hour % 12)<<":"<<(minute < 10 ? "0" : " ")<<minute
  <<":"<<(second < 10 ? "0" : " ")<<second<<(hour < 12 ? " AM" : " PM");
}

منعمل هلأ Compile, بس شو منلاقي:

اقتباس
Time' : is not a class or namespace name

error C2065: 'hour' : undeclared identifier

error C2065: 'minute' : undeclared identifier

error C2065: 'second' : undeclared identifier

error C2653: 'Time' : is not a class or namespace name

error C2653: 'Time' : is not a class or namespace name

error C2653: 'Time' : is not a class or namespace name

طبعا ما رح يتعرف على ال Methods تبع ال class لأنو ما ستعيناه,منشان نستعي بس منضيف بعد #includ<iostream> السطر التالي:

#include "time1.h"

منعمل Compile كمان في خطأ, طبعا, مافي عنا ال main file يلي هو ال function الرئيسي للبرنامج. منعمل فايل جديد اسمو main.cpp:

#include <iostream.h>
#include "time1.h"

int main()
{
 Time t;

 cout<<"Initial military time: ";
 t.printMilitary();
 cout<<endl<<"Initial standard time: ";
 t.printStandard();

 t.setTime(13,27,6);
 cout<<endl<<endl<<"Military time after setTime: ";
 t.printMilitary();
 cout<<endl<<"Standard time after setTime: ";
 t.printStandard();

 t.setTime(99,99,99);
 cout<<endl<<endl<<"Military time after invalid setTime: ";
 t.printMilitary();
 cout<<endl<<"Standard time after invalid setTime: ";
 t.printStandard();

 cout<<endl<<endl;

 return 0;
}

منعمل Compile, الله كلو شغال. بهل عملية إذا بدك تعدل شي بال class بس عليك تفتح ال time1.h و تعدل فيه. طبعا وقت تعمل Compile ال Compiler لحالو بربط ما بين time1.h و time1.cpp و main.cpp

إن شاء الله تكونوا استفدتوا

Chao!!!

Great place, and people, but full of sectarianism.

#2

ممتاز أخي الكريم ، جهد تشكر عليه ..

أحب أن أضيف ، أن الرمز # يسمى Preprocessor Directive "موجهات المعالج التمهيدي" . هذا الـ Directive وظفيته هي عمل تغيير Substitute لشيء معين .

فاذا كان لدينا :

#include <iostream.h>

فمعناه "قم أيها المعالج التمهيدي ، وغير هذا السطر يمحتويات الملف iostream.h" .

والمعالج التمهيدي يعمل قبل المترجم Compiler ، ويقوم بعمل هذا الـ copy&paste ، بعدها يبدأ المترجم بالعمل ... ولن يري هذا السطر ، بل سيرى محتويات الملف iostream كامله .

وهكذا لبقيه موجهات المعالج التمهيدي ، مثل define و macro .

يمكنك النظر هنا للمزيد :

/index.php?showtopic=148597

بالتوفيق .

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#3
اقتباس
كتير منكن شاف في بداية البرامج كلمة #include, شو هادا طيب يا أخي؟ مع شو بياكلو؟؟ هادا بكل بساطة إستدعاء لمكتبة أو شي اسمو header file. لنفرض عنا البرنامج التالي:

#include

لاتقتصر على إستدعاء المكتبات من نوع .hو .hpp بل أيضا تستطيع إستدعاء .c و cpp

نسيت أن أقول أن الدرس رائع

تسلم أخي

تم تعديل هذه المشاركة بواسطة hunterxhunter في 27 مارس 2008 في 20:25

#4

ما أعاب درسك هو عدم كتابته بالعربية الفصحى أما الباقي فما بوسعي إلا قول أكثر الله من أمثالك .

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#5

المشكلة إلي 5 سنوات بدرس بالإنكليزي + أنا نص شامي, و انت بتعرف أهل الشام شو مكولكين :D

Chao!!!

Great place, and people, but full of sectarianism.

#6

مشكور اخي على التوضيح والله انك بتفيدنا

منتظرين جديدك

والا انتظر منا اسئلتنا

مع التحيه

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