خانه / بایگانی برچسب: حلقه

بایگانی برچسب: حلقه

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

استخراج داده از اسناد Word با پایتون — از صفر تا صد

در این نوشته به بررسی جزییات استخراج داده و اطلاعات از اسناد ورد به صورت محلی می‌پردازیم. از آنجا که بسیاری از شرکت‌ها و مدیران مختلف از مجموعه نرم‌افزارهای اداری مایکروسافت استفاده می‌کنند، مطالبی که در این نوشته ارائه شده‌اند، برای هر فردی که با داده‌های انتقالی در قالب‌های doc. یا docx. مواجه می‌شود مفید خواهند بود. پیش نیاز مطالعه این نوشته نیز آن است که پایتون را روی سیستم خود نصب کرده باشید. اگر روی سیستم خود مجوزهای مدیریتی ندارید، می‌توانید اقدم به نصب پایتون آناکوندا (Anaconda) روی سیستم عامل ویندوزی خود بکنید. نت‌بوک مربوط به این نوشته را می‌توانید در این آدرس (+) مشاهده کنید. ما در این مطلب از مزیت ساختار XML هر سند ورد استفاده می‌کنیم. سپس از کتابخانه regex برای یافتن هر URL در متن سند و در نهایت افزودن URL ها به یک فهرست استفاده می‌کنیم که برای اجرای حلقه‌های for بسیار مطلوب است. #specific to extracting information from word documents import os import zipfile #other tools useful in extracting the information from our document import re #to pretty print our xml: import x..

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

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

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

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

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

در این نوشته با طرز کار تکرار (iteration) در پایتون آشنا می‌شوید. همچنین iterable-ها و iterator-ها و شیوه ایجاد آن‌ها معرفی شده‌اند. در ادامه مفهوم iterator protocol توضیح داده شده و به معرفی lazy evaluation پرداخته‌ایم. همچنین تابع‌های generator و عبارت‌های generator توصیف شده‌اند. حلقه در پایتون پایتون ازحلقه‌های سنتی for استفاده نمی‌کند. در شبه کد زیر می‌توانید حلقه سنتی for که در اغلب زبان‌های برنامه‌نویسی دیگر مورد استفاده قرار می‌گیرد را ملاحظه کنید: for (initializer; condition; iterator) body بخش مقداردهی اولیه ، یک بار و پیش از ورود به حلقه اجرا می‌شود. بخش شرطی حلقه باید یک عبارت بولی باشد. اگر این عبارت به صورت True ارزیابی شود، تکرار بعدی حلقه اجرا می‌شود. بخش تکرارکننده (iterator) حلقه، آن چه را پس از هر بار تکرار (iteration) رخ می‌دهد تعریف می‌کند. اکنون به بررسی روش تعریف یک حلقه سنتی در زبان جاوا اسکریپت می‌پردازیم. let numbers = [10, 12, 15, 18, 20]; for (let i = 0; i < numbers.length; i += 1) { console.log(numbers[i]) } خروجی 10 12 15 18 20 بسیاری از زبان‌های برنامه‌..

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

تکنیک های حل الگوریتم به زبان ساده – بخش دوم

در بخش قبلی این نوشته با عنوان «تکنیک های حل الگوریتم به زبان ساده» به بررسی برخی از تکنیک‌های حل الگوریتم رایج پرداختیم. در این نوشته ادامه مبحث را پی می‌گیریم. استفاده از حلقه for تو در تو حلقه‌های for تو در تو یا در واقع حلقه‌های for درون حلقه‌های for دیگر چندان کارآمد نیستند. با این وجود روشی آسان برای چرخیدن روی داده‌ها و اجرای اقدامات مختلف ارائه می‌کنند. شاید مشهورترین نمونه از حلقه‌های for تو در تو که به صورت عملی استفاده می‌شود، الگوریتم مرتب‌سازی حبابی باشد: function bubbleSort(array) { for (var i = 0; i < array.length; i++) { for(var j = 0; j < array.length; j++) { if(array[i]<array[j]) { // swap values var temp = array[j]; array[j] = array[i]; array[i] = temp; } } } return array; } var nums = [3,4,1]; // returns [1,3,4]; bubbleSort(nums); حلقه for تو در تو روی یک آرایه می‌چرخد و یک بار به همه عناصر آرایه سر می‌زند. بنابراین اگر آرایه‌ای به صورت [3, 2, 1] داشته باشیم، وقتی i=0 باشد، حلقه for دوم یک بار دیگر روی همه عناصر آرایه می‌چرخد و زمانی i=1 باشد، مجدداً حلقه for دوم ر..

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