1- الخطأ اللغوي:
وهو عدم مراعاه القةاعد المتعارف عليها في كتابة جملة بلغة c++، حيث أنه هناك قواعد لكتابة كل جملة من جمل اللغة وفي حالة عدم مراعاه تلك القواعد فإن ذلك يتسبب في حدوث خطأ لغوي، فإذا كان الشكل العام لكتابة جملة الإدخال cin مثلاً بطريقة صحيحة هو:
فإن مخالفة أي جزئية في الشكل العام السابق لكتابة جملة الإدخال cin هو بمثابة خطأ لغوي والجدول الآتي يوضح بعض الأخطاء اللغوية في بعض الجمل:

2- الخطأ المنطقي:
وهو أن يعطي البرنامج نتيجة خاطئة، فمثلا إذا كنت تريد قسمة العدد 20 على العدد 2 وتخزين النتيجة في المتغير a ثم طباعة قيمة المتغير a فستكون النتيجة 10، وبذلك فإن الجملة الآتية صحيحة وليس بها أي أخطاء.
وستكون النتيجة هنا 10
أما إذا نسيت وكتبت العدد 4 بدلاً من العدد 2 فستكون النتيجة التي يعطيها البرنامج هي 5 بدلاً من أن يعطي القيمة 10 وبذلك يكون هناك خطأ منطقي.
3- الخطأ التنفيذي:
يحدث الخطأ التنفيذي في عدة حالات منها:
*- قسمة أي عدد على صفر.
*- محاولة إيجاد الجزر التربيعي لعدد سالب.
تقسم الاخطاء فى لغة C++ الى ثلاثة انواع هم
Compile Errors
هى الاخطاء الناتجة عن الكتابة الاملائية لنص البررنامج او الخطا فى صيغة كتابة احد اوامر اللغة. مثلا عدم كتابة الفاصله المنقوطة فى نهاية امر ما. او كتابة الامر IF الشكل Efبدلا من IF وهذه الاخطاء تظهر بمجرد الانتهاد من ترجمة البرنامج وبالتالى لن تظهر كلمة Success، التى تدل على ان الترجمة قد تم بنجاح، بل ستظهر عدد الاخطاء المرتبكة ورسائل توضح ما هى الاخطاء وهى تنة الى ان وجود خطا فى البرنامج قد يودى الى ظهور رسائل اخطاء متنوعة وبالتالى ازلة هذة الخطا سوف يزيل هذه الاخطاء الناتجة عنه.
اخطاء الترجمة تظهر فى النظامDos ضمن نافذة خاصة ستظهر message وبالنقر على رسالة خطا ما سوف يظهر فى نافذة التحرير مكان الخطا المقصود. حيث بالامكان التنقل بين نافذة التحرير ونافذة الاخطاء بواسطة الضغط على مفتاح F8 وبالطبع يجب ازالة كافة الاخطاء. ومن ثم اعادة الترجمة من جديد، وهكذا حتى يصبح البرنامج حاليا تماما من اخطاء الترجمة
2- اخطاء الربط linker errors
بفرض انك كتب كلمة main بالشكل maidفان هذا الخطاء لن يظهر اثناء ترجمة البرنامج بل اثناء الربط، حيث تظهر رسالة توضح ذلك والسبب ان الربط يفترض ان يبحث عن التابع ذو الاسم main والذى بدونه لا يستطيع تشكيل ملف تنفيذى. وتجدر الاشارة ان اخطاء الربط خطيرة ولا يمكن تحديدها بسهولة
3- اخطاء التنفيذ: Run – time errors
هى الاخطاء الناتجة عن سوء تنفيذ االبرنامج مثل القسمة على صفر، طفح المكدس
(Stack Over flow )، التعيين ( التكليف) الخاطى لموشر ال (NULL )
المخططات الخوارزمية:
الخوارزمية هي مجموعة الخطوات العامة لحل مسألة معينة وبذلك يجب أن يتم التعبير عنها بلغة عاملة مستقلة عن لغة البرمجة، يوجد العديد من أساليب التعبير عن الخوارزمية.
استخدام الأسماء: identfiers
وهو يشمل كل الأسماء التى تعرف من قبل المبرمج في البرنامج مثل اسماء المتغيرات والثوابت والأنواع البيانية واسم البرنامج ويتكون المعرف من حرف واحد او الارقام او underscore وغير ذلك يعتبر غير مقبول من قبل اللغة مثل
Sum, text1, a22, _ss, ft_2…. مقبول
3a_a, 2max, m1*,d12$,….. غير مقبول.
كل البرامج تحتوى على نوعين من الرموز:
النوع الاول: وهى الرموز التى تعود إلى اللغة. تستخدم هذه الرموز بطريقتين إما أن تكون على شكل رمز واحد أو اثنين مثل (: / + / 0 / - )او على شكل كلمات تسمى الكلمات المحجوزه او الكلمات المفتاحية (key words) مثل (inline/ do/ while / else )
هذه الكلمات يكون لها صيغ إملائية محددة يجب الإلتزام بها عند كتابة البرنامج والإ يكون البرنامج محتويا على خطأ ولا يمكن تنفيذه. الصيغة الإملائية للكلمات المحجوزة للغة C++ تتكون من مجموعة من الحروف الصغيرة Low case letters حيث تحتوى لغة ال C++ على 32كلمة قياسية وهذه الكلمات لمها مكان معين تستخدم فيه لأداء غرض معين مثل: for, Static, if, do, double ,int
فهناك بعض الكلمات المحجوزة reserved words في لغة C++، والتي لن تستخدمها كأسماء متغيرات. وما نقصده هو الكلمات الاساسية keywords المستخدمة بواسطة المترجم للتحكم في البرنامج. ومن بين الكلمات الاساسية if و while و for وmain. ستجد قائمة كاملة من بهذه الكلمات الاساسية من كتيب تعليمات المترجم، لكن بصفة عامة عليك ان تعرف بان اي اسم منطقي للمتغير هو حتما ليس كلمة اساسية.
النوع الثانى: وهو المعرفات وهى عبارة عن رموز تستخدم فى البرامج فإما أن تكون معرفات قياسية مثل (char…etc. / float / int)
• أو تكون معرفات يتم اختيارها من قبل المبرمج، وهذه المعرفات الأخيرة نسميها أيضا المتغيرات (variables)، والمتغير هو رمز أو أكثر يستخدم في البرنامج ليشير إلي محتوى موقع فى الذاكرة.
ملاحظة:
الأسم سواء اسم برنامج أو متغير أو أي اسم هو مجموعة من الحروف و / أو الأرقام و/ أو الرموز بشرط أن يبدأ بحرف أبجدي.
ويمكن استخدام الشرطة التحتية gross_ pay في تسمية الأسماء.
والأسماء في لغة C++ حساسة لحالة الحرف case sensitive، فالأسماء الآتية هي أسماء مختلفة:
Name name NAME
تتابعات الهروب:
من إمكانيات لغة c++ استخدام بعض رموز الحروف لأداء مهام خاصة:

students‘s name
“students‘\s name”
She said “hello”
“she said \”hello\”
التعليقات في لغة c++:
عندما تقوم بكتابة أحد البرامج، ستجد أن هذا البرنامج دائما ما يكون واضحا ومعبرا عما تحاول القيام به. ومع ذلك، فعند رجوعك إلي هذا البرنامج بعد مرور شهر، ربما تجده غير واضح ومحيرا إلي حدما. أنا لست متأكدا من كيفية