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

** ما هو الفرق بين لغة ال C و لغة ال C++ ?

مغلق
بدأه :: إسـتبرق C++ :: في 13 يوليو 2005 · 16 رد · 17,306 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

إخوتي الأفاضل بغيت أستفسر عن الفرق بين لغة السي ولغة السي بلس بلس ..؟ :rolleyes:

حيث إنني من قبل درست لغة السي ، والآن أدرس لغة السي بلس بلس في البدايه

فأحببت أعرف أهم الفروق بينهم ،، حتى ما أضيع :wacko:

انا الذي أعرفه الآن إن هناك إختلاف بسيط فقط ، في إسم الملف و المدخلات والمخرجات .. !!!

مع شكري ، [ إستبرق C++ ]

بسم الله الرحمن الرحيم

" أولئك لهم جنات عدن تجري من تحتهم الأنهار

يحلون فيها من أساور من ذهب ويلبسون ثيابا خضرا

من سندس و إسـتـبـرق متكئين فيها على الأرائك

نعم الثواب وحسنت مرتفقاً "

صدق ذو الجلال والإكرام

#2

على حسب علمي المتواضع فان الفرق الأساسي بين اللغتين هو أن السي ++ تم اضافة مفهوم ال OOP و كل امكانياته كالوراثة و ال Polymorphism و ال Overrloading ... و طبعا هناك اختلاف بسيط كام ذكرت في المدخلات و المخرجات و المهم انه اذا كنت على دراية بالسي فستجد سهولة في الانتقال الى السي ++ لأن هذه الأخيرة تضم السي بالاضافة الى امكانيات السي++ و كما تعلم ف ++ تعني اضافة رقم 1 الى متغير ما و هذا نفس الشي الذي يعنيه ++ اما C يعني C زائد امكانيات أخر و التي أهمها كما قلت لك ال OOP ... و قد تكون هناك اختلافات لم أذكرها لضيق الوقت

و السلام عليكم

#3

تمام زى ما قال الاخ كريزى مان

وأيضا سهولة فى ادخال المخرجات وطباعتها

يعنى علشان تعمل عملية أدخال كنت تكتب fscanf وأيضا لازم تعرف الكمبيلر اية نوع المتغير اللى داخل هل هوة int or char...etc عن طريق علامة ال%

وكذلك فى العملية الطباعة عن طريقfprintf

وحاجات غريبة

وأيضا لايوجد بها opp أى البرمجة الموجهة

Muhammad Allam

Computer Science

@Resource(MappedURL="My Blog" )

#4

بسمه تعــالى

السلام عليكم ورحمة الله و بركاته

أسعدني تواجدكم الذي أجاب عن أستفساري ، :rolleyes:

فجزاكم الله أفضل الثـواب ...

شكراً أخي الفاضل كريزي مان على هذه المعلومات التي أفدتني بها ، وخصوصاً معنى الـC++ ، بس في شغلات ما فهمتها ، وهي ماذا يقصـد بالـOOP ..، هي إختصار لأي كلمات ؟؟ ، وكذلك ياريت تترجم لي ايضاً معاني الكلمات الإنجليزيه التي أوردتها :blink: ، مبتدأ في السي إس بلس بلس وكل شي يشدني لتعلمه ، حتى نصل إلى بر الأمان بمساعدتكم :rolleyes:

وشكراً لك أخي الفاضل eng_3llam ،، على التوضيح أكثر فأكثر ، فبالفعل هذا هو الجميل في لغة السي بلس بلس ،

ألا توجد إختلافات أخرى ..؟؟

أي في طريقة كتابة البرامج ..؟؟

مع كل شكري وتقديري

:: أسـتبرق C++ ::

بسم الله الرحمن الرحيم

" أولئك لهم جنات عدن تجري من تحتهم الأنهار

يحلون فيها من أساور من ذهب ويلبسون ثيابا خضرا

من سندس و إسـتـبـرق متكئين فيها على الأرائك

نعم الثواب وحسنت مرتفقاً "

صدق ذو الجلال والإكرام

#5

ســؤال آخر ، :unsure:

    // Initializing an array.
3      #include <iostream>
4      
5      using std::cout;
6      using std::endl;
7      
8      #include <iomanip>
9      
10    using std::setw;
11    
12    int main()
13    {
14       int n[ 10 ];  // n is an array of 10 integers
15    
16       // initialize elements of array n to 0            
17       for ( int i = 0; i < 10; i++ )                    
18          n[ i ] = 0;   // set element at location i to 0
19    
20       cout << "Element" << setw( 13 ) << "Value" << endl;
21    
22       // output contents of array n in tabular format           
23       for ( int j = 0; j < 10; j++ )                            
24          cout << setw( 7 ) << j << setw( 13 ) << n[ j ] << endl;
25    

return 0;  // indicates successful termination
27    
28    } // end main

