أنت هنا:برمجها»اللغة س»الدرس 3: العوامل والإنشاءات
الدرس 3: العوامل والإنشاءات الدرس 3: العوامل والإنشاءات
قيم الموضوع
(1 تصويت)
 

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


 1. الأنواع الاعتيادية

لعلمك فإنه في علم الرياضيات تنقسم الأعداد إلى عدة مجموعات أهمها ما يلي:

IN   وهي مجموعة الأعداد الصحيحة الطبيعية :( 0 ، 1 ، ... ، n )
ZZ وهي مجموعة الأعداد الصحيحة النسبية :(n ، ... ، 1، 0 ، -1 ، ... ، -n )
Q وهي مجموعة الأعداد الجذرية :كل عدد يمكن تمثيله على الشكل التالي  q/p
IR وهي مجموعة الأعداد الحقيقية :كل المجموعات الأولى + الأعداد العشرية


في اللغة C توجد عدة مجموعات مشابهة:

C يحتوي على المجموعات التي في الأعلى كلها، لكن هناك فرق بين الرياضيات و C :

في الرياضياتn وp وغير محدودة.

في اللغة السي: محدودة .

قبل التطرق لاستعمال أي نوع يجب معرفة المجال الذي ينتمي إليه وكذلك عدد الأثمان (byte أو octet) الذي يأخذها في الذاكرة.


 2. تعريف المتغيرات البسيطة

في الخوارزم في C
 <نوع>  <متغير1>،<متغير2>،...،<متغيرn>

 <Type> <NomVar1>,<NomVar2>,...,<NomVarN>;

أمثلة:

في الخوارزم في C 

 صحيح X,Y,compteur
 حقيقي  hauteur,latgeur
 حقيقي masse_atomique

 حرف   touche
 منطقي  t_pressee

int compteur,X,Y;
float hauteur,largeur;
double masse_atomique;
char touche;
int t_pressee;

 

ملاحظة :الأنواع المنطقية لا توجد في C ،ويمكن تمثيلها بـ int  حيث تأخذ القيمة 1 = صح أو 0 = خطأ 


التمرين 3.2

ترجم إلى C التعريفات التالية مع احترام المجال المقدر لها :

(1)

صحيح

COMPTEUR

{0 ,..., 300}

(2)

صحيح

X,Y

{120- ,..., 100}

(3)

صحيح

MESURE

{10- ,..., 104}

(4)

حقيقي

SURFACE1

{0.5 ,..., 150075}

(5)

حقيقي

SURFACE2

{12- ,..., 1500750.5}

(6)

صحيح

N1

{0 ,..., 210} 

(7)

صحيح

N2

{47- ,..., 47}  

(8)

صحيح

N3

{0 ,..., 326} 

(9)

صحيح

N4

{1280- ,..., 1285} 

(10)

منطقي

TROUVE

{خطأ, صح} 

 3. العوامل


3.1.التهيئة

التهيئة في الخوارزم التهيئة في C

في <المتغير> نضع <القيمة>

;<variable> = <value>

أمثلة :

- التهيئة بالقيم الثابتة :

 الخوارزم

C

نوع الثابتة

نضع 141 في LONG  

  LONG = 141;

ثابتة صحيحة

نضع 3.1415926 في PI

  PI = 3.1415926;

ثابتة حقيقية

نضع "L" في NATION

  NATION = 'L';

ثابتة حرفية

- التهيئة بقيم المتغيرات :

 الخوارزم

C

نضع X1A في VALEUR 

 VALEUR = X1A;

نضع COURRIER في LETTRE

 LETTRE = COURRIER;

- التهيئة بقيم الإنشاءات :

الخوارزم

C

نضع PI*R2 في AIRE 

 AIRE = PI*pow(R,2);

(A+B)/2 نضع  MOYENNE في  

 MOYENNE = (A+B)/2;

 sin2(X)+cos2(X) نضع  UN في

 UN=pow(sin(X),2)+pow(cos(X),2);

نضع 45+5*X في RES 

 RES = 45+5*X;

نضع (X>Y) في AKBAR 

 AKBAR = (X>Y);

