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

بایگانی برچسب: آرایه

آموزش مقدماتی جاوا (بخش دوم) — از صفر تا صد

در بخش قبلی این سری آموزش مقدماتی جاوا با برخی مفاهیم ابتدایی زبان برنامه‌نویسی جاوا آشنا شدیم. در این نوشته نیز برخی مفاهیم دیگر جاوا توضیح داده شده‌اند. Immutable هر کلاسی که حالت شیء آن پس از ایجاد وهله نتواند تغییر یابد به نام Immutable شناخته می‌شود. رشته و همه کلاس‌های پوششی آن و همچنین کلاس enum نمونه‌هایی از کلاس Immutable محسوب می‌شوند. کلاس‌های Immutable از نظر ارث‌بری، thread-safe هستند. روش thread-safe ساختن یک کلاس به صورت زیر است: ابتدا مطمئن شوید که کلاس نمی‌تواند override شود. به این منظور کلاس را به صورت final دربیاورید. همه فیلدهای آن خصوصی باشند. هیچ متدی وجود نداشته باشد که بتواند حالت شیء را تغییر دهد. از این رو نباید از متدهای setter استفاده کرد. از یک کپی defensive یا کلون استفاده کنید. BigDecimal نیز از نظر فنی Immutable محسوب نمی‌شود، زیرا یک کلاس final نیست. String ،StringBuffer و StringBuilder «رشته» (String) به صورت Immutable است، چون ما نمی‌توانیم یک شیء رشته را تغییر دهیم. هر بار که مقدار جدیدی به یک رشته انتساب می‌دهید، در واقع یک شیء جدید رشته در پشت..

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

برنامه نویسی سوئیفت (بخش چهارم) — تصمیم‌ گیری و حلقه‌ ها

در بخش قبلی این سری مطالب آموزش برنامه‌نویسی سوئیفت به مبحث «عملگر، optional و مقادیر تهی» پرداختیم. در این نوشته قصد داریم به یادگیری دانشی بپردازیم که به هوشمندتر شدن برنامه‌های ما کمک می‌کند. تصمیم‌گیری ما هر روزه با موقعیت‌های تصمیم‌گیری مختلفی رو به رو می‌شویم. هنگامی که صبح از خواب برمی‌خیزید تصمیم می‌گیرید که یک قهوه بخورید؛ اما برای خوردن قهوه باید تصمیم بگیرید که یک فنجان قهوه درست می‌کنید یا نه. ابتدا باید بررسی کنید که آیا قهوه دارید یا نه، سپس باید ببینید که آیا شکر دارید یا نه و سپس باید وجود شیر را بررسی کنید. در نهایت وجود یک فنجان تمیز را بررسی می‌کنید. اگر پاسخ هر کدام از سؤال‌های فوق منفی باشد، یا باید هیچ کاری نکنیم و یا این که ابتدا موارد مورد نیاز بری تهیه قهوه را فراهم بکنیم. همین نکته در مورد برنامه‌نویسی نیز صحیح است و می‌توانیم با استفاده از گزاره‌های if تصمیم‌هایی اتخاذ کنیم. شکل ظاهری گزاره if در زبان سوئیفت به صورت زیر است: var hasCoffee: Bool = true var madeCup: Bool = false if hasCoffee { madeCup = true } // madeCup is equal to true در قطعه کد فوق دو مقد..

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

حذف موارد تکراری از آرایه های جاوا اسکریپت (ES6) — به زبان ساده

در این مقاله به بررسی 3 روش برای فیلتر کردن موارد تکراری از یک آرایه و بازگشت دادن مقادیر صرفاً منحصر به فرد معرفی می‌کنیم. روش محبوب استفاده از Set است که ساده‌ترین و کوتاه‌ترین روش محسوب می‌شود. 1. استفاده از Set ابتدا ساختار Set را توضیح می‌دهیم: Set یک شیء ساختمان داده جدید است که در ES6 معرفی شده و تنها امکان ذخیره‌سازی مقادیر منحصر به فرد را می‌دهند. زمانی که یک آرایه به آن ارسال شود همه مقادیر تکراری را از آن حذف می‌کند. اینک به کد زیر توجه کنید. ما آن چه در این کد رخ می‌دهد را به دو مرحله تقسیم کرده‌ایم که در ادامه مشاهده می‌کنید. مرحله اول: ابتدا یک Set جدید با ارسال آرایه به آن ایجاد می‌کنیم. از آنجا که Set تنها امکان تعریف مقادیر یکتا را می‌دهد و همه موارد تکراری حذف خواهند شد. مرحله دوم: اینک که موارد تکراری حذف شده‌اند می‌توانیم آن را دوباره با استفاده از عملگر spread به آرایه تبدیل کنیم. تبدیل Set به آرایه با Array.from به طور جایگزین می‌توانیم از Array.from نیز برای تبدیل Set به آرایه استفاده کنیم: 2. استفاده از Filter جهت درک این گزینه باید با دو متد indexOf و f..

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