هذا هو الجديد ايضاً في لغة السي بلس بلس الموضوع باللون الأحمر ولم أستوعبه أبـــداً ... :blink:

أي لماذا أستخدمنا مثل هذه التعريفات ...؟؟؟ وما هي فائدتها ..؟؟ وهل بالضروري إستخدامها ..؟؟

وما معنى setw ..??

جزيتم خيراً ..

بسم الله الرحمن الرحيم

" أولئك لهم جنات عدن تجري من تحتهم الأنهار

يحلون فيها من أساور من ذهب ويلبسون ثيابا خضرا

من سندس و إسـتـبـرق متكئين فيها على الأرائك

نعم الثواب وحسنت مرتفقاً "

صدق ذو الجلال والإكرام

#6

السلام عليكم ..

اعتقد المقصود ان المكتبه iomanip هي الجديده في ++

كذلك بالنسبه لـ Cout و Cin هي الجديده كذلك في ++ و في سي كانت printf للطباعه على ما اتذكر .

و اهم اختلاف بين السي و السي++ انه تم اضافة مفهوم OOP اي السي++ عباره عن تطوير للـ سي :)

#7

بص يا سيدى بديهى علشان تستخدم ى حاجة لازم الcompiler يعرف مكان تعريقها فين

طب انت مستخدم دالة setw() يبقى لازم الcompiler يعرف الdefination بتاع تلك الدالة وهو موجود

فى header file ب

iompanip.h

ثانيا بتكتب الstd:: علشان اتغلب على ان الشاشة السودة تطلع ومتختفيش بسرعة

أما الsetw()

فهى عبارة عن دالة تستخدم بحيث تجعل الرقم او الكلمة اللى بعدها تطبع خلال n character

حيث الn هى الرقم الداخل الى الدالة

لاحظ ذلك الكود وانت تفهم اكتر

#include <iostream>

#include <conio.h>
 #include<iomanip.h>
main(void)
{
 cout<<setw(7)<<"welcome"<<setw(12)<<"hello\n";

   getch();
{

احنا قولنا انها بتخلى الرقم او الكلمة تطبع فى حيذ معين وهو n

يعنى كلمة welcome لو كان عدد حروفها يقل عن 7 يبقى الباقى يعبر عنة بمسافات

أما عنها كلمة welcome حروفها حوالى 7 وبالتالى لاتجد اى تاثير

اما عن hello فعددها 5 ومن المفترض ان تكثل فى 12bit وبالتالى يكون الباقى مسافات كما فى الكود السابق

أدخل على تلك اللينكة وستجد موضوع لماذا تضع ذلك السطر

using std::

تم عرضة ومناقشتة

Muhammad Allam

Computer Science

@Resource(MappedURL="My Blog" )

#8

أة نسيت اللينكة

أدى اللينكة يا سيدى D:

/index.php?showtopic=69973

Muhammad Allam

Computer Science

@Resource(MappedURL="My Blog" )

#9

الفرق بين ال C و ال C++ كما ذكرتم هو ال oop او ال object oriented programming

و للتوضيح اكثر

ان لغة ال c تعتبر هي ام لغات البرمجه و تعتبر اقوي لغة برمجه و اسهلها و لكن كان قبل وجود لغة ال C++ كان علي المبرمج ان يكتب الكود ويتم تنفيذه سطر سطر من قبل المعالج يعني ما كان ينفع ان ننتقل مثلا من السطر رقم 122 في البرنامج الي السطر رقم 4 لكي يتم تنفيذ كود معين و كانت العمليه صعبة للغايه علي المبرمجين وخصوصا ان مفهوم الدوال و التركيبات و الوراثة ما كانتش موجوده

و لكن مع ظهور لغة ال c++ اصبح منظور البرمجه بهذه اللغه ياخذ طابع اكثر سهوله و اكثر مرونه فيمكن للمبرمج مثلا ان ينشئ داله مكتوب فيها مجموعه من السطور من الاكواد ويقوم باستدعاء هذه الداله في اي جزء من البرنامج كما هو يريد

و بهذا فان ال oop غيرت مسار البرمجه

فاصبحت البرامج المكتوبه بال c++ تتميز بالسرعه في التنفيذ وقلة حجم البرامج و المرونه في كتابة الاكواد

فاصبح المبرمج وكانه فنان يمسك بفرشاه يحركها كما يشاء ليبدع في تصميمه

#10

السلام عليكم ورحمة الله وبركاته

أستفــدت كثير من شرحكم يا أخوان ..

و أتضحت لي بعض الأمور الغامضه :lol:

فجزاكم الله خير ، ووفقكم لما تحبون وترضون ..

الآن فهمت أكثر يا أستاذ ، إنج علام ..

وفهمت فائدة الـsetw الغامضه سابقاً وشكراً على الوصله المفيده والقيمه ..

وكذلك الأخ الفاضل البارودي ،،

رائع ما تفضلت به من توضيح ، :rolleyes:

أسأله اخرى واتمنى تكون خفيفه ..

و هو ما يتعلق بوظائف بعض المكتبات بتاع الهيدر فايل ..

< iostream >

تستخدم للدلاله على المدخلات والمخرجات

< math.h >

تستخدم للدلاله على العمليات الحسابيه

< ctdlib.h >

للدلاله على الـ rand

< iomainp >

للدلاله على الـ setw

< ctime >

للدلاله على الـ time

< stdlib.h >

؟؟؟؟

< stdafx.h >

؟؟؟؟

< conio >

؟؟؟؟

< process.h >

؟؟؟؟

مع شكري

:: إســتبرق C++ ::

تم تعديل هذه المشاركة بواسطة :: إسـتبرق C++ :: في 14 يوليو 2005 في 17:33

بسم الله الرحمن الرحيم

" أولئك لهم جنات عدن تجري من تحتهم الأنهار

يحلون فيها من أساور من ذهب ويلبسون ثيابا خضرا

من سندس و إسـتـبـرق متكئين فيها على الأرائك

نعم الثواب وحسنت مرتفقاً "

صدق ذو الجلال والإكرام

#11

أولا أخى احب أن اذكرك ان كل header file يحتوى على مجموعة من الدوال

مثلا < stdlib.h >

يحتوى على دوال منها دالة abs() لايجاد القيمة المطلقة

مثال

#include <stdlib.h>
#include <iostream.h>
#include <conio>


  main(void)
 {

int n = -1;

  cout<<abs(n);


getch();

وأيضا تحتوى على دالة

exit(0)

يعنى خلاص خلص البرنامج ولو اتك مثلا e يخرج من البرنامج عن طريق تلك الدالة

ودالة أسمها

qsort

ومن اسمها بتعمل ترتيب لarray

< stdafx.h >

مش فاكر للأسف (للاسف مش مسطب الsource ) دة بتاع اية ممكن اى حد من الاعضاء يوضحة

< conio >

دة من أهم الheader files المستخدمة

يوجد به دوال زى

getch()

معناها get character ولكن هذا الcharacter لا يضهر على الشاشة

لاحظ الكود السابق بتاع القيمة المطلقة

يعنى بدل ما انت تكيت std::

وأيضا تحتوى على دوالة ال

getche();

زى الدالة ولكن الcharacter يظهر على الشاشة ودى من اهم الدوال المستخدمة فى حالة الgraph mode

وأيضا على ما أتذكر دالة تسمى ب gettext()

وتسخدم فى الادخال

وعندك من الدوال اللزيزة winodw()

انا مش فاكر عدد البارامترات بتاعتها بس ممكن تبحث عنها

أما <process.h>

يحتوى على دالة exit()

يعنى ممكن تبحث عن اى دوال الheaderfile عن طريق عمل select للدالة او الheader file وأيضا أتك f1

وستجد صفحة تحتوى ع جميع الدوال التى يضمها هذا الheader flie

Muhammad Allam

Computer Science

@Resource(MappedURL="My Blog" )

#12

تشكراات كبيره أخي الكريم ( إنج _ علام )

و جزاك الله خير على هذا التوضيح الجميل .. :rolleyes:

ووفقك الله لما تحب وترضا

بسم الله الرحمن الرحيم

" أولئك لهم جنات عدن تجري من تحتهم الأنهار

يحلون فيها من أساور من ذهب ويلبسون ثيابا خضرا

من سندس و إسـتـبـرق متكئين فيها على الأرائك

نعم الثواب وحسنت مرتفقاً "

صدق ذو الجلال والإكرام

#13

اخي العزيز كما تفضل الاخوة فال OOP تعني Object Oriented Programming و من بين مفاهيمها و ركائزها كما ذكرت لك في رسالتي الاولى :

ال PolyMorphism و تعني هذه الكلمة تعدد الأشكال و ينطوي تحتها مفهوم ال OverLoadingالذي يعني أنه يمكنك اعلان فنكشن واحدة لكن بطريقتين مختلفتين :

int Addition (int FirstNumber,int SecondNumber)
{
     return FirstNumber + SecondNumber;
}

int Addition (int FirstNumber,int SecondNumber,int ThirdNumber)
{
     return FirstNumber + SecondNumber + ThirdNumber;
}

هذا مثال بسيط و لاحظ أننا أعلنا نفس الفنكشن بنفس الاسم لكن ببرامترز متغيرة و سيقوم البرنامج مباشرة باختيار الفنكشن المناسبة عند تمرير البرامترز الى الفنكشن يعني لو مررت ثلاث أرقام سينفذ الفنكشن الثانية اما اذا أدخلت رقمين فالاولى اما اذا أدخلت اقل او أكثر فسينتج خطأ

ثم هناك ال Interfaces و التي تمكنك من تعريف Data members و Variables في كلاس مثلا ثم تقوم بعمل Implement لهذا الكلاس في برنامجك

ثم الوراثة و التي يمكن من خلالها ان يرث كلاس معين خصائص كلاس آخر و يستعملها كأنها معلنة داخله

و هناك عدة أشياء أخرى و أنا أتمنى ان تبحث أكثر حول ال OOP و مفاهيمها لأنك لن تستغني عنها طوال رحلتك البرمجية

تم تعديل هذه المشاركة بواسطة crazy-man في 22 يوليو 2005 في 18:20

#14

الـ polymorphism هي function overriding و هي مختلفة كثيرا عن function overloading

الـ function overloading:

هو كتابة عدة functions بنفس الاسم و لكن الفرق يكون في الـ parameters, مثل المثال اللذي ذكرت.

عندما تستدعي overloaded function فإن اختيار الـ function المناسب من بين النسخ المتعددة يتم في الـ compile-time يعني اثناء تحويل البرنامج الى لغة الالة.

الـ function overriding (فيما يتعلق بالـ polymorphism و الـ oop):

هو اعادة تعريف function موروث من الكلاس الاب, بدون تغيير اي بارامترات ولا شي ..

الـ polymorphism تعمل هكذا: اذا كان عندك مؤشر من نوع كلاس معين يشير الى كائن هو في حقيقته من كلاس مشتق من كلاس المؤشر, فعندها تستطيع استدعاء اي function معرف في الكلاس الاب, و لكن الـ function اللذي سيتم استدعائه في الحقيقة هو المعرف في الكلاس المشتق منه (كلاس الكائن).

مثال:

/**
    Polymorphism example
*/

#include <iostream>
using namespace std;

class A
{
public:
    virtual char * identifySelf()
    {
        return "I am class A";
    }
};

class B : public A
{
public:
    virtual char * identifySelf()
    {
        return "I am class B";
    }
};

class C : public A
{
public:
    virtual char * identifySelf()
    {
        return "I am class C";
    }
};

void identifyObject( A * a )
{
    cout << a->identifySelf() << endl;
}

int main()
{
    A * a = new A();
    A * b = new B();
    A * c = new C();

    identifyObject( a );
    identifyObject( b );
    identifyObject( c );
}

تشغيل هذا الكود يعطي:

I am class A
I am class B
I am class C
Press any key to continue

الـ polymorphism حصلت هنا:

void identifyObject( A * a )
{
    cout << a->identifySelf() << endl;
}

تحديدا عند الـ function المسمى identifySelf

فهنا a هي مؤشر لكلاس A, و لكن الكائن اللذي تشير اليه قد يكون B او C او كائن من اي كلاس مشتق من A

اختيار الـ function المناسب يتم اثناء تشغيل البرنامج, و ليس اثناء تحويله الى لغة الالة, فالكومبايلر لا يستطيع معرفة ما اللذي سيحدث اثناء تشغيل البرنامج.

طبعا قد يبدو انه لا فائدة لهذه الـ polymorphism, و هذا لاني هنا لم اقم سوى بتعريف كيف تعمل .. و لم يكن هذا جزء من شرح متكامل عن البرمجة الكائنية, فضلا عن البرمجة بشكل عام.

#15

مثال ممتاز يا حسن ..

اخيرا فهمت الفكرة : )

------------------------

الامثلة اللي كذا / هي المطلوبة

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#16
الشـمري كتب:
مثال ممتاز يا حسن ..

اخيرا فهمت الفكرة :  )

------------------------

الامثلة اللي كذا / هي المطلوبة

انت ما كنت فاهم الفكرة؟

تصدق ما كنت اعرف؟

اعتقد دروسي مالمحرك البسيط ما راح تنقع بدون دروس في الـ oop :P

#17

شكراً لكم أخواني على التوضيح القيم الرائع ..

و منكم نستفيد إن شاء الله دائماً .. :rolleyes:

تم تعديل هذه المشاركة بواسطة :: إسـتبرق C++ :: في 1 أغسطس 2005 في 22:30

بسم الله الرحمن الرحيم

" أولئك لهم جنات عدن تجري من تحتهم الأنهار

يحلون فيها من أساور من ذهب ويلبسون ثيابا خضرا

من سندس و إسـتـبـرق متكئين فيها على الأرائك

نعم الثواب وحسنت مرتفقاً "

صدق ذو الجلال والإكرام

هذا الموضوع مغلق.

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