دورة c++ المستوى الأول 1 للمبتدئين


دورة c هي محتوى يتضمن كافة الشروحات مع الأمثلة. ستتمكن في هذه الدورة من تعلّم أساسيّات البرمجة وآلية عملها في أجهزة الحاسوب.

كما سيتسنّى لك تطوير مهارات التّحليل في قراءة الشّيفرات البرمجيّة وفقاً لكافة أنواع البرامج التي تعمل على إنشائها. ستحتوي هذه الصفحة على أكثر من 15 درساً مع تطبيق الأمثلة.

تعريف باللغة

لغة البرمجة سي هي واحدة من أهمّ اللّغات متعدّدة الأغراض والاستخدامات. حيث تدعم البرمجة الكائنيّة و الاستدعاء الذاتي للمتغيرات. قام ببنائِها كلاً من Ken Thompson وBrian Kernighan و Dennis Ritchie للعمل على تطوير نواة نظام التشغيل Linux.

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


سوف تتطلب منك دورة سي العديد من الأدوات لكي يتسنّى لك إتمام كافّة الشروحات المُرفقة وأهمُها:

  • جهاز حاسوب او محمول.
  • نظام ويندوز 10 (مُستحسن).
  • بيئة عمل Visual Studio.
  • ملفات اللغة (IDE).

الأمثلة قابلة للتحميل من جوجل درايف وفي حال قررت متابعة القراءة عبر الهاتف , ستتمكن من العثور عليها عبر التّطبيقات المرفقة في الهاتف.


1.جملة الطباعة في لغة سي



توفر مكتبة C القياسية العديد من المزايا وأهمّها تفاعل المستخدم مع وحدات الإدخال والإخراج (IO) في نظام التشغيل. أدوات C ++ القياسية التي تساعدنا في تكوين جملة الطباعة واستخراج المتغيرات لتظهر على شاشة وحدة التحكم الخاصة بك.

جملة الطّباعة

جملة الطباعة هي وظيفة متصلة في مكتبة c ++ القياسية ، وهي واحدة من أسرع وظائف الطباعة مقارنة بغيرها من الدّوال. تتيح لك هذه الوظيفة طباعة ما يلي:

  • نصوص: حيث يتم وضع النص داخل علامتي تنصيص.
  • الأرقام: يمكنك طباعة الأرقام رأساً ودون علامات اقتباس.
  • متغيرات الطباعة: يمكنك طباعة المتغيرات بجميع أنواعها ضمن حدود بيان cout.

مثالٌ عليها

كما هو الحال بالنّسبة لأي عنصر أو صف أو مصفوفة فإن جملة الطباعة في لغة سي ++ تمكّنك من طباعة أي عنصر وإظهار نتائجه على شاشة الحاسب حيث أن عمليات المعالجة تشتمل على طباعة أية مدخلات.

#include<iostream>
using namespace std; 
int main() 
{ 
  char z = 'h'; std::cout << "This is char z : " << z << endl;
  return 0;
}

 


2.معادلات باقي القسمة modulus


تستخدم لغة C ++ معادلات باقي القسمة على نطاقٍ واسع ، خاصةً في خوارزميّات الرياضيّات. بالتالي لا يتم الاستغناء عنها في معالجة الرسومات. وأيضاً ربما تشمل خوارزميات محرّكات البحث لاستثناء بعض النتائج من الظّهور.

وتعتمد النّسبة الباقية أساسًا على التحقّق من قبول قسمة رقم على آخر ، وما هو الفائض أو الباقي من القسمة بين الرقمين.

توفر لك دورة c ++ العديد من الأمثلة والشّروحات حول طريقة التّعامل مع تلك الأنواع من الوظائف. فهي تشتمل على استخراج باقي القسمة من متغيرين.

اشهر استضافات الويب
هوستنجر استضافة هوستنجر التقييم: 3.7/5 مقر الشركة : ليتوانيا
هوست جيتور التقييم: 4/5 مقر الشركة: الولابات المتحدة
هوست ويندز التقييم: 3.5/5 مقر الشركة: الولابات المتحدة

ما هي؟

وعلى فرض أنّنا نريد قسمة عددين صحيحين ، على سبيل المثال: 4 مقسومة على 2 ، فإن فإن الناتج هو 2. ولكن باقي القسمة في هذه الحالة يساوي صفرًا. لأن الرقم 4 هو مضاعف 2 ولا يوجد باقٍ لنقسم عليه.

وإن قمنا بعكس العمليّة بحيث قمنا بقسمة 2 على 4 ، ولأن الرقم 2 غير قابل للقسمة على 4 في الأعداد الصحيحة. فإن باقي القسمة يكون 2 لأن عمليّة القسمة في الاعداد الصّحيحة غير ممكنة.

يتم الإشارة إلى الباقي في لغة C بالرمز٪ . وهو علامة النّسبة المئوية والمعامل في لغة C . والآن سنقوم بإعداد متغيّرين من النّوع الصّحيح ونضع قيمة الباقي داخل متغير آخر من نفس النوع.

يرجى اتباع هذه الخطوات معنا.

نحدد متغيرين ونضع قيمة في كل متغير. وعلى فرض أنّ a = 5 و b = 13 على شكل:

#include<iostream> 
using namespace std;
 int main()
{ 
      int a = 5; int b = 13;
      return 0; 
 }

 

ثم نضيف متغيرًا لحفظ باقي القسمة عند تنفيذها: 

#include<iostream> 
using namespace std;
int main()
{ 
    int a = 5;
    int b = 13;
    int mod = a % b;
    return 0;
}

 

ونستعرض قيمة الباقي بعد وضعه في متغير mod على النحو التالي: 

#include<iostream> 
using namespace std; 
int main()
 { 
    int a = 5;
    int b = 13;
    int mod = a % b;
    std::cout << "a modulus b = " << mod << endl;
    return 0; 
}

 

بعد تنفيذ الكود السابق ، يكون باقي القسمة 5.

مثال باقي القسمة

من فضلك ، لكي تفهم معامل القسمة جيدًا في دورة c ++ ، انسخ الكود التالي إلى المحرر الخاص بك.

#include<iostream> using namespace std;
int main() 
{ 
    int a = 5;
    int b = 13;
    int mod = a % b;
    std::cout << "value of a = " << a << endl;
    std::cout << "value of b = " << b << endl;
    std::cout << "a modulus b = " << mod << endl;
    return 0;
}

 