حلقه ها در جاوا اسکریپت — راهنمای عملی

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

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

پنج ترفند پایتون که باید حتماً بدانید — به زبان ساده

شما چه یک مهندس هوش مصنوعی ارشد و چه یک دانشجوی سال اول زیست‌شناسی باشید، به هر حال در مقطعی با زبان برنامه‌نویسی پایتون مواجه خواهید شد. پایتون نخستین بار در سال 1991 انتشار یافت و به زبان محبوبی تبدیل یافت که از سوی برنامه‌نویس‌ها و اهالی فناوری مورد استفاده قرار می‌گیرد. بر اساس میزان نمایش سؤال‌های وب‌سایت Stack Overflow، پایتون به سرعت در حال تبدیل به محبوب‌ترین زبان برنامه‌نویس‌ها است. رشد شگفت‌انگیز پایتون پایتون یک زبان سطح بالا و تفسیری با ساختار نسبتاً ساده است و حتی برای افرادی که هیچ تجربه قبلی برنامه‌نویسی ندارند نیز عالی است. کتابخانه‌های محبوب پایتون کاملاً با آن یکپارچه شده‌اند و در رشته‌های مختلفی مانند بیوانفورماتیک (biopython)، علم داده (pandas)، یادگیری ماشین (keras/ tensorflow) و حتی نجوم (astropy) مورد استفاده قرار می‌گیرند. افرادی که زبان‌های جاوا و C را آموخته باشند، احتمالاً می‌توانند پایتون را به صورت خودآموز یاد بگیرند. با این که پایتون بسیار کندتر از جاوا و دیگر زبان‌ها اجرا می‌شود؛ اما در عمل با داشتن امکانات یکپارچه‌ای که به خوبی توسعه یافته‌اند، موجب بهب..

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

همه آنچه باید در مورد زبان برنامه‌نویسی Go بدانید — صفر تا صد

این نوشته را با یک مقدمه کوتاه در مورد Go، یا به عبارت صحیح‌تر Golang، آغاز می‌کنیم. Go توسط تعدادی از مهندسان گوگل به نام‌های «روبرت گریزمر» (Robert Griesemer)، «راب پایک» (Rob Pike)، و «کن تامپسون» (Ken Thompson) طراحی شده است. Go یک زبان با نوع استاتیک و کامپایل شونده است. نسخه اول این زبان در تاریخ مارس 2012 به صورت اوپن‌سورس ارائه شده است. Go یک زبان برنامه‌نویسی اوپن‌سورس است که ساخت نرم‌افزار را به کاری ساده، مطمئن و کارآمد تبدیل می‌کند. — مستندات GoLang برای حل یک مسئله مشخص، در زبان‌های متفاوت، روش‌های گوناگونی وجود دارد. برنامه نویسان معمولاً وقت زیادی را صرف یافتن بهترین روش حل یک مسئله می‌کنند. در سوی دیگر Go اعتقادی به این تعدد امکانات ندارد و تنها یک راه برای حل مسئله می‌شناسد. این امر موجب می‌شود که زمان زیادی از برنامه‌نویسان صرفه‌جویی شود و نگهداری کدهای بزرگ ساده‌تر باشد. در زبان Go هیچ ویژگی پرهزینه‌ای مانند map یا filter وجود ندارد. زمانی که یک ویژگی پرهزینه به زبان برنامه‌نویسی اضافه می‌کنید، باید بهای آن را بپردازید. — راب پایک لوگوی جدیداً منتشر شده Go سر ..

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

اشاره گرها و انواع مقداری، ارجاعی و مجموعه ای در سوئیفت (بخش دوم) — راهنمای جامع

