سید مهدی میرشفیعی کامپیوتر سینا قم
مرکز پژوهش، تحقيقات و پروژه‌های دانشجویی  
قالب وبلاگ

مقدمه اي بر زبان سي شارپ C#  و SQLSERVER

 

C# از دو زبان C++ و Java متولد شده است! حاوي بسياري از جنبه هاي C++ مي باشد اما ويژگي هاي شيء گرايي خودش را از جاوا به ارث برده است.

 C# اگرچه از C++ گرفته شده است اما يك زبان "خالص" شيء گرا (Object oriented) مي باشد. هر دو زبان ياد شده جزو زبانهاي هيبريد محسوب مي شوند اما طراحان C# اين مورد را به اندازه ي C++ مهم تلقي نكرده اند. يك زبان هيبريد اجازه ي برنامه نويسي با شيوه هاي مختلف را ميسر مي كند. دليل اينكه C++ هيبريد است ، اين است كه قرار بوده تا با زبان C سازگار باشد و همين امر سبب گرديده تا بعضي از جنبه هاي C++ بسيار پيچيده شوند.

زبان سي شارپ فرض اش بر اين است كه شما مي خواهيد تنها برنامه نويسي شيء گرا انجام دهيد و همانند C++ مخلوطي از برنامه نويسي رويه ايي (Procedural) و شيء گرا را نمي خواهيد به پايان برسانيد. بنابراين بايد طرز فكر خودتان را با دنياي شيء گرايي تطبيق دهيد. در ادامه خواهيد ديد كه در سي شارپ هر چيزي شيء است حتي يك برنامه ي سي شارپ.

 

تعريف متغيرها در سي شارپ:

سي شارپ عناصري را كه بكار مي گيرد همانند اعداد و كاراكترها ، به صورت نوع ها (Types) طبقه بندي مي كند. اين انواع شامل موارد زير مي شوند :

نوع هاي پايه ايي از پيش تعريف شده مانند اعداد و غيره.

نوع هاي تعريف شده توسط كاربر كه شامل STRUCT ها و ENUM ها مي شوند.

نحوه ي تعريف متغيرها از نوع هاي پايه ايي از پيش تعريف شده :

همانطور كه مي دانيد از متغيرها براي نگهداري اطلاعات استفاده مي شود. در سي شارپ ابتدا نوع متغير و سپس نام متغير و در آخر يك سمي كولون بكار برده مي شود. براي مثال :

Int a;

كه در اينجا متغير a بعنوان يك متغير حاوي اعداد صحيح تعريف شده است.

 

نكته ي مهمي كه در اينجا حائز اهميت است ، مقدار دهي اوليه ي متغيرها مي باشد. در غير اينصورت كامپايلر سي شارپ برنامه را بايك خطا متوقف مي كند. دليل اين امر هم اين است كه از استفاده از متغيرهاي بدون مقدار در طول برنامه جلوگيري شود تا ميزان خطاهاي در حين اجرا كاهش يابد.

نوع هاي داده اي در سي شارپ : C# DataTypes

نوع هاي داده اي رو مي توان بسته به محل قرار گيريشان در حافظه به سه دسته تقسيم كرد:

1.      Values Types

2.      Reference Types

3.      Pointer Types

اگرحافظه رو به دو قسمت Stack و Heap تقسيم كنيم. مقادير تمامي متغيير هاي نوع اول در حافظه Stack قرار مي گيرد و به همين جهت داراي رفتارهاي خاصي مي شود كه بيشتر توضيح خواهم داد. مقادير متغيير هاي نوع دوم در حافظه Heap قرار مي گيرند.

Value Type : 

همان طور كه گفتيم مهمترين خاصيت اين نوع متغيير ها قرارگيري مقادير آن ها در حافظه Stack مي باشد كه به همين دليل رفتارهاي خاصي خواهند داشت. اين نوع متغيير ها شامل : Primitive Types يا همان نوع هاي بدوي - Enum ها و Struct ها مي باشند.

Numeric Types , Boolean , Char نوع هايي هستند كه به آن ها
 Primitive Types
مي گوييم. نوع هاي عددي شامل : int , double ,

