آموزش زبان C

به روز ترین مطالب آموزشی و متدلوژی های برنامه نویسی

آموزش افزونه نویسی برای پایتون با زبان C

۵۷ بازديد
امروز با مقاله دیگری از سری مقاله های آموزش پایتون همراه شما هستیم، در این مقاله میخواهیم چگونگی افزونه نویسی در پایتون به کمک کدهای زبان C را مورد بررسی قرار دهیم..
به منظور نوشتن افزونه های اختصاصی جهت استفاده در اسکریپت های پایتون و اپلیکیشن های خود، لازم است به فایل های header پایتون دسترسی داشته باشید.در دستگاه هایی که سیستم عامل Unix بر روی آن نصب است، می بایست یک پکیج مختص توسعه دهنده (developer-specific) نظیر python2.5-dev را نصب نمایید.
کاربران ویندوز این فایل های header را به هنگام استفاده از binary Python installer به صورت یک پکیج دریافت می کنند. علاوه بر آن، برای درک مفاهیم این مبحث و نوشتن افزونه های اختصاصی خود جهت استفاده در اسکریپت های پایتون، لازم است آشنایی در سطح پیشرفته با زبان های C یا ++C داشته باشید.
 
آموزش Python : اولین نمونه از افزونه اختصاصی Python
کد ماژول و افزونه های پایتون، بایستی مانند زیر در چهار بخش سازمان دهی شود:
  • فایل header با اسم و پسوند Python.h.
  • توابع C که می خواهید به عنوان interface و الگوی پیاده سازی ماژول اختصاصی خود در اختیار توسعه دهنده قرار دهید.
  • یک جدول که اسم توابع اختصاصی شما را به توابع C داخل افزونه (کتابخانه یا ماژول) نگاشت می کند (method mapping table).
  • یک تابع سازنده جهت مقداردهی اولیه و نمونه سازی از کلاس (initialization function).
 
فایل Python.h
لازم است فایل Python.h را داخل فایلی که کدهای C شما را دربرمی گیرد (source file) قید نمایید. بدین وسیله شما به توابع کتابخانه ای درون ساخته ی پایتون (internal Python API) که برای ادغام و معرفی ماژول مورد نظر در interpreter (hook کردن کد ماژول شما در مفسر) بکار می رود، دسترسی خواهید داشت. لازم است Python.h را قبل از هر فایل header مورد نیاز دیگری لحاظ نمایید.
 
توابع C
اسم متد، نوع و تعداد پارامترهای ورودی (Signature) توابع اختصاصی شما و پیاده سازی آن، بایستی بر اساس یکی از الگوهای زیر انجام شود:
static PyObject *MyFunction( PyObject *self, PyObject *args );
static PyObject *MyFunctionWithKeywords(PyObject *self,
                                 PyObject *args,
                                 PyObject *kw);
static PyObject *MyFunctionWithNoArgs( PyObject *self );

هر یک از متدهای اعلان شده ی فوق، در خروجی خود یک آبجکت Python برمی گرداند. در پایتون مفهومی به نام تابع void (تابعی که خروجی ندارد یا مقداری را برنمی گرداند) وجود ندارد. اگر شما نمی خواهید که توابع مقدار خروجی داشته باشند، لازم است مقدار None را بازگردانی نمایید. header های پایتون یک macro (خط دستور) به نام Py_RETURN_NONE در خود به صورت از پیش تعریف شده دارند که این کار را انجام می دهند.
از آنجایی که اسم توابع C هیچگاه خارج از ماژول/افزونه قابل مشاهده و دسترسی نیستند، شما می توانید هر اسمی برای متدهای اختصاصی خود انتخاب کنید. لازم به ذکر است که این توابع با کلیدواژه ی static تعریف می شوند. اسم توابع C معمولا از ترکیبی از اسم ماژول و متد مورد نظر تشکیل می شود. در زیر نمونه ای را مشاهده می کنید:
static PyObject *module_func(PyObject *self, PyObject *args) {
   /* Do your stuff here. */
   Py_RETURN_NONE;
}

کد حاضر یک تابع Python به نام func را تعریف می کند که داخل افزونه ی module کپسوله سازی شده است. حال شما به این توابع C داخل جدول نگاشت متد (method table) Pointer و اشاره گر تعریف می کنید که در بخش بعدی کد برنامه ی شما انجام می شود.
 
آموزش برنامه نویسی پایتون : جدول نگاشت توابع
این جدول نگاشت متد (method table) یک آرایه ی ساده از structure های PyMethodDef است (PyMethodDef یک مدل برای تعریف متد است). این structure ساختاری مشابه زیر دارد:
struct PyMethodDef {
   char *ml_name;
   PyCFunction ml_meth;
   int ml_flags;
   char *ml_doc;
};

در زیر هر یک از اعضای این ساختار شرح داده اند:
  • فیلد ml_name : اسم تابع پایتون.
  • فیلد ml_meth : آدرس تابعی که هر یک از signature های نام برده در بخش قبلی را دارا می باشد.
  • فیلد ml_flags : این فیلد به مفسر پایتون اعلان می کند که فیلد دوم (ml_meth) کدام یک از signature های نام برده را اتخاذ می کند :
  1. این flag معمولا مقداری از METH_VARARGS دارد.
  2. اگر می خواهید آرگومان های کلیدواژه ای را در تابع تزریق نمایید، این flag می تواند OR بیتی با METH_KEYWORDS را شامل شود.
  3. این flag همچنین می تواند مقدار METH_NOARGS را داشته باشد، بدین معنی که هیچ پارامتری به تابع فرستاده نمی شود.
  • فیلد ml_doc : این docstring (رشته یا comment ای که توضیحی درباره ی کارایی تابع می دهد) تابع است. اگر برنامه نویس comment ای برای تابع تنظیم نکند، در آن صورت مقدار آن NULL خواهد بود.
این جدول بایستی با یک sentinel که از NULL و 0 برای اعضای مرتبط تشکیل شده، خاتمه یابد.
 
مثال :
برای متد اعلان شده در بالا، از جدول نگاشت تابع (method mapping table) زیر استفاده می کنیم:
static PyMethodDef module_methods[ ] = {
   { "func", (PyCFunction)module_func, METH_NOARGS, NULL },
   { NULL, NULL, 0, NULL }
};
 
آموزش زبان پایتون : تابع مقداردهی اولیه (initModule)
آخرین بخش ماژول یا افزونه ی اختصاصی شما بایستی تابع مقداردهنده ی اولیه (initialization function) را شامل شود. این تابع را مفسر پایتون زمانی که ماژول در حافظه بارگذاری می شود، فرامی خواند. لازم است اسم این تابع initModule انتخاب شود (Module اسم ماژول و init اسم خود تابع می باشد).
تابع مقداردهنده ی اولیه بایستی از کتابخانه که می نویسید export و خروجی گرفته شده باشد. header های Python با اعلان دستور PyMODINIT_FUNC امکان انجام این کار را در محیطی که اسکریپت ها در آن کامپایل می شوند را فراهم می آورد. کافی است به هنگام تعریف تابع مورد نظر از آن استفاده نمایید.
تابع مقداردهنده ی اولیه ی زبان C شما دارای ساختار کلی زیر می باشد:
PyMODINIT_FUNC initModule() {
   Py_InitModule3(func, module_methods, "docstring...");
}
در زیر شرح هر یک از پارامترهای تابع Py_InitModule3 را به تفصیل مشاهده می کنید:
  • پارامتر func : تابعی است که قرار است export و به اصطلاح خروجی گرفته شود.
  • پارامتر module_methods : اسم جدول نگاشت تابع (mapping table) که در بالا به آن اشاره شد.
  • پارامتر docstring : این پارامتر همان رشته ی متنی و comment ای است که جهت ارائه ی توضیح درباره ی قابلیت تابع در افزونه ی اختصاصی درج می شود.
در زیر تمامی بخش های تشکیل دهنده یک افزونه استاندارد را یکجا مشاهده می کنید:
#include < python.h>
static PyObject *module_func(PyObject *self, PyObject *args) {
   /* Do your stuff here. */
   Py_RETURN_NONE;
}
static PyMethodDef module_methods[ ] = {
   { "func", (PyCFunction)module_func, METH_NOARGS, NULL },
   { NULL, NULL, 0, NULL }
};
PyMODINIT_FUNC initModule() {
   Py_InitModule3(func, module_methods, "docstring...");
}
< /python.h>
 
مثال :
نمونه کاربردی که کلیه مفاهیم فوق را به صورت عملی بکار می برد را در زیر مشاهده می کنید:
#include < python.h>
static PyObject* helloworld(PyObject* self)
{
    return Py_BuildValue("s", "Hello, Python extensions!!");
}
static char helloworld_docs[ ] =
    "helloworld( ): Any message you want to put here!!n"
static PyMethodDef helloworld_funcs[ ] = {
    {"helloworld", (PyCFunction)helloworld, 
     METH_NOARGS, helloworld_docs},
    {NULL}
};
void inithelloworld(void)
{
    Py_InitModule3("helloworld", helloworld_funcs,
                   "Extension module example!");
}
< /python.h>

دستور Py_BuildValue در مثال بالا، یک مقدار Python را build یا کامپایل می کند. کد مورد نظر را داخل فایل hello.c ذخیره نمایید. در زیر با نحوه ی کامپایل و نصب ماژول که از اسکریپت پایتون فراخوانی می شود، را خواهید آموخت.
 
کامپایل و نصب افزونه ها (build)
پکیج distutils توزیع و نصب ماژول های پایتون، خواه ماژول های اصلی و خالص خود پایوتن باشد خواه ماژول های اختصاصی و تنظیم شده توسط توسعه دهنده، را با روشی استاندارد بسیار آسان می سازد. ماژول ها در همان قالب اولیه (source form) توزیع شده و در اختیار برنامه نویس قرار می گیرد. برنامه نویس سپس ماژول مورد نظر را با فراخوانی اسکریپت نصب (setup script) به نام setup.py ، نصب می نماید.
جهت نصب ماژول ذکر شده در بالا، بایستی اسکریپت setup.py را آماده نموده و به روش زیر اجرا نمایید:
from distutils.core import setup, Extension
setup(name='helloworld', version='1.0',  
      ext_modules=[Extension('helloworld', ['hello.c'])])

اکنون با فراخوانی دستور زیر، تمامی مراحل لازم نظیر کامپایل و آماده سازی (linking & compilation) کد را انجام دهید. کد زیر کلیه ی مراحل مورد نیاز کامپایل و لینک ماژول با کامپایلر، دستورات linker و flag های مناسب را انجام داده، متعاقبا خروجی (.dll) را در پوشه ی مربوطه جایگذاری (کپی) می کند.
$ python setup.py install

در سیستم های مبتنی بر Unix، لازم است این دستور را با حساب کاربری root اجرا نمایید تا امکان یا مجوز درج داده در پوشه ی site-packages را داشته باشید. در سیستم عامل ویندوز لازم به انجام این کار نیست.
 
آموزش Python : وارد کردن و استفاده از افزونه ها در پروژه
پس از نصب افزونه ی دلخواه خود، می توانید آن را در اسکرپیت پایتون خود با دستور import وارد کرده و فراخوانی نمایید:
#!/usr/bin/python
import helloworld
print helloworld.helloworld()
خروجی زیر را تولید می کند:
Hello, Python extensions!!
 
