ارجو من الاخوه مسااعدتي في فهم functions definitions و function prototypes:
وايش الفرق بيينهم:eek:
ليش نستخدمها ايش الفائده منها:eek:
وشكرااااااااا
ارجو من الاخوه مسااعدتي في فهم functions definitions و function prototypes:
وايش الفرق بيينهم:eek:
ليش نستخدمها ايش الفائده منها:eek:
وشكرااااااااا
كل functiom في ال c لزم يكون لها 3 اشياء:
1-prototype
2-call
3-definiton
مثلا: int ahmed(char a);
هذا هو ال prototype
ويكون دائما في اعلى البرنامج
فوق ال main
اما عن ال call
ahmed('a');
ويكون داخل ال main او اي function اخرى
يعني function تنادي على function
اما ال definition
فهو هيكل ال function يعني هذه ال function ماذا تفعل
ويكون مثلا:
int ahmed(char a){
printf("n %c",a);
}
نجد انه ال prototype موجود هنا
int ahmed(char a)
ولكنه تلاه {
وليس ;
وبعدين الكود ال function
وعلى فكره ممكن نكتب ال definition
قبل ال main
او
بعده
والله اعلم
شكرا لك على الشرح الوافي
لاااكن ايش الفائده منهم في البرامج
يا عزيزتى ال function تسهل علينا كثيرا اذا كانت البرامج كبيره او اذا كان عدد من الاسطر يتكرر كثيرا فنلجا الى ال function
ال prototype
يقوم بالاعلام للبرنامج عن ال function كما لو تعلنى عن متغير معين
فاذا لم تكتبيه فلن يتعرف البرنامج على ال function و سوف يظهر errror
اما ال defintion
فهو الاسطر التى تتكرر اكثر من مره نقوم بوضعها فى ال definition
ثم ننادى عليها من ال main فى سطر واحد يكون اسم ال function
مثال :
سوف نرسل لك برنامج يشرح ما سبق
السلام عليكم ورحمة الله وبركاته
إلى الأخ الكريم ردك جميل ولكن لي ملاحظة بسيطة وهي أنك قلت كل دالة في السي لازم تحتوي على ثلاث أشياء وهذا ليس صحيح فقد يكون التعريف هو نفسه الاعلان وبذلك يستغنى عن الاعلان....
أما لك أختي الكريمه فأن الفرق الجوهري هو أن الاعلان عن الدالة فقط يعرف أو يعلم المترجم بعدد المدخلات والمخرج واسم الدالة ولا يحجز مكان في الذاكرة.
أما التعريف فيحجز مكان في الذاكرة ....
والدوال مهمة جداً حاولي اتقانها ...
وللأستزاده من هذا الموضوع هناك شرح لي في منتدى المبرمجين العرب تستطيعين الذهاب للموقع ومشاهدته فربما ساعدك ذلك " الفتاك"
اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم
سبحان الله وبحمده سبحان الله العظيم
لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).
ملحوظة اخري ان الاعلان عن الـ Function له اسم اخر بالاضافة الي Prototype
وهو Decelration وهذا الاسم شائع الاستخدام في العديد من اللغات مثل C++ و الجافا
تحياتي
السهم الناري ممكن تعطيني اللنك حق الموقع المبرمجين العرب..........
واكون شاكره لك .........ز
الا خ السهم الناري انا دخلت منتدى المبرمجييين العرب وما وجدت الموضوع اللي تقول عليه:(
وياليت لو احد شرحلي ال
scope ruls
1)file scope
2)blok scope
3)function prototype scope
وشكراااااااااااااااا
موضوعي له فتره ولاا احد رد علي :mad::mad:
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
يمكن القول ببساطة شديدة الscope هو عبارة عن الحيز الذي يمكن أن تبقى فيه الداله أو المتغير او البلوك داخل
مقطع ما -في التعاريف التاليه سناخذ في الاعتبار وجود المتغير-
فمثلا:
{
int x = 12;
// only x available
{
int q = 96;
// both q & x available
}
/* only x available
q out of scope */
}فبفهم هذا المنطق يمكن التعبير عن اي مصطلح مثل:
object scope
file scope
block scope
function prototype scope
=============================
file scope
جعل المتغير متاح لاي جمله(تصريح - statement) داخل نفس الملف المصدري
(in the same source code file)
-----------------------------
block scope
/* بنفس الطريقة */
جعل المتغير متاح لاي جمله(تصريح - statement) داخل نفس المجموعة أو البلوك
(in the same Block)
-----------------------------
function prototype scope
function prototype هي نفس المعنى لfunction Decleration
أي النموذج الاصلي للداله أو التصريح عن الداله والغرض منها ابلاغ المترجم Compiler بوجود داله
معينة ولتكن ()starline سنقوم باستخدامها كما في المثال:
//using VC++6 or VC++.NET
#include<iostream>
using namespace std;
#include<conio.h>
starline(); //functon decleration(prototype)
void main()
{
starline(); //call to function
cout<< "welcome to ArabTeam2000 Forum";
starline(); //call to function
getch();
}
//function definition
void starline()
{
for(int i=0; i<60; i++)
cout<<"*";
cout<<endl;
}والتالي function prototype scope
عبارة عن جعل المتغير متاح لاي جمله(تصريح - statement) داخل نفس النموذج الاصلي
===========================================
آمل ان تكون الاجابة صحيحة ومقنعة بالشكل الكافي
شكرا لك اخوي على هذا التوضيح
:)
شكرا لك اخوي على هالتوضيح لا كن ياليت توضح اكثر
؟؟؟؟؟؟؟؟؟؟
بسم الله الرحمن الرحيم
اختي الموضوع ابسط بكثير مما تتصوريه بمجرد ما حتفهمين المنطق Logic لمفهوم السكوب حتلاقي الموضوع بسيط ان شاء الله.
لذلك حوالي ان تبسطي الموضوع كالتالي:
انا قلت ان السكوب بشكل عام عبارة عن منطق. تمام
أي انه مفهوم من الممكن التعبير عنه في الحياة العملية. كيف؟
انا عندما دخلت على هذا المنتدى وبافتراض اني ابحث عن الموضوع اللي انتي كتبتيه - الدوال مثلا - فطبيعيا اني سادخل على منتديات البرمجة ثم منتدى مبرمجي السي ثم
سابحث عن الموضوع اياه.
لماذا لم ابحث عن الموضوع في منتدى الجافا أو الاوراكل مثلا مع انهم جميعا في منتدى واحد .
الاجابة بكل بساطة ان الموضوع غير موجود بمنتدى الجافا.
لماذا؟
لانه لا يمكن البحث عن سؤال في السي بمنتدى الجافا لان الموضوع تم تعريفه - اللي كتبتيه - داخل نطاق منتدى السي فقط ولم يكتب في منتدى الجافا.
كذلك في function scope مثلا
فموضوعك -الدوال- يمثل المتغير وليكن var
ومنتدى لغة السي يمثل الدالة ولتكن ( )varFunc المعرف فيها المتغير var -اللي هو موضوعك الدوال-
ومنتدى الجافا يمثل الدالة ( )newFunc
ومنتدى الفريق العربي باكمله عباره عن السورس كود (cpp file)
وبالتالي لكتابة برنامج يصف المشكلة يصبح الكود:
#include<iostream.h>
void varFunc();
void newFunc();
void main()
{
varFunc();
newFunc();
}
// الدالة التي تمثل منتدى السي
void varFunc()
{
int var = 2 //يمثل هذا المتغير الموضوع
cout << " In varFunc var = "
<< var;
}
// الدالة الاخرى والتي تمثل منتدى الجافا
void newFunc()
{
// المترجم لن يتعرف على هذا المتغير
cout << var; // بالتأكيد سيعطي خطأ لان المتغير خارج نطاق الدالة
}وهذا المفهوم ينطبق على بقية المصطلحات التي ذكرتيها.
والاغراض من هذا المفهوم متعددة مثل :
معرفة حياة المتغير مثلا هل المتغير سيبقى منذ ان يبدأ الماين الى ان ينتهي البرنامج او بمجرد انتهاء الدالة سينتهي.
هل بالامكان تغيير قيمة المتغير من دالة اخرى أم لا
متى ستبدا حياة المتغير هل من الماين او من عند استدعاء الدالة او من ملف اخر غير الموجود حاليا
التقليل من استخدام الذاكرة قدر الامكان حيث لا نعرف جميع المتغيرات بشكل جلوبال او عام.
واغراض اخرى ممكن لكي ان تتصوريها لان الموضوع كما ذكرت لكي انه منطق.
بالمناسبة هذا الموضوع يشبه موضوع Object Oriented فعندما تقومين بتعريف كلاس لا تذكرين اي معلومة للمترجم بان هذه الكلاس هي من مفهوم
البرمجة الشيئية Object Oriented ونفس الطريقة في الـScoping .
آمل ان تكون الفكرة وصلت بالشكل المطلوب لان هذا الموضوع يكون برايي أكثر اهمية في التعامل مع لغات مثل java أو #C
لان هاتين اللغتين Pure Object Oriented اي لغات برمجة شيئية بصورة بحتة خالصة.
واذا كانت هناك أي نقاط غامضة فانا مستعد لاعادة الشرح باذن الله .
والمعذرة على الاطالــــة ...
شكرا اخوي ماقصرت:)الله يزيدك
هذا الموضوع مغلق.