الجمعة، 4 أغسطس 2017

- ما هو الفرق بين لغة السي والسي بلس ؟ what the different between c and c++ language

- ما هو الفرق بين لغة السي والسي بلس ؟ what the different between c and c++ language



1- ما هو الفرق بين لغة السي والسي بلس ؟

لغة السي ظهرت قبل لغة السي بلس . بالتالي لغة السي بلس هي إمتداد للغة السي .

فكل الامور الموجودة في السي ستجدها في السي بلس لكن العكس غير صحيح .

2- ما هو الفرق بين

Cpp و Borland Cpp .

Cpp و Visual Cpp

CPP و CPP.NET

CPP و ؟؟؟؟؟؟ . ؟

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

كلها في النهاية تمكنك من تحويل كود السي إلى تطبيق .

أما لغة Cpp.net وتسمى الان بالCLI ,, فهي مختلفة ... ولايلزمك تعلمها .. فهي خاصة ببيئة الدوت نت ..

3 - هل أتعلم السي أو أتعلم السي بلس وهل اذا تعلمت واحدة منهما اكون قد تعلمت الاخرى ؟

نصيحة :

لاتقل : أريد ان اتعلم السي .. ثم اتعلم السي بلس . ومن هذا الكلام .

فالان أغلب الكتب والدروس هي تدمج السي بالسي بلس او لنقل تركز على السي بلس .

لانك اذا تعلمت فقط السي تكون قد قطعت 75% من المشوار .

اما اذا تعلمت السي بلس فانك تكون قد قطعت 100% من المشوار .

( من هنا وصاعدا وفي هذا الموضوع اذا رأيتني اكتب " لغة السي" فاني اعني السي والسي بلس لا افرق بينهما )

4- ماهي حدود لغة السي ( او السي بلس بلس ) ؟

ليس أمامك حدود فكل شيء تستطيع عمله باستخدام هذه اللغة . ( هذا بشكل عام ولا علينا من الامور الدقيقة ) .

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

90% من برامج اللينكس هي من انتاج لغة السي .

لاتنسى أيضا برمجة الالعاب .. اللغة الرئيسية لبرمجة الالعاب هي لغة السي بلس

5- أنا تعلمت لغة برمجة اخرى في السابق ( مثل لغة الفيجوال بيسك او لغة الدلفي او الجافا ) .. هل من الممكن أن يفيدني هذا بشيء عندما أتعلم لغة السي ؟

نعم .. اتقانك للغة اخرى يسهل اتقانك للغة السي ..

فلغات البرمجة تشترك في كثير من الامور .. فهي تتكون من متغيرات ومصفوفات ودوال وتراكيب وكائنات ..

لكن يجب عليك أن تكون مستعدا للتأقلم مع لغة السي .. فستجد بعض الاختلافات والفروق .. وتحتاج وقت لاتقانها .

6- ماهي المدة التي أحتاجها لاتقان لغة السي ؟

هذا يعتمد على طريقتك في التعلم .

فاذا كنت يوميا تتعلم هذه اللغة .. فبامكانك تعلمها في مدة لاتزيد عن خمسة أشهر .

7- أريد تعلم هذه اللغة واشتريت ونزلت وقرأت كتب ... وانا متحمس جدا .. لكن أين أكتب الكود ؟ ؟ ألا يوجد برنامج للغة السي يقوم بتحويل الكود الى برنامج ؟

شكر : للاخ AmR EiSa لتعديله على هذا الجواب:

حسنا, أنت تحتاج لشرح بعض المصطلحات :

البرنامج الذي تكتب فيه ( كود لغة السي ) تستطيع أن تكتبه بأي محرر نصوص .. وليكن المفكرة .. ولكن توجد برامج توصف بأنها بيئة تطوير IDE .. والذي يقوم بتحويل الكود الى ملف معين يسمى (COMPILER) الكومبايلر او المترجم او المصرف ...

طبعا لن اتكلم عن linker والامور الاخرى .. هذه ستعرفها انت اذا بدأت في تعلم اللغة .

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

أما اذا أردت مزيد من التفصيل .. فنقول :

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

