منتديات برامج نت
عزيزي الزائر / عزيزتي الزائرة يرجي التكرم بتسجبل الدخول اذا كنت عضو معنا
او التسجيل ان لم تكن عضو وترغب في الانضمام الي اسرة المنتدي
سنتشرف بتسجيلك
شكرا
ادارة المنتدي

منتديات برامج نت

برامج كمبيوتر و انترنت لغات برمجه و تطوير مواقع قسم خاص بالتصميم و الجرافيك
 
الرئيسيةPortalاليوميةس .و .جالأعضاءالمجموعاتالتسجيلدخول
اهلاوسهلا بكم في منتديات برامج نت ارجو من جميع الزوار التسجيل مع تحيات $الادارة$

شاطر | 
 

 دوره تعليميه فى لغه السى

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل 
كاتب الموضوعرسالة
DESGINER

المدير العام...}


avatar


مُساهمةموضوع: دوره تعليميه فى لغه السى   الإثنين مارس 16, 2009 10:51 am

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

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

انطلاقا لرغبه الكثير في دروه برمجيه بلغه السي والسي++ ، فلقد قررنا بمشيئه الله عمل دوره متكامله في هذه اللغات ، وسوف يقوم الاستاذ THE -DON جزاه الله خيرا بالقاء هذه الدوره ، املين منها ان تستفيدوا وتتطوروا برامجكم واعمالكم الى ماهو الافضل باذن الله ...

ستقسم الدوره الى عده دروس ،، وفي النهايه سنجمع الدورس على شكل كتيب بسيط لتستفيدوا منه مستقبلا ،

وستكون كالتالي ،

لغه السي ، وتحتوي على المفاهيم الاساسيه ، والConidition والـ Loop والArray والpointer .. وغيرها من المواضيع الهامه ..

لغه السي++ ، مفهوم البرمجه الموجهه للكائنات OOP ...

هياكل البيانات Data Structue .. طرق البحث والتريب ، والمكدس والقوائم المتصله والى غيره من المواضيع ...

والتعامل مع الملفات File Operation ...

هذه هي الخطوط العريضه للدروس بشكل عام ، واتمنى ان تكون هي البدايه فقط لمواضيع اكثر تقدما ..

وستتم اضافه روابط الموضيع والدروس الخاصه بالدوره هنا ، ايضا ستتم وضع بعض الكتب ، بالاضافه الى مجموعه من المترجمات وبيئات التطوير ..

واي استفسار او اقتراح ، يرحب به لكن ليس هنا بالامكان مراسلتي او الأخ tho - don في حال لديكم اي اقتراح ..

تحياتي ...
__________________
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
DESGINER

المدير العام...}


avatar


مُساهمةموضوع: الدرس الاول   الإثنين مارس 16, 2009 10:57 am

الدرس الأول
يجب تحميل محرر السي و هو البرنامج الذي تقوم بكتابة الأوامر البرمجية فيه
ويتكون من ثلاثة أشياء بكل بساطة
يقوم بفحص سريع للأخطاء قبل عملية الدمجcompiler
test أي التأكد من عدم وجود الأخطاء
وأخيراً run التنفيذ ويكون في الشاشة السوداء
______________________________________
رموز هامة
a nd && || or
!! not
== equal or not equal أي أنه ربما يكون مساوي أو غير مساوي
________________________________________________
لطباعة على الشاشة
printf("please enter your first name");-1
للتنفيذ نستخدم
scanf("%d %d"a,b);-2
%d وهي أمر قم بتنفيذ أي السماح للمستخدم بكتابة أمر معين وهو integer number
%d لكتابة integer number= أعداد موجبة 123
%f لكتابة أرقام بفواصل =123.5

%c لكتباية كلمة مكونة من أحرف
%s لكتابة حرف فقط
كل هذه الأوامر تسمح لك بكتابة نوع معين سواء رقم كلمة حرف رقم بفواصل وغيره
ملا حظة : هناك فرق كبير بين لغة السي ولغة السي ++ وهو كالتالي:
عند التنفيذ في لغة السي نستخدم scanf
ونقوم و لكل نوع له متغير يقوم بتنفيذ المتغير الموجود
السي++ يقوم بعمل count لأي نوع
__________________________________________________ ___________
برنامج سهل
# include
main()
{
نعرف الأن
المعطيات من عندك
integer a,b;
clrscr();
هذا الأمر يقوم بمسح الشاشة وتنظيفها
printf("enter numbers");
getch();
يقوم بعملية complier+run
}
lol!
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
DESGINER

المدير العام...}


avatar


مُساهمةموضوع: التحميل الزائد للعوامل   الإثنين مارس 16, 2009 11:02 am

تسمح لنا لغة ++C وبشكل متميز استخدام العوامل (المستخدمة مع الأنماط الأساسية) مع الأصناف. فنعلم مثلا أن التعبير التالي تعبير مقبول ونظامي:

كود:
int a, b, c;
a = b + c; لأن أنماط المعاملات المستخدمة في التعبير أنماط بسيطة (int). ولا يعد بالمقابل تطبيق هذا العامل على بنية مشابهة لما يلي أمراً ذو معنى واضح:

كود:
struct {char product [50]; float price;} a,b,c;
a = b + c; تؤدي ترجمة هذه العبارة إلى توليد خطأ. ولا ينتج هذا الخطأ من عملية الإسناد، إذ تسمح لنا ++C إسناد كائن (من صنف أو بنية) إلى كائن آخر، بل ينتج الخطأ من عملية الجمع التي لا يمكن تطبيقها مبدئياً بين معاملين من أنماط غير أساسية.

