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

عده اسئله في لغه السي , ارجوا منكم الاجابه عليها

مغلق
بدأه ttss في 15 أبريل 2005 · 15 رد · 1,219 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لدي بعض الاسئله في لغه السي وهي كالتالي:

ما هي فائده void ولماذا نقوم باستعمالها , مثلا

int get_menu_choice( void );

و void main()

واحيانا تكون بهذا الشكل

main(void)

السؤال الثاني عن ال Structures ما هي فائدتها و كيف نقوم بأستعمالها ؟

ما هو ال unsigned ؟؟

ارجوا الاجابه على الاسئله بشي من التفصيل :rolleyes: واكون شاكر للجميع :)

تم تعديل هذه المشاركة بواسطة ttss في 15 أبريل 2005 في 10:49

#2

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

بالنسبة لـ

int get_menu_choice( void );

فأضن أن void لا تأثير لها و أما عن الفائدة فأرجو من باقي الأعضاء الإجابة عليها لأني غير متأكد من إجابتي

و أما

void main()

في هذه الحالة لن تحتاج إلى إرجاعة القيمة صفر كما في :

int main()
{
return 0;
}

و أما عن Structures فهذا أبسط مثال لها :

#include<iostream.h>

struct Info
{
	char Name[100];
	int age;
};

int main(void)
{
	Info I1;

	cout << "Please Enter your name : ";
	cin >> I1.Name;
	cout << "Enter your age : ";
	cin >> I1.age;

	cout << endl;

	cout << "Name : " << I1.Name << " ." << endl;
	cout << "Age  : " << I1.age  << " ." << endl;

	return 0;
}

و فائدتها هي إختصار الوقت ...

أما unsigned أنظر إلى هذا :

unsgined int dInt;  // 0 to 4,294,967,295
unsigned short Short;  // 0 to 65535
signed long Long;   // -2,147,483,648 to 2,147,483,647 
int Int;  	// -2,147,483,648 to 2,147,483,647

و بالتوفيق

تم تعديل هذه المشاركة بواسطة GameDev4Arab في 15 أبريل 2005 في 12:35

#3
GameDev4Arab كتب:
و عليكم السلام أخي

بالنسبة لـ

int get_menu_choice( void );

فأضن أن void لا تأثير لها و أما عن الفائدة فأرجو من باقي الأعضاء الإجابة عليها لأني غير متأكد من إجابتي

لا مشكله وبانتظار بقيه الاعضاء :)

GameDev4Arab كتب:
و أما
void main()

في هذه الحالة لن تحتاج إلى إرجاعة القيمة صفر كما في :

int main()
{
return 0;
}

خطر على بالي سؤال اخر وهو لماذا نحتاج لاعاده القيمه صفر ؟؟؟

GameDev4Arab كتب:
و أما عن Structures فهذا أبسط مثال لها :

#include<iostream.h>

struct Info
{
	char Name[100];
	int age;
};

int main(void)
{
	Info I1;

	cout << "Please Enter your name : ";
	cin >> I1.Name;
	cout << "Enter your age : ";
	cin >> I1.age;

	cout << endl;

	cout << "Name : " << I1.Name << " ." << endl;
	cout << "Age  : " << I1.age  << " ." << endl;

	return 0;
}

و فائدتها هي إختصار الوقت  ...

مع انه اجابتك بالسي بلس بلس الا اني فهمت :lol:

GameDev4Arab كتب:
أما unsigned أنظر إلى هذا :

unsgined int dInt;  // 0 to 4,294,967,295
unsigned short Short;  // 0 to 65535
signed long Long;   // -2,147,483,648 to 2,147,483,647 
int Int;  	// -2,147,483,648 to 2,147,483,647

و بالتوفيق

ما فهمت معناها :(

الف شكر عزيزي :)

#4

كل Function لابد لها من قيمة ترجعها ..

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

فمثلا .. قد أحتاج من الدالة إعادة قيمة من نوع int ..

أعرفها بـ int ..

وهكذا ..