decimal , long , short , byte و ... كه مقادير مختلفي از اعداد رو داخل خوشان نگه مي دارندBoolean ها متغيير هايي هستند كه فقط مقدار True و False به معني مثبت يا منفي رو داخل خوشان نگه مي دارند. و در نهايت Char ها همان كاراكتر ها هستند.

گفتيم كه ValueType ها داراي رفتار خاصي هستند. اما چه رفتاري؟

وقتی یک متغییر از یکی از نوع های Value Type مثل int ایجاد می کنیم مقدار آن داخل حافظه Stack قرار می گیرد و وقتی از آن متغییر یک کپی میگیریم مقدار متغییر قبلی داخل متغییر جدید کپی می شود.یعنی اگر مقدار متغییر دوم رو عوض کنیم تاثیری روی مقدار متغییر اول نخواهد گذاشت. این رفتار در مورد تمامی ValueType ها صدق می نماید:

وقتي مقدار متغيير دوم رو تغيير دهيم مقدار متغيير اول دست نخورده باقي ماند.

:  Enumerations


فرض بفرمائيد كه شما مي خواهيد يك كلاس تعريف كنيد به نام انسان. وقتي خواص انسان رو تحت بررسي دارين به جنسيت مي رسيد. حالا مي خواهيم روي كلاس انسان يك متغيير براي نشان دادن جنسيت تعريف كنيم. به نظر شما جنسيت رو از چه نوعي بايد در نظر گرفت؟ bool يا int؟
اگر bool در نظر گرفتيم false به معني مرد خواهد بود يا true؟

اگر int در نظر گرفتيم چه عددي بيانگر مرد و چه عددي بيانگر زن مي باشد؟ و اگر كاربر شما عددي به غير اعداد انتخابي شما وارد كرد, چه طور؟

گاهي اوقات در توسعه نرم افزار ها ما به جنس (Type)هايي نياز داريم كه بتوانيم مقدار شان را محدود كنيم. مثلا همين جنسيت. با استفاده از Enumeration ها مي توانيم مقدار متغيير جنسيت رو به مرد يا زن محدود كنيم.براي ايجاد يك Enumeration بايد در يك فايل با پسوند cs كه بيانگر سي شارپ است از Syntax زير استفاده كنيم:

کد:

 

Public Enum Esex

            {

                        Male,

                           Female

            }

دقت كنين كه وقتي متغييري از اين جنس بسازيم به هيجوجه مقداري به غير از مرد يا زن نمي توانيم اختصاص دهيم:

کد:

 

Esex sex; // ایجاد منغیر از جنس یک   Enum

Sex = esex.male ; // مقدار دهی متغیر

حالا مي بينيم كه چطور با استفاده از enum مي توانيم مقدار دهي يك متغيير را به مقادير محدودي نسبت دهيم. در دات هم مثال هاي متعددي از استفاده از enum ها وجود دارد. مثلا يك enum به نام Keys تمامي كليد هاي صفحه كليد رو در خود جاي داده است. يا enumي با نام ConnectionState وضعيت هاي امكان پذير يك Connection رو نشان مي دهد.



 



نوع هاي داده اي پايه ي زير در در سي شارپ به صورت پيش فرض مهيا هستند:

Object :  نوعي است نامحدود كه مي تواند تمام انواع ديگر را نيز شامل شود. مثال :

object = null;

String  :  رشته ؛ در اينجا يك رشته توالي كاراكترهاي يونيكد مي باشد. مثال :

String s= "hello";

Byte :  نوع داده ايي صحيح 8 بيتي بدون علامت.

Sbyte : نوع داده ايي صحيح 8 بيتي علامت دار. مثال :

Sbyte Val = 12 ;

SHORT   :  نوع داده ايي صحيح 16 بيتي علامت دار.

UNSHORT   :  نوع داده ايي صحيح 16 بيتي بدون علامت. مثال :

Short Val = 12;

INT  :  نوع داده ايي صحيح 32 بيتي علامت دار.


UNIT
  :   نوع داده ايي صحيح 32 بيتي بدون علامت. مثال :

Int Val = 12;

