من می خواهم برنامه نویس شوم - قسمت هشتم

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

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

برویم سراغ اولین مبحث یعنی متغیرها

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

این مطلب یک مرور است چون قبلا به آن اشاره شده، در زبان های برنامه نویسی متغیرها به شکل زیر دسته بندی می شوند (البته سعی بر خلاصه سازی و توضیح نکات مهم است نه کامل - تعداد متغیرها بیشتر است)

  • کاراکتر (Char): یک متغیر تک حرفی (می تواند یک عدد تک رقمی یا یک علامت هم باشد)
  • رشته (string) : متغیرهایی از نوع حروف و کلمات یا ترکیب حروف و اعداد. یک حرف یا یک جمله یا حتی اعداد بصورتی که نگاه محاسباتی به آن نداشته باشید مثلا نام پلاک که می تواند ۱۴ باشد. همواره متغیر رشته بین دو علامت تک کوتیشن ‘ و یا دابل کوتیشن “ قرار خواهد گرفت. (در برخی زبان ها از ' برای کاراکتر ها و از " برای رشته ها استفاده می شود - در برخی زبان ها مانند php هردو قابل استفاده است)
  • عدد صحیح (integer) یا (int) : اعداد مثبت و منفی و بدون اعشار را شامل می شوند
  • عدد اعشاری (float) و (double) : اعداد مثبت و منفی بصورت اعشاری البته double برای اعداد بسیار بزرگ است.
  • منطقی (boolean): این متغیر همواره یکی از دو مقدار درست (true) یا غلط (false) و به عبارت دیگر 0 یا 1 را می تواند داشته باشد
  • آرایه (array): در صورتی که متغیر های فوق رو یک جعبه کوچک در نظر بگیریم، آرایه در حقیقت صندوقی است که می توان جعبه ها را در‌ آن قرار داد. آرایه متغیری است که خود شامل متغیرهای دیگر است. محتوای آرایه می تواند بصورت یک دست از یک نوع مثلا اعداد صحیح باشد یا ترکیبی از رشته و عدد و ...

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

C#:          https://ideone.com/jePAcS
C++:        https://ideone.com/n5OI9E
Java:       https://ideone.com/1tY6Bl
PHP:        https://ideone.com/GIToic 
Swift:       https://ideone.com/8V3Kgv
Python3: https://ideone.com/CItDpg

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

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

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

در زبان هایی که ذاتا شی گرا هستند شما نمی توانید مانند php یا python کدی را بدون قرار دادن در بلوک کد بنویسید. و حتما یک کلاس و تابع اصلی وجود دارند.

حال قوانینی وجود دارند که در نام گذاری متغیر ها و کلاس و توابع باید رعایت کنید اصطلاحا (naming convention) برخی ضروری است و در صورت عدم رعایت با خطا مواجه خواهید شد و برخی قرار دادی است و برای تمیز و خوانا بودن کد های شما

مثلا نام متغیر، کلاس و توابع می تواند شامل حروف بزرگ و کوچک و اعداد انگلیسی یعنی از a تا z و A تا Z و 0 تا 9 و همچنین کاراکتر _ (آندرلاین) را میتوانید در تعریف اسم متغیر استفاده کنید. اما هیچگاه نمی تواند با اعداد شروع شود و این مورد یک ضرورت است.

بخشی از مثال های فوق برای شما آشنا و بخشی جدید است. مثلا بعد از تعریف کلاس در اولین خط بعد از آن اولین متغیری است که تعریف کردیم و فقط از حروف کوچک استفاده شده و نام آن را name گذاشته ایم (اگر در حال یادگیری زبان php هستید در این زبان نام گذاری تمامی متغیرها با علامت $ شروع می شوند (یک ضرورت است) و ربطی به نام آن متغیر ندارد)

توضیحات مربوط به متغیر name:

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

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

مورد public و دیگر انواع آن فقط مربوط به متغیر و توابع کلاس است و داخل توابع یا برنامه هایی مانند php داخل فایل های برنامه استفاده از آن معنایی ندارد.

در برخی زبان ها هنگام تعریف متغیر حتما باید مشخص کنید محتوای درون این متغیرها قرار است از چه نوعی باشند که قبلا توضیح داده شد. مثلا در اینجا مشخصا name از نوع حروف یا به عبارتی دیگر، رشته (string) خواهد بود و نمی تواند عددی یا صحیح/غلط باشد.

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

نکته اخر در مورد متغیر name مقدار دهی اولیه است. در برخی زبان ها شما می توانید متغیر را بدون مقدار اولیه تعریف کنید که به صورت پیش فرض مقدار null که تعریفی برای پوچ است برای آن در نظر گرفته می شود.

در زبان swift برای اینکه مشخص کنید متغیر مقدار نال را نیز می تواند داشته باشد کافی است بعد از تعیین نوع مقدار متغیر از کاراکتر “ ! ” استفاده نمایید و در زبان پایتون باید مقدار نال که در این زبان None شناخته می شود به آن تخصیص دهید.

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

چرا متغیر name را داخل کلاس تعریف کردیم؟

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

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

توابع در کلاس ها

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

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

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

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

فرض کنید ما حالت را از کاربر توسط صفحه کلید دریافت می کنیم و میگوییم بازوی رباط چه کند.

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

توابع یک کلاس رفتارها و کارهایی است که شی آن کلاس می تواند داشته باشد یا انجام دهد. مثلا در مثلا فوق می توانید یک تابع را در نظر بگیرید برای انجام عکس العمل انتخاب منو

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

توضیحات مربوط به تابع firstMethod

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

یک اصطلاح دیگر که اکنون می توان آن را توضیح داد (Syntax یا دستور زبان) در یک زبان برنامه نویسی است. به شیوه یک زبان در تعریف متغیر ها. توابع. کلاس ها و عملیات ریاضی و فراخوانی توابع و تعریف اشیا و کلا هر چه دستور مختص آن زبان است سینتکس آن زبان گویند و اگر دستور زبان را رعایت نکنید اصطلاحا به Syntax Error برخورد خواهید کرد.

کلمه Error یا خطا به صورت کلی وقتی است که قاعده ای رعایت نشود و کامپایلر یا مفسر بخواهد به شما اطلاع دهد. که با توضیحات کمی برنامه شما اجرا نخواهد شد و اصطلاحا برنامه دارای Error است.

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

ساختار تعریف تابع را در زبان محبوب خود حفظ کنید (ترتیب کلماتی که توضیح می دهیم قابل جابجایی نیست). کلمه public که در برخی زبان ها هنگام تعریف تابع مشاهده میکنید دقیقا در تعریف متغیر توضیح داده شد و همان است.

کلمه void در برخی زبانها در ابتدا یا بعد از public آمده است که می تواند بجای آن string یا int یا دیگر انواع باشد که نشان دهنده این است که خروجی تابع از چه نوعی است. چون توابع ما مقداری را بر نمیگرداند (در دوره های آموزشی انتخابی توضیحات آن را خواهید شنید) مقدار void که به معنای آن است که خروجی ندارد نوشته شده

معمولا در هر زبانی یک کلمه کلیدی برای تعریف تابع وجود دارد. مشاهده می کنید در زبان پایتون از def و در سویفت از func و جاوا، C++ و C# فاقد آن کلمه است.

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

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

در زبان پایتون برای دسترسی به کلاس خود آن را بصورت متغیر به توابع میدهیم که متغیر رزرو شده ی self است. البته اگر در زبانهای دیگر این را مشاهده نمیکنید بدین معنی نیست که آنها بهتر عمل کرده اند و چرا داخل توابع پایتون باید همچین کاری کرد بماند.

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

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

تعریف متغیر بصورت کامل توضیح داده شده و تنها در نظر بگیرید آنچه راجع با کلمه کلیدی public کمی توضیح داده شد راجع به کلاس است و در مورد متغیرهای غیر کلاس صادق نیست و استفاده نمی شود اما قوانین نام گذاری، مقدار دهی و تعیین نوع آن با توجه به زبانی که در حال یادگیری آن هستید دقیقا یکسان است.

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

نکته نه چندان مهم اینکه در زبان هایی مانند C# ، C++ و Java می توان در یک خط با استفاده از “,” چند متغیر را تعریف کرد. در زبان php و python با مساوی قراردادن همه آنها امکان پذیر است و در غیر این صورت باید در خطوط جداگانه تعریف شوند.

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

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

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

همچنین در زبان هایی که نوع متغیر مشخص شده نمیتوان نوع دیگری را در آن قرار داد، مثلا نمیتوان مقداری عددی به name وارد کرد مگر آنکه ابتدا عدد را به رشته تبدیل کنید

اما در زبان php برنامه بصورت خودکار تبدیل (Cast) را انجام می دهد. مثلا اگر رشته را درون متغیر عددی جای دهید آن متغیر به نوع رشته تغییر حالت خواهد داد و برنامه خطا نمی دهد.

متغیرهایی با نام های a, b و c تولید شده و مقادیری داخل آنها جای داده ایم شما می توانید عملگرهای ضرب (*)، تقسیم (/)، جمع (+)، تفریق (-)، مود(%) را به برای متغیرهای عددی استفاده کنید

عملگر مود حاصل باقیمانه تقسیم عدد سمت چپ عملگر به عدد سمت راست عملگر را به عنوان حاصل بازمیگرداند.

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

خط بعدی برای شما آشنا است. چاپ یک رشته (که رشته مورد نظر میگوید نام خود را وارد کنید)

اما خط یا خطوط بعدی که در زبانهای مختلف برای شما جدید است (تک تک توضیح می دهیم) گرفتن یک متغیر از کاربر است (مثلا نام او) قبلا راجع به اصطلاح input/output اشاره شده. خوب گرفتن متغیر ورودی یعنی input و هر زبان دستور خود را دارد (اصطلاحات اینگونه input که مستقیما با استفاده از کی برد از کاربر گرفته می شود را standard input می گویند - نکته اینکه همانطور که قبلا اشاره شد چون این سایت کامپایلر آنلاین است و با شما در تعامل مستقیم نیست از قبل از اجرای برنامه باید ورودی هایی که برنامه می خواهد را در باکس مربوط به input قرار دهید که بنده کلمه saeed را قرار داده ام و هنگام اجرا زمانی که برنامه به این خط می رسد منتظر دریافت ورودی خواهد ماند و این سایت به برنامه خواهد داد).

تابع گرفتن مقدار در زبان های مختلف عملکرد متفاوتی دارد و مسلما در کتابخانه های متفاوتی است. در زبان C# در شاخه IO که مخفف ورودی و خروجی است (input/output) قرار دارد، در زبان C++ در iostream در زبان جاوا در scanner و دیگر زبانهای آورده شده نیازی به اشاره به کتابخانه مربوطه نیست.

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

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

نحوه استفاده از متغیرهای کلاس نیز در زبان های مختلف متفاوت است، زمانی که شما یک شی از یک کلاس می سازید برای دسترسی به توابع و متغیرهای آن شی تنها از نقطه استفاده می شود مانند firstObject.name که دسترسی به متغیر نام است به جز زبان php که از طریق علامت (<-) این دسترسی ممکن است

$first_object->name

اما داخل کلاس دیگر زبانها نیز فرق هایی دارند. در زبان های C# و جاوا و سویفت در داخل کلاس تنها کافی است نام متغیر را بنویسید.

اما در زبان C++ در صورتی که داخل کلاس هستید اولا باید از کلمه کلیدی this که اشاره به خود کلاس دارد استفاده کنید و علامت (<-) برای دسترسی و در خارج کلاس وقتی از متغیری که حاوی شی کلاس است استفاده میکنید برای دسترسی از (.) استفاده کنید.

در زبان php همه متغیرها از جمله this با علامت $ شروع می شوند و چه در داخل کلاس و چه در خارج کلاس برای دسترسی به مقادیر از علامت (<-) استفاده خواهد شد.

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

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

در همه زبان های فوق به جز php با علامت جمع عمل اتصال دو رشته به هم را نیز می توانید انجام دهید اما در php اینکار با نقطه انجام میشود مثلا “hello”.”world” دو کلمه hello و world در میان “ که هر دو رشته هستند با استفاده از نقطه به هم متصل شده که به این عمل concatenate میگویند و حاصل عمل فوق hellowrold است چون فاصله در هیچ یکی از کلمات نیست در حاصل کانکت نیز نخواهد بود.

در زبان C++ و تابع Cout هرچه بعد از علامت >> وجود دارد در خروجی نمایش داده می شود. و می توان به جای علمگر جمع برای چاپ مقادیر مختلف بین آن ها از این علامت نیز استفاده کرد

در برخی از زبان ها برای اتصال یک مقدار عددی به رشته باید عدد نیز به رشته تبدیل شود همانطور که در برنامه ها مشاهده میکنید در C# از تابع ToString و در پایتون از تابع str به شکلی که مشاهده می کنید می توانید استفاده کنید.

در زبان swift می توانید میان رشته متغیرهای خود را از هر نوعی چاپ کنید فقط کافی است آنها را داخل جفت پرانتزی همراه بک اسلش به این شکل ()\ قرار دهید. البته در خصوص name همانطور که مشاهده میکنید به این شکل (!name)\ یعنی یک علامت ! نیز دارد که برای متغیرهایی که مقدار null می تواند داشته باشد در این زبان قرار دادن آن در انتها ضروری است - البته علامت ! خارج از پرانتز عینا چاپ خواهد شد و ربطی به این موضوع ندارد.

آخرین نکته راجع به انداختن اشاره گر به خط بعد هنگام چاپ است. در زبان C# می بینید رشته بعد از چاپ با Environment.NewLine جمع شده که معادل یک enter یا رفتن به خط بعد در کنسول است. در C++ از endl استفاده شده و در جاوا چند تابع چاپ داریم که تابع println بعد از چاپ مقدار داخل به صورت پیش فرض اشاره گر را خود به خط بعدی خواهد برد. تابع print در سویفت و پایتون نیز به صورت پیش فرض اینکار را انجام میدهند و در php از PHP_EOL استفاده شده. البته روش مشترک دیگری نیز وجود دارد در آینده خود با آنها آشنا خواهید شد و در اینجا نیازی به اشاره به آن نیست.

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

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

قواعد نام گذاری

بهتر است قبل از اشاره به قواعد به شیوه های نام گذاری نگاهی بیاندازید که پیشنهاد می کنم به مقاله زیر رجوع کنید

https://virgool.io/@arianshahalami/%D8%A8%D9%87%D8%AA%D8%B1%DB%8C%D9%86-%D9%86%DA%AF%D8%A7%D8%B1%D8%B4-%D9%87%D8%A7%DB%8C-%D9%86%D8%A7%D9%85%DA%AF%D8%B0%D8%A7%D8%B1%DB%8C-reqfhzzqqcjo

سپس مقاله زیر را برای شیوه نامگذاری پیشنهاد میکنم (البته موارد مربوط به متغیر، boolean، تابع و کلاس رو پیشنهاد میکنم در نظر بگیرید الباقی مختص زبان جاوااسکریپت است - بله این قواعد ممکن است در هر زبان کمی متفاوت باشد)

https://virgool.io/@mansourihosein/httpsvirgooliomansourihoseinjavascript-naming-conventions-m0m7mx1d2oy2

آشنایی دو اصطلاح SDK و Framework

در جلسات قبل با library آشنا شده اید. و معمولا برای مجموعه ای است که توسط خود زبان ارائه می شود. هرچند نمی توان گفت هر کتابخانه دستورات خود زبان است مثلا در جاوا اسکریپت کتابخانه JQuery در دل جاوا اسکریپت نیست و می توانید آن را دانلود کرده و در کنار فایل های پروژه قرار دهید و از آن استفاده کنید. اما فریم ورک نیز مجموعه ای از دستورات و توابع و ... است و فرق عمده آن با کتابخانه این است که برای هدف مشخصی این دستورات در کنار هم قرار گرفته اند.

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

علاوه مفهوم ماژول با مفهوم Api هم برخورد خواهید کرد. امروزه معمولا به اختصار معمولا برای مجموعه دستوراتی که تحت وب در دسترس است می گویند البته بدانید بهتر است بگوییم web api اما خود مفهوم api معمولا کلی تر است. مثلا به همین ماژول هایی که فریم ورک ارائه داده است نیز api می گویند.

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

و اما آخرین مطلب فنی ما SDK است که مخفف  Software Development Kit شامل ابزار و API  های مورد نیاز برای توسعه یک برنامه خاص مانند برنامه موبایل یا ارتباط به پرینتر و ... است. خوب همه این ها یکسری کتابخانه هستند که بنا به نحوه استفاده و هدف فراهم شدن آن یک نام به آن اختصاص داده اند. لینک زیر هم می تونه کمک بهتری برای درک این موضوع کنه.

https://virgool.io/@shin/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF-sdk-ksok4y3bkaws

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

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

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

https://virgool.io/CodeLovers/%D9%85%D9%86-%D9%85%DB%8C-%D8%AE%D9%88%D8%A7%D9%87%D9%85-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-%D8%B4%D9%88%D9%85-%D9%82%D8%B3%D9%85%D8%AA-%D9%86%D9%87%D9%85-wqbiyvf5y2kc