یکی از بهترین راههای بهبود مهارتهای برنامه نویسی و برنامه نوشتن این است که به طور مرتب معماها و یا مسائل برنامه نویسی را حل کنید. به ویژه اگر زبان برنامه نویسی جدیدی را یاد گرفته باشید، با استفاده از حل کردن مشکلات رایج و مسائل مختلف میتوانید سریعتر به آن زبان مسلط شوید. برای اینکه کار شما را کمی سادهتر کنیم، در این مقاله، سایتهای حل تمرین برنامه نویسی را به اشتراک میگذاریم که معماها و مسالههای زیادی را فراهم میکنند و میتوانید مهارتهای خود را با حل این مسائل با هر زبانی که میشناسید افزایش دهید. توجه داشته باشید که همهی امکانات موجود در این وب سایتها رایگان نیست؛ همچنین برخی از این وب سایتها به طور منظم رقابتهای سازماندهی شدهای را برگزار میکنند و اگر مهارتهای خوبی داشته باشید، میتوانید حتی جوایز نقدی هم بگیرید.
سایت 1 - Programming Praxis
Programming Praxis یک وبلاگ است که شامل تعدادی مسئله و مشکل جذاب به همراه راه حل میباشد. میتوان مسائل مربوط به این حوزههای مختلف را ابتدا با روش خود حل کرده و سپس از راه حلهای ارائه شده در آن کمک بگیرید و نتیجه کار خود را بررسی کنید. مسائل این سایت بهطور معمول با زبانهای مختلفی قرار داده میشود.
سایت 2 - CodeKata
این وبلاگ که توسط دیو توماس نوشته شده است، ( نویسندهی کتاب Pragmatic Programmer) شامل مسائل بسیاری است که بهطور مستقیم با برنامه نویسی دنیای واقعی مرتبط هستند، بنابراین این وب سایت فرصت خوبی است تا مهارتهای کدنویسی خود را بهبود دهید.
سایت 3 - TopCoder
TopCoder یکی از بسترهای اصلی برنامه نویسی رقابتی است. این سایت یک فهرست از چالشهای الگوریتمی را (از گذشته تا کنون) فراهم میکند که با استفاده از آن میتوان به طور مستقیم و با استفاده از ویرایشگر، به صورت آنلاین کد نوشت و به کار خود ادامه دهید. در اصل Topcoder یک اجتماع یا انجمن فعال از برنامه نویسان هست که دوست دارند مسائل مختلف رو حل کنند. چالشهای زیاد جدید و فعالی وجود دارد که میتوان روی آنها فکر کرده و برخی از آنها جوایز نقدی نیز دارند.
کاربران رده بالا در TopCoder برنامه نویسان رقابتی بسیار خوبی هستند و به طور منظم در رقابتهای برنامه نویسی شرکت میکنند. همچنین یکی از برترین کاربران که همواره در بالای جدول ردهبندی قرار دارد (فعلا اول است) پتر میتریچف (Petr Mitrichev) نام دارد. این کاربر یک وبلاگ شخصی با نام الگوریتمهای هفتگی (Algorithms Weekly) دارد که هر هفته در آن در مورد رقابتهای کد نویسی، الگوریتمها، ریاضی و سایر موارد مربوط مینویسد.
سایت 4 - Coderbyte
Coderbyte نیز یک سایت حل مسائل برنامه نویسی است. این وب سایت تعداد زیادی چالش کد نویسی را ارائه میدهد که شما میتوانید بهصورت مستقیم با یکی از 12 زبان برنامه نویسی مانند جاوا، جاوا اسکریپت، پایتون، سی شارپ، سی پلاس پلاس و .... آن را حل کنید. این چالشها از درجهی آسان (مانند پیدا کردن بزرگترین کلمه در یک رشته) به درجهی سخت (چاپ حداکثر رابطهی منطقی در گراف) مرتب شدهاند. این وب سایت همچنین مجموعهای از برنامههای آموزشی، ویدیوهای مقدماتی، دورههای آمادهسازی و مصاحبهها را فراهم میکند. بر خلاف HackerRank و دیگر وب سایتهای مشابه، شما میتوانید نمونه سوالات حل شده برنامه نویسی جاوا، نمونه مسائل حل شده پایتون و سایر زبانها را بررسی کرده و راه حل هایی که کاربران دیگر برای هر چالشی نوشتهاند و همچنین راهحلهای رسمی ارسالشده توسط Coderbyte را مشاهده کنید.
سایت 5 - Project Euler
این وب سایت مجموعهی بزرگی از چالشها را در حوزه علوم کامپیوتر و ریاضیات ارایه میدهد. این چالشها معمولا شامل حل مسائل برنامه نویسی و نوشتن یک برنامهی کوچک برای تبدیل کردن راهحل به یک فرمول یا معادلهی ریاضی هوشمندانه مانند پیدا کردن مجموع ارقام اعداد قبل از یک عدد در یک دنباله است. در Project Euler نیز مسائل از ساده تا خیلی سخت قرار داده شدهاند.
البته باید توجه داشت که نمیتوان بهطور مستقیم کد را در ویرایشگر آنلاین این وب سایت نوشت، بنابراین باید راهحل را بر روی کامپیوتر خود نوشته و اجرا بگیرید و سپس راهحل را در وب سایت بارگذاری کنید.
سایت 6 - HackerRank
HackerRank یکی از پرطرفدارانترین وب سایت هاست که چالشهای متعددی را برای چندین حوزهی مختلف از قبیل الگوریتم ها، ریاضیات، SQL، برنامهنویسی تابعی، AI، و بیشتر فراهم میکند. شما میتوانید با ثبتنام در آن، همهی چالشها را بهطور مستقیم و بهصورت آنلاین حل کنید. وب سایت امکان بحث و leaderboard را برای هر چالشی فراهم میکند و اغلب چالشها با سر مقاله همراه هستند که بیشتر در مورد چالش و نحوهی برخورد با آن به وسیلهی یک راهحل را توضیح میدهد. اما باید بدانید که بهجز سرمقاله، شما نمیتوانید راهحلهای دیگر کاربران را در وب سایت مشاهده کنید. HackerRank همچنین به کاربران این امکان را میدهد تا برنامههای خود را ارسال کنند و با توجه به امتیازات هر کاربر میتواند شغل جدیدی بدست آورد.
سایت 7 - CodinGame
CodinGame یکی از جذابترین وب سایتهای پیشنهادی این مقاله است که کمی متفاوت از دیگر وب سایتها است، زیرا به جای آن که کاربر در آن چالشهای کدنویسی را در یک ویرایشگر حل کند، در نوشتن کد بازیهای آنلاین شرکت میکند. برای مشارکت در نوشتن کد بازی، ابتدا یک مشکل (مانند جستوجوی دودویی) توصیف میشود و سپس نمونههای آزمایشی و یک ویرایشگر داده میشود که در آن میتوانید کد خود را در یکی از زبانهای برنامه نویسی پیشنهاد شده بنویسید. نتیجه در قالب بازی به نمایش درمیآید.
اگرچه این وب سایت متفاوت از وب سایتهای برنامهنویسی رقابتی معمولی است و مانند آنهایی که در بالا ذکر شدند نمیباشد، اما هنوز هم در میان برنامه نویسانی که از حل چالشها و شرکت در مسابقات لذت میبرند، محبوب است.
سایت 8 - CodeChef
CodeChef یک وب سایت برنامهنویسی رقابتی در هند است که صدها چالش را فراهم میکند و شما میتوانید کد را در ویرایشگر آنلاین خود وب سایت بنویسید. مجموعهی چالشها بسته به سطح مهارت شما به دستههای مختلف تقسیم میشوند. همچنین یک جامعهی بزرگ از کدنویسان در وب سایت وجود دارد که در قالب انجمنها به افراد کمک میکنند، برنامههای آموزشی مینویسند و در رقابتهای کدنویسی CodeChef شرکت میکنند.
سایت 9 - Exercism
Exercism یک وب سایت چالش برنامهنویسی است که بالای ۳۱۰۰ چالش را بین ۵۲ زبان برنامهنویسی مختلف ارایه میدهد. بعد از انتخاب زبانی که میخواهید در آن حرفهای شوید، با چالشهای کدنویسی روبه رو خواهید شد. با این حال، این وب سایت کمی متفاوت از دیگر وب سایتهای رقیب است، زیرا شما پس از تکمیل هر چالش با یک مربی کار میکنید. مربی پاسخهای شما را به صورت آنلاین بررسی میکند و به شما کمک میکند. زمانی که پاسخهای شما ارسال و تایید شود، وب سایت چالشها بیشتری را باز خواهد کرد.
سایت 10 - Codewars
Codewars مجموعهی بزرگی از چالشهای کدنویسی توسط جامعهی برنامه نویسان خود را ارائه میدهد. شما میتوانید این چالشها را بهصورت مستقیم و آنلاین با یکی از زبانهای برنامه نویسی در ویرایشگر این وب سایت حل کنید. همچنین امکان بحث و گفتوگو برای هر چالش و نیز مشاهدهی راهحلهای کاربران مختلف مانند نمونه مسائل حل شدهی پایتون وجود دارد.
LeetCode یک وب سایت محبوب آنلاین است که لیستی از ۱۹۰ چالشی که میتوانند به شما در آمادهسازی برای مصاحبههای فنی و شغلی کمک کند، ارائه میدهد. شما میتوانید این چالشها را مستقیما با یکی از ۹ زبان برنامهنویسی در ویرایشگر خود وب سایت حل کنید. البته باید توجه داشت که قادر به مشاهدهی راهحلهای دیگر کاربران نیستید، اما برای مقایسهی سرعت اجرای راهحلهای خودتان با کد کاربران دیگر امکاناتی در نظر گرفته شده است.
این وب سایت همچنین یک بخش مصاحبهی آزمایشی دارند که به طور خاص برای آمادهسازی مصاحبهی شغلی است. برگزاری رقابتهای کدنویسی و بخش مقالات آموزشی به شما کمک میکنند تا با خطاها و مشکلات مربوط به این حوزه آشنا شده و راهحلها را بهتر درک کنید.
سایت 12 - SPOJ
یکی دیگر از وب سایتهای رقابتی این حوزه است که بیش از ۲۰ چالش کدنویسی را ارائه میدهد. شما میتوانید کد خود را تحت ویرایشگر آنلاین خود وب سایت ارسال کنید. علاوه بر آن، SPOJ بخش مشخصی برای کاربران دارد تا درباره چالشهای کدنویسی بحث و تبادل نظر کنند، هرچند در حال حاضر برخلاف سایر وب سایتهای رقیب، هیچ راهحل رسمی برای حل سوالات ارائه نمیکنند.
سایت 13 - Python Challenge
در Python Challenge یک سایت حل تمرین برنامه نویسی پایتون است که برای یادگیری و تمرین برنامه نویسی پایتون بسیار مناسب میباشد. از شما خواسته میشود تا تمرینات برنامه نویسی پایتون و یا مشکلات خاص برنامه نویسی را حل کنید. این مشکلات از سطح ساده تا سخت دسته بندی شدهاند و با استفاده از آنها میتوانید مهارت خود را به خوبی ارتقا دهید. این وبسایت برای کسانی که به دنبال تمرین پایتون با جواب و نمونه سوال پایتون با جواب هستند بسیار مفید است.
سایت 14 - Al Zimmermann's
Al Zimmermann's سایتی است که هر 6 ماه یکبار یک رقابت را بین برنامه نویسان راه انداخته و میتوانید در آن شرکت کنید و جایزه دریافت کرده و قدرت حل مسئله خود را محک بزنید.
سایت 15 - Ruby Quiz
Ruby Quiz مجموعه ای از تعدادی مسئله یا رقابت هست که مربوط به زبان Ruby هستند و شما میتوانید آنها را حل کنید. هر چند که این موارد برای روبی هستند ولی این امکان وجود دارد که برای دیگر زبانها نیز مسائل را حل کرده و تست کنید.
سایت 16 - C Puzzles
در سایت C Puzzles تعدادی معما یا مسئله قرار داده شده است که مربوط به زبان برنامه نویسی C هستند و میتوانید آنها را حل کنید. برای هر مسئله یک راهنما یا Hint نیز قرار داده شده است که برای کمک گرفتن از آنها استفاده میشود.
سایت 17 - Prolog Problems
در سایت Prolog Problems مسائل مربوط به زبان Prolog قرار داده شده ولی راه حلها در زبانهای دیگر از جمله Python و Ruby و Haskell و Scala و ... نیز قابل قبول است. با کار کردن با این موارد میتوانید یک زبان جدید را به راحتی یاد بگیرید.
اگر به برنامه نویسی علاقهمند هستی و نمیدونی از کجا باید شروع کنی بهترین پیشنهاد ما برای آموزش برنامه نویسی ، دوره الفبای برنامه نویسی سون لرن است . حتما به صفحه دوره سربزنید.
جمعبندی
توانایی حل مساله یکی از بنیادیترین موارد برای شروع برنامه نویسی و مسلط شدن در آن است. لذا در این مقاله وب سایت هایی را معرفی کردیم تا به شما در تست کردن و بهبود بخشیدن حل مسائل برنامه نویسی کمک کرده و قدرت فکر و حل مشکل را بهبود بخشد. آیا سایت مشابه دیگری سراغ دارید که در آن مسائل و معماهای برنامه نویسی قرار داده شده باشد؟ خوشحال میشویم آن را در بخش نظرات معرفی کرده و با ما و سایر کاربران به اشتراک بذارید.
۳۱ دیدگاه
۱۹ بهمن ۱۴۰۱، ۱۲:۰۸
سلام
من یه سوال داشتم
من کتابهای توی بازار مربوط به برنامه نویسی سی پلاس پلاس رو خوندم .
حالا کدهای یه برنامه کاربردی واسه خودم
نوشتم .برنامه هم کاملا درست اجرا شده
می خوام تبدیل کنم به یه برنامه اجرایی توی کامپیوتر یا موبایل ،اما نمیدونم چه طوری یاد بگیرم و کتاب یا مطلبی هم در این باره پیدا نکردم
لطفا کمکم کنین
ممنون
نازنین کریمی مقدم۲۷ بهمن ۱۴۰۱، ۰۰:۱۱
درود
شما باید برنامه تون رو به فرمت ویندوز یا .exe و اندروید یا .apk در بیارید. برای مثال برای ویندوز، <a href="https://www.wikihow.com/Compile-CPP-File-to-EXE#:~:text=Run%20the%20command%20to%20compile,appear%20in%20the%20current%20folder." target="_blank" rel="noopener nofollow ugc">راهنمای تصویری تبدیل cpp به exe </a>رو ببینید.
۲۸ اردیبهشت ۱۴۰۱، ۱۷:۱۷
سلام
برای نرم افزار R سایتی رو میشناسید که نمونه مثال حل شده همراه با کد داشته باشه ؟
نازنین کریمی مقدم۲۹ اردیبهشت ۱۴۰۱، ۰۳:۲۲
درود
میتونید از<a href="https://www.westernsydney.edu.au/__data/assets/pdf_file/0011/862346/00_SolutionsExercises.pdf" target="_blank" rel="noopener nofollow ugc"> این مرجع</a> استفاده کنید.
۰۲ اردیبهشت ۱۴۰۱، ۰۸:۴۴
سلام
برای یادگیری الگوریتم و فلوچارت چ مسیری رو پیشنهاد میکنید؟
اگ امکانش هست یک رود مپی به من پیشنهاد کنید .
مرسی
نازنین کریمی مقدم۰۲ اردیبهشت ۱۴۰۱، ۱۹:۲۴
درود
توصیه میکنم با جزوه و تمرینهای درس مبانی کامپیوتر دانشگاههای تهران و شریف، جزوات رایگان وب، کتاب آقای قمی و clrs این مهارت رو قوی کنید.
در کنارش از سایتهای معرفی شده هم کمک بگیرید. سایت <a href="https://codeforces.com/" target="_blank" rel="noopener nofollow ugc">codeforces </a>هم میتونه کمک خوبی باشه.
۲۶ فروردین ۱۴۰۱، ۰۸:۳۷
Salam
من سیستمم مشکلی پیدا کرده و نمیتونم با ویژوال استودیو برنامه نویسی کنم بهترین سایتی که میتونه برنامه من را کامپایلر کنه تا ببینم برنام هام درست کار میکنه یا نه کدام است ؟
منظورم این است که کد برنامه بدم و اون برام کامپایلر کنه و ببینم برنامه ام درست است یا نه خطایی در کدها نداشته باشم
نازنین کریمی مقدم۲۷ فروردین ۱۴۰۱، ۰۷:۴۸
درود
با چه زبانی کدنویسی میکنید؟
۲۷ فروردین ۱۴۰۱، ۲۰:۲۱
سی شارپ
نازنین کریمی مقدم۳۱ فروردین ۱۴۰۱، ۱۰:۴۰
میتونید از<a href="https://www.onlinegdb.com/online_csharp_compiler" target="_blank" rel="noopener nofollow ugc"> این سایت</a> استفاده کنید.
نازنین کریمی مقدم۰۲ اردیبهشت ۱۴۰۱، ۱۹:۱۷
میتونید از <a href="https://www.onlinegdb.com/online_csharp_compiler" target="_blank" rel="noopener nofollow ugc">این سایت</a> استفاده کنید.
۱۶ اسفند ۱۴۰۰، ۱۶:۲۸
سلام تمرین برنامه نویسی هم حل میکنید؟
نازنین کریمی مقدم۱۷ اسفند ۱۴۰۰، ۱۰:۵۶
سلام
اگر زیر مقالات مرتبط سوال بپرسید، راهنمایی میکنیم تا خودتون بتونید حلش کنید.
۲۰ دی ۱۴۰۰، ۱۹:۰۹
واقعا عالی بود
به نظر شما اگه الگوریتم و فلوچارت رو نخونیم برنامه نویسی رو خوب یاد میگیریم؟؟
راستش تو دانشگاه به ما اموزش ندادن
نازنین کریمی مقدم۲۰ دی ۱۴۰۰، ۲۳:۲۵
درود
بدون این دوتا شاید تا یه حدی بتونید کدنویسی کنید اما برنامه نویس نمیشید. در حقیقت الگوریتم کمک میکنه تا ذهن ساختاریافته بشه (فلوچارت همون الگوریتمه منتها تصویریش) توصیه میکنم با جزوات رایگان وب، کتاب آقای قمی و clrs این مهارت رو قوی کنید.
حامد۱۹ آبان ۱۴۰۰، ۱۸:۵۵
سلام وقتتون بخیر ممنون از مقاله زیباتون
سایتی رو سراغ ندارین که سوالی که میگذاره پاسخ سوال رو هم داشته باشه؟
Nazanin KarimiMoghaddam۲۲ آبان ۱۴۰۰، ۰۶:۴۶
سلام.
در توضیحات هرکدوم که این ویژگی رو داشتند آوردیم.(مثل coderbyte) متاسفانه امکان دیدن جواب برای اکثرشون جزو امکانات پولی هست. البته اگر هر سوال رو جدا سرچ بزنید راه حل رایگانش رو در گوگل پیدا میکنید.
باز دقت کنید که ممکنه با گذر زمان امکانات این سایتها کمی متفاوت باشه، پس بهتر هست که خودتون یدور از سایتهای پیشنهادی بازدید کنید.
nahid۱۵ تیر ۱۴۰۰، ۱۴:۳۶
سلام من سایتارو مشاهده کردم و codbyte خیلی به دردم خورد ولی متاسفانه پولیه سایتی میشناسید که چالشای حل مسِله در حد متوسط و راحت بزاره واسه کسی که تازه شروع کرده و همین طور رایگان باشه؟
نازنین کریمی مقدم۰۴ مرداد ۱۴۰۰، ۱۰:۲۲
درود، بابت تاخیر در پاسخگویی پوزش میطلبیم.
بنظرم <a href="https://edabit.com/challenges" target="_blank" rel="noopener nofollow ugc">سایت edabit</a> رو هم امتحان کنید، یکم تعداد زبانهای برنامه نویسیش کمه اما برای شروع خیلی سایت خوبیه. کوئرای فارسی هم انتخاب مناسبی میتونه باشه.
رحیم۲۱ خرداد ۱۴۰۰، ۱۳:۲۷
سلام روزتون بخیر
در کدوم سایتهای میاد از اسان به سخت تعیین میکنه یعنی برای افرادی که مبتدی هستن هم نمونه سوال داره؟؟؟
با تشکر
نازنین کریمی مقدم۲۱ خرداد ۱۴۰۰، ۲۰:۲۸
سلام. تقریبا همه شون چنین امکانی رو دارن اما باز در توضیحات هرکدوم که این ویژگی رو داشتند آوردیم.
توجه کنید که ممکنه با گذر زمان امکانات این سایتها کمی متفاوت باشه، پس بهتر هست که خودتون یدور از سایتهای پیشنهادی بازدید کنید.
محمد۰۸ اردیبهشت ۱۴۰۰، ۱۸:۱۵
سلام و خسته نباشید
اگه امکانش هست وبسایتهای معادل فارسی رو هم بگید
اگه هم که درباره راه جل یا راه حلهای اون مسئله توضیح داده باشند که دیگه عالیه
خیلی ممنون از وبسایت خوبتون و تلاش بی نظیرتون
نازنین کریمی مقدم۱۰ اردیبهشت ۱۴۰۰، ۲۱:۲۲
درود.
فکر کنم سایت کوئرای فارسی چیزی هست که به دنبالش هستید. حتما بهش سر بزنید.
M۰۷ اسفند ۱۳۹۹، ۰۷:۳۶
کاملا با نوشته موافقم . میشه برای من تازه کار به صورت مشخص بگین که چه کارهای بخصوصی به طور مشخص باعث میشه مهارت حل مسئله من بهتر بشه ؟ (چون من مهارت حل مسئلم افتضاحه !) من تنها راهی که پیدا کردم کسب تجربه و تمرین هست من میخواهم برنامههای ویندوزی با استفاده از سی شارپ بنویسم
نازنین کریمی مقدم۰۷ اسفند ۱۳۹۹، ۲۰:۲۸
درود.
بهتون پیشنهاد میکنم مسیری که در پیش گرفتید رو ادامه بدید و از سایتهای معرفی شده تمرین حل کنید. تمرین لزوما نباید مرتبط با ساخت برنامه ویندوزی باشه، هرچیزی که باعث بشه شما دست به کد بشید و سر مساله فکر کنید مفید هست. تمرینهای پیشرفته با محوریت گراف و مسیریابی و... فعلا برای کاربردی که میخواید ضروری نیست و سراغشون نرید.
علاوه بر تمرین، توصیه میکنم در اوقات فراغت بازیهای موبایلی پازل مثل 2048 رو تجربه کنید. به شخصه دیدم که فردی مهارت حل مساله ضعیفی داشته و به مرور با همین دو مورد نتیجه خوبی گرفتند.
فارسی پور۰۷ مهر ۱۳۹۹، ۲۰:۰۲
سلام خیلی ممنونم واقعا کاربردی و بدرد بخور بود .کاش نمونه فارسی این سایتها هم وجود داشت تا برنامه نویسها انگیزههای بیشتری پیدا کنند
نازنین کریمی مقدم۰۸ مهر ۱۳۹۹، ۰۱:۳۲
درود.
البته چون بحث برنامه نویسی هست و خودبهخود زبان انگلیسی فرد در راه کسب علم قوی میشه، فارسی و انگلیسی بودن سوالات کمتر اهمیت پیدا میکنه. اما بنظرم وبسایت کوئرای فارسی تلاش خوبی در این حوزه داشته و مسابقات زیادی هم برای موقعیتهای شغلی برگزار میکنه. بیشتر سوالاتشون هم ترجمه همین سایتهای انگلیسی هست. حتما یه سری بهش بزنید.