نضع ('a'='a') في CORRECT

 CORRECT = ('a' == 'a');


4 الإنشاءات والأوامر


4
.1 تعريف

الإنشاء: هو كل أمر منته بالرمز ';'

4.2 أمثلة

printf("salamo 3alaikom");    /* الإنشاء الأول*/
c=getchar();                          /* الإنشاء الثاني*/
x+=2;                                    /* الإنشاء الثالث*/
y++;                                      /* الإنشاء الرابع*/


 5 أولوية أو أسبقية العوامل

التصنيف العوامل
 الأولوية الأولى () 
 الأولوية الثانية ! ++ -- 
 الأولوية الثالثة * / % 
 الأولوية الرابعة + - 
 الأولوية الخامسة < <= > >= 
 الأولوية السادسة == != 
 الأولوية السابعة && 
 الأولوية الثامنة || 
 الأولوية التاسعة = += -= *= /= %= 

التمرين 3.5

لنعتبر القيم التالية :   a=20   b=5   c=-10   d=2   x=12   y=15

حدد في كل حالة من الحالات التالية القيمة الناتجة عن الإنشاءات وقيم المتغيرات العددية التي قد تم تغيير محتواها :

 

(1) (5*X)+2*((3*B)+4)   
(2) (5*(X+2)*3)*(B+4)    
(3) A == (B=5)           
(4) A += (X+5)           
(5) A != (C *= (-D))     
(6) A *= C+(X-D)         
(7) A %= D++             
(8) A %= ++D             
(9) (X++)*(A+C)          
(10) A = X*(B<C)+Y*!(B<C)   
(11) !(X-D+C)||D            
(12) A&&B||!0&&C&&!D        
 (13) ((A&&B)||(!0&&C))&&!D   
(14) ((A&&B)||!0)&&(C&&(!D))

التمرين 3.6

أزل الأقواس غير الضرورية في إنشاءات التمرين 3.5 .


 6 الدوال الحسابية الاعتيادية

غالبا عندما نتحدث عن الدوال الحسابية فإننا نتحدث عن المكتبة <math.h>
ولاستدعائها في الشفرة نكتب:
#include <math.h>

متغيرات الدوال الحسابية  ونتيجتها من نوع double ، إليك أبرزها :

الكتابة في C

الشرح

الكتابة الخوارزمية

 exp(X)

الدالة الأسية

 eX
 log(X) خوارزم أو لوغاريتم طبيعي  ln(X), X>0
 log10(X) خوارزم أو لوغاريتم بـ 10  log10(X), X>0
 pow(X,Y) X أس Y  XY
 sqrt(X) جذر مربع X  √x
 fabs(X) القيمة الطلقة X  |X|
 floor(X) تقريب بتفريط  int(X)
 ceil(X) تقريب بإفراط  
 fmod(X,Y)

باقي القسمة الجذرية لـ X/Y

 
 sin(X) cos(X) tan(X)

الدوال المثلثية

 جيب وجيب التمام ومماس X

 asin(X) acos(X) atan(X)

الدوال المثلثية العكسية

 
 sinh(X) cosh(X) tanh(X)

الدوال المثلثية الهدلولية

 

التمرين 3.7

قم بتعديل الشفرة التالية بحيث تظهر حسب ما يلي:

* AB

*وتر مثلث قائم الزاوية ذي الضلعين A  و B ،

* مماس A (يعني tan ) باستعمال الدالتين sin  و cos ،

* القيمة المقربة بتفريط  لـ  A/B،

* القيمة المقربة بتفريط لـ 3 مواقع وراء الفاصلة لـ A/B،

#include <stdio.h>
main()
{ double A;
  double B;
  double RES; 

  /*  A و B قراءة قيمتي */
  printf(" A : "); 
  scanf("%lf", &A);
  printf(" B : ");
  scanf("%lf", &B);

  /* الحساب*/
  RES = A*A;
  /* إظهار النتيجة على الشاشة */
  printf("A^2 = %f \n", RES);

  /* الحساب*/
  RES = B*B;
  /* إظهار النتيجة على الشاشة */
  printf("B^2 = %f \n", RES);

 return 0; 
}

 7. تحويل نوع المتغيرات

