Programming? – Telegram
Programming?
11.9K subscribers
373 photos
645 videos
978 files
511 links
🏅Channel privileges

🎗Ninth year of operation
🎗Completely specialized members
🎗Transmitter in channel automation
🎗, ...

🎯 second channel Programming books 👇
@topbookit

🎯 third channel laptop👇
@sysline


👨🏻‍💻Admin channels : @coderme
Download Telegram
ما دون نوع چندریختی در جاوا داریم که هر دو نوع رو توضیح خواهیم داد
چند ریختی استاتیک :
فرض کنید ما داخل یک کلاس بیاییم و چند متد هم نام و دقیقا شبیه هم تعریف کنیم موقع اجرای این متدها صد درصد کامپایلر به مشکل خواهد خورد به این دلیل که نمی تواند تشخیص بدهد که کدا متد باید اجرا شود و یا اینکه متدها تکراری هست خطا حواهد داد ولی اگر این متدهایی رو که تعریف کرده ایم پارامترهای ورودی متفاوتی داشته باشند کامپایلر می تواند از نوع پارامتر های ورودی هر تابع تضخیص بدهد که کدا متد باید اجرا شود با اینکه متدها ها هم نام باشند به این تعریف متد ها چندریختی ایستاتیک گفته می شود.
خوب ما در کلاس بالا اومدیم دو تا متد هم نام codemotor تعریف کردیم اما با ورودی های مختلف ینی متد اول پارامتری با نوع رشته هست و متد دوم پارامتری از نوع عدد صحیح
خوب در تصویر بالا اومدیم متدهای هم نام رو فراخوانی و اجرا کردم بنبابه ورودی هایی که به متدها دادیم کامپایلر از نوع ورودی ها متد مورد نظر رو تشخیص داده و خروجی رو در پایین چاپ کرده
چند ریختی داینامیک :
این نوع چند ریختی به این صورت هست که یه متد هم نام در هر دو کلاس والد و فرزند داشته باشیم و موقع اجرایی گرفتن اگر یک شی از کلاس والد با ارجا از کلاس فرزند ایجاد کنیم متدی که در کلاس فرزند داریم اجرا خواهد شد 👇👇👇👇
خوب در اینجا ما یه متد codemotor در کلاس والدمون تعریف کردیم
همان متد رو با همون نام و با بدنه متفاوت در کلاس فرزند تعریف کردیم
اگر به تصویر بالا توجه کنید ما اومدیم یک شی از کلاس car تعرف کردیم و یک شی از کلاس car با ارجاع به کلاس فرزند bmw تعریف کردیم و متد های codemotor رو فراخوانی کردیم و خروجی رو نمایش داده ام
اگر به خروجی های نمایش داده شده مقدار 12345 مربوط به متدی هست که در کلاس car تعریف کرده بودیم و مقدار 123456789 مربوط به متدی هست که در کلاس bmw تعریف کرده بودیم که از طریق ایجاد شی از کلاس والد با ارجاع به کلای فرزند متد کلاس فرزند فراخوانده شده به این فرآیند چندریختی داینامیک گفته می شود.
> > > آموزش زبان برنامه نویسی پایتون از 0 تا 100
> > > قسمت پانزدهم


سلام. امیدوارم سال خوبی رو شروع کرده باشید و تعطیلات عید رو به شادی پشت سر گذاشته باشید.

خوب قرار بود در این جلسه بعد از حل تمرین های جلسه ی قبل، توابع بازگشتی رو توضیح بدم.
تمرین ها رو یه بار دیگه نگاه میکنیم 👇


تمرین اول:
تابعی بنویسید که یک آرگومان عدد بگیره و اعداد زوج بین 0 تا اون عدد رو در ساختار داده ای لیست بهمون بده. (حواستون باشه که وقتی میگم "بهمون بده" اصلا منظورم چاپ کردنشون نیست، بلکه تابع باید خروجی داشته باشه.)


تمرین دوم:
تابعی بنویسید که خروجی تمرین بالا رو (یعنی لیستی که اعداد زوج درش ذخیره شدن) رو به عنوان آرگومان بپذیره و اعداد لیست رو با هم جمع کنه و بهمون بده.



تمرین سوم:
تابعی بنویسید که خروجی تابع بالا رو (یعنی یک عدد) به عنوان آرگومان بپذیره و بهمون بگه عدد چند رقمیه (مقدار رقم هارو باید تحت عنوان عدد بهمون بده)




تمرین چهارم:
تابعی بنویسید که 3 تابع قبل رو به کار بگیره، به این صورت که بهش عدد میدیم به عنوان آرگومان و بعد از گرفتن لیست اعداد زوج بین 0 و اون عدد از تابع اول، اعداد لیست رو جمع میکنه و در آخر میگه اون عدد چند رقمیه.
و اما جواب تمرین ها 👇
تمرین اول 👇

def test1(number):
list = []
index = 0
while index < number:
if index % 2 == 0: # agar adad zoj bud
list.append(index)
index = index + 1
return list

نیاز به توضیح نداره، یه لیست خالی ایجاد کردیم و اعداد رو از صفر تا آرگومان ریختیم توش (در صورت زوج بودن ) و در آخر لیست رو به عنوان مقدار تابع بازگشت دادیم.
تمرین دوم 👇

def test2(list):
sum = 0
index = 0
while index < len(list):
sum = sum + list[index]
index = index + 1
return sum

یه عدد صفر در نظر گرفتیم و لیست اعداد رو پیمایش کردیم و به هر عدد رسیدیم، اونو با عددی که در نظر گرفته بودیم جمع کردیم.

اما یه راه خیلی ساده تر:
تابع تو کار ()sum در پایتون دقیقا کارش همینه، یعنی مجموعه ای از اعداد رو میگیره و جمعشون رو بهمون میده، پس کد قبل رو کوتاه تر میکنیم:

def test2(list):
return sum(list)
تمرین سوم 👇
این تابع قراره یه عدد رو به عنوان آرگومان بگیره و بگه چند رقمیه, خوب ابتدا عدد رو از ساختار داده ای عدد به رشته تبدیل میکنیم، بعدش با تابع ()len تعداد کاراکتر هاش در میاد:

def test3(number):
return len(str(number))

به همین راحتی !
تمرین چهارم و آخر 👇


قرار بود تو این تمرین از 3 تابع که در تمرین های قبل نوشته شد استفاده کنیم به این صورت که به این تابع یه عدد میدیم، عدد رو به تابع تمرین اول میده و اون یه لیست از اعداد زوج از 0 تا اون عدد بهمون میده، بعد این لیست اعداد رو به تابع تمرین دوم میدیم و اون برامون جمعش میکنه و در آخر جمع اعداد رو به تابع تمرین سوم میدیم و اون میگه عدد چند رقمیه!

روش معمولی:

def test4(number):
list = test1(number)
sum = test2(list)
length = test3(sum)
return length


روش حرفه ای و کوتاه تر:

def test4(number):
return test3(test2(test1(number)))

خیلی راحته فقط کافیه به یاد بیارید که اولویت با داخل پرانتزه !