تهانينا لك بإتمام القسم الثاني من دورة c ++ مع تمنياتنا لك بالتوفيق والنجاح.


3.التعليقات


في C ++ , وعند التعامل مع كود كبير ونشره للمطوّرين. سنحتاج إلى إدراج بعض التّعليقات ضمن مشروعنا من أجل تقديم شروحات تتعلق حول آلية عمل البرنامج.

سيتم شرح التعليقات في دورة تعلم البرمجة لغة c ++ والتي ستتطرق إلى استخدامها كثيرا في وصف وشرح الكود الخاص بك.

أنواعُها

هناك لغاتٍ أخرى تستخدم نفس علامات C ++ أثناء التعليق. وتختلف طريقة التّعليق من لغة إلى أخرى. ويبدو ذلك واضحا في أثناء التعامل مع المحرّرات.

يقوم المترجم بقراءة الكود ، متجاهلاً منطقة التعليق. والتي غالبًا ما يتمّ التّعبير عنها ببعض الإشارات في بادئة ونهاية السّطر. ولأن التعليق يساعدنا في تحليل وفهم المشروع ، سنذكر تلك الحروف التي تحتوي على قلب التعليق هي :

  • علامتي / * تعليق * /: في C ++ ، وهذه أكثر علامات التعليق مشاعًا. والّتي تظهر إما باللون الأخضر أو الأحمر أو الأسود الداكن (الرّمادي).
  • فقط علامة واحدة بجانب التّعليق //: يجب تضمينها في كل حال تواجد أكثر من سطر للتعليق. ويمكنك تمييزها أيضًا باللون الأخضر أو السّكني في أشهر محررات الكود وتظهر باللون الأخضر في بيئة Visual Studio.

خصائِصِها

  • تظهر التعليقات بلونٍ مختلف عن باقي أجزاء الكود.
  • يُمكنك كتابة ما تشاء بداخلها. فهي مخفيّة عن مرور المُفسّرات.

مثالٌ عليها

قم بتطبيق شيفرة التعليقات في محرر الكود الخاص بك.

#include<iostream> using namespace std;
/* welcome to c++ language */ // welcome to c++ language int main() { std::cout <<"Hello World"<< endl; return 0; }

 

توفر لك دورة c++ نوعين من التعليقات التي تم ذكرهما في الشّيفرة السابقة. ولا مصادر أخرى مؤكّدة عن وجود أنواعٍ أخرى مُختلفة.


4.استخدام Postfix و Prefix


توفّر لك دورة c++ امثلة عديدة حول استخدامات Postfix و Prefix. فهي تُمهّد لك طريقاً جيداً لمعرفة أهم الفروقاتِ بين استخدام معاملات اللغة قبل وبعد المتغيرات. وما هي أهمّ التغييرات التي تطرأ عند تشغيل البرنامج.

فهي تتمثّل باستخدام معاملات الزّيادة والنّقصان (++، -) في c ++. ما يعني إمّا قبل المتغيّر أو بعده.

عند استخدام المعاملات ، يجب استخدام المتغيرات الرقمية من النوع int أو float أو double. وتسمّى عملية وضع المعامل قبل المتغير بطريقة Prefix. وأمّا معاملات ما بعد المتغير بطريقة postfix.

هناك العديد من عمليات postfix والبادئة في C ++. حيث أصبح من الصعب بشكل متزايد شرح وتنفيذ بعضها ، بالتّالي سنذكر فقط الطّرق الأكثر استخدامًا في هاتين الميزتين.

Prefix

تعتمد هذه الميزة على الأداء الحسابي والمنطق قبل ظهور النتائج من على شاشة(الكونسول). وذلك لــ عرض القيمة الظاهرة جراء تنفيذ العملية، حيث يقوم المترجم بإحداث التغيير قبل ظهور المتغير على الشّاشة.

#include<iostream> using namespace std;
int main() 
{ int a = 5; 
    --a; 
    cout << a << endl;
    return 0;
}

 

Postfix

تعتمد هذه الميزة على أداء العمليّة الحسابيّة بعد إغلاق شاشة الكونسول. سواء أكانت تتصف بالزّيادة  أو النّقصان. ولكن لا يمكننا رؤية النتيجة بعد عمليّة الإغلاق.

#include<iostream> using namespace std;
int main()
{ 
    int a = 5;
    a--;
    cout << a << endl;
    return 0;
}

 

متى نستخدمها؟

إنّ أغراض استخدام إحدى الطريقتين متعدّدة. ومع ذلك ، فإن التعامل مع Prefix يدلي بنتائج جيّدة في برمجة الرسومات. خاصّةً عند معاينة عمليّات الاستدعاء وأثناء إجراء مُعادلات باقي القسمة.

تُفيد أيضاً في التّعامل مع قواعد البيانات على صفحة الخادم , حيث لا تقتصر على لغة سي فحسب. ربما تحتاج للعمل عليها عند استدعاء النتائج وطباعتها في صفحات HTML.

مثال عليها

بعد أن تكوّنت لديك فكرة جيّدة عن أهمّ الفروقات بين Postfix و Prefix. قم بمعاينة الشيفرة التالي في محرر الكود الخاص بك.

#include<iostream> using namespace std;
int main()
{ 
    int a = 5;
    --a;
    cout <<"This method is prefix : "<< a << endl;
    a--;
    cout << "This method is postfix : " << a << endl;
    int a = 5;
    ++a;
    cout << "This method is prefix : " << a << endl;
    a++;
    cout << "This method is postfix : " << a << endl;
    return 0;
}

 

لقد تعرفت في دورة c ++ أهم استخدامات Postfix و Prefix نرجو منك عزيزي القارئ تطبيق الأمثلة في محرر الكود الخاص بك.


5.الدّوال في دورة سي



الدّوال هي بمثابة كتلةٍ من التّعليمات البرمجية والّتي يتم تنفيذها بمجرد الاتصال بها. حيث أنّ الدوال إحدى الوظائف المهمّة في لغة C ++. والتي توفر استخدامًا وتنسيقاً جيدين للذاكرة.

لقد كانت الفكرةُ من استخدام الدّوال, العمل على تجريد وفصل المتغيّرات المتكرّرة. والتي غالباً ما يصحبُها خياراتٍ محدودة في التسمية. ذلك للحيلولة دون التّداخل في مُسمّياتها بالتالي توقف الشيفرة عن العمل.

