# CS50xURMIA CS50xURMIA یک پلتفرم فارسی برای یادگیری پروژه‌محور علوم کامپیوتر، برنامه‌نویسی و مهندسی نرم‌افزار است. Contact: justbehrad@gmail.com ## Pages - [درباره CS50x ارومیه | داستان یک تغییر در آموزش برنامه‌نویسی](https://cs50xurmia.ir/p/about/) — CS50x Urmia (سی اس فیفتی ایکس ارومیه) مجموعه‌ای آموزشی در حوزه برنامه‌نویسی و علوم کامپیوتر در شهر ارومیه، استان آذربایجان غربی ایران است که در سال ۱۴۰۳ شمسی توسط بهراد قاسمی و مبین جباری تأسیس شد. انگیزه تأسیس این مجموعه، مشاهده ضعف‌های موجود در آموزش برنامه‌نویسی در شهر ارومیه و تلاش برای ایجاد تجربه‌ای اصولی‌تر و کاربردی‌تر برای یادگیری بود. CS50x ارومیه با الهام از رویکرد دوره CS50 دانشگاه هاروارد، بر تفکر الگوریتمی، یادگیری مفهومی، حل مسئله، تمرین عملی و توسعه پروژه‌های برنامه‌نویسی تمرکز دارد. این مجموعه نمایندگی رسمی دانشگاه هاروارد معرفی نمی‌شود. وب‌سایت رسمی آن cs50xurmia.ir است. ## Articles - [CS50 چیست؟ راهنمای دوره هاروارد، سرفصل‌ها و مسیر شروع [ 2026 ]](https://cs50xurmia.ir/blog/what-is-cs50/) — از اولین پروژه در Scratch تا برنامه‌نویسی و ساخت وب؛ ببینید CS50 برای شما مناسب است، چه پیش‌نیازهایی دارد و چگونه می‌توان آن را با پشتیبانی فارسی دنبال کرد. - [‫دانلود VS Code برای ویندوز ۱۰، ۱۱ و ۷ | نسخه ۶۴ و ۳۲ بیت](https://cs50xurmia.ir/blog/download-vscode-windows/) — ‫اگر به دنبال یک ویرایشگر کد سبک، سریع و رایگان هستید، Visual Studio Code یا همان VS Code یکی از بهترین گزینه‌هاست. این برنامه توسط مایکروسافت توسعه داده شده و برای زبان‌های برنامه‌نویسی مختلف مثل پایتون، جاوااسکریپت، سی‌شارپ، PHP، HTML و CSS کاربرد دارد. در این مقاله از CS50xUrmia لینک دانلود VS Code برای ویندوز ۱۰، ۱۱ و ۷ را در نسخه‌های ۶۴ بیت و ۳۲ بیت قرار داده‌ایم. همچنین توضیح می‌دهیم کدام نسخه برای سیستم شما مناسب است. - [‫دانلود پایتون (Python) نسخه 3.15.0 و 3.8.10 – جدیدترین نسخه 2025](https://cs50xurmia.ir/blog/download-python/) — ‫در این مقاله قصد داریم جدیدترین نسخه زبان برنامه‌نویسی پایتون (Python) را برای شما عزیزان آماده دانلود کنیم. پایتون یکی از محبوب‌ترین و پرکاربردترین زبان‌های برنامه‌نویسی جهان است که در زمینه‌های هوش مصنوعی، یادگیری ماشین، طراحی وب، علم داده، اتوماسیون و اسکریپت‌نویسی کاربرد فراوانی دارد. ## Videos - [‫لایه‌بندی جلو و عقب Spriteها در اسکرچ | آموزش برنامه‌نویسی با ابوالفضل آقازاده](https://cs50xurmia.ir/videos/sprite-layering-front-and-back-in-scratch/) — ‫ در اسکرچ، هر Sprite روی یک لایه‌ی مستقل قرار می‌گیرد. برای کنترل ترتیب نمایش از سه بلوک در گروه Looks استفاده می‌کنیم: «Go to Front Layer» شخصیت را به بالاترین لایه می‌برد، «Go to Back Layer» آن را به پایین‌ترین لایه می‌فرستد و «Go Forward Layers» / «Go Backward Layers» آن را چند لایه به جلو یا عقب می‌برد. این بلوک‌ها زمانی که چند شخصیت روی هم می‌افتند تعیین می‌کنند کدام یک دیده شود. مثلاً برای اینکه لایه‌ی مه همیشه روی صحنه باشد، آن را داخل حلقه‌ی Forever به Front Layer می‌فرستیم. پرسش‌های پرتکرار (FAQ): لایه‌بندی در اسکرچ چیست؟ تعیین ترتیب نمایش Spriteهایی که روی هم قرار می‌گیرند. چرا کاراکتر پشت درخت گیر می‌کند؟ چون لایه‌ی کاراکتر زیر لایه‌ی درخت قرار گرفته است. بلوک Go to Front Layer چه می‌کند؟ Sprite را به بالاترین لایه منتقل می‌کند تا همه چیز را بپوشاند. تفاوت Go to Front و Go Forward چند لایه چیست؟ Go to Front یک‌باره به بالاترین لایه می‌برد، اما Go Forward فقط چند لایه جابه‌جا می‌کند. چطور لایه‌ی مه را همیشه جلو نگه داریم؟ بلوک Go to Front Layer را داخل حلقه‌ی Forever بگذارید. کلید Space و T در این آموزش چه می‌کنند؟ با Space لایه به جلو و با T لایه به عقب فرستاده می‌شود. - [‫ساخت دشمن‌های چندگانه در یک بازی | آموزش اسکرچ با امیرحسین خوئی](https://cs50xurmia.ir/videos/creating-multiple-enemies-in-scratch-game/) — ‫ برای ساخت دشمن‌های چندگانه در اسکرچ، ابتدا یک شخصیت دشمن می‌سازیم. سپس با بلوک «Create Clone of Myself» چندین کلون از آن تولید می‌کنیم. برای کنترل تعداد، از یک متغیر شمارنده و شرط «If» استفاده می‌کنیم. هر کلون با دریافت پیام «When I start as a clone» شروع به حرکت می‌کند و با «Delete This Clone» هنگام برخورد با شخصیت اصلی یا خارج شدن از صحنه حذف می‌شود. این روش پایه‌ی ساخت دشمن‌های متعدد در بازی‌های اسکرچ است. پرسش‌های پرتکرار (FAQ): چطور در اسکرچ چند دشمن بسازیم؟ از بلوک Create Clone of Myself برای تکثیر شخصیت دشمن استفاده کنید. کلون دشمن چگونه حرکت می‌کند؟ با بلوک When I start as a clone و سپس Move در حلقه Forever. چطور تعداد دشمن‌ها را محدود کنیم؟ با یک متغیر شمارنده و شرط If قبل از Create Clone. چه زمانی کلون دشمن حذف شود؟ هنگام برخورد با شخصیت اصلی یا خروج از لبه صحنه با Delete This Clone. آیا می‌توان به هر دشمن رفتار متفاوت داد؟ بله، با استفاده از متغیرهای محلی برای هر کلون یا انتخاب تصادفی رفتار. - [‫کنترل تعداد کلون‌ها با متغیر در اسکرچ | آموزش برنامه‌نویسی با معین عبدی](https://cs50xurmia.ir/videos/controlling-clone-count-with-variable-in-scratch/) — ‫برای کنترل تعداد کلون‌ها در اسکرچ یک متغیر به نام Clone Count می‌سازیم که تعداد کلون‌های فعال را می‌شمارد. هنگام ساخت کلون با بلوک «Create Clone of Myself»، مقدار متغیر را یک واحد افزایش می‌دهیم (Change Clone Count by 1) و قبل از ساخت، با شرط «If Clone Count < 5» بررسی می‌کنیم که از سقف عبور نکرده باشیم. هنگام حذف کلون با «Delete This Clone»، مقدار متغیر را یک واحد کاهش می‌دهیم. این الگو پایه‌ی محدودسازی تعداد دشمن‌ها، گلوله‌ها و شخصیت‌های تکثیری در بازی‌های اسکرچ است. پرسش‌های پرتکرار (FAQ): چطور تعداد کلون‌ها را در اسکرچ محدود کنیم؟ با یک متغیر شمارنده (Clone Count) و شرط If قبل از Create Clone. بلوک Create Clone of Myself چه می‌کند؟ یک کپی از خود شخصیت می‌سازد که کدهای آن با شروع به‌عنوان کلون اجرا می‌شود. چه زمانی باید Clone Count را کاهش دهیم؟ دقیقاً قبل یا بعد از بلوک Delete This Clone. چرا Clone Count باید هنگام حذف کم شود؟ چون در غیر این صورت شمارنده اشتباه می‌شود و اجازه‌ی ساخت کلون جدید داده نمی‌شود. حداکثر تعداد کلون در اسکرچ چند است؟ اسکرچ سقف ۳۰۰ کلون همزمان دارد، اما برای عملکرد بهتر بهتر است خودتان آن را محدود کنید. - [‫آموزش مختصات X و Y در اسکرچ | حرکت شخصیت روی محورها با آیسل فرج‌زاده](https://cs50xurmia.ir/videos/scratch-x-y-coordinates-tutorial/) — ‫ در اسکرچ، صحنه یک صفحه‌ی مختصات دوبعدی است. محور X افقی است (چپ منفی، راست مثبت) و از ‎-240 تا ‎+240 گسترده است. محور Y عمودی است (پایین منفی، بالا مثبت) و از ‎-180 تا ‎+180 گسترده است. مرکز صحنه نقطه‌ی (0,0) است. با بلوک‌های «Go to X: Y:»، «Set X to» و «Set Y to» می‌توان شخصیت را به هر نقطه‌ای فرستاد. چهار گوشه‌ی صحنه به‌ترتیب: بالا-راست (240, 180)، بالا-چپ (-240, 180)، پایین-راست (240, -180) و پایین-چپ (-240, -180) است. پرسش‌های پرتکرار (FAQ): مختصات در اسکرچ چگونه کار می‌کند؟ صحنه یک صفحه‌ی دوبعدی است؛ X افقی (‎-240 تا ‎+240) و Y عمودی (‎-180 تا ‎+180). مرکز صحنه در اسکرچ کجاست؟ نقطه‌ی (0, 0) که دقیقاً وسط صحنه است. چهار گوشه صحنه چه مختصاتی دارند؟ بالا-راست (240, 180)، بالا-چپ (-240, 180)، پایین-راست (240, -180)، پایین-چپ (-240, -180). بلوک Go to X: Y: چه می‌کند؟ شخصیت را در یک مرحله به مختصات مشخص‌شده منتقل می‌کند. تفاوت Set X و Change X چیست؟ Set X مقدار را جایگزین می‌کند، اما Change X مقدار فعلی را به‌اندازه‌ی مشخصی تغییر می‌دهد. - [‫ساخت ربات پاسخگوی ساده با اسکرچ | آموزش برنامه‌نویسی با هستی فیض‌الله‌بیگی](https://cs50xurmia.ir/videos/simple-chatbot-with-scratch/) — ‫ برای ساخت ربات پاسخگوی ساده در Scratch این مراحل را دنبال می‌کنیم: ۱) با بلوک «Ask and Wait» پیام کاربر را می‌گیریم و در متغیر Answer ذخیره می‌کنیم، ۲) با بلوک‌های «If…Then…Else» و عملگر «contains» کلمات کلیدی مثل «سلام»، «اسمت چیه» یا «خداحافظ» را تشخیص می‌دهیم، ۳) با بلوک «Say» پاسخ ثابت مناسب را نشان می‌دهیم و ۴) در نهایت یک پاسخ پیش‌فرض مثل «متوجه نشدم، دوباره بپرس» برای موارد ناشناخته اضافه می‌کنیم. پرسش‌های پرتکرار (FAQ): چطور در اسکرچ پیام کاربر را بگیریم؟ از بلوک Sensing → Ask and Wait استفاده کنید؛ پاسخ در متغیر Answer ذخیره می‌شود. چطور کلمات کلیدی را در اسکرچ تشخیص دهیم؟ با عملگر «contains» داخل بلوک If…Then بررسی می‌کنیم که آیا پاسخ کاربر شامل کلمه مورد نظر است. چطور ربات پاسخ ثابت بدهد؟ داخل هر شرط If، از بلوک Looks → Say برای نمایش پاسخ استفاده کنید. برای موارد ناشناخته چه کنیم؟ یک شرط Else در انتها بگذارید که پاسخ پیش‌فرض مثل «متوجه نشدم» را نمایش دهد. آیا می‌توان از متغیر برای ذخیره پاسخ‌ها استفاده کرد؟ بله، می‌توانید پاسخ‌ها را در متغیر یا لیست ذخیره کنید تا برنامه قابل توسعه‌تر شود. - [‫آشنایی با محیط اسکرچ و بخش‌های اصلی | آموزش برنامه‌نویسی با نیکی بهروزسامی](https://cs50xurmia.ir/videos/scratch-interface-and-main-sections/) — ‫ محیط Scratch از بخش‌های اصلی زیر تشکیل شده: ۱) صحنه یا Stage برای نمایش خروجی، ۲) ناحیه شخصیت‌ها یا Sprites، ۳) بخش بلوک‌ها (Blocks Palette) شامل گروه‌های Motion، Looks، Sound، Events و Control، ۴) ناحیه کد (Code Area) برای چیدن بلوک‌ها و ۵) نوار ابزار بالای صفحه. برای شروع، ابتدا ویرایشگر اسکرچ را باز می‌کنیم، با Stage و Sprite آشنا می‌شویم و سپس گروه‌های مختلف بلوک‌ها را می‌شناسیم. پرسش‌های پرتکرار (FAQ): چطور وارد ویرایشگر اسکرچ شویم؟ از سایت scratch.mit.edu گزینه Create را انتخاب کنید یا اپلیکیشن Scratch را باز کنید. Stage در اسکرچ چیست؟ صحنه یا Stage ناحیه‌ای است که خروجی برنامه در آن نمایش داده می‌شود. Sprite چیست؟ شخصیت یا Sprite موجودی است که برنامه روی آن اجرا می‌شود. گروه‌های بلوک در اسکرچ کدامند؟ Motion، Looks، Sound، Events، Control، Sensing، Operators، Variables و My Blocks. تفاوت Stage و Sprite چیست؟ Stage محل نمایش نتیجه است، اما Sprite خود شخصیت برنامه است که حرکت می‌کند. - [‫برخورد با لبه صحنه و برگشت شخصیت در اسکرچ | آموزش برنامه‌نویسی با روئین آقایاری](https://cs50xurmia.ir/videos/edge-bounce-and-character-rotation-in-scratch/) — ‫ برای برگشت شخصیت از لبهٔ صحنه در اسکرچ، داخل یک بلوک «Forever» از ترکیب «Move 10 steps» و «If on Edge, Bounce» استفاده می‌کنیم. اگر بخواهیم شخصیت هنگام حرکت بچرخد یا نه، از بلوک «Set Rotation Style» با گزینه‌های Left-Right، Don't Rotate یا All Around استفاده می‌شود. این ساختار پایه‌ی ساخت بازی‌های ساده مثل توپ جهنده (Bouncing Ball) است. پرسش‌های پرتکرار (FAQ): چطور در اسکرچ شخصیت از لبه صحنه برگردد؟ از بلوک «If on Edge, Bounce» داخل حلقهٔ Forever استفاده کنید. بلوک Forever چه کاری انجام می‌دهد؟ دستورات داخل آن را بی‌پایان تکرار می‌کند تا برنامه متوقف شود. Set Rotation Style چه کاربردی دارد؟ تعیین می‌کند شخصیت هنگام تغییر جهت، بچرخد یا فقط قرینه شود. چطور یک توپ جهنده ساده بسازیم؟ Move 10 Steps + If on Edge, Bounce داخل Forever روی یک شخصیت دایره‌ای. تفاوت Left-Right و All Around چیست؟ Left-Right فقط شخصیت را آینه می‌کند، اما All Around آن را می‌چرخاند. - [کشیدن شکل های هندسی با حلقه ها با هستی نصیری](https://cs50xurmia.ir/videos/drawing-geometric-shapes-with-loops-in-scratch-by-hasti-nasiri/) — ‫برای کشیدن شکل‌های هندسی در اسکرچ از بلوک‌های حرکتی (Move و Turn) درون یک حلقهٔ «Repeat» استفاده می‌کنیم. زاویهٔ چرخش برابر با ۳۶۰ تقسیم بر تعداد ضلع است؛ مثلاً مثلث ۱۲۰ درجه، مربع ۹۰ درجه و شش‌ضلعی ۶۰ درجه. با این روش می‌توان هر چندضلعی منتظم را رسم کرد. ‫ چگونه در اسکرچ مثلث بکشیم؟ از بلوک Repeat با ۳ تکرار، Move ۱۰۰ قدم و Turn ۱۲۰ درجه استفاده کنید. چگونه مربع با Repeat در Scratch رسم کنیم؟ ۴ بار تکرار، Move ۱۰۰ و Turn ۹۰ درجه. فرمول رسم چندضلعی منتظم چیست؟ زاویهٔ چرخش = ۳۶۰ ÷ تعداد ضلع. چطور تعداد ضلع را از کاربر بگیریم؟ از بلوک Ask و Answer در بخش Sensing استفاده کنید. ## Courses - [علوم کامپیوتر و برنامه نویسی](https://cs50xurmia.ir/courses/CS50x/) — دوره علوم کامپیوتر و برنامه‌نویسی CS50x ارومیه، یک مسیر آموزشی مقدماتی برای یادگیری اصولی برنامه‌نویسی و تفکر الگوریتمی در شهر ارومیه است. این دوره با الهام از سرفصل‌های CS50 دانشگاه هاروارد، بر مبانی علوم کامپیوتر، حل مسئله، الگوریتم‌ها، زبان C، پایتون، پایگاه داده و توسعه وب تمرکز دارد. مخاطبان آن شامل افراد مبتدی، دانشجویان و علاقه‌مندان ورود به حوزه برنامه‌نویسی هستند. رویکرد آموزشی بر درک مفاهیم، تمرین مستمر و ساخت پروژه تأکید دارد. CS50x ارومیه یک مجموعه آموزشی مستقل است و وابستگی رسمی به - [آموزش جامع برنامه‌نویسی Scratch](https://cs50xurmia.ir/scratch/) — یک مسیر پروژه‌محور برای آشنایی با الگوریتم، رویداد، شرط، حلقه و متغیر؛ از اولین حرکت یک شخصیت تا ساخت یک بازی کامل.