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

استفسار لو سمحتوا

مغلق
بدأه طالبة مجتهدة في 6 مايو 2003 · 4 رد · 816 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مرحبا

انا مبتدئة في السي وابغى اسأل عن funcation call

اي اللي تنادي على funcation ثانية

ياليت اذا فية احد يعرف مايبخل علي في طريقة استخدامها ومثال عليها

لأني محتاجة افهمها باسرع وقت لانة عندي امتحان وماني عارفة متى استخدمها وكيف

الاستفسار الثاني

انة كيف اقدر افرق في كتابة الكود بين ال main

وال funcation

اي(في بعض الأمثلة مثلا يطلب انة قراة المدخلات تكون في ال main

بينما طباعة ال resalt

تكون داخل ال funcation

او نعمل عمليات في ال funcation

ونرجع نطبع في ال main

ياليت توضحون لي الاستفسارات بأسرع وقت

ولكم جزيل الشكر

مع خالص تحياتي

محبتكم

طالبة مجتهدة

#2

بسم الله الرحمن الرحيم

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

مثلا داخل function اخرى اهم ما في الموضوع :

1-ان يتم التصريح عن الداله قبل الماين

2-استدعاء الدالة داخل الماين

3-تعريف الدالة خارج الماين

/* هناك طرق اخرى يمكن تعريف واستخدام الدوال بها ولكن ارى ان هذه ابسطها*/

في المثال التالي سنقوم بتنفيذ الثلاثة شروط السابقة لاستدعاء دالة ()starline

ومهمة هذه الدالة طباعة سطر من النجوم كما يلي:

//using VC++6 or VC++.NET

#include<iostream>

using namespace std;

#include<conio.h>



void 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;

}

بالنسبة للاستدعاء داخلة اخرى بنفس الطريقة ما عليك سوى :

1- التصريح عن الدالة قبل الماين

2- الاستدعاء داخل function

3- تعريفها بعد الماين

فكما تلاحظين اختي اننا استدعينا الدالة cout الموجودة في مكتبة iostram ونفس الطريقة

لو قمت بتعريف دالة اخرى .

المثال بطريقة الاستدعاء من دالة اخرى:

//using VC++6 or VC++.NET

#include<iostream>

using namespace std;

#include<conio.h>



void callstrline(); //functon decleration(prototype)

void starline();    //functon decleration(prototype)



void main()

{

starline();  //call to function

cout<< "welcome to ArabTeam2000 Forum";

callstrline();  //call to function & then call to starline function

getch();     

}



//call starline

void callstrline()

{

  starline();

}



//function definition

void starline()

{ 

for(int i=0; i<60; i++)

  cout<<"*";

cout<<endl;

}

أما بالنسبة للسؤال الثاني وهو عن طريقة التفريق في الاستدعاء هل هي من خلال main أو function

فهذه الطريقة ترجع للمبرمج فمن الممكن القيام بالطباعة مباشرة من خلال الماين أو من خلال الدالة ففي المثال السابق قمت باستدعاء

الدالة متضمنة الطباعة ويمكن التعبير عنها هنا بصورة اخرى كما في المثال:

//using VC++6 or VC++.NET

#include<iostream>

using namespace std;

#include<conio.h>



char starline();    //functon decleration(prototype)



void main()

{

for(int i=0; i<60; i++)

cout<<starline();  //call to function

cout<< "n welcome to ArabTeam2000 Forum"<<endl;

for(int i=0; i<60; i++)

cout<<starline();  //call to function

cout<< endl;

getch();     

}



//call starline

char callstrline()

{

  char k = '*';

  return k;

}

وكما تلاحظين ان الطريقة الاولى اسهل. فكما ذكرت لكي ان الطريقة تختلف ولكن غالبا ما تؤدي نفس الغرض

مع ملاحظ ان هناك حالتين :

void بحيث لاترجع أي قيمة

وهناك int , char ...etc لترجيع قيمة معينة

والله أعلم :(

#3

عزيزتي

ان ال function وظيفتها التسهيل على المبرمج قدر المستطاع

معنى ال function call انه قد قمت بعمل function defintion مسبقا ورا تستعمليها او مش شرط ممكن انت لم تعملي ال function defintion و تستعملي ال function call مباشرة مثل الحال في ال printf,sacnf وكل الدوال

في ال c بس هنا ال function defintion يكون مكتوب فعلا في احد الاماكن.

المهم ال function call هو عباره عن اسم ال function نفسه ولكن بعض ال function نصممها على انها تحتاج الى بعض argoment مثل مثلا

ahmed(char x) هنا ال function تحتاج الى حرف من نوع char او متغير من نفس النوع char عندما نريد استعمال function call في ال main او في اي function اخرى نكون قد عملناها مسبقا

ahmed('a'); او ahmed(x); حيث x من نوع char وهاكذا

تابعي الاخ السهم الناري فلديه دروس في ال function

اما عن ال function و ال main و الفرق بينهم في كتابة ال code فليس هناك

فرق الا في اذا كانت ال function تحتاج الى argoment او انها ترجع لنا قيمه الى ال main او اي functino اخرى

اكتبي ما تشائين من الاسطر فلغه وحده.

هذه امثله عن ال function

وشكرا

fun.zip

#4

مشكورين اخواني ماقصرتوا

وبالنسبة لسؤالي الثاني انا عارفة انة كلة واحد لكن لما يكون متحدد في السؤال طريقة معينة كيف اسويها اذا سمحتوا يعني ايش الخطوات العامة

بالنسبة للملف المرفق للاخ nono00700

مو راضي يفتح معي علما اني استخدم الفيجول سي مو التربو فياليت توضح لي طريقة فتحة

ولكم جزيل الشكر

#5

بسم الله الرحمن الرحيم

اختي الطريقتين ليست وحده بمعنى انه مو في كل حالة حقدر احل بالفويد او الريترن فلو طلبت منك ارجاع اكثر من قيمة عن طريق return أو مثلا طلبت منك ارجاع قيم متتالية float و int و char فسيكون من الصعب وفي بعض الاحيان من المستحيل استخدام return

من رايي ببساطة:

اذا طلب منك تغيير قيمة واحدة عن طريق الدوال فاستخدمي return

اما اذا طلب منك تغيير اكثر من قيمة فاستخدمي void

من الامثلة على هذا الموضوع :

عندما تقومين ببناء ستاك Stack فدالة push تستخدمين لها void

ودالة pop تستخدمين لها return مثلا int

مثال stack يقوم بادخال الاسم ويرجعه بالعكس مثل: samrtDev يعطي veDtrmas

#include

#include

class Stack

{

private:

enum { MAX = 1000 };

char st[MAX];

int top;

public:

Stack()

{

 top = 0;

}

void push(char var)

{

 st[++top] = var;

}

char pop()

{

 return st[top--];

}

bool isEmpty()

{

 return (top == -1);

}

};

/////////////////////////////////

int main()

{

Stack s1;

char name[100];

while(name)

{

cout<< "=============================================";

cout << endl << "To Exit Type $ ";

cout << endl << "Please Enter Your String: " << endl;

cin>>name;

if (name[0] == '$' ) break;

cout << "your String was: " << name << endl;

int i=0;

while(name != '

هذا الموضوع مغلق.

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