خانه / بایگانی برچسب: تابع

بایگانی برچسب: تابع

آموزش برنامه نویسی سوئیفت: تابع، Enum و تعریف دامنه (scope) — راهنمای جامع

در بخش قبلی این سری مطالب آموزش برنامه‌نویسی سوئیفت به بررسی گزاره‌های if، حلقه‌های while و همچنین حلقه‌های for-in پرداختیم. برخی از این گزاره‌های if کاملاً طولانی بودند و در صورتی که بخواهیم کارهای مختلف در یک گزاره if انجام دهیم، واقعاً حجم بالایی پیدا می‌کنند و خواندشان دشوار می‌شود. در این نوشته به بررسی این موضوع و راه‌حل‌های آن خواهیم پرداخت. تابع‌ها در عمل می‌توان برنامه‌هایی در سوئیفت نوشت که از تابع استفاده نکنند. شاید افراد زیادی که با زبان‌های دیگر آشنا هستند فکر کنند که این یک وضعیت بدیهی است. اما واقعیت این است که چنین نیست. در ادامه این راهنما در این خصوص بیشتر صحبت خواهیم کرد؛ اما هم اینک باید بگوییم که متد نوشته شده در دامنه سراسری به عنوان نقطه ورودی برای برنامه عمل می‌کند. نقطه ورود (entry point) صرفاً یک روش برای اعلام این است که برنامه از کجا آغاز می‌شود. ما به این دلیل تابع‌ها را می‌نویسیم که می‌خواهیم کد خود را به اجزای کوچک‌تر تقسیم کنیم تا خوانایی‌شان بهبود یابد. یک فهرست از راهنمایی‌های برنامه‌نویسی وجود دارند که باعث می‌شوند کار شما آسان‌تر شود. گرچه این فهر..

توضیحات بیشتر »

تابع سفارشی در جاوا اسکریپت — راهنمای عملی

اگر پیگیر نوشته‌های ما در این سری مطالب راهنمای عملی جاوا اسکریپت بوده باشید، احتمالاً تاکنون متوجه شده‌اید که تا به اینجا اکثر مطالب طرح شده ما علی‌رغم نام این دوره بیشتر پیرامون مباحث نظری بوده است. اما در این مقاله قصد داریم با مبانی عملی نوشتن تابع‌های سفارشی نیز آشنا شویم. در این مسیر برخی جزییات مفید که هنگام کار با این تابع‌ها مورد نیاز خواهد بود را نیز بررسی می‌کنیم. پیش‌نیازها سواد ابتدایی رایانه درکی مقدماتی از HTML و CSS آشنایی با مبانی اولیه جاوا اسکریپت و مطلب قبلی ما در مورد «مفهوم و کاربرد تابع در جاوا اسکریپت» هدف این مقاله ارائه عملی مراحل نوشتن تابع‌های سفارشی و توضیح چند موضوع مفید مرتبط با این زمینه است. یادگیری عملی: نوشتن اولین تابع سفارشی ما قصد داریم در ادامه یک تابع سفارشی بنویسیم که آن را ()displayMessage می‌نامیم. این تابع یک کادر پیام سفارشی روی صفحه وب نمایش خواهد داد و به عنوان یک جایگزین سفارشی‌سازی شده برای تابع ()alert داخلی مرورگر عمل می‌کند. ما این تابع را قبلاً دیده‌ایم؛ اما یک بار دیگر آن را یادآوری می‌کنیم. کد زیر را در کنسول جاوا اسکریپت مرورگر ..

توضیحات بیشتر »

راهنمای جامع React (بخش اول) — از صفر تا صد

مقاله‌ای که پیش رو دارید مروری جامع در مورد React است که گرچه ادعا ندارد همه موارد مربوط به این فریمورک را در خود گنجانده، اما مبانی مقدماتی مورد نیاز برای این که به یک توسعه‌دهنده خبره React تبدیل شوید را در اختیار شما قرار خواهد داد. این مجموعه مطلب در 8 فصل ارائه شده است که فصل نخست آن شامل مباحث زیر می‌شود: فصل اول: مفاهیم اساسی جاوا اسکریپت مدرن برای استفاده از React متغیرها تابع‌های Arrow Rest و spread تخریب شیء و آرایه الفاظ قالبی (template literals) کلاس‌ها Callback-ها promise-ها Async/Await ماژول‌های ES توجه داشته باشید که آنچه در ادامه آمده است تنها فصل اول این مجموعه مطلب را شامل می‌شود و برای مطالعه فصول بعدی باید به بخش‌های آتی این سری مقالات مراجعه کنید. مقدمه‌ای بر یک کتابخانه View به نام React در این بخش React و ماهیت آن را توضیح می‌دهیم. React چیست؟ React یک کتابخانه جاوا اسکریپت است که هدف آن ساده‌سازی مراحل توسعه رابط‌های بصری است. React از سوی فیسبوک توسعه یافته است و در سال 2013 انتشاریافته است. در واقع React زیرساخت تشکیل دهنده بسیاری اپلیکیشن‌های پر استفاده از..