LONG  :  نوع داده ايي صحيح 64 بيتي علامت دار.

ULONG  :  نوع داده ايي صحيح 64 بيتي بدون علامت. مثال :

Long val1 = 12; long val2 = 34L;

FLOAT  :  نوع اعشاري با single precision .

DOUBLE  :  نوع اعشاري با . double precision مثال :

float val = 1.23f;

BOOL  :  نوع داده ايي Boolean كه مي تواند true و يا false باشد. مثال :

Bool Val = true;

 CHAR  :  كاراكتر، دراينجا char يك كاراكتر يونيكد است.

Char Val = 'h';

نکته : به نحوه ي تعريف كاراكتر ها و همچنين رشته ها در سي شارپ دقت كنيد.

DECIMAL  :  نوع داده ايي دسيمال با 28 رقم معني دار.


Decimal Val = 1.23M;

 نکته : كلا در اينجا u به معناي unsigned است.

نکته : بهتر است هنگام تعريف يك متغير ، نامي با مسما براي آن انتخاب شود تا در هنگام كار خواندن كد ساده تر گردد. همچنين رسم شده است كه نوع متغير را به صورت خلاصه به نام متغير اضافه مي كنند. براي مثال بجاي FirstName بهتر است بنويسيم strFirstName . به اين نوع نگارش Hungarian notation مي گويند.  تمام نوع هاي پيش فرض تعريف شده در سي شارپ شيء هستند.

در اين قسمت مي خواهيم با يك سري از اصول اوليه ي شيء گرايي در سي شارپ كمي آشنا شويم.

 

آشنايي با فضاهاي نام (NameSpaces) :


فضاهاي نام روشي براي مديريت كد نويسي هستند. براي مثال آنها ايجاد شده اند تا تداخلي بين نام هاي توابع در برنامه شما رخ ندهد. اين مساله در پروژه هاي بزرگ خود را نشان مي دهد و ممكن است دو آيتم در يك پروژه نام هاي يكساني را پيدا كنند. بدين وسيله اين شانس تصادم و تداخل كاهش پيدا مي كند. براي ايجاد يك فضاي نام به صورت زير عمل مي شود:


namespace anyName

{
……….
Class anyClassName

                        {

                        ……….

                        }

            ……….

            }

يكي از فضاهاي نام پايه اي در دات نت فريم ورك ، فضاي نام System مي باشد. براي استفاده از آن مي توان از كد زير كمك گرفت :

Using System;

تمام فضاهاي نام به صورت پيش فرض public مي باشند و در خارج از كد شما قابل دسترسي هستند. روش استفاده از آنها به صورت زير است:

ProjectName.NameSpace.ClassName.MemberName
نكته :


اگر دقت كرده باشيد هنگامي كه كرسر ماوس را روي هر آيتمي در منوي autocomplete نگه مي داريد و يا آنرا انتخاب مي كنيد يك راهنماي كوچك نمايش داده مي شود كه در حقيقت كامنت مربوط به آن تابع مي باشد. روش نوشتن چنين كامنت حرفه اي كه در منوهاي ويژوال استوديو ظاهر شود به صورت زير است كه بهتر است قبل از هر تابع يا خاصيت يا كلاس و .... نوشته شود


موضوعات مرتبط: كامپيوتر
برچسب‌ها: زبان سي شارپ, SQL SERVER, زبان برنامه نويسي, زبان جاوا
ادامه مطلب
[ دوشنبه هفدهم بهمن ۱۳۹۰ ] [ 13:40 ] [ سیدمهدی میرشفیعی ]
.: Weblog Themes By WeblogSkin :.
درباره وبلاگ

             سيدمهدي ميرشفيعي
         دانشجوی کارشناسی ارشد
      رشته مهندسی تولیدات گلخانه ای
             دانشگاه شاهد تهران
فارغ التحصیل رشته علوم آزمایشگاهی
         دانشگاه علوم پزشکی گیلان
دفتر: قم، خیابان ارم، جنب حرم مطهر،
       مجتمع تجاری فرهنگی قدس
                   کامپیوتر سینا
                 09128538553
امکانات وب