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

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

بدأه aaddeel في 11 يونيو 2010 · 11 رد · 883 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

هذا البرنامج يقوم بحساب مجموع عددين مدخلين

وله اكثر من طريقة لكتابته

مالفرق بين هذه الطرق وخاصة في بعض الاكواد التي تم استعمالها

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

ولذلك نرجو من لديه الخبره ان يشرحها لنا ولجميع الاخوان.... وهل هناك مواضيع تتكلم عن مثل هذه الاكواد واذا لم يوجد اتمنى من لديه الخبرة ان يشرح لنا مثل هذه الاكواد

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

::1::

int a, b, c;

Console.WriteLine("PLEASE ENTER THE TOW NUMBERS:");

a = int.Parse(Console.ReadLine());

b = int.Parse(Console.ReadLine());

c = a + b;

Console.WriteLine("The answer is: " + c);

::2::

int a, b, c;

Console.WriteLine("PLEASE ENTER THE TOW NUMBERS:");

a = Int32.Parse(Console.ReadLine());

b = Int32.Parse(Console.ReadLine());

c = a + b;

Console.WriteLine("The answer is: " + c);

::3::

int a, b, c;

Console.WriteLine("PLEASE ENTER THE TOW NUMBERS:");

a = int.Parse(Console.ReadLine());

b = int.Parse(Console.ReadLine());

c = a + b;

Console.WriteLine("The answer is: {0} ", c);

::4::

int a, b, c;

Console.WriteLine("PLEASE ENTER THE TOW NUMBERS:");

a = Int32.Parse(Console.ReadLine());

b = Int32.Parse(Console.ReadLine());

c = a + b;

Console.WriteLine("The answer is: {0}", c);

#2

البرنامج الأول :

شرح الكود :

int a, b, c;
Console.WriteLine("PLEASE ENTER THE TOW NUMBERS:");
a = int.Parse(Console.ReadLine());
b = int.Parse(Console.ReadLine());
c = a + b;
Console.WriteLine("The answer is: " + c);

في السطر الثالث والرابع يقوم البرنامج بإستقبال المعلومات من المستخدم على شكل نص(string) وبما أن المتغير من نوع رقم(int) فيجب تحوير هذا النص إلى رقم وإدخاله في المتغير عن طريق هذين السطرين :

a = int.Parse(Console.ReadLine());
b = int.Parse(Console.ReadLine());

مع العلم انه لافرق بين (int) و (Int32) كلاهما نفس الشيء ..

وفي السطر الأخير يقوم البرنامج بإخراج المعلومات عن طريق(Console.WriteLine) كالتالي :

Console.WriteLine("The answer is: " + c);

معنى السطر السابق هو : إكتب النص ("The answer is: ") ثم اكتب النص أو الرقم الموجود داخل المتغير© .. هاذه طريقة وهناك طريقة اخرى أفضل وأسرع وهي كالتالي :

Console.WriteLine("The answer is: {0} ", c);

وهو الإشارة للمتغيرات بالرموز ولأن لغة السي شارب لغة(Zero-Based) فنبدأ برقم صفر وهو يعني أول متغير ياتي بعد هذا النص ("The answer is: {0} ") نستبدله برمزه يعني أول متغير راح يكون بدال الرمز("{0}") والمتغير الثاني راح يكون بدال الرمز ("{1}").. وهكذا ونفصل بين المتغيرات والنص بفاصلة(,)

هذا كل شيء ..:) أتمنى اني قد وصلت لك المعلومة أخي .. بالتوفيق :lol:

تم تعديل هذه المشاركة بواسطة azooz-tamimi في 11 يونيو 2010 في 15:26

1
118650.jpg
#3

طالما أن (int) و (Int32) كلاهما نفس الشيء ولا فرق بينهما هل هذا يعني ان عملهما واحد واستخدامهما واحد فلماذا هناك اكثر من وحدة مع العلم بأن في #C يوجد int و int16 و int32 و int64 وهل هذا ينطبق عليهم جميعا والمشار إليهم بخط تحتهم