توضیحات بیشتر »

بازگشت مقادیر چندگانه از تابع های ++C — راهنمای کاربردی

شاید تاکنون برایتان پیش آمده باشد که بخواهید مقادیر چندگانه‌ای را از یک تابع ++C بازگشت دهید. بهترین روش برای این کار کدام است؟ در ادامه چند روش برای این کار ارائه کرده‌ایم: استفاده از پارامترهای خروجی auto output_1(int &i1) { i1 = 11; return 12; } 2. استفاده از ساختار محلی auto struct_2() { struct _ { int i1, i2; }; return _{21, 22}; } 3. استفاده از یک std::pair auto pair_2() { return std::make_pair(31, 32); } 4. استفاده از یک std::tuple auto tuple_2() { return std::make_tuple(41, 42); } در این نوشته تلاش می‌کنیم بررسی کنیم که کدام یک از روش‌های فوق برای بازگشت دادن مقادیر چندگانه‌ در تابع‌های ++C بهتر است. اصولاً چرا باید بخواهیم مقادیر چندگانه‌ای بازگشت دهیم؟ یک مثال معمول برای این حالت ()std::from_chars است که یک تابع در ++C نسخه 17 است و شباهت زیادی به ()strtol دارد؛ اما ()from_chars تابعی است که 3 مقدار بازگشت می‌دهد. یک عدد تجزیه‌شده، یک کد خطا و یک اشاره‌گر به کاراکتر نخست نامعتبر. این تابع از ترکیبی از تکنیک‌ها استفاده می‌کند. عدد به صورت یک پارامتر خروجی بازگشت می‌یابد؛..

توضیحات بیشتر »

رندر کردن اشکال هندسی و متن روی تصاویر با PHP — به زبان ساده

PHP یک کتابخانه به نام GD برای دستکاری تصاویر دارد. اما با استفاده از این کتابخانه، علاوه بر دستکاری تصاویر موجود می‌توان تصاویری را از صفر نیز ایجاد کرد. تابع‌های مختلفی در این کتابخانه وجود دارند که می‌توانند برای ترسیم شکل‌هایی مانند بیضی، دایره، مستطیل، چندضلعی، و خطوط ساده مورد استفاده قرار گیرند. با بهره‌گیری از برخی معادله‌های ریاضی می‌توان الگوهای زیبایی با استفاده از این کتابخانه ایجاد کرد. تابع‌هایی نیز برای قرار دادن متن روی تصاویر رندر شده وجود دارند که امکانات زیادی در اختیار ما قرار می‌دهند. در این راهنما با روش رسم شکل‌های ساده در PHP و چگونگی رندر کردن متن با استفاده از فونت دلخواه آشنا می‌شویم. رسم شکل‌های ساده در PHP با استفاده از GD ما در این بخش با شکل‌های ساده آشنا می‌شویم و سپس ضخامت خط، قلم‌موها و سبک‌های مختلف خطوط را نیز در ادامه بررسی می‌کنیم. رسم خطوط شما می‌توانید با استفاده از تابع زیر یک خط ساده مستقیم بین دو نقطه مفروض رسم کنید: imageline($image, $x1, $y1, $x2, $y2, $color) پارامتر image$ یک منبع تصویر است که قبلاً با استفاده از تابع‌هایی مانند ()image..

توضیحات بیشتر »

کاربردهای var ،let و const در جاوا اسکریپت — به زبان ساده