7.1 التحويل التلقائي

مثال 1:

نعتبر الحساب التالي :

int I = 8;         
foat X = 12.5;     
double Y; Y = I *X;


لأجل العملية
Y = I * X سيكون لدينا :

I سيصبح من النوع float لأجل أن يضرب في X إذن ستصبح النتيجة من النوع float.

-  بما أن  Y من النوع double سيتم تحويل النتيجة إلى double. وسنحصل في النهاية على النتيجة  :  Y = 100.00 

مثال 2:

نعتبر الحساب التالي :

     int A = 200;
 int RES;
         RES = pow(A, 2);

لأجل العملية (RES = pow(A, 2 سيكون لدينا :

-  بما أن الدالة pow  ومتغيراتها من النوع double  سيتم تحويل A  و 2  إلى النوع double .

-  بما أن  RES  من النوع int  سيتم تحويل النتيجة إلى int.


7.
2 قوانين التحويل

يتم التحويل تلقائيا عند كل عملية حسب :
1- char و short يحولان إلى أكبر نوع من الأنواع int,  unsigned int,  long,  unsigned long
2- النوع الصحيح  يحول إلى النوع الحقيقي 
3- النوع الحقيقي يحول إلى أكبر نوع من الأنواع float,  double,  long double


 التمرين 3.8

لتكن التعريفات التالية :
long A = 15;
                       char B = 'A'; /* code ASCII : 65 */
 short C = 10;

حدد نوع وقيمة كل من الإنشاءات التالية:

           (1) C + 3                 
           (2) B + 1                 
           (3) C + B                 
           (4) 3 * C + 2 * B         
           (5) 2 * B + (A + 10) / C  
           (6) 2 * B + (A + 10.0) / C

  7.3 التحويل الإجباري (بالقوة)

مثال 1 : التحويل التلقائي

نعتبر الحساب التالي :

char A=3;
int B=4; 
float C; 
C = A/B; 

نلاحظ أولا أن المتغيرات العددية A و B و C مختلفة من جهة النوع.

لأجل العملية C = A/B  سيكون لدينا :

A سيصبح من النوع int لأجل القسمة الصحيحة إذن ستصبح النتيجة من النوع int (النتيجة هي 0  لأن القسمة الصحيحة لـ 3 على 4 ستكون نتيجتها هي 0 والباقي هو 3 ، لكن ما يهمنا هنا هو النتيجة لأنه لدينا عددين صحيحين ) .

-  بما أن  C من النوع float  سيتم تحويل النتيجة التي هي 0 إلى float  . وسنحصل في النهاية على النتيجة  :  C = 0.0 

مثال 2 : التحويل الإجباري

نعتبر الحساب التالي :

char A=3;        
int B=4;           
float C;             
C =(float)A/B;

 

نلاحظ أولا أن المتغيرات العددية A و B و C مختلفة من جهة النوع.

لأجل العملية C = (float)A/B  سيكون لدينا :

B و A سيصبحان من النوع float لأجل التحويل الإجباري(float) إذن ستصبح النتيجة من النوع float (النتيجة هي 0.75  لأن القسمة الحقيقية لـ 3 على 4 ستكون نتيجتها هي 0.75 والباقي هو 0 ) .

-  بما أن  C من النوع float  سيتم تحويل النتيجة التي هي 0.75 إلى float  . وسنحصل في النهاية على النتيجة  :  C = 0.75 

ملاحظة :لأجل تحويل أي عدد أو نتيجة إلى نوع معين type إجباريا يجب وضع النوع أمامه (type).


 تأليف

المؤلف الأصلي: فرديريك فابر (Frédéric FABER)

البريد الإلكترونيعنوان البريد الإلكتروني هذا محمي من روبوتات السبام. يجب عليك تفعيل الجافاسكربت لرؤيته.

الموقع الإلكتروني http://www.ltam.lu/cours-c

ترجمة بتصرف: محمد عبد الرحمان


 

أضف تعليقا


إصنعها يريد أن يتأكد أنك لست روبوتا، لذلك أحسب ما يلي:

كود امني
تحديث