منتدى استراحات زايد

منتدى استراحات زايد (http://vb.ma7room.com/index.php)
-   منتدى أخبار المواقع والمنتديات العربية والأجنبية (http://vb.ma7room.com/forumdisplay.php?f=183)
-   -   شرح مكتبة BigInteger احد مميزات .NET Framework 4 الجديده للتعامل مع الارقام الفلكيه (http://vb.ma7room.com/showthread.php?t=514284)

محروم.كوم 09-22-2010 07:41 PM

شرح مكتبة BigInteger احد مميزات .NET Framework 4 الجديده للتعامل مع الارقام الفلكيه
 
بسم الله الرحمن الرحيم


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

مقدمة :

تتضاعف تكنولوجيا المعلومات يوما بعد يوم بشكل لايدركه عقل وتتطور مشاكل حياتنا اليوميه وتتعقد مع تطور التكنولوجيا المستمر .. وفي المقابل ايضا تتطور وسائل حل هذه المشكلات سواء من المبرمج بنفسه او عن طريق الشركات المصنعه لبيئات التطوير المختلفه .. فالكل يسعى الى توفير كل الامكانيات المطلوبه للتعامل مع المشكلات المتزايده .. وهذا مادعاني اليوم لشرح ميزة وفرتها بيئة عمل الدوت نيت 4 .Net Framework وهي غير متوفره في الاصدارات السابقه واعتقد ان معظمنا لم يتعامل معها من قبل


نبذة عن امكانيات المكتبه :

توفر هذه المكتبه طريقه سهله ومريحه للمبرمج للتعامل مع الارقام ذات الحجم الضخم الذي قد يتعدى ال 1000 رقم في طوله والذي لا يمكن تخزينه في المتغيرات الرقميه مثل ال Double وال Int ولا حتى ال Long

الطريقه الوحيده لتخزين مثل هذه الارقام هو بوضعها في String ولكن كيف ستتعامل معها بعد ذلك
افرض مثلا انك ادرت ان تضرب هذا الرقم في رقم اخر مماثل له في الحجم كيف ستقوم بضرب متغيرين من نوع String !!

فجائت هذه المكتبه لتحل هذه المشكله وتمكنك من التعامل مع هذه الارقام الضخمه وتخزينها بكل سهوله ويسر


كيفية اضافة المكتبه :

توجد هذه المكتبه بداخل فضاء الاسماء Numerics والذي لا يكون مدمجا في المشروع افتراضيا
ولكن عليك اضافته من نافذة Add Reference في فيجوال ستوديو 2010
واختيار

كود:
System.Numerics
كما في الصوره :

http://img833.imageshack.us/img833/5500/pic1vf.jpg

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

VB

كود:
Imports System.Numerics
C#

كود:
using System.Numerics;

والان انت مستعد لاستخدام المكتبة BigInteger


البدء في الاستخدام :

لتعريف Object من ال BigInteger قم بكتابة التعريف كما يلي :

VB

كود:
Dim BI as new BigInteger
C#

كود:
BigInteger BI = new BigInteger();

الان قمنا بتعريف متغير من نوع BigInteger لا يحمل اي قيمه

لوضع قيمة ابتدائيه من نوع Int او Double او Decimal او Long فقط قم بوضعها في سطر التعريف كالتالي :

VB

كود:
Dim BI as new BigInteger(12345)
C#

كود:
BigInteger BI = new BigInteger(12345);
ولوضع قيمة من نوع String (حتى يمكننا اضافة ارقام كبيره جدا)

قم باستخدام الطريقه التاليه :

VB

كود:
Dim BI as new BigInteger()
BI = BigInteger.Parse("99999999999999999999999999999999 99");
C#

كود:
BigInteger BI = new BigInteger();
BI = BigInteger.Parse("99999999999999999999999999999999 99");

وبذلك نقوم بتعريف متغير جديد من نوع BigInteger يحتوي على قيمة ابتدائيه معينه


التعامل مع الارقام :

بالتاكيد لم نقم باستخدام المتغير BigInteger لمجرد ان نقوم بتخزين الرقم فال String اولى بهذا المجهود

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

وساشرح بعض العمليات البسيطه

لنفترض اني قمت بتعريف االمتغيرين التاليين ووضعت لهم القيم التاليه كما في الكود

VB

كود:
Dim x,y as new BigInteger
x = BigInteger.Parse("999999999999999")
y = BigInteger.Parse(87657482345423423)
C#

كود:
BigInteger x,y = new BigInteger();
x = BigInteger.Parse("999999999999999");
y = BigInteger.Parse(87657482345423423);


والان لجمع الرقمين :


VB

كود:
Dim Result as new Biginteger
Result = BigInteger.Add(x,y)
C#

كود:
BigInteger Result = new BigInteger();
Result = BigInteger.Add(x,y);


لطرح الرقم الثاني من الاول


VB

كود:
Dim Result as new Biginteger
Result = BigInteger.Subtract(x,y)
C#

كود:
BigInteger Result = new BigInteger();
Result = BigInteger.Subtract(x,y);

لضرب الرقمين :


VB

كود:
Dim Result as new Biginteger
Result = BigInteger.Multiply(x,y)
C#

كود:
BigInteger Result = new BigInteger();
Result = BigInteger.Multiply(x,y);

لقسمة الرقم الاول على الثاني :

VB

كود:
Dim Result as new Biginteger
Result = BigInteger.Divide(x,y)
C#

كود:
BigInteger Result = new BigInteger();
Result = BigInteger.Divide(x,y);

لرفع الرقم الاول لاس الرقم الثاني :


VB

كود:
Dim Result as new Biginteger
Result = BigInteger.Pow(x,y)
C#

كود:
BigInteger Result = new BigInteger();
Result = BigInteger.Pow(x,y);

ويوجد العديد من العمليات الاخرى الي يمكنك القيام بها باستخدام هذه المكتبه مثل ال Min وال Max وال Log و......

فقط قم بالاطلاع على المكتبه ومحاولة الابحار فيها


وهذا مثال لناتج ضرب رقيمين كبيرين جدا قمت باستخدام المكتبه لايجاد ناتج ضربهما

الرقم الاول : 43245724572845342875287452452367254273845238147654 72385482753

الرقم الثاني : 43264214897820497654528742142354489723040246230472 8472364708

الناتج : {1870992321331537460482499806539203961135392591409 60017520953438806357485910610805030547526056132869 9559726206808059881124}


لمزيد من المعلومات عن المكتبه قم بمراجعة المرجع الرئيسي :

http://msdn.microsoft.com/en-us/libr...iginteger.aspx

وفي حالة وجود اي استفسارات الرجاء عدم التردد في طرحها

مع تمنياتي بالتوفيق للجميع ...


الساعة الآن 05:08 PM

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.5.2 TranZ By Almuhajir


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227