You are on page 1of 22

‫ﺗﺴﻤﯿﺔ اﻟﻤُﻌﺮﻓﺎت‬

‫‪identifiers‬‬

‫م‪ .‬ﻋﺒﺪ اﻟﻨﺎﺻﺮ ﻣﺤﻤﺪ اﻷﻋﺮج‬


‫ﻣﺎ ھﻮ اﻟﻤُﻌﺮف؟‬

‫اﻟﻣُﻌرﻓﺎت ھﻲ أﺳﻣﺎء ﻟﻠدﻻﻟﺔ أو اﻹﺷﺎرة ﺟزء ﻣن اﻟﺑرﻧﺎﻣﺞ‪ ،‬ﻓﺎﻟﺑرﻧﺎﻣﺞ ﯾﺗﻛون ﻣن ﻣﺟﻣوﻋﺔ ﻣﺧﺗﻠﻔﺔ ﻣن اﻟﻣﻛوﻧﺎت ﻣﺛل‬
‫اﻟدوال واﻟﻔﺋﺎت واﻟﻣﺗﻐﯾرات واﻟﻣﻛﺗﺑﺎت أو اﻟﻔﺿﺎءات) ‪ ، (namespaces‬وﻛل ﻣن ھذه ﯾﺣﺗﺎج إﻟﻰ ﻣُﻌرف ﻟﻠﺗﻌﺎﻣل‬
‫ﻣﻌﮫ‪.‬‬
‫اﻟﻤُﻌﺮﻓﺎت‬

‫ﻣﻌرف ﻟﻣﻛﺗﺑﺔ‬ ‫ﻣﻌرف ﻟﻔﺋﺔ‬ ‫ﻣﻌرف ﻟداﻟﺔ‬


‫ﻗﻮاﻋﺪ اﻟﺘﺴﻤﯿﺔ ﻓﻲ ﻟﻐﺔ ‪C#‬‬

‫ﻋﻧد اﻹﻋﻼن ﻋن ھذه اﻟﻣُﻌرﻓﺎت ﯾﺟب أن ﻧﻠﺗزم ﺑﻣﺟﻣوﻋﺔ ﻣن ﻗواﻋد اﻟﺗﺳﻣﯾﺔ ﻓﻲ ﻟﻐﺔ ‪ C#‬وھﻲ‪:‬‬

‫ﯾﺟب أن ﻻ ﯾﻛون أﺣد اﻟﻛﻠﻣﺎت اﻟﻣﺣﺟوزة ﻓﻲ ﻟﻐﺔ ‪ C#‬و اﻟﻣوﺿﺣﺔ ﻓﻲ اﻟﺟدول اﻟﺗﺎﻟﻲ‪.‬‬ ‫●‬
‫ﯾﺟب أن ﺗﺳﺗﺧدم ﻓﻘط اﻟﺣروف اﻹﻧﺟﻠﯾزﯾﺔ )‪ a–z‬و ‪ (A–Z‬ﺑﺎﻹﺿﺎﻓﺔ إﻟﻰ اﻷرﻗﺎم واﻟرﻣز ‘_’ ﻓﻘط‪.‬‬ ‫●‬
‫ﯾﺟب أن ﻻ ﯾﺑدأ اﻻﺳم ﺑرﻗم‪.‬‬ ‫●‬
‫ﺟﺪول اﻟﻜﻠﻤﺎت اﻟﻤﺤﺠﻮزة ﻓﻲ ﻟﻐﺔ ‪C#‬‬
‫اﻟﺠﺪول اﻟﺘﺎﻟﻲ ﯾﻮﺿﺢ ﺑﻌﺾ اﻷﻣﺜﻠﺔ اﻟﺼﺤﯿﺤﺔ واﻟﺨﺎطﺌﺔ ﻷﺳﻤﺎء اﻟﻤُﻌﺮﻓﺎت ﻓﻲ ﻟﻐﺔ ‪.C#‬‬
‫ﺗﻨﻮﯾﮫ‬

‫اﻟﻣﻌرﻓﺎت ﺣﺳﺎﺳﺔ ﻟﺣﺎﻟﺔ اﻷﺣرف‪ ،‬ﺑﻣﻌﻧﻰ أن ‪ Ahmed‬ﻟﯾﺳت ﻛـ ‪ AHMED‬ﻟﯾﺳت ﻛـ ‪، ahmed‬إذ ﺗﻌﺗﺑرھم ﻟﻐﺔ‬
‫‪ C#‬ﻣﺳﻣﯾﺎت ﻣﺧﺗﻠﻔﺔ ﻋن ﺑﻌﺿﮭﺎ اﻟﺑﻌض‪.‬‬
‫ﺑﻌﺾ اﻟﻨﺼﺎﺋﺢ ﻟﻜﯿﻔﯿﺔ ﻛﺘﺎﺑﺔ أﺳﻤﺎء اﻟﻤُﻌﺮﻓﺎت‬

‫ﻋﻧد اﺧﺗﯾﺎرك ﻻﺳﻣﺎء اﻟﻣُﻌرﻓﺎت‪ ،‬ﯾﻧﺑﻐﻲ ﻋﻠﯾك إﺗﺑﺎع ﻣﺟﻣوﻋﺔ ﻣن اﻟﻣﻌﺎﯾﯾر ﻣن أﺟل ﻋدم اﻟوﻗوع ﻓﻲ اﻟﺗﺑﺎس ﻣﻌﯾن أﺛﻧﺎء‬
‫ﻋﻣﻠﯾﺔ اﻟﺑرﻣﺟﺔ‪ ،‬وھذه اﻟﻣﻌﺎﯾﯾر ھﻲ‪:‬‬

‫ﯾﺟب أن ﯾﻛون اﺳم اﻟﻣُﻌرف ذات ﻣﻌﻧﻰ وذات دﻻﻟﺔ‪ ،‬ﻣﺛﻼ ﻻ ﻧﺳﻣﻰ اﻟﻣﺗﻐﯾر اﻟﺧﺎص ﺑﻌﻣر اﻟطﺎﻟب ﺑـ ‪ aaa‬وإﻧﻣﺎ‬ ‫●‬
‫ﻧﺳﻣﯾﮫ ‪.age‬‬
‫ﻻ ﺗﻘم ﺑﺗﺳﻣﯾﺔ ﻣُﻌرﻓﯾن ﺑﻧﻔس اﻻﺳم ﻣﻊ اﺧﺗﻼف ﺣﺎﻟﺔ اﻷﺣرف‪ ،‬ﻷﻧﮫ ﻣن اﻟﺳﮭوﻟﺔ اﻟوﻗوع ﻓﻲ ﻟﺑس ﺑﯾﻧﮭﻣﺎ أﺛﻧﺎء‬ ‫●‬
‫اﻟﺑرﻣﺟﺔ‪ .‬ﻋﻠﻰ ﺳﺑﯾل اﻟﻣﺛﺎل اﻟﻣﺗﻐﯾر ‪ Age‬و ‪.age‬‬
‫داﺋﻣﺎ ً اﺑدأ اﺳﻣﺎء اﻟﻣﺗﻐﯾرات ﺑﺣرف ﺻﻐﯾر‪ ،‬وﺑﺎﻗﻲ اﻟﻣُﻌرﻓﺎت )ﻛﺎﻟدوال واﻟﻔﺋﺎت( ﺑﺣرف ﻛﺑﯾر‪.‬‬ ‫●‬
‫اﻟﻣُﻌرﻓﺎت اﻟﺗﻲ ﺗﺣﺗوي ﻋﻠﻰ أﻛﺛر ﻣن ﻛﻠﻣﺔ‪ ،‬اﻛﺗب اﻟﺣرف اﻷول ﻣن ﻛل ﻛﻠﻣﺔ ﺑﺣرف ﻛﺑﯾر‪ ،‬وﻓﻲ ﺣﺎﻟﺔ اﻟﻣﺗﻐﯾرات‬ ‫●‬
‫ﺗﻛﺗب اﻟﻛﻠﻣﺔ اﻷوﻟﻰ ﺑﺣرف ﺻﻐﯾر‪ ،‬ﻋﻠﻰ ﺳﺑﯾل اﻟﻣﺛﺎل‪myFirstName :‬‬
‫ﻛﯿﻒ ﻧﺨﺘﺎر ﻧﻮع اﻟﺒﯿﺎﻧﺎت اﻟﻤﻨﺎﺳﺐ؟‬

‫ﯾﻌﺗﻣد اﺧﺗﯾﺎرﻧﺎ ﻟﻧوع اﻟﺑﯾﺎﻧﺎت اﻟﻣﻧﺎﺳب ﺑﺣﺳب ﻧوع اﻟﺑﯾﺎﻧﺎت وﺣﺟﻣﮭﺎ‪.‬‬

‫ﻣﺛﻼ إذا ﻛﺎﻧت اﻟﺑﯾﺎﻧﺎت ﻋﺑﺎرة ﻋن ﺳﻼﺳل ﻧﺻﯾﺔ ﻓﺈن أﻓﺿل ﻧوع ﺑﯾﺎﻧﺎت ھو ‪string‬‬ ‫●‬

‫أﻣﺎ اذا ﻛﺎﻧت اﻟﺑﯾﺎﻧﺎت ﻋﺑﺎرة ﻋن ﺣرف واﺣد ﻓﻘط ﻓﺈن أﻓﺿل ﻧوع ﺑﯾﺎﻧﺎت ھو ‪.char‬‬ ‫●‬
‫ﻛﯿﻒ ﻧﺨﺘﺎر ﻧﻮع اﻟﺒﯿﺎﻧﺎت اﻟﻤﻨﺎﺳﺐ؟‬
‫ﻣﺎذا ﻟو ﻛﺎﻧت اﻟﺑﯾﺎﻧﺎت ارﻗﺎم ﺻﺣﯾﺣﺔ؟‬

‫ﻟدﯾﻧﺎ ‪ 8‬أﻧواع ﺑﯾﺎﻧﺎت ﻟﻠﺗﻌﺑﯾر ﻋن اﻷرﻗﺎم ﺻﺣﯾﺣﺔ‪ ،‬ﻓﺄي ﻣﻧﮭﺎ ﺳﯾﻛون ھو اﻻﺧﺗﯾﺎر اﻟﻣﻧﺎﺳب‪.‬‬ ‫★‬
‫ﻛﯿﻒ ﻧﺨﺘﺎر ﻧﻮع اﻟﺒﯿﺎﻧﺎت اﻟﻤﻨﺎﺳﺐ؟‬

‫ﯾﻌﺗﻣد اﺧﺗﯾﺎرﻧﺎ ﻟﻧوع اﻟﺑﯾﺎﻧﺎت اﻟﻣﻧﺎﺳب ﻋﻠﻰ ﻣﻌرﻓﺔ ﺣﺟم اﻟﺑﯾﺎﻧﺎت اﻟﻣراد ﺗﺧزﯾﻧﮫ وﻓﻲ ﺣﺎﻟﺔ ﻛﺎﻧت اﻟﺑﯾﺎﻧﺎت‬
‫رﻗﻣﯾﺔ‪ ،‬ﯾﺗوﺟب ﻋﻠﯾﻧﺎ ﻣﻌرﻓﺔ اﻟﺣد اﻷدﻧﻰ واﻟﺣد اﻷﻗﺻﻰ ﻟﻠﺑﯾﺎﻧﺎت اﻟرﻗﻣﯾﺔ اﻟﺗﻲ ﻧﺗﻌﺎﻣل ﻣﻌﮭﺎ‪.‬‬

‫ﻓﺈذا ﻛﺎﻧت ﻋﻠﻰ ﺳﺑﯾل اﻟﻣﺛﺎل أرﻗﺎم ﺻﺣﯾﺣﺔ ﻣوﺟﺑﺔ اﻟﺣد اﻷدﻧﻰ ﻟﮭﺎ ھو ﺻﻔر واﻟﺣد اﻷﻗﺻﻰ ھو ‪ 255‬ﻓﺈن أﻓﺿل‬ ‫●‬
‫ﻧوع ﺑﯾﺎﻧﺎت ھو ‪.byte‬‬
‫ﺑﯾﻧﻣﺎ اذا ﻛﺎن اﻟﺣد اﻷدﻧﻰ ‪ -128‬واﻟﺣد اﻷﻗﺻﻰ ‪ 127‬ﻓﺈن اﻓﺿل ﻧوع ﺑﯾﺎﻧﺎت ھو ‪.sbyte‬‬ ‫●‬
‫ﻛﯿﻒ ﻧﺨﺘﺎر ﻧﻮع اﻟﺒﯿﺎﻧﺎت اﻟﻤﻨﺎﺳﺐ؟‬

‫ﺑﺎﻟطﺑﻊ ﯾﻣﻛﻧﻧﺎ ﺗﺧزﯾن اﻟرﻗم ‪ 5‬ﻓﻲ ﻣﺗﻐﯾر ﻣن ﻧوع ‪ int‬وﻧﺳﺗطﯾﻊ أن ﻧﺧزﻧﮫ أﯾﺿﺎ ً ﻓﻲ ﻣﺗﻐﯾر ﻣن ﻧوع ‪ byte‬ﻓﻣﺎ‬ ‫●‬
‫ھﻲ اﻟﻣﺷﻛﻠﺔ؟‬
‫اﻟﻣﺷﻛﻠﺔ ﺗﻛﻣن ﻓﻲ إھدار ﻣوارد اﻟﺣﺎﺳوب‪ ،‬ﻛﻣﺎ ھو ﻣوﺿﺢ ﻓﻲ ﺟدول )‪ ،(4‬ﻓﺈن ﺣﺟم اﻟذاﻛرة اﻟﻣﺣﺟوزة‬ ‫●‬
‫ﻟﻠﻣﺗﻐﯾر ﻣن ﻧوع ‪ byte‬ھو ‪ 1‬ﺑﺎﯾت‪ ،‬ﻓﻲ ﺣﯾن ﺣﺟم اﻟﺑﯾﺎﻧﺎت اﻟﻣﺣﺟوزة ﻟﻠﻣﺗﻐﯾر ﻣن ﻧوع ‪ int‬ھو ‪ 4‬ﺑﺎﯾت ‪.‬‬
‫رﺑﻣﺎ ﺗظن أﻧﮫ ﻣﺗﻐﯾر واﺣد ﻓﻘط‪ ،‬ﻟﻛن اﻷﻣر ﻟﯾس ﺑﺎﻟﺻورة اﻟﺗﻲ ﺗﺗﺧﯾﻠﮭﺎ‪ ،‬ﺗﺧﯾل ﺑﺄﻧك ﺗﺑرﻣﺞ ﺗطﺑﯾق وﯾب‪ ،‬وأردت‬ ‫●‬
‫ﺗﺧزﯾن رﻗﻣﺎ ﻣوﺟﺑﺎ أﻗل ﻣن ‪ 255‬ﻓﻲ اﻟذاﻛرة ﻟﺳﺑب ﻣﺎ‪ ،‬وھذا اﻟﻣوﻗﻊ اﻹﻟﻛﺗروﻧﻲ ﯾزوره ﻓﻲ اﻟﻠﺣظﺔ اﻟواﺣدة‬
‫أﻟف ﺷﺧص‪ ،‬وﺑﺎﻟﺗﺎﻟﻲ اذا ﻛﻧت ﻗد اﺳﺗﺧدﻣت ﻧوع اﻟﺑﯾﺎﻧﺎت ﻣن ﻧوع ‪ int‬ﺳﯾﺣﺗﺎج اﻟﺑرﻧﺎﻣﺞ أن ﺗﺣﺟز ‪ 4‬آﻻف‬
‫ﺑﺎﯾت ﻓﻲ اﻟذاﻛرة ﻓﻲ ﻧﻔس اﻟﻠﺣظﺔ ﻓﻲ ﺣﯾن ﻟو ﻛﺎن ﻧوع اﻟﺑﯾﺎﻧﺎت ھو ‪ byte‬ﻓﺈﻧﻧﺎ ﻧﺣﺗﺎج ﻓﻘط أﻟف ﺑﺎﯾت وﺑﮭذا‬
‫وﻓرﻧﺎ ‪ 3‬آﻻف ﺑﺎﯾت ﻣن اﻟذاﻛرة اﻟرﺋﯾﺳﯾﺔ‪.‬‬
‫ﻛﯿﻒ ﻧﺨﺘﺎر ﻧﻮع اﻟﺒﯿﺎﻧﺎت اﻟﻤﻨﺎﺳﺐ؟‬
‫ﻣﺎذا ﻟو ﻛﺎﻧت اﻟﺑﯾﺎﻧﺎت ارﻗﺎم ﻋﺷرﯾﺔ‪ ،‬ﻓﻣﺎ ھو اﻷﻓﺿل؟‬

‫★ ﺑﻧﻔس اﻟطرﯾﻘﺔ ﻧﺣﺗﺎج ان ﻧﺣدد اﻟﺣد اﻻدﻧﻰ و اﻟﺣد اﻷﻗﺻﻰ ﻟﻠﺑﯾﺎﻧﺎت اﻟﻣرادة ﺗﺧزﯾﻧﮭﺎ ‪.‬‬
‫★ ﺗﺗﯾﺢ ﻟﻧﺎ ﻟﻐﺔ ‪ C#‬ﺛﻼﺛﺔ أﻧواع ﻣن اﻟﺑﯾﺎﻧﺎت ﻟﺗﻣﺛﯾل اﻷرﻗﺎم اﻟﻌﺷرﯾﺔ وھﻲ ‪ float‬و ‪ double‬و ‪ ،decimal‬ﻓﻣﺎ‬
‫اﻟﻔرق اﻟﺣﻘﯾﻘﻲ ﺑﯾﻧﮭﻣﺎ‪.‬‬
‫★ إن اﻟﻔرق اﻟﺣﻘﯾﻘﻲ ﺑﯾن أﻧواع اﻟﺑﯾﺎﻧﺎت اﻟﺛﻼﺛﺔ ھذه ﯾﻛﻣن ﻓﻲ دﻗﺔ اﻟﺟزء اﻟﻌﺷري اﻟذي ﻧرﻏب ﺑﺎﻟﺣﺻول ﻋﻠﯾﮫ‪.‬‬
‫ﻧﻮع اﻟﺒﯿﺎﻧﺎت ‪float‬‬
‫ﻣﺎذا ﻟو ﻛﺎﻧت اﻟﺑﯾﺎﻧﺎت ارﻗﺎم ﻋﺷرﯾﺔ‪ ،‬ﻓﻣﺎ ھو اﻷﻓﺿل؟‬

‫● ﯾﺳﺗﺧدم ھذا اﻟﻧوع ﻟﺗﻣﺛﯾل اﻷرﻗﺎم اﻟﻌﺷرﯾﺔ ﻓﻲ ﻣﺳﺎﺣﺔ ﺗﺧزﯾﻧﯾﺔ ‪ 4‬ﺑﺎﯾت ﻛﻣﺎ ھو ﻣوﺿﺢ ﻓﻲ ﺟدول )‪ ،(4‬ﻗﯾﻣﺗﮫ‬
‫اﻻﻓﺗراﺿﯾﺔ ھو ‪ 0.0f‬أو ‪ 0.0F‬وﯾُﺧزن ﻧوع اﻟﺑﯾﺎﻧﺎت ھذا ‪ 7‬ﺧﺎﻧﺎت رﻗﻣﯾﺔ ﻓﻘط‪.‬‬
‫● اﻟﺣرف ‪ f‬ﯾﺷﯾر إﻟﻰ أن ھذا اﻟرﻗم اﻟﻌﺷري ھو ﻣن ﻧوع ‪ float‬ﺣﯾث أن اﻻﻓﺗراﺿﻲ ﻷي رﻗم ﻋﺷري ﻓﻲ ﻟﻐﺔ‬
‫‪ C#‬ھو ﻣن ﻧوع ‪.double‬‬
‫● ﻓﺈذا أردﻧﺎ ان ﻧﺳﻧد ﻗﯾﻣﺔ ﻋﺷرﯾﺔ ﻟﻣﺗﻐﯾر ﻣن ﻧوع ‪ float‬ﯾﺟب ﻋﻠﯾﻧﺎ ﻛﺗﺎﺑﺔ اﻟﺣرف ‪ f‬اﺧر اﻟرﻗم‪،‬ﺣﯾث ﻋد ﻛﺗﺎﺑﺗك‬
‫ﻟﮭذا اﻟﺣرف ﺳﺗﻔﺗرض ﻟﻐﺔ ‪ C#‬ﯾﺄن اﻟرﻗم ﻣن ﻧوع ‪ double‬و ﺳﺗظﮭر ﻟك ﻣﺷﻛﻠﺔ‪.‬‬
‫ﻧﻮع اﻟﺒﯿﺎﻧﺎت ‪float‬‬
‫ﺗﺎﺑﻊ اﻟﻣﺛﺎل اﻟﺗﺎﻟﻲ‪:‬‬

‫ﻣﺎذا ﺗﻼﺣظ؟‬
‫ﻧﻮع اﻟﺒﯿﺎﻧﺎت ‪float‬‬
‫ﻟﻘد ذﻛرﻧﺎ أن اﻟﻘدرة اﻟﺗﺧزﯾﻧﯾﺔ ﻟﻧوع ‪ float‬ھو ﻓﻘط ‪ 7‬ﺧﺎﻧﺎت رﻗﻣﯾﺔ وﺑﺎﻟﺗﺎﻟﻲ ﺳﯾﺗم ﺗﻘرﯾب اﻟﺧﺎﻧﺔ اﻟﺛﺎﻣﻧﺔ‬
‫ﻟﯾﺻﺑﺢ اﻟرﻗم ‪ 7‬ﺧﺎﻧﺎت‪.‬‬

‫ﻟﺗوﺿﯾﺢ اﻟﻔﻛرة أﻛﺛر ﺟرب اﻟﻣﺛﺎل اﻟﺗﺎﻟﻲ‪:‬‬

‫ﺳﺗﻛون ﻧﺗﯾﺟﺔ اﻟطﺑﺎﻋﺔ ھﻲ ‪ ،0.1234567‬ﺣﯾث أن اﻟﺧﺎﻧﺔ اﻟﺛﺎﻣﻧﺔ أﻗل ﻣن ‪ ،5‬ﻓﻠم ﯾﺗم ﺗﻘرﯾب اﻟرﻗم ﻛﻣﺎ ھو‬
‫ﻣوﺿﺢ ﻓﻲ ﻧﺗﯾﺟﺔ اﻟﺗﻧﻔﯾذ‪.‬‬
‫ﻧﻮع اﻟﺒﯿﺎﻧﺎت ‪float‬‬
‫ﻟﻛن ﻣﺎذا ﻟو ﻛﺎن ﻟدﯾﻧﺎ رﻗم ﻋﺷري ﻣﻛون ﻣن ‪ 8‬ﺧﺎﻧﺎت ﺑﮭذا اﻟﺷﻛل ‪ 0.99999999‬ھل ﺳﯾﺗم ﺗﻘرﯾﺑﮫ إﻟﻰ ‪1‬‬
‫ﺻﺣﯾﺢ‪ .‬ﺑﺎﻟﺗﺄﻛﯾد‪ ،‬ھذا ﻣﺎ ﺳﯾﺣدث‪ ،‬ﺳﻧﻔﻘد اﻟﺗﻣﺛﯾل اﻟﻌﺷري ﻟﻠرﻗم ﺑﺳﺑب ﺗﻘرﯾب اﻟﺧﺎﻧﺔ اﻟﺛﺎﻣﻧﺔ إﻟﻰ ‪ 1‬أﻣﺎ إذا ﻛﺎن‬
‫اﻟرﻗم ﻣﻛون ﻣن ‪ 7‬ﺧﺎﻧﺎت ﻓﻠن ﺗﺗم ﻋﻣﻠﯾﺔ اﻟﺗﻘرﯾب‪ ،‬ﺣﺎول ﺗﻧﻔﯾذ اﻟﻣﺛﺎل اﻟﺗﺎﻟﻲ‬
‫ﻧﻮع اﻟﺒﯿﺎﻧﺎت ‪float‬‬
‫ﻣﺎذا ﺗﺗوﻗﻊ أن ﺗﻛون ﻧﺗﯾﺟﺔ ﺗﻧﻔﯾذ اﻟﻣﺛﺎل اﻟﺗﺎﻟﻲ؟‬
‫ﻧﻮع اﻟﺒﯿﺎﻧﺎت ‪double‬‬
‫● ﻛﻣﺎ ﻻﺣظﻧﺎ‪ ،‬ﻓﺈن ﻗدرة اﻟﻣﺗﻐﯾرات ﻣن ﻧوع ‪ float‬ﻣﺣدودة‪ ،‬إذ ﻻ ﺗﺳﺗطﯾﻊ ﺗﻣﺛﯾل أﻛﺛر ﻣن ‪ 7‬أرﻗﺎم ﺑﻣﺎ ﻓﯾﮭﺎ‬
‫اﻟﺟزء اﻟﻌﺷري ﻣﻧﮭﺎ‪ ،‬وھذه ﻣﺷﻛﻠﺔ ﻓﻲ ﺑﻌض اﻟﺗطﺑﯾﻘﺎت اﻟﺣﺳﺎﺑﯾﺔ اﻟﺗﻲ ﺗﺣﺗﺎج إﻟﻰ دﻗﺔ ﻋﺎﻟﯾﺔ‪.‬‬
‫● ھﻧﺎ ﯾﺄﺗﻲ ﻧوع اﻟﺑﯾﺎﻧﺎت ‪ double‬وھو اﻟﻧوع اﻻﻓﺗراﺿﻲ ﻓﻲ ﻟﻐﺔ ‪ ،C#‬وﻗﯾﻣﺗﮫ اﻻﻓﺗراﺿﯾﺔ ھو ‪ 0.0d‬أو‬
‫‪ ،0.0D‬ﻟﻛن ﻻ ﯾﺗوﺟب ﻋﻠﯾﻧﺎ ﻛﺗﺎﺑﺔ اﻟﺣرف ‪ d‬اﻟذي ﯾﻌﻧﻲ ‪ ،double‬ﻷن اﻷرﻗﺎم اﻟﻌﺷرﯾﺔ اﻻﻓﺗراﺿﯾﺔ ﻓﻲ‬
‫ﻟﻐﺔ ‪ C#‬ھﻲ ﻣن ﻧوع ‪.double‬‬
‫● ﯾﺳﺗطﯾﻊ ھذا اﻟﻧوع ﻣن اﻟﺑﯾﺎﻧﺎت ﺗﻣﺛﯾل اﻷرﻗﺎم اﻟﻌﺷرﯾﺔ ﻓﻲ ‪ 8‬ﺑﺎﯾت وھﻲ ﺿﻌف ﻣﺳﺎﺣﺔ اﻟﻣﺗﻐﯾر ﻣن ﻧوع‬
‫‪ ،float‬ﺣﯾث ﯾﺳﺗطﯾﻊ اﻟﻣﺗﻐﯾر ﻣن ﻧوع ‪ double‬ﺗﻣﺛﯾل ‪ 15‬ﺧﺎﻧﺔ رﻗﻣﯾﺔ ﺑﺧﻼف اﻟﻣﺗﻐﯾر ﻣن ﻧوع ‪float‬‬
‫اﻟذي ﻻ ﯾﺳﺗطﯾﻊ ﺗﻣﺛﯾل أﻛﺛر ﻣن ‪ 7‬ﺧﺎﻧﺎت رﻗﻣﯾﺔ‪.‬‬
‫ﻧﻮع اﻟﺒﯿﺎﻧﺎت ‪decimal‬‬
‫● ﻓﻲ اﻟﻛﺛﯾر ﻣن اﻟﺗطﺑﯾﻘﺎت ﺧﺎﺻﺔ اﻟﺗطﺑﯾﻘﺎت اﻟﻣﺎﻟﯾﺔ واﻟﺗطﺑﯾﻘﺎت اﻟﻌﻠﻣﯾﺔ اﻟدﻗﯾﻘﺔ ﻣﺛل اﻟﺗطﺑﯾﻘﺎت اﻟﻔﺿﺎﺋﯾﺔ‬
‫واﻟﻔﯾزﯾﺎﺋﯾﺔ ﻟن ﺗُﻠﺑﻲ أﻧواع اﻟﺑﯾﺎﻧﺎت ‪ float‬و ‪ double‬اﻟدﻗﺔ اﻟﻣطﻠوﺑﺔ‪ ،‬اﻟﺣل ھﻧﺎ ﯾﻛﻣن ﻓﻲ ﻧوع ﺑﯾﺎﻧﺎت‬
‫ﻟدﯾﮫ ﻗدرة ﺗﻣﺛﯾل ﻋﺎﻟﯾﺔ ﻓﻲ اﻟدﻗﺔ ﻟﻸرﻗﺎم اﻟﻌﺷرﯾﺔ وھﻧﺎ ﯾﺄﺗﻲ ﻧوع اﻟﺑﯾﺎﻧﺎت ‪.decimal‬‬
‫● ﻛﻣﺎ ھو ﻣوﺿﺢ ﻓﻲ ﺟدول )‪ ،(4‬ﻓﺈن ﻧوع اﻟﺑﯾﺎﻧﺎت ‪ decimal‬ﻟدﯾﮫ ﻗدرة ﺗﺧزﯾﻧﯾﺔ ﻋﺎﻟﯾﺔ ﺗﺳﺎوي ‪ 16‬ﺑﺎﯾت‬
‫وھذا ﻣﺎ ﯾﺗﯾﺢ ﻟﻧﺎ اﻟﺗﻌﺎﻣل ﺗﻣﺛﯾل أرﻗﺎم ﻋﺷرﯾﺔ ﺗﺻل إﻟﻰ ‪ 28‬رﻗم‪.‬‬
‫ﻧﻮع اﻟﺒﯿﺎﻧﺎت ‪decimal‬‬
‫● اﻟﻘﯾﻣﺔ اﻻﻓﺗراﺿﯾﺔ ﻟﻧوع اﻟﺑﯾﺎﻧﺎت ‪ decimal‬ھو ‪ 0.0m‬أو ‪ 0.0M‬واﻟﺣرف ‪ M‬ﯾُﺷﯾر إﻟﻰ أن ھذا اﻟرﻗم‬
‫ﻣن ﻧوع ‪ decimal‬وﯾﺟب ﻛﺗﺎﺑﺗﮫ‪ ،‬إذ أن اﻻﻓﺗراﺿﻲ ﺑﺎﻟﻧﺳﺑﺔ ﻟﻠﻐﺔ ‪ C#‬ھو ‪ double‬ﻛﻣﺎ ﺗﺣدﺛﻧﺎ ‪،‬ﺗﺄﻣل‬
‫اﻟﻣﺛﺎل اﻟﺗﺎﻟﻲ وﺣﺎول ﺗﻧﻔﯾذه ﺳﺗﻼﺣظ أن اﻟرﻗم ﺗم طﺑﺎﻋﺗﮫ ﺑﺷﻛل ﺻﺣﯾﺢ دون ﻓﻘدان دﻗﺗﮫ‪.‬‬
WriteLine ‫ و‬Write ‫اﻟﻔﺮق ﺑﯿﻦ‬

You might also like