خصائِصُها

يجب أن تحتوي الدّوال على خصائص تُظهر وظيفتها بوضوح. وهي تستند إلى:

  • الإعلان: هي طريقة تحديد عنوان الوظيفة وخصائصها مثلا. وخاصية التحميل overloading وطبيعتها. حيثُ غالبًا ما يتم الإعلان عن الوظيفة في الجزء العلوي من Main بهذه الطريقة.
#include<iostream> 
using namespace std;
void test();
int main()
{ 
    return 0;
}

 

  • التعريف: هو الجسم الداخلي للوظيفة ، والذي يحتوي على كتلة الكود بداخله. حيثُ بدوره يحتوي على أشهر عمليّات اللغة والّتي يتم طلبها عند الحاجة.
#include<iostream> using namespace std;
void test();
int main()
{ 
    return 0;
} 
void test()
{
    std::cout << "I am a function !";
}

 

عمليّة الاتصال

تختلف طرق تعريف الدّوال فبعض المبرمجين يبدأ بتعريف الدالة أولاً ثمّ تنفيذها رأساً. أمّا البعض الآخر فإنّه يقوم بالإعلان عنها ومعالجتها في أماكن أخرى وكلا الطريقتين تفِي بالحاجة.

#include<iostream> using namespace std;
void test();
int main()
{ 
    test();
    return 0;
} 
void test()
{ 
    std::cout << "I am a function !";
}

 

في دورة c ++ قمنا باستخدام طريقةً أكثر شموليّةً. لكي يتسنى لك معرفة ماهيّة الدّوال وكيف تعمل في لغات البرمجة.


6.دالة Main



يمكن أن نعتبرها الدّالة الرّئيسية لكلّ لغة. أو أنّها المكان الخاص باستدعاء كلّ ما تمّ إنشاؤه في المشروع(البرنامج). وفي الواقع يصعب العثور على دالّة main في المشاريع الكبيرة. ولكن عندما تصبّ بكامل اهتمامك في قراءة الشّيفرة، يُمكنك معرفة مكانها جيدًا وتمييزها عن بقيّة الدّوال.

استخداماتها

في الواقع ، هذه الدّالة بمثابة ملتقىً لتنفيذ البرنامج. حيث لا يمكن تشغيل الشّيفرة دون المرور بالدالة main. بالإضافة وحتى أنظمة التشغيل في لغات الحاسب تعمل في غُضونها.

لا يمكن تكرار دالة main عند تعريفها أكثر من مرة في البرنامج. بل يتمّ وضعها ولمرة واحدة فقط داخل المشروع. حينئذٍ سيُدرك المترجم ذلك تلقائيًا وبأنّ القراءة الكاملة للشّيفرة وتنفيذها سيتمّ عبرها.

يتسنّى لك استدعاء كل ما قمت بكتابته في صفحاتك عبر دالّة main وعن طريق:

  • الاتصال بدوالٍ أخرى.
  • بالكائنات أو الفئات (Classes , Structures).

مثال عليها

#include<iostream> 
using namespace std;
int main() 
{ 
    std::cout << "This is returned function main";
    return 0;
}

 

لقد تم ذكر نوع واحد من دالة main في دورة c ++. وبالرّغم من أنّك تستطيع استخدام بديلاً آخر من نوع void.


7.المتغيرات الثابتة



في c++ وعند التعامل مع المتغيّرات الثابتة. فإن المتغيّر يحافظ على القيم المخزّنة بداخله طوال عمر البرنامج. وعادةً ما يتم الإشارة إليه بكلمة static.

على سبيل المثال ، نقوم بإنشاء متغير من النوع static int val = 0. وهذه العلامة تُشير إلى أنّه محجوز في ذاكرةٍ خاصة للمتغيرات الثابتة. دون الرجوع أو التبديل إلى قيمة أخرى، وهذا ما يميّزه عن سائر الأنواع الأخرى.

كيفية الاتصال به

قد تختلف لغات البرمجة في طرق الوصول إلى المتغيرات الثابتة من داخل الكائن. ولكن في C ++. يتم الوصول إلى المتغير الثابت عن طريق تضمين اسم الكائن (الفئة) ووضع علامتين: النقاط الرأسية. حينئذٍ سيظهر لك تلقائيًا.

على سبيل المثال ، سنعرض لك رمزًا لعدّادٍ داخل الكائن ونجعل قيمته تزداد تلقائيًا عند ولادة أي كائن من نفس الفئة. قم بإلغاء الثابت من المتغير ولاحظ الفرق.

مثالٌ عليها

#include<iostream> 
using namespace std;
 class mut 
 { 
 private: static int count; int k;
 public: mut() { count++; k = count; } 
         int getcount() { return k; } 
 }; int mut::count = 0;
 int main()
 { 
     mut s1, s2, s3; cout << "Count is : " << s1.getcount() << endl; cout << "Count Is : " << s2.getcount() << endl; cout << "Count is : " << s3.getcount() << endl;
     return 0;
 }

 

سيتم شرح المتغيرات الثابتة بشكل مخصّص في مستوياتٍ متقدمة من اللغة. حيث سيتسنّى لنا استخدامها في مشاريعٍ كبيرة.


8.أنواع المتغيرات


توفّر لك دورة سي العديد من المتغيّرات والتي بدورها الأكثر استخداماً في جميع لغات البرمجة. فمنها ما هو أعداد صحيحة. أو أعداد عشرية أو أحرف أو غيرها.

أشكالُها

هناك أنواع عدّة من المتغيرات في لغات البرمجة. لكنها تشترك في نفس الخصائص مع فروقاتٍ بسيطة في التّسمية. و في لغة ++ C ، الأنواع الرئيسية للمتغيرات هي:

  • الأعداد الصحيحة int: الأعداد الصحيحة بدون كسور عشرية بقيمة 4 بايت في الذاكرة.
  • مزدوج Double: أعدادًا كبيرة تحتوي على كسور عشرية. مع حجز قيمة في الذاكرة تصل حتى 8 بايت.
  • الأحرف char: أحرفًا منفردة وحجمها في الذاكرة 1 بايت لكلّ حرف.
  • النصوص String: النص بداخله وحجمه في الذاكرة 1 بايت / حرف.
  • منطقي/ بوليان Boolean: يحتوي على قيمة. فهي إمّا صحيحة أو خاطئة وحجمها في الذاكرة 1 بايت.

