بایگانی نویسنده

اصطلاحات شبکه های کامپیوتری

مهر ۳م, ۱۳۸۸

(( اصطلاحات شبکه های کامپیوتری ))

مقدمه ::::

امروزه اهمیت شبکه های رایانه بر هیچ کس پوشیده نیست . با توجه به مزیت های مختلف آنها (کاهش هزینه ، صرفه جویی در وقت ، حذف محدودیت های جغرافیایی و …) ، شاهد پیشرفت روزافزون این شاخه علمی می شویم . به همین دلیل اگر دیر بجنبیم از قافله عقب می مانیم ، به همین دلیل بنده در این مقاله به اصطلاحات مربوط به شبکه های کامپیوتری پرداخته ام .

• ( DTE ( Data Terminal Equipment : منبع و گیرنده داده ها را در شبکه های رایانه ای DTE می گویند .

• ( DCE ( Data Communication Equipment : تجهیزاتی که مشخصات الکتریکی داده ها را با مشخصات کانال داده ها تطبیق می دهد مانند مودم .

• (B.W ( Band width : پهنای باند یا محدوده ای که در آن امواج آنالوگ بدون هیچ افتی حرکت می کنند .

• Noise : نویز یا پارازیت به امواج الکتریکی مزاحم می گویند که موجب اختلال در انتقال داده ها می شود .

• Bps : سرعت انتقال داده ها یا بیت در ثانیه.

• Network : ‌شبکه .

• Share : به اشتراک گذاری داده ها و منابع سخت افزاری برای استفاده همه کامپیوتر های موجود در شبکه .

• Time Sharing : نوعی شبکه در قدیم که از یک Main Frame به عنوان سرور استفاده می کردند .

• ( LAN ( Local area network : شبکه های محلی و کوچک .

• ( MAN ( Metropolition area network : شبکه های شهری .

• ( WAN ( Wide area network : شبکه های گسترده همانند اینترنت .

• Node : به هر کامپیوتر وصل به شبکه Node یا گره می گویند .

• Server : سرویس دهنده .

• Client : سرویس گیرنده .

• Peer – to – Peer : شبکه های نظیر به نظیر که در آن هر کامپیوتری هم سرویس دهنده هست و هم سرویس گیرنده ) .

• Server – Based : شبکه های بر اساس سرویس دهنده که در آن یک یا چند کامپیوتر فقط سرویس دهنده و بقیه کامپیوتر ها سرویس گیرنده هستند .

• Topology : توپولوژی به طرح فیزیکی شبکه و نحوه آرایش رایانه ها در کنار یکدیگر می گویند .

• BUS : توپولوژی خطی که در آن رایانه ها در یک خط به هم وصل می شوند . در این توپولوژی رایانه اول و آخر به هم وصل نیستند .

• Ring : توپولوژی حلقوی که بصورت یک دایره رایانه ها به هم وصلند و در این توپولوژی رایانه اول و آخر به هم وصلند .

• STAR : توپولوژی ستاره ای که در آن از یک هاب به عنوان قطعه مرکزی استفاده می شود . و رایانه ها به آن وصل می شوند .

• Collision : برخورد یا لرزش سیگنال ها .

• NIC : کارت شبکه .

• ‍Coaxial : نوعی کابل که به کابل های هم محور معروف است و دو نوع دارد ، و در برپایی شبکه ها به کار می رود . و دارای سرعت ۱۰ مگابیت در ثانیه است .

• TP ( Twisted Pair : کابل های زوج به هم تابیده هستند و دو نوع دارند ، و در برپایی شبکه ها به کار می رود . و حداکثر دارای سرعت ۱۰۰ مگابیت در ثانیه است .

• Fiber Optic : کابل فیبر نوری که در برپایی شبکه ها به کار می رود و سرعت بسیار بالایی ( بیش از ۱ گیگا بیت در ثانیه ) دارد.

• Thinnet : کابا کواکسیال ( هم محور ) نازک با پشتیبانی ۱۸۵ متر بدون تقویت کننده .

• Thiknet : کابا کواکسیال ( هم محور ) ضخیم با پشتیبانی ۵۰۰ متر بدون تقویت کننده .

• (UTP ( Unshielded T.P : نوعی کابل زوج به هم تابیده بدون حفاظ که شامل پنج رده می باشند .

• ( STP ( Shielded T.P : نوعی کابل زوج به هم تابیده دارای حفاظ می باشد .

• Rack : در شبکه های T.P. بزرگ برای جلوگیری از اشغال فضای زیاد توسط کابل ها مورد استفاده قرار می گیرد .

• Patch panel : دستگاهی که بین هاب و کابل قرار می گیرد .

• RJ-45 : فیش های مربوط به کابل های T.P. هستند .

• IRQ :‌ وقفه .

• Base I/O Port : آدرس پایه ورودی و خروجی .

• Base Memory : آدرس پایه حافظه .

• Boot ROM : قطعه ای برای بالا آوردن شبکه هایی که در آن هیچگونه دیسکی برای بالا آوردن نیست ( شبکه های Disk less ) .

• Wireless : بی سیم .

• ( WLAN ( Wireless LAN : شبکه هایی محلی بی سیم .

• ( AP ( Access Point : دستگاهی که یک کامپیوتر بی سیم را به یک شبکه LAN وصل می کند .

• ‍Cell : محدوده ای را که یک AP تحت پوشش دارد را سلول ( Cell ) می گویند .

• Protocol : پروتکلها ، قوانین و روالهایی برای ارتباط هستند و یک شبکه برای برقراری ارتباط از این قوانین استفاده می کند .

• OSI : استاندارد OSI برای برقراری ارتباط دو رایانه ، وظایف را به هفت قسمت تقسیم کرده و به ۷ لایه OSI معروف شده اند و به ترتیب ( فیزیکی – پیوند داده ها – شبکه – انتقال – جلسه – نمایش و کاربردی ) می باشند .

• پروژه ۸۰۲ : نوعی پروتکل برای اجزای فیزیکی شبکه های LAN می باشد .

• CSMA/CD : نوعی روش دسترسی به خط با استفاده از روش گوش دادن به خط .

• Token Ring : روش عبور نشانه که در شبکه های حلقوی به کار می رود ، از انواع روش دسترسی به خط است .

• MAU : وسیله ای مانند هاب ، اما در شبکه های حلقوی به کار می رود .

• Novell Netware‌ : نوعی سیستم عامل برای شبکه .

• Unix : نوعی سیستم عامل برای شبکه .

• Windows NT Server & Windows 2000 Advanced Server : نوعی سیستم عامل برای شبکه .

• Search Engine : موتور جستجو .

• معماری شبکه : به ترکیبی از استانداردها ، پروتکل ها و توپولوژی ها معماری شبکه می گویند .

جلسه ی سوم آموزش ASP.Net ( یک صفحه ی ASP ساده )

شهریور ۲۱م, ۱۳۸۸

یک صفحه ASP.NET بطور عمده دارای دو بخش است: قسمت تعریف کد و قسمت اجرا. قسمت تعریف کد شامل تعریف کلیه موارد و زیربرنامه هایی است که در قسمت اجرای کد استفاده می شوند. قسمت اجرای کد بخشی از صفحه است که در هنگام فراخوانی صفحه اجرا می شود و حاصل آن کد HTML است که به مرورگر ارسال می گردد.

بعنوان مثال در زیر یک صفحه ASP.NET ساده آمده است که حاصل اجرای آن نمایش زمان جاری است. این صفحه به ویژوال بیسیک نوشته شده است.
<Script Runat=”Server”>
Sub Page_Load

myLabel.Text = DateTime.Now()
End Sub
</Script>
<html>
<head><title>Simple.aspx</title></head>
<body>
<asp:Label
ID=”myLabel”
Runat=”Server” />
</body>
</html>

قسمت تعریف کد
قسمت تعریف کد در لیست ? آن قسمت از صفحه است که با برچسب <Script Runat=”Server”> شروع شده و با برچسب بسته ی Script تمام می شود. در لیست بالا یک زیربرنامه بنام Page-Load تعریف شده است که در هنگام فراخوانی صفحه، بطور خودکار اجرا می شود. این زیربرنامه صفت Text مربوط به ابزار Label را با زمان و تاریخ جاری مقداردهی می کند.

قسمت اجرای کد
قسمت اجرای کد در این صفحه عبارت است از مابقی صفحه در زیر قسمت تعریف کد. شما حتما تاکنون متوجه شده اید که عمده قسمت اجرای کد می تواند همان HTML معمولی باشد. در این قسمت از ابزار Label از مجموعه ابزارهای ASP.NET برای نمایش یک متن یا برچسب بروی صفحه HTML استفاده شده است. نحوه تعریف ابزار Label در زیر آمده است:
<asp:Label ID=”myLabel” Runat=”Server”/>

هنگامی که این صفحه اجرا می شود این ابزار هم به کد متناظر HTML تبدیل می شود.

تعریف ویژگی ها یا Properties در جاوا اسکریپت

شهریور ۲۱م, ۱۳۸۸

یکی از امکانات نسخه های جدید JavaScript پشتیبانی از ویژگی ها (Property) هست. اگر با سایر زبان های برنامه نویسی آشنایی داشته باشید، مطمئنن می دانید که ویزگی ها یکی از بخش های جدایی ناپذیر زبانهای برنامه نویسی OOP هستند.

ویژگی ها این امکان را فراهم می کنند که بر روی مقادیر متغیرهای خود کنترل داشته باشید و حق دسترسی برای آنها جهت ویرایش تعیین کنید. همچنین می توان داده های وارده را فیلتر کرده تا فقط محدوده و داده های مورد نظر اعمال شوند.

با این مقدمه می خواهم چند روش تعریف ویژگی ها در جاوا اسکریپت مطرح کنم.
تعریف اول

جاوا اسکریپت زبان بسیار ساده ای است. ابجکت ها (یا اشیا) در جاوا اسکریپت چیزی بیش از مجموعه ای از کلید ها و مقادیر نیستند. به این معنی که برای دسترسی به عضوی از یک شیئ می توانید همانند یک آرایه با آن رفتار کنید.

برای مثال برای افزودن یک عضو به یک شیئ به مثال زیر توجه کنید:
var thing = new Object();
thing[ “prop1” ] = “Hello”;

در این مثال ما عضو جدیدی به نام prop1 را به thing اضافه کردیم. مقدار prop1 برابر Hello خواهد بود. روش دیگری هم برای افزودن عضو به شیئ مورد وجود دارد. به مثال زیر توجه کنید:
var thing = new Object();
thing.prop1 = “Hello”;

روش دیگر برای معرفی اشیا استفاده از لیتراتهای ابچکت هست که نتیجه ای دقیقا مانند دو مثال قبلی دارد:
var thing = {prop1 : “Hello”};

استفاده از مقدار prop1 بسیار ساده است می توان همانند یک آرایه یا یک ویژگی از آن استفاده کرد:
var thing = new Object();
thing.prop1 = “Hello”;
alert( thing[“prop1”] );
thing.prop1 = “Hello Again!”;
alert( thing.prop1 );
روش دوم

روشی که در بالا توضیح دادم خیلی ساده و کاربردی است ولی تنها محدودیتی که دارد این است که امکان کنترل بر داده هایی که قبول می کند و یا مقداری که باید برگرداند وجود ندارد.

برای رفع این مشکل شرکت Mozilla راه حلی را ارائه کرده است که به مرور سایر مرورگر ها نیز از آن پشتیبانی می کنند.

این روش چیزی جز کلمات کلیدی get و set نیست.
var thing = {
_price: 0,
get price() { return this._price; },
set price(value)
{
if (value < 0)
throw “price must be greater than zero”;
this._price = value;
}
};

در این مثال شیئ با نام thing تعریف شده است. این شیئ دارای یک متغیر با نام price_ و ویژگی price هست که با استفاده از یک متد get و یک متد set تعریف شده است.

به طور ساده تر زمانی که می خواهید مقداری را از ویزگی price بخوانید تابع معرفی شده در مقابل get فراخوانی خواهد شد و همچنین، هنگام مقدار دهی به price تابع معرفی شده در مقابل set فراخوانی خواهد شد.

همانطور که می بینید ویزگی price در هنگام عمل set مقدار ورودی را بررسی می کند و اگر کوچکتر از صفر باشد خطایی را تولید خواهد کرد.

نمونه استفاده از کد بالا:
// مقدار دهی
thing.price = 5;

// نمایش مقدار
alert( thing.price );

// مقدار نامعتبر و تولید خطا
thing.price = -10;

متاسفانه از این روش مرورگر های کمی پشتیبانی می کنند و در حال حاظر مرورگرهای Firefox و Safari 3 و Opera 9.5 از آن پشتیبانی می کنند.
روش سوم

این روش را مرورگر Firefox برای استفاده در خودش طراحی کرده و در سایر مرورگرها کار نخواهد کرد. روش بسیار جالبی است و ساده تر از روش قبلی می باشد.
var thing =
{
_price: 0
};
thing.__defineGetter__(“price”, function(){ return this._price; });
thing.__defineSetter__(“price”, function(value)
{
if (value < 0)
throw “price must be greater than 0″;
this._price = value;
}
);

در این مثال ابتدا شیئ thingتعرفی می شود. سپس با استفاده از تابع __defineGetter__ متد get با برای ویژگی price تعریف می شود. این تابع دو ورودی دارد که اولی نام ویژگی مورد نظر است و دومی رفرنسی به تابع مورد نظر برای get. البته در این مثال تابع در همان جا تعریف شده است.

تابع __defineSetter__ همانند __defineGetter__ عمل می کند و فقط برای اضافه کردن تعریف set به ویژگی مورد نظر مورد استفاده است. در این مثال تابع مربوط به set در همان خط تعریف شده و مقدار ورودی را برای مقادیر کمتر از صفر کنترل می کند.

همانند مثال قبلی این مثال نیز کار خواهد کرد:
// مقدار دهی
thing.price = 5;

// نمایش مقدار
alert( thing.price );

// مقدار نامعتبر و تولید خطا
thing.price = -10;
روش چهارم

در این روشی که می خوام معرفی کنم، واقعا ویژگی ها را پیاده سازی نمی کند ولی مانند یک ویژگی عمل می کنه و می تونه در کار شما مفید واقع بشه. در این روش در حقیقت ما دو تابع جداگانه برای خواندن و نوشتن در متغیر تعریف می کنیم و کارهای مورد نظر را در داخل آنها انجام می دهیم.
function thing()
{
var _price = 0;
this.getPrice = function(){
return _price;
};
this.setPrice = function(val){
if (val < 0)
throw “price must be greater than 0″;
_price = val;
};
}

در این مثال شیئ thing به عنوان یک تابع تعریف شده است که می توان از روی متغیر و اشیا دیگری هم ساخت. در داخل این تابع دو تابع getPrice برای خواندن و setPrice برای نوشتن در متغیر _price تعریف شده است.
// ایجاد نمونه جدید از تابع تعریف شده
var thing = new thing();

// دسترسی متقیم به متغیر داخلی
alert(product._price);
//مقدار دهی با استفاده از تابع
product.setPrice(2);
// دسترسی به مقدار با استفاده از تابع مربوطه
alert( product.getPrice() );
// مقدار با یک مقدار نامعتبر و دریافت خطا
product.setPrice( -4 );

با این اوصاف مشاهده می کنید که javascript روز به روز قوی تر می شود، مخصوصا که Web 2 بسیار به javascript وابسته هستند.

جاوا اسکریپت چیست؟

شهریور ۲۱م, ۱۳۸۸

برخلاف شباهت اسمی موجود برنامه Java و JavaScript، هیچگونه شباهتی بین این دو برنامه وجود ندارد. Java یک زبان برنامه نویسی بسیار کامل و پیشرفته ای است که توسط شرکت sun microsystem تهیه شده و جاوا اسکریپت توسط شرکت netscape.( اساس Java در برنامه های client-side برای ایجاد appletها میباشد، این برنامه های کوچک توسط شبکه اینترنت دریافت شده و درون خود browserها اجرا میشوند بطوریکه بعلت وجود قابلیت همه گیر Java، این برنامه در تمامی browserهایی که قابلیت اجرای Java را دارند، کار می کنند.

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

اما جاوا اسکریپت چیست؟

جاوا اسکریپت زبانی است که در صفحات html کاربرد دارد و قابلیتهای بسیاری از قبیل : افزایش کیفیت طراحی صفحات , کنترل صفحات ، کنترل browser بازدید کننده ، ساخت و استفاده cookie ها و بسیاری چیزهای دیگر.

اطلاعات پیش نیاز چیست؟

فقط HTML /XHTML ، البته کمی هم دید برنامه نویسی لازم است .اما ما تمامی مبانی آنرا به شما آموزش میدهیم و شما احتیاجی به دانستن زبان برنامه نویسی جداگانه ندارید ولی کمی دید برنامه نویسی لازم است.

JavaScript یک زبان برنامه نویسی اسکریپتی است که کدهای آن بسیار شبیه به زبان C است . زبان جاوا اسکریپت به حروف بزرگ و کوچک حساس میباشد. ). زبان JavaScript یک زبان برنامه نویسی “شی گرا” میباشد. از آنجا که JavaScript یک متن ساده میباشد، در نتیجه میتوان از هر ویرایشگر متن کمک گرفت، در سیستم ویندوز اغلب کاربران از برنامه notepad استفاده میکنند

امکانات و قابلیت های جاوا اسکریپت:

icon exclaim  جاوا اسکریپت  چیست؟ طراحان صفحات وب می توانند با استفاده از Function ها و Object های آماده و از پیش تعریف شده جاوا اسکریپت قابلیت های زیادی را برای صفحات وب ایجاد کنند. برای مثال:
-قالب Html را طوری طراحی کنند که کاربران بتوانند خود اجزای صفحه وب مثل Background رنگ یا سایز لینک یا متن را داشته باشند.
-می توان با استفاده از کدهای گرافیکی انیمیشن ایجاد کرد و همچنین صفحاتی را طراحی کرد که کاربر به دلخواه قادر به جابجایی یا تغییر تصاویر گرافیکی باشد .
-Event ها را کنترل کند و با جاوا و Plug-in ها ارتباط داشته باشد.
-فرمهای Clint-Side ایجاد کند و اطلاعات وارد شده توسط کاربر در فرمها را ارزیابی کند و در صورت وجود هرگونه خطایی در نحوه پر شدن آنها پیغام مناسب را نمایش دهد.

مزایای جاوا اسکریپت :

· جاوا اسکریپت بر خلاف vbscript در همه browser ها قابل استفاده و خوانده شدن است.

· جاوا اسکریپت قابلیت برنامه نویسی را به صفحات HTML شما میدهد.

· جاوا اسکریپت صفحات HTML شما را پویا میکند.

· جاوا اسکریپت به رویدادها پاسخ میدهد ( مثل کلیک موس،load شدن صفحه و …)

· جاوا اسکریپت قابلیت ارزیابی و تغییر روی اطلاعات را دارد.

· جاوا اسکریپت قابلیتهای زیادی در کنترل browser بیننده دارد.

· جاوا اسکریپت میتواند cookie بسازد و استفاده کند

زبان برنامه نویسی Delphi

شهریور ۲۱م, ۱۳۸۸

یک محیط نرم افزاری توسعه یافته برای برنامه‌های مخصوص پنجره‌های مایکروسافت است. این محیط همیشه پشتیبانی شده است برای توسعهٔ برنامه‌های کاربردی پنجره‌ای محلی توسط زبان برنامه نویسی Delphi، به علاوه توسعهٔ Opject Pascal. دلفی ۲۰۰۷، نسخه۱۱، همچنین توسعهٔ در C++ برای پایگاه‌های پنجره‌ای مایکروسات ۳۲بیتی، و در دلفی و C# برای پایگاه‌های Microsoft.NET را پشتیبانی می‌کند. دلفی ۲۰۰۹، نسخهٔ ۱۲ ، یعنی آخرین نسخهٔ آن که در آگوست سال ۲۰۰۸ منتشر شد، حمایت از Unicode برای VCL و IDE را به خوبی ویژگی های کامپایلر جدید (روش های عمومی و تخلصی) به برنامه اضافه کرد و IDE همراه اولین نسخه از مدیریت منابع و مدیریت بازرسی و نگهداری پروژه به خوبی پیکر بندی های ساخت تعریف شدهٔ کاربر آسان کرد. دلفی در اصل برای توسعهٔ برنامه‌های روی میزی و پایگاه‌های داده‌ای سازمانی استفاده می‌شود، اما ابزار توسعهٔ نرم افزاری با هدف کلی تری که مناسب با اکثر پروژه‌های نرم افزاری است ، می‌باشد. به همراه کتابخانه‌های ضمیمه شدهٔ بیشتر، امکان بهتری برای پروژه‌های تحت شبکه فراهم شده است. دلفی در نسخه‌های مختلف با ویژگی های متفاوتی گسترش یافته است: شخصی( فعلاً در دسترس نیست)، حرفه ای، سازمانی(قبلاً کارگزار و کاربری) و معماری.

[ویرایش]
ویژگی های اختصاصی

دلفی و Kylix از زبان برنامه نویسی دلفی مبتنی بر پاسکال استفاده می‌کنند، و کد منبع دلفی را به کد محلی x86 یا کد مدیریت شدهٔ .NET کامپایل می‌کند. آن ها شامل VCL/CLX (کتابخانهٔ مؤلفه دیداری) هستند، که رابط های مستقل COM(ریزفیلم های خروجی کامپیوتر) همراه اجرای کلاس های فرض شده با مرجع ، و تعداد زیادی از اجزاء بیگانه را حمایت می‌کنند. پیاده سازی های رابط به قسمت هایی از قابلیت های کلاس ها واگذار می‌شود. گردانندهای پیام بوسیلهٔ علامت زدن شیوه‌ای از کلاس با عدد ثابت پیام برای اجرا پیاده سازی می‌شوند. تأکید مهم بر روی اتصال پایگاه داده قرار دارد، و این موجب شده دلفی در مورد پایگاه داده دچار اشتباه شود، (فقط) نرم افزار نهایی طراحی کننده، مجموعۀ پایگاه داده‌ای غنی خود را عرضه کرده است.

[ویرایش]
مزیت ها

دلفی یک زبان برنامه نویسی قوی سطح بالا است. در اصل بر مبنای زبان برنامه نویسی خوب طراحی شدۀ پاسکال ایجاد شده است. دلفی بر خلاف پاسکال مقدمتاً برای اهداف تحصیلی طراحی نشد. اضافه بر ویژگی های زبان های سطح بالا ، برنامه نویسی سطح پایین نیز با فعال شدن اسمبلر و بوسیلۀ کدهای دستورالعمل پردازنده نیز ممکن است. ویژگی های شیئ گرایی زبان فقط چند ریختی بر مبنای کلاس- و رابط – که باعث می‌شود برنامه با وضوح بیشتری درظاهر یک برنامه نوشته شده به چند زبان نوشته شود، اجازه و استفاده چند ارثی داده شده. کلاس های خودی، اولین اشیاء کلاس هستند. اشیاء در حقیقت به اشیاء رجوع می‌کنند(شبیه جاوا) که دلفی به طور ضمنی ارجاع می‌دهد، بنابراین به اختصاص دادن حافظه برای اشاره گرها به اشیاء توسط خودمان یا تکنیک های مشابه آن در زبان های دیگر نیازی نیست. در آنجا مراجع اختصاصی که نوع رشته دارند وجود دارد.(به خوبی رشته‌های نا متناهی) ترجیحاً نسبت به توابع، رشته‌ها بوسیله علامت + می‌توانند ملحق شوند. برای آن دسته از انواع رشته‌ای اختصاص داده شده، مدیریت حافظه توسط خودمان لازم نیست، بلکه مدیر حافظه این را مدیریت می‌کند. مدیر حافظۀ پیشرفته که توسط Borland Developer Studio 2006 معرفی شده است، توابعی را برای اختصاص دادن حافظه فراهم می‌کنند. زبان برای پیشرفته سازی های بعدی مناسب است و از IDE جامع آمده است. دلفی با یک رابط گرافیکی بزرگ به اسم VCL ارتباط خوبی دارد، که شامل خیلی از کدهای منبع آن است. سوم-اجزا حزب (معمولا با منبع کامل قانون) موجود در بازار هم به منزله تقویت ide یا برای سایر کارهای دلفی مربوط به توسعه است. IDE شامل واسط گرافیکی برای محلی سازی و ترجمۀ برنامه‌های ایجادشده که می‌تواند به یک مترجم گسترش داده شود ، بدون هزینۀ اضافی.( برخی از گسترش دهنده‌ها دستۀ سوم محصولات را به خاطر عاملیتی که دارند ترجح می‌دهند.) رابط گرافیکی حالتی را پیش می‌آورد که نسخه‌های قدیمی به نسخه‌های جدید دلفی، تبدیل شوند. کتابخان های دسته سوم می‌توانند از طریق فروشنده یا قابلیت های کامپایل دوباره برنامه را ارتقا داده شوند. VCL سازگار کنندۀ قدیمی ای بود از تزریق وابستگی یا کنترل معکوس. VCL یک مدل با قابلیت استفاده دوباره ، خبره و توسعه پذیر با ارتقا دهنده هاست. با کمک کنندۀ کلاس ، می‌توان عملکرد هستۀ RTL و کلاس های VCL را بدون تغییر دادن منبع اصلی کد تغییر داد. بهینه سازی سریع وسادۀ انتقال کامپایلری می‌تواند به برنامۀ اجرایی تبدیل کند.CLX بیشتر پشتیبانی نشد چون Kylix از رده خارج شد.

[ویرایش]
عیب ها

دلفی درون خود، یک ابزار گذر از پایگاه نیست. اما Delphi.NET برای چارچوب های گرافیکی .NET کامپایل می‌کند، که برای پایگاه‌های گذار با چند تنظیم کد منبع pre.NET اصل طراحی شده است. محصول Kylix، که انتقال برنامه‌ها را به لینوکس امکان می بخشد، خیلی به فروش نرفت. هر نسخه جدید دلفی سعی در سازگاری با نسخ قبلی دارد. این به کاربران امکان می‌دهد تا کدهای ارث برده شده بسازند بدون اینکه در توابع و رابط ها مشکلی پیش بیاید. اما بعضی از ارتقا دهندگان احساس می‌کنند ای توجه به سازگاری با قبل از تحول در دلفی جلو گیری کند، و باعث کهنگی و از رده خارج شدن تصمیمات طراحی در کتابخانه‌های استاندارد کلاس(VCL/RTL) شود. در حال حاضر توسعه‌های ۶۴ بیتی در دلفی موجود نیست، اما نسخه‌ای با نام Commodore که در اواسط ۲۰۰۹ به بازار خواهد آمد در حال برنامه ریزی است.

[ویرایش]
تاریخچه

Turbo Pascal و Borland Pascal کامپایلرهای ۱۶بیت با کد محلی ارزان قیمتی بودند. آنها در طی سال ها تجدید چاپ شدند، و در اصل برای تولید برنامه‌های نمایش متن استفاده می‌شدند. وقتی استفاده از رابط های گرافیکی کاربر توسط ۳٫۱Microsoft Windows حمایت شد، استفاده از Borland Pascal تکمیل شده به عنوان زبان زیر مجموعه معرفی شد. دلفی یکی از اولی ابزارچیزی که آمد بود که به عنوان Rapid Application Development(RAD) شناخته می‌شد وقتی که در سال ۱۹۹۵ برای Windows 3.1 16 بیتی آمد. دلفی۲ ، یک سال بعد منتشر شد، که از طرف محیط Windows 32 بیتی حمایت می‌شد و استفاده‌های مختلفی از C++ به عنوان یک زبان زیرمجموعه می نمود. و C++ Builder چند سال بعد دنبال شد.

رئیس طراحی دلفی آندرس هجلسبرگ بود، کسیکه Turbo Pascal را توسعه داد. او در سال ۱۹۹۶ به Mhcrosoft رفت تا روی C# کار کند. در سال ۲۰۰۱ لینوکس Kylix منتشر شد. این نسخه نقد شده و با کیفیت پایین ارزیابی شد و به خوبی فروش نرفت و بعد از نسخهٔ سوم از رده خارج شد. برای حمایت از Windows و Linux طوئمان به منظور ارتقای پایگاه‌های گذار تلاش شد ، و نسخهٔ پایگاه گذاری از VCL که به عنوان CLX شناخته می‌شد در ۲۰۰۲ به همراه دلفی۶ منتشر شد. این تلاش ها برای تکنولوزی CLX بیهوده شد و به همراه متروک شدن Kylix ، CLX هم از میان رفت. از آنجایی که نسخه ۱٫۰ ارتقای پایگاه داده باقی ماندهٔ یکی از قوی ترین نقاط دلفی است. کتابخانه مؤلفهٔ دیداری (VCL) شامل کتابخانهٔ بزرگی از پایگاه داده کنترل های آگاه است، و پایگاه داده به مؤلفه‌ها دسترسی دارد. موتور پایگاه داده Borland پایگاه دادهٔ اصلی لایهٔ اتصال بود، و تنها انتخاب در نسخه‌های اولیهٔ دلفی بود، اگرجه الآن به ندرت استفاده می‌شود، اما آخرین نسخه به عنوان یکی از اختیارات قابل نصب در BDE وجود دارد. دلفی۷ که در آگوست ۲۰۰۲ منتشر شد، تبدیل به نسخهٔ استانداردی شد که بیشتر از دیگر نسخ ساده توسط توسعه دهندگان استفاده شد، و تا این تاریخ نیز استفادهٔ مؤثری از آن می‌شود. این نسخه قابلیت حمایت از قالب های Windows XP، و حمایت های بیشتری را نیز برای ساختن برنامه‌های تحت web اضافه کرده است. همچنین آخرین نسخهٔ دلفی بود که بدون فعال سازی قابل استفاده بود. این خصوصیت ثبت اختیاری دارد که می‌توان از آن صرف نظر نمود. دلفی۷ یکی از پر طرفدارترین IDEها است که توسط Borland تولید شده است، که به خاطر پایداری ، سرعت و نیاز کم به سخت افزار است. به هر حال، در تمام نسخه‌های دلفی مقدار زیادی از خطاهای شناخته شده وجود دارد که Borland آنها را برطرف نکرده است. وظیفهٔ برطرف کردن این خطاها در انجمن دلفی باقی ماند. دلفی۸ در دسامبر ۲۰۰۳ منتشر شد، که تنها .NET منتشر شده بود و به کاربران اجازه می‌داد اشیاء دلفی با کد پاسکال را به .NET CIL کامپایل کنند. این همچنان مهم بود که IDE های خود را برای اولین بار تغییر دهد، از نوع IDE پنجرهٔ چندگانه متغیر در روی میز کار(desktop) به نوع دیدن و احساس کردن شبیه Microsoft’s Visual Studio.NET . HDE های جدید هنوز لایهٔ پنجره‌های “Classic Undocked” را به عنوان Option در دسترس دارند. نسخهٔ بعدی، دلفی۲۰۰۵ (دلفی۹)، شامل ارتقای Win32 و .NET در یک IDE ساده ، که تعهدات Borland را برای کاربران Win32 تکرار کرد. دلفی ۲۰۰۵ شامل فرصت انجام طراحی بوسیله ترک داده در پایگاه داده است. همچنین شامل ID پیشرفته است و در متن برنامه for را نیز اضافه کرده است (شبیه foreach برای C#). به هر حال، به خاطر بعضی از خطا ها مورد انتقاد قرار گرفت. هردوی دلفی۸ و دلفی۲۰۰۵ مشکلات پایداری را در هنگام اجرا شدن دارند، که فقط تا اندکی در service packها بر طرف شده اند. بعدها در سال ۲۰۰۵ دلفی ۲۰۰۶ منتشر شد و مدل ارتقا یافته‌ای از C# و Delphi.NET ،DelphiWin32 و C++ را در IDE ساده‌ای ترکیب کرد. از دلفی ۸ یا دلفی ۲۰۰۵ وقتی که اجرا می‌شد پایدارتر بود، و حتی توسط انتشار بسته‌های خدماتی و برطرف سازی اساسی مشکلات پیشرفته تر شد. در ۸ فوریه سال۲۰۰۶ Borland اعلام کرد که به دنبال خریداری برای IDE هایش و خط پایگاه داده‌ای محصولاتش است، که شامل دلفی برای تأکید بر خط ALM است. اخبار دلگرم کننده‌ای برای کاربران باقیمانده آمد. در ۶ سپتامبر سال ۲۰۰۶ ابزار ارتقا دهندهٔ گروهی(اسم شرکتی که هنوز از بین نرفته) شرکت نرم افزاری Borland نسخه‌های تک زبانه از Borland developer studio را منتشر کرد، که به نام مشهور Turbo بازگشت.محصول مجموعهٔ Turbo شامل Turbo Delphi برای Win32 ،Turbo Delphi برای .NET، Turbo C++، و Turbo C# است. هر نسخه در دو ویرایش در دسترس است: Explorer(نسخه‌ای که Download آن رایگان است) و Professional( با قیمت ارزانتر US$899 برای کاربران جدید؛US$399 برای نو سازی) نسخه‌ای که دسترسی به هزاران مؤلفهٔ شخص ثالث را امکان پذیر می‌کند. بر خلاف نسخه‌های شخصی قبلی دلفی، ویرایش های جدید Explorer می‌توانند برای گسترش های تجاری قابل استفاده باشند. در ۱۴ نوامبر سال ۲۰۰۶ Borland اعلام کرد که ترجیح می‌دهد که فروش ابزار توسعهٔ گروهی متوقف و به به شرکت فرعی مستقلی با نام CodeGear تبدیل شود.

دلفی ۲۰۰۷، اولین نسخهٔ CodeGear، در ۱۶ مارس ۲۰۰۷ منتشر شد. در ابتدا ماهیت Win32 منتشر شد، قبل از اینکه ماهیت.NET از دلفی۲۰۰۷ منتشر شود، به عنوان بخشی از محصول CodeGear RAD Studio 2007 . ویژگی های جدید شامل حمایت از ساخت MS و ارتقای کتابخانه مؤلفه دیداری برای Windows vista است. CodeGear هم چنین DBX4 را به عنوان نسخهٔ بعدی dbExpress معرفی کرد. برای اولین بار دلفی می‌توانست از اینترنت Download و با اجازه نامه فعال سازی شود. نسخه‌های بین المللی از دلفی ۲۰۰۷ همزمان به انگلیسی ، فرانسوی، آلمانی و ژاپنی پیاده سازی می‌شد. RAD Studio 2007 که شامل .NET وC++Builder development می‌شود، در ۵ سپتامبر ۲۰۰۷ منتشر شد. آخرین نسخه ، دلفی ۲۰۰۹( با نام کد شدهٔ Tiburón)، خیلی از ویژگی های جدید مثل کار دوبارهٔ به صورت کامل روی VCL و RTL برای حمایت کامل از Unicode ، و روش های کلی با نام مستعار(برای هردویWin32 native و .Net development) را اضافه کرد. Borland ، CodeGear را به Embarcadero Technologies در سال ۲۰۰۸ فروخت. Embarcadero امتیاز CodeGear را که توسط Borland تولید شده بود ، برای شناسایی ابزار و راهنمایی های پایگاه داده‌ای آن، نگهداری می‌کند. و Embarcadero تصمیم گرفته است ابزار پایگاه دادهٔ آن را تحت DatabaseGear moniker شناسایی کند.

[ویرایش]
نام

دلفی در اصل پروژهٔ تحقیقاتی محرمانه‌ای بود در Borland که منجر به محصولی شد که AppBuilder نامیده می‌شد. کمی قبل از اولین انتشار AppBuilder از طرف Borland ، Novell AppBuilder منتشر شد، که Borland را در نیاز اسمی جدید رها کرد. بعد از تلاش زیادی، نام دلفی غلبه کرد. توسعه دهنده Danny Thorpe کدنام دلفی را با مرجع Oracle at Delphi انتخاب کرد. یکی از اهداف اصلی دلفی تأمین اتصال پایگاه داده با برنامه نویس به عنوان یک ویژگی کلیدی بود و بستهٔ پایگاه داده‌ای رایج در آن زمان Oracle database بود. بنابراین” اگر می خواهید با Oracle صحبت کنید، به دلفی بروید.” همینطور که توسعه ادامه یافت ، نام بر آنها رشد کرد و حمایت Borland نیزاز نام دلفی بیشتر شد. دورهٔ بعدی تولید کنندگان Anders Hejlsberg، معمار اصلی دلفی و Turbo pascal ، در سال ۱۹۹۶ تحت استخدام Microsoft در آمد، جایی که او یک مهرهٔ کلیدی بود در تولید قالب های گرافیکی Microsoft.NET و منجر به طراحی هر دوی Java با گرایش J++ و C# شد. Chuck Jazdzewski، کسیکه دانشمند رئیس و معمار در تکنولوژی دلفی Borland بود،در سال ۲۰۰۴ Borland را ترک کرد و به Microsoft پیوست. Danny Thorpe ، دانشمند رئیس در آن موقع در ۲۰۰۵ به Google پیوست و در ۲۰۰۶ به Microsoft پیوست. نرم افزار مربوط

[ویرایش]
دلفی برای PHP

دلفی بزای PHP یکIDE برای PHP است. این عملکرد صحیح RAD را فراهم می‌کند. این ویژگی های دلفی یا Visual basic از طرف طراح، اصلاح کنندهٔ خطا(بنا شده بر خدمات دهندهٔ شبکه)، شبیه هستند. این همچنین شامل کتابخانه VCL که به PHP منتقل شده است می‌باشد. برای حمایت از ویژگی های Web2 شبیه AJAX، آن را به یک IDE منحصر به فرد تبدیل کرده است. این محصول در ۲۰ مارس ۲۰۰۷ معرفی شد و برQadram Qstudio بنا شده است، که CodGear الآن کاملاً و انحصاراً مالک آن است.

[ویرایش]
محصولاتی که توسط دلفی تولید شده است

در میان خیلی از محصولاتی که توسط دلفی تولید شده است داریم: • محاسباتی: Intuit Lacerte • محصولات CodeGear : CodeGear Delphi, CodeGear C++ Builder, Borland JBuilder versions 1 and 2 • گسترش ومدیریت پایگاه داده: MySQL Tools (Administrator, Query Browser), TOAD • نرم افزارهای مهندسی: Altium Designer/Protel (electronics design) • نمایش دهنده عکس: FastStone Image Viewer, FuturixImager, Photofiltre • پیام دهندهٔ اینترنت: Skype (VoIP and IM), QIP (IM), The Bat! (e-mail کاربر), PopTray (e-mail چک کننده), FeedDemon (feed viewer), XanaNews, Xnews (خوانندهٔ اخبار گروهی) • تولید Music : FL Studio • توسعهٔ نرم افزار: Dev-C++ (IDE), DUnit (unit testing), Help & Manual (help system authoring), Inno Setup (installer engine) • نویسندگی شبکه: Macromedia HomeSite (HTML ویرایش گر), TopStyle Pro (CSS ویرایش گر), Macromedia Captivate (screencast) • جستجوگر شبکه (پوشش MSIE): Avant Browser, Netcaptor • تسهیلات: Spybot – Search & Destroy, Ad-Aware (anti-spyware), jv16 PowerTools, Total Commander (file manager), Copernic Desktop Search, PowerArchiver, Beyond Compare(file comparison)], WordWeb (dictionary/thesaurus(

[ویرایش]
همزادها و جایگزین ها

خیلی از کامپایلر های Pascalشئ گرا وجود دارند که در اصل بوسیلهٔ Borland توسعه یافته اند، و همچنین محصولاتی که قالب های گرافیکی را مثل دلفی کاملاً فراهم کردند. بعضی از آنها کارهایی را انجام می‌دهند که دلفی نمی‌تواند، مثل حمایت از سیستم عامل های مختلف، و اجازه برای امتحان کد منبع کامپایلر. آنها بعضی مواقع عادت دارند بخش های server از برنامه‌های دلفی را در سیستم عامل هایی به غیر سیستم عامل های Microsoft اجرا کنند. اکثراً حمایت Linux را در سال های قبل از Kylix داشتند. • Bloodshed Dev-Pascal: ویرایش گر Windows 32 بیتی خیلی از لحاظ گرافیکی آراسته شده(هر چند غیر RAD) به عنوان تنظیم کنندهٔ GNU Pascal و Free Pascal • Lazarus: IDE RAD که از کامپایلر رایگان Pascal استفاده می‌کند.

[ویرایش]
تبصره

۱٫ ^ “A First Look at (Borland Developer Studio) Delphi 2006 – Refactoring in Delphi 2006″. About.com. Retrieved on 2007-12-19. 2. ^ “Delphi and C++Builder Roadmap”. CodeGear.com. Retrieved on 2008-09-29. 3. ^ David Intersimone. “Press Release: Borland forming CodeGear to focus exclusively on developer productivity”. Retrieved on 2006-11-28. 4. ^ David Intersimone. “Borland History: Why the name “Delphi?”". Retrieved on 2006-11-28. 5. ^ “Borland Brain Drain Continues”. eWeek (2004-02-02). Retrieved on 2007-12-19. 6. ^ “Into the Maelstrom” (2006-04-14). Retrieved on 2007-12-19

بررسی سیستم عامل Windows Server 2003

شهریور ۲۱م, ۱۳۸۸

حداقل سیستم مورد نیاز برای نصب:
سیستم عامل Windows Server 2003 در ۴ نسخه به نامهای Standard – Enterprise – DataCenter و Web ارائه خواهد شد. در ادامه به بررسی خصوصیات و حداقل سخت افزار مورد نیاز برای هر نسخه از این سیستم عامل میپردازیم، در ضمن توجه داشته باشید که هیچگاه به حداقل ها بسنده نکنید و همیشه برای کارایی بهتر سیستم از قطعات مناسب تر و قویتری استفاده نمایید.

نسخه Web :
این نسخه برای مصارف سرورهای کوچک و همچنین خانگی به کار میرود و هدف اصلی آن فراهم نمودن Web Hosting برای وب سایتها و سرویس های وب با استفاده از IIS 6 میباشد. حداقل قطعات مورد نیاز برای نصب آن به شرح زیر میباشد :
۱- حداقل CPU مورد نیاز ۱۳۳ MHz میباشد ولی پیشنهاد میشود از ۵۵۰ MHz کمتر نباشد.
۲- حداقل Ram مورد نیاز ۱۲۸ MB میباشد ولی پیشنهاد برای کارایی بهتر ۲۵۶ MB میباشد و حداکثر Ram قابل پشتیبانی در این نسخه ۲ GB است.
۳- مقدار فضای خالی لازم بر روی هارددیسک ۱٫۵ GB است.
۴- قابلیت پشتیبانی تا ۲ عدد CPU بطور همزمان بصورت (Multi Processor).
نسخه Web این سیستم عامل ۳۲ بیتی میباشد و قیمت آن ۳۹۷$ است.

نسخه Standard :
این نسخه نیز ۳۲ بیتی میباشد. برای استفاده از Client ها در این سیستم عامل Lincense های مختلفی وجود دارد. در صورتی که مایل به نصب ۵ کامپیوتر Client در شبکه ای باشید که Server آن، این نسخه است میبایست نسخه ای به مبلغ ۹۹۹$ پرداخت نمایید. مبلغ برای ۱۰ عدد License نیز ۱۱۹۹$ میباشد. برای دریافت License بالاتر از این مقدار برای هر ۵ عدد میبایست مبلغ ۱۹۹$ پرداخت شود. در نظر داشته باشید که ممکن است کسی در کشور ما مبالغی برای License این سیستم عامل پرداخت نکند ولی توجه داشته باشید که سرورهای معتبر روی اینترنت در کشورهای صنعتی قرار دارند و قانون Copy Right برای همه آنها به دقت رعایت میشود. حداقل قطعات مورد نیاز برای نصب نسخه Standard ، دقیقا شبیه نسخه Web میباشد، با این تفاوت که در این نسخه قادر به استفاده از ۴ عدد CPU بطور همزمان میباشید.

نسخه Enterprise :
این نسخه حرفه ای، برای سرورهای بزرگ در نظر گرفته شده که قیمت آن ۳۹۹۹$ و دارای ۲۵ عدد License میباشد که به آن CALs (Client Access Lincences) نیز گفته میشود. این نسخه در دو سری ۳۲ و ۶۴ بیتی عرضه میشود و نکته مهم این است که نسخه ۶۴ بیتی این سیستم عامل فقط با CPU های Intel Itanium و Athlon 64 (که به زودی ارائه خواهد شد) سازگار است و در سیستمهایی با CPU های ۳۲ بیتی بطور کامل نصب نخواهند شد و کاربران را دچار مشکل خواهد کرد. حداقل قطعات مورد نیاز برای نصب آن به شرح زیر میباشد :
۱- حداقل CPU مورد نیاز ۱۳۳ MHz در نسخه ۳۲ بیتی و ۷۳۳ MHz در نسخه ۶۴ بیتی میباشد.
۲- حداقل Ram مورد نیاز ۱۲۸ MB میباشد ولی پیشنهاد برای کارایی بهتر ۲۵۶ MB میباشد و حداکثر Ram قابل پشتیبانی در این نسخه ۳۲ بیتی ۳۲ GB و در نسخه ۶۴ بیتی ۶۴ GB است.
۳- مقدار فضای خالی لازم بر روی هارددیسک در نسخه ۳۲ بیتی ۱٫۵ GB و در نسخه ۶۴ بیتی ۲٫۰ GB است.
۴- قابلیت پشتیبانی تا ۸ عدد CPU بطور همزمان.

نسخه DataCenter :
این نسخه کارآمدترین و پرقدرت ترین نسخه این سیستم عامل میباشد که مانند Enterprise دارای ۲ سری ۳۲ بیتی و ۶۴ بیتی میباشد. حداقل قطعات مورد نیاز برای نصب آن به شرح زیر میباشد :
۱- حداقل CPU مورد نیاز ۴۰۰ MHz در نسخه ۳۲ بیتی و ۷۳۳ MHz در نسخه ۶۴ بیتی میباشد.
۲- حداقل Ram مورد نیاز ۵۱۲ MB میباشد ولی پیشنهاد برای کارایی بهتر ۱ GB میباشد و حداکثر Ram قابل پشتیبانی در این نسخه ۳۲ بیتی ۶۴ GB و در نسخه ۶۴ بیتی ۱۲۸ GBاست.
۳- مقدار فضای خالی مانند نسخه Enterprise میباشد.
۴- برای استفاده از این نسخه حداقل میبایست از ۸ عدد CPU بطور همزمان استفاده شود و حداکثر تا ۳۲ عدد CPU را نیز پشتیبانی میکند.

مشکلاتی در پشتیبانی Multi Processer :
طبق گزارش شرکتهای تست کننده این سیستم عامل ، سیستمهایی که بصورت Multi Processor باشند و یکی از CPU های این سیستمها از نوع Pentium II یا Pentium Pro باشد، سیستم دچار مشکلاتی خواهد شد و تنها قادر به استفاده از یک CPU میباشد.
مایکروسافت با تایید این مشکل اعلام کرد که تنها راه حل در جهت رفع آن ارتقای CPU میباشد. پس بهتر است قبل و بعد از نصب این سیستم عامل، تمامی قطعات سیستم را مورد بررسی قرار دهید. هنگام نصب در اولین صفحه Setup ، گزینه ای با عنوان Check System Compatibility وجود دارد که با انتخاب این گزینه و سپس گزینه Check my system automaticaly میتوانید قبل از نصب، سیستم خود را از نظر حداقل سخت افزار مورد نیاز مورد بررسی قرار دهید.

بررسی اجزای داخلی :
مراحل نصب این سیستم عامل شبیه Windows 2000 میباشد، البته گزینه های کاربردی زیادی از جمله Dynamic Update که قادر است Update این ویندوز و Driver های مورد نیاز را بصورت Online از سایت مایکروسافت دریافت کند وجود دارد. بر روی تمام نسخه های این سیستم عامل .NET Framework نسخه ۱٫۱ و همچنین وب سرور IIS 6.0 که ASP .NET را بطور کامل پشتیبانی میکند قرار دارد (در ادامه همین مقاله به بررسی بیشتر IIS خواهیم پرداخت). با رشد Web Service ها در دنیای امروزه و نیاز شدید به آنها در آینده ای نه چندان دور، مایکروسافت ابزارهای مختلفی برای گسترش دادن این سرویس ها در Windows Server 2003 قرار داده است. سرویسهای وب در محصولات مایکروسافت با ایجاد .NET گسترش یافته و بطور کل از طریق پروتوکول SOAP ارتباط برقرار میکنند. از جمله ابزار اضافه شده به این سیستم عامل Enterprise UDDI Services میباشد که در نسخه Web این سیستم عامل قرار داده نشده است. این ابزار مربوط به گسترش دادن Web Service های مختلف میباشد و تعامل بین آنها را فراهم میکند.
امکان دیگری با عنوان VPN (Virtual Private Network) نیز در تمامی نسخه های این سیستم عامل قرار دارد، البته در نسخه Web بصورت ناقص پشتیبانی میشود، این امکان قبلا در ویندوز XP ارائه شده بود. از دیگر تغییراتی که در این سیستم عامل قرار گرفته، آمادگی برای تغییر نسخه IP از ۴ به ۶ میباشد که در ادامه همین مقاله به بررسی نسخه های IP و تفاوت این دو خواهیم پرداخت. برای بررسی امنیت کاربران از راه دور نیز، Microsoft Passport در داخل سیستم عامل قرار گرفته است. Firewall یکی از ابزارهای الزامی در ارتباطات اینترنتی امروزه میباشد. برای امنیت داده ها ابزاری با نام ICF (Internet Connection Firewall) در تمامی نسخه های این سیستم عامل به غیر نسخه DataCenter قرار داده شده که این ابزار در Windows XP نیز وجود داشت که البته از کارایی چندانی برخوردار نبود ولی در ICF موجود در Windows Server 2003 تمامی مشکلات مربوط به این ابزار رفع شده و از کارایی بالایی برخوردار است. همانطور که میدانید Active Directory که یکی از اصلی ترین قسمتهای ویندوز سرور میباشد که در این نسخه از ویندوز تغییرات زیادی داشته که در ادامه همین مقاله بطور مختصر به بررسی مزایا و قسمتهای اضافی جدید آن خواهیم پرداخت. از جمله امکانات دیگر اضافه شده به Windows Server 2003 میتوان به این موارد اشاره کرد: پشتیبانی از استاندار ۸۰۲٫۱x که مربوط به شبکه های بی سیم و یکی اس استانداردهای IEEE میباشد. تنظیمات خودکار در ارتباط چندین شبکه و همچنین پشتیبانی از Kerberos نسخه ۵ و قابلیتی برای نصب سیستم عامل از راه دور.

تفاوت IP 4 و IP 6 :
ساختار اینترنت در حال تغییر است. اینترنتی که ما امروزه مصرف میکنیم Internet 1 میباشد ولی به زودی نسل جدید اینترنت که Internet 2 یا Grid Technology نام دارد جای آن را خواهد گرفت. پروژه اینترنت ۲ در اختیار چندین کشور و شرکتهای بزرگی میباشد. اولین تغییری که در این دو نسل اینترنت مشاهده میشود تغییر ساختار IP است. همانطور که میدانید نسخه IP های فعلی در اینترنت ۴ است و از نوع ۳۲ بیتی (۴ عدد ۸ بیتی) میباشد، ولی IP های نسل جدید نسخه ۶ (IPv6) میباشند که در حال حاضر Windows Server 2003 در تمام نسخه های خود آن را پشتیبانی میکند. همانطور که میدانید هر کامپیوتر در اینترنت میبایست دارای یک IP یکتا و منحصر بفرد باشد که در حال حاضر با رشد اینترنت تعداد IP هایی که IP نسخه ۴ پشتیبانی میکند رو به اتمام است، از طرف دیگر Ipv4 تمام مقاصد امنیتی مورد نیاز را پوشش نمیدهد از این رو IPv6 که ۱۲۸ بیتی میباشد به زودی جای IPv4 را خواهد گرفت.

مشکلاتی در استفاده از SQL Server :
نکته قابل توجه در استفاده از بانک اطلاعاتی SQL Server وجود دارد. هنگام Upgrade ویندوز ۲۰۰۰ به Windows Server 2003 در نظر داشته باشید که حتما میبایست SQL Server 2000 و همچنین MSDE 2000 به همراه Service Pack 3 قبلا نصب شده باشد و سپس اقدام به Upgrade سیستم عامل نمایید، در غیر اینصورت SQL Server دچار مشکل خواهد شد.
همچنین SQL Server 7 و MSDE 1.0 در این سیستم عامل پشتیبانی نمیشود. توجه داشته باشید که MSDE 2000 به همراه نرم افزارهای بسته Visual Studio و حتی خود SQL Server 2000 قابل نصب میباشد. اگر از سیستم عامل ویندوز ۲۰۰۰ که دارای SQL Server میباشد ولی SP3 به روی آن نصب نشده است اقدام به Upgrade ننمایید.

مزایای Active Directory در Windwos Server 2003 :
Active Directory در نسخه جدید ویندوز، ۲ هدف اصلی را به شرح زیر دنبال میکند :

۱- مدیریت و گسترش راحتتر :
۲- در نسخه جدید ویندوز ، قابلیت و مدیریت Administrator ها حتی در محیطهای خیلی بزرگ توزیع شده با درختها ، دامنه ها و سایتهای فراوان، آسان شده است. یکی از ابزارهای مفید در این بخش، ADMT 2.0 (Active Directory Migration Tool) نام دارد که اجازه انتقال پسوردها از ویندوز NT یا ۲۰۰۰ به Windows Server 2003 را به شما میدهد. همچنین مدیران سرور قادر به تغییراتی در درختها ، دامنه ها و همچنین NetBios و DNS میباشند. مدیران سیستم به راحتی میتوانند ساختار Active Directory را که گسترش داده اند به دلخواه خود و بدون بروز مشکلی تغییر دهند.

۳- امنیت بالاتر :
۴- امنیت Active Directory نیز به مراتب، از ویندوز ۲۰۰۰ قویتر شده است. در نسخه جدید، مدیریت آسان بر اعتماد چندین درخت به یکدیگر به راحتی فراهم میشود که با استفاده از آن عمل Authentication به راحتی انجام خواهد شد. در این روش کاربران به راحتی و بدون نگرانی از عمل Login و وارد کردن ID و پسورد، قادر به استفاده از منابع درختهای دیگر در یک ساختار درختی Active Directory میباشند. این کار از طریق Kerberos و یا NTLM انجام میگیرد. همچنین نرم افزار Restriction Policies در بخش امنیت Active Directory وجود دارد که Admin را قادر میسازد که از نصب نرم افزارهای ناشناخته و غیراعتماد جلوگیری به عمل آورد و فقط برنامه های خاصی به روی سرور قابل نصب و اجرا باشند.

Windows Server Catalog چیست ؟
با استفاده از این ابزار در Windows Server 2003 ، کاربران با متصل شدن از طریق اینترنت به سایت مایکروسافت، قادر به ارسال مشخصات قطعات سخت افزاری دستگاه خود و همچنین نرم افزارهایی که به خوبی با ویندوز سازگار است میباشند. این ابزار شباهت زیادی به Windows XP Catalog دارد. این عمل دارای مزایای زیادی میباشد که به بررسی آن میپردازیم.
همانطور که میدانید خیلی از نرم افزارها و سخت افزارهای مختلف در دنیا با سیستم عاملهای گوناگون سازگار نیست. با این حرکت هر زمان که مشکلی در ویندوز و یا نرم افزار خاصی به وجود آید، مایکروسافت تمامی اطلاعات مربوط به دلایل Crash شدن را در فایلی ذخیره میکند و به محض اولین تماس با اینترنت به سایت خود ارسال خواهد کرد. شما با نصب Windows Server Catalog قادر به ملاحظه لیستی از تمامی گزارشها و مشکلات ویندوز خواهید شد.
این لیست توسط افراد مختلف در سراسر جهان به سایت مایکروسافت ارسال شده است. مایکروسافت نیز برای رضایت مشتری، مشکل مورد نظر را بررسی کرده و در Service Pack ها و یا نسخه های بعدی ویندوز رفع خواهد کرد، زیرا مایکروسافت به تنهایی نمیتواند تمام نرم افزارها و سخت افزارهای دنیا را در محصولاتش تست نماید و این عمل باعث رشد کیفیت سیستم عاملهای این شرکت خواهد شد. برای دستیابی به لیست نرم افزارها و سخت افزارهای ناسازگار با ویندوز XP و Windows Server 2003 یا میتوانید مستقیما به سایت مایکروسافت مراجعه نمایید و یا از طریق منو Start در خود ویندوز به این ابزار دسترسی داشته باشید.

آشنایی با XML – بخش اول

شهریور ۱۹م, ۱۳۸۸

مقدمه

XML مخفف زبان نشانه‌گذاری قابل گسترش می‌باشد. این زبان یک زبان نشانه‌گذاری جدید است که توسط کنسرسیوم وب برای غلبه بر محدودیتهای زبان HTML بوجود آمده است. کنسرسیوم وب سازمانی است که مسئول نگهداری استاندارهای موجود در زمینه وب می‌باشد که از مهمترین این استاندارها می‌توان به HTML اشاره کرد.

HTML به طور قطع رایجترین زبان نشانه‌گذاری می‌باشد. بر طبق برخی گزارشات هم اکنون چندین میلیارد صفحه وب با فرمت HTML توسط محدوده وسیعی از ابزارها شامل مرورگرها، ویرایشگرها، نرم‌افزارهای پست الکترونیک و غیره پشتیبانی می‌شود. در ابتدا کاربرد وب تنها در انتشار مدارک علمی بود ولی امروزه تا حد یک رسانه ارتباطی در حد تلویزیون و کتاب رشد کرده است. برای پاسخگویی به این همه مخاطب.

HTML چندین بار گسترش یافته و برچسبهای جدیدی به آن اضافه شده است. برای مقایسه, توجه داشته باشید که اولین ویرایش HTML تنها شامل ۱۲ برچسب بود در حالیکه جدیدترین ویرایش آن (HTML 4.0) بدون احتساب برچسبهای ویژه مرورگرهای خاص، بالغ بر ۱۰۰ برچسب دارد. علاوه بر این مجموعه‌ای از زبانهای برنامه‌نویسی نیز مانند ASP, CGI, JAVA برای استفاده تعاملی از وب بوجود آمده است.

با وجود تمام قابلیتهایی که برای HTML برشمردیم این زبان دارای نقاط ضعفی است که رشد آن را با محدودیت مواجه کرده است. HTML به مجموعه‌ای با بیش از ۱۰۰ برچسب تبدیل شده که آن را تبدیل به زبانی پیچیده کرده است. ترکیب برچسبها تقریباً نامحدودند و بعضاً ترکیبهایی وجود دارند که حاصل نمایش آنها بر روی مرورگرهای مختلف متفاوت است. علاوه بر این علیرغم ۱۰۰ برچسب موجود در این زبان، نیازهای امروزه برچسبهای بیشتری را برای کاربردهای مختلف طلب می‌کنند.

کاربردهای تجارت الکترونیک به برچسبهایی برای توصیف کالا، قیمت ، نام، آدرس و غیره احتیاج دارند. موتورهای جستجو به برچسبهای دقیقتر برای کلمات کلیدی و توضیحات داده‌ها احتیاج دارند و کاربردهای امنیتی نیاز به برچسبهایی برای امضاهای دیجیتالی دارند. به طور کلی تمامی کاربردها برای نیازهای خود احتیاج به برچسبهای خاصی دارند که توسط HTML پشتیبانی نمی‌شود.

جدا از کاربردهایی که احتیاج به اضافه‌کردن برچسبهای جدید به HTML دارند، کاربردهایی نیز هستند که تعداد برچسب کمتر HTML یکی از نیازهای اساسی آنها می‌باشد. برطبق پیش‌بینی کنسرسیوم وب در سال ۲۰۰۳و ۷۵% استفاده کنندگان از وب از وسیله‌ای غیر از کامپیوتر شخصی مانند تلفن همراه برای دسترسی به وب استفاده خواهند کرد. توان پردازش این وسایل خیلی کمتر از یک کامپیوتر شخصی می‌باشد و بنابراین چنین وسایلی قدرت پردازش زبان پیچیده‌ای مانند HTML فعلی را ندارند چه رسد به این که برای پشتیبانی کاربردهای خاص برچسبهای بیشتری هم به آن اضافه شده باشد.

مشکل دیگر HTML این است که برای قالب‌بندی یک صفحه به تعداد زیادی برچسب احتیاج است و در اکثر موارد صفحاتی مشاهده می شود که حجم علائم نشانه‌گذاری در آنها بیشتر از محتوای آنهاست که همین امر سرعت دستیابی و نمایش این صفحات را به طور قابل ملاحظه‌ای کم می‌کند.

زبان xml در سال ۱۹۹۷ توسط کنسرسیوم وب برای رفع محدودیتهای موجود در HTML و اضافه کردن قابلیتهای جدید بوجود آمد. تفاوت اصلی XML با HTML در این است که XML سعی دارد داده‌ها را طوری نشانه‌گذاری کند که معنای آنها حفظ شود و در حالیکه HTML داده‌ها را طوری نشانه‌گذاری می‌کند که قابل نمایش برای مرورگرها باشد. در واقع تاکید XML بر روی معنای داده‌هاست در حالیکه تاکید HTML بر نمایش داده می‌باشد. به منظور حفظ معنای داده‌ها XML ابر داده(MetaData ) توصیف کننده داده‌ها را نیز همراه آنها ذخیره می‌کند.

XML زیر مجموعه ساده شده‌ای از زبان SGML می‌باشد. SGML یک زبان عمومی و پیچیده برای نشانه‌گذاری داده‌هاست که در دهه ۸۰ بوجود آمد و پدر زبانهای نشانه‌گذاری محسوب می‌شود. قابلیتهای زیاد این زبان آن را بیش از اندازه پیچیده کرده است بطوری که کنسرسیوم وب آن را بعنوان جانشین HTML مناسب ندانسته و تصمیم گرفت زیر مجموعه ساده شده‌ای از آن را با نام XML جانشین HTML کند. XML را در واقع یک ابر زبان نامیده میشود چرا که کاربر بسته به نیازهایی که دارد می‌تواند با استفاده از آن زبان نشانه‌گذاری جدیدی برای نشانه‌گذاری داده‌هایش ایجاد کند.

XML همچنین قادر است ساختار داده‌های ذخیره شده را نیز بهمراه معنای آنها حفظ کند. این زبان دارای هیچ برچسب از پیش تعریف شده‌‌ای نیست و تمامی برچسب‌ها برحسب نیاز توسط کاربر تعریف می‌شوند. قابلیتهای XML و اجزاء همراه آن، این زبان را به زبان قابل حمل و استاندارد برای کاربردهای مختلف تبدیل کرده است.

مفاهیم اولیه زبان C

شهریور ۱۶م, ۱۳۸۸

مفاهیم اولیه زبان C

در این فصل به مقدمات اولیه برنامه نویسی به زبان C می پردازیم و اصول اولیه آن را بررسی می نماییم

شناسه ها در C

شناسه (identifier) نامی است که به یک قسمت از برنامه مانند متغیر، تابع، ثابت و یا … داده می شود. در زبان C برای انتخاب شناسه ها فقط می توان از علائم زیر استفاده کرد: – حروف انگلیسی کوچک و بزرگ (A…Z a…z)
- ارقام (۰…۹)
- علامت خط پایین یا _

البته یک شناسه تمی تواند با یک رقم شروع شود. مثلا شناسه های sum ، average ، name2 و یا student_average مجاز هستند، اما شناسه های ۲name و یا student average مجاز نیستند. البته در برنامه نویسی امروزی پیشنهاد می شود بجای شناسه هایی همانند student_average از studentAverage استفاده گردد. یعنی بجای اینکه در شناسه ها از _ برای جداکننده استفاده کنیم، اولین حرف هر قسمت را بصورت بزرگ بنویسیم.

نکته مهم دیگری که باید به آن اشاره کرد آنستکه زبان C برخلاف بسیاری از زبانهای دیگر به کوچک و بزرگی حروف حساس است (case sensitive). در نتیجه شناسه های زیر با یکدیگر متفاوتند :

Sum ≠ sum ≠ SUM

این مسئله معمولا درهنگام برنامه نویسی باعث ایجاد بعضی خطاها می شود.
آخرین نکته اینستکه در هنگام انتخاب شناسه نمی توانید از کلمات کلیدی که برای منظورهای خاص در زبان C رزرو شده اند استفاده کنید. زبان C دارای ۳۲ کلمه کلیدی است که عبارتند از :

auto
break
case
char
Const

continue
default
do
double
Else

enum
extern
float
for
Goto

if
int
long
register
Return

short
signed
sizeof
static
Struct

switch
typedef
union
unsigned
Void

volatile
while

البته در نسخه های جدید C کلمات کلیدی دیگری نیز به لیست فوق اضافه شده است. دقت کنید که کلیه این کلمات با حروف کوچک نوشته شده اند.

انواع داده ها در C

همانطور که قبلا نیز گفتیم هر متغیر پیش از آنکه استفاده گردد ابتدا باید اعلان گردد. اعلان یک متغیر تعیین نوع آن را نیز دربر می گیرد. سوال اصلی آنستکه چه نوع داده هایی در زبان C و جود دارد. انواع داده های متداول عبارتند از :

نوع داده
توضیح
اندازه (بیت)
محدوده

char
کاراکتر
۸
-۱۲۸ to +127

int
عدد صحیح
۱۶
-۳۲۷۶۸ to + 32767

float
عدد اعشاری
۳۲
۳٫۴e-38 to 3.4e+38

double
عدد اعشاری با دقت مضاعف
۶۴
۱٫۷e-308 to 1.7e+308

البته چند نکته مهم درمورد جدول فوق قابل ذکر است :

- اندازه int در محیطهای ۱۶ بیتی مانند DOS برابر ۱۶ بیت است. اما در محیطهای ۳۲ بیتی همانند Windows اندازه آن ۳۲ بیت می باشد که در اینصورت محدوده ای برابر -۲,۱۴۷,۴۸۳,۶۴۷ تا +۲,۱۴۷,۴۸۳,۶۴۷ را پوشش می دهد.

- در بعضی از کامپایلرهای C، نوع داده bool نیز وجود دارد که می تواند یکی از مقادیر true(درست) یا false (غلط) را نشان دهد . اما در نسخه های اولیه C از همان نوع داده صحیح یا int برای اینکار استفاده می شد. بدین صورت که ۰ نشاندهنده false و هر عدد غیر صفر (معمولا ۱) نشاندهنده true است.

- از آنجا که برای ذخیره سازی کاراکترها کد اسکی آنها ذخیره می گردد، از یک متغیر کاراکتری یا char می توان بعنوان یک عدد صحیح کوچک نیز استفاده کرد و اعمال ریاضی برروی آنها نیز مجاز است.

علاوه براین چندین اصلاح کننده نیز وجود دارد که به ما اجازه می دهد نوع داده مورد نظر را با دقت بیشتری برای نیازهای مختلف استفاده نماییم.

این اصلاح کننده ها عبارتند از : short, long, signed, unsigned

تمام اصلاح کننده های فوق می توانند به نوع داده int اعمال شوند و اثر آنها بستگی به محیط دارد. مثلا در یک محیط ۱۶ بیتی، short int بازهم برابر ۱۶ بیت است ولی long int برابر ۳۲ بیت خواهد بود. علاوه براین unsigned int باعث می شود که یک عدد ۱۶ بیتی بدون علامت داشته باشیم که بازه بین ۰ تا ۶۵۵۳۵ را پوشش می دهد. signed int نیز همانند int معمولی بوده و تفاوتی ندارد. البته ترکیب این اصلاح کننده ها نیز ممکن است. مثلا unsigned long int یک عدد ۳۲ بیتی بدون علامت است که بازه ۰ تا ۴,۲۹۴,۹۶۷,۲۹۵ را پوشش می دهد.

اما برروی نوع داده char فقط اصلاح کننده های signed و unsigned را می توان اعمال کرد. معمولا از اصلاح کننده unsigned وقتی استفاده می شود که قصد داشته باشیم از char بعنوان یک عدد صحیح مثبت بین ۰ تا ۲۵۵ استفاده کنیم.

برروی نوع داده double تنها اصلاح کننده long قابل اعمال است و دراینصورت عدد اعشاری با ۸۰ بیت را خواهیم داشت که قادر است هر عددی در بازه ۳٫۴e-4932 تا ۱٫۱e+4932 را در خود نگاه دارد.

تعریف متغیرها

برای تعریف متغیرها به شکل زیر عمل می کنیم:

<type> <variable-list>;

که type یکی از نوع داده های گفته شده و variable-list لیستی از متغیرها است که با کاما از یکدیگر جدا شده اند. بعنوان مثال :

int sum;
float average;
long int a, b, c ;
unsigned long int i, j, k ;

علاوه براین می توان در هنگام تعریف متغیر به آن مقدار اولیه نیز داد. مثال :

int d = 0 ;

نکته مهم آنکه زبان C به متغیرها مقدار اولیه نمی دهد (حتی ۰) و برنامه نویس خود باید اینکار را صریحا انجام دهد، درغیر اینصورت مقدار اولیه متغیر، نامعین خواهد بود.
تعریف متغیرها طبق اصول زبان C میتواند درهرجایی از برنامه صورت پذیرد، و متغیرهای تعریف شده از همان خط به بعد قابل استفاده خواهد بود. اما معمولا توصیه می گردد که تعریف متغیرها در همان خط ابتدایی تابع و بلافاصله پس از { صورت پذیرد.

ثوابت

ثابتها مقادیر ثابتی هستند که مقدار آنها در حین اجرای برنامه تغییر نمی یابد. ثابتها می توانند از هریک از نوع داده های اصلی باشند. برای نمایش هر ثابت بسته به نوع آن عمل می کنیم که شرح هریک در زیر آمده است :
۴ ثوابت عددی صحیح : برای نمایش این دسته از ثوابت، از دنباله ای از ارقام بعلاوه علامت + یا – استفاده می کنیم. بعنوان مثال ۴۵- و یا ۳۴۸۹ ثوابت صحیح هستند. در حالت عادی C هر عدد را در کوچکترین نوع داده ای که می تواند قرار می دهد. مثلا عدد ۸۵ در یک int قرار می گیرد، اما عدد ۱۴۵۳۹۸ در یک long int قرار خواهد گرفت. اما اگر قصد دارید یک عدد کوچک بعنوان long محسوب گردد، می توانید از پسوند L در انتهای آن استفاده می کنیم. مثلا ۲۴۵L یک عدد long محسوب می شود.

long int a = 20L;

ضمن اینکه پسوند U در انتهای عدد نیز نشانه بدون علامت بودن آن است.
نکته دیگر آنکه C به شما اجازه می دهد درصورت لزوم ثوابت صحیح خود را در مبنای ۸ یا ۱۶ نیز که از مبناهای متداول در برنامه نویسی هستند، بنویسید. برای نوشتن عدد در مبنای ۸ باید آن را با ۰ آغاز کنید، مثلا ۰۳۴۲ یک عدد در منای ۸ محسوب می گردد. اما برای نوشتن یک عدد در مبنای ۱۶ باید آن را با ۰x آغاز نمایید، مانند ۰x27A4.
8 ثوابت عددی اعشاری : برای نمایش اعداد اعشاری، باید از نقطه اعشار استفاده کنیم، مانند ۲۳۷٫۴۵ ، اما نکته جالب آنستکه می توانید از نماد علمی نیز برای نمایش اعداد اعشاری استفاده کنید. برای اینکار کافی است از حرف e برای نمایش قسمت توان استفاده نمایید. بعنوان مثال :

-۲۳٫۴۷ × ۱۰ ۵ = -۲۳٫۴۷e5
42.389 × ۱۰ -۳ = ۴۲٫۳۸۹e-3

دقت کنید که قسمت توان، حتما یک عدد صحیح است. نکته جالب اینجاست که برخلاف مورد قبل، کامپایلر بطور پیش فرض داده های اعشاری را از نوع double فرض می کند.چنانچه دوست دارید ثابت شما ازنوع float درنظر گرفته شود، در انتهای آن F قرار دهید. ضمنا پسوند L نیز داده اعشاری را از نوع long double درنظر می گیرد. ۱۰ ثوابت کاراکتری : برای نشان دادن ثوابت کاراکتری، آنها را در داخل ‘ قرار می دهیم. بعنوان مثال ‘A’ یک ثابت کاراکتری است.

char ch = ‘S’ ;

دقت کنید که همانطور که قبلا گفته شد، کد اسکی کاراکترها در متغیر ذخیره می گردد، بنابراین می توان از آن بعنوان یک عدد صحیح نیز استفاده کرد. نکته مهم دیگر آنستکه به تفاوت عدد ۵ و کاراکتر ’۵′ دقت داشته باشید. در حقیقت ’۵′ برابر است با عدد ۵۳ که همان کد اسکی آن است.
از آنجا که بعضی کاراکترها، مانند enter قابل نمایش نیستند، بهمین دلیل آنها را با استفاده از \ نمایش می دهیم. علاوه براین بعضی کاراکترها مانند خود ” نیز چون دارای معنای خاص هستند، باید با استفاده از \ نمایش داده شوند. موارد مهم عبارتند از :

\n خط جدید
\t tab کاراکتر
\a بوق کامپیوتر \” ”
\’ ‘ \\ \

۱۴ ثوابت رشته ای : C علاوه بر ثوابت فوق، از یک ثابت دیگر بنام رشته نیز حمایت می کند. رشته، دنباله ای از کاراکترها است که در داخل ” قرار می گیرند. بعنوان مثال “this is a test” یک رشته است. دقت کنید که ‘a’ یک کاراکتر است، اما “a” یک رشته است که فقط شامل یک کاراکتر می باشد.

عملگرها

عملگر، نمادی است که به کامپایلر می گوید تا عملیات محاسباتی یا منطقی خاصی را برروی یک یا چند عملوند، انجام دهد. به عملگرهایی که فقط یک عملوند دارند، عملگر یکانی می گوییم و همواره عملگر در سمت چپ عملوند قرار می گیرد(مانند عدد -۱۲۵). اما عملگرهایی که برروی دو عملوند اثر می کنند را عملگر دودویی نامیده و عملگر را بین دو عملوند قرار می دهیم (مانند ۲۳+۸۶). هر ترکیب درستی از عملگرها و عملوندها را یک عبارت می نامیم.

C از نقطه نظر عملگرها یک زبان بسیار قوی است. این عملگرها به چند دسته اصلی تقسیم می گردند که آنها را به ترتیب بررسی می کنیم..

عملگرهای محاسباتی

این عملگرها، همان اعمال متداول ریاضی هستند که در زبان C مورد استفاده قرار می گیرند. این اعمال عبارتند از :

عمل
نوع
عملگر

منفی کردن عملوند سمت راست
یکانی
-

جمع دو عملوند
دودویی
+

تفریق دو عملوند
دودویی
-

ضرب دو عملوند
دودویی
*

تقسیم دو عملوند
دودویی
/

محاسبه باقیمانده تقسیم دو عملوند
دودویی
%

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

int a,b ;
float c,d ;
a = 10 ; b = 4 ;
c = 8.2; d = 4.0;

اکنون به نتایج عملیات زیر دقت کنید :

a / b = < 2
c / d = < 2.05
a / d = < 2.5
a / 4 = < 2

چنانچه به آخرین مورد توجه کنید، متوجه می شوید که از آنجا که a یک متغیر صحیح است و ۴ نیز یک ثابت صحیح در نظر گرفته شده، درنتیجه تقسیم بصورت صحیح بر صحیح انجام گرفته است. چنانچه بخواهیم تقسیم بصورت اعشاری صورت پذیرد، به دو شکل می توانیم عمل کنیم. اول اینکه آن را بصورت a / 4.0 بنویسیم و دوم اینکه از عملگر قالب ریزی استفاده کنیم.
عملگر قالب ریزی می تواند یک نوع را به نوع دیگری تبدیل نماید. شکل کلی آن به شکل زیر است :

(< type >) < expression >

که type نوع مورد نظر است که قصد تبدیل عبارت expression به آن نوع را داریم. بعنوان مثال در مورد بالا می توان به شکل زیر عمل کرد :

(float) a / 4

در این حالت ابتدا از کامپایلر خواسته ایم که ابتدا عدد a را به اعشاری تبدیل کند (البته بصورت موقت) و سپس آن را بر ۴ تقسیم نماید، که مسلما حاصل اعشاری خواهد بود.
بطورکلی هرگاه ثابتها و متغیرهایی از انواع مختلف در یک عبارت محاسباتی داشته باشیم، کامپایلر C همه آنها را به یک نوع یکسان که همان بزرگترین عملوند موجود است تبدیل خواهد کرد. بعنوان مثال به مورد زیر دقت کنید :

عملگرهای انتساب

در زبان C برای انتساب چندین عملگر وجود دارد. ساده ترین عملگر انتساب، همان عملگر = است که در بسیاری از زبانها استفاده می شود. بعنوان مثال :

a = 5;
b = c + 2 * d;

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

int a;
a = 2.5 * 5.0;

که دراینصورت عدد ۱۲ در a ذخیره خواهد شد.
شرکت پذیری این عملگر از راست به چپ می باشد، بدین معنا که چنانچه چندین عملگر نسبت دهی داشته باشیم، این عملگرها از راست به چپ محاسبه می شوند. مثلا پس از اجرای دستور زیر :

a = b = c = 10;

مقدار هر ۳ متغیر برابر ۱۰ خواهد شد.
نکته جالب درمورد زبان C آنستکه دارای یک سری عملگرهای انتساب خلاصه شده است که باعث می شوند در بعضی موارد بتوانیم عبارات کوتاهتری را بنویسیم. این عملگرها عبارتند از :
عملگر
مثال
عبارت انتساب معادل

++
a ++;
a = a + 1;


a –;
a = a – ۱;

+=
a += 5;
a = a + 5;

-=
a -= 8;
a= a – ۸;

*=
a *= 10;
a= a * 10;

/=
a /= 2;
a = a / 2;

%=
a %= 10;
a = a % 10;

عملگر اول و دوم، عملگرهای یکانی هستند که بترتیب عملگر افزایش و عملگر کاهش نامیده می شوند. نکته جالب آنستکه این دو عملگر به دوصورت مورد استفاده قرار می گیرند. در حالتی که از دستور a ++; استفاده شود به آن پس افزایش می گویند و بدین معناست که ابتدا از مقدار فعلی a در عبارت موردنظر استفاده کن و سپس آن را افزایش بده. اما دستور ++ a که به آن پیش افزایش گفته می شود، ابتدا a را افزایش داده و سپس از آن در عبارت استفاده می کند. به برنامه زیر دقت کنید:

#include < stdio.h >
void main() {
int a ,b ;
a = 5 ;
b = a ++;
printf(“a=%d and b=%d \n”,a,b);
a = 5 ;
b = ++ a;
printf(“a=%d and b=%d \n”,a,b);
}

a=6 b=5
a=6 b=6

و اما پنج عملگر بعدی هنگامی می توانند استفاده شوند که عبارتی بصورت زیر داشته باشیم:

عبارت عملگر متغیر = متغیر

که عملگر یکی از عملگرهای محاسباتی ( + ، – ، * یا / ) باشد، دراینصورت می توانیم آن را بصورت زیر بنویسیم:

عبارت =عملگر متغیر

عملگرهای مقایسه ای (رابطه ای)

این عملگرها دو عبارت را بایکدیگر مقایسه کرده و نتیجه را باز می گردانند. نتیجه می تواند درست (true) یا غلط (false) باشد. همانطور که قبلا نیز گفته شد در کامپایلرهای جدید C++ نوع داده bool اضافه شده است و بنابراین نتیجه این عملگرها یک مقدار bool است. اما در کامپایلرهای قدیمیتر، نتیجه این عملگرها یک عدد صحیح است که درصورت درست بودن ۱ و درصورت غلط بودن ۰ باز می گردانند. این عملگرها عبارتند از:

عملگر
مفهوم عملگر
مثال

<
بزرگتر (<)
a > b

>
کوچکتر (>)
a < b

=<
بزرگتر یا مساوی (≤)
a >= b

=>
کوچکتر یا مساوی (≥)
a <= b

==
مساوی (=)
a == b

=!
نامساوی (≠)
a != b

نکته مهمی که باید به آن دقت کرد عملگر مساوی (==) است، چرا که یک اشتباه بسیار متداول برنامه نویسان C استفاده اشتباه از عملگر انتساب (=) بجای عملگر تساوی (==) است که باعث ایجاد خطا در برنامه می شود.
اولویت این عملگرها از بالا به پایین بشرح زیر است:
۳ عملگرهای <، > ، =< و = >
4 عملگرهای == و =!
لازم بذکر است که در هنگام مساوی بودن اولویت چند عملگر، این عملگرها از چپ به راست محاسبه می گردند.
عملگرهای منطقی
این عملگرها به شما اجازه می دهند که شرطهای ساده ای را که با استفاده از عملگرهای مقایسه ای ایجاد شده اند را با یکدیگر ترکیب نموده و شرطهای پیچیده تری را بسازید. این عملگرها عبارتند از :

عملگر
مفهوم عملگر
نحوه کار
مثال

&&
AND منطقی
اگر هر دو عملوند درست باشند, درست و در غیر اینصورت نادرست باز می گرداند.
a>0 && sw==1

||
OR منطقی
اگر هر دو عملوند نادرست باشند, نادرست و در غیر اینصورت درست باز می گرداند.
a<=100 || b!=0

!
NOT منطقی
اگر عملوند درست باشد، نادرست و اگر نادرست باشد، درست برمی گرداند.
! (a==1 || b<10)

همانطور که قبلا نیز گفته شد مقدار بازگشتی این عملگرها، درست (۱) یا نادرست (۰) می باشد. اولویت این عملگرها بترتیب عبارتست از :

۱- عملگر !

۲- عملگر &&

3- عملگر ||

عملگر شرطی

گاهی لازم است که ابتدا یک شرط بررسی شده و سپس برمبنای نتیجه (درست یا نادرست بودن آن) یکی از دو عبارت ممکن بازگردانده شود. گرچه معمولا برای اینکار از دستور if (که در فصل بعدی بحث شده است) استفاده می شود، اما یک عملگر ۳تایی (با ۳ عملوند) نیز برای آن وجود دارد. شکل کلی این عملگر بصورت زیر است:

عبارت۲ : عبارت۱ ? شرط

نحوه کار بدینصورت است که درصورت درست بودن شرط عبارت۱ و در غیراینصورت عبارت ۲ بازگردانده می شود. مثال :

a = (k<10) ? 100 : 50;

که این عبارت معادل دستور زیر است:

if(k<10) a=100;
else a=50;

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

c += (a>0 &&a<10) ? ++a : a/b;
که معادل است با :
if (a>0 &&a<10) {
a= a + 1;
c = c + a;
}
else c = c + a/b;

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

چند نکته درمورد عملگرها

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

شکل نامناسب

result=a-b*c/d+f*g;

شکل بهتر

result = a – b * c / d + f * g

شکل کاملا مناسب

result = a – ( b * c / d) + (f * g)

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

اولویت
عملگر
شرکت پذیری

۱
()
از چپ به راست

۲
++ — ! + -
از راست به چپ

۳
% / *
از چپ به راست

۴
- +
از چپ به راست

۵
>> <<
از چپ به راست

۶
>= > <= <
از چپ به راست

۷
=! ==
از چپ به راست

۸
&&
از چپ به راست

۹
||
از چپ به راست

۱۰
?:
از راست به چپ

۱۱
=% =/ =* =- =+ =
از راست به چپ

۱۲
,
از چپ به راست

خواندن و نمایش اطلاعات

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

اما در عوض دارای تعدادی تابع (زیربرنامه) استاندارد می باشد که تقریبا تمامی کامپایلرها از آنها حمایت می کنند. این کار به کامپایلر این امکان را می دهد که بر حسب نوع سخت افزار موردنظر، توابع ورودی و خروجی را طراحی نماید. این توابع در یک فایل سرآمد بنام stdio.h تعریف شده اند و بنابراین قبل ازاینکه بتوانید از این توابع استفاده نمایید، باید این فایل را نیز با استفاده از #include در برنامه خود بگنجانید.

تابع نمایش در خروجی

برای نمایش اطلاعات در خروجی از تابع printf استفاده می شود. این تابع رشته موردنظر شما را به خروجی استاندارد (که در حالت عادی همان صفحه نمایش یا مانیتور است) می فرستد. شکل کلی این تابع بصورت زیر است:

printf(< لیست متغیرها > , < رشته کنترلی >) ;

رشته کنترلی همان متنی است که قصد چاپ آن را داریم، با ذکر این نکته که در قسمتهایی که باید مقدار یک متغیر چاپ شود، از یک مشخصه تبدیل استفاده می شود. هر مشخصه تبدیل از یک علامت % بعلاوه یک کاراکتر که نوع متغیر مورد نظر را نشان می دهد تشکیل می گردد. مشخصه تبدیل های متداول عبارتند از :
مفهوم
مشخصه تبدیل

کاراکتر
%c

عدد صحیح در مبنای ۱۰
%d

عدد اعشاری بدون نماد علمی
%f

عدد اعشاری با نماد علمی
%e

عدد اعشاری با حالت کوتاهتر بین e و f
%g

رشته
%s

عدد صحیح بزرگ
%ld

عدد اعشاری بزرگ
%lf %le %lg

عدد صحیح در مبنای ۸
%o

عدد صحیحی در مبنای ۱۶
%x

عدد صحیح بدون علامت
%u

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

#include <stdio.h>
void main() {
int age = 20;
floate average = 18.23;
printf(“You are %d years old and your average is %f \n”,age,average);
}
You are 20 years old and your average is 18.230000

دقت کنید که علامت \n انتهای رشته کنترلی باعث می شود که خروجی بعدی برنامه (در صورت وجود) در خط بعد چاپ شود. البته ممکن است نحوه چاپ عدد اعشاری به شکل فوق چندان برای شما دلخواه نباشد و بخواهید تعداد ارقام اعشاری قابل نمایش را محدود کنید. برای اینکار باید از مشخصه طول میدان استفاده کنید. مشخصه طول میدان برای اعداد به شکل زیر استفاده می شود:

برای اعداد صحیح از %nd استفاده می کنیم که n تعداد ارقام را نشان می دهد (مثلا %۳d). در اینصورت برای هر متغیر n رقم درنظر گرفته می شود. اگر اندازه عدد از n کوچکتر باشد، به سمت چپ آن فضای خالی اضافه می شود و اگر اندازه عدد بیش از n رقم باشد، طول میدان نادیده گرفته شده و عدد بطور کامل چاپ می شود.

برای اعداد اعشاری از %n.mf استفاده می کنیم که n اندازه کل عدد (شامل علامت ممیز) و m تعداد ارقام اعشار است (مثلا %۵٫۲f). در صورتیکه تعداد ارقام اعشاری عدد موردنظر از m بیشتر باشد، عدد به m عدد اعشار گرد می شود و در صورتیکه از m کمتر باشد، در سمت راست آن ۰ قرار داده می شود.

البته موارد دیگری نیز در مورد نحوه چاپ وجود دارد که برای اطلاع از آنها می توانید به قسمت Help کامپایلر خود مراجعه نمایید.

آخرین نکته درمورد تابع printf اینکه این تابع مقدار بازگشتی نیز دارد که درصورت موفقیت عمل چاپ، تعداد کاراکترهای چاپ شده و درصورت عدم موفقیت مقدار -۱ را باز می گرداند. البته معمولا از این مقدار بازگشتی صرفنظر می گردد.

تابع خواندن از ورودی

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

scanf(< لیست متغیرها > , < رشته کنترلی >) ;

همانطور که می بینید نحوه احضار تابع scanf نیز مشابه printf است. تنها تفاوت در آن است که در scanf باید لیست آدرسهای متغیرها ارسال شود. مبحث مربوط به آدرسها در فصول بعدی بررسی خواهد شد ولی در حال حاضر بخاطر بسپارید که برای بدست آوردن آدرس یک متغیر از علامت & استفاده می کنیم. بعنوان مثال &age بمعنای آدرس متغیر age است. بطور کلی در C قدیمی هرگاه که یک تابع دارای پارامترهای خروجی بود (یعنی پارامترهایی که یک مقدار را باز می گرداندند) از آدرس متغیرها استفاده می شد که امروزه این مسئله وجود ندارد.

رشته کنترلی حاوی تعداد و نوع متغیرهایی است که باید دریافت شوند و از همان مشخصه های تبدیل مربوط به printf استفاده می کند. به مثال زیر توجه کنید:

#include <stdio.h>
void main() {
int age;
float average ;
printf(“Please enter your age and average : “);
scanf(“%d %f”,&age,&average);
printf(“You are %d years old and your average is %5.2f \n”,age,average);
}

Please enter your age and average : 19 16.72
You are 19 years old and your average is 16.72

لازم به ذکر است که هنگامی که قصد وارد کردن دو عدد فوق را دارید، هم می توانید این دو عدد را با یک فاصله (فضای خالی یا tab) نوشته و سپس کلید enter را فشار دهید و یا پس از نوشتن هر عدد کلید enter را فشار دهید.

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

scanf(“level=%d”, &a) ;

بدین معناست که کاربر باید ابتدا کلمه level= را عینا تایپ کرده و سپس عدد موردنظر را وارد نماید. معمولا از چنین حالاتی استفاده نمی گردد.

نکته آخر اینکه در scanf نیز می توان از مواردی همچون طول میدان برای کنترل نحوه ورود اطلاعات استفاده کرد که از حوصله بحث ما خارج است. برای اطلاعات بیشتر به Help کامپایلر خود مراجعه نمایید.

نکته مهم: توابع printf و scanf از رنگ استاندارد یعنی سفید برروی زمینه مشکی استفاده می کنند، اما می توانید برای تغییر رنگ از توابع textcolor و textbackground نیز استفاده کنید. البته دراینصورت برای دریافت و نمایش اطلاعات نیز باید از توابع cprintf و cscanf استفاده نمایید. برای توضیحات بیشتر به Help کامپایلر خود مراجعه کنید.

ورودی و خروجی اطلاعات در CPP

زبان C++ یک زبان شی گرا است، بهمین دلیل در این زبان برای ورودی و خروجی از اشیاء بجای توابع استفاده می گردد. از آنجا که امروزه معمولا برنامه نویسان C از کامپایلرهای C++ استفاده می کنند، می توانند از اشیای ورودی و خروجی آن نیز استفاده کنند. اینکار در بین بسیاری از برنامه نویسان C متداول است، بهمین دلیل ما در اینجا نحوه کار با اشیای خواندن و نوشتن در C++ را بطور مقدماتی توضیح می دهیم؛ گرچه توضیح کامل این موارد نیاز به آشنایی با شی گرایی و زبان C++ دارد. قبل از هرچیز لازم به ذکر است که کلیه اشیای مربوط به ورودی و خروجی در فایل سرآمدی بنام iostream.h تعیریف شده اند، بنابراین ابتدا باید این فایل به برنامه توسط دیتور #include الحاق گردد.

زبان C++ برای نمایش اطلاعات از یک شیئ بنام cout استفاده می نماید. برای ارسال اطلاعات مورد نظر برای چاپ به cout باید از عملگر درج در جریان یا >> استفاده نماییم. بعنوان مثال :

cout << “Please enter your name: ” ;

و یا مثال دیگر :

int a = 10;
float b = 2.86;
cout << a;
cout << b;

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

#include < iostream.h >
void main() {
int age = 20;
floate average = 18.23;
cout << “You are ” << age << “ years old and your average is ” << average ;
}

You are 20 years old and your average is 18.230000

برای دریافت اطلاعات از کاربر، از شئ دیگری بنام cin استفاده می شود. برای ارسال متغیر مورد نظر به cin باید از عملگر استخراج از جریان یا << استفاده نماییم. بعنوان مثال:

int a;
cin >> a;

بازهم همانطور که می بینید نیازی به تعیین نوع متغیر موردنظر نیست و خود شئ cin نوع متغیر را بطور اتوماتیک تشخیص داده و داده ای از همان نوع را از کاربر دریافت و در متغیر مورد نظر قرار می دهد. عملگرهای استخراج از جریان را نیز می توان با یکدیگر الحاق کرد. اکنون به یک برنامه کاملتر توجه کنید:

#include < iostream.h >
void main() {
int age;
float average ;
cout << “Please enter your age and average : ” ;
cin >> age >> average ;
cout << “You are ” << age << “years old and your average is ” << average;
}

Please enter your age and average : 19 16.72
You are 19 years old and your average is 16.72

برای رفتن به خط بعد در شئ cout می توان از دستکاری کننده endl استفاده کرد. مثلا در دستور زیر پس از چاپ پیغام، مکان نما به خط بعد منتقل می شود:

cout << “List of students : “ << endl;

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

توابع کتابخانه ای

همانطور که قبلا نیز گفته شد، زبان C از زیر برنامه ها نیز حمایت می کند. هر زیر برنامه در C یک تابع نامیده می شود که آن را بطور مفصل در فصول بعدی بررسی خواهیم کرد. تا کنون با توابعی همچون main و یا printf و scanf آشنا شده ایم.

معمولا عرضه کنندگان کامپایلرها و یا سایر فروشندگان نرم افزار، برخی از توابع عمومی را که ممکن است مورد نیاز جمع کثیری از برنامه نویسان مختلف باشد را در قالب کتابخانه ای از توابع در اختیار برنامه نویسان می گذارند (این کتابخانه ها ممکن است مجانی باشند و یا نیاز به پرداخت مبلغی داشته باشند). بعضی از این توابع کتابخانه ای مانند printf و scanf بصورت استاندارد درآمده و توسط عرضه کنندگان مختلف ارائه می شوند.

در کامپایلر عرضه شده توسط شرکت بورلند (Borland C++ 3.1) نیز کتابخانه های متعددی از توابع برای شما عرضه شده اند که بتدریج با آنها و کاربردشان آشنا خواهید شد. نکته مهم آنستکه برای استفاده از این توابع ابتدا باید فایل سرآمد مربوط به آنها را نیز در ابتدای برنامه خود اضافه نمایید ( با استفاده از #include). هر فایل سرآمد شامل تعاریف اولیه گروهی از توابع مرتبط با هم و داده های مربوط به آنها بوده و در استاندارد قدیمی تر دارای پسوند .h می باشد(در استاندارد جدید پسوند این فایلها حذف شده است). برخی از این فایلهای سرآمد عبارتند از:

stdio.h : توابع ورودی و خروجی استاندارد
math.h : توابع ریاضی
graphics.h : توابع مربوط به عملیات گرافیکی
string.h : توابع مربوط به کار با رشته ها

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

آرایه ها در برنامه نویسی c ( متغیرهای ثابت )

شهریور ۱۶م, ۱۳۸۸

متغیرهای ثابت

همانطور که در قسمت قبل گفته شد، گرچه اندازه یک آرایه باید ثابت صحیح باشد؛ اما می توان از متغیرهای ثابت نیز استفاده کرد. یک متغیر ثابت، متغیری است که فقط می تواند در هنگام اعلان مقدار اولیه بگیرد و این مقدار دیگر قابل تغییر نیست. برای اعلان متغیرهای ثابت، از کلمه کلیدی const قبل از نوع متغیر استفاده می گردد. بعنوان مثال:

const int k = 10;

اکنون هرگونه تلاش برای تغییر مقدار k، باعث ایجاد یک خطای نحوی توسط کامپایلر خواهد شد. به این نوع متغیرها، ثابتهای نام دار نیز گفته می شود.

این متغیرها در تعریف مقادیر ثابتی که مقدار آنها در طول برنامه تغییر نمی کند، بکار می روند. بعنوان مثال :

const float pi = 3.14;

این کار نه تنها خوانایی برنامه را بالا می برد (بدلیل استفاده از کلمه pi که برای همه شناخته شده است)، بلکه باعث می شود تغییر پذیری برنامه نیز بالا برود. بدین معنا که در صورتیکه برنامه نویس تصمیم گرفت مقدار ثابت را عوض کند، نیازی به تغییر کل برنامه نیست و فقط کافی است مقدار اولیه متغیر را عوض نماید. بعنوان مثال اگر برنامه نویس بخواهد عدد pi را با ۴ رقم اعشار در محاسبات شرکت دهد، فقط باید در تعریف اولیه آن، مقدار را عوض کرده و از ۴ رقم اعشار استفاده نماید.

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

برنامه ۲) برنامه ای بنویسید که سال ورود تعدادی دانشجو را دریافت و سپس تعداد ورودی های سالهای ۷۵ تا ۸۴ را محاسبه و چاپ نماید.

void main() {
const int startYear = 75;
const int yearNo = 10;
int count[yearNo] = {0};
int i, n, year;
printf(“enter student no :”);
scanf(“%d”,&n);
for (i= 0;i<n; i++) {
printf(“enter entrance year :”);
scanf(“%d”,&year);
count [year – startYear] ++;
}
for (i= 0; i<yearNo ; i++) {
printf(“year = %d count = %d \n”,startYear + i , count[i]);
}

استفاده از توابع API ویندوز در اکسس

شهریور ۱۶م, ۱۳۸۸

استفاده از توابع API ویندوز در اکسس

جهت استفاده از توابع API ویندوز در قسمتهای مختلف یک برنامه به زبان اکسس یا ویژوال بیسیک باید الگوی تابع مورد نظر را در یک ماژول به صورت Public تعریف نمایید در این الگو شما نام تابع و نام کتابخانه DLL که تابع مورد نظر در آن تعریف شده را همراه با پارامترهای ورودی/خروجی آن مشخص کنید . همچنین میتوانید از یک نام دلخواه برای فراخوانی تابع استفاده کنید در اینصورت باید نام اصلی یا مستعار تابع در کتابخانه مربوطه اش را بعد از عبارت Alias مشخص کنید.
به عنوان مثال ShellExecuteA یکی از توابع کتابخانه ای ویندوز است که با همین نام در کتابخانه shell32.dll تعریف شده است. با این تابع شما قادر خواهید بود یک فایل دلخواهتان را در محیط برنامه ای که ویندوزتان برای آن پسوندفایل رجیستر شده، باز کنید مثلا یک فایل PDF‌ را در محیط آکروبات.
برای استفاده از این تابع الگوی آنرا به شکل زیر در یک ماژول تعریف نمایید
Public Declare Function ShellExecuteA Lib “shell32.dll” (ByVal hwnd As Long, _
ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String,
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
اگر بخواهید از این تابع با نام apiShellExecute در برنامه تان استفاده کنید باید به جای الگوی فوق، الگوی زیر را در ماژول استفاده کنید.
Public Declare Function apiShellExecute Lib “shell32.dll” Alias “ShellExecuteA” (ByVal hwnd As Long, _
ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
حال تابعی به نام ShellExecuteA یا apiShellExecute در قسمتهای مختلف برنامه قابل فراخوانی است. در این مرحله باید تابع را با پارامترهای مناسب صدا زد. مثلا به شکل زیر:
Dim Lret As Long, LshowHow As Long

Dim stFile As String
LshowHow = 1
stFile = “C:\WO-Status Count8605.pdf”
Lret = ShellExecuteA (hWndAccessApp, vbNullString, stFile, vbNullString, vbNullString, LshowHow )

یا
Lret = apiShellExecute (hWndAccessApp, vbNullString, stFile, vbNullString, vbNullString, LshowHow )

بسته به شکل تعریف.