أما الـ void فهي خاليه .. أي ان الدالة لا ترّجع أي قيمة ..

مثال ( على داله تعيد قيمة من نوع int ) :

int sum ( int a , int b )
{
	int result;

	result = a + b;

	return result;
}

هذه الداله .. تستقبل 2 باراميترز .. وتقوم بحساب المجموع لهما .. وترجع المجموع في المتغير result مثل ماتشوفين :) ..

أما دالة من نوع void .. وبنفس العملية :

void sum ( int a , int b , int &result )
{
	result = a + b;
}

مثل ما انتي شايفة .. هالدالة .. من نوع void ولا تشوفين فيها أي return ..

لكن تشوفين القيمة ستعاد في المتغير المرسل result :) ..

لذا .. فعمل التعريف هو حسب ما تحتاجه من الداله :)

يارب يكون شرحي واضح B)

#5

حتى انا مو فاهم شي عن ل structeres وياريت لو توضحون اكثر :)

تم تعديل هذه المشاركة بواسطة M4£$7R0 في 15 أبريل 2005 في 13:43

#6

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

السلام عليكم

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

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

Int sum (int a,int b)

{
Int result;
Result =a+b;
Return result;

}
Main()
{
Int a,b,c;
Cin >>a>>b;
C=Sum(a,b);
Cout<<c;
}

حيث فى هذا الكود تم أستخدام int فى الدالة وكما واضح أن

جملة return result; معناها أن هذة الدالة ترجع قيمة من النوع int

وهى الresult حيث تخزن هذة القيمة فى الc ثم يتم طباعة الناتج

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

Result الى الmain

وبالتالى يتم التعديل ف الكود السابق حتى يكون

Void  sum (int a,int b)
{
Int result;
Result =a+b;
Return result;//  حيث الدالة من النوع void  (لا ترجع أى قيمة )
Cout<<result;
}
Main()
{
Int a,b,c;
Cin >>a>>b;
Sum(a,b);}

أما عن السؤال الثانى فى حالة void main() حيث أنت تعلم أن رأس البرنامج هو الmain function حيث يبدأ الcompiler الترجمة الى لغة الالة من بداية هذة الدالة

حيث أذا كانت void main()

يدل أن هذة الدالة لاترجع أى قيمة وغالبا تكون الدالة من هذا النوع

أما فى حالة int main()

حيث الmain ترجع قيمة من النوع int

وبالتالى يجب عمل return للقيمة المراد بعتها

وبالتالى لا تجد قيمة تبعتها اذن تكون return 0;

اقتباس
Void main()

{ not return any thing }

Int main()

{return value of integer}

حيث هذا النوع غير شائع الاستخدام فى الmain الا فى حالات قليلة advanced وليست موضوعنا

ثالثا بالنسبة للstructures فهى

فمثلا أنت تعمل small data base by c++ تمثل بيانات الطلبة

فى شكل records كل record يتكون من مجموعة من الfields

ودائما تحتاج الى للتعامل مع الrecord كوحدةوأيضا الحقول كوحدة

ونستخدم الstruct فى الc++ or c

حيث يكون مشابة بrecords

حيث مثال الاخ GAMEDEV$ARAB واضح وصريح

وايضا بالنسبة الى un signed

اقتباس
unsgined int dInt;  // 0 to 4,294,967,295

أى تتراوح القيم التى تستخدمها من ال0 الى 4,294,967,295

وهذا واضح

وكذلك على الباقى

وأرجو أن أكون قد أوضحت ما تريد

(h)

Muhammad Allam

Computer Science

@Resource(MappedURL="My Blog" )

#7

أعتذر على التأخر بسبب الجهاز :)

نذهب مباشرة إلى Struct باللغة السي

#include<stdio.h>

struct
{
	char name[100];
}Info;

main()
{
	printf("Enter your nama : ");
	gets(Info.name);

	printf("Your name is : %s",Info.name);
	printf("\n");
}

أما الـ Unsigned :

#include <stdio.h>