ارسال پارامتر به تابع
در طول توسعه پروژه، گاه می بایست توابعی را اعلان و فراخوانی نمایید که پارامترهایی را به عنوان ورودی می پذیرد. از اینرو بایستی signature (اسم تابع + نوع، تعداد پارامتر ورودی) مربوطه را برای توابع C ماژول اختصاصی خود انتخاب نمایید. به طور مثال، تابع ذیل را در نظر بگیرید که تعدادی پارامتر به عنوان ورودی پذیرفته و بدین صورت اعلان می شود:
static PyObject *module_func(PyObject *self, PyObject *args) {
   /* Parse args and do something interesting here. */
   Py_RETURN_NONE;
}

متد table که تابع جدید را در خود کپسوله می کند، به صورت زیر خواهد بود:
static PyMethodDef module_methods[ ] = {
   { "func", (PyCFunction)module_func, METH_NOARGS, NULL },
   { "func", module_func, METH_VARARGS, NULL },
   { NULL, NULL, 0, NULL }
};

می توانید با استفاده از تابع کتابخانه ای PyArg_ParseTuple آرگومان های مورد نیاز را از متغیر اشاره گر (pointer) به PyObject که به عنوان آرگومان به تابع C ارسال شده، استخراج نمایید.
اولین آرگومان ارسالی به PyArg_ParseTuple، آرگومان args می باشد. این آرگومان همان آبجکتی است که باید parse یا تحلیل نحوی شود. پارامتر دوم یک رشته ی فرمت دهی (format string) است که آرگومان ها را به آن شکلی که مورد انتظار شما است، به نمایش می گذارد. به تعداد آرگومان ها، یک یا چند کاراکتر در رشته ی فرمت دهی وجود دارد که نشانگر آرگومان های مزبور می باشند.
static PyObject *module_func(PyObject *self, PyObject *args) {
   int i;
   double d;
   char *s;
   if (!PyArg_ParseTuple(args, "ids", &i, &d, &s)) {
      return NULL;
   }
   /* Do something interesting here. */
   Py_RETURN_NONE;
}

با کامپایل نمودن ورژن جدید از ماژول خود و وارد کردن آن در متن پروژه، قادر خواهید بود تابع مورد نظر را با تعداد دلخواه و نوع مختلف از آرگومان ها فراخوانی نمایید:
module.func(1, s="three", d=2.0)
module.func(i=1, d=2.0, s="three")
module.func(s="three", d=2.0, i=1)
 
تابع PyArg_ParseTuple
در زیر تعداد و نوع ورودی های تابع را به شکل استاندارد (signature) PyArg_ParseTuple مشاهده می کنید:
int PyArg_ParseTuple(PyObject* tuple,char* format,...)

در صورتی که عملیات با موفقیت انجام شود، مقداری غیر صفر و چنانچه عملیات ناموفق بوده و خطا رخ داد، مقدار 0 در خروجی بازگردانی می شود. tuple، آبجکت PyObject* بوده که همان آرگومان دوم ارسال شده به تابع C می باشد. آرگومان سوم، format، یک رشته ی C می باشد که نشانگر آرگومان های الزامی و اختیاری می باشد.
در زیر لیستی از کدهای فرمت دهی که به تابع PyArg_ParseTuple ارسال می شود همراه با شرح هر یک مشاهده می کنید:
  • کد c در پایتون معادل char در زبان C : یک رشته پایتون با طول 1 (رشته ی حاوی یک کاراکتر) معادل char در C می شود.
  • کد d در پایتون معادل double در زبان C : یک مقدار عددی float (ممیز و اعشاری) که معادل double (اعشاری با دقت بیشتر) در C محسوب می شود.
  • کد f در پایتون معادل float در زبان C : یک float (مقدار عددی اعشاری از نوع float) در پایتون معادل float در C محسوب می شود.
  • کد i در پایتون معادل int در زبان C : یک int (نوع عدد صحیح) معادل long در زبان C درنظر گرفته می شود.
  • کد l در پایتون معادل long در زبان C : یک int در زبان پایتون معادل نوع داده ای long در زبان C در نظر گرفته می شود.
  • کد L در پایتون معادل long long در زبان C : یک int یا نوع داده ای عدد صحیح در زبان پایتون، معادل long long در زبان C محسوب می شود.
  • کد O در پایتون معادل PyObject* در زبان C : یک اشاره گر غیر NULL به آرگومان Python بازگردانی می کند.
  • کد s در پایتون معادل char* در زبان C : رشته پایتون بدون مقادیر null جاسازی شده (embedded) به char* در زبان C فرمت دهی / تبدیل می شود.
  • کد s# در پایتون معادل char*+int در زبان C : رشته Python را به آدرس و طول سازگار در C تبدیل می کند.
  • کد t# در پایتون معادل char*+int در زبان C : کاربردی مشابه s# دارد با این تفاوت که هر آبجکتی که اینترفیس read-only را پیاده سازی کند، می پذیرد.
  • کد u در پایتون معادل Py_UNICODE* در زبان C : کاراکترهای Unicode (null-terminated buffer) مستقر در بافر که انتهای آن به null ختم می شود را به آبجکت Unicode پایتون تبدیل می کند.
  • کد u# در پایتون معادل Py_UNICODE*+int در زبان C : نوع دیگر از u که در دو متغیر C ذخیره می شود، اولی یک اشاره گر به آدرس Unicode مستقر در بافر و دومی طول آن.
  • کد w# در پایتون معادل char*+int در زبان C : مشابه s#، اما هر آّبجکتی که اینترفیس read/write بافر را پیاده سازی می کند، پذیرفته و با آن سازگاری دارد.
  • کد z در پایتون معادل char* در زبان C : کاربری مشابه s دارد با این تفاوت که None نیز می پذیرد (char* زبان C را بر روی NULL تنظیم می کند).
  • کد z# در پایتون معادل char*+int در زبان C : کاربردی مشابه s# دارد اما None نیز می پذیرد (char* زبان C را روی NULL تنظیم می نماید).
  • کد (...) در پایتون معادل as per ... در زبان C : یک دنباله (sequence) پایتون که هر آیتم در آن یک آرگومان در نظر گرفته می شود.
  • کد | در پایتون معادل double در زبان C : آرگومان های زیر اختیاری می باشد.
  • کد : در پایتون معادل double در زبان C : قبل از اسم تابع در پیغام های خطا قرار می گیرد.
  • کد ; در پایتون معادل double در زبان C : قبل از درج کل متن پیغام خطا قرار می گیرد.
 
بازگردانی مقادیر در خروجی
تابع Py_BuildValue، درست مانند PyArg_ParseTuple ، یک رشته ی فرمت دهی (string format) به عنوان ورودی دریافت می کند. بجای ارسال آدرس مقادیری که کامپایل می کنید، بایستی خود مقادیر را به عنوان آرگومان به تابع مورد نظر بفرستید. در زیر مثالی از نحوه ی پیاده سازی یک تابع که عملیات جمع را انجام می دهد، تابع add، مشاهده می کنید:
static PyObject *foo_add(PyObject *self, PyObject *args) {
   int a;
   int b;
   if (!PyArg_ParseTuple(args, "ii", &a, &b)) {
      return NULL;
   }
   return Py_BuildValue("i", a + b);
}

معادل پیاده سازی آن در زبان پایتون به صورت زیر می باشد:
def add(a, b):
   return (a + b)
می توانید دو خروجی از این تابع بازگردانی نمایید. این عملیات در پایتون با یک لیست قابل پیاده سازی خواهد بود:
static PyObject *foo_add_subtract(PyObject *self, PyObject *args) {
   int a;
   int b;
   if (!PyArg_ParseTuple(args, "ii", &a, &b)) {
      return NULL;
   }
   return Py_BuildValue("ii", a + b, a - b);
}

معادل پیاده سازی آن در زبان پایتون به صورت خواهد بود:
def add_subtract(a, b):
   return (a + b, a - b)

 
تابع Py_BuildValue
در زیر روش استاندارد تنظیم اسم تابع، نوع و تعداد پارامترهای ورودی آن که signature خوانده می شود را ویژه ی تابع Py_BuildValue مشاهده می کنید:
PyObject* Py_BuildValue(char* format,...)
پارامتر format، یک رشته ی C بوده و نشانگر آبجکت Python است که پارامتر حاضر باید نهایتا به آن کامپایل شود. آرگومان های زیر مقادیر C هستند که خروجی از آن ها ساخته و کامپایل می شود. نتیجه ی PyObject* یک اشاره گر (reference) جدید می باشد.
جدول زیر code string های پرکاربرد را با ذکر کارایی هر یک در اختیار شما قرار می دهد:
  • کد c در پایتون معادل char در زبان C : یک char زبان C، به رشته ای با طول یک کاراکتر تبدیل می شود.
  • کد d در پایتون معادل double در زبان C : یک نوع عددی double زبان C، به float در پایتون تبدیل می شود.
  • کد f در پایتون معادل float در زبان C : یک float یا نوع عددی اعشاری زبان C، به همان float در پایتون تبدیل می شود.
  • کد i در پایتون معادل int در زبان C : یک Int زبان C به همان int (نوع عددی صحیح) در پایتون تبدیل می شود.
  • کد l در پایتون معادل long در زبان C : یک long در زبان C به int در پایتون تبدیل می شود.
  • کد N در پایتون معادل PyObject* در زبان C : یک آبجکت پایتون ارسال کرده ولی reference count (تعداد دفعاتی که آبجکت مورد نظر به آن دسترسی صورت می گیرد) آن را افزایش نمی دهد.
  • کد O در پایتون معادل PyObject* در زبان C : یک آبجکت پایتون ارسال کرده و reference count آن را طبق انتظار یک واحد افزایش می دهد.
  • کد O& در پایتون معادل convert+void* در زبان C : رشته پایتون بدون مقادیر null جاسازی شده (embedded) به char* در زبان C فرمت دهی / تبدیل می شود.
  • کد s در پایتون معادل char* در زبان C : یک char* که در انتهای خود 0 داشته را به رشته ی Python تبدیل می نماید یا NULL را به None.
  • کد s# در پایتون معادل char*+int در زبان C : یک رشته ی C و طول (length) آن را به یک آبجکت Python تبدیل می کند. اگر اشاره گر از نوع string (string pointer) برابر NULL باشد، طول یا length نادیده گرفته شده و None در خروجی بازگردانی می کند.
  • کد u در پایتون معادل Py_UNICODE* در زبان C : یک رشته که در سطح زبان C تعریف شده و انتهای آن مقدار NULL وجود دارد را به یونیکد پایتون تبدیل کرده و اگر NULL بود آن را به None تبدیل می کند. Buffer ای از داده های Unicode که انتهای آن null وجود دارد را به آبجکت پایتون تبدیل می کند. اگر Unicode buffer برابر NULL بود، در خروجی None بازیابی می شود.
  • کد u# در پایتون معادل Py_UNICODE*+int در زبان C : یک رشته ی تعریف شده در سطح C و طول آن را به آبجکت Unicode پایتون تبدیل می کند یا NULL را به None تبدیل می کند. به عبارت دیگر، یک Unicode (که استانداردهای USC-2 یا UCS-4) مستقر در buffer یا حافظه میانی و طول (length) آن را به آبجکت Unicode پایتون تبدیل می کند. اگر اشاره گر به Unicode موجود در buffer برابر NULL بود، طول آن نادیده گرفته شده و None را در خروجی برمی گرداند.
  • کد w# در پایتون معادل char*+int در زبان C : مشابه s#، با این تفاوت که هر آبجکتی که اینترفیس read-write را پیاده سازی می کند، می پذیرد. متغیر char * طوری تنظیم شده که به اولین بایت از buffer اشاره کند و Py_ssize_t را بر روی طول buffer تنظیم می کند.
  • کد z در پایتون معادل char* در زبان C : مشابه s، با این تفاوت که None نیز می پذیرد (char* در C را روی NULL تنظیم می کند).
  • کد z# در پایتون معادل char*+int در زبان C : کاربردی مشابه s# دارد (char* در C را بر روی NULL تنظیم می کند).
  • کد (...) در پایتون معادل as per ... در زبان C : از دنباله ای از مقادیر C، یک متغیر tuple در پایتون می سازد.
  • کد [...] در پایتون معادل as per ... در زبان C : از مقادیر C، یک لیست (list) در پایتون تولید می کند.
  • کد {...} در پایتون معادل as per ... در زبان C : از دنباله ای از مقادیر C، یک dictionary که المان های آن به صورت متناوب، کلید و مقدار، سازمان دهی شده، ایجاد می کند.