استخداماتها

استخدامات المتغيرات متعدّدة ، وهي الحافظة الرئيسية لجميع قيم مشغل البرنامج. بالإضافة أنه لا يمكن التخلي عنها. كما أنّها تعد من مكونات البرمجة بذاتها ، وهي مؤثر قوي على الدوال والصفوف وأيضاً الحلقات recursion.

مثالٌ عليها

بعدما تعرّفت على أنواع المتغيرات في دورة c ++. قم بالتمعّن في الشيفرة التاليّة ومن ثم نسخها في محرر الكود الخاص بك.

int main()
{ 
    int a = 0;
    char b = 'h';
    bool c = false;
    double d = 1.4;
    float e = 1.5555;
    std::cout << "This is int : " << a << endl;
    std::cout << "This is char : " << b << endl;
    std::cout << "This is bool : " << c << endl;
    std::cout << "This is double : " << d << endl;
    std::cout << "This is float : " << e << endl;
    return 0; 
}

 


9.الدالة الباطلة void


هي دالة شاذة لا تمكنها خصائصها من إرجاع قيمة ما ولا يتم إسنادها لمتغيرات. فهي تعالج القيم بداخلها. من أشهر تسمياتها الدّالة باطلة أو void.

استخداماتُها

لها أوجه استخداماتٍ عدّة في اللّغة. حيث أنها تؤثر على القيم المحدّدة في الشيفرة, كما تعمل على إدارة الذاكرة بشكلٍ جيد في حال تعذّر الحاجة لجلبِ القيم.

على سبيل المثال ، عند تعريف متغير من النوع int وإدراجه في دوال من نوع void. فإنه يخضع لتأثيرها في قيمته وتنتهي من المعالجة دون إرجاع أي عنصر للمترجم. وفي نهاية المطاف لا يحتاج هذا النوع من الدوال إلى تعريف متغير جديد.

مثالٌ عليها

/* static variable with Class */
#include<iostream>
using namespace std;
int val = 5;
void var() 
{ 
    val = 10;
}
int main()
{ 
    var();
    std::cout << "Your Value is : " << val << endl;
    return 0;
}

 


10.الدالة recursion


يصحّ تسميتها أيضا بدوال Retro. وهي تشير إلى أغراض استخدام في غاية الأهمّية للغة C. حيث يمكنك إرجاع قيمة ما تمّت معالجتها داخل الدّالة ومن ثمّ تمريرها إلى متغيّر آخر ، وبناءً عليه يتمّ الإجراء.

الصيغةُ العامة

لا تختلف كثيرًا عن شاكلة الدّوال من نوع void ، إلاّ أن أهمّ الفروقات الناجمة عنها هي بذاتها إحدى خصائصها. والقيمة المُرجعة غالباً ما تكون من نوعها.

  • int. إرجاع قيمة من نوع integer.
int var() { int var = 5; return var; }

 

  • Float. إرجاع قيمة من نوع  Float.
float var() { float var = 5; return var; }

 

  • String. إرجاع قيمة من نوع string.
string var() { string var = "test"; return var; }

 

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

وأنواع دوال الإرجاع حسب متغيرات C القياسية:

  • int.
  • Float.
  • String.
  • دالة من نفس نوع التعريف.

مثالٌ عليها

هناك العديد من الأمثلة على الدّوال الرجعيّة(recursion). وفي دورة c ++ المستوى الأول سنحاول تبسيط المسألة قَدر المُستطاع وفي مثالٍ واحد.

#include<iostream>
using namespace std;
int var() 
{
    int var = 10;
    return var;
} 
int main()
{
    int receive= var();
    std::cout<< "Your Value is : " << receive<< endl;
    return 0;
}

 


11.استخدامات Strings



متغيّر String وهو مصفوفةٌ من الأحرف في الذاكرة. حيث أنّها فئة مشتقّة من مساحة الاسم std. وكل حرف داخل سلسلة يحتوي على 8 بت.

الفرق بين String و Char

الحرف char هو أصغر وحدة تتشكّل في الذّاكرة من الأحرف الأساسيّة. حيث تعتمد زيادة حجم الذّاكرة في متغير char على تحديد مساحةٍ من القيم قابلة للزيادة تلقائياً.

في لغة سي القياسيّة تم إضافة namespace يحتوي على مكتبة Strings. حيث كان المبرمجين يعتمدون قبل ذلك على إنشاء مصفوفة Static من الأحرف char. وغالباً ما يتم الإشارة إليها بمساحاتٍ محدودة.

في دورة c ++ سنتعرف على أنواع وصيغ مختلفة من استخدامات String.

أنواع string

هناك أكثر من طريقة في الإشارة الى متغير string، بما في ذلك:

  • string s1 (“Man”): ضع القيمة النصية بين قوسين.
  • “string s2 =” World: حدد المتغير وضع النّص بين الاقتباسات.
  • string s3: تحدّد المتغيّر من ثم إضافة النّص في وقت لاحق.

مثالٌ عليها

في حوزتنا مثال يوضح لك ماهيّة النصوص وكيفية استخدامها. في دورة c ++ المستوى 1. لن يتسنّى لنا الإشارة بكافة صيغ التّعريف. حيث سنتولّى ذكر أهمّها في تعريف النصوص.

#include<iostream>
#include<string> 
using namespace std;
int main()
{ 
    string s1("Man");
    string s2 = " World";
    string s3; s3 = s1;
    cout << "s3 = " << s3 << endl;
    s3 = "neither " + s1 + " nor";
    s3 += s2;
    cout << " s3 = " << s3 << endl;
    s1.swap(s2);
    cout << s1 << " nor " << s2 << endl;
    return 0;
}

 

تهانيناً لك بإتمام الدرس الحادي عشر من لغة c ++.


12.الأحرف Char



يتم الإشارة إليه بالتّعريف char بلغة C ++. وهي مساحة محجوزة مخصّصة ويمكن استخدامها كثيرًا. كما أن فئة string القياسيّة تم بناؤها في متغيّرات الحروف.

دالة Setw

دالة Setw قادرة على اختيار جملة محددة من بين النصوص. ستختار هذه الوظيفة أول جملة مطبوعة. لكن طول الكلمة لا يتجاوز 20 حرفًا.