main()
{
   int Var1 = 1500000000;
   unsigned int Var2 = 1500000000;

   Var1 = (Var1 * 2) / 3;
   Var2 = (Var2 * 2) / 3;

   printf("%d\n", Var1);
   printf("%d\n", Var2);
}

و لاحظ الفرق :::

#8

unsigned يعني غير مؤشر بإشارة سالبة او موجبة ... يعني الرقم لا يمكن أن يصبح في السالب. يعني لا تستطع اعطاءه قيمة -1 مثلا ...

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

مثلا لو عندك بايت واحد .. هذا البايت ياخذ 256 رقم ..

فلو وضعت به اشارة سالب و موجب, فإنه سيأخذ من -128 الى 127

ام لو وضعته دون إشارة, فإنه ياخذ من 0 الى 255

ففي السابق لم تكن تستطيع وضع الرقم 200 .. لأنها أكبر من مجال المتغير .. لكن عندما تعمله unsigned صارت عندك مساحة أكبر شوية.

لكن كما قلت, الموضوع قديم شوية و لا توجد له فائدة حقيقية في أغلب الأحيان.

تم تعديل هذه المشاركة بواسطة hasan_aljudy في 15 أبريل 2005 في 16:44

#9

السلام عليكم

بما ان الاخوه قامو بالرد على اغلب الاساله فعندي اضافه بسيطه فقط بالنسبه لل القيمه int اللي ترجع من ال main هي غير ضروريه مثل ما ذكر الاخوة الا انه عندما عندما تطلب من ال main انها ترجع int فان القيمه ّ0 ترجع لل operating system للدالاله على ان البرنامج تم سيره بسلام وهذا مثل قرات ببعض الكتب

والله اعلم

*الإنسان هو محصلة مايعمله لنفسه

#10

هنالك ايضا إضافة على موضوع void وهو أن استعمالها يعني أننا لا نرجع قيمة ( وهذا ماذكر آنفا) ولكن ما أريد أن أضيفه هو أن استخدامها منطقيا دائما لابد أن يقترن في ذهننا ان هذه الدالة غالبا ستستخدم في الأغراض الآتية:

1) تعديل داخل data structure معينة (array/stack)

2)طبع أو نسخ قيم من الشاشة

أما إذا ما أخذت الدالة قيمة (int/float/boolean) فهذا يعني أن الدالة ستخرج لنا قيمة للاستخدام في باقي البرنامج أي ان الدالة دورها لا يقتصر على مجرد ما تقوم به داخلها بل أن قيمتها مهمة ومؤثرة في مسار البرنامج

ملحوظة بسيطة قوي بس حبيت أوضح الي فاهمه وربنا يوفق الجميع

#11

مشكورين عالردود والحمد لله وضحت الصوره امامي قليلا :)

#12

شكرا لجميع

الأعضاء على

الإيضاح

#14

و بما انكم بداتم الاسئله

فساضع سؤال و اتمني ان لا تفهموني غلط وتقولوا استعراض عضلات ولكن كنت اري ان كثير من الاعضاء يسالون هذا السؤال فاريدج ان اعرف اجاباتكم في الاول؟

ما هو الفرق بين

int a;

و

unsigne int a;

؟

ساضع اجابتي ولكن بعد ما اعرف اجاباتكم

#15

Unsigned تأخذ الأرقام الموجبة فهي تزيد من مدى النوع البياني

يعني إذا كان signed مع إشارة فإن المدى سوف يكون لـ int من -265 إلى 264 (مثلاً)

أما Unsigned فهو بدون الأرقام السالبة أي تبدأ من 0 وتضاعف قيمة الأرقام السالبة إلى الموجبة

أي من صفر إلى 265+264=529 وهكذا بالنسبة لأي نوع بياني .

#16

رداً على سؤال الأخ البارودي

int a تعني

أن a قيمتها تكون سالبة او موجبة سواء إذا كانت قيمة مدخلة أو كناتج عملية حسابية ( مع ملاحظة المدى المحدد لـ int )

أما Unsigned int a ببساطة

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

وشكراً .... أرجو أن تكون أصبحت واضحة :(

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…