🎯 الگوریتم خوب یعنی چی؟
(آیا همیشه اولین ایده، بهترینه؟)
در برنامهنویسی، وقتی با یه مسئله روبهرو میشیم، معمولاً اولین راهحلی که به ذهنمون میرسه سادهترینه.
❗️ اما همیشه سادهترین راه، بهترین راه نیست ❗️
اگه بخوای الگوریتمهات قوی، مؤثر و قابل اتکا باشن، لازمه با ویژگیهای یک الگوریتم خوب آشنا باشی: 👇
✅ ویژگیهای یک الگوریتم خوب
یک الگوریتم خوب معمولاً این ویژگیها رو داره:
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 🧑💻👩💻
🟢 مفهوم True و False چیست؟
در زبان برنامهنویسی پایتون، True و False دو مقدار ویژهای هستند که برای نشان دادن دو حالت منطقی به کار میروند:
True
یعنی «درست» یا «واقعیت دارد»
False
یعنی «نادرست» یا «واقعیت ندارد»
🔸 این دو مقدار پایهایترین حالتها برای تصمیمگیری در برنامهها هستند.
▫️〰️◾️〰️▫️〰️◾️〰️▫️
🔵 نوع داده (Data Type) این مقادیر چیست؟
هر دو مقدار True و False از نوع دادهای به نام Boolean هستند.
این نوع داده در پایتون با کلمهی کلیدی bool مشخص میشود.
مثال:
print(type(True))
print(type(False))
▫️〰️◾️〰️▫️〰️◾️〰️▫️
🟡 مقدارهای True و False چگونه ساخته میشوند؟
🔹 شما میتوانید مستقیماً متغیری را برابر با True یا False قرار دهید:
is_active = True
has_error = False
🔹 همچنین، بعضی عملگرها و مقایسهها به طور خودکار True یا False تولید میکنند:
a = 5
b = 3
result = a > b
print(result)
▫️〰️◾️〰️▫️〰️◾️〰️▫️
🔴 ویژگیهای مهم متغیرهای True و False
🔻 تنها دو مقدار وجود دارد: یعنی یک متغیر از نوع Boolean فقط میتواند True یا False باشد.
🔻 کلیدواژه هستند: کلمات True و False جزو کلیدواژههای پایتون هستند و نباید به آنها مقدار دیگری اختصاص داد یا آنها را به اسم متغیر استفاده کرد.
🔻 مقادیر عددی هم میتوانند تبدیل به Boolean شوند: در پایتون، عدد 0 معادل False و هر عدد غیر صفر معادل True در نظر گرفته میشود. اما اینها خودشان True یا False نیستند.
▫️〰️◾️〰️▫️〰️◾️〰️▫️
💥 در پایتون، True معادل عدد ۱ و False معادل عدد ۰ است:
print(True + True)
print(False + 5)
💯 @PythonForYou 🧑💻👩💻