
المؤثرات و أنواعها في لغة سي
المؤثرات ( Operators ) هي عبارة عن رموز خاصة تُستخدَم في العمليات الحسابية مثل الجمع و الطرح و القسمة و المنطقية التي تجري على المتغيرات و توجد عدة أنواع من المؤثرات وهي:
- المؤثرات الحسابية العادية مثل (الجمع, الطرح, الضرب, القسمة, باقي القسمة…الخ).
- المؤثرات المنطقية ( Logical Operators ) و تعتمد على المؤثرات العلائقية في نتيجتها و لها رموزها الخاصة.
- المؤثرات العلائقية تعتمد على المقارنة بين قيمة و قيمة أخرى, حيث النتيجة إما صحيحة(true) أو خاطئة (false).
في المؤثر المنطقي الثاني من النقاط السابقة الناتج يكون 1 إذا كانت الإجابة صحيحة و يكون 0 إذا كانت خاطئة إعتماداً على جدول الصواب و الخطأ لكل مؤثر, و تستخدم لتكوين جملة شرط مثل
/ Code C 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 عند إستخدام عملية اكبر من او يساوي.
/ Code C Language 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. ونتيجته هي:
/ Code C Language x == y ? 0
نلاحظ أنه طَبَعَ لنا القيمة 0 أي تعني False و هي أن 1 لا يساوي الـ 5, أما إذا وضعنا للمتغير x القيمة 5 و المتغير y يبقى نفس القيمة 5 حينها سيتحقق هذا الأمر و يطبع لنا رقم 1 أي True كما بالشكل.
/ Code C Language x == y ? 1