به نام خدا
اتاق کار شماره 04 برنامه نویسی به زبان ++C
استفاده از namespace استاندارد
Namespace به برنامه نویسان ++C اجازه می دهد مجموعه ای از اشیای سراسری با توابع را تحت یک نام گروه بندی کنند. فرم کلی آن به شکل زیر است:
| :كد |
namespace identifier
{
namespace_body
}
namespace mynamespace
{
int a,b;
}
|
identifierهر شناسه معتبری می تواند باشد. بدنه namespace اشیا یا توابعی هستند کهدرون آن قرار می گیرند. a و b متغیرهای عادی درون یک namespace به نامmynamespace هستند. برای دسترسی به این متغیرها بیرون از namespace ازعملگر :: استفاده می شود.
| :كد |
mynamespace::a
mynamespace::b
|
کاربرد namespace در مواردی است که احتمال این وجود دارد که یک تابع یا شیسراسری هم نام با تابع یا شی دیگر باشد و اجازه می دهد تعیین کنید که بهکدام دارید مراجعه می کنید.
| :كد |
#include<iostream>
#include <conio.h>
using std::cout;
using std::endl;
namespace nameone
{
int myvar=5;
}
namespace nametwo
{
float myvar=9.6f;
}
int main()
{
cout <<nameone::myvar<<endl;
cout <<nametwo::myvar<<endl;
getch();
return 0;
}
|
حرف f بعد از مقدار 9.6 متغیر float myvar نشان می دهد که این متغیر از نوع foat می باشد. اگر این حرف بعد از مقدار نیاید double فرض شده و حجم بیشتری از حافظه گرفته می شود. مسلماً در این کد بدون استفاده از namespace پیام خطا دریافت خواهید کرد. زیرا شما در حقیقت سعی کرده اید دو متغیر همنام داشته باشید.
وقتی iostream را ضمیمه کنید باید هر فقره ای که می خواهید استفاده کنید تعیین کنید. البته اگر از namespace استاندارد استفاده می کنید مجبور نیستید می توانید بسادگی با اضافه کردن نام using namespace; به عناصر درون namespace مورد نظر و تنها با صدا زدن نامشان همچون حالت عادی دسترسی داشته باشید. به کد زیر دقت کنید تا متوجه شوید.
| :كد |
#include<iostream>
#include <conio.h>
using namespace std;
#include<iostream>
using namespace std;
namespace nameone
{
int myvar=5;
}
namespace nametwo
{
float myvar=9.6f;
}
using namespace nametwo;
int main()
{
cout <<myvar<<endl;
getch();
return 0;
}
|
در چند خط انتهای کد چون بیان شده که دارید از namespace nametwo استفاده می کنید وقتی به متغیر myvar رجوع می شود به نسخه درون nametwo می رود.
فضای اسمی std در
++C
استاندارد تعریف شده و امکان دسترسی به کتابخانه های استاندارد را می دهد. وقتی یک فایل ضمیمه اضافه می شود محتویات آن در std قرار می گیرد.
قالب بندی ورودی و خروجی: راه های دیگری برای فرمت بندی متن وجود دارد که C++ و C آنها را پشتیبانی می کنند.
| newline | |
| flush buffer | |
| Base 16 | |
| Base 10 | |
| Sets floating point format | | :كد | | cout<<setprecision(5); |
|
| Pad fields with the x character | |
| پهنای فیلد را به تعداد بیان شده به صحیح تنظیم می کند. | |
| تعداد ارقام علمی در اعداد اعشاری | |
| تابع setf را با کلمه ios و فلگ مورد نظر صدا می کند. | | :كد | | setf( ios::flagname); |
|
یک فلگ مقداری است که برای تعیین یک رشته از فعالیت استفاده می شود. فلگها معمولاً مقادیر صحیح هستند امّا اغلب یک نام یا برچسبی داده می شود تا این مقدار خواناتر باشد. در این حالت فلگ بیان می کند چگونه تابع setf خروجی را فرمت می کند. یعنی آنها را با مقادیری تنظیم می کند تا اینکه آنها را فراخوانی کنید یا به آنها پارامتر بفرستید.
| ک فلگ که گونه برای اعداد ممیز شناور را تنظیم می کند. | floatfield |
| فلگی برای تنظیم گونه نماد علمی | scientific |
| فلگی که تنظیم فیلدها مثل چپ یا راست را مشخص می کند. | adjustfield |
در اتاق کار بعدی به آرایه ها رشته ها و عملیات بیتی می رسیم.
_________________
هدف ما پیشرفت صنعت بازی های رایانه ای در ایران است.
امام باقر (علیه السلام): دانشمندی که از علمش استفاده شود از هفتاد هزار عابد بهتر است.