freeCodeCamp/guide/arabic/c/math/index.md

8.9 KiB

title localeTitle
Basic Math الرياضيات الأساسية

الرياضيات في 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 لحساب الطاقة من رقم.