در بخش قبلی از این سری مقالات آموزش سوئیفت در مورد انواع مختلف متغیرها صحبت کردیم؛ اما نوید دادیم که در بخش بعدی، یعنی مقاله حاضر به بررسی عمیق‌تر «انواع مقداری» (value types)، «انواع ارجاعی» (reference types) و همچنین اشاره‌گرها (pointers) خواهیم پرداخت. توجه کنید که اشاره‌گرها احتمالاً یکی از دشوارترین مفاهیم برنامه‌نویسی محسوب می‌شوند؛ اما جای نگرانی نیست؛ چون ما سعی می‌کنیم آن را به ساده‌ترین زبان ممکن بیان کنیم. در مطلب قبل در مورد حافظه و شیوه چیدمان آن به صورت بلوک، بایت، و بیت صحبت کردیم. در این نوشته به بسط آن مبحث می‌پردازیم و یک بازنمایی گرافیکی از طرز کار حافظه ارائه خواهیم کرد. ابتدا رشته‌ای ایجاد می‌کنیم که مقدار hello را در خود ذخیره سازد. این کار دشواری چندانی ندارد و قبلاً آن را انجام داده‌ایم. var myString = "Hello" در مقاله قبل اشاره کردیم که حافظه به ذخیره‌سازی مقادیر مختلف می‌پردازد. اگر بتوانیم به درون حافظه نگاه کنیم، می‌بینیم که مقادیر به صورتی مانند شکل زیر در آن ذخیره شده‌اند. شاید از خود بپرسید منظور از 0 در انتهای رشته چیست. این کاراکتر به نام «خاتمه د..

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

مقایسه ۵ الگوریتم برتر مرتب سازی در پایتون — صفر تا صد

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

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

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

این بخش از سری مقاله‌های راهنمای عملی جاوا اسکریپت ساختمان داده آرایه را در زبان برنامه‌نویسی جاوا اسکریپت بررسی خواهیم کرد. آرایه یک روش خوب برای فهرست کردن آیتم‌های داده‌ای تحت نام یک متغیر منفرد است. در ادامه دلیل مفید بودن آن را توضیح می‌دهیم و سپس شیوه ایجاد یک آرایه، بازیابی، افزودن و حذف آیتم‌ها در یک آرایه مرتب و موارد بسیار دیگر را بررسی می‌کنیم. پیش‌نیازها سواد مقدماتی رایانه درک اولیه‌ای از HTML و CSS آشنایی ابتدایی با ماهیت جاوا اسکریپت هدف از این مقاله درک آرایه‌ها و چگونگی دستکاری آن‌ها در جاوا اسکریپت است. آرایه چیست؟ آرایه‌ها عموماً به صورت «شیءهای شبه لیست» توصیف می‌شوند. این‌ها اساساً شیءهای منفردی هستند که شامل چند مقدار ذخیره شده در یک لیست هستند. اشیای آرایه می‌توانند در متغیرها ذخیره شوند و به روشی کاملاً مشابه با هر متغیر دیگر می‌توانیم با آن‌ها کار کنیم، تنها تفاوت در این است که هر مقدار درون این لیست را می‌توان مستقلاً مورد دسترسی قرار دارد و از این رو به شیءهای بسیار مفید و کارآمدی به خصوص در مواردی مانند تعریف حلقه و انجام کارهای تکراری روی هر مقدار تبدیل م..

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

ساخت الگوریتم های ژنریک در Swift — به زبان ساده

با معرفی Swift یک سری از ابزارهای جدید نیز همراه با آن عرضه شدند که باعث شده‌اند تجربه کدنویسی ساده‌تر و گویاتر شود. Swift علاوه بر دارا بودن ساختار ساده، همه جنبه‌های موفق زبان‌های دیگر برنامه‌نویسی را نیز در خود جمع کرده است تا از خطاهای رایج برنامه‌نویسی مانند «استثنای اشاره‌گر تهی» (null pointer exceptions) و نشت حافظه (memory leaks) جلوگیری کند. به طور عکس زبان Objective-C غالباً به خاطر عدم وجود نظم و ترتیب در کدنویسی یاد می‌شود. با این که Objective-C زبانی قوی و پایدار است؛ اما در زمان اجرا خطاهای زیادی در آن رخ می‌دهد. این تأخیر در کشف خطا، معمولاً ناشی از اشتباه‌های برنامه‌نویسی در ارتباط با مدیریت حافظه و عملیات تبدیل نوع است. ما در این مقاله به بررسی تکنیک جدید طراحی به نام generic ها می‌پردازیم و توضیح می‌دهیم که چگونه این تکنیک باعث می‌شود کد مفیدتر و امن‌تر شود. ساخت فریمورک‌ها همان طور که در ادامه ملاحظه خواهیم کرد، ساختمان‌های داده‌ای مانند لیست‌های پیوندی، درخت‌های دودویی و جدول‌های هَش (Hash) یک نقشه اولیه برای پردازش و تحلیل داده ارائه می‌کنند. ساختمان‌های داده نی..

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