لكن لغة ++C مشكورة تسمح لنا بتوسيع مهام العوامل الموجودة فيها عن طريق التحميل الزائد overloading. بالتالي يمكن أن تقبل الكائنات المشكلة من أنماط مركبة (كما في المثال الأخير) العوامل التي لا يمكن تطبيقها عليها لولا التحميل الزائد لها، ونستطيع أيضا تغيير تأثير بعض العوامل التي تقبلها هذه الكائنات لتؤدي عملاً مختلفاً لعملها الافتراضي. نبين فيما يلي قائمة العوامل القابلة للتحميل الزائد:

+ - * / = < > =+ =- =* =/ << >> =>> =<< == =! => =< ++ -- % & ^ ! | ~ =& =^ =| && || =% [] () new delete

نقوم بالتحميل الزائد للعوامل بكتابة منهج في صنف ما ونسمي هذا المنهج بالكلمة المحجوزة operator ثم نتبعه بإشارة العامل الذي نريد كتابة تحميل زائد له، اي يبدو سياق ترويسة تابع التحميل الزائد لعامل ما إشارته sign كما يلي:

كود:
type operator sign (parameters);
ولقد كتبنا في المثال التالي تحميلاً زائداً للعامل +، الذي نحتاجه لجمع شعاعين رياضيين vector (وليس شعاعين برمجيين array) ثنائيي البعد (3,1)a و (1,2)b وحساب ناتج الجمع الشعاعي الذي هو شعاع أيضا. تتحقق عملية الجمع الشعاعي الرياضي للأشعة ثنائية البعد ببساطة بجمع المركبة الأولى x1 من الشعاع الأول مع المركبة الأولى x2 من الشعاع الثاني للحصول على المركبة الأولى x من شعاع النتيجة، وجمع المركبة الثانية y1 من الشعاع الأول مع المركبة الثانية y2 من الشعاع الثاني للحصول على المركبة الثانية y من شعاع النتيجة. أي ستكون مركبتي الشعاع الناتج في مثالنا هي (4,3)=(2+1,1+3).

كود:
// vectors: overloading operators example
#include <iostream.h>

class CVector {
public:
int x,y;
CVector () {};
CVector (int, int);
CVector operators + (CVector);
};

CVector::CVector (int a, int b) {
x=a;
y=b;
}

CVector CVector::operators+ (CVector param) {
CVector temp;
temp.x=x+param.x;
temp.y=y+param.y;
return (temp);
}

int main () {
CVector a (3,1);
CVector b (1,2);
CVector c;
c=a+b;
cout << c.x << "," << c.y;
}

Output:

4,3 ستلاحظ في هذا المثال تكرار الكلمة CVector عدة مرات، لكنها كانت تعني أحياناً اسم الصنف CVector، وأحياناً أخرى كانت تستخدم في التصريح عن مناهج في الصنف، فلا تخلط بين الحالتين:

كود:
CVector (int, int);
// function name CVector (constructor)
CVector operator+ (CVector);
// function operator+ that retrurns CVector type إذاً يلعب المنهج +operator في الصنف CVector دور تحميل زائد للعامل الحسابي +، حيث نستطيع تطبيق هذا العامل وفق أحد الشكلين التاليين:

كود:
c = a+b;
c = a.operator+ (b); ملاحظة_____.......
لقد كتبنا في الصنف السابق بانياً فارغاً (بدون وسطاء) وله كتلة تعليمات فارغة no-op:

كود:
CVector () {}; وهذا الباني ضروري لأننا قد صرحنا في الصنف CVector عن بان آخر له وسطاء وهو:

كود:
CVector (int, int); مما سيؤدي إلى إهمال البانيين الافتراضيين الذين تحدثنا عنهما سابقاً إلا إذا كتبناهما صراحة بأنفسنا، وإلا لكان التصريح التالي خاطئاً:

كود:
CVector C; الموجودة في تعليمات التابع ()main.
ولكننا قد نبهنا سابقاً إلى خطر ترك كتلة تعليمات بان ما فارغة no-op، فيجب على الباني ان يحقق على الأقل اهم مهمة له وهي إعداد حقول الصنف بشكل مناسب، ولكننا تركنا الباني الفارغ بدون اي تهيئة للحقلين xوy. ويفضل لذلك ان يكون شكل الباني الأول كما يلي:

كود:
CVector () { x=0; y=0; }; ولكننا اهملنا هذا الشكل في المثال للتسهيل فقط

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

السؤال: هل نحن مضطرون عند إعادة تعريف عامل ما (رياضي مثلاً) أن نشكله بشكل شبيه بطريقة عمله الأصلية، أو بشكل له علاقة بمعنى هذا العامل؟. والجواب:لا، ولكن يفضل ذلك، فليس منطقياً استخدام العامل + لطرح قيم كائنين من بعضهما، أو استخدام العامل == لتصفير الكائن (لملء حقوله أصفاراً) مع أننا نستطيع تحقيق ذلك تماماً ودون أي خطأ لا في الترجمة ولا في التنفيذ.
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
EH@B

عضو جديد...}


avatar


مُساهمةموضوع: رد: دوره تعليميه فى لغه السى   الجمعة مايو 22, 2009 12:37 pm

الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://a7la-3alam.gid3an.com/forum.htm
Howba

عضو جديد...}





مُساهمةموضوع: رد: دوره تعليميه فى لغه السى   الجمعة أكتوبر 25, 2013 5:49 pm

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

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
منتديات برامج نت :: :::: المنتديات التقنيـــــه :::: :: لغات البرمجه :: لغه السى و السى++و السى#-
انتقل الى: