---
title: Basic Math
localeTitle: الرياضيات الأساسية
---
# الرياضيات في C

يوفر C الكثير من الخيارات للقيام بالرياضيات. سنبدأ ببعض العناصر الأكثر شيوعًا أولاً.

## الاشياء الاساسية

هذه الأمثلة التالية ليست شفرة كاملة ، بل هي مجرد أمثلة على شكل الشفرة. تذكر أنه في C ، سنحتاج إلى أن يتم الإعلان عن كل شيء قبل استخدامه - `result` ، ستحتاج `a` ، و `b` إلى أن يتم تهيئتها بالفعل وتعيينها إلى قيمة. وسواء أكانوا `int` `double` أو مهما كان مهمًا لمنع الأخطاء وفقدان المعلومات ، فسنصل إلى ذلك لاحقًا.

#### إضافة: `+`

يتم تنفيذ الإضافة بعلامة `+` ، مثل:

 `result = a + b; 
` 

في المثال أعلاه ، ستكون `result` المتغيرة مساوية لـ + b.

#### الطرح: `-`

يتم تنفيذ الإضافة باستخدام `-` مثل:

 `result = a - b; 
` 

في المثال أعلاه ، ستكون `result` المتغيرة مساوية للقيمة a - b.

#### الضرب: `*`

يتم تنفيذ الضرب بـ `*` ، مثل:

 `result = a * b; 
` 

في المثال أعلاه ، ستكون `result` المتغيرة مساوية للقيمة مضروبًا في b.

#### الشعبة: `/`

يتم تنفيذ القسم بـ `/` ، مثل:

 `result = a / b; 
` 

في المثال أعلاه ، ستكون `result` المتغيرة مساوية للفقرة ب. هذا ليس دائما جزءا من أكثر من ب ، ولكن. عند التعامل مع الأعداد الصحيحة ، تصبح الأمور مختلفة قليلاً عن ذلك لاحقًا.

# الأشياء غير الأساسية

## Modulo: '٪'

حسنًا ، تبدأ الأمور الآن في الحصول على القليل من الغرابة.

يتيح لك Modulo العثور على الباقي في القسمة. تذكر أنه مع الأعداد الصحيحة ، لا يمكن أن يكون لدينا عشري. الشعبة تدور حول إيجاد عدد المرات التي يتناسب فيها رقم واحد مع آخر ، أما الطريقة فهي عن إيجاد ما تبقى. خذ 27 مقسومًا على 4: 4 تناسب 27 مرة. 6 مرات 4 هي 24 ، مما يعني أن هناك 3 متبقية. نتيجة لذلك ، يكون 27٪ 4 هو 3. 10 مقسومًا على 5 هو 2 ، 2 مرات 5 هو 10 ، لذلك يوجد 0 متبقيًا. وكنتيجة لذلك ، يكون 10٪ 5 0.

يعتبر مشغل modulo أكثر أهمية مما قد تفكر به ، خاصة في C حيث يتم فرض الفرق بين النقطة العائمة والأرقام الصحيحة. الأمر يستحق أن تكون مرتاحًا. إليك مثال على ذلك:

 `result = a % b; 
` 

في المثال أعلاه ، ستكون `result` مساوية ل modulo b.

## الأعداد الصحيحة والرياضيات

الأعداد الصحيحة لا يمكن أن تحتوي على الكسور العشرية. وكنتيجة لذلك ، عند إجراء التقسيم مع الأعداد الصحيحة ، سيتم اقتطاع أي نوع من العلامة العشرية. على سبيل المثال ، 17 مقسومة على 10 هي 1.7. ومع ذلك ، إذا كنا نتعامل فقط مع الأعداد الصحيحة ، فإن هذه النتيجة ستكون 1 ، وليس 1.7. 10 يناسب 17 مرة ، لذا فإن الإجابة هي 1.

عند التعامل مع أرقام النقاط العائمة ، هذه ليست مشكلة. يمكن لأرقام النقاط العائمة أن تأخذ الأماكن العشرية ، لذلك لا داعي للقلق بشأن الأشياء التي يتم اقتطاعها.

### لماذا يقوم C بذلك؟

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

### لماذا لا نستخدم أرقام النقاط العائمة طوال الوقت؟

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

### كيف نتغلب على هذا؟

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

 `double result = 23.0 / 2; 
` 

# مثال كامل

 `#include <stdio.h> 
 
 // This is a comment. It gets ignored by the compiler, so we can write notes after the double slashes. 
 
 int main(void) { 
    int a = 3; 
    int b = 5; 
    int result = 0; 
 
    // Doing things with variables: 
    result = a + b; 
    printf("a plus b = %i \n", result); 
 
    // You can also do the operation inside the printf. 
    // Here's an example of that with subtraction: 
    printf("a minus b = %i \n", ab); 
 
    // You don't need to do this with variables at all. 
    // Here's an example of that with multiplication: 
    printf("10 times 5 = %i \n", 10*5); 
 
    // Here's a look at division. 
    // Notice that the decimals are truncated because we're dealing with integers. 
    printf("12 divided by 5 = %i \n", 12/5); 
 
    // Now let's force floating point numbers by including a decimal. 
    // Notice that even though these are integers, the decimal forces them to be 
    // treated as floating point numbers, so they aren't truncated. 
    // Note that I'm printing a double with %d, not an int with %i. 
    printf("12.0 divided by 5 = %d \n", 12.0/5); 
 
    return 0; 
 } 
` 

امنح هذه الفرصة لترى ما يحدث ، وتأكد من اللعب مع المشغلين والقيم لمعرفة ما وكيف تتغير الأشياء.

# مكتبة الرياضيات

يوفر C مكتبة رياضيات ( `math.h` ) التي توفر وظائف حسابية مفيدة متعددة. على سبيل المثال ، يمكن حساب قوة الرقم على النحو التالي:

 `int result = pow(2,3) // will result in 2*2*2 or 8 
` 

بعض دالات مكتبة ( `math.h` ) الأخرى التي قد تكون مفيدة هي:

`#include <math.h> double angle = cos(90.00); // Givs us 0.00 int result = sqrt(16); // Gives us 4 double result = log(10.00) // Gives us 2.30 (note this is ln(10), not log base 10)`

// كود C لتوضيح // استخدام وظيفة ceil.

# تتضمن

# تتضمن

انت مين () { float val1، val2، val3، val4؛

val1 = 1.6؛ val2 = 1.2؛ val3 = -2.8؛ val4 = -2.3 ؛

printf ("value1 =٪ .1lf \\ n"، ceil (val1))؛ printf ("value2 =٪ .1lf \\ n"، ceil (val2))؛ printf ("value3 =٪ .1lf \\ n"، ceil (val3))؛ printf ("value4 =٪ .1lf \\ n"، ceil (val4))؛

عودة (0)؛ }

# قبل أن تذهب ...

## مراجعة

*   هناك العديد من المشغلين الأساسيين:
*   `+` للإضافة
*   `-` للطرح
*   `*` للضرب
*   `/` للقسمة
*   `%` ل modulo
*   هناك أيضًا مجموعة مشغلين أكثر ، لكننا سنتناول التفاصيل فيما بعد.
*   الرياضيات العددية هي شيء أن C صارمة جدا حول.
*   C صارم للغاية حول أنواع البيانات
*   إذا تم تضمين الأعداد الصحيحة فقط ، فسيتم إرجاع عدد صحيح
*   إذا كان رقم النقطة العائمة متضمنًا في العملية ، يصبح ذلك الجزء من العملية نقطة عائمة
*   يوفر C مكتبة `math.h` مع وظائف متعددة مثل `pow` لحساب الطاقة من رقم.