2.5 قسمة الأعداد الصحيحة
أهداف التعلم
في نهاية هذا القسم، ينبغي أن تكون قادرًا على:
- تقييم التعبيرات التي تتضمن القسمة السفلية وباقي القسمة.
- استخدام عامل باقي القسمة للتحويل بين وحدات القياس.
القسمة وباقي القسمة
توفر بايثون طريقتين لقسمة الأعداد:
- القسمة الحقيقية (True division) (
/) تحول الأعداد إلى أعداد عشرية قبل القسمة. مثال:7 / 4تصبح7.0 / 4.0، مما ينتج عنه1.75. - القسمة السفلية (Floor division) (
//) تحسب حاصل القسمة، أو عدد مرات القسمة. مثال:7 // 4هي1لأن 4 تدخل في 7 مرة واحدة، والباقي 3. عامل باقي القسمة (modulo operator) (%) يحسب الباقي. مثال:7 % 4هو3.
ملاحظة: يُنطق العامل % تقليديًا "مود" (اختصارًا لـ "modulo"). مثال: عند قراءة 7 % 4 بصوت عالٍ، يقول المبرمج "سبعة مود أربعة."
مفاهيم تطبيقية
القسمة وباقي القسمة
ما قيمة كل تعبير؟
تحويل الوحدات
تُعد القسمة مفيدة لتحويل وحدة قياس إلى أخرى. لتحويل السنتيمترات إلى أمتار، يُقسَم المُتغيِّر على 100. مثال: قسمة 300 سنتيمتر على 100 تساوي 3 أمتار.
غالبًا ما لا تنقسم الكميات بالتساوي كأعداد صحيحة. 193 سنتيمترًا هي 1.93 متر، أو 1 متر و 93 سنتيمترًا. يمكن للبرنامج استخدام القسمة السفلية وباقي القسمة لفصل الوحدات:
- حاصل القسمة، 1 متر، هو
193 // 100. - الباقي، 93 سنتيمترًا، هو
193 % 100.
غالبًا ما تستخدم البرامج القسمة السفلية وباقي القسمة معًا. إذا نفَّذ أحد أسطر الشِفرة قسمةً سفلية على m، فمن المرجَّح أن ينفِّذ السطر التالي حساب باقي القسمة على m. الوحدة m التي تُقسَم بها الكمية تُسمى باقي القسمة (modulus). مثال: عند تحويل السنتيمترات إلى أمتار، يكون باقي القسمة هو 100.
مفاهيم تطبيقية
تحويل الوحدات
جرّب بنفسك
وقت الوصول
قد يكون اصطحاب جهاز محمول في الرحلات الطويلة بالسيارة أمرًا بالغ الفائدة. تجد برامج مثل خرائط غوغل (Google Maps) أقصر طريق وتقدر وقت الوصول. يعتمد وقت الوصول على الوقت الحالي مضافًا إليه المدة التي ستستغرقها الرحلة.
اكتب برنامجًا (1) يُدخِل الوقت الحالي والمدة المقدرة للرحلة، (2) يحسب وقت الوصول، و(3) يُخرج النتائج بالساعات والدقائق. يجب أن يستخدم برنامجك المِحَثّات التالية (إدخال المستخدم بالخط العريض):
13
Current minute (0-59)? 25
Trip time (in minutes)? 340
Current hour (0-23)? 13
Current minute (0-59)? 25
Trip time (in minutes)? 340
في هذا المثال، الوقت الحالي هو 13:25 (1:25 مساءً). مدة الرحلة 340 دقيقة (5 ساعات و 40 دقيقة). 340 دقيقة بعد 13:25 هي 19:05 (7:05 مساءً). يجب أن يُخرج برنامجك النتيجة بهذا التنسيق:
Arrival hour is 19
Arrival minute is 5
يجب أن تكون ساعة الوصول بين 0 و 23. مثال: إضافة 120 دقيقة إلى 23:00 يجب أن تكون 1:00، وليس 25:00. يجب أن تكون دقيقة الوصول بين 0 و 59. مثال: إضافة 20 دقيقة إلى 8:55 يجب أن تكون 9:15، وليس 8:75.
تلميح: اضرب الساعة الحالية في 60 لتحويل الساعات إلى دقائق. ثم، احسب وقت الوصول، بالدقائق الكلية، كعدد صحيح.
يجب ألا تستخدم شِفرتك كلمات بايثون المحجوزة من الفصول اللاحقة، مثل if أو while. يتطلب الحل فقط الجمع والضرب والقسمة وباقي القسمة.
جرّب بنفسك
آلة الصرافة
أصبحت ممرات الدفع الذاتي تحظى بشعبية متزايدة في محلات البقالة. يقوم العملاء بمسح سلعهم بأنفسهم، ويحدد الحاسوب إجمالي مبلغ الشراء. يقوم العملاء الذين يدفعون نقدًا بإدخال الأوراق النقدية الدولارية، وتقوم الآلة تلقائيًا بصرف الفكة في صورة عملات معدنية.
هنا يأتي دور هذا البرنامج. مهمتك هي حساب عدد كل عملة معدنية يجب صرفها. يجب أن يستخدم برنامجك المِحَثّات التالية (إدخال المستخدم بالخط العريض):
Total amount? 18.76
Cash payment? 20
يمكنك افتراض أن المبلغ النقدي المدفوع سيكون دائمًا عددًا صحيحًا (يمثل الأوراق النقدية الدولارية) أكبر من أو يساوي المبلغ الإجمالي. يجب أن يحسب البرنامج ويُخرج مبلغ الفكة المستحقة وعدد الدولارات، والربع دولار، والعشرات، والخمسة سنتات، والسنتات التي يجب صرفها:
Change Due $1.24
Dollars: 1
Quarters: 0
Dimes: 2
Nickels: 0
Pennies: 4
تلميح: احسب إجمالي الفكة، بالسينتات، كعدد صحيح. استخدم دالّة round() لتجنب أخطاء الفاصلة العائمة.
يجب ألا تستخدم شِفرتك كلمات بايثون المحجوزة من الفصول اللاحقة، مثل if أو while. يتطلب الحل فقط الطرح والضرب والقسمة وباقي القسمة.