به طور مثال تابع Py_BuildValue("{issi}",23,"zig","zag",42) یک dictionary پایتون به صورت {23:'zig','zag':42} در خروجی تولید می کند.

با دیگر آموزش های ما در زمینه آموزش پایتون و دیگر زبان های برنامه نویسی همراه ما باشید...

آموزش بکارگیری پارامترهای تابع در زبان سی شارپ

۷۰ بازديد
در این مقاله از سری مقاله های آموزش سی شارپ به بررسی چگونگی بکارگیری پارامترهای تابع در زبان سی شارپ می پردازیم..
 
بکارگیری پارامترهای تابع در زبان سی شارپ
در درس قبلی، به طور کامل نحوه کار با تابع ها در سی شارپ و فراخوانی و استفاده آن ها را آموزش دادیم. تا حدودی به آموزش نحوه تعیین و ارسال پارامترهای تابع هم پرداختیم. اما در این درس به صورت اختصاصی قابلیت ها و کارکردهای پارامترها را بررسی خواهیم کرد.
اولین چیزی که به بررسی آن خواهیم پرداخت، تغییردهنده های ref و out یا modifiers هستند. زبان سی شارپ همانند اکثر زبان های برنامه نویسی دیگر، بین متغیرهای ارسال با مقدار “by value” و ارسال با رفرنس “by refrence” تفاوت قائل می شود.
حالت پیش فرض در زبان سی شارپ، ارسال با مقدار یا “by value” است. این حالت به معنای آن است که وقتی شما یک متغیر را به تابع ای به عنوان پارامتر ارسال می کنید، درواقع یک کپی از آن شی را می فرستید و نه رفرنس به آدرس عمل واقعی متغیر. از طرف دیگر این کار به این معنی است که شما می توانید تغییرات و عملیات مورد نظر خود را بر روی متغیر پارامتر ارسالی انجام دهید. بدون این که شی اصلی آن متغیر را در حافظه دستکاری نمایید و به عبارت دیگر هر کاری بر روی پارامتر در درون تابع انجام می دهید، بر روی نسخه کپی آن اجرا می شود نه متغیر اصلی. با استفاده از واژه های کلیدی ref و out می توانید عملکرد فوق را تغییر داده و نسخه اصلی یک متغیر را به جای مقدار آن به تابع ارسال نمایید.
 
دوره آموزش سی شارپ : آموزش ref modifier
کد مثال زیر را مطالعه نمایید :
static void Main(string[] args)
{
    int number = 20;
    AddFive(number);
    Console.WriteLine(number);
    Console.ReadKey();
}
static void AddFive(int number)
{
    number = number + 5;
}

در کد مثال فوق، یک متغیر عددی به نام number از نوع integer تعریف کرده و مقدار 20 را به آن می دهیم. سپس این متغیر را به تابع AddFive() ارسال نموده سپس مقدار 5 واحد را به آن اضافه می کند. اما آیا متغیر واقعی number تغییر می کند؟

جواب خیر است، مقدار 5 به نسخه کپی متغیر number اضافه شده و فقط درون تابع مورد اشاره تغییر کرده است. زیرا ما یک نسخه کپی از متغیر number را ارسال کرده ایم، نه رفرنس به شی اصلی آن. این روش حالت پیش فرض در سی شارپ بوده و در بیشتر موارد مقصود ما هم همین است.
اما اگر بخواهید مقدار شی اصلی متغیر number را تغیر دهید، بایستی کلید واژه ref را همانند کد زیر به پارامتر اضافه نمایید :
static void Main(string[] args)
{
    int number = 20;
    AddFive(ref number);
    Console.WriteLine(number);
    Console.ReadKey();
}
static void AddFive(ref int number)
{
    number = number + 5;
}

همانطور که در کد فوق مشاهده می کنید، ما علاوه بر این که در هنگام تعریف تابع، واژه کلیدی ref را به کار برده ایم، در هنگام فراخوانی تابع هم استفاده شده است.

اگر برنامه فوق را اجرا کنید، خواهید دید که مقدار اصلی متغیر number تغییر کرده است، نه نسخه کپی آن.
 
آموزش CSharp : آموزش تغییر دهنده out modifier
تغییردهنده out modifier بسیار شبیه ref عمل می کند. هر دو آن ها باعث می شود تا نسخه اصلی و رفرنس متغیر به عنوان پارامتر ارسال شود و نه مقدار آن. اما دارای دو تفاوت عمده با هم هستند :
  1. متغیری که به ref modifier ارسال می شود، حتما بایستی قبل از فراخوانی تابع مقداردهی اولیه شده باشد. اما این مورد درباره out صورت نکرده و شما می توانید یک متغیر مقداردهی نشده را به out ارسال کنید.
  2. از طرف دیگر شما نمی توانید بدون این که به یک متغیر out مقدار بدهید، تابع مورد نظر خود را به پارامتر out فراخوانی کنید. درست است که می توانید یک متغیر مقداردهی اولیه نشده را به یک تابع به عنوان out Parameter ارسال کنید، اما برای استفاده از آن در بدنه تابع، بایستی مقدار جدیدی را برای آن تعریف کنید.
 
آموزش زبان سی شارپ : آموزش تغییر دهنده Params modifier
تا اینجا، توابعی که تعریف کردیم، تعداد مشخصی پارامتر را در هنگام تعریف یا فراخوانی دریافت می کردند. اما مواردی وجود دارد که ممکن است شما بخواهید تابع مورد نظرتان تعداد متفاوتی پارامتر را در هر بار فراخوانی دریافت و ارسال کند. این کار با ارسال یک متغیر مثل آرایه به تابع همانند روش زیر امکان پذیر است :
static void GreetPersons(string[] names) { }
 
البته فراخوانی این نوع تابع ها کمی پیچیده تر از حالت معمولی است، به صورت زیر :
GreetPersons(new string[] { "John", "Jane", "Tarzan" });
 
روش فوق کاملا درست است، اما می توان با استفاده از واژه کلیدی Params آن را به صورت زیر بهتر نوشت :
static void GreetPersons(params string[] names) { }
 
کد فراخوانی فوق همانند فراخوانی به صورت زیر است :
GreetPersons("John", "Jane", "Tarzan");
 
مزیت دیگر استفاده از کلید واژه Params این است که شما می توانید پارامترهای خالی (2re, Parameters) را هم به تابع ارسال کنید.
در هنگام استفاده از Params، تابع می تواند انواع دیگری از پارامترها را نیز دریافت کند، منتهی پارامترهای Params بایستی در انتها تعریف شوند. از طرف دیگر فقط از یک پارامتر Params در تعریف و فراخوانی هر تابع می توان استفاده کرد.
کد مثال زیر، مثال کاملی از نحوه استفاده از Params در سی شارپ است :
static void Main(string[] args)
{
    GreetPersons(0);
    GreetPersons(25, "John", "Jane", "Tarzan");
    Console.ReadKey();
}
static void GreetPersons(int someUnusedParameter, params string[] names)
{
    foreach(string name in names)
        Console.WriteLine("Hello, " + name);
}
 
با دیگر مقاله های آموزش سی شارپ همراه ما باشید..

آموزش جاوا-آموزش متغیر Double در JAVA

۲۴۰ بازديد

سلام با قسمت سوم آموزش جاوا JAVA در خدمت شما عزیزان هستم

در قسمت قبل از آموزش تصویری برنامه نویسی جاوا با متغیرهای جاوا آشنا شدیم

حال با ادامه آموزش جاوا همراه باشید:

آموزش متغیر Double

متغیر double می تواند اعداد خیلی بزرگ (یا کوچک) را در خود داشته باشد. حداکثر و حداقل مقادیر 17 می باشد که با 307 صفر دنبال می شود.

متغیر double برای نگهداری مقادیر ممیزی شناور نیز استفاده می شود. یک مقدار ممیزی شناور عددی مانند 8.7، 12.5، 10.1 و غیره می باشد. به عبارت دیگر این عدد ممیزی در انتها دارد. اگر سعی کنید یک مقدار ممیزی را در یک متغیر int ذخیره کنید، NetBeans زیر کد پیش فرض را خط خواهد کشید. اگر سعی کنید برنامه را اجرا کنید، کامپایلر یک پیغام خطا ارائه می دهد. اجازه بدهید با متغیرهای double کمی تمرین کنیم.

از بخش int را به double تغییر دهید. بنابراین این مورد را نیز تغییر دهید:

int first_number, second_number, answer;

به خط زیر:

double first_number, second_number, answer;

اکنون مقادیر ذخیره شده را تغییر دهید:

first_number = 10.5;

second_number = 20.8;

بقیه ی برنامه را همانطور که هست رها کنید. پنجره ی برنامه نویسی شما باید مشابه زیر باشد:

 

 

برنامه ی خود را مجددا اجرا کنید، پنجره ی خروجی باید مانند زیر باشد:

 

 

تغییر مقادیر ذخیره شده در first_number و second_number را امتحان کنید. از هر مقداری که تمایل دارید، استفاده کنید. برنامه ی خود را اجرا کرده و نتیجه را مشاهده کنید.

در بخش بعدی در مورد دو نوع متغیر دیگر جاوا فرا خواهید گرفت: short و float.

 

آموزش Java - آموزش متغیرهای Float و Short

دو نوع متغیر دیگری که می توانید استفاده کنید short و float می باشند. متغیر short برای ذخیره ی اعداد کوچکتر استفاده می شود و دامنه ی آن بین منفی 32768 و مثبت 32767 می باشد. به جای استفاده از int در کد خود مانند صفحات قبل، می توانستیم از متغیر short استفاده کنیم. اگر مطمئن هستید که متغیری را که مخواهید ذخیره کنید، بیشتر از 32767 و کمتر از -32768 نیست، باید فقط از متغیر short استفاده کنید.

متغیر double را که استفاده کردیم، می تواند اعداد ممیزی شناور واقعا بزرگ را ذخیره کند. به جای استفاهد از double، متغیر float نیز می تواند استفاده شود. هنگام ذخیره ی یک مقدار در یک متغیر float، نیاز به حرف f در انتهای آن دارید. مانند مورد زیر:

float first_number, second_number, answer;‎

first_number = 10.5f;

second_number = 20.8f;‎

بنابراین حرف f بعد از عدد اما قبل از نقطه ویرگول در انتهای خط قرار می گیرد. برای مشاهده ی تفاوت بین float و double مورد زیر را بررسی کنید.

حساب ساده ( Simple Arithmetic) با متغیرهایی که استفاده کرده اید، می توانید از نمادهای زیر نیز برای انجام محاسبت استفاده کنید: + (علامت جمع) _ (علامت منفی) *(علامت ضرب که یک ستاره است.) / (علامت تقسیم که یک اسلش رو به جلو می باشد.) این تمرین را امتحان کنید: علامت جمع را که برای اضافه کردن first_number و second_numberاستفاده می شود، حذف کنید. آن را با نمادهای بالا جایگزین کنید، ابتدا علامت منفی، سپس علامت ضرب و در نهایت علامت تقسیم. پاسخ به مورد آخر، تقسیم، باید یک عدد واقعا بزرگ به شما ارائه دهد. عددی که باید برای تقسیم ارائه دهید 0.5048076923076923 می باشد. این به این دلیل است که شما از متغیر نوع double استفاده کرده اید. به هرحال double را به float تغییر دهید. سپس حرف f را به انتهای اعداد اضافه کنید. بنابراین کد شما باید مانند زیر باشد:

 

 

وقتی که کد بالا را اجرا می کنید، اکنون پاسخ 0.5048077 می باشد. جاوا 6 عدد اول بعد از ممیز را گرفته و سپس بقیه را گرد کرده است. ( double یک عدد 64 بیتی است و float فقط 32 بیتی می باشد.)

در بخش بعد در مورد اهمیت Operator Precedence فرا خواهید گرفت.

آموزش Java - آموزش اولویت عمگرها

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

first_number = 100;

second_number = 75;

third_number = 25;

answer = first_number - second_number + third_number;

اگر محاسبه را از سمت چپ به راست انجام داده باشید، 75-100 می شود که پاسخ 25 است. سپس عدد سوم را که 25 است اضافه کنید. مجموع 50 خواهد بود. به هرحال اگر مد نظر شما این نباشد چطور؟ اگر تمایل داشته باشید اعداد دوم و سوم را با هم اضافه کنید و سپس مجموع را از اولین عدد کسر کنید، چطور؟ بنابراین 25+75 است که پاسخ 100 می باشد. سپس آن را از اولین عدد کسر کنید که 100 می باشد. اکنون مجموع 0 خواهد بود.

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

answer = (first_number - second_number) + third_number;

این پنجره ی برنامه نویسی می باشد، بنابراین می توانید آن را امتحان کنید:

 

 

محاسبه دوم نیز به این شکل می باشد:

answer = first_number - (second_number + third_number);

پنجره ی کد آن را نیز در اینجا مشاهده می کنید:

 

 

اکنون اجازه بدهید چند عمل ضرب و جمع را امتحان کنیم.

نمادهای ریاضی خود را به (که اپراتور نامیده می شوند) به جمع و ضرب تبدیل کنید:

answer = first_number + second_number * third_number;

تمام آکولادها را حذف کرده و سپس برنامه ی خود را اجرا کنید.

بدون آکولا تصور می کنید که Java از چپ به راست محاسبه را انجام می دهد. بنابراین تصور می کنید که عدد اول را به عدد دوم اضافه می کند تا 175 به دست آورد. سپس تصور می کنید که در عدد سوم ضرب می شود که 25 می باشد. بنابراین پاسخ 4375 خواهد بود. سپس برنامه را اجرا کنید. پاسخ حقیقی را که شما به دست می آورید 1975 می باشد. پس جریان چیست؟

دلیل اینکه جاوا پاسخ اشتباه ارائه می دهد Operator Precedence است. جاوا برخی از نمادهای ریاضی را مهم تر از بقیه در نظر می گیرد. این برنامه ضرب را مقدم به جمع می داند، بنابراین عملیات ضرب را قبل از جمع انجام می دهد، سپس جمع را انجام می دهد. بنابراین جاوا در حال انجام عملیات زیر می باشد:

answer = first_number + (second_number * third_number);

با قرار دادن آکولادها در جای درست مشاهده می کنید که عدد دوم در عدد سوم ضرب شده است. سپس مجموع به اولین عدد اضافه می شود. بنابراین حاصل 75 در 25 عدد 1875 می باشد. عدد 100 را اضافه کنید، که 1975می باشد.

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

answer = (first_number + second_number) * third_number;

تقسیم مشابه ضرب می باشد: جاوا ابتدا تقسیم را انجام می دهد وسپس جمع و یا تفریق را. خط پاسخ خود را به شکل زیر تغییر دهید:

answer = first_number + second_number / third_number;

پاسخی که به دست می آورید 103 می باشد. اکنون چند آکولاد اضافه کنید:

answer = (first_number + second_number) / third_number;

پاسخ این بار 7 خواهد بود. بنابراین بدون آکولادها، جاوا ابتدا تقسیم را انجام می دهد و سپس 100 را به مجموع اضافه می کند – این عملکرد از چپ به راست کار نمی کند.

در اینجا لیستی از Operator Precedence را مشاهده می کنید:

ضرب و تقسیم – به طور مساوی رفتار می شوند، اما نسبت به جمع و تفریق دارای اولویت هستند. جمع و تفریق – به طور مساوی رفتار می شوند اما نسبت به ضرب و تقسیم اولویت پایین تری دارند. بنابراین اگر فکر می کنید که جاوا پاسخ اشتباه به شما می دهد، به یاد داشته باشید که Operator Precedence مهم می باشد و چند آکولاد اضافه می کند. در قسمت بعدی به چگونگی ذخیره ی مقادیر با استفاده از Java نگاهی خواهیم داشت.

پایان بخش سوم آموزش برنامه نویسی JAVA

این آموزش ادامه دارد

آموزش جاوا-از مقدماتی تا پیشرفته

۱۳۴ بازديد

سلام با قسمت دوم آموزش جاوا JAVA در خدمت شما عزیزان هستم

در قسمت قبل از آموزش برنامه نویسی جاوا با مفهوم جاوا آشنا شدیم و JDK و نرم افزار IntelliJ IDEA را یاد دادیم و برنامه ای اجرا نمودیم

حال با ادامه آموزش جاوا همراه باشید:

آموزش متغیرهای جاوا:

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

برای ذخیره ی یک عدد در جاوا، باید گزینه های زیادی داشته باشید. تمام اعداد مانند 8، 10، 12 و غیره با استفاده از متغیر int ذخیره می شوند. ( int مخفف integer (عددصحیح) می باشد.). اعداد ممیز شناور مانند 8.4، 10.5، 12.8 و غیره با استفاده از متغیر دوگانه ذخیره می شوند. شما ذخیره سازی را با یک علامت تساوی ( = ) انجام می دهید. اجازه بدهید چند مثال را بررسی کنیم (می توانید از کد FirstProject برای این مثال ها استفاده کنید.)

برای تنظیم یک عدد کامل (عدد صحیح)، موارد زیر را به متود main از بخش قبل اضافه کنید:

public static void main(String[ ] args) {

int first_number;

System.out.println("My First Project");

}

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

نام متغیرها نباید با عدد شروع شود. بنابراین نام first_number درست می باشد اما نام 1st_number درست نیست. می توانید اعداد را در هرجایی از نام متغیر به جز ابتدای آن قراردهید.

نام های متغیرها نمی تواند مشابه لغات کلیدی Java باشد. موارد بسیاری از این گونه وجود دارد که در NetBeans به رنگ آبی در خواهند آمد، مانند int در بالا.

نمی توانید در نام های متغیرها فاصله داشته باشید. اطلاعیه ی متغیر int first number، خطایی را دریافت خواهد کرد. ما از متغیرهای تاکید شده استفاده کرده ایم، اما متداول این است که حرف اول با حروف کوچک انگلیسی و حرف بعدی یا بقیه ی حروف را با حرف بزرگ انگلیسی نوشته شوند: firstNumber, myFirstNumber

نام های متغیرها موارد هوشمندی هستند، بنابراین firstNumber و FirstNumber نام های متفاوتی برای متغیرها می باشند.

برای ذخیره ی موردی در متغیری به نام first_number، یک علامت تساوی و سپس مقداری مورد نظر برای ذخیره را تایپ کنید:

public static void main(String[ ] args) {

int first_number;

first_number = 10;

System.out.println("My First Project");

}

بنابراین این برنامه به جاوا می گوید که می خواهید مقداری از 10 را در متغیر عدد صحیح که first_number نامیده ایم، ذخیره کنید.

اگر تمایل دارید، می توانید تمام این کار را در یک خط انجام دهید:

public static void main(String[ ] args) {

int first_number = 10;

System.out.println("My First Project");

}

برای اینکه تمام موارد را در عمل ببینید، متد println را به این شکل تغییر دهید:

System.out.println( "First number = " + first_number );

آنچه ما اکنون در بین آکولادهای println داریم، متن های مستقیمی هستند که در علامت نقل قول محدود شده اند:

("First number = "

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

 

+ first_number );

علامت به اضافه به معنای اتصال به یکدیگر "join together" می باشد. بنابراین ما متن و نام متغیر خود را به یکدیگر متصل می کنیم. این عملکرد به عنوان concatenation (الحاق) مطرح است.

پنجره ی شما اکنون باید مانند زیر به نظر برسد (دقت داشته باشید که هر خط با نقطه ویرگول به پایان می رسد.):

 

 

برنامه ی خودرا اجرا کنید و باید صفحه ی زیر را در پنجره ی Output در پایین مشاهده کنید:

بنابراین عددی را که در متغیر ذخیره کرده ایم، به نام first_number ، خروجی می باشد پس از علامت تساوی.

 

 

اجازه بدهید چند جمع ساده را امتحان کنیم. چند متغیر int به کد خود اضافه کنید، یکی برای ذخیره ی رومین عدد و دیگری برای ذخیره ی پاسخ.

int first_number, second_number, answer;

دقت کنید که چگونه سه متغیر نام روی یک خط داریم. اگر متغیرها از یک نوع باشند، شما می توانید این کار را در جاوا انجام دهید (برای مورد ما نوع int). بنابراین نام هر متغیر با کاما (ویرگول) جدا می شود.

بنابراین می توانیم در متغیرهای جدید چیزی اضافه کنیم:

first_number = 10;

second_number = 20;

answer = first_number + second_number;

برای متغیر پاسخ، می خواهیم اولین عدد را به دومین عدد اضافه کنیم. جمع کردن با علامت به اضافه ( + ) انجام می شود. بنابراین Java مقادیر را در first_number و second_number به یکدیگر اضافه می کند. وقتی این کار تمام شد، مجموع را در متغیر واقع در سمت راست تساوی ذخیره می کند. بنابراین به جای اختصاص دادن 10 یا 20 به نام متغیر، عمل جمع را انجام خواهد داد و سپس اختصاص می دهد. در موردی که واضح نیست، اتفاقی مانند زیر رخ خواهد داد:

 

 