ثم يوجد ما يسمى بالرابط linker .. المترجم والرابط يقومان في النهاية بإنشاء الملف التطبيقي .

وتترجم الكود عن طريق موجه الاوامر ..

ولكن يوجد برامج تحتوي على واجهة . تختصر لنا الطريق وتعتمد على تلك المترجمات .. وتوصف هذه البرامج بأنها IDE ( بيئة تطوير لغة السي ) .

مسألة أخرى وهي أنواع ملفات السي بلس :

ملفات السي كثيرة وتختلف من مترجم الى آخر ..

ولكن أهمها :

ملف إمتداده

.cpp - c

ملف إمتداده

.h او hpp . ( ويسمى الملف الرأسي ( header file )

ويوجد ملف ثالث هو الذي يقوم بتجميع مشروعك .. يعني لنفرض عندك 15 ملف cpp و 15 ملف h من الصعب أن تفتحها كلها يدويا

بالتالي يوجد ملف ثالث يختلف من مترجم لاخر يقوم بتجميع مشروعك من هذه الملفات :

ملف امتداده :

.dsw او dsp وهو من ملفات مترجم الفيجوال سي 6 .

dev وهو من ملفات المترجم dev-cpp . وغيرها ....

نعود مرة أخرى للمترجمات .. الاسئلة والأجوبة التالية ستوضح لك أي مترجم تختار وكيف تعمل عليه .

8- ما أفضل المترجمات ؟

يجب أن تعرف أنه يوجد فرق بين المترجم والمحررات المرئية IDE ..

بعض المترجمات تأتي بمترجم + واجهة للعمل عليه مثل مترجمات مايكروسوفت ,

وهنا مترجمات تأتي بدون واجهة ... ونستعمل برامج أخرى لتسهيل العمل على هذا النوع من المترجمات .. وتسمى تلك البرامج بالIDE .

أما المترجمات فهي :

1- 1- Visual Cpp : وهو عدة اصدارات .. 6 ثم 2003 ثم 2005 ,والان 2008 وكلها من انتاج مايكروسوفت .. يوجد اصدار مجاني لكن لا انصح به لان ينقصه عدد من المكتبات الاضافية , لذلك حاول الحصول على النسخة الكاملة .. المترجم هو أفضل المترجمات حاليا للويندوز. 2- ِC++ builder : ( شكر للاخ B.M.AbdelAziZ على الاضافة) http://www.codegear.com/products/cppbuilder غير مجاني .. ولست متأكد بعد من وجود نسخة مجانية . من يملك معلومات أكبر عنه فليزودني بها أو يعدل على هذا الموضوع 3- Dev-cpp : هو عبارة عن محرر IDE يستخدم المترجم MinGW .. هو كاف لمن يريد تعلم لغة السي بلس وبرمجة تطبيقات الويندوز .. وهو مجاني . 4- CodeBlocks: أيضا هو عبارة عن IDE يعني محرر .. وستخدم مترجمات أخرى .. منها MinGW .. أيضا مجاني ويعمل على الويندوز و لينكس . http://www.codeblocks.org/ 9- أريد تطبيق أول برنامج لي في لغة السي بلس .. باستخدام Visual Cpp 6 .. هل من الممكن المساعدة ؟ اقرأ هذا الدرس . المترجم : visual c++ 6 10- أريد تطبيق أول برنامج لي في لغة السي بلس .. باستخدام Visual Cpp 2005 .. أو Visual Cpp 2008 , هل من الممكن المساعدة ؟ اقرأ هذا الدرس 11- أريد تطبيق أول برنامج لي في لغة السي بلس .. باستخدام Dev-Cpp .. هل من الممكن المساعدة ؟ اقرأ هذا الدرس 12- طفشت من الشاشة السوداء .. هل يمكنني أن أطور برامج مرئية فيها أزرار ورسومات ؟ نعم .. لكن تذكر أن لغة السي بلس تعمل على أكثر من نظام .. لذلك .. في كل نظام يوجد طريقة خاصة لانشاء برامج مرئية .. نذكر منها : 1- Win32 API : هي عبارة عن مجموعة من الدوال والتراكيب التي منها تم بناء نظام الويندوز .. موجودة في ملفات DLLs مثل GDI .. ( التعريف ليس دقيق) . أي شيء تراه في الويندوز أمامك هو نتيجة لدالة من هذه الدوال .. الجافا والسي شارب والاسمبلي .... كلها ومن اجل انشاء برنامج مرئي .. تستخدم الWin32 API بشكل مباشر أو غير مباشر .. ميزة الWin32 API هي أنها الأساس والقاعدة .. لو فهمتها فهمت أصول البرمجة لويندوز , كما يمكن تطوير برامج من خلالها باستخدام Dev-Cpp أو Visual Cpp , ويكفيك تعلم لغة السي فقط لتتعلمها . وعيوبها .. أنها طويلة + خاصة لنظام الويندوز . 2- MFC : مكتبة تقوم بتغليف الWin32 API بطريقة كائنية OOP .. ميزتها أنها أسهل من Win32 API فقط لمن هو وصل لدرجة الاحتراف في السي بلس بلس ..وفهم الOOP, وعيوبها أنها خاصة بالويندوز وخاصة بمترجمات مايكروسوفت Visual Cpp . 3- QT : تعمل على أكثر من نظام .. وعيوبها انها مجانية فقط للمشاريع الغير تجارية + لاتعمل على Visual Cpp انما على المترجمات المجانية الاخرى . ( أنا هنا أتكلم عن النسخة المجانية من qt ) . 4- .. عشرات المكتبات الاخرى ... لايتسع المقام لذكرها .

التسميات:

الخميس، 3 أغسطس 2017

دالة الإخراج في لغة الجافا : System.out.print


دالة  الإخراج في لغة الجافا  :              

System.out.print







دالة  الإخراج في لغة الجافا  :              
System.out.print
وهي من الدوال الهامة في لغة الجافا وهي تقوم بطباعة المخرجات سواء كانت عددية أو حرفية .

ولتوضيح عمل  هذه الدالة سوف يتم دراسة بعض الأمثلة :
مثال( 1 )المطلوب عمل برنامجا يقوم بطباعة العبارة Hello Egypt.
public class  HelloEgypt
 {
     
     public  static  void  main ( String  [ ] s)
              {                

                  System.out.print("Hello  Egypt") ;
     
                      }
 }     
شرح البرنامج            
2. السطر الأول    


وهذا هو السطر الأول في البرنامج وهو يتكون من:

Public  (  الفصيلة عامة ) ائما تسبق تعريف الفئة أو الفصيلة Class وهي تعني أن هذه الفئة أو أي يمكن لأي فئة أخرى في البرنامج استخدام عناصر هذه الفئة .لأن برنامج الجافا قد يتكون من أكثر من فئة class.
  class   وهنا يتم بداية الفصيلة

HelloEgypt             اسم الفصيلة ( البرنامج ) ولقد تم تسميته هنا بالاسم الذي نريده .
 ولابد هنا أن نشير إلى نقطة هامة جدًا وهي أنه عند حفظ ملف الجافا لابد أن يتم حفظه بنفس اسم الفصيلة وبنفس شكل الحروف والمسافات وفي مثالنا هذا سيكون الاسمHelloEgypt.java .
{         قوس بداية تعريف الفصيلة . 

3. السطر الثاني  

viod        أي أن الدالة بعد تنفيذ البرنامج لن تعود بأي قيم.

main     نقطة البداية لوظيفة الفصيلة main method .

( s  (String [ ]الجملة الموجودة داخل قوسي البداية للدالة main وهي String  s[ ] تعني مصفوفة من النوع الحرفي وتسمى s لتخزين جملة الطباعة في البرنامج .

وكما قلنا من قبل أن لغة الجافا هي لغة حساسة لحالة الأحرف لذلك يجب ملاحظة أن حرف S في كلمة String يجب أن يكون حرفاً كبيراً (capital letter) وإلا سيعطى البرنامج خطأ عند الترجمة .


السطر الثالث                     

 وهذا هو أمر الطباعة في لغة الجافا وسوف نتناوله بالتفصيل في الأمثلة القادمة .

                          وهنا يجب أن نلاحظ أن حرف S يجب أن يكون كبير (Capital letter)
   النص المراد طباعته ويجب أن يوضع بين علامتي تنصيص ("  ")                               وقوسين 
    لابد وأن تنتهي كل جملة (سطر أو أمر) بعلامة (;) 
  بعد ذلك يتم إنهاء البرنامج بقوسي النهاية حيث يمثل القوس الأول نهاية الوظيفة method 

        للدالة main  والقوس الآخر يمثل نهاية الفصيلة class . والشكل الآتي يبين ذلك :

     خطوات تنفيذ البرنامج                                            
1. نجري له عملية ترجمة كالآتي: 
Java c HelloEgypt.java  
إذا لم يكن هناك أخطاء لا تظهر أي رسالة ومعنى ذلك أن البرنامج صحيح لغويا وهنا يتم عمل (إنشاء ) ملف كلاس أي Hello Egypt. class .

2. بعد ذلك نقوم بعملية تشغيل البرنامج كالآتي:
Java Hello Egypt

فتظهر على الشاشة عبارة   Hello Egypt
وبذلك يكون قد تم تنفيذ البرنامج.
وكما هو معروف فأن خطوات كتابة وتنفيذ أي برنامج يمكن أن تكون كما بالشكل (1-12)
 

ويمكن إضافة متسلسلات الهروب مع جملة الطباعة للحصول على عدة أشكال من المخرجات

أمثلة على جملة الطباعة 
مثال( 2 ): ما هي مخرجات البرنامج التالي :
public class  Welcome {
     
     public  static  void  main ( String  s[ ] ) {

 System.out.print("Welcome to") ;

    System.out.print("Egypt") ;  
     
     }
 }
نلاحظ أنه عند تنفيذ هذا البرنامج ستظهر العبارة (Welcome to Egypt) على سطر واحد
وذلك تبعا لعبارتي الطباعة في السطر (3،4)

أما إذا أردنا أن تكون المخرجات على سطرين مختلفين فيتم إضافة حرفي (ln) على العبارة print ومعناها الانتقال إلى سطر جديد (new line) ويتم ذلك في السطر الثالث كالآتي :

 System.out.println ("Welcome to") ;

    System.out.print("Egypt") ;  
     
فتكون مخرجات البرنامج كالتالي:



welcome to Egypt

ويمكن تنفيذ نفس شكل المخرجات السابقة بسطر واحد وذلك عن طريق إضافة (\n) وتعني الانتقال إلى سطر جديد ويكون شكل البرنامج كالتالي :

  System.out.print ("Welcome to\n Egypt") ;
فتكون شكل المخرجات كالشكل السابق:

Welcome to 
Egypt
وفي هذه الحالة يتم إلغاء السطر رقم (4)
أما اذا أردنا طباعة عدة أسطر متتالية بأمر طباعة واحد فيتم ذلك بتكرار (\n) كالتالي:
  System.out.print ("One\n Two \n Three \n Four") ;

  فتكون المخرجات كالتالي:
One two three



أما اذا أردنا أن تكون المخرجات على مسافات أفقية متساوية فأننا نستخدم (\t) كالتالي:
 System.out.print ("One\t Two \t Three \t Four") ;

وتكون المخرجات كالتالي:


مثال (3): أكتب برنامج يقوم بجمع العددين (5+16)

ويتم ذلك بكتابة الأرقام المراد جمعها داخل أقواس جملة print ولكن من دون علامتي تنصيص
لأن علامتي التنصيص تكون دائما لطباعة الحروف وحتى اذا تم كتابة ارقام داخل علامتي التنصيص فأنها تعامل معاملة الحروف أي لا يمكن اجراء أي عمليات حسابية عليها .
ويكون شكل عبارة print كالتالي:
System.out.print (5+16) ;
ويكون الناتج (21) .


1-2-5 التعليقات Comment   
إن  أي مبرمج يحتاج في بعض الأحيان إلى إضافة بعض التعليقات والملاحظات الخاصة به و التي لا يتم تنفيذها في البرنامج ولكن فقط تذكره بالغرض من الأوامر التي يقوم بكتابتها .
ويمكن تعريف التعليقات كالآتي :
أنها الأسطر التي يتجاهلها مترجم الجافا، و لكنها تجعل البرنامج أسهل قراءة للمبرمج نفسه. بعبارة أخرى، أنها مجموعة الملاحظات التي يضعها المبرمج في برنامجه لتسهيل قراءته. 

والتعليقات في الجافا هي نفسها التعليقات الموجودة في لغة C++ كما سبق دراسته .

ومن أنواع التعليقات في الجافا  :
1. التعليق بسطر واحد
ويكون هذا السطر مسبوقا بعلامتي (//) كالآتي :

 
    أو يمكن كتابة التعليقات بجانب أسطر البرنامج كما يلي :




2. التعليق بعدة أسطر 

وفي هذه الحالة يمكن كتابة تعليق مكون من عدة أسطر كما يلي:
ويكون التعليق بين علامتي (/*   التعليق  */)







مثال (4 ): أكتب برنامج يقوم بجمع عددين أحدهما صحيح والآخر حقيقي.


 
ويلاحظ في السطر الأخير للبرنامج أنه تم كتابة (+C) .  وذلك لطباعة محتويات المخزن (C) أمام علامة (=) وعند تنفيذ البرنامج سوف تكون المخرجات كالتالي:








التسميات:

الثلاثاء، 1 أغسطس 2017

الكلمات المحجوزة في الجافا reserved words in java




الكلمات المحجوزة في اللغة
public finally abstract
return float boolean
short for break
static if byte
super implements case
switch import catch
synchronized instanceof char
this int class
throw interface continue
throws long default
transient native do
true new double
try null else
void package extends
volatile private false
while protected final

        



حروف وثوابت ورموز الجافا letters constant variable


حروف وثوابت ورموز الجافا  letters constant variable



أولا :حروف لغة الجافا     تتألف حروف لغة الجافا مما يلي :
1. الحروف الأبجدية (Letters) وهي الحروف الكبيرة (Capital Letters) من A إلى Z وكذلك الحروف الصغيرة (Small Letters) من a إلى z.
2. الأرقام العددية (Digits) من 0 إلى 9.
3. الحروف الخاصة (Special Characters) وهي تلك الحروف التي ليست بأعداد أو بحروف أبجدية ولكنها تكون على هيئة رموز كالآتي:  (+,-,/,//,<,>,$,#,%,(),||,!,[],!=,,;,”,…..)
 ثانيا الثوابت والمتغيرات     Constants & variables:
أولا : الثوابت :Constants 
وهى عبارة عن قيم ثابتة يراد الاحتفاظ بها طوال البرنامج ولا تتغير قيمتها أبدًا.
وتنقسم الثوابت في لغة الجافا إلى:-
1- ثوابت عددية Numeric Constants  
2- ثوابت رمزية   Non-numeric Constants
1- الثوابت العددية: 
يمكن تمثيل الثوابت العددية في لغة الجافا كالآتي:-
-الثابت العددي الصحيح : integer الثابت العددي الحقيقي Floating Constant
- هو عبارة عن عدد مكون من الأرقام من (0 إلى 9).
- لا يحتوي على فاصلة عشرية.
- يمكن أن يحوى الإشارة ( + أو - ).
مثال  (0، 12، 1000، -20،..........). 1. هو عدد مكون من الأرقام من ( 0 إلى 9)
2. يجب أن يحتوي على فاصلة عشرية
3. يمكن أن يحوي الإشارة ( +، - )
مثال    (421.5، 10.55، -67.99، ..)
تصنف الأعداد الصحيحة في لغة الجافا حسب طولها والسعة التخزينية لها في الذاكرة كما يلي :-
- الثوابت الصحيحة ( 19679، 40000)               تسمى ثوابت صحيحة طويلة long int.
- الثوابت (-16، 90 ، 55 )                              تسمى ثوابت صحيحة قصيرة short int.
- الثوابت (20000 ، 967 )                  تسمى ثوابت صحيحة بدون إشارة unsigned int.

2- الثوابت الرمزية Non-Numeric: 

 وهى عبارة عن رموز اللغة وتتكون من الحروف والأرقام وتكون بين علامتي تنصيص أو اقتباس.
ومن الأمثلة على الثوابت الرمزية ما يلي:-
"name" - "Khaled" - "12345" - "30+40 "))
وإذا أردنا أن نضع قيمة سوف تظل ثابتة داخل البرنامج في مكان في الذاكرة فأننا نستخدم العبارة final للإعلان أن هذه القيمة ستظل ثابتة طوال تنفيذ البرنامج مثل:



ويجب مراعاة أن اسم الثوابت constants يكون بالأحرف الكبيرة كاملاً و يفصل بين الكلمات كما يتم في المتغيرات مع ملاحظة أن الثوابت يتم تعريفها على أنها final .
 مثال لأسماء الثوابت :
                       EXIT_ON_CLOSE                       
                                 MY_NAME              
                      CLASS_VERSION
                                  MATH_PI
ثانيا : المتغيرات  Variables:
هي عبارة عن أسماء تحجز مواقع في الذاكرة حتى يتمكن البرنامج من تخزين البيانات فيها. 
هي عبارة عن وعاء يمكن تحميله بقيمة وهذا الوعاء يتغير حجمه حسب القيمة التي سوف توضع فيه.
قواعد تسمية المتغيرات:
- يمكن أن يبدأ الاسم بالحرف أو الشرطة السفلية ( _ ) under score أو علامة الدولار ($) ولكن لا يمكن بدء التسمية برقم ولكن يمكن أن نضع رقم بعد الحرف.
- لا يمكن تسمية المتغير بإحدى الكلمات المحجوزة 
للغة الجافا والجدول شكل (1-6 ) يبين هذه الكلمات .
- اسم المتغيرات variables يكون بالأحرف الصغيرة لكل الأحرف ويلاحظ عدم وجود أقواس.

أنواع المتغيرات 
1. – متغيرات أساسية    Primitive Variables        
أ -متغيرات رمزية (حرفية).                                      ب -  متغيرات عددية.
    2 – متغيرات مرجعية Reference Variables    
يجب الإعلان عن المتغير  قبل استخدامه 
كما يجوز تعريف المتغير وتخصيص قيمة له  فى نفس الوقت كالتالي:







أ- المتغيرات الحرفية Char: 
وتتضمن الحروف بكافة أشكالها والرموز والفراغات (مسافة فارغة) مثل:
char a,b;
a= 'a';    char var1;
b=' ';       var1=' ' ;
1. المتغيرات العدديةNumeric Variables :
أ) المتغيرات العددية الصحيحة :Integer
تتضمن قيم عددية صحيحة يمكن أن تأخذ قيمة تصل إلى 32767 وتكتب على الشكل التالي:                                                                                                 int a;     a=100;                         
int value ;  value=2*3;
ب) المتغيرات العددية الحقيقية :Floating Point 
تتضمن جميع الأعداد الحقيقية وتكتب على الشكل التالي:
float x;        x=5.2;
float x= 5.2                                                                                    
وهنا يجب علينا الانتباه لجملة الإعلان والتخصيص السابقة float x= 5.2    , إلا أن الحاسب يعتبره من النوع double أي يحجز له مكان 64 بت 
وللتغلب على المشكلة السابقة يتم الإعلان والتخصيص كالتالي:
                                                                                   float x= 5.2 f                  
أي يتم وضع حرف (f ) بعد الرقم لكي يتم حجز مكان له في الذاكرة مقداره 32 بت وبذلك نكون قد وفرنا في الذاكرة المستخدمة.

ج) المتغيرات العددية الحقيقة الطويلة Double:
هي نفس المتغيرات العددية الحقيقة ولكن يمكن تمثيلها في خمسة عشرة خانة 
وتكتب على الشكل التالي:
double x;  





تطبيقات على قواعد تسمية المتغيرات
أنواع البيانات والمتغيرات في لغة الجافا أحجام البيانات في الذاكرة
  
 العمليات الحسابية والمنطقية في لغة الجافا
1. الجدول شكل(1-9) التالي يبين أهم العمليات الحسابية  في لغة الجافا :








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











التسميات: