لو انكم تتذكرون معي في المقدمة للدورة لقد قلت لكم ان الكمبيوتر هو مجرد آلة حاسبة كبيرة , ان كنت تسمع الموسيقى , تشاهد فيلم او تلعب العاب فيديو الكمبيوتر في هذه الاثناء يقوم بعمليات حسابات لا اكثر .
في هذا الفصل السادس من دورة تعلم البرمجة بلغة C , سوف نتعلم اغلب الحسابات التي بامكان جهاز الكمبيوتر القيام بها , و سوف نستعمل كل ما تعلمناه الى حد الان من الدروس السابقة لانشاء برنامج او تصميم آلة حاسبية بسيطة .
الفكرة الاساسية من هذا الطور هي اجراء عمليات حسابية باستعمال المتغيرات , مثل اضافة متغيرات في ما بينها , مضاعفتها , تسجيل البيانات في متغيرات اخرى و هكذا .
هذه الخاصية من قسمة عدد كامل مهمة جدا , يجب ان تحفظها جيدا لان بالنسبة للكمبيوتر عمليات حسابية مثل :
في هذا الفصل السادس من دورة تعلم البرمجة بلغة C , سوف نتعلم اغلب الحسابات التي بامكان جهاز الكمبيوتر القيام بها , و سوف نستعمل كل ما تعلمناه الى حد الان من الدروس السابقة لانشاء برنامج او تصميم آلة حاسبية بسيطة .
الفكرة الاساسية من هذا الطور هي اجراء عمليات حسابية باستعمال المتغيرات , مثل اضافة متغيرات في ما بينها , مضاعفتها , تسجيل البيانات في متغيرات اخرى و هكذا .
الحسابات الأساسية
حتى و ان كان الجزء الاول من الدرس ممل بالنسبة لكم , لكنه ضروري للفهم السليم و عليك التركيز جيدا تابع معي 😉 .
عليكم معرفة شئ اخر بالاضافة الى ان الكمبيوتر هو مجرد آلة حاسبة كبيرة هو في نفس الوقت آلة حاسبة بدائية 😔 , حيث انه لا يستطيع القيام الا بحسابات اولية مثل :
* الجمع
* الطرح
* الضرب
* القسمة
* Modulo ( لم اجد لها ترجمة بالعربية لكنني سوف اساعدكم للتعرف عليها ان كنتم لا تعلمون ما هي )
لو انكك تريد القيام بحسابات رياضية معقدة على الكمبيوتر ( مثل معادلات , الاس , الجدر .. الخ ) يجب عليك برمجتها , بمعنى يجب ان تشرح للكمبيوتر كيف يقوم بها .
مع لغة البرمجة C توجد دالة ( functions ) رياضية جاهزة لن تطر الى اختراعها ( هنالك من قام بالعمل مكانك و حضر لك ما تحتاجه احمد الله على هذا 😄 ) .
عملية الجمع
فل نرى مع بعضنا كيف يمكن استعمال عملية الجمع .
لاستعمال عملية الجمع سوف نستعمل رمز زائد + ( نعم انا لا امزح 😇 )
يجب ان تضع نتيجة الحساب في متغير , ادا سوف نقوم بانشاء متغير مثلا result ( الترجمة الحرفية لكلمة نتيجة بالانجليزية ) , و نجعلها من نوع int و نقوم بعملية حسابية في الجمع كالتالي :
اعتقد ان التعرف على النتيجة سهل و اي شخص يمكن معرفة ان قيمة المتغير result بعد تشغيل البرنامج هذا هي رقم 8 .
طبعا ان قمت بتشغيل البرنامج على هذا الشكل لن يظهر شئ على الشاشة , ان اردت ان ترى قيمة المتغير result على الشاشة يجب ان تضيف printf , مثل ما تعلمناه في الدروس السابقة على هذا الشكل :
حين تستعمل الكود كامل بمعنى تضع الاسطر الاولة # و البقية مثل ما صرنا نعرف سوف تحصل على النتيجة في الشاشة
ان وجدت النتيجة 0 فانت قمت بحدف العملية الحسابية و وضعت مكانها printf , نعم اعلم ان الكثير لا يزال يعاني رغم كل هذه الشروحات المفصلة 😔 .
نحن نعطي قيمة 0 للمتغير result في السطر
;int result = 0
بعدها نقوم بالعملية الحسابية في السطر
;result = 5 + 3
و في الاخير نضيف printf لكي تظهر لنا النتيجة حين تشغيل البرنامج في السطر
;(printf ("5 + 2 = %d", result
ادا برنامجنا يكون كالتالي :
و النتيجة التي سوف تظهر حين تشغيل البرنامج من زر build and run هي :
نعم 8 هنا قام الكمبيوتر بالعملية الحسابية لوحده و باستعمال printf اظهرها لنا على الشاشة , بقية الكتابة في البرنامج غير مهمة مثل ما شرحنا في السابق هي تعطيك معلومات مثل الوقت الذي استغرقة البرنامج في الاشتغال و تطلب منك النقر على زر في لوحة المفاتيح لغلق البرنامج .
هذا كل شئ بالنسبة لعملية الجمع , بقية العمليات الحسابية هي نفس الشئ , فقط الرمز يتغير , اليك جدول الرموز المستعملة في كل العمليات الحسابية في لغة البرمجة C :
لا توجد صعوبة تذكر لهذه العمليات الحسابية , الا في العمليتين الاخخيرتين ( القسمة و ال modulo ) , علينا الشرح اكثر في هذه العمليتين بالذات تابع معي
عملية القسمة
القسمة تشتغل بطريقة طبيعة حين لا يكون فيها الباقي , مثلا 6 / 3 تساوي 2 , اذا قمت بهذه العملية في برنامجك سوف تحصل على النتيجة الصحيحة لا مشكلة تذكر حتى الان .
الان نقوم بعملية قسمى فيها ما بعد الفاصلة اي فيها الباقي , مثلا 5 / 2 النتيجة الطبيعية هي 2.5 , لكن في برنامجك شاهد ما سوف يحدث حين تستعمل الكود بهذه العملية مثل كود عملية الجمع باستخدام اشارة التقسيم :
النتيجة سوف تكون كالتالي :
هنا عندنا مشكلة كبيرة , طلبنا من الكمبيوتر حساب 5 / 2 و كنا ننتضر ان نحصل على النتيجة 2.5 , لكن الجهاز يعطينا 2 😑 .
هل جهازنا غبي الى هذه الدرجة ؟
الحقيقة هي ان جهازك حين يرى الارقام 5 و 2 هو يقوم بعملية تقسيم للاعداد الكاملة التي تسمى :
خوارزمية تقسيم ( Euclidean division )
حيث انه يقتطع النتيجة و لا يبقي الا على الاعداد الكاملة ( في المثال 2 )
قد يقول احدكم : انا اعلم ما هو السبب , مثل ما تعلمناه في الدروس السابقة int للاعداد الكاملة لو ان المتغير result كان يستعمل double سوف يتمكن من تخزين الاعداد العشرية !
شكرا على المتابعة الجيدة ياصديقي ( هذا ان انتبه لها احدكم 😒 و طرح على نفسه هذا الحل الشئ الذي اشك فيه كثيرا 😂 ) .
الحقيقة ان هذا ليس هو السبب الوحيد , حتى و ان قمت باستخدام double مع المتغير result سوف ترى بنفسك ان النتيجة تبقى 2 , هذا راجع الى ان الاعداد في العملية نفسها هي اعداد كاملة فتلقائيا الكمبيوتر يجيبك باعداد كاملة .
ان اردنا من الكمبيوتر ان يعطينا الجواب الصحيح في هذه العملية بالذات يجب علينا تحويل الاعداد المستعملة فيها من كاملة الى عشرية , بمعنى نكتبها كالتالي : 5.0 و 2.0 ( مثل ما قلنا في السابق لغة البرمجة C لا نستعمل الفاصلة بل النقطة )
هي نفس الارقام او الاعداد لكن الكمبيوتر هنا يعتبرها كاعداد عشرية , و منها يقوم بعملية قسمة لاعداد عشرية و يظهر الباقي في النتيجة ليتحول الكود و يصبح كالتالي :
النتيجة التي تحصل عليها هي :
في هذه الحالة النتيجة صحيحة , حتى و ان اظهر لنا الكثير من الاصفار في الاخير ( فاليفعل ما يشاء ) لا يهمنا لان الصفر في الاخير بعد الفاصلة لا يحتسب .
5 / 2 = 2
10 / 3 = 3
4 / 5 = 0
هي اعداد كاملة , الامر محير لكنها طبيعته مع مثل هذه الاعداد .
لو انك تريد الحصول على النتائج الصحيحة في برنامجك يجب ان تحولها الى اعداد عشرية مثل :
5.0 / 2.0 = 2.5
10.0 / 3.0 = 3.33333
4.0 / 5.0 = 0.8
في الحقيقة حين تقوم بعملية 5 / 2 جهازك يُجيب على السؤال التالي :
كم يوجد من 2 في 5 ؟
الاجابة هي مرتين بمعنى 2 .
ايضا مع العملية الاخرى كم من 3 موجودة في 10 ؟ الجواب هو ثلاث مرات اي انه يظهر لك 3 في النتيجة .
السؤال يطرح نفسه كيف نفعل للحصول على الباقي فقط ؟ هنا يدخل دور عملية Modulo
عملية Modulo
المودولو "Modulo" هي عملية حسابية تعطيك ما تبقى من التقسيم , ربما انت لم تستعملها من قبل , او انك لم تسمع بها ابدا لكن بالنسبة للكمبيوتر هي عملية حسابية اساسية مثل العمليات الاربعة الاخرى , و يسعملها خصوصا في حل الاشكالية التي وقعنا بها ليجيب عن السؤال المطروح .
مثل ما هو موضح في الجدول رمز ال modulo هو % و هذه بعض الامثلة لعمليات تستعمله :
5 % 2 = 1
14 % 3 = 2
4 % 2 = 0
modulo العملية 5 % 2 هو باقي عملية القسمة 5 تقسيم 2 , بمعنى نحصل على 1 .
الكمبيوتر يحسب كالتالي 5 = 2 * 2 + 1 ( 1 هو ما يعطيك اياه الكمبيوتر اي باقي القسمة )
مثلا 14 % 3 حسابها هو 14 = 3 * 4 + 2 ( modulo العملية الحسابية هو رقم 2 )
و اخر مثال هو في حالة 4 % 2 هنا التقسيم يكون صحيح ادا لا يوجد باقي في هذه الحالة نتيجة ال modulo تكون 0 .
هذا كل ما يخص عملية حساب ال modulo لا يوجد اي شئ صعب فيها .
و اخيرا انتهينا من دروس الرياضيات 😃 , لن اقوم بازعاجك اكثر من هذا القدر لقد تطرقنا الى جميع الاساسيات في الحساب .
حسابات بين المتغيرات و انشاء الة حسابية
الان ما يمكن أن يكون مثيرة للاهتمام بعد ان تعلمت العمليات الحسابية الخمسة التي يعرفها الكمبيوتر هو ان تتدرب على عمليات حسابية بين عدة متغيرات فيما بينها .لا شئ يمنعنا من القيام بمايلي :
number تعني عدد , هذا السطر في الكود يقوم بجمع المتغيرات number1 و number2 و يخزن النتيجة في المتغير result .
و هنا تبداء الامور المشوقة و التي يجب ان تنال اهتمامك , هل تعلم ما يمكنك فعله الان ؟
انت قادر على انشاء الة حاسبة صغيرة , نعم انا لا امزح انت الان تمتلك المستوى لبرمجة او انشاء برنامج الة حاسبة بسيطة 😎 .
تخيل معي برنامج يطلب من المستخدم ادخال عددين , هذين العددين تقوم بتخزينهما في متغيرين .
بعدها تقوم بعملية حسابية لهذين المتغيرين , ثم تقوم بتخزين النتيجة في متغير نسميه result , لا يتبقى عليك الا اظهار النتيجة على الشاشة , لينبهر المستخدم ( صديقك 😄 ) الذي لم يكن ليجد الحل بطريقة اخرى الا عبر برنامجك الرائع ( الذي هو في الحقيقة مجرد الة حاسبة بدائية , لكنه من اول برامجك التي تصنعها بنفسك ادا هو حتما برنامج رائع 😍 ) .
بعدها تقوم بعملية حسابية لهذين المتغيرين , ثم تقوم بتخزين النتيجة في متغير نسميه result , لا يتبقى عليك الا اظهار النتيجة على الشاشة , لينبهر المستخدم ( صديقك 😄 ) الذي لم يكن ليجد الحل بطريقة اخرى الا عبر برنامجك الرائع ( الذي هو في الحقيقة مجرد الة حاسبة بدائية , لكنه من اول برامجك التي تصنعها بنفسك ادا هو حتما برنامج رائع 😍 ) .
جرب القيام بذالك لوحدك قبل ان اعرض عليك source code الالة الحاسبة و خمن كيف سوف يكون مع كل المعارف التي جمعنها الى الان سوف تكون مراجعة جيدة لجميع الدروس .
الكود "source code" هو كالتالي :
شاهد كيف يعمل البرنامج بعد التشغيل
ادا سوف نحصل على هذا الشكل النهائي من برنامجنا بعد ان يدخل المستعمل الاعداد 5 و 3 ( مثلا )
نعم هذا اول برنامج لنا في الدورة لديه حقا نفع و فائدة 💪 , برنامجنا هذا قادر على جمع عددين و اظهار النتيجة للمستخدم .
يمكنك التجربة على اي اعداد ( في حين لا تتخطى امكانيات نوع int ) , جهازك يمكنه الحساب بسرعة البرق , عادي جدا لان حسابات مثل التي يطلبها منه برنامجك يقوم بمليارات من امثالها في الثانية دون ان يشعر بالتعب .
نصيحتي هي ان تتدرب على باقي العمليات الحسابية ( الضرب , الطرح ... الخ ) و تكتب الكود بنفسك لتتعلم من كثرة الممارسة , لن يكون الامر صعب فقط تغير الرمز .
يمكنك ايضا اضافة متغير ثالث مثلا number3 , و تقوم بعملية جمع او طرح ثلاث اعداد في نفس الوقت لن يكون هنالك اي مشكلة جهازك قادر على القيام بذالك بسهولة كبيرة .
الى هنا نكون قد انتهينا من الجزء الاول للدرس السادس في الدروة , ارجوا ان ينال اعجابكم و اهم شئ هو ان يكون مفهوم للجميع تابعونا سوف نتعلم المزيد من الامور الشيقة في البرمجة .