المؤثرات Operators
المؤثرات ( Operators ) هي عبارة عن رموز خاصة تُستخدَم في العمليات الحسابية مثل الجمع و الطرح و القسمة و المنطقية التي تجري على المتغيرات و توجد عدة أنواع من المؤثرات وهي:
- المؤثرات الحسابية العادية مثل (الجمع, الطرح, الضرب, القسمة, باقي القسمة...الخ).
- المؤثرات المنطقية ( Logical Operators ) و تعتمد على المؤثرات العلائقية في نتيجتها و لها رموزها الخاصة.
- المؤثرات العلائقية تعتمد على المقارنة بين قيمة و قيمة أخرى, حيث النتيجة إما صحيحة(true) أو خاطئة (false).
في المؤثر المنطقي الثاني من النقاط السابقة الناتج يكون 1 إذا كانت الإجابة صحيحة و يكون 0 إذا كانت خاطئة إعتماداً على جدول الصواب و الخطأ لكل مؤثر, و تستخدم لتكوين جملة شرط مثل
if(c==s && d==b)
في هذا السطر المؤثر && لوضع شرط التساوي بين طرفين.
مؤثر الجمع في لغة سي
مؤثر الجمع يأخذ الرمز (+) و تكون مهمته الجمع بين الأعداد أو النصوص في حال كنا نريد دمج نصوص.
#include<stdio.h> main() { int a , b , c; a=1; b=4; c=a+b; printf("%d",c); }
في هذا الكود قمت بالإعلان عن ثلاث متغيرات, الأول a و أعطيته قيمة 1 و الثاني هو b و أعطيته قيمه 4 و أما c فهي ناتج جمع a+b. فإنه سيقوم بجمع المتغير الأول مع الثاني و تخزين ناتجهم في المتغير الثالث و ناتج الجمع يساوي 5.
مؤثر الزيادة في لغة سي
مؤثر الزيادة Increment يرمز له بالرمز (++) و تعني زيادة رقم واحد 1 إلى المتغير الذي نريد الزيادة إليه مثلاً إذا أعطيت المتغير قيمة مبدئية قدرها 1 و قلت له في كل مرة زد من قيمه المتغير و إطبعه لي كما في المثال التالي.
#include<stdio.h> main() { int cs; cs=1; printf("cs = %d\n",cs); cs++; printf("cs = %d\n",cs); ++cs; printf("cs = %d\n",cs); }
أعلنت عن متغير إسمه cs و قمت بإعطاء المتغير قيمه 1 و في كل مرة نقول له زد لنا في القيمة ثم إطبع. عند تشغيل الكود سوف تكون النتيجة هي
cs = 1 cs = 2 cs = 3
مؤثر الطرح في لغة سي
يرمز لمؤثر الطرح بالرمز (-) و يكون لطرح عددين من بعضهم ضمن عملية حسابية.
#include<stdio.h> main() { int a, b, c; a=10; b=4; c=a-b; printf("%d",c); }
في هذا الكود قمت بالإعلان عن ثلاث متغيرات الأول a و أعطيته قيمه 10 و الثاني هو b و أعطيته قيمه 4. و أما c فهي ناتج طرح a-b, فإنه سيقوم بطرح المتغير الأول من الثاني و تخزين ناتجه في المتغير الثالث و ناتج الجمع يساوي 5.
مؤثر النقصان في لغة سي
للنقصان Decrement نستخدم المؤثر (--) و تعني تنقيص رقم واحد 1 إلى المتغير الذي نريد النقصان منه مثلاً إذا أعطيت المتغير قيمة مبدئية قدرها 1 و قلت له في كل مرة قم بإنقاص من قيمه المتغير و إطبعه لي كما في المثال التالي.
#include<stdio.h> main(){ int cs; cs=3; printf("cs = %d\n",cs); cs--; printf("cs = %d\n",cs); --cs; printf("cs = %d\n",cs); }
أعلنت عن متغير إسمه cs و قمت بإعطاء المتغير قيمة 3 و في كل مرة نقل له أنقص لنا في القيمه ثم إطبع. عند تشغيل الكود سوف تكون النتيجة هي
cs = 3 cs = 2 cs = 1
مؤثر باقي القسمة في لغة سي
تعني بإيجاد باقي القسمة بين العددين و الرمز المعروف له هو (%).
#include<stdio.h> main() { printf("%d\n",5%3); printf("%d\n",3%5); }
التنفيذ, ناتج القسمة في جملة الطباعة الأولى هي 2 و في الثانيه هي 3.
المؤثرات العلائقية في لغة سي
المؤثرات العلائقية Relational Operators تعتمد على المقارنة بين قيمة و قيمة أخرى، حيث النتيجة إما صحيحة(true) أو خاطئة (false), سيطبع واحد إذا كانت النتيجة صحيحه و صفر إذا كانت خاطئه.
#include<stdio.h> main(){ printf("%d\n",4<3); printf("%d\n",2==3); printf("%d\n",7>3); }
و الناتج سيكون
0 0 1
المؤثرات المنطقية في لغة سي
تعتمد المؤثرات المنطقية Logical Operators في نتيجتها على رموزها الخاصة, الناتج 1 إذا كانت الإجابة صحيحة و 0 إذا كانت خاطئة إعتماداً على جدول الصواب والخطأ لكل مؤثر.
#include<stdio.h> main() { printf("%d\n", 5<3 && 5>3); printf("%d\n", 5==3 && 5==3); printf("%d\n", 5>3 && 5<3); printf("%d\n", 5<3 || 5>3 ); printf("%d\n", 5<3 || 5!=3); printf("%d\n", 5<3 || 5>3); printf("%d\n", !5<3); printf("%d\n", !5<=3); printf("%d\n", !5<5);
و عند تشغيل الكود سوف نحصل على النتيجة.
0 0 0 1 1 1 1 1 1
مؤثرات المقارنة لغة سي
عمليات المقارنة Comparison Operators و التي يكون ناتج إستخدامها هو إما صح True أو خطأ False فهي لا تحتمل سوى هذين الإحتمالين. سوف نقوم بتوضيح كل من هذه العمليات في لغة C مع شرح معناها و كيفية إستخدامها.
رموز عمليات المقارنة في لغة سي
وجد في لغة السي C ستة عمليات مقارنة Comparison Operators يمكن من خلالها مقارنة قيمتين مع بعضهما البعض بحيث يكون ناتج المقارنة إما صح أو خطأ. و جميع هذه العمليات تتم بين قيمتين عدديتين و هذه العمليات هي:
- علامة المساواة ( == ).
- علامة اللامساواة ( =! ).
- علامة أكبر من ( < ).
- علامة أصغر من ( > ).
- علامة أكبر من أو يساوي ( =< ).
- علامة اصغر من أو يساوي ( => ).
بالنسبة للمساواة == يكون ناتجها صح True فقط في حال كانت كلتا الحالتين متساويتين تماماً و عدا عن ذلك فالناتج خطأ False.
5 == 4 //False 5 == 5 //True
النسبة لعدم المساواة =! فيكون ناتجها خاطئ False فقط في حال كانت كلتا القيمتين متساويتين تماماً عدا ذلك فالناتج صحيح True أي أنها معاكسة تماماً لمبدأ عملية المساواة كما يلي.
5 != 4 //False 5 != 5 //True
بالنسبة لعملية المقارنة اكبر من < فناتجها يكون صحيح في حال كانت القيمة الأولى من الجهة اليسرى اكبر من القيمة الثانية من الجهة اليمنى.
8 > 2 //True 8 > 8 //False
فهذا هو الإختلاف الرئيسي بين عمليتي اكبر من و اكبر او يساوي =< حيث سيكون الناتج True عند إستخدام عملية اكبر من او يساوي.
8 >= 8 //True
ناتج صحيح لأن 8 تساوي 8.
بالنسبة لعمليتي المقارنة اصغر من > و اصغر او يساوي => فهي مشابهة لمبدأ عمليتي اكبر من و اكبر او يساوي, إلا أنها معاكسة لها. فعملية اصغر من ناتجها سيكون True في حال كانت القيمة الأولى في الجهة اليسرى اصغر من القيمة الثانية في الجهة اليمنى و عملية => ناتجها True في حال كانت القيمة الأولى اصغر من القيمة الثانية أو انهما متساويان.
يمكن إستخدام عمليات المقارنة في الجمل الشرطية كـ جملة if التي تعرَّفنا عليها في الدروس السابقة, كما. يوجد في لغة سي C نوع بيانات خاص يسمى bool و يرمز للمصطلح boolean حيث يحتمل هذا النوع إما True او False. يمكننا تعريف متغير بيانات bool تماماً بنفس طريقة تعريف اي متغير آخر مثل (int, float).
مثال
#include <stdio.h> #include <stdlib.h> #include <stdbool.h> int main(int argc, char** argv) { int x = 1; int y = 5; bool var = x == y; printf("x==y ? %d",var); return 0; }
قُمنا بإنشاء مُتغيرين و هما x يساوي 1 و مُتغير آخر و هو y يساوي 5 ثم أنشأنا متغير من نوع bool و إسمه var و عيننا له القيمة هي x==y ثم قُمنا بطباعة الـ var. ونتيجته هي:
x == y ? 0
نلاحظ أنه طَبَعَ لنا القيمة 0 أي تعني False و هي أن 1 لا يساوي الـ 5, أما إذا وضعنا للمتغير x القيمة 5 و المتغير y يبقى نفس القيمة 5 حينها سيتحقق هذا الأمر و يطبع لنا رقم 1 أي True كما بالشكل.\
x == y ? 1