عند تحديد أي متغيّر من نوع char ،  ننصحك بطرح الطول الإجمالي للحرف من قيمة كافية في الذاكرة. لتفادي تجاوز سعة الذاكرة التي قمت بتحديدها.

مثال على char

لفهمِ متغيرات char في دورة c ++ ، انسخ الكود التالي في محرر الكود الخاص بك.

include<iostream>
#include<iomanip> 
using namespace std;
int main() 
{
    const int max = 20; 
    char str[max - 1]; 
    //because null value of character 
    cout << "Enter An String "; cin >> setw(max) >> str; cout << "You Entered n" << str;
    return 0;
}

 


13.الإدخال في C++


ليس شائعاً بكثرة في أساسيات تعلم اللغة نظراً لقلة استخدامه أثناء ربط مكتبات الأطراف الثالثة. لكن نعتبره أساساً في تحليلِ البيانات. خاصّة عند بناءِ شيفرة في لغة C القياسية.

في دورة c ++.سنقدم لك الشّروحات حول طريقة استخدام وحدة الإدخال.

الجمل في C ++ سهلة التنفيذ وغير مزعجة. في الماضي ، كان استخدام لغة C ++ متطلباً في إدخال البيانات قبل تصميم واجهات رسومية. بالإضافة الى  الحاجة لاستخدام جمل الإدخال المختلفة وربطها في قواعد البيانات ليتم جلب البيانات عند الحاجة.

أوامر الإدخال C++

هو بطبيعته أمرٌ برمجي يسمح لـ C ++ بقراءة معلومات الإدخال. حيث إما عرضها على الشّاشة أو الاحتفاظ بها في الذاكرة المؤقتة.

مثال

انسخ هذه الشيفرة في المحرر الخاص بك. لترى كيف تعمل وحدة الإدخال من مكتبة C++ القياسية.

#include<iostream> 
using namespace std;
int main()
{ 
    const int size = 30;
    char str[size]; cout << "Enter An String : ";
    cin >> str; cout << "You Entered : n" << str;
    return 0; 
}

 


14.المعاملات في لغة c++


في دورة c ++. سنُدلي بأهم عناصر الاستخدام وهي المعاملات.

المعاملات من أساسيات لغات البرمجة. حيث تدل على استخدام علامات الجمع والطرح والقسمة والضرب (+ ، – ، / ، *). أو أكبر من وأقل من (<،>). بالتالي غيرها من العوامل التي سيتم التطّرق لها فيما بعد.

استخداماتُها

يمكن استخدام المعاملات في C ++ لأداء العمليات الحسابية والمنطقية في المعالجة. مما تؤدي غالبًا إلى نتائج وفروقاتٍ في شاشة الكونسول.

أنواعُها

تتوفر المعاملات في لغة C ، على شكل:

  • المعقوفة (): والتي تحتوي على قيمٍ داخلها. مثال
#include<iostream> 
using namespace std; 
int main() 
{ 
    bool c = true; 
    if (c) { 
        cout << "True" << endl;
    }
    return 0;
}

 

  • من نوع []: تستخدمها بشكل واسع في المصفوفات وتسميات العناصر.
#include<iostream> 
using namespace std;
int main()
{ 
    int arr[10];
    return 0;
}

 

  • المؤشر <-: نستخدمها في الإشارة إلى المتغيرات وعناوينها.
struct foo 
{ int x; float y; };
int main() 
{
    struct foo var;
    struct foo* values;
    var.x = 5; (& var)->y = 14.3;
    values->y = 22.4; (*values).x = 6;
    return 0;
}

 

  • + أو –: في C ++ تعني الزّيادة أو النّقصان.
int main() 
{
    int a = 5;
    a++; 
    cout << a << endl;
    a--; cout << a << endl;
    return 0; 
}

 

  • ++ أو —: وهي الزيادة الذاتية لقيمة المتغير. أو على العكس.
#include<iostream> using namespace std;
int main()
{ 
    int a = 5; --a;
    cout <<"This method is prefix : "<< a << endl;
    return 0;
}

 

  • * النجمة: نظرًا لاستخدامها في عمليّات الضرب. إلا أن لها دواع استخدام أخرى أيضاً.
#include<iostream> 
using namespace std;
int main() 
{ 
    int a = 5;
    std::cout << "This is value of a : " << a << endl;
    std::cout << "This is address of a : " << &a << endl;
    int *pointer = &a;
    ++*pointer;
    // use of * Asterisk
    std::cout <<"This value of a after affected by pointer : "<< a<< endl;
    return 0;
}

 

  • تشير علامة && الى عناوين المتغيرات في الذاكرة.
#include<iostream>
using namespace std; 
int main()
{ 
    int a = 5;
    std::cout << "This is value of a : " << a << endl;
    std::cout << "This is address of a : " << &a << endl;
    int *pointer = &a;
    //use of Address
    ++*pointer;
    std::cout <<"This value of a after affected by pointer : "<< a<< endl;
    return 0;
}

 

  • * ، / ، رموز النّسبة المئوية: القسمة / والضرب * والنسبة المئوية٪.
#include<iostream> 
using namespace std;
int main()
{ 
    int x = 15;
    int y = 7;
    int multi = x * y;
    int divide = x / y;
    int mod = y % x;
    std::cout << "x multi y = " << multi << endl;
    std::cout << "x divide y = " << divide << endl;
    std::cout << "y modulus x = " << mod << endl;
    return 0; 
}

 

  • <<، >> رموز Bitwise: نستخدمها كثيرًا في جمل الطباعة وجمل الإدخال. ولها استخدامات أخرى متقدّمة.
std::cout << "This is int a : " << 20 << endl;
 std::cout << "This is int a : " << a << endl;
 std::cout << "This is char z : " << z << endl;

 

  • <، <= العلامات: للتمييز بين أكبر من> أو أصغر من <أو أكبر من أو يساوي <= أو أقل من أو يساوي> =.
if (x <= y) { std::cout << "Hello World"; }

 

  • الإشارات == ، ! =: هي علامات داخل الجمل الشرطيّة ، تساوي == أو لا تساوي! =.
if (x == y && x != z) { std::cout << "Hello World"; }

 

