صفحه شخصی سید علا سبزپوش

برنامه نویس دات نت و sql_server --ریاضیات

صفحه شخصی سید علا سبزپوش

برنامه نویس دات نت و sql_server --ریاضیات

تبدیل صریح Explicit Conversions and Casting

هنگام تبدیل داده ها از نوع کوچکتر به نوع بزرگتر ، برای نوع بزرگتر بسیار آسان است که بیتهای نوع کوچکتر را در بر گیرد ، و بقیه بیت های خالی را با صفر و یک پر کند .اما برخی مواقع ممکن است تبدیل داده ها از نوعی به نوع دیگر راحت نباشد و یا کوچکتر باشد که شاید باعث از بین رفتن برخی داده ها می شود .اینجاست که ما باید از تبدیل صریح استفاده کنیم ، یعنی به برنامه توضیح دهیم که این تبدیل چگونه انجام شود ،برخلاف حالت قبلی که تبدیل اتوماتیک بود .

به شکل زیر دقت کنید که چگونه یک متغیر از نوع ushort  به متغیری از نوع byte  تبدیل می شود . مثلا اگر متغیر ما عدد 1365 از نوع ushort  باشد پس از تبدیل به نوع byte  بدلیل از دست دادن برخی بیتها به عدد 85 تغییر می کند .



Casting


همانطور که در تبدیل صریح گفتیم برای تغییر نوع یک متغیر باید به صراحت آن را ذکر کرد ، ما در این گونه تبدیل با علم به تغییرات انجام شده تبدیل مورد نظر را بصورتی که می خواهیم اعمال می کنیم . به تعبیری دیگر تبدیل با مسولیت ما انجام می شود حتی اگر باعث تغییر داده ها شود . برای اینکار باید از عبارت cast  یا همان

cast expression  استفاده کنیم .فرمت کلی آن به شکل زیر است .




 

Target type  بجای این عبارت و بین پرانتز شما باید نوع هدف را مشخص کنید ، یعنی داده شما به چه نوعی تغییر کند

 

source expression, همان متغیر شما است که دارای مقدار است و می خواهید آن را به نوع داده دیگری تغییر دهید .

 

پس وقتی شما از عبارت و فرمت بالا استفاده می کنید به صراحت اعلام می کنید که می خواهید داده های خود را (بر حسب نیاز خود حتی در صورت تغییر ) به نوع دیگری تبدیل کنید

شکل زیر نشان می دهد که چگونه یک متغیر ushort  به متغیری از نوع byte  تبدیل شده است ، اگر دقت کنید می بینید که در حالت اول عدد 10 در هر دو نوع گنجایش دارد لذا بدون تغییر ، به نوع دیگریی منتقل شده اما در حالت دوم عدد 1365 که گنجایش بزرگتری دارد لذا پس از تبدیل مقداری از بیتها حذف می شود و عدد 85 حاصل می شود .





تبدیل ضمنی Implicit Conversions

تبدیل ضمنی   Implicit Conversions

 

حتما در طول تجربه برنامه نویسی خود با مبحث تبدیل داده ها برخورد داشته اید ، برای مثال شاید بخواهید داده ای 8 بیتی را به داده ای 16 بیتی تبدیل کنید ، بدون آنکه اصل داده دچار تغییر شود .

تبدیل داده ها در سی شارپ بر دو نوع است *-ضمنی  implicit   *-صریح   explicit

تبدیل ضمنی وقتی می خواهید داده ای را از نوع کوچکتر به نوع بزرگتر تبدیل کنید ، باید از تبدیل ضمنی استفاده کنید ، زبان سی شارپ این کار را بصورت اتوماتیک برای شما انجام می دهد . اما ....

 

1-هنگام تبدیل  از نوع کوچکتر ( نوع با تعداد بیت کمتر) به نوع بزرگتر (نوع با بیت بیشتر ) بیتهای بیشتر باید با صفر و یک پر شوند.

2-هنگام تبدیل از نوع کوچکتر بدون علامت به نوع بزرگتر بدون علامت ، بیتهای بیشتر با صفر پر می شوند.

