الأرقام والعمليات الرياضية
| العملية أو النوع الرقمي | الرمز الرياضي في الشيفرة | مثال عملي والنتيجة البرمجية المتوقعة |
|---|---|---|
| int | يمثل الأرقام الكاملة بدون أي فواصل عشرية موجبة أو سالبة | كود 1000 أو كود -5 وتخزن بدقة كاملة |
| float | يمثل الأرقام الكسرية ذات الفاصلة العائمة في الذاكرة | كود 3.14 أو كود -2.5 وتستخدم للحسابات الدقيقة |
| complex | يمثل الأرقام التخيلية التي تتكون من جزء حقيقي وجزء تخيلي يُرمز له بالحرف j | كود 2+3j وتستخدم في التطبيقات الهندسية المتقدمة |
| عملية الجمع | الرمز الزائد زائد | كود 5 زائد 3 النتيجة 8 وتستخدم لدمج القيم الرقمية |
| عملية الطرح | الرمز الناقص ناقص | كود 10 ناقص 4 النتيجة 6 وتستخدم لإيجاد الفروق الحسابية |
| عملية الضرب | الرمز النجمة نجمة | كود 3 نجمة 4 النتيجة 12 وتستخدم لمضاعفة القيم |
| عملية القسمة التلقائية | الرمز الشرطة المائلة سلاش | كود 10 سلاش 3 النتيجة 3.333 وتنتج دائماً عدداً عشرياً float حتى لو كانت الأرقام تقبل القسمة تماماً |
| القسمة الصحيحة | الرمز شرطتان مائلتان دبل سلاش | كود 10 دبل سلاش 3 النتيجة 3 وتعمل على إهمال الكسر العشري تماماً وتقريب الناتج لأقرب عدد صحيح أقل |
| باقي القسمة Modulo | الرمز النسبة المئوية بالمئة | كود 10 بالمئة 3 النتيجة 1 وتستخدم لمعرفة المتبقي بعد توزيع الأعداد الصحيحة بالتساوي ومعرفة الأعداد الزوجية والفردية |
| حساب الأس العالي | الرمز نجمتان دبل نجمة | كود 2 دبل نجمة 8 النتيجة 256 وتستخدم لرفع العدد الأساس إلى القوة المطلوبة بكفاءة |
الأرقام والعمليات الرياضية (Numbers & Math Operators) 1. الأنظمة الرقمية في Python (Numeric Types) تتعامل لغة بايثون مع الأرقام عبر ثلاثة أنواع رئيسية مدمجة في نواتها، ويتم تخصيص النوع تلقائياً بناءً على طريقة كتابة القيمة الحسابية:
الأعداد الصحيحة (int): أرقام ممتدة خالية من الفواصل، تشمل الأرقام الموجبة، السالبة، والصفر.الأعداد العشرية (float): أرقام تحتوي على علامة عشرية تفصل بين العدد الصحيح والكسر. تجدر الإشارة إلى أن أي عملية قسمة عادية تنتج هذا النوع تلقائياً.الأعداد المركبة (complex): تستخدم في العمليات الرياضية والهندسية المعقدة، وتتكون من جزء حقيقي وجزء تخيلي متبوع بالحرف j (الذي يمثل الجذر التربيعي لـ $-1$).
2. العمليات الرياضية الأساسية والمتقدمة (Arithmetic Operators) توفر بايثون الرموز الرياضية القياسية لإجراء العمليات الحسابية، مع وجود معالجات خاصة للقسمة وحساب القوى:
أ) العمليات القياسية (الجمع، الطرح، الضرب) تتبع هذه العمليات المنطق الرياضي التقليدي، وإذا كانت جميع الأطراف أعداداً صحيحة، يكون الناتج عدداً صحيحاً، أما إذا احتوت العملية على عدد عشري واحد على الأقل، يتحول الناتج تلقائياً إلى نوع float.
ب) القسمة العادية (/ - Division) في بايثون، تؤدي الشرطة المائلة الواحدة دائمًا إلى إرجاع عدد عشري (float)، حتى لو كان العددين يقبلان القسمة على بعضهما بدون باقٍ.
ج) القسمة الصحيحة (// - Floor Division) تقوم هذه العملية بتقسيم العددين ثم التخلص من أي أرقام تقع بعد الفاصلة العشرية (إهمال الجزء الكسري تماماً دون تدوير)، لتعيد القيمة الصحيحة الأقل.
د) باقي القسمة (% - Modulo) تُعيد هذه العملية الجزء المتبقي بعد إتمام عملية القسمة الصحيحة بين رقمين. تُستخدم بكثرة في البرمجة للتحقق من قضايا مثل دورية العمليات أو معرفة ما إذا كان العدد زوجياً أم فردياً (إذا كان number % 2 == 0 فالعدد زوجي).
هـ) الأس المرفوع ( - Exponentiation) تُستخدم النجمتان المتتاليتان لحساب الأسس (رفع الأساس إلى القوة)، وهي بديل برمي سريع ومدمج يغني عن استدعاء مكتبات خارجية للحسابات الأسية البسيطة.
3. أولويات تنفيذ العمليات الرياضية (Operator Precedence) عند دمج عمليات متعددة في سطر برمي واحد، تتبع بايثون قواعد ترتيب العمليات الرياضية الصارمة والمعروفة عالمياً علمياً (PEMDAS)، وتسير الأولويات من الأعلى إلى الأقل وفق الترتيب التالي:
الأقواس ( ): العمليات داخل الأقواس تُنفذ أولاً قبل أي شيء آخر.
الأسس : تُحسب قيم الرفع الأسية ثانياً.
الضرب، القسمة، القسمة الصحيحة، وباقي القسمة (*, /, //, %): تُنفذ هذه العمليات حسب أسبقية ظهورها من اليسار إلى اليمين.
الجمع والطرح (+, -): تُنفذ في نهاية المطاف حسب أسبقية ظهورها من اليسار إلى اليمين.
| 1 | # العمليات الحسابية الأساسية |
| 2 | a = 15 |
| 3 | b = 4 |
| 4 | |
| 5 | print(a + b) # 19 |
| 6 | print(a - b) # 11 |
| 7 | print(a * b) # 60 |
| 8 | print(a / b) # 3.75 |
| 9 | print(a // b) # 3 (قسمة صحيحة) |
| 10 | print(a % b) # 3 (باقي القسمة) |
| 11 | print(a ** b) # 50625 (الأس) |
مثال 1: العمليات الحسابية
| 1 | x = 20 |
| 2 | y = 6 |
| 3 | |
| 4 | print(f"{x} + {y} = {x + y}") |
| 5 | print(f"{x} - {y} = {x - y}") |
| 6 | print(f"{x} * {y} = {x * y}") |
| 7 | print(f"{x} / {y} = {x / y:.2f}") |
| 8 | print(f"{x} // {y} = {x // y}") |
| 9 | print(f"{x} % {y} = {x % y}") |
| 10 | print(f"{x} ** 2 = {x ** 2}") |
مثال 2: مكتبة math للعمليات المتقدمة
| 1 | import math |
| 2 | |
| 3 | print(math.sqrt(144)) # 12.0 - الجذر التربيعي |
| 4 | print(math.pi) # 3.14159... |
| 5 | print(math.ceil(4.2)) # 5 - التقريب لأعلى |
| 6 | print(math.floor(4.9)) # 4 - التقريب لأسفل |
| 7 | print(math.abs(-15)) # 15 - القيمة المطلقة |
| 8 | print(math.pow(2, 10)) # 1024.0 |
مثال 3: عمليات التعيين المختصرة
| 1 | count = 10 |
| 2 | count += 5 # count = count + 5 → 15 |
| 3 | count -= 3 # count = count - 3 → 12 |
| 4 | count *= 2 # count = count * 2 → 24 |
| 5 | count //= 4 # count = count // 4 → 6 |
| 6 | print(count) # 6 |