وهناك أيضا الكثير من المعاملات التي تعذّر لنا جلبها في هذه الوحدة. لكن المعاملات الرئيسية تتمثّل في إشارات الجمع والطرح والضرب والقسمة , وعلامة يساوي.


15.الحلقات التكرارية For Loop


موضوع for loops مزعج قليلًا للمبتدئين ، لذلك نطلب منك التركيز جيداً. و سنحاول تبسيط المسألة قدر المستطاع.

For loop هي بالأصل دالة تبدأ بالكلمة for والشرط والتنفيذ داخل الأقواس. والحلقة for هي عصبٌ مهمّ لــ لغة البرمجة C ++ ولغات البرمجة الأخرى. فهي بمثابة حاسبة تعمل بتوالي الأرقام جمعاً أو طرحاً أو الإثنين معاً(في مراحل متقدمة).

فوائدُها

على سبيل المثال , وفي حال أنّك تريد البحث في مصفوفة تحتوي على 8 عناصر. فسيكون ذلك على النحو التالي:

#include <string>
#include <iostream>
int main()
{ 
    using std::string;
    string str[8] = { "Welcome" , "To" , "C++" , "Hello" , "World" , "Free" , "circle" , "online"}; 
}

 

وإن كنت تريد طباعة العناصر على شاشة (الكونسول). فإنّك ستقوم بطباعة عناصر المصفوفة واحدًا تلو الآخر ، بحيث يبدو ذلك كما يلي:

#include <string>
#include <iostream>
int main()
{
    using std::string;
    string str[8] = { "Welcome" , "To" , "C++" , "Hello" , "World" , "Free" , "circle" , "online"};
    std::cout << str[0] << std::endl;
    std::cout << str[1] << std::endl;
    std::cout << str[2] << std::endl;
    std::cout << str[3] << std::endl;
    std::cout << str[4] << std::endl;
    std::cout << str[5] << std::endl;
    std::cout << str[6] << std::endl;
    std::cout << str[7] << std::endl;
    return 0;
}

 

ما يصح لنا تسمية العمليّة بــ HardCoding. فهي تتعاملُ مع عددٍ من البيانات يدويًا. وهذه المسألة بالتالي قد تُجدي نفعًا في عنصرًا أو عنصرين لكنها مُرهقة للغاية إن كنت تريد طباعة 200 عنصر.

على سبيل المثال ،لن يكن الأمر مرهقًا على مستوى الطباعةِ فحسب، ولكن أيضًا في جلب البيانات ومعالجتها. بالرغم من ذلك , جاءَت دالًة for loop لتكن بذلك الحل الأمثل للتجوّل فيما بين العناصر كافةً.

آليّةُ عملِها

مكونات دالة for loop هي:

  • القوسين (): يتم إرفاق قوسين داخل الأقواس متغيّر يعمل بمثابة ساعةٍ للعدّ.
  • الأقواس المجعدة {}: لمعالجة القيم الموجودة بداخلها.

التطبيق

سنعمل  خطوة بخطوة في كتابة الكود أولاً:

سنقوم بإضافة مصفوفة مكونة من عناصر عدّة.

#include <string>
#include <iostream> 
int main()
{ 
    using std::string;
    string str[8] = { "Welcome" , "To" , "C++" , "Hello" , "World" , "Free" , "circle" , "online"}; 
    for (int i = 0; i < 8; i++)
    {
    } 
    return 0; 
}

 

المتغير i هو العداد للحلقة التكرارية ، ويجب ألاّ ننسى وضع الفاصلة المنقوطة في C بالطريقة المبينة في الشيفرة.

على سبيل المثال, تخيّل أن هنالك قلم يكتب في حلقة for. وفي كل دورة يضبط من قيمة ساعة العد ومن ثمّ يعمل على زيادتها.

بعد ذلك يدخل في جسم الحلقة for. و بالتالي يعود مرة أخرى للأعلى. ثمّ يضبط قيم العداد من جديد ، وهكذا دواليك.

في الواقع ، القلم هو المترجم ، الذي يستمرّ في الدوران داخل الحلقة التكرارية حين تنتهي. ثم ينتقل إلى مهامٍ أخرى أو ينهي البرنامج.

هذا هو إيقاع البرمجة. إن أتقنتها في فهم الحلقات التكرارية ، وستفهم الكثير لاحقًا.

قم بنسخ شيفرة حلقة for:

#include <string>
#include <iostream>
int main()
{ 
    using std::string; 
    string str[8] = { "Welcome" , "To" , "C++" , "Hello" , "World" , "Free" , "circle" , "online"};
    for (int i = 0; i < 8; i++) 
    { 
        std::cout << str[i] << " ";
    } 
    std::cout << "n";
    system("PAUSE");
    return 0;
}

 

من أجل تعزيز أهميّة الحلقة for. يجب أن ندرك أن المصفوفات لها عناوين وعناصر في الذاكرة. وكل عنوان في مكان مختلف في الذاكرة.

على سبيل المثال ، إذا أردنا الوصول إلى عنصر str [ 3]. التي تحتوي على القيمة “Hello” ، في عداد الحلقة التكرارية. فكل ما علينا فعله هو استخدام جملة الطباعة ليظهر العنصر على الشاشة.


16.الجملُ الشرطية


يمكن تسميتها أيضا بالبوّابات المنطقيّة في لغاتِ البرمجة. حيث أنّها تحتوي على شرطٍ يحتمل الصّواب أو الخطأ. بالإضافة إلى أن استخداماتها عديدة ومتنوعة داخل الشّيفرة. فهي بمثابةِ نقطة الالتقاء والّتي من خلالها يدوّن المبرمج خياراته المُتاحة للعتاد.

التعريف

تتكون الجملة الشرطيّة من صيغة عامّة . حيث تدلّ على خصائصها وهي: 

  • if (الشرط): يبدأ بكلمة if ، وعادة ما يحتوي الشرط على نفي أو إثبات للقيمة.
  • {} الأقواس : الأقواس المُجعّدة باعتبارها دالّة قياسيّة في اللغة.
