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

[ تمت الإجابة ]سؤال عن وسطاء الدلة exit

بدأه Huck Finn في 27 ديسمبر 2011 · 5 رد · 4,512 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كما في السؤال,,,

ما الفرق بين exit(0), exit(1), exit(-1),, مع أمثلة بسيطة إن أمكن.....

......................

void function() const;

وما الفرق في تعريف الدالة أعلاه وهذه الدالة:

void function();

ماهي الإضافة التي تقوم بها const ولماذا يتم كتابتها في نهاية الدالة بعكس المتغيرات العادية حيث تكتب بداية المتغير مثل const int size=10;

ولكم جزيل الشكر سلفاً

#2

السلام عليكم

بالنسبة للسؤال الأول :

La fonction exit (permettant de quitter le programme) de la bibliothèque stdlib.h, dont le prototype est :

void exit(statut ) ;

où statut a le même role et les mêmes valeurs possibles que lors de l’instruction return statut;. Si return renvoie une valeur a la fonction appelante, donc ne quitte le programme que si lorsqu’elle est dans le main. L’appel à la fonction exit() quitte le programme quelque soit la fonction dans laquelle a lieu l’appel. La fonction exit() est donc à éviter si on fait des appels récursifs a la fonction main :

return fera terminer l’appel courant à main alors que exit() fera terminer le premier appel au main et donc tous les suivants (l’appel récursif a la fonction main n’est pas quelque chose de courant ou

souhaitable dans un programme en C, mais on sait jamais...).

أما السؤال الثاني فأظن أن هذا الرابط يكفي :

بالتوفيق.

تم تعديل هذه المشاركة بواسطة أحمد المتألق في 28 ديسمبر 2011 في 00:02

1 −1
#3
اقتباس
كما في السؤال,,,

ما الفرق بين exit(0), exit(1), exit(-1),, مع أمثلة بسيطة إن أمكن.....

بشكل عام وظيفة الدالة exit هى انهاء البرنامج وأرجاع القيمة الممررة اليها الى نظام التشغيل.

عندما تمرر القيمة صفر أو الثابت EXIT_SUCCESS فى الدالة exit فانها تنهى البرنامج وتخبر نظام التشغيل أو الكود المنفذ للبرنامج(مثل شيل فى لينكس أو دوس فى ويندوز) ان البرنامج تم تنفيذة بنجاح.

عندما تمررأى قيمة اخرى أو الثابت EXIT_FAILURE فى الدالة exit فانها تنهى البرنامج وتخبر نظام التشغيل أو الكود المنفذ للبرنامج (مثل شيل فى لينكس أو دوس فى ويندوز) ان البرنامج قد واجهة خطا ما وتم انهاء.

كود:

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
    cout << "Will exit now: ";
    exit( EXIT_SUCCESS); // same as exit(0);
    return 0;
}

والنتيجة واضحة ومحددة بالون الابيض:

post-247365-048442100 1325053210_thumb.p

وبالنسبة ﻻ حالة واخرى اخترنا رقم 100:

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
    cout << "Will exit now: ";
    exit( 100 ); // or exit(EXIT_FAILURE) = 1 or -1 accroding ur system.
    return 0;
}

والنتيجة :

post-247365-008027300 1325054608_thumb.p

ماذا عن القيم -1 و 1 وهما يدلان على EXIT_FAILURE وليس هما فقط ضف اليهما من عند 100 و 77 الخ..

انت كمصمم للبرنامج تعلم انه عندما رجع برنامج الخطأ رقم 100 مثلا يدل على عدم وجود ذاكرة كافية فى النظام.

وهكذا انت تحدد ما يسمى بمستويات الخطأ 1 ، 2، 6 ولها تفسيراتها عندك وتعرف معانيها.

نأتى الى قسم الثانى:

void function() const;

اذا كنت تقصد بها اﻻعلان عن دالة function فهذا ليس له معنى . ولشكل الصحيح هو

#include <iostream>
using namespace std;
const char *Function1() {     return "Some text";  }
int main()
{
    cout << Function1();
    return 0;
}

طبعا الفائدة واضحة فأن لن يستطيع احد اجراء اى تغيير فى السلسلة النصية المرجعة لانها ثابت من الدالة.

ﻻنة ممكن ان تكتب عفوا منك الكود التالى لتعديل النص. ولكن وجود const يمنعة.

    Function1()[1]=’a’;

أم اذا كنت تقصد استخدامها داخل الطرق methods فى الفئات وهذا واضح من كلامك.

وفائدتها ان الطريقة لن تتمكن من تغير اى متغير بداخل الفئة

نرى فى الكود التالى ان بأمكان الطريقة mx من تغيير قيمة المغير x الى 1:

#include <iostream>
using namespace std;
class mx
{
    int x;
    void Method1() ;
};

void mx::Method1()
{
    x=x+1;
}

ولكن اذا استخدمنا const كالتالى فأن المترجم سوف يصدر خطأ

#include <iostream>
using namespace std;
class mx
{
    int x;
    void Method1() const ;
};

void mx::Method1() const
{
    x=x+1;
}

أم اﻻعلان التالى معناها ان الدالة ﻻترجع اى قيمة

void function();

والفرق واضح بينها وبين سابقتها فاﻻولى لن تتمكن من تغير المتغيرات بالفئة ام الثانية فيمكنها ذلك وكلاهما ﻻيرجعان اى قيمة.

اقتباس
ماهي الإضافة التي تقوم بها const ولماذا يتم كتابتها في نهاية الدالة بعكس المتغيرات العادية حيث تكتب بداية المتغير مثل const int size=10;

فهى ﻻعتبارات التصميم يعنى علماء البرمجة وضعو ذلك ارجع الى دليل تطوير اللغة.

المرفقات
exit_success_zero.pngexit_fauier100.png

تم تعديل هذه المشاركة بواسطة محمد ابوزايد في 28 ديسمبر 2011 في 16:38

1 −1

post-15367-027053900%201340345097.gifpost-15367-087183200%201340344597.gif
post-247365-0-10080400-1379403554_thumb.

#4

شكراً لكم أخواني على الإجابات

أحمد المتألق:::

بالنسبة للسؤال الثاني شكراً على الرابط أفادني كثيراً

لكن بالنسبة للسؤال الأول فلم أفهمه...

أكون شاكراً لو تكرمت وترجمت إلى الإنجليزية أو العربية....

محمد أبو زايد:::

لم أجد كلمات تعبر لك عن مدى شكري..........

#5
اقتباس
أكون شاكراً لو تكرمت وترجمت إلى الإنجليزية أو العربية

إليك الشرح بالعربية, لم أقم بترجمة مباشرة .. ولكن المعنى متشابه :

توجد الدالة exit في المكتبة cstdlib و تكمن وضيفتها في إيقاف ( أو الخروج من ) البرنامج في مكان منه، هذه الدالة تشبة end في لغة البيسك

وتكون قيمة الدالة صفرا عندما يتم الخروج من البرنامج بنجاح وإلا فان قيمتها تكون واحد و تُوقِفُ البرنامج عند وجود خطأ أو نحو ذلك، عندها، يُعيد البرنامج تنفيذه إلى نظام التشغيل.

الدالة exit من موقع cplusplus :

1
#6

شكرا

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