الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

الفرق بين تعريف الدالتين؟

بدأه Hisham_IT في 13 أغسطس 2011 · 5 رد · 627 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته....

انا مبتدئ جدا بالسي....

سؤالي الاول هو ما الفرق بين الدالتين في طريقة الكتابة...؟؟؟؟

function1(a,b)
char a;
char b;
{
//code here
}


function2(char a,char b)
{
//code here
}

و سؤالي الاخر....عن استخدام union

union f
{
int v1;
int v2;
char v3
}f_Variable

هل هذا معناه ان المتحول f_variable يستطيع الوصول الى عناصر v1,v2,v3 ...اي مثل struct ام ماذا؟

Currently working on ASP.net ..... come Back Soon

#2

بالنسبة للسؤال الاول ..

من اين لك الشكل الاول للدالة .. ؟

الشكل الثاني هو الاصح طبعا .. والسبب هو

1. ان كل جزء او Block في الكود .. يتم عزله باستخدام الاقواس { } .. اي ان الكود الذي في داخلها يمثل جسم ذلك الجزء .. سواء اكان دالة او اجراء او هيكل .. الخ ..

2. طريقة تعريف المتغيرات في الدوال على شكلين .. اما ان تكون كدوال ترسل بياناتها من الدالة الرئيسية او دوال اخرى - اي ان تأتي البيانات من خارج الدالة لتقوم بمعالجتها - او ان يتم تعريفها في جسم الدالة لتقوم بالعمليات عليها فقط لكن هنا هذه المتغيرات الداخلية لا علاقة لها بالعالم الخارجي .. الا اذا تم استخدام متغيرات عامة في البرنامج ككل ..

لذلك الاصح هو عملية تعريف الدالة بالشكل التالي ..

Func1 ( Parm1  , Parm2 ..... ParmN ) 
{

Variables 
and 
Code

}

شاهد ان النقطتين اعلاه تحققت في الكود السابق ..وهي مسالة جسم الدالة التي تم تحقيقيها من خلال الاقواس .. وكذلك المعاملات التي تم ارسالها الى الدالة والتي هي Parm1 , Parm2 ....

وان ما بداخل جسم الدالة هي عبارة عن متغيرات وليست معاملات ..

و لايمكن تعريف المتغيرات الداخلية بنفس اسماء المعاملات الخاصة بالدالة .. لانه سيحدث تضارب ..

----------------------------

السؤال الثاني

نعم ممكن ان يصل الى المتغيرات الداخلية لكن بالتاكيد نتائج الوصول ليست كما هو الحال مع struct .. والا ما فائدة وجوده ؟

الفرق هو ان الهيكل struct يصل الى متغيراته او عناصره في كل وقت وكلها مع بعض .. اي انك يمكن ان تغير اي جزء وتطبعه كما تريد

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

هذه معلومات بسيطة اتمنى ان تخدمك ..

تحياتي العطرة .

1

يَارَبُ إِن ضَاقَت قُلُوُب الْنَّاسٍ عَنْ مّافِي .. مِنْ خَيْرٍٍ فَعَفْوكَ لَا يَضِيْقْ ..

#3

شكرا لك اخي سنان على الرد....

بالنسبة لطرق تعريف البارميترات و الحاجات دي بعرفها و الحمدلله...و بالنسبة لل union إن شاء الله فهمتها جزاك الله خيرا....

بس بالنسبة للشكل الاول للدالة....عندما كنت أقرأ كتاب عن السي لاول مرة....(انا قارئ من قبل عن cpp )....بس في السي عند شفت التعريف ده الغريب تفاجئت....

او يمكن انا ما فهمت على الكود....على اي حال هذا الكود اللي قرأته من الكتاب....

# include <stdio.h>
/* determine the largest of three integer quantities */
main( )
{
int a, b, c, d;
/* read the integer quantities */
printf(“\n a = “);
scanf( % d “ , &a );
printf(“\n b = “);
scanf( % d “ , &b );
printf(“\n c = “);
scanf( % d “ , &c );
/* calculate and display the maximum value */
d = maximum( a, b );
printf(“\n \n maximum = % d , maximum(c ,d ));
}/* determine the larger of two integer quatities */

maximum(x ,y )//this's the problem
int x ,y;
{
int z;
z = (x >= y ) ? x | y;
return(z);
}

Currently working on ASP.net ..... come Back Soon

#4

الشكل الأول لتعريف الدوال هو المستخدم في K&R C و Classical C و هي إصدارات انقرضت من عشرات السنين. قم بتغيير الكتاب الذي تقوم بالقراءة منه و احصل على كتاب حديث نسبياً. أي كتاب 1990 إلى وقتنا الحالي يفي بالغرض.

1
#5
اقتباس
بس بالنسبة للشكل الاول للدالة....عندما كنت أقرأ كتاب عن السي لاول مرة....(انا قارئ من قبل عن cpp )....بس في السي عند شفت التعريف ده الغريب تفاجئت....

او يمكن انا ما فهمت على الكود....على اي حال هذا الكود اللي قرأته من الكتاب....

اقتباس
الشكل الأول لتعريف الدوال هو المستخدم في K&R C و Classical C و هي إصدارات انقرضت من عشرات السنين.

لذلك اعتمد على الاسلوب المعتمد منذ سنوات .. وهو كما وضحته لك في ردي السابق ..

يَارَبُ إِن ضَاقَت قُلُوُب الْنَّاسٍ عَنْ مّافِي .. مِنْ خَيْرٍٍ فَعَفْوكَ لَا يَضِيْقْ ..

#6

سنان..خالد...شكرا لكما.... سأغير الكتاب ان شاء الله

Currently working on ASP.net ..... come Back Soon

مواضيع مشابهة