تم تعديل هذه المشاركة بواسطة aaddeel في 12 يونيو 2010 في 14:12

#4

Int و Int32 كلاهما يدلان على نفس الشيء "أعداد صحيحة ذات حجم 32 بت" ، و ووضعها بهذا الشكل ليس أكثر من synonym ، المفضل أن تستخدم Int32 لا لشيء وإنما لتوضح لمن يقرأ كودك أنك تقصد حجم 32 بت ..

بالنسبة للبقية فالقضية تختلف ، الفرق بينها بالعدد الأعظمي والأصغري الذي يمكن الوصول إليه ..

فمثلاً Int16 (32 بت) من -32768 إلى 32767 .. بينما int64 هو من 9,223,372,036,854,775,808- إلى 9,223,372,036,854,775,80 ...

بالتوفيق

#5

الـ (Int16) يقابه الأنواع : short

الـ short

MaxValue = 32767
MinValue = -32768

أما الـ (Int32) يقابله الأنواع : int,uint

الـ int

MaxValue = 2147483647
MinValue = -2147483648

الـ uint

MaxValue = 4294967295
MaxValue = 0

أما الـ (Int64) يقابله الأنواع : long,ulong

الـ long

MaxValue = 9223372036854775807
MinValue = -9223372036854775808

الـ ulong

MaxValue = 18446744073709551615
MaxValue = 0

هاذي هي الأنواع ومايقابلها ..

------------------------------------

وهنا أنواع اخرى .. :-

الـ byte

MaxValue = 255
MinValue = 0

الـ sbyte

MaxValue = 127
MinValue = -128

في النهاية لافرق بين إستخدام Int32 أو int

كلاهما راجع لك .. إن شاء الله يكون واضح .. دمتم بخير :happy:

تم تعديل هذه المشاركة بواسطة azooz-tamimi في 12 يونيو 2010 في 14:59

118650.jpg
#6

لا يستحب على الإطلاق استخدام Int32 أو غير ذلك من الأنواع .. وهي تسمى .NET Framework Types ولكن يستحب كتابة الـ C# Keywords ما دمت تكتب برنامج للـ C#

وباختصار فإن الـ C# Keywords ما هي إلا Aliases للـ NET Framework Types مثلاً:

short => Int16

int => Int32

long => Int64

.... إلخ

فإنك حين تستعمل int يعرف أي مبرمج C# أنك تستخدم Int32 .. وحين تستعمل Short يعرف أي مبرمج C# أنك تستخدم Int16 .. وهكذا.

وإليك هذا الجدول الكامل الذي يوضح الفروقات بينهم. في المرفقات. واحذر من وجود خطأ في هذا الجدول وهو من كتاب illustrated C# 2008 في أول سطر .. حيث أنه ينص على أن sbyte عبارة عن unsigned وهذا خطأ مطبعي غير مقصود لأنه في خانة الـ Range تجده يحتوي على قيم من -128 إلى 127 أي أنه Signed ... وجزاكم الله خيراً

post-53551-12763436211302_thumb.jpg

تم تعديل هذه المشاركة بواسطة أحمد عبد المنعم في 12 يونيو 2010 في 14:55

مدونة ابنتي الرضيعة: يوميات رزان

مدونتي التقنية العربية: البرمجة مع عبد المنعم

Technical Blog: Abdul Moniem's Thoughts

LinkedIn: Profile

#7
اقتباس

لا يستحب على الإطلاق استخدام Int32 أو غير ذلك من الأنواع .. وهي تسمى .NET Framework Types ولكن يستحب كتابة الـ C# Keywords ما دمت تكتب برنامج للـ C#

هذه وجهة نظرك أم لديك مصدر ؟

#8

من كتاب illustrated C# 2008

All the predefined types are mapped directly to underlying .NET types. The C# type names are