مورد بالا سازگار با این مورد می باشد:

answer = 10 + 20;

اما جاوا تقریبا می داند که در داخل دو متغیر first_number و second_number چه چیزی وجود دارد، بنابراین شما می توانید فقط از نام ها استفاده کنید.

اکنون متد println خود را مانند زیر تغییر دهید:

System.out.println("Addition Total = " + answer );

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

 

 

 

 

 

بنابراین برنامه ی ما موارد زیر را انجام داده است:

یک عدد ذخیره کرده است. یک عدد دوم ذخیره کرده است. این دو عدد را با یکدیگر جمع کرده است. نتیجه ی جمع را در یک متغیر سوم ذخیره کرده است. نتیجه را چاپ کرده است. شما مستقیما نیز می توانید از اعداد استفاده کنید. خط پاسخ را مانند زیر تغییر دهید: answer = first_number + second_number + 12; برنامه ی خود را مجددا اجرا کنید. چه چیزی چاپ شده است؟ همان موردی است که انتظار داشتید؟ می توانید اعداد کاملا بزرگی در متغیر نوع int ذخیره کنید. حداکثر مقدار 2147483647 می باشد. اگر یک عدد منفی مورد نظر شماست، کمترین مقداری که می توانید داشته باشید -2147483648 می باشد. اگر اعداد بزرگتر و یا کوچکتر می خواهید، می توانید از متغیر عددی دیگری استفاده کنید: double ، که آنها را در بخش بعدی مورد بررسی قرار می دهیم.

پایان بخش دوم آموزش برنامه نویسی JAVA

این آموزش ادامه دارد



آموزش جاوا-آموزش متغیر String

۱۳۷ بازديد
سلام با قسمت چهارم آموزش جاوا JAVA در خدمت شما عزیزان هستم
در قسمت قبل از آموزش تصویری برنامه نویسی جاوا با متغیر Double و اولویت عمگرها آشنا شدیم
حال با ادامه آموزش جاوا همراه باشید:
آموزش متغیر String در جاوا
همانند ذخیره ی مقادیر عددی، متغیرها می توانند متن را در خود حفظ کنند. شما میتوانید تنها یک کاراکتر یا چندید کاراکتر را ذخیره کنید. برای ذخیره ی تنها یک کاراکتر، متغیر char استفاده می شود. گرچه معمولا تمایل دارید بیشتر از یک کاراکتر را ذخیره کنید. برای انجام این کار نیاز به متغیر نوع رشته ای دارید.
حال یک برنامه در محیط NetBeans می نویسیم , البته شما می تونید همین کد ها را در محیط IntelliJ IDEA
که در قسمت اول آموزش دیدید اجرا کنید

 

با کلیک کردن بر روی File > New Project از نوار منو در بالای NetBeans، یک پروژه ی جدید را آغاز کنید. وقتی دیالوگ باکس New Project ظاهر می شود، اطمینان حاصل کنید که آموزش Java و Java Application انتخاب شده اند:
 
روی Next کلیک کرده و StringVars را با عنوان نام پروژه تایپ کنید. اطمینان حاصل کنید که در قسمت Create Main Class یک تیک وجود دارد. سپس Main را پس از stringvars حذف کرده و در عوض StringVariables را تایپ کنید، مانند تصویر زیر:
 
بنابراین نام پروژه StringVars است و نام گروه نیز StringVariables می باشد. روی دکمه ی Finish کلیک کنید، پنجره ی برنامه نویسی شما مانند تصویر زیر خواهد بود ( ما تمام کامنت های پیش فرض را حذف کرده ایم.) دقت داشته باشید که تمام حروف مربوط به نام پوشه با حروف کوچک نوشته شده اند(stringvars)، اما نام پروژه StringVars می باشد.
 