شکل زیر بسیار گویا است .



در شکل بالا ما عدد 10 که از نوع byte  است را تبدیل به نوع بزرگتر از نوع ushort  کردیم .

 

نکته : اگر هنگام تبدیل نوع کوچکتر به نوع بزرگتر ، داده ما دارای علامت مثبت یا منفی بود ، آنگاه بیتهای بیشتر با بیت علامت پر می شوند ، علامت مثبت ، یک علامت پیش فرض است لذا بیتهای آن صفر است اما علامت منفی بیتهای آن عدد یک است .

مانند شکل زیر

در شکل بالا دقت کنید که چگونه عدد منفی 10 جایگزین و تبدیل شده است .

در مقاله بعد در مورد تبدیل صریح  (explicit) خواهم گفت .

من ، من ، من ، من ،من ،من

در جواب وبلاگ بهساد و وبلاگ فراسان در مورد مشکلات ، من با محدودیتهای اینترنت خواهم نوشت ،

 

اینترنت تعطیل است !!!!

بعد از چند سال کار کردن پروزه  ای و کارمندی به نتایجی رسیدم که اسمش را میرازم تجربه من ها ، من من من من من

این 6 من چیست ، من حق می دهم به تمام میران شرکتها و حق می دهم به پرسنل لذا می خواهم از زبان من بودن در هر موقعیتی بنویسم

 

1-من مالک شرکت خصوصی و مدیر شرکت هستم : من این شرکت را با زحمات زیادی تاسیس کردم ، من برای شما اشتغال ایجاد کردم ، من باید تلاش کنم تا حقوق شما را فراهم کنم ، من بابت شما باید هزینه ، بیمه ، مالیات پرداخت کنم ، من باید تلاش کنم تا فروش شرکت بالا برود و بتوانم با درآمد آن هزینه های شما را فراهم کنم ، من مسئول رفتارهای شما هستم ، اگر کار نکنید ضرر می کنم ، دیگر نمی توانم به شما حقوق بدهم ، شما مجبور می شوید به جای دیگری بروید ، من استرس زیادی دارم چون مسئولیت من سنگین است ، من اعتبارم را پای این کار گذاشته ام ، اگر مشکلی پیش بیاد اول از هم اعتبار من خراب می شود ،اصلا اگر اوضاع خراب شد و من بدهی بالا آوردم من باید برم زندان ، من باید برای وصول مطالبات شرکت بجنگم ، من برای گرفتن پروژه و کار برای شرکت باید بجنگم ، خوب من مجبورم شما را محدود کنم ، پس خوت را بزار جای من ،

 

2-من مدیر شرکت هستم اما مالک آن نیستم : من از طرف مالک و سرمایه گذاری، مدیر این شرکت شدم ، اگر کارمندان من کار نکنند ، من جواب مالک را چه بدهم ، من باید جواب مشتریان را بدهم ، من هم مثل شما کارمندم با این تفاوت که مدیر شما هستم ، شما فقط کار خودت را انجام می دهی ، اما من باید با همه سروکله بزنم ،مشتری ، سرمایه گذار و مالک شرکت و اداره دارایی و بیمه و ..

من استرسم خیلی زیاده ، چون باید به همه جواب بدهم ، پس من حق دارم شما را محدود کنم .

 

3-من مدیر بخش تولید نرم افزار هستم : من باید به مدیر بالاتر از خودم جواب بدهم ، اگر کیفیت کار کارمندانم خوب نباشد ، من توبیخ می شوم شاید هم اخراج شاید هم جریمه ، من هم مثل شما کارمندم فقط بیشتر از شما تجربه و دانش دارم ، من باید پاسخگو باشم ، اگر مشتریان ناراضی باشند یعنی شما بد کار کرده اید اول از هم با من برخورد می کنن ، پس من حق دارم شما را محدود کنم

 