در این نوشته به بررسی دو روش جدید برای ایجاد متغیرها در جاوا اسکریپت (ES6) می‌پردازیم که let و const هستند. در این مسیر تفاوت‌های بین var ،let و const و همچنین موضوعاتی مانند حیطه تعریف تابع و بلوک، hoisting متغیرها و تغییرناپذیری (immutability) را بررسی می‌کنیم. ES2015 (یا ES6) دو روش جدید برای ایجاد متغیرها معرفی کرده است که شامل var و const می‌شود. اما پیش از آن که عملاً تفاوت‌های بین این موارد را بررسی کنیم، برخی موارد وجود دارند که با آن‌ها آشنا شویم. این موارد شامل اعلان متغیر، مقداردهی اولیه متغیر، حیطه یا دامنه متغیر (به طور خاص حیطه تابع) و hoisting هستند. اعلان یا مقداردهی اولیه متغیر اعلان متغیر یک شناسه جدید را معرفی می‌کند: var declaration در دستور فوق ما یک شناسه به نام declaration ایجاد کردیم. در جاوا اسکریپت متغیرها در زمان ایجاد شدن، به صورت تعریف نشده (undefined) مقداردهی اولیه می‌شوند. معنی این حرف آن است که اگر تلاش کنید متغیر declaration را چاپ کنیم، با مقدار undefined مواجه خواهیم شد. var declaration console.log(declaration) بنابراین اگر متغیر declaration را نما..

توضیحات بیشتر »

مفاهیم مقدماتی حسابان (بخش دوم) — بررسی مثال‌های عملی

در بخش قبلی این راهنما «مفاهیم مقدماتی حسابان — به زبان ساده» بیان کردیم که حسابان را می‌توان یک نوع بینایی اشعه ایکس یا بینایی تایم‌لپس دانست. برای نمونه یک دایره را به صورت مثلثی متشکل از نوارهای کم عرض ترسیم کردیم و بدین ترتیب موفق شدیم به روشی ساده‌تر مساحت آن را محاسبه کنیم. البته شاید این روش را نتوان ساده‌تر دانست؛ اما در هر حال درک آن آسان‌تر بوده است. اگر محافظه‌کاری خود را کنار بگذاریم،، می‌بینیم که دایره‌ها صرفاً از نوارهای کم عرض ساخته نشده‌اند؛ بلکه می‌توان خلاقیت بیشتری به کار گرفت و روش‌های مختلف دیگری برای مشاهده دایره زیر اشعه ایکس تصور کرد: می‌توان یک دایره را به صورت مجموعه‌ای از حلقه‌ها، قاچ‌های پیتزا، یا برش‌های عمودی تصور کرد. هر یک از این حالت‌ها یک راهبرد عملی مختلف به صورت گام به گام ارائه می‌کنند. تحلیل حلقه به حلقه اگر از بینایی تایم‌لپس خود کمک بگیریم می‌بینیم که راهبرد حلقه به حلقه در طی زمان تجمیع می‌شود: این فرایند پیشروی حلقه به حلقه چه نکته جذابی دارد؟ هر گام میانی یک «دایره کوچک» کامل برای خود محسوب می‌شود. یعنی هنگامی که در نیمه راه هستیم همچنا..

توضیحات بیشتر »

درک ()Array.map در جاوا اسکریپت — راهنمای عملی

تابع ()Array.map در جاوا اسکریپت برای بسیاری از توسعه‌دهندگان مبتدی که قصد دارند درک عمیق‌تری از «برنامه‌نویسی تابعی» (functional programming) بیابند، یک مانع محسوب می‌شود. شما پس از یادگیری موارد مختلف در مورد ورودی‌ها و خروجی‌ها در همه انواع حلقه‌های متفاوت در جاوا اسکریپت، ممکن است تصور کنید که مفهومی به صورت map می‌تواند کاملاً بیگانه به نظر برسد. این مقاله به عنوان یک راهنمای عمومی و دروازه‌ای به سوی دنیای قدرتمند برنامه‌نویسی تابعی برای همه افراد مبتدی در این حوزه محسوب می‌شود. اگر به بررسی عمیق‌تر مفاهیم برنامه‌نویسی تابعی در جاوا اسکریپت علاقه‌مند هستید، این مقاله شروع مناسبی می‌تواند باشد. Map، Maps و Mapping Map (که نباید آن را با ساختمان داده Map اشتباه گرفت) یک ابزار کاربردی است که می‌توان برای تعریف حلقه‌های تکرار روی آرایه، اعمال نوعی تغییر روی هر مقدار و بازگشت دادن یک آرایه جدید با مقادیر تغییر یافته مورد استفاده قرار داد. به بیان کلی‌تر، یک mapping به سادگی نوعی تبدیل یک مقدار به مقدار دیگر است. اگر قرار باشد مقدار 10 را گرفته و مقدار 5 را به آن اضافه کنیم، می‌توانیم ..

توضیحات بیشتر »

آموزش جاوا اسکریپت مقدماتی: ساخت بازی حدس اعداد — به زبان ساده

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

توضیحات بیشتر »

بهینه سازی کد های C و ++C — راهنمای کاربردی

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

توضیحات بیشتر »