just aliases for the .NET types, so using the .NET names works fine syntactically, although this is

discouraged. Within a C# program, you should use the C# names rather than the .NET names.

جزاك الله خيراً

مدونة ابنتي الرضيعة: يوميات رزان

مدونتي التقنية العربية: البرمجة مع عبد المنعم

Technical Blog: Abdul Moniem's Thoughts

LinkedIn: Profile

#9

ليس قاعدة ، فلاحظ أن بعض الإجرائيات في .Net ممن تحمل إسم DataType تستعين بـint32 و ليس int ...

على كل حال int هو synonym لـ int32 (فالأصل هو int32 ) و إن إستخدمت ايا منهما فالنتيجة واحدة ..

بالتوفيق

#10

أنا لم أقل قاعدة ... ولكن قلت غير محبذ ..

فهي تجعل الكود أكثر قابلية للقراءة وأكثر ارتياحاً للعين.

وأيضاً يجعلك بعيد كل البعد عن تغييرات الـ .NET Types التي قد تتغير نظراً لأي متطلبات في قسم تطوير ميكروسوفت.. لكن لن تتغير كلمات اللغة الـ keywords لأنها ثوابت في اللغة ..

فبرامجك المعتمدة على أي .NET Type قد يكون بها قابلية لأن لا تعمل في المستقبل مثلاً على عكس التي تعتمد على Alias .. وعلى هذا فالـ Alias تحميك وتعطي الكود قابلية أكثر للقراءة وراحة للعين.

مدونة ابنتي الرضيعة: يوميات رزان

مدونتي التقنية العربية: البرمجة مع عبد المنعم

Technical Blog: Abdul Moniem's Thoughts

LinkedIn: Profile

#11
اقتباس

فبرامجك المعتمدة على أي .NET Type قد يكون بها قابلية لأن لا تعمل في المستقبل مثلاً على عكس التي تعتمد على Alias .. وعلى هذا فالـ Alias تحميك وتعطي الكود قابلية أكثر للقراءة وراحة للعين.

قرأت في إحدى المرات كلاماً عكس هذا ، Alias قد يتغير ليؤشر على شيء آخر !! قد تنتقل مثلاً من int32 إلى int64 وبرنامجك غير مستعد لذلك ..

على كل حال هي نظرة تختلف من شخص لآخر ...

جزاك الله خيراً و بالتوفيق

#12

بسبب هذا النقاش الممتع .. أحببت أن أستزيد علماً في هذه النقطة ..

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

ولكني أحببت أن أورد هنا ما أدعم به رأيي ثم أورد ما يخالف رأيي .. وهذا هو الموضوع الكامل لمن يريد قرائته http://stackoverflow.com/questions/62503/c-int-or-int32-should-i-care

أعجبني جداً هذا الكلام:

int is a C# keyword and is unambiguous.

Most of the time it doesn't matter but two things that go against Int32:

* You need to have a "using System;" statement. using "int" requires no using statement.

* It is possible to define your own class called Int32 (which would be silly and confusing). int always means int.

وأيضاً كما تلاحظ في الصورة أحد عيوب استخدام Int32 مثلاً ..

post-53551-1276360300322_thumb.jpg

وأما في الرأي المخالف .. أعجبني جداً هذا الكلام:

Type names can vary between .Net languages. For example, in C#, long maps to System.Int64 while in C++ with managed extensions, long maps to Int32. Since languages can be mixed-and-matched while using .Net, you can be sure that using the explicit class name will always be clearer, no matter the reader's preferred language.

تم تعديل هذه المشاركة بواسطة أحمد عبد المنعم في 12 يونيو 2010 في 19:35

2

مدونة ابنتي الرضيعة: يوميات رزان

مدونتي التقنية العربية: البرمجة مع عبد المنعم

Technical Blog: Abdul Moniem's Thoughts

LinkedIn: Profile

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

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

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

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

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