4-من مسئول فروش شرکت هستم : من دوست دارم وقتی نرم افزاری را می فروشم ، باعث آبروریزی من جلوی مشتری نشود ، من باید نرم افزار با کیفیت تحویلم دهید تا بتونم محکم و با اطمینان با مشتری صحبت کنم ، شما باید خوب پشتیبانی کنید تا درد سر من با مشتریان کم شود ، اگر کیفیت کار نرم افزار خوب نباشد من نمی توانم نرم افزار را بفروشم ، پس مرا دریابید ، من مجبورم به مدیران شما فشار بیارم که بیشتر شماها را کنترل کنند ، تا من جلوی مشتریها رو سفید باشم .

 

5-من تحلیل گر پروژه هستم : من خیلی با مشتریان سر تشخیص نیازمندیها و اولویت بندی آنها سرو کله زدم ، من باید ذهن مشتری را بخوانم ، من حلقه وصل بین شما برنامه نویسان و مشتریان هستم ،من کار خودم را بلدم ، اگر کار شما بد باشه ، به من گیر می دن ، میگن شما بد تحلیل کردی ، نه اینطوری نیست من کارم درسته ، نیازمندیهای مشتری را خوب تحلیل کردم ، مستند کردم و با زبان ساده و روان به شما منتقل کردم ، پس شما باید خوب کار کنید ، تا کیفیت نرم افزار عالی باشد . من مجبورم از مدیرتان بخواهم شما را محدود کنه ، آخه من به مشتری قول دادم که طبق تحلیل من این پروژه 3 ماهه تحویل بدیم ، پس لطفا شبانه روزی کار کنید تا من جلوی مدیران بالاتر شرکت و مشتریان شرمنده نشوم ، من معتقدم شماها باید محدود شوید

 

((تمام نوشته های بالا درد دل افرادی است که ممکن است با برنامه نویسان سر و کار داشته باشند و اما ..)

 

6-من برنامه نویس شرکت هستم ، شما مرا محدود کردید ، موبایل ممنوع ، اینترنت محدود ، استراحت قدغن و....

اما

بعضی از وبلاگهای شخصی که شما فیلتر کرده اید حاوی مطالب ارزشمندی است که من به آنها نیاز حیاتی دارم

بعضی از سایتها از نظر شما سرگرمی است اما از نظر من وسیله ای است برای ارتباط با دیگر متخصصان برای گرفتن راهنمایی

بعضی تماسهای موبایل ، برای من حیاتی است من هم مثل همه شماها خانواده دارم ممکن است نگرانشان باشم ، کار مهمی داشته باشم ، خوب من هم حق دارم

من ادم آهنی نیستم ، یعنی حتی اگر روبات و آدم آهنی باشم باز هم فرسوده می شوم ، نیاز به تعمیر دارم ، خوب من نمی تونم صبح تا شب فقط به مانیتور نگاه کنم ، شرط می بندم شما هم نمی توانید ، من بدنم هر یکی ، دو ساعت نیاز به حرکت داره ، کمرم از نشستن پیوسته پشت میز ، درد گرفته ، از بس به مانیتور نگاه کردم چشمام ضعیف شده سر درد گرفتم ، بابا من تشنه ام یکی نیست برام لیوان آب بیاره !!!!!

من چگونه اطلاعات خودم را بروز نگه دارم وقتی که اینترنت فیلتر ، مطالعه ممنوع ، فقط باید کد بنویسی ، دوره های آموزشی در وقت کاری ممنوع ، باید بعد از پایان کار آن هم آخر شب با هزینه خودت بری دوره

بابا من هم آدم هستم ، اینجوری که صبح تا شب کار می کنم دیگه وقت ندارم خودم را بروز کنم ، وقت ندارم کتاب بخونم ، از زندگی افتادم .

و............

این من ها که نوشتم شاید مورد اعتراض باشد اما به نظر من ریشه مشکل در من بودن است ، ما باید به سمت ما بودن حرکت کنیم ، همه به همدیگر کمک کنند و برای ایجاد کار گروهی باید شرایط هر کدام از من بودنها را در نظر بگیریم در غیر اینصورت من های بالا برای همیشه ادامه دارد ....

ودردی بی درمان خواهد ماند.