❓ مسئله: نمایش اعداد زوج بین m تا n
🟠〰️🟡〰️🟢〰️🔴〰️🟢〰️🟡〰️🟠
1️⃣ الگوریتم ۱: پیمایش کامل با شرط
🔸 از عدد m شروع میکنیم و تا n جلو میرویم.
🔸 هر عدد را بررسی میکنیم که آیا زوج است یا خیر (یعنی عدد تقسیم بر ۲ باقیمانده نداشته باشد).
🔸 اگر زوج بود، نمایش میدهیم.
🟢 مزایا: خیلی ساده است و همه اعداد را چک میکند.
🔴 معایب: ممکن است تعداد زیادی عدد فرد هم بررسی شود که وقتگیر است، مخصوصاً اگر بازه بزرگ باشد.
🟠〰️🟠〰️🟠〰️🟠〰️🟠〰️🟠〰️🟠
2️⃣ الگوریتم ۲: شروع از اولین عدد زوج و رفتن با گام ۲
🔸 ابتدا عدد m را بررسی میکنیم. اگر زوج نیست، یک عدد به آن اضافه میکنیم تا به اولین عدد زوج برسیم.
🔸 از این عدد زوج شروع میکنیم و با گام ۲ جلو میرویم تا به n برسیم.
🔸 هر عدد به دست آمده را نمایش میدهیم.
🟢 مزایا: فقط اعداد زوج را بررسی میکند، پس از نظر زمان اجرای الگوریتم بهینهتر است.
🔴 معایب: الگوریتم کمی پیچیدهتر است چون باید شروع را تنظیم کنیم.
🟠〰️🟠〰️🟠〰️🟠〰️🟠〰️🟠〰️🟠
3️⃣ الگوریتم ۳: استفاده از فرمولبندی ریاضی و شمارش اعداد زوج
🔸 تعداد اعداد زوج بین m تا n را با فرمول حساب میکنیم
🔸 از اولین عدد زوج شروع کرده و با استفاده از فرمول، اعداد را تولید میکنیم
🔸 به جای بررسی تکتک اعداد، فقط اعداد مورد نیاز تولید میشود
🟢 مزایا: کارایی بالا، بدون بررسی اعداد فرد
🔴 معایب: پیچیدگی ریاضی بیشتر و پیادهسازی کمی دشوارتر
💯 @PythonForYou 🧑💻👩💻
🎯 الگوریتم خوب یعنی چی؟
(آیا همیشه اولین ایده، بهترینه؟)
در برنامهنویسی، وقتی با یه مسئله روبهرو میشیم، معمولاً اولین راهحلی که به ذهنمون میرسه سادهترینه.
❗️ اما همیشه سادهترین راه، بهترین راه نیست ❗️
اگه بخوای الگوریتمهات قوی، مؤثر و قابل اتکا باشن، لازمه با ویژگیهای یک الگوریتم خوب آشنا باشی: 👇
✅ ویژگیهای یک الگوریتم خوب
یک الگوریتم خوب معمولاً این ویژگیها رو داره:
1️⃣ درستی (Correctness)
الگوریتم باید همیشه جواب درست بده.
📌 یعنی برای هر ورودی معتبر، خروجی درست تولید کنه.
2️⃣ سادگی و قابل فهم بودن (Simplicity)
الگوریتم باید تا حد امکان ساده باشه، طوری که دیگران یا حتی خود ما بعداً بتونیم راحت بخونیم و درک کنیم.
📌 الگوریتم پیچیده ولی سریع، گاهی سخت نگهداری و توسعه میشه.
3️⃣ کارایی (Efficiency)
یعنی الگوریتم در زمان مناسب (و با مصرف منابع منطقی) کارش رو انجام بده.
🔰 دو معیار مهم برای کارایی:
1-3- زمان اجرا (Time complexity) → چقدر طول میکشه؟
3-2- حافظه مصرفی (Space complexity) → چقدر رم یا حافظه لازم داره؟
📌 الگوریتمی که سریعتر و کممصرفتره معمولاً بهتره.
4️⃣ عمومیت (Generality)
الگوریتم باید فقط برای یه حالت خاص نباشه؛ بلکه برای همهی حالتهای ممکن (در بازه تعریفشده) کار کنه.
📌 مثلاً الگوریتمی که فقط وقتی عدد زوج باشه جواب میده، ولی با عدد فرد مشکل داره، ناقصه.
5️⃣ قابلیت گسترش (Scalability)
وقتی حجم داده زیاد بشه، الگوریتم همچنان خوب کار کنه.
📌 مثلاً وقتی تعداد دادهها از ۱۰۰ تا به ۱۰۰ هزار تا میرسه، الگوریتم باید از هم نپاشه!
6️⃣ قابلیت پیادهسازی (Implementability)
پیادهسازی الگوریتم نباید خیلی سخت یا گیجکننده باشه.
📌 بعضی الگوریتمها در تئوری عالیان ولی در عمل به سختی قابل پیادهسازی هستن.
💯 @PythonForYou 🧑💻👩💻
🎯 چطور الگوریتم و فلوچارت خود را بررسی و خطایابی کنیم؟
✍️ نوشتن الگوریتم یا فلوچارت پایان کار نیست؛ باید مطمئن شویم که درست کار میکند. برای این کار میتونید از روشهای زیر استفاده کنید:
🔹 ۱. بررسی مرحلهبهمرحله (Step-by-Step Trace)
با یک یا چند ورودی فرضی، الگوریتم یا فلوچارت را خطبهخط دنبال کنید و ببینید در هر مرحله چه اتفاقی میافتد.
📌 مثال: اگر عدد 5 را وارد کنیم، چه مقادیری تولید میشوند؟ بهدرستی به هدف میرسد یا نه؟
🔹 ۲. استفاده از جدول ردیابی (Trace Table)
یک جدول بکشید و در آن متغیرها، مقدارشان در هر مرحله و خروجی را بنویسید. این روش مخصوصاً در الگوریتمهای دارای حلقه یا شرطیها خیلی مؤثره.
📋 ستونها: مرحله | مقدار متغیرها | خروجی
🔹 ۳. بررسی با ورودیهای خاص و مرزی (Edge Cases)
ورودیهایی مثل صفر، عدد منفی، بزرگترین یا کوچکترین مقدار ممکن، یا حتی ورودی نادرست را امتحان کنید. این ورودیها معمولاً خطاها را بهتر نشان میدهند.
🚨 مثال: اگه تعداد ورودی صفر باشه، برنامه چه رفتاری داره؟
🔹 ۴. مقایسه با خروجی مورد انتظار
قبل از اجرای الگوریتم، خروجی صحیح را با فکر کردن یا محاسبه دستی پیدا کنید، بعد ببینید آیا الگوریتم هم همین خروجی را تولید میکند یا نه.
✅ آیا جواب نهایی مطابق انتظار ماست؟
🔹 ۵. مرور منطقی و همگروهی (Peer Review)
فلوچارت یا الگوریتم را با یک دوست یا همکلاسی مرور کنید. گاهی یک چشم دیگر، راحتتر خطا را میبیند!
👥 باهم بررسی کنیم تا بهتر یاد بگیریم!
🔹 ۶. سادهسازی الگوریتم
اگر الگوریتم خیلی پیچیده شده، شاید وقتشه بازنویسیش کنی. یک الگوریتم خوب، ساده، واضح و قابلدرکه.
✏️ اگه مرحلهای رو دو بار نوشتی، شاید بشه خلاصهترش کرد!
📌 جمعبندی:
بررسی و خطایابی الگوریتم فقط مربوط به برنامهنویسی نیست، بلکه یک مهارت منطقی و تحلیلیه که با تمرین، قویتر میشه. قبل از اینکه الگوریتمت رو تحویل بدی یا باهاش کدنویسی کنی، حتماً چندتا از این روشها رو امتحان کن.
💯 @PythonForYou 🧑💻👩💻
1- عملگرهای محاسباتی
2- عملگرهای رابطه ای
3- عملگرهای ترکیبی
4- عملگرهای منطقی
5- عملگرهای بیتی
💯 @PythonForYou 🧑💻👩💻
@PythonForYou.pdf
حجم:
14.3K
💥 تمرین در خصوص عملگرهای محاسباتی
💯 @PythonForYou 🧑💻👩💻
➖➖ دسته اول ➖➖
a = 5
print(1 < a < 10)
print(10 > a <= 9)
print(5 != a > 4)
print(a < 10 < a*10 == 50)
➖➖ دسته دوم ➖➖
x = 10
y = 5
print(x > 5 and y < 10)
print(x < 5 or y < 10)
print(not(x < 5))
➖➖ دسته سوم ➖➖
a = 5
a += 3
print(a)
a *= 2
print(a)
a -= 4
print(a)
a //= 2
print(a)
➖➖ دسته چهارم ➖➖
x = 7
y = 10
print(x == y)
print(x != y)
print(x > y)
print(x < y)
print(x >= y)
print(x <= y)
💯 @PythonForYou 🧑💻👩💻
🟦 بخش اول: سوالات متوسط (سطح مفهومی و تحلیلی)
🧩 سوال 1:
خروجی کد زیر چیست و چرا؟ ترتیب اجرای عملگرها را توضیح دهید:
print(3 + 4 * 2 == 11)
🧩 سوال 2:
عبارت زیر را ارزیابی کن و ترتیب دقیق اجرای عملگرها را بنویس:
result = True or False and False
🧩 سوال 3:
در عبارت زیر، ابتدا کدام عملگر اجرا میشود و چرا؟ خروجی چیست؟
print(not True or True and False)
🧩 سوال 4:
کدام یک از عبارات زیر مقدار True را برمیگرداند؟ فقط یکی درست است.
a) True == False == False
b) True and False == False
c) not False == False
d) not (False == False)
🧩 سوال 5:
نتیجهی کدام دو عبارت زیر با هم برابر است؟ دلیل را توضیح دهید.
a) 2 + 3 * 4
b) (2 + 3) * 4
c) 2 + (3 * 4)
d) 2 + 3 * (4)
🟥 بخش دوم: سوالات سخت (ترکیبی، تحلیلی، با دام مفهومی)
🧠 سوال 6:
کد زیر را تحلیل کن. خروجی چیست و چرا؟ ترتیب دقیق عملگرها را مشخص کن.
print(5 > 3 == True and not False)
🧠 سوال 7:
عبارت زیر را بررسی کن. خروجی چیست و چرا؟ تفاوتش با پرانتزگذاری در کجاست؟
print(1 < 2 < 3 == True)
🧠 سوال 8:
خروجی کدام عبارت زیر برابر با False است؟
و فقط با تغییر پرانتزها میتوان آن را به True تبدیل کرد؟
a) not True and True or False
b) True or False and False
c) not (True and False or True)
d) True == False != True
🧠 سوال 9:
خروجی کد زیر چیست؟ ترتیب اولویت عملگرها را مرحلهبهمرحله بنویس و توضیح بده چرا جواب این است.
print(not 1 + 2 * 3 < 8 == False or True)
💯 @PythonForYou 🧑💻👩💻