برای برقراری یک متغیر string ، لغت String را تایپ کنید که پس از آن نام متغیر قرار می گیرد. توجه داشته باشید که در لغت String حرف S بزرگ نوشته شده است. مجددا خط با یک نقطه ویرگول به پایان می رسد:
String first_name;
با تایپ کردن یک علامت تساوی، یک مقدار جدید را به متغیر string خود اختصاص دهید. پس از علامت تساوی متنی را که می خواهید ذخیره کنید، بین دو علامت نقل قول (") قرار می گیرد:
first_name = "William";
اگر ترجیح می دهید، می توانید تمام آن را در یک خط داشته باشید:
String first_name = "William";
متغیر دوم string را برقرار کنید تا یک نام یا نام خانوادگی را حفظ کنید:
String family_name = "Shakespeare";
برای اینکه هر دو نام را چاپ کنید، println( ) زیر را اضافه کنید:
System.out.println( first_name + " " + family_name );
در بین آکولادهای println عبارت زیر را داریم:
first_name + " " + family_name
هر آنچه در متغیر به نام first_name وجود دارد، نسخه ی چاپی (print out) می نامیم. پس از آن یک علامت به علاوه وجود دارد که با یک فاصله دنبال می شود. این فاصله بین علامت های نقل قول احاطه شده است. به این روش جاوا در می یابد که ما قصد چاپ یک کاراکتر فاصله (space character) را داریم. پس از فاصله یک علامت به علاوه ی دیگر وجود دارد که با متغیر family_name دنبال می شود.
 
گرچه این مسئله کمی گیج کننده به نظر می رسد، اما ما فقط در حال چاپ یک نام، یک فاصله و سپس نام خانوادگی هستیم. پنجره ی برنامه نویسی شما باید مانند تصویر زیر به نظر برسد:
برنامه ی خود را اجرا کنید و پس از آن در پنجره ی Output تصویر زیر مشاهده خواهید کرد:
 
 
اگر شما در حال ذخیره ی تنها یک کاراکتر مجزا هستید، متغیر مورد نیاز شما char ( با حرف کوچک) می باشد. برای ذخیره ی کاراکتر از علامت نقل قول (‘) به جای (“) استفاده می کنید. در اینجا مجددا برنامه را مشاهده می کنید، اما این بار با متغیر char:
اگر سعی کنید یک متغیر char را با علامت نقل قول جفت (“) ذخیره کنید، NetBeans زیر کد ناسازگار با قرمز خط خواهد کشید و خطای نوع ناسازگار (incompatible type) ارائه خواهد داد. به هرحال شما می توانید یک متغیر String تنها با یک کاراکتر مجزا داشته باشید. اما به علامت نقل قول دوگانه (“) نیاز دارید. بنابراین این مورد درست می باشد:
String first_name = "W";
اما مورد زیر درست نمی باشد:
String first_name = 'W';
ورژن دوم دارای یک علامت نقل قول مجزا می باشد، در حالیکه مورد اول دارای علامت نقل قول دوگانه (“) می باشد.
موارد بیشتری در مورد string ها وجود دارد و بعدها مجددا آنها را مشاهده خواهید کرد. اکنون اجازه دهید ادامه داده و چند ورودی از یوزر دریافت کنیم.
آموزش دریافت ورودی از کاربر
یکی از نقاط قوت Java، وجود کتابخانه های عظیمی از کدهای موجود برای شما می باشد. برای انجام کارهای خاص کدهایی نوشته شده است. تمام آنچه باید انجام دهید ارجاع به کتابخانه ی مورد نظر و سپس فراخوانی متد می باشد. گروه واقعا مفیدی که ورودی یک یوزر را کنترل می کند، گروه Scanner نامیده می شود. این گروه در کتابخانه ی java.util یافت می شود. برای استفاده از گروه Scanner لازم است به آن گروه در کد خود ارجاع کنید. این کار با لغت کلیدی import انجام می شود.
import java.util.Scanner;
عبارت import لازم است بالای عبارت عبارت Class قرار بگیرد.
import java.util.Scanner;
public class StringVariables {
}
این عبارت به جاوا می گوید که می خواهید از یک گروه خاص در یک کتابخانه ی خاص استفاده کنید – گروه Scanner که در java.util واقع شده است.

 

کار دیگری که باید انجام دهید ایجاد یک آبجکت از گروه Scanner می باشد. (یک گروه در واقع دسته ای از کدهاست. این کد تا زمانیکه یک آبجکت جدید از آن ایجاد نکنید، کاری انجام نمی دهد.)
برای ایجاد یک آبجکت Scanner جدید، کد مورد نیاز را در زیر مشاهده می کنید:
Scanner user_input = new Scanner( System.in );
عبارت import لازم است بالای عبارت عبارت Class قرار بگیرد.
import java.util.Scanner;
public class StringVariables {
}
این عبارت به جاوا می گوید که می خواهید از یک گروه خاص در یک کتابخانه ی خاص استفاده کنید – گروه Scanner که در java.util واقع شده است.
کار دیگری که باید انجام دهید ایجاد یک آبجکت از گروه Scanner می باشد. (یک گروه در واقع دسته ای از کدهاست. این کد تا زمانیکه یک آبجکت جدید از آن ایجاد نکنید، کاری انجام نمی دهد.)
برای ایجاد یک آبجکت Scanner جدید، کد مورد نیاز را در زیر مشاهده می کنید:
Scanner user_input = new Scanner( System.in );
بنابراین به جای متغیر int یا یک متغیر String ، در حال تنظیم یک متغیر Scanner می باشیم، که مورد ما user_input نامیده می شود. پس از یک علامت تساوی لغت کلیدی new را داریم که برای ایجاد آبجکت های جدید از یک گروه استفاده می شود. آبجکتی که در حال ایجاد آن هستیم از گروه Scanner می باشد. در بین آکولادها باید به جاوا اعلام کنید که از System Input (System.in) خواهد بود.
برای گرفتن ورودی یوزر، می توانید یکی از چندین متد موجود را در آبجکت جدید Scanner وارد عمل کنید. یکی از این متدها next نامیده می شود. این متد رشته ی بعدی متن را که یک یوزر روی صفحه کلید تایپ می کند، دریافت می کند:
String first_name;
first_name = user_input.next( );
بنابراین پس از آبجکت user_input یک نقطه تایپ می کنیم. سپس لیستی از متدهای موجود مشاهده خواهید کرد. روی next دابل کلیک کنید و سپس در انتهای خط یک نقطه ویرگول تایپ کنید. برای به جلو بردن یوزر می توانیم متن نیز تایپ کنیم:
String first_name;
System.out.print("Enter your first name: ");
first_name = user_input.next( );
دقت داشته باشید که مانند قبل از print به جای println استفاده می کنیم. تفاوت بین این دو این است که println پس از خورجی مکان نما را به یک خط جدید حرکت می دهد، اما print روی همان خط می ماند.
یک پیشروی برای نام خانوادگی نیز وارد می کنیم:
String family_name;
System.out.print("Enter your family name: ");
family_name = user_input.next( );
این همان کد است به جز اینکه اکنون جاوا هرآنچه را یوزر در قسمت متغیر family_name به جای متغیر first_name تایپ می کند، ذخیره می کند.
برای چاپ ورودی می توانیم مورد زیر را اضافه کنیم:
String full_name;
full_name = first_name + " " + family_name;
System.out.println("You are " + full_name);
یک متغیر String دیگر با عنوان full_name تنظیم می کنیم و هر آنچه در متغیرهای first_name و family_name است را ذخیره می کنیم. در بین این دو یک فاصله قرار می دهیم. خط آخر همه ی آن را در پنجره ی Output چاپ خواهد کرد.
بنابراین کد خود را طوری تطبیق دهید تا با تصویر بعدی هماهنگی داشته باشد:
 
برنامه ی خود را اجرا کنید تا اینکه پنجره ی Output تصویر زیر را نمایش دهد:
 
اکنون جاوا متوقف شده تا اینکه در صفحه کلید چیزی وارد کنید، و تا زمانیکه دکمه ی Enter صفحه کلید را فشار ندهید، پیشرفتی رخ نخواهد داد. بنابراین بعداز "Enter your first name:" را کلیک چپ کنید، مشاهده خواهید کرد که مکان نمای شما محو خواهد شد. یک نام تایپ کنید و سپس دکمه ی enter را فشار دهید.
پس از فشردن دکمه ی enter، جاوا هر آنچه را که در سمت چپ علامت تساوی در متغیر نام تایپ و ذخیره شده، خواهد گرفت. در مورد ما این متغیر first_name نامیده می شد.
سپس برنامه وارد خط بعدی کد می شود:
 
یک نام خانوادگی تایپ کرده و سپس مجددا دکمه ی Enter را فشار دهید:
 
اکنون ورودی یوزر به پایان رسیده است و بقیه ی برنامه اجرا می شود. این خروجی هردو نام می باشد. نتیجه ی نهایی باید مشابه تصویر زیر باشد:
 
بنابراین ما از گروه Scanner برای گرفتن ورودی از یک یوزر استفاده می کنیم. هر آنچه تایپ شد در متغیرها ذخیره شد. نتیجه نیز در پنجره ی Output چاپ شد. در بخش بعدی نگاه کوتاهی به Option Panes خواهیم داشت.
پایان قسمت چهارم آموزش جاوا
دوره آموزش برنامه نویسی JAVA ادامه دارد
 


آموزش جاوا

۱۲۷ بازديد

آموزش جاوا

آموزش جاواآموزش جاوا

 

 

سلام با قسمت اول آموزش جاوا JAVA در خدمت شما عزیزان هستم

در این قسمت از آموزش برنامه نویسی جاوا با مفهوم جاوا آشنا میشویم و JDK و نرم افزار IntelliJ IDEA را فرا می گیرید و برنامه ای اجرا می کنید

 

آموزش Java یک سکوی مستقل می باشد و این به این معناست که روی هر سیستم عاملی اجرا می شود. بنابراین چه کامپیوتر شما Windows، Linuxیا Mac OSرا اجرا می کند، همه ی اینها در جاوا یکی است. دلیل اینکه می تواند روی هر سیستم عاملی اجرا شود به علت ماشین مجازی جاوا (Java Virtual Machine) می باشد. ماشین مجازی برنامه ای است که تمام کد شما را به درستی پردازش می کند. بنابراین لازم است که قبل از اجرای هر کد جاوا، این برنامه را (ماشین مجازی) نصب کنید.

جاوا متعلق به شرکتی به نام Sun Microsystems می باشد، بنابراین لازم است برای گرفتن ماشین مجازی جاوا، که به عنوان Java Runtime Environment (JRE) نیز شناخته می شود، وارد وب سایت Sun شوید. ابتدا این صفحه را امتحان کنید.

http://java.com/en/download/index.jsp

شما می توانید با کلیک کردن بر روی لینک "Do I have Java?" چک کنید که آیا JRE را سیستم خود دارید یا نه. این لینک را می توانید زیر دکمه ی Download در بالای صفحه پیدا کنید (مگر اینکه Sun جای موارد را عوض کرده باشد.) وقتی که روی لینک کلیک می کنید، کامپیوتر شما برای JRE اسکن خواهد شد. سپس به شما گفته می شود که این برنامه را دارید یا نه. اگر نداشته باشید، فرصت دانلود و نصب آن به شما داده می شود.

یا اینکه می توانید لینک زیر را بررسی کنید. http://java.com/en/download/manual.jsp

(دستی) "manual" در لینک های بالا به معنای دانلود دستی ("manual download") می باشد. صفحه به شما لینک های دانلود و دستور هایی برای سیستم عامل های مختلف ارائه می دهد.

پس از دانلود و نصب، لازم است کامپیوتر خود را ریست کنید. پس از انجام این کار شما برنامه ی Java Virtual Machine را خواهید داشت.

آموزش جاوا

در این مرحله هنوز نمی توانید برنامه ای بنویسید. تنها کاری که انجام داده اید، نصب نرم افزار است، بنابراین برنامه های جاوا روی کامپیوتر شما اجرا خواهند شد. برای نوشتن کد و امتحان کردن آن به نرم افزاری به نام Software Development kit احتیاج دارید.

موردی که ما قصد استفاده از آن را داریم Java SE نامیده می شود. (SE مخفف Standard Edition می باشد، ویرایش استاندارد). روی لینک و سپس روی "Java SE (JDK) 13 Download" کلیک کنید.

روی لینک Download کلیک کنید تا باز هم صفحه ی دیگری باز شود. در این صفحه در مورد سیستم عامل از شما سوال می پرسد. روی Continue کلیک کنید تا در نهایت دانلود مورد نظر را دریافت کنید.

یک پیام هشدار، گرچه – این دانلود در هنگام نگارش بزرگ خواهد بود، بیشتر از 160 مگابایت! هنگامی که JDK را دانلود کردید، آن را روی سیستم خود نصب کنید.

نرم افزار IntelliJ IDEA:

نرم افزار IntelliJ IDEA محصول شرکت JetBrains بوده و برای برنامه نویسان جاوا و توسعه آن طراحی و تولید شده است. این نرم افزار دارای محیطی کاربر پسند بوده و تمامی امکانات یک برنامه نویس حرفه ای را فراهم می آورد. کد نویسی سریع، پشتیبانی از انواع فریمورک های پر کاربرد ویژگی هایی هستند که IDEA را به نرم افزار محبوب برنامه نویسان جاوا تبدیل کرده است

برنامه ای قابل اعتماد برای تولید نرم افزار (IDE) ویژه زبان جاوا است که از HTML / XHTML, XML / XSL, CSS, Ruby, و javascript و همچنین مدرن ترین فناوری‌ها و چارچوب‌های مهم مانند Spring و Hibernate پشتیبانی می کند. درحقیقت IDEA IntelliJ بر روی بهره وری و کارایی توسعه دهندگان تمرکز کرده است و مجموعه ی کاملی از ابزارها را فراهم کرده است و با مدرن ترین فن آوری ها و چارچوب ها از جمله جاوا، اسکالا، Groovy و دیگر زبان های برنامه نویسی یکپارچه شده است. این نرم افزار دارای یک رابط کاربری بسیار آسان و کاربرپسند است و از ساختارهای Rails و GWT نیز پشتیبانی می کند.

در صفحه IntelliJ IDEA را با توجه به سیستم عامل خود می توانید دانلود کنید

حال روی فایل exe کلیک کنید تا پنجره زیر باز شود

مسیری از قسمت هارد که می خواهید نرم افزار را نصب کنید انتخاب کنید

در این قسمت فایلهایی که به IntelliJ می خواهید ارتباط داشته باشد انتخاب کنید

سپس جعبه چک را انتخاب کنید و نصب را به اتمام برسانید

اگه از قبل فایل از برنامه را نداشتید پیش فرض انتخاب شده برای وارد کردن را انتخاب نکنید

روی" Remaining and Set Defaults" کلیک کنید

در پایان اگه هشداری در مورد دسترسی به Firewall دیدید , اجازه را بدهید

 

دوره آموزش جاوا

 

هنگامی که برای اولین بار IntelliJ IDEA را اجرا کردید ، یا بعد از اینکه آن را از نسخه قبلی به روزرسانی کردید ،برای شخصی سازی نمونه خود و شروع به کار با IDE و تکمیل نصب برخی مراحل لازم است

آموزش تصویری زیر شما را در طی مراحل زیر راهنمایی می کند:

تنظیمات IntelliJ IDEA را وارد کنید

در گفتگوی کامل نصب ، آیا می خواهید تنظیمات IDE را وارد کنید ، انتخاب کنید:

اگر این اولین نمونه از IntelliJ IDEA است ، گزینه Do not import settings را انتخاب کنید.

می توانید تنظیمات را در مرحله بعد با استفاده از File | به صورت دستی صادر و وارد کنید وارد کردن تنظیمات و پرونده | دستورات تنظیمات را از منوی اصلی صادر کنید.

موضوع رابط کاربری را انتخاب کنید

آیا می خواهید از تم پیش فرض Darcula یا Light استفاده کنید.

افزونه های غیر ضروری را غیرفعال کنید

نرم افزار IntelliJ IDEA شامل افزونه هایی است که با سیستم های کنترل نسخه مختلف و سرورهای برنامه ، یکپارچه سازی می کنند ، پشتیبانی از چارچوب های مختلف و فن آوری های توسعه و غیره را فراهم می کنند. برای افزایش کارایی ، می توانید افزونه هایی را که لازم ندارید غیرفعال کنید. در صورت لزوم ، می توانید بعداً آنها را در گفتگوی تنظیمات / تنظیمات Ctrl + Alt + S تحت افزونه ها فعال کنید. برای اطلاعات بیشتر ، به مدیریت افزونه ها مراجعه کنید.

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

افزونه های اضافی را بارگیری و نصب کنید

در صورت لزوم ، افزونه های اضافی که با IDE در دسترس نیستند از مخازن پلاگین های IntelliJ IDEA بارگیری و نصب کنید.

شروع یک پروژه در IntelliJ IDEA

در صفحه خوش آمدید ، می توانید موارد زیر را انجام دهید:

ایجاد یک پروژه جدید

وارد کردن یک پروژه

یک پروژه یا پرونده موجود را باز کنید

یک پروژه موجود را از یک سیستم کنترل نسخه بررسی کنید

همچنین می توانید یک دایرکتوری پروژه موجود یا یک پرونده جداگانه به صفحه خوش آمدید بکشید ، و آن را در IntelliJ IDEA باز کنید.

نمای کلی محیط نرم افزار IntelliJ IDEA

هنگامی که یک پروژه را در IntelliJ IDEA افتتاح می کنید ، رابط کاربری پیش فرض به شرح زیر است:

بسته به مجموعه افزونه ها و تنظیمات پیکربندی ، ممکن است IDE شما متفاوت رفتار کند.

از ویرایشگر برای خواندن و نوشتن کد استفاده کنید

نوار پیمایش در بالا یک جایگزین سریع برای پنجره ابزار Project است که در آن می توانید ساختار پروژه خود را حرکت داده و پرونده ها را برای ویرایش باز کنید.

ویندوزTool windows ابزار عملکردی را فراهم می کند که مکمل کد ویرایش است. به عنوان مثال ، پنجره ابزار Project ساختار پروژه خود را به شما نشان می دهد و پنجره ابزار Run خروجی برنامه خود را هنگام اجرای آن نمایش می دهد.

در Context menus برای دیدن اقدامات موجود در متن فعلی می توانید بر روی عناصر مختلف رابط کلیک راست کنید. به عنوان مثال ، برای انجام اقدامات مربوط به آن پرونده ، بر روی یک فایل در پنجره ابزار Project کلیک راست کنید ، یا با کلیک راست در ویرایشگر ، اقدامات مربوط به قطعه کد فعلی را مشاهده کنید.

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

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

در Popup menus فهرستهای بازشو امکان دسترسی سریع برای اقدامات مربوط به متن فعلی را فراهم می کنند. به عنوان مثال ، Alt + Insert را در ویرایشگر فشار دهید تا پنجره Generate برای تولید ساختارهای کد بر اساس متن باز شود. با فشار دادن Alt + Insert در پنجره ابزار Project ، پنجره جدید برای افزودن پرونده ها و فهرست های جدید به پروژه شما باز می شود.

با استفاده از لیست های سریع اقداماتی که اغلب از آنها استفاده می کنید ، می توانید منوهای سفارشی ایجاد کنید. به عنوان مثال ، می توانید Ctrl + Shift + Alt + T را فشار دهید تا Refactor این پنجره با یک لیست سریع از پیش تعریف شده از اقدامات مربوط به refactoring باز شود.

اولین برنامه جاوا خود را ایجاد کنید

آموزش برنامه نویسی جاوا

در این آموزش یاد می گیرید که چگونه یک برنامه جاوا ساده را چاپ کنید که Hello ، World چاپ می کند ، اجرا و بسته بندی می شود! به خروجی سیستم در طول راه با کمک کدگذاری و ابزارهای تکمیلی، شما با ویژگی های IntelliJ IDEA برای تقویت بهره وری خود به عنوان یک توسعه دهنده آشنا می شوید

ایجاد یک پروژه جدید

جی دی کی JDK را نصب کنید

برای توسعه برنامه های جاوا در IntelliJ IDEA ، به Java SDK (JDK) نیاز دارید. اگر جاوا روی رایانه شما نصب نشده است ، باید یک بسته JDK را بارگیری کنید.

وب سایت jdk.java.net را باز کنید.

در آنجا ، بایگانی های OpenJDK اوراکل برای ویندوز ، MacOS و لینوکس به عنوان بایگانی .tar.gz و .zip پیدا خواهید کرد.

نسخه JDK لازم را انتخاب و بارگیری کنید.

اگر مطمئن نیستید به کدام نسخه نیاز دارید ، آخرین نسخه پایدار را انتخاب کنید.

بایگانی را از حالت فشرده خارج کرده و پوشه را با Java در فهرست خانه جاوا در رایانه خود قرار دهید.

مسیر پیش فرض در ویندوز: C: File Files Java ، در macOS: / Library / Java / JavaVirtualMachines.

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

یک پروژه جاوا جدید ایجاد کنید

در IntelliJ IDEA ، یک پروژه به شما کمک می کند تا کد منبع ، آزمایش ها ، کتابخانه هایی که استفاده می کنید ، دستورالعمل ها و تنظیمات شخصی خود را در یک واحد سازماندهی کنید.

راه اندازی IntelliJ IDEA.

اگر صفحه خوش آمدید باز شد ، روی ایجاد پروژه جدید کلیک کنید.

در غیر این صورت ، از منوی اصلی File (پرونده) را انتخاب کنید جدید | پروژه

در جادوگر پروژه جدید ، از لیست در سمت چپ جاوا را انتخاب کنید

از لیست SDK Project ، JDK را که می خواهید در پروژه خود استفاده کنید انتخاب کنید.

اگر لیست خالی است ، روی New کلیک کنید و مسیر مسیر فهرست اصلی Java را مشخص کنید (به عنوان مثال jdk-11.0.0.jdk).

ما نمی خواهیم از این کتابخانه یا چارچوب های اضافی برای این آموزش استفاده کنیم ، بنابراین بر روی Next کلیک کنید.

پروژه ای از قالب ایجاد نکنید. در این آموزش قصد داریم همه کارها را از ابتدا انجام دهیم ، بنابراین بر روی Next کلیک کنید.

پروژه را نامگذاری کنید ، به عنوان مثال: HelloWorld.

در صورت لزوم ، مکان پیش فرض پروژه را تغییر داده و گزینه Finish را بزنید.

 

یک پکیج و یک کلاس ایجاد کنید


بسته ها برای گروه بندی کلاس هایی که به همان دسته تعلق دارند یا عملکردهای مشابهی ارائه می دهند ، برای ساختار دهی و سازماندهی برنامه های بزرگ با صدها کلاس استفاده می شود.
در پنجره ابزار Project ، پوشه src را انتخاب کنید ، Alt + Insert را فشار دهید و Java Class را انتخاب کنید.
در قسمت Name ، com.example.helloworld.HelloWorld را تایپ کرده و OK را بزنید.

نرم افزار IntelliJ IDEA بسته com.example.helloworld و کلاس HelloWorld را ایجاد می کند.
در جاوا ، یک کنوانسیون نامگذاری وجود دارد که هنگام نامگذاری بسته ها و کلاس ها ، باید از آن پیروی کنید.

همراه با پرونده ، IntelliJ IDEA بطور خودکار مطالب را برای کلاس شما تولید کرده است. در این حالت ، IDE عبارت بسته و بیانیه کلاس را درج کرده است.

این کار با استفاده از قالب های پرونده انجام می شود. بسته به نوع فایلی که ایجاد می کنید ، IDE کد و فرمت اولیه ای را که انتظار می رود در کلیه پرونده های آن نوع باشد وارد می کند.

کد را بنویسید:

متد main() را با استفاده از قالبهای زنده اضافه کنید

نگهدارنده را در رشته اعلامیه کلاس پس از براکت باز Place قرار دهید و Shift + Enter را فشار دهید.

برخلاف Enter ، Shift + Enter خط جدیدی را بدون شکستن خط فعلی شروع می کند.

متد main را تایپ کنید و الگویی را که در آن بیانیه اصلی () اعلام شده است ، انتخاب کنید.

همانطور که تایپ می کنید ، IntelliJ IDEA سازه های مختلفی را پیشنهاد می کند که می توانند در متن فعلی مورد استفاده قرار گیرند. با استفاده از Ctrl + J می توانید لیست الگوهای زنده موجود را مشاهده کنید.

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

با استفاده از متد println() کد را تکمیل کنید

پس از اعلام main(), نرم افزار IntelliJ IDEAبطور خودکار هشتک را در خط بعدی قرار می دهد. بیایید روشی را بنویسیم که مقداری متن را به خروجی سیستم استاندارد چاپ کند.

حرف Sy را تایپ کرده و کلاس System را از لیست پیشنهادات تکمیل کد (از بسته استاندارد java.lang) انتخاب کنید.دکمه. Ctrl + برای قرار دادن انتخاب با یک کاما دنباله دار فشار دهید.

حرف o را تایپ کنید ، Ctrl + را انتخاب کنید و از نو فشار دهید.

حرف p را تایپ کنید ، متد println (String x) را انتخاب کنید و Enter را فشار دهید.

نرم افزار IntelliJ IDEA انواع پارامترهایی را می توان در شرایط فعلی مورد استفاده قرار داد. این اطلاعات برای مرجع شماست.

حرف Type ". دومین علامت نقل قول به صورت خودکار وارد می شود و هشتک بین علامت نقل قول قرار می گیرد.

تایپ کنید Hello, World!

تکمیل کد پایه ، زمینه پیرامون موقعیت فعلی هشتک را تجزیه و تحلیل می کند و همانطور که تایپ می کند ، پیشنهاداتی ارائه می دهد. با فشار دادن Ctrl + Space می توانید لیست تکمیل را به صورت دستی باز کنید.


آموزش java

برنامه را بسازید و اجرا کنید

کلاس های معتبر جاوا را می توان به بایت کد کامپایل کرد. می توانید کلاسها را با main() از ویرایشگر با استفاده از ایکون فلش سبز ، کامپایل و اجرا کنید.

بر روی دکمه Run (حذف) کلیک کرده و گزینه Run "HelloWorld.main ()" را در پنجره انتخاب کنید. IDE شروع به کامپایل کردن کد شما می کند.

پس از اتمام تدوین ، پنجره Run tool در انتهای صفحه باز می شود.

خط اول فرمانی را که IntelliJ IDEA برای اجرای کلاس کامپایل شده از آن استفاده می کند ، نشان می دهد. خط دوم خروجی برنامه را نشان می دهد: Hello, World! و آخرین خط کد خروجی 0 را نشان می دهد ، که نشان می دهد که آن با موفقیت خارج شد.

اگر می خواهید پنجره Run tool را باز کنید ، Alt + 4 را فشار دهید.

وقتی روی Run کلیک می کنید ، IntelliJ IDEA یک پیکربندی اجرای خاص ایجاد می کند که یک سری اقدامات را انجام می دهد. ابتدا برنامه شما را می سازد. در این مرحله ، javac کد منبع شما را در بایت کد JVM وارد می کند.

تنظیمات اجرای خودکار ایجاد شده موقت هستند ، اما شما می توانید آنها را اصلاح و ذخیره کنید.

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

پس از آن JVM کد بایت را اجرا می کند.

برنامه را در JAR پکیج کنید:

پس از تهیه کد ، می توانید برنامه خود را در بایگانی جاوا (JAR) بسته بندی کنید تا بتوانید آن را با سایر توسعه دهندگان به اشتراک بگذارید. بایگانی ساخته شده artifact نامیده میشود.
برای JAR یک Artifacts ایجاد کنید

از منوی اصلی File (Project Structure) را انتخاب کنید Project Structure Ctrl + Shift + Alt + S را بزنید و Artifacts را کلیک کنید.

بر روی دکمه افزودن کلیک کنید ، به JAR اشاره کرده و From modules with dependencies انتخاب کنید.

در سمت راست قسمت Main Class ، بر روی دکمه Browse کلیک کنید و در گفتگوی باز شده ، HelloWorld (com.example.helloworld) را انتخاب کنید.

نرم افزار Artifacts را ایجاد می کند و تنظیمات آن را در قسمت سمت راست گفتگویProject Structure نشان می دهد.

تغییرات را اعمال کنید و گفتگو dialog را ببندید.

در JAR artifact را بسازید

از منوی اصلی گزینه Build | را انتخاب کنید artifact را بسازید.

به HelloWorld اشاره کنید: jar و Build را انتخاب کنید.

اگر اکنون پوشه out / artifacts را جستجو کنید ، JAR خود را در آنجا پیدا خواهید کرد.


برنامه پکیج شده را اجرا کنید

برای اینکه مطمئن شوید artifacts JAR به درستی ایجاد شده است ، می توانید آن را اجرا کنید.
برای برنامه پکیج شده ، یک پیکربندی اجرا ایجاد کنید

برای اجرای یک برنامه جاوا بسته بندی شده در JAR ، IntelliJ IDEA به شما امکان می دهد یک پیکربندی اختصاصی اجرا کنید.

دکمه های Ctrl + Shift + A را فشار دهید ، عملکرد ویرایش تنظیمات را پیدا کنید و اجرا کنید.

در گفتگوی Run / Debug Configurationations ، روی دکمه Add کلیک کرده و JAR Application را انتخاب کنید.

پیکربندی جدید را نامگذاری کنید: HelloWorldJar.

در قسمت Path to JAR ، بر روی دکمه Browse کلیک کرده و مسیر فایل JAR را در رایانه خود مشخص کنید.

در قسمت قبل از راه‌اندازی ، روی دکمه افزودن کلیک کنید ، گزینه Build Artifacts | را انتخاب کنید HelloWorld: jar در محاوره ای که باز می شود.

انجام این کار بدان معنی است که HelloWorld.jar هر بار که این پیکربندی را اجرا کنید ، بصورت خودکار ساخته می شود.

تنظیمات به شما امکان می دهد چگونه می خواهید برنامه خود را اجرا کنید ، و چه استدلال ها و گزینه هایی انتخاب کنید. برای چندین برنامه می توانید تنظیمات چندگانه اجرا داشته باشید که هرکدام دارای تنظیمات خاص خود هستند.

پیکربندی اجرا را اجرا کنید

در نوار ابزار toolbar، پیکربندی HelloWorldJar را انتخاب کرده و بر روی دکمه Run در سمت راست selector پیکربندی run کلیک کنید. روش دیگر ، اگر میانبرها را ترجیح می دهید ، Shift + F10 را فشار دهید.

مانند گذشته ، پنجره Run tool باز می شود و خروجی برنامه را به شما نشان می دهد.

این فرآیند با موفقیت اجرا شد ، به این معنی که برنامه به درستی پکیج شده است.

پایان قسمت اول آموزش برنامه نویسی JAVA

این آموزش ادامه دارد

 

 



آموزش سی شارپ

۱۴۵ بازديد

معرفی آموزش زبان C#

آموزش سی شارپ

به بخش جدید آموزش C# خوش آمدید. همزمان با معرفی چهارچوب کلری .NET ، مایکروسافت یک زبان برنامه نویسی جدید به نام C# که د ر اصطلاح سی شارپ خوانده می شود را به آن اضافه کرد.

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

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

راهنمایی برای دوره آموزش C# :

C# یک زبان برنامه نویسی شی گرا یا Oriented بوده و در آن امکان استفاده از متغیرها یا تابع سراسری یا Globol وجود ندارد. در C همه چیز در کلاس ها (closes) قرار می گیرند، حتی ساده ترین انواع داده ای مثل int یا String که از کلاس System.object مشتق شده اند.

آموزش#C

معرفی ابزار و آموزش کار با Visual C# Express:

دستورات زبان C# را می توانید با هر نوع ادیتور متنی مثل Windows Notepad نوشته و سپس به وسیله برنامه CSC.exe که کامپایلر خطی دستورات C# بوده و همراه با چهارچوب کاری .NET بر روی سیستم نصب می شود، کامپایل و اجرا نمایید.

اما اکثر افراد ترجیح می دهند از یک IDE یا محیط توسعه یکپارچه (Integrated Development Envirment) استفاده کنند که مایکروسافت چندین برنامه را برای این منظور ارائه داده است. گل سرسبد این برنامه ها، Visual Studio است که قابلیت اجرای تمامی امکانات چهارچوب کاری .NET را دارا می باشد. این برنامه بسیار پیشرفته بوده و در نسخه های مختلفی ارائه شده است.

همزمان با ارائه نسخه 2 چهار چوب کاری .NET، مایکروسافت نسخه ای از ویژوال استودیو را به نام Express منتشر کرد که برای استفاده برنامه نویسان معمولی و کسانی که می خواهند چهارچوب کاری .NET را فرا بگیرند، مناسب است. نسخه Express فقط برای برنامه نویسی به زبان های C# و VB.NET طراحی شده و برخی از قابلیت های مهم و کاربردی ویژوال استودیو را شامل نمی شود. اما به هر حال ابزار رایگانی بوده و برای افراد تازه کار و معمولی بسیار مناسب است.

 

 راهنمایی :

برای برنامه نویسی به زبان C بایستی برنامه ویژوال C# اکسپرس را از آدرس https://visualstudio.microsoft.com/vs/express/ دانلود نموده و بر روی سیستم خود نصب نمایید. سپس آماده کد نویسی C# خواهید بود.

 

آموزش ساخت اولین برنامه C# با Hello word

اگر شما قبلا نیز اقدام به یادگیری یک زبان برنامه نویسی کرده باشید، حتما می دانید که اینگونه آموزش ها معمولا با یک برنامه ساده به نام “Hello word” شروع می شوند.

در این آموزش c# هم قصد داریم از این سنت قدیمی استفاده کنیم. برای این منظور برنامه Visual C# Express را اجرا کرده و مسیر منوی File - >New Project را طی کرده و گزینه Consule application را انتخاب نمایید. این ساده ترین نوع برنامه بر روی سیستم ویندوز است، اما نگران نباشید، ما خیلی اینجا نخواهیم ماند. پس از این که بر روی دکمه ok کلیک نمایید، برنامه Visual C# Express یک پروژه جدید را برای شما ایجاد می کند که حاوی یک فایل به نام Program.cs است.

این کار سرآغاز جایی است که هیجان کار شروع شده و کد آن بایستی به صورت زیر باشد :

using System;

using System.Collections.Generic;

using System.Text;

 

namespace ConsoleApplication1

{

   class Program

   {

       static void Main(string[] args)

       {

       }

   }

}

 

درواقع، مجموعه کدهای فوق هیچ کار خاصی را انجام نمی دهند، یا حداقل اینگونه به نظر می رسند.سعی کنید با زدن دکمه F5 برنامه را بر روی سیستم خود اجرا نمایید. این کار باعث می شود تا Visual C# Express برنامه شامل را کامپایل کرده و اجرا نماید. اما همانگونه که مشاهده می کنید، این کدها کار خاصی را انجام نداده و فقط یک پنجره مشکی رنگ ویندوز باز شده و سپس بسته می شود. این مسئله به این دلیل است که برنامه شما دارای کد خاصی نبوده و کار خاصی را انجام نمی دهد. در بخش بعدی، به بررسی این خطوط کدها به طور کامل خواهیم پرداخت اما الان قصد داریم تا از برنامه خود یک خروجی بگیریم. برای این منظور دو خط کد زیر را درون آخرین مجموعه {} کد برنامه قرار دهید.

;Console.WriteLine("Hello, world!")

;()Console.ReadLine

سپس کد کامل برنامه بایستی به صورت زیر تغییر کند :

 

;using System

;using System.Collections.Generic

;using System.Text

 

namespace ConsoleApplication1

{

   class Program

   {

       static void Main(string[] args)

       {

        ;   Console.WriteLine("Hello, world!")

           ;()Console.ReadLine

       }

   }

}

 

یک بار دیگر، جهت اجرای برنامه دکمه F5 را فشار دهید، این بار مشاهده خواهید کرد که پنجره سیاه برنامه باز شده و علاوه بر این که بلافاصله بسته نمی شود، بلکه یک پیام سلام “Hello word” را نیز به کاربر نشان می دهد. خب، ما دو خط کد به برنامه اضافه کردیم. اما این کدها در واقع چه کاری انجام می دهند؟

خط اول از کلاس Consale برای نمایش یک خط متن در خروجی استفاده کرده و خط دوم هم می تواند یک مقدار ورودی یا متن را از کاربر بخواند. اما چرا خواندن یا Read؟

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

دستور ReadLine Command به برنامه می گوید تا برای دریافت یک ورودی از کاربر صبر کند و همان طور که مشاهده می منید، شما می توانید یک متن را درون پنجره تایپ نمایید. پس از تایپ متن دلخواه، دکمه Enter را زده و پنجره برنامه را ببندید.

به شما تبریک می گوییم، اولین برنامه C# خود را ساخته و اجرا کردید. در بخش بعدی به تشریح کدهای نوشته شده و عملیات صورت گرفته خواهیم پرداخت.

آموزش C#

توضیح و آموزش ساخت برنامه Hello World در C#

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

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

بیایید با کوتاه ترین و پرکاربرد ترین کاراکترها در کد مثال خود شروع کنیم : کاراکترهای { و }. به این کاراکترها در اصطلاح براکت (curly braces) می گویند و در C ابتدا و انتهای هر بلوک کد را مشخص می کنند. براکت ها در بسیاری از زبان برنامه نویسی دیگر از جمله C++، جاوا، جاوا اسکریپت و ... نیز استفاده می شوند. همانطور که در مثال مشاهده کردید، براکت ها برای بسته بندی چندین خط کد که مرتبط به هم هستند، استفاده می شوند. در مثال های بعدی، با نحوه استفاده از براکت ها بیشتر آشنا خواهید شد.

اکنون بیایید از ابتدای کد شروع کنیم. قسمت Using ها :

;using System

;using System.Collections.Generic

;using System.Text

Using یک واژه کلیدی (keyword) است که توسط ادیتورکدها به رنگ آبی نشان داده می شود. واژه کلیدی Using یک namespace را به کد برنامه وارد می کند. Namespace مجموعه ای از کلاس ها هستند که با هم کار خاصی را انجام می دهند. در مثال Hello Word، سه namespace به برنامه اضافه شده اند که هر کدام کار خاصی را در کد برای ما انجام می دهند. برای مثال، ما از کلاس Consale Class که بخشی از System Namespace است برای چاپ مقدار متنی در خروجی استفاده می کنیم.

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

namespace ConsoleApplication1

اکنون namespace ConsaleAppliction1، به عنوان namespace اصلی (main) این برنامه بوده و شامل چندین کلاس خواهد بود. می توانید چندین namespace دیگر نیز که نیاز دارید را ایجاد کرده و در هر کدام کلاس های مورد نظر خود را قرار دهید. سپس همانند سایر namespace ها با استفاده از واژه کلیدی Using آن را به برنامه خود اضافه کنید.

در مرحله بعد، ما کلاس Closs مورد نظر خود را ایجاد می کنیم. از آن جا که C# یک زبان شی گرا Object-oriented است، مجموعه کدهای خاص را درون یک کلاس تعریف می کنیم. برای مثال، به وسیله کد زیر یک کلاس به نام Program را تعریف کرده ایم :

class Program

در هر برنامه به تعداد نیاز می توانید کلاس های مختلف تعریف کنید. اما در این مثال، ما فقط یک کلاس خواهیم داشت. هر کلاس می تواند شامل تعدادی متغیر (variable)، خواص (properties) و متدها (methods) باشد، مفهوم هایی که در درس های بعد به تشریح کامل آن ها خواهیم پرداخت. تنها چیزی که الان بایستی بدانید این است که کلاس Program فقط شامل یک متد (method) بوده که به صورت زیر تعریف شده است :

static void Main(string[] args)

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

کلمه اول static است. کلیدواژه یا (keyword) به نام static اعلام می کند که این کلاس بایستی بدون نیاز به نمونه سازی از آن قابل دسترس باشد، راجع به این مسئله در بخش Classes به طور کامل توضیخ می دهیم.

واژه کلیدی بعدی Void است که مشخص می کند آیا متد ما بایستی پس از اجرای کامل، مقداری را برگرداند یا خیر. مقدار برگشتی یک تابع می تواند برای مثال از نوع عددی int، متنی string و یا هیچ چیز (void) باشد. به کار بردن کلمه void در این مثال، به این معنی است که تابع ما هیچ مقداری را پس از اجرا باز نمی گرداند.

واژه کلیدی بعدی Main بوده که نام متد را تعیین می کند. متد Main تابع اصلی هر برنامه C# بوده و اولین قطعه کدی است که در برنامه اجرا می شود.

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

در پایان این درس بایستی درک کلی از برنامه های C# و نحوه کار آن ها پیدا کرده باشید.

دوره آموزش سی شارپ