مدخلك الى تعلم البرمجة العادية
انا اقصد بكلمة البرمجة العادية التمييز بينها وبين البرمجة بالاهداف أو Object oriented languages
التي تستخدم مع لغات السي ++ والجافا ++ وغيرها
ولكي تتعلم لغة برمجة عادية يجب ان تبحث في كيفية تعلم الآتي بصرف النظر عن مواضيع الكتاب
الذي تتعلم منه وسنشرح كل جزئية وليس شرح للغة معينة وان استعنا ببعض الامثلة من لغة السي
أولا : يجب ان تعرف كيف تعلن عن المتغيرات التي سوف تستخدمها في برنامجك
ماهي المتغيرات
لابد ان يحتوي اي برنامج على متغيرات اي أوعية لوضع البيانات فيها حسب نوع البيان فالاسماء هي متغيرات حرفية والاعداد هي اما اعداد صحيحة او عشرية مثلا فمثلا بيانات موظف يقوم احد البرامج بالعمل عليها اتخيل ان تكون كما يلي
المتغير
(الوعاء الذي سيستقبل البيانات) النوع المفترض ان يكون (منطقيا)
اسم الموظف متوقع ان يكون مجموعة حروف
رقمة الوظيفي متوقع ان يكون عدد صحيح لانه لايوجد رقم موظف مثلا 3555.256
الراتب الشهري
متوقع ان يكون عدد عشري به كسور مثل 355.5
اذا لابد من التفكير في كيفية المتغيرات المناسبة لكل بيان فمثلا لو اخطأت واخترت بيان الراتب عدد صحيح فاذا كان راتبه وهو شئ متوقع 355.5 فلن يقبل لان البرنامج سوف يحوله الى عدد صحيح مقرب وهو 356 وهو ليس خطأ البرنامج وانما خطئك انت لانك اعلنت ان متغير الراتب عدد صحيح فما ذنب بائع الفاكهه اذا طلبت منه شراء تفاح وانت تقصد برتقال انما قام البائع بتنفيذ ما سمعه منك مثل هذا الخطأ يسمى خطأ منطقي لان الكومبيوتر لا يعترض عليه
الخلاصة:
في كتب اللغة التي تريد تعلمها ابحث عن اوامر الاعلان عن المتغير وسأعطيك مثال بلغة السي
بقى ان تعرف ان معظم اللغات تقدم حيز تخزين مختلف لكل نوع من البيانات وسيتضح ذلك كما يلي
متغيرات الاعداد الصحيحة
ألامر حسب اللغة نطاق التخزين السعة بالبايت
int 0-32767 2
long 32768-2147483647 4
unsigned long 2147483648-4294967295 8
فمثلا لتحديد رقم الموظف سوف نستخدم النوع الاول اذا كان اجمالي عدد الموظفين بالشركة لا يزيد عن
32767 ولانستخدم النوع الثاني مع انه مقبول والسبب ان النوع الثاني سوف يحجز اربعة بايتات للرقم
في حين انني احتاج الى اثنين فقط مع المتغير الاول وبالتالي تتضخم ملفات البيانات بلا داعي
المثال
int SerialNo;
long SerialNo;
unsigned long SeialNo;
بالطبع مع اللغة التي سوف تستخدمها ستختلف الصيغة لكن المنطق والفكرة واحدة
متغيرات الاعداد العشرية
ألامر حسب اللغة نطاق التخزين السعة بالبايت
float 3.4*E-38 to 3.4E38 2
double 1.7*E-308 to 1.7*308 4
long double 3.4*E-4932 to 1.1*E4932 8
ملاحظة:
E38 معناها 10 اوس 38 او 10 مرفوعة الى القوة 38 ولايهمك ذلك الآن
مثال
float Salary ;
double Salary;
long double Salry;
بالطبع يمكنك استخدام المتغير الاول لتخزين راتب الموظف ولكن استخدم الثاني لتخزين اجمالي رواتب الموظفين لاعطاء حيز تخزين اكبر
مثال
float Salary;
double TotalSalaries;
عند استخدام متغير ذو سعة تخزين اقل لاستيعاب رقم او بيان اكبر من سعته فلن يعترض البرنامج ولكن سوف
تحصل على نتائج خاطئة مثلما تريد سكب برميل من الماء في كأس صغير فلن يعترض الكأس ولكن سوف يأخذ
حاجته فقط والباقي سوف ينسكب على الارض
متغيرات الحروف
ألامر حسب اللغة نطاق التخزين السعة بالبايت
char حسب التحديد حسب التحديد
بفرض انك خصصت اقصى عدد لاسم الموظف بثلاثين حرف
مثال
char HisName [30];
وينصح بعدم الاسراف في استخدام حيز تخزين اكثر مما تحتاج
ألان وقد درست هذا الموضوع جيدا واقصد انواع المتغيرات حسب اللغة التي تتعلما عليك الانتقال للموضوع
التالي
ثانيا : يجب ان تعرف ماهي الاوامر في اللغة التي تستخدم لادخال البيانات
بعد ان خصصت متغيرات لكل نوع ابحث في كتب اللغة عن اوامر ادخال كل نوع من البيانات والصيغة التي
يجب ان تكتب بها
وكمثال من لغة سي
المتغير المفترض نوعه الامر حسب قواعد اللغة
HisName حروف gets (HisName)
HisSalary اعداد عشرية وكسور scanf (“%.2f” , HisSalry)
HisNumber اعداد صحيحة scanf (“%d”,HisNumber)
كل لغة برمجة تعطيك اماكانات خاصة افحص كتب اللغة في هذا الموضوع وكمثال
تعطي لغة سي القياسية اوامر للتحويل مابين انواع المتغيرات وبعضها وكما ذكرنا سابقا مثلا ان الامر او الدالة gets تقوم بادخال المتغيرات الحرفية فيمكن استخدامها لاستقبال الارقام كأنها حروف وتقوم داله اخرى بتحويل هذه الحروف الى ارقام
مثال
char buf [20];
int HisNumber;
gets (buf);
HisNumber = atoi (buf);
اعلنا هنا عن متغير حروف فقط لاستقبال الارقام وبالطبع الدالة gets
سوف تتعامل معها على انها حروف اي لا يمكن استخدامها في العمليات الحسابية تم استقبال البيانات اي الرقم المسلسل وتم وضعه في المتغير buf
خاصة وهو كما تعرف سبق الاعلان عنه كمتغير حرفي يستقبل حروف ولكنك ادخلت ارقام لان البرنامج يسألك عن الرقم المسلسل للموظف وقد استقبلت الدلة gets الرقم المسلسل ووضعته في المتغير buf كحروف ميتة مع انه رقم اخيرا قامت الدالة atoi بتحويل المتغير الحرفي buf
الى متغير عدد صحيح ووضعته في المتغير HisNumber
والذي اعلن عنه كعدد صحيح
مع تحياتى م/محمود عادل
انا اقصد بكلمة البرمجة العادية التمييز بينها وبين البرمجة بالاهداف أو Object oriented languages
التي تستخدم مع لغات السي ++ والجافا ++ وغيرها
ولكي تتعلم لغة برمجة عادية يجب ان تبحث في كيفية تعلم الآتي بصرف النظر عن مواضيع الكتاب
الذي تتعلم منه وسنشرح كل جزئية وليس شرح للغة معينة وان استعنا ببعض الامثلة من لغة السي
أولا : يجب ان تعرف كيف تعلن عن المتغيرات التي سوف تستخدمها في برنامجك
ماهي المتغيرات
لابد ان يحتوي اي برنامج على متغيرات اي أوعية لوضع البيانات فيها حسب نوع البيان فالاسماء هي متغيرات حرفية والاعداد هي اما اعداد صحيحة او عشرية مثلا فمثلا بيانات موظف يقوم احد البرامج بالعمل عليها اتخيل ان تكون كما يلي
المتغير
(الوعاء الذي سيستقبل البيانات) النوع المفترض ان يكون (منطقيا)
اسم الموظف متوقع ان يكون مجموعة حروف
رقمة الوظيفي متوقع ان يكون عدد صحيح لانه لايوجد رقم موظف مثلا 3555.256
الراتب الشهري
متوقع ان يكون عدد عشري به كسور مثل 355.5
اذا لابد من التفكير في كيفية المتغيرات المناسبة لكل بيان فمثلا لو اخطأت واخترت بيان الراتب عدد صحيح فاذا كان راتبه وهو شئ متوقع 355.5 فلن يقبل لان البرنامج سوف يحوله الى عدد صحيح مقرب وهو 356 وهو ليس خطأ البرنامج وانما خطئك انت لانك اعلنت ان متغير الراتب عدد صحيح فما ذنب بائع الفاكهه اذا طلبت منه شراء تفاح وانت تقصد برتقال انما قام البائع بتنفيذ ما سمعه منك مثل هذا الخطأ يسمى خطأ منطقي لان الكومبيوتر لا يعترض عليه
الخلاصة:
في كتب اللغة التي تريد تعلمها ابحث عن اوامر الاعلان عن المتغير وسأعطيك مثال بلغة السي
بقى ان تعرف ان معظم اللغات تقدم حيز تخزين مختلف لكل نوع من البيانات وسيتضح ذلك كما يلي
متغيرات الاعداد الصحيحة
ألامر حسب اللغة نطاق التخزين السعة بالبايت
int 0-32767 2
long 32768-2147483647 4
unsigned long 2147483648-4294967295 8
فمثلا لتحديد رقم الموظف سوف نستخدم النوع الاول اذا كان اجمالي عدد الموظفين بالشركة لا يزيد عن
32767 ولانستخدم النوع الثاني مع انه مقبول والسبب ان النوع الثاني سوف يحجز اربعة بايتات للرقم
في حين انني احتاج الى اثنين فقط مع المتغير الاول وبالتالي تتضخم ملفات البيانات بلا داعي
المثال
int SerialNo;
long SerialNo;
unsigned long SeialNo;
بالطبع مع اللغة التي سوف تستخدمها ستختلف الصيغة لكن المنطق والفكرة واحدة
متغيرات الاعداد العشرية
ألامر حسب اللغة نطاق التخزين السعة بالبايت
float 3.4*E-38 to 3.4E38 2
double 1.7*E-308 to 1.7*308 4
long double 3.4*E-4932 to 1.1*E4932 8
ملاحظة:
E38 معناها 10 اوس 38 او 10 مرفوعة الى القوة 38 ولايهمك ذلك الآن
مثال
float Salary ;
double Salary;
long double Salry;
بالطبع يمكنك استخدام المتغير الاول لتخزين راتب الموظف ولكن استخدم الثاني لتخزين اجمالي رواتب الموظفين لاعطاء حيز تخزين اكبر
مثال
float Salary;
double TotalSalaries;
عند استخدام متغير ذو سعة تخزين اقل لاستيعاب رقم او بيان اكبر من سعته فلن يعترض البرنامج ولكن سوف
تحصل على نتائج خاطئة مثلما تريد سكب برميل من الماء في كأس صغير فلن يعترض الكأس ولكن سوف يأخذ
حاجته فقط والباقي سوف ينسكب على الارض
متغيرات الحروف
ألامر حسب اللغة نطاق التخزين السعة بالبايت
char حسب التحديد حسب التحديد
بفرض انك خصصت اقصى عدد لاسم الموظف بثلاثين حرف
مثال
char HisName [30];
وينصح بعدم الاسراف في استخدام حيز تخزين اكثر مما تحتاج
ألان وقد درست هذا الموضوع جيدا واقصد انواع المتغيرات حسب اللغة التي تتعلما عليك الانتقال للموضوع
التالي
ثانيا : يجب ان تعرف ماهي الاوامر في اللغة التي تستخدم لادخال البيانات
بعد ان خصصت متغيرات لكل نوع ابحث في كتب اللغة عن اوامر ادخال كل نوع من البيانات والصيغة التي
يجب ان تكتب بها
وكمثال من لغة سي
المتغير المفترض نوعه الامر حسب قواعد اللغة
HisName حروف gets (HisName)
HisSalary اعداد عشرية وكسور scanf (“%.2f” , HisSalry)
HisNumber اعداد صحيحة scanf (“%d”,HisNumber)
كل لغة برمجة تعطيك اماكانات خاصة افحص كتب اللغة في هذا الموضوع وكمثال
تعطي لغة سي القياسية اوامر للتحويل مابين انواع المتغيرات وبعضها وكما ذكرنا سابقا مثلا ان الامر او الدالة gets تقوم بادخال المتغيرات الحرفية فيمكن استخدامها لاستقبال الارقام كأنها حروف وتقوم داله اخرى بتحويل هذه الحروف الى ارقام
مثال
char buf [20];
int HisNumber;
gets (buf);
HisNumber = atoi (buf);
اعلنا هنا عن متغير حروف فقط لاستقبال الارقام وبالطبع الدالة gets
سوف تتعامل معها على انها حروف اي لا يمكن استخدامها في العمليات الحسابية تم استقبال البيانات اي الرقم المسلسل وتم وضعه في المتغير buf
خاصة وهو كما تعرف سبق الاعلان عنه كمتغير حرفي يستقبل حروف ولكنك ادخلت ارقام لان البرنامج يسألك عن الرقم المسلسل للموظف وقد استقبلت الدلة gets الرقم المسلسل ووضعته في المتغير buf كحروف ميتة مع انه رقم اخيرا قامت الدالة atoi بتحويل المتغير الحرفي buf
الى متغير عدد صحيح ووضعته في المتغير HisNumber
والذي اعلن عنه كعدد صحيح
مع تحياتى م/محمود عادل