if (x) { //do something }

 

فوائد استخدامُها

الجمل الشرطيّة لها فوائد للمبرمج و للمشروع ، ومن أهمّها:

  •  حصر الخيارات في قيمٍ يعملُ على تخصيصها المبرمج للعتاد.
  • استيعاب أعداداً لامحدودة من الاحتمالات. وإغلاق الوظيفة في حال استيفاء الشرط.

مثالٌ عليها

في دورة c++ نقدّم جملة شرطيّة قصيرة.

#include <string>
#include <iostream>
int main() 
{ 
    using std::string; 
    string str[8] = { "Welcome" , "To" , "C++" , "Hello" , "World" , "Free" , "circle" , "online"};
    for (int i = 0; i < 8; i++)
    { 
        if (str[i] == "Hello") 
            //if statement 
        { std::cout << str[i] << " "; } } std::cout << "n";
    system("PAUSE");
    return 0;
}

 

من فضلك قم بتطبيق الشيفرة في محرر الكود الخاص بك.


17.المصفوفات


المصفوفة، هي حيّز من المساحة يتم تخصيصه في الذاكرة ، حيث يتكون من متغيّر يحتوي على قيمٍ عدة من العناصر.

أسْبابُ استخدامها

يعود استخدام المصفوفات لحاجة من المبرمجين في تنظيم وتنسيق العناصر في الذاكرة. فهي تعود عليهم بالفائدة في حال كان هناك أعداداً كبيرة من العناصر يصعب التّعامل معها.

على سبيل المثال ، عند تحديد 3 متغيرات ، int a = 5 ، int b = 1 ، int c = 6 ، سيتطلب ذلك منك المرور بكافة العناصر وكأنك قمت بدورٍ حسابي عوضاً عن الحاسوب.

وهذا من شأنه ضعف وهشاشة الشيفرة البرمجيّة. لذلك كان لا بد لك من بناء مصفوفة وتعبئة البيانات اللازمة. دون أدنى اكتراث لأماكن وجودها في الذاكرة.

قيمُها

تختلف طريقة طباعة أو قراءة المصفوفة. عن الطرق التقليدية لتعريف المتغيرات وقراءتها.

على سبيل المثال ، وعند طباعة متغير من النوع int a = 6. نسمي هذا المتغير باسم فريد من نوعه داخل المحرر.

لكن عند طباعة المتغيرات داخل المصفوفة أعلاه. نقوم بعمل حلقة تكرارية للمرور بكافة العناصر فيها وجلب البيانات اللاّزمة منها دون معرفة تفاصيلها في الذاكرة.

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

مثالٌ عليها

في دورة c ++ المستوى الأول سنتطرق إلى تضمين مثالٍ واحد حول المصفوفات.

#include<iostream>
using namespace std;
int main()
{
    int a[4]; 
    cout << "Please Enter Values : n";
    for (int i = 0; i <= 3; i++) 
    { 
        cin >> a[i]; 
    } 
    cout << "We Have Finished Fill Array";
    for (int i = 0; i < 4; i++)
    {
        cout << "Inserted " << a[i] << endl;
    } 
    return 0; }

 


18.الصفوف في لغة C++


قد تحتاج أحيانًا إلى كتابة الفئات أو الكائنات على صفحة واحدة. من ثمّ تنفيذها مع دوالها خارجياً وعند الحاجة. هل هذا ممكن؟.

نعم هذا ممكن. تتمثل إحدى خصائص الوظائف أو الدوال في أنه يمكن تنفيذها في طريقة الإعلان والتعريف. في هذا الدرس ، سنضع رمزًا للفئات الموجودة لدينا في مكان ما. ثم ننفّذ الوظائف خارج حدود الكائن وذلك عن طريق الاتصال المباشر به.

أسباب استخدامُها

في بعض الأحيان تتطلب منا الشيفرة بعض التنظيم ، وحلول البرمجة متعددة آنذاك. ونحن الآن أمام لغة تتيح لنا العديد من الحلول.

لذلك كان من السهل على المبرمجين جعل الصفوف في صفحات أخرى من لغة سي. ومن ثم استدعائها وتنفيذها في مكان آخر.

الآن, سنتعلّم سويّاً إنشاء Class ووضع بعض الدوال والمتغيرات بداخله. ومن ثم نقم باستدعائه في صفحة MAIN الخاصة بلغة C++.

طريقة انشاء Class

سنقوم بعمل Class بمتغيرين ومتغير ثالث يقوم باستقبال النتيجة. بالتالي نعمل على تنفيذها في دالّتين داخل الــ Class.

class calculate

{

private: 

int x = 10;

int y = 15; 

int res;

public: 

    void process(); 

    int getResult();

};

 

لاحظ أننا صنعنا Class هنا وقمنا بتسميته calculate. وأعطيناه قيمًا داخلية للمتغيرات x و y. وسيعيد المتغير res القيمة جراء جمع المتغيرين بدالّة.

تستطيع عمل Declaration(تعيين) اسم الدالة بداخل Class. ومن ثم تقوم بالاتصال بها من الخارج. شريطة القيام بتعريف اسم Class التي أتت الدالة منه.

اشهر استضافات الويب
هوستنجر استضافة هوستنجر التقييم: 3.7/5 مقر الشركة : ليتوانيا
هوست جيتور التقييم: 4/5 مقر الشركة: الولابات المتحدة
هوست ويندز التقييم: 3.5/5 مقر الشركة: الولابات المتحدة

الاتصال في الدالة من الخارج

في دورتنا هذه (دورة c ++). نريد استخدام طريقة أخرى. ولتكن الاتصال من خارج Class. وإجراء بعض العمليّات الحسابية بنفس متغيراته.

void calculate::process() { res = x + y; } 

int calculate::getResult() { return res; }

 

لاحظ أننّا قمنا باستدعاء دوال Class السابق. ومنها دالة الحساب process. والتي جمعنا فيها قيمة x و y ووضعناها في متغير يسمى res.  والذي سيتم تطبيقه في دالة رجعية getResult.

إضافة كائن في دالة main

ننتقل الآن إلى المرحلة الأخيرة ، وهي الاتصال بالكائن الذي قمنا بإنشائه . بالتالي يصبح الكود الرئيسي كما يلي:

int main()

{

    calculate test;

    test.process();

    int val = test.getResult();

    std::cout << “The Result Is : ” << val << endl;

    return 0;

}

 

في السطر الأول ، حددنا الكائن ، وهو من نوع Calculate (الكلاس الذي قمنا ببنائه سابقًا). ثم أطلقنا عليه اسم test، وأطلقنا عليه اسم دالة process.

وبما أن وظيفة get Result هي دالة إرجاع قيمة. فقد تلقّينا قيمتها داخل متغير حدّدناه في الأساسي. وهو نوع val من نوع الدّالة تمامًا. بحيث تظهر قيمة المتغير في شاشة الكونسول.

لقد حاولنا قدر المستطاع تبسيط الشروحات حول الصفوف في دورة c++ مستوى المبتدئين. كما أن للصّفوف استخداماتٍ واسعة في لغة سي. وفي وجودها ستتمكن من عزل الكثير من القُمامة البرمجية.


19.المؤشرات(Pointers)


المؤشرات من أهم خصائص لغة C ++. فهي تحمل بداخلها أهم عنصر من المتغيرات وهو العناوين. حيث تتحكم في عمليات الذاكرة بشكل واسع وغير محدود. وهذا ما يميز C ++ عن لغات أخرى تفتقر إلى هذه الميزة.

تعريف المؤشرات

تؤدي المؤشرات دورها بشكل مثالي. حيث إنها قادرة على الوصول إلى عناوين المتغيرات الأخرى والتحكم في موضعها في الذاكرة. ويتم تحديد المؤشرات بواسطة هذا النحو الخاص int * p = & x.

لتفادي تعقيد المسألة . إذا نظرنا إلى المتغير عند تعريفه. فسنجد أنه مكون من:

  • & العنوان المرجعي: عنوان فريد في الذاكرة متبوع برموز معينة. ولا يمكن لأي متغير آخر الحصول على ترتيبه في الذاكرة.
  • القيمة: هي القيمة التي نراها عند تعريف المتغير, على سبيل المثال. يمكننا القول أن لدينا متغيرًا int x = 10 والمؤشرات تلعب نفس الدور تقريبا في ذلك الأمر.
  • عدد صحيح وله قيمة مساوية لـ 10 ، لكن له عنوانًا مخصصًا في الذاكرة. حيث يمكننا الوصول إليه من خلال تضمين a & قبل المتغير ويسمى مرجعًا.

بعد أن قمنا بشرح بسيط شكل المتغيرات في الذاكرة ومكوناتها. سنقوم بتوضيح المؤشرات بمثال عملي بسيط يتناسب مع المستوى المطروح في دورة c ++. فلا تكترث من صعوبة الخطوات السابقة.

جلب العناوين

سنقدم مثالاً لجلب عنوان المتغير الذي حددناه مسبقاً في الذاكرة:

نحدد متغير عدد صحيح .

#include<iostream> 
using namespace std;
int main()
{ 
    int a = 5;
    return 0;
}

 

نقوم بطباعة قيمة المتغير متبوعة بعنوان محجوز في الذاكرة. بحيث يبدو الرمز كما في المثال:

#include<iostream>
using namespace std; 
int main() 
{ 
    int a = 5; 
    std::cout << "This is value of a : " << a << endl; 
    std::cout << "This is address of a : " << &a << endl; 
    return 0; 
}

 

قم بمعاينة وتشغيل هذا الرمز لإظهار نتيجة الكونسول كما يلي:

في حال انتابتك بعض الصعوبات في هذا المستوى ، يرجى قراءة الدرس مرة أخرى. ومن ثمّ تطبيق جميع الأمثلة في محرر الكود الخاص بك.

المتغيرات المؤثرة

من أهم خصائص ووظائف المؤشرات أنها يمكن لها التأثير في قيم المتغيرات الأخرى. على سبيل المثال. الآن سنقوم بتعريف المؤشر الأول في الذاكرة وربطه بعنوان المتغير a الذي حددناه سابقًا.

نحدد المؤشر ونسميه Pointer* وهو أيضًا من نوع الأعداد الصحيحة. ومن المهم تحديد مؤشرات نوع المتغير.

#include<iostream> 
using namespace std;
int main()
{ 
    int a = 5; 
    std::cout << "This is value of a : " << a << endl;
    std::cout << "This is address of a : " << &a << endl;
    int *pointer = &a;
    return 0;
}

 

نلاحظ هنا أن المؤشر يجب أن يأخذ عنوان المتغير أثناء التعريف. فمن غير المقبول من قبل المترجم تحديد المؤشر ثم ربطه لاحقًا في عنوان المتغير.

نقوم بزيادة قيمة المتغير a بالمؤشر باستخدام طريقة البادئة. بحيث يصبح شكل الكود كما في المثال.

#include<iostream>
using namespace std;
int main()
{ 
    int a = 5;
    std::cout << "This is value of a : " << a << endl;
    std::cout << "This is address of a : " << &a << endl;
    int *pointer = &a;
    ++*pointer;
    //This is pointer and we increased a value through it using prefix method
    return 0; 
}

 

في الخطوة الأخيرة ، سنطبع قيمة المتغير a لنرى تأثير المؤشر.

مثالٌ عليها

من فضلك ، لفهم المؤشرات جيدًا في دورة c ++. انسخ الرموز التالية في محرر التعليمات البرمجية الخاص بك.

#include<iostream>
using namespace std;
int main()
{
    int a = 5;
    std::cout << "This is value of a : " << a << endl;
    std::cout << "This is address of a : " << &a << endl;
    int *pointer = &a; ++*pointer;
    std::cout <<"This value of a after affected by pointer : "<< a<< endl;
    return 0;
}

 

عزيزي القارئ , في حال وجدت أن درس المؤشرات في دورة c++ ينتابه بعض الصعوبات . ننصحك بالتركيز على الدروس السابقة وركن المؤشرات إلى حين الحاجة إليه.

بعد أن أنهيت دورة c++ المستوى الأول ,بالتالي ستكون قادرا على تنفيذ بعض البرامج والتمييز بين أنواع المتغيرات والصفوف والدوال.

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

الخلاصة

  • تحتاج لغة C++ وقتا ليس بالقصير لفَهم الأَساسِيات بالتالي كتابة الكود بطريقة صحيحة.
  • ينصح بالممارسة يوميُا في المراحل الأولى من تعليمِ اللغة(نصائح حول لغة سي).
  • دورة c++ المستوى الأول ستمكنك من الانطلاق لمستويات عُليا في البرمجة.

تهانينا لك بإتمام دورة c++ والبدء بالتقنية من الأساسيات, مع أطيب تمنياتي لك بالنجاح والتوفيق.

محمد مطاوع
مبرمج وخبير في خوادم الويب

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *