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

الموضوع بخصوص دوال السى/السى++

مغلق
بدأه TYEF في 11 فبراير 2005 · 10 رد · 747 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته أما بعد,

أود لو أحد يجيبنى ويساعدنى بشرح كيفية عمل دالة نصية وحرفية وكذلك شرح معاملات الدالة الرئيسية من كل نوع مثل وهل يوجد ماكرو نصى وحرفى.

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

#2
اقتباس
بشرح كيفية عمل دالة نصية وحرفية وكذلك شرح معاملات الدالة الرئيسية من كل نوع مثل وهل يوجد ماكرو نصى وحرفى.

ماذا تقصد بدالة نصية وحرفية , وماذا تريد من الدالة أن تفعل أصلا ؟

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#3

لم أفهم من سؤالك أي شيء سوى تلك التي تخص الدالة main

تستخدم معاملات هذه الدالة في سطر الأوامر الخاص بنظام التشغيل ، حيث أن argc يدل على عدد أجزاء سطر الأوامر ، و argv هي المصفوفة التي ستحمل الأمر:

فمثلا في نظام لينوكس هذا الأمر لعرض الترتيب حسب وقت الإنشاء

ls -r

ففي هذه الحالة سيكون argc=2 ،

وسيكون argv[1]=ls

و argv[2]=-r

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

وإليك هذا المثال البسيط

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
if(argc!=2) {
printf("You forgot to type your name.\n");
exit(1);
}
printf("Hello %s", argv[1]);
return 0;
}

لنفرض مثلا أن هذا البرنامج اسمه name.exe

فلو قمت بكتابة هذا السطر

name tyef

فسوف يخرج لك الآتي

HELLO tyef

هذا بشكل مختصر وسريع.

وأرجو أن توضح بقية سؤالك.

والسلام عليكم

System Engineer

Red Hat Certified Engineer

Red Hat Certificate Number

805010381752078

#4

أنا شاكر ليكم يا إخوانى وأسف إن أكن وضحت سؤالى أما بعد ,

أولا : أقصد بدالة حرفية أو نصية : دالة تعيد قيمة نصية

(string function(string Variables

وأقصد بالة حرفية : دالة تعيد قيمة حرفية

(char function (char variables

مثل : باقى الدوال ولنفرض دالة تعيد قيمة صحيحة :

(int function (int a,int b

أما معاملات الدالة الرئيسسة هما الإثنين دول بس ؟

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

تم تعديل هذه المشاركة بواسطة TYEF في 12 فبراير 2005 في 01:16

#5

بالنسبة للدالة main فهذه القياسية، ويمكن أن يختلف الأمر في بعض compiles كما في vc++ .

أما موضوع char,string ،

فهم تقريبا يعملان نفس العمل ولكن string مساحتها التخزينية أكبر ، ويطبق عليها الكثير من العمليات مثل النسخ والمقارنة والجمع وما إلى ذلك.

ويتم التعامل معها من خلال pointers حتى يكون التعامل أسهل وأسرع.

بالمناسبة ما الذي تقصده من :

اقتباس
وهل يوجد ماكرو نصى وحرفى

والسلام عليكم

System Engineer

Red Hat Certified Engineer

Red Hat Certificate Number

805010381752078

#6

معلش أنا عارف إنى طولت لكن ماذا تقصد بكلمة قياسية أى ليس لها إلا هذان المعاملان

أما قصدى بالدالة النصية والحرفية انت فهمتنى بس لو تعرف تدلنى على أمثلة ليهم لإنى مش عارف أطبقهم وأقصد بالماكرو هل الماكرو للعمليات الحسابية فقط أم للنصية ايضا.

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

#7

أخي الحبيب لا عليك.

بالنسبة لكلمة القياسية فأقصد بها المواصفات الخاضعة ل ANSI ، وبالنسبة للدالة main فلا يوجد لديها إلا هذان المعاملان في الحالة القياسية ، وهي الحالة المتبعة في معظم compiles ، وهي الأفضل.

بالنسبة لموضوع string هذا ، فحتى تفهمه جيدا راجع كتاب c++ compelete refernce حيث أني وضعته في هذه المشاركة:

/index.php?showtopic=56572

ولو وجدت أي صعوبة فأخوك في الخدمة إن شاء الله.

أما موضوع الماكرو، فيوجد للإثنان الحسابي منها والنصي ، وإليك هذان المثالان الصغيران:

#define LEFT 1
#define RIGHT 0
cout<<RIGHT<<LEFT<<1+LIFT;

وهذا البرنامج سيخرج الآتي

0 1 2

وإليك هذا المثال الذي يوضح استخدام النص مع الماكرو

الشرح التالي هو جزء من الدروس التي أشرحها الآن في لغة سي وسي++ ، وإن شاء الله عندما أنتهي منها سيكون هذا الموقع ثاني موقع أنشر فيه هذا الكتاب.

يمكن أن نتعامل مع الماكرو بحيث أنها تقوم بارسال string إلى معاملها ، وفي هذه الحالة لو أردنا أن نتعامل مع هذا المعامل على أساس أنه يحمل string فيجب أن يكون مسبوقا بالرمز # ومحاط بعلامتي التنصيص " " ، كما في المثال التالي:

#define MONCK(ARGTERM) \
printf("The term " #ARGTERM " is a string\n")
MONCK(A to B);

وهذا البرنامج سيخرج الآتي:

The term A to B is a string

System Engineer

Red Hat Certified Engineer

Red Hat Certificate Number

805010381752078

#8

السلام عليكم ,

أنا فعلا شاكرا ليك لانك وصلتنى للى أنا عايزه فلك الشكر مرة أخرة.

#9

السلام عليكم

الاخ برق أجاب وزاد وكفى ولكن لي اضافة جدا بسيطة وهي انك تريددالة تعيد حرف واحد فقط ودالة تعيد سلسلة حرفية لكي تعديد حرف واحد لابد ان تضع نوع الخرج للدالة char وتضع المتغيرات البارميتر المرسله للدالة على حسب استخدامكالمهم ان تعيد حرف واحد من الدالة,اما السلسة الحرفية فأتوقع انه يجب ان يكون نوع الخرج مؤشر الى نص أي char * ايتعرف الدالة بانها تستقبل مؤشر الى نص ثم تستخدمه في جسم الدالة وتعيد مؤشر الى النص ايضا وبذلك يمكنك استقبال سلسلة حرفية باستخدام المؤشرات ع الدوال

اليك مثال على السريع .

#include <iostream.h>
#include <string.h>

char ReturnOneChar(  )
{
	char c;

	cout << "Enter Char : ";
	cin >> c;

	return c;
}


char * ReturnString( char * pstr )
{
	return pstr;

}



int main()
{
	char Name[40];

	cout << "Enter Name : ";
	cin  >> Name;
  
	cout << "\n\n Char   = "   << ReturnOneChar( );
	cout << "\n\n String = " << ReturnString(Name);

	cout << "\n\n\n";
	return 0;
}

اتمنى يكون المثال واضح

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

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#11

السلام عليكم ,

والله أنا سعيد إنى لاقى حد بيهتم بمواضيعى كده وفعلا ( بجد مش نفاق ) ألاقى ناس فى منتدى بترد على الأسئلة بذمة و امانة.

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

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