• بادئ الموضوع بادئ الموضوع E.ALI
  • تاريخ البدء تاريخ البدء
المخرجات Outputs
ذكرت أنه في سي++ حتى تستطيع استخدام الدوال الجاهزة تحتاج الى استدعاء الملف الذي يحتوي على هذه الدوال , هناك دالة خاصة للمخرجات , ونقصد بالمخرجات اظهار نص على شاشة الكونسول , هذا النص قد يكون حروف , أرقام , ارموز , أو عمليات حسابية , في النتيجة ستكون عبارة عن نصوص تظهر على الشاشة.​
الأمر الخاص بكتابة نص هو cout , تقوم بكتابة هذا الأمر دالة الدالة الرئيسية main​
كود:
int main()
{
    std::cout << "hello" ;
    system("PAUSE");
    return 0;
 
}

ولكن اذا جرت تشغيل البرنامج ستظهر رسالة خطأ , لأنك لم تقم باستدعاء الملف الخاص بالأمر cin ( ملاحظة : هذه الملفات التي توجد بها الدوال و الاوامر الجاهزة تسمى header files), كيف تقوم باستدعاء هذا الملف؟

كود:
#include <header file name>

اذا اردت مثلا استدعاء ملف اسمه Robots تكتب

كود:
#include <Robots>

الملف الخاص بالأمر cin هو iostream , اختصار لـ input - output stream , يجب استدعاء هذا الملف اذا أردت استخدام أوامر الاخراج و الادخال.

كود:
#include <iostream>

استدعاء ملفات header تتم في بداية البرنامج أي قبل كتابة أي كود يجب استدعاء الملفات اللازمة , الشكل العام لبرنامج يقوم باظهار نص hello تكون كالآتي

كود:
#include <iostream>
 
 
int main()
{
    std::cout << "hello" ;
    system("PAUSE");
    return 0;
 
}

قم بتشغيل البرنامج , سيظهر النص hello و لكن مشكلة هذا النص أنه ملتص بالنص الافتراضي الذي يظهر دائما في سي++ Press any key to continue

teTi8nD.png

لحل هذه المشكلة يجب ادراج الأمر الخاص بالتوجيه الى سطر جديد وهو endl , اختصار end line كالآتي

كود:
std::cout << "hello" << std::endl ;

اذا قمت بتشغيل البرنامج ستجد الجملة في سطر جديد , وهذا أمر جيد.
لكن مهلاً , ما قصة std::n؟ في الحقيقة هذا الكود هو كود سي و ليس سي++ (سي++ تطوير للغة سي , لغة سي أقدم من سي++) , كلما اردت استخدام اوامر الادخال و الاخراج يجب ادخال std:: ولكن الأمر متعب بعض الشيء , في سي++ يمكن القضاء على std:: من خلال ارداج الكود الاتي قبل الدالة الرئيسية

كود:
using namespace std;

سيكون الكود العام كالآتي , طبعاً يمكنك الان التخلص من std::

كود:
#include <iostream>
 
using namespace std;
 
int main()
{
    cout << "hello" << endl ;
    system("PAUSE");
    return 0;
 
}

اذا أردت كتابة جملة اخرى في سطر جديد , يمكنك استخدام الأمر cout مرة أخرى , أو يمكنك ان تكتبها بعد أمر نهاية السطر endl

كود:
cout << "hello" << endl << "welcome to c++" ;

النص سيكون ملصق بـالجملة press any key to continue , ماذا تفعل؟ تستخدم الأمر endl.


استخدمت الامر endl للتوجه الى سطر جديد , يمكن استخدام أمر اخر للتوجه الى سطر جديد وهو n\ , تكتبه كما لو تقوم بكتابة نص عادي كالآتي​
كود:
cout << "hello \nwelcome to c++\n" ;
عليك أن تنتبه الى انك اذا وصعت مسافة بعد حرف n فان الحرف الذي يليها ستكتب في سطر جديد ولكن بعد مسافة واحدة , واذا كانت مسافتين تكتب بعد مسافتين وهكذا..​
الامر الاخر هو امر طباعة مسافة كبيرة Tab "تقريبا 5 مساحات فارخة" بين حرفين, تستخدم t\​
كود:
cout << "hello \twelcome to c++\n" ;
Hnma1Yi.png

لاحظ , اذا اردت طباعة الرمز " في الشاشة , أول كود ستكتبه هو الآتي

كود:
cout << " I'm priting the symbol " in cpp" ;

هذا الكود غير صحيح , لو حاولت تشغيل البرنامج ستظهر لك رسالة خطأ , والسبب أن الرمز " في سي++ تعني بداية أو نهاية نص , المرة الأولى التي كتبت فيها الرمز " تعني بداية نص و في المرة الثانية تعني نهاية نص , أي ان النص الذي سيطبع هو فقط I'm priting the symbol , و لكن in cpp لن يكون من ضمن النص المطبوع لأنه لم تسبقها الرمز " , بينما ; سيعتبر نص لأن سبقه الرمز " , لهذا ان أردت اظهار الرمز " في الشاشة عليك استخدام \ ثم كتابة الرمز , كالآتي

كود:
cout << " I'm priting the symbol \" in cpp\n" ;
xXpI0xA.png
 

فعلا اخي علي أنت مثال للعضو المبدع بحق
لغة سي دبل بلس (كاختصار) سهلة جدا وبسيطة جا جدا
وكانك تحدث أحد فقط كل ماعليك ان تحفظ بعض الرموز والغاية منها كمعالجة أو شيئ من هذا القبيل
ثم تشغل عقلك
معظمها يعتمد على الذكاء
 
توقيع : MagicianMiDo32
شيئ مهم قبل بدء التعلم
مذا تفعل أذا اردت اشعال شمعة ؟
أجيب عود كبريت وأولعها :p
كيف ؟
ليس هذا المطلوب ولكن المطلوب كيف؟
==
1 احضر الكبريت
=
  1. اذهب الى الطاولة (لو عندك كبريت)
  2. أمسك العلبة بالشكل الصحيح باستخدام أصبعي الابهام والسبابة بحيث لا تسقط من يدي أو تسقط منها اعواد الكبريت
  3. أذهب الى المكان المطلوب
  4. أضع علبة الكبريت على الطاولة (بفرض أن هناك طاولة )
=
2 أحضر الشمعة
=
  1. أذهب الى الدرج
  2. أحضر الشمعة
لكن كيف أحضرت الشمعة ؟ نبدأ من جديد (كمثال على أن لاننسى اي خطوة ) (مهمة فاشلة)

  1. أذهب الى الدرج
  2. أفتح الدرج من المقبض
  3. أبحث عن شمعة في الدرج
  4. أمسك الشمعة بيدك اليسرى بأصبعي السبابة والأبهام بالشكل الصحيح بحيث لا تسقط منك على الأرض
  5. أغلق الدرج بيدك اليمنى
  6. تناول الشمعة بيدك اليمنى من يدك اليسرى وأمسكها بنفس الأصبعين
  7. أذهب الى المكان المطلوب
  8. ضع الشمعة على الطاولة
=
3 أشعال الشمعة
=
  1. امسك الشمعة بالاصبعين السبابة والوسطى
  2. ضع الشمعة على ار ض مستوية بحيث تكون قاعدتها الى الأسفل والخيط الى الأعلى و ثبتها بشيئ لكي لا تسقط (حامل مثلا )
  3. احضر الكبريت باستخدام يدك اليمنى وأمسكه بطريقة جيدة بأصبعيك السبابة والأبهام بحيث لا تسقط على الأرض او تسقط منها أعواد الكبريت
  4. امسك العلبة بحيث يكون الملصق الى أعلى بيدك اليسرى بجميع أصابعك بحيث يكون الابهام في الأسفل وباقي الاصابع في الأعلى بطريقة جيدة وبحيث تظهر المنطقة الحمراء منها
  5. أفتح العلبة باستخدام اظفر السبابة في اليد اليمنى
  6. خذ عود كبريت من العلبة بأظفري أصبعي السبابة والأبهام بشكل جيد بحيث لا تسقط العلبة أو الأعواد على الأرض وان يكون الجزء الأحمر من عود الكبريت للأعلى بالنسبة لليد
  7. أغلق العلبة باستخدام عقلة الأصبع السبابة الاولى من جهة اليد مع مراعاة عدم سقوط العلبة أو الأعواد على الأرض (شاملا العود الذي في يدك )
  8. حك الجزء الأحمر من عود الكبريت مع الجزء الاحمر من العلبة حتى يشتعل العود
  9. لمس العود لطرف الشمعة مع مراعاة ألا يلمس اي شيئ ىخر غيرها (لا تضع العلبة لضمان ذلك)
  10. عندما تشتعل الشمعة أنفخ على العود حتى ينطفئ
  11. ضع العلبة على الطاولة بالشكل الصحيح مع مراعاة عدم سقوط العلبة أو الأعواد على الأرض (شاملا العود الذي في يدك )
  12. أذهب الى سلة القمامة
  13. الق العود فيها بالشكل الصحيح
========
تم اشعال الشمعة بنجاح (مهمة ناجحة )
 
توقيع : MagicianMiDo32
توقيع : SniPer-Dz
بارك الله فيك أخي على هذه الدروس القيمة
 
توقيع : mojahid
تم تعديل الدرس 4 بدمجه مع الجزء الثاني
 
يعطيك العافية على الابداع اخوي​
وعند الانتهاء خبرني اقوم بصنع كتاب الكتروني عن دروسك ،،​
لمن يريد ان يحتفظ بها​
موفق​
 
توقيع : .: OMAR :.
بارك الله فيك
 
أنواع البيانات Data types
الهدف من برنامج سي++ هو التعامل مع البيانات , البرامج المختلفة تتعامل مع بيانات مختلفة , على سبيل المثال , البرنامج المصمم لحساب راتب موظفين سيقوم باضافة , ضرب , قسمة و طرح أرقام , وبعض هذه الأرقام قد تمثل عدد الساعات , أو تمثل الراتب لكل ساعة. والبرنامج المصمم لترتيب أسماء الطلبة سيحتاج الى بيانات مثل الاسم الأول و اسم العائلة , لا يمكن اجراء عمليات حسابية على هذه البيانات ( لا يمكن طرح حرف "ع" من كلمة "علي" ليكون الناتج "لي" ) , اذن لا يمكن اجراء حسابات رياضية الا على البيانات الرقمية , في سي++ هناك مجموعة من البيانات تتعامل مع الأرقام بدون فواصل عشرية هي مجموعة Integral ومجموعة أخرى تتعامل مع الفواصل العشرية Floating-point , في هذا الرابط يوجد جدول يوضح هاتين المجموعتين http://msdn.microsoft.com/en-us/library/cc953fe1(v=VS.71).aspx , فمثلاً int , bool و char كلها Integral data types تتعمل مع الأرقام الصحيحة فقط , لكل نوع من البيانات مدى معين من الأرقام يمكنها التعامل معها , وهي موضحة في هذا الجدول http://msdn.microsoft.com/en-us/library/s3f49ktz(v=vs.71).aspx , مثلاً char يمكنها التعامل مع الأرقام من -128 الى 127 , اذا اعطيت هذا النوع من البيانات الرقم 128 فلن تقبله.​
في البرمجة الحديثة , تُستخدم ثلاثة أنواع من integral data types وهي int , bool , char.​
int : راجع الجدول لتعرف المدى , يمكنك كتابة ارقام صحيحة مثل 5098 , ولكن لا يمكنك استخدام فواصل مثل 59.0 وان كان الرقم يمثل 59 الا أنه ليس من نوع int , كما انه لا يمكنك استخدام الفواصل التي بهذا الشكل 808,9 لأن سي++ سيعتبره رقمين 808 و 9.​
bool : المدى يمتان فقط , هما True و False , تستخدم هذا النوع من البيانات للتعامل مع العمليات المنطقية Logical operations.​
char : تتعامل مع الأحرف " رقم واحد , رمز واحد , حرف واحد" مثل الرمز - أو = أو & أو رقم 5 أو حرف g , فقط شيء واحد , الرقم 55 مثلا غير صحيح لانه اكثر من رقم , الرمز )( غير صحيح لأنه اكثر من رمز , حتى المساحة الفارغة ' ' يعتبر رمز أي انه لا استخدام مساحة ثم رمز اخر.​
المجموعة الثانية وهي Floating-Point data types , يمكنك هنا استخدام الفواصل العشرية.​
float , double يمكنك فيهما كتابة الرقم 55.690 أو بدون فواصل مثل 943 , الفرق بينهما هو في المدى , راجع الرابط السابق.​
العمليات الحسابية
يمكنك اجراء الحسابات الرياضية على أنواع البيانات في المجموعتين , الجمع + الطرح - القسمة / و الضرب * وعملية اخرى وهي باقي القسمة % تجري فقط على Integrals​
اجراء العمليات الحسابية تتم بقواعد , الضرب و القسمة و باقي القسمة تتم اولاً , ثم الطرح و الجمع​
كود:
5*6-10=20
لكن اذا كنت تملك في العملية الحسابية الواحدة ضرب و قسمة فان الاولوية تكون من اليسار, مثلا:​
كود:
10/2*3+5 = 20
وان تواجدت اقواس فان الأولوية تكون دائماً لها​
كود:
10/2*(3+50)=40
البرنامج الآتي يقوم بتلخيص ما سبق​
كود:
#include<iostream>
 
using namespace std;
 
int main()
 
{
    cout << 6 * 5 << endl; //output :  30
    cout << "5.0 + 3.5 = " << 5.0 + 3.5 << endl; //output : 5.0 + 3.5 = 8.5
    cout << "16.3 - 5.2 = " << 16.3 - 5.2 << endl; //output : 16.3 - 5.2 = 11.1
    cout << "1980 % 2 = " << 1980 % 2 << endl; //output : 1980 % 2 = 0
 
    system("PAUSE");
    return 0;
 
 
}
تحويل أنواع البيانات Converting data types
اذا كتبت امر طباعة ناتج 5.0 + 3.5 فان المخرجات تكون 8.5 , يمكنك ان تأمر البرنامج بظهار 8 فقط بدون الفواصل العشرية , وذلك من خلال التحويل الى احد انواع بيانات integral التي تقبل هذا الرقم وهو int. مثلا لتحويل 7.6 الى عدد صحيح تستخدم هذا الكود​
كود:
static_cast<int>(7.6)
لتحويل 900 الى double سيكون الناتج 900 بدون فواصل​
كود:
static_cast<double>(900)
كما يمكنك تحويل احد الرموز الى الرقم الذي يقابله , اذا اردت ان تعرف الرقم الخاص للرمز A, وهو 65​
كود:
static_cast<int>('A')
والعكس صحيح , لتحويل 65 الى الرمز A​
كود:
static_cast<char>(65)
النصوص String type
النص عبارة عن تسلسل رموز, فالنص يمكنه أن يكون فارغ , يحتوي على رمز , رمزين , مئمة رمز... , String الذي يحتوي على فراغ " " يسمى بـnull or emprty كل رمز في النص له موقع يبدأ الترتيب من صفر , مثلا موقع حرف c في كلمة computer وهو صفر و حرف u هو 4.​
البرنامج الآتي يلخص كل ماسبق.​
كود:
#include<iostream>
 
using namespace std;
 
int main()
 
{
    cout << static_cast<int>((5.8 * 70) - 8 % 4 * (0-0.2)) << endl; //output : 406
    cout << static_cast<int>('_') << endl; //output: 95
    cout << static_cast<char>(68) << endl; //output : D
    cout << static_cast<int>('d') << endl; //output : 100
    cout << static_cast<double>(80) - static_cast<int>('&') << endl; //output 42 , the answer will be in integer
 
    system("PAUSE");
    return 0;
 
 
}
 
الثوابت , المتغيرات , المدخلات Constants - Variables - Inputs
ذكرت سابقاً أن الهدف من برنامج سي++ هو التعامل مع البيانات , هذه البيانات يجب أن تستدعى في ذاكرة الحاسوب قبل استخدامها , في هذا السكشن ستتعلم كيفية استدعاء بيانات الى ذاكرة الحاسوب.​
لتخزين البيانات تحتاج الى خطوتين :​
1- تطلب من الكمبيوتر تخصيص أو حجز مكان في الذاكرة.​
2- تدخل بيانات الى هذا المكان في الذاكرة.​
الـثوابت
عند تخصيص مكان في الذاكرة لتخزين البيانات (قيم) , يجب ذكر الاسم و النوع , أحياناً تحتاج الى استخدام القيمة أكثر من مرة , مثل قيمة الباي أو ثابت بلانك تحتاج الى استخدامه أكثر من مرة في البرنامج , هذه القيم لا تتغير بل تبقى ثابتة , ومثال اخر معامل التحويل من السنتيمتر الى البوصة يبقى ثابتاً.​
عندما تقوم بتخزين هذه البيانات في الذاكرة يجب أن تذكر بأنها بيانات ثابتة لاتتغير وهذه تسمى Named constants, اذن Name constants عبارة عن قيمة ثابتة في الذاكرة غير مسموح بتغييره فترة تشغيل البرنامج.​
لتخصيص مكان في الذاكرة نستخدم قواعد سي++ لعمل ذلك وهي كالآتي​
كود:
const DataType Name = value;
حيث DataType يمثل نوع البيانات أو القيمة , Name أي اسم تجده مناسب ولكن هناك شروط لهذه الأسماء تجدها (هــنا) , و Value تعني القيمة المدخلة بحيث يجب ان تتناسب مع نوع البيانات.​
مثال , معامل تحويل الانتش الى سنتيمتر​
كود:
const double convert = 2.54;
النوع يجب ان يكون double لان القيمة عبارة عن ارقام عشرية , لكن اذا كتبت int سيتخلص البرنامج تلقائيا من الأرقام ما بعد الفاصلة فتكون القيمة 2.​
امثلة اخرى على الثوابت​
كود:
const int NO_OF_STUDENTS = 20;
const char blank = ' ';

تذكر أن هذه ثوابت لا تتغير فترة تشغيل البرنامج.

المتغيرات

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

طريقة تخصيص مكان للمتغيرات في الذاكرة تشبه الثوابت لكن بدون كلمة const

كود:
DataType Name = value;

أحياناً قد تكون القيمة غير معرفة بالتالي لا داعي لكتابة القيمة تكتفي فقط بالاسم و النوع

كود:
double AVG_STUDENTS_SCORE;

و أحياناً أخرى تحتاج الى انشاء اكثر من متغير ولكن من نفس النوع

كود:
int AVG_TEST1 , AVG_TEST2 , AVG_TEST3;

المتغيرات و الثوابت من نوع string

حتى تستطتيع التعامل مع المتغيرات و الثوابت من نوع String تحتاج الى استدعاء ملف string الى البرنامج

كود:
#include<string>

ثم تعرفها كأي متغير أو ثابت اخر.

المدخلات

المدخلات في سي++ عبارة عن ادخال قيم للمتغيرات عند فترة تشغيل البرنامج , لادخال قيم الى المتغيرات تتبع القاعدة الاتية

كود:
cin >> variable1 >> variable2 >> variable3 ;

ويجب ان تقوم باستدعاء الملف iostream

المثال الآتي يوضح ذلك

كود:
#include<iostream>
#include<string>
 
using namespace std;
 
int main()
 
{
    const int NO_TESTS = 3;
    double avgTest1 , avgTest2 , avgTest3 , AVG;
    string message = "Thank you\n";
    cout << "Enter the average of students score in test1 and test2 and test3" << endl;
    cout << "AVG in test1 : ";
    cin >> avgTest1;
    cout << "AVG in test2 : ";
    cin >> avgTest2;
    cout << "AVG in test3 : ";
    cin >> avgTest3;
 
    AVG = (avgTest1 + avgTest2 + avgTest3) / NO_TESTS;
    cout << "The average score is : " << AVG << endl << message;
 
    system("PAUSE");
    return 0;
 
 
}

كل امر cin يعني ان المترجم سيوقف البرنامج حتى يقوم المستخدم بادخال قيمة من الكيبورد الى المتغير , هذه القيمة لا يمكن ان تكون فارغة , لو تستمى بالضغط على Enter أو space الى الابد فالبرنامج لن يفعل شيء حتى تدخل قيمة للمتغير.
 
الابداع لاينتهي هنا جعل الله عملك خير الخواتم ويدا بيد لرفع مستوى العالم العربي
 
حياكم الله اخواني
اعلم انها ليست بلغة سهلة لكن مع التدريب ستصبح من اسهل اللغات
ارى ان التفاعل ضعيف جدا في الموضوع , الموضوع غير مخصص فقط لطرح الدروس
من يملك اسئلة في نطاق الدروس ليتفضل بطرحها
 
السلام عليكم ورحمة الله وبركاته . .
في جميع الأحوال الكل مستفيدْ , ولـ نقل إنني منذ زمن لم أرَ مُقدما لـ دروس برمجية بهذا الرونق والتنظيم والترتيب والمراعاة لـ كافة الأنواع لمتابعي الدروس من مبتدئ إلى محترف ؛ وأكثر ما شدني بعد الأسلوب المُتبع وطرح الأمثلة بالتتابع مع الإنتباه إلى التفاصيل الصغيرة التي تكون مشكلة المُبتدئ في جميع دورات البرمجة هو أنك أخترت لغة ++C . . لنقل إنني كُنت أكره أن يأتيني مبرمج هذه اللغة ومحترفها ويتفلسف علي نصف ساعة لأنني ببساطة لم اتعلم اللغة بينما هو "ما شاء الله" أتقنها ! ! وعندما بدأت بالبحث عن دورة جيدة لهذه اللغة الرائعة والجميلة كُنت دائما ما أصلُ لنفس النتيجة ( لا يُوجد دورة واحدة أفهم منها هذه اللغة ) مع الأسف .
الآن أجد نفسي معك أخي الفاضل "جُزيت خيراً" في تقدم وشيئاً فشيئا بدأت أدرك المعيار المُناسب لـ إستخدام هذه اللغة المعقدة . . بكل تأكيد وجدت بعض الصعوبة وسأجد ، لكن مع التطبيق ورؤية النتائج سأجد أن اللغة أسهل من السابق وهكذا حتى تصبح هذه اللغة "سهلة" و كغير اللغات التي تعلمتها ، وإن شاء الله سـ أستمر معك في هذه الدورة . .
لدي سؤال واحد فقط :-

أريد أن أعرف شيء اللغة التي نتعلمها هل هي C++.NET ؟ أم أنها ++C ؟
الله يعطيكـ العافية .
 
السلام عليكم ورحمة الله وبركاته . .
في جميع الأحوال الكل مستفيدْ , ولـ نقل إنني منذ زمن لم أرَ مُقدما لـ دروس برمجية بهذا الرونق والتنظيم والترتيب والمراعاة لـ كافة الأنواع لمتابعي الدروس من مبتدئ إلى محترف ؛ وأكثر ما شدني بعد الأسلوب المُتبع وطرح الأمثلة بالتتابع مع الإنتباه إلى التفاصيل الصغيرة التي تكون مشكلة المُبتدئ في جميع دورات البرمجة هو أنك أخترت لغة ++C . . لنقل إنني كُنت أكره أن يأتيني مبرمج هذه اللغة ومحترفها ويتفلسف علي نصف ساعة لأنني ببساطة لم اتعلم اللغة بينما هو "ما شاء الله" أتقنها ! ! وعندما بدأت بالبحث عن دورة جيدة لهذه اللغة الرائعة والجميلة كُنت دائما ما أصلُ لنفس النتيجة ( لا يُوجد دورة واحدة أفهم منها هذه اللغة ) مع الأسف .
الآن أجد نفسي معك أخي الفاضل "جُزيت خيراً" في تقدم وشيئاً فشيئا بدأت أدرك المعيار المُناسب لـ إستخدام هذه اللغة المعقدة . . بكل تأكيد وجدت بعض الصعوبة وسأجد ، لكن مع التطبيق ورؤية النتائج سأجد أن اللغة أسهل من السابق وهكذا حتى تصبح هذه اللغة "سهلة" و كغير اللغات التي تعلمتها ، وإن شاء الله سـ أستمر معك في هذه الدورة . .
لدي سؤال واحد فقط :-
أريد أن أعرف شيء اللغة التي نتعلمها هل هي C++.NET ؟ أم أنها ++C ؟
الله يعطيكـ العافية .

حياكم الله
اشرح لغة سي++ , الاختلاف يكمن في استخدام dot net framework
في سي++ دوت نت يمكنك استخدام مكتبة الفريم الوورك في برنامجك
لكن لن اتطرق اليه في هذه الدورة , بل لن اتطرق الى الواجهات الرسومية باستخدام سي++ بل سأستخدم لغة اخرى من لغات الدوت نت
 
عودة
أعلى