Forwarded from آموزش برنامه نویسی - از مبتدی تا حرفه ای
همون طور که مشاهده می کنید تمام ویژگی هایی که برای یک الگوریتم عرض شد ، در الگوریتم ساده ی بالا مشاهده میشن . یعنی آغاز و پایان مشخصی دارن . هر مرحله جزئیات کافی داره و ترتیب مراحل هم کاملا درست هستن .
Forwarded from آموزش برنامه نویسی - از مبتدی تا حرفه ای
حالا فلوچارت چیه ؟؟
فلوچارت یک راه استاندارد برای نمایش الگوریتم هست که توی اون باید از یک سری شکل های استاندارد برای نمایش دستور العمل ها ی مختلف استفاده کرد .
فلوچارت یک راه استاندارد برای نمایش الگوریتم هست که توی اون باید از یک سری شکل های استاندارد برای نمایش دستور العمل ها ی مختلف استفاده کرد .
Forwarded from آموزش برنامه نویسی - از مبتدی تا حرفه ای
شکل های بالا همون شکل هایی هستند که به عنوان استاندارد در فلوچارت ها مورد استفاده قرار می گیرند..
شکل اول " شروع " یا " پایان " الگوریتم رو مشخص میکنه .
شکل دوم که یک "فلش" هست ، جهت جریان منطقی در یک برنامه رو نشون میده
شکل سوم یعنی متوازی الاضلاع ، دستور العمل های ورودی و خروجی رو مشخص میکنه
شکل چهارم هم دستور العمل های انتساب و محاسبات رو نشون میده
و در شکل آخر هم دستورات شرطی بررسی میشن
شکل اول " شروع " یا " پایان " الگوریتم رو مشخص میکنه .
شکل دوم که یک "فلش" هست ، جهت جریان منطقی در یک برنامه رو نشون میده
شکل سوم یعنی متوازی الاضلاع ، دستور العمل های ورودی و خروجی رو مشخص میکنه
شکل چهارم هم دستور العمل های انتساب و محاسبات رو نشون میده
و در شکل آخر هم دستورات شرطی بررسی میشن
Forwarded from آموزش برنامه نویسی - از مبتدی تا حرفه ای
حالا یه مثال هم از فلوچارت با هم میبینیم
Forwarded from آموزش برنامه نویسی - از مبتدی تا حرفه ای
این فلوچارت مربوط به الگوریتمی هست که 3 عدد رو میگیره و تشخیص میده آیا میتونن تشکیل یک مثلث بدن یا خیر
Forwarded from آموزش برنامه نویسی - از مبتدی تا حرفه ای
خب حالا که با مفاهیم پایه ای فلوچارت و الگوریتم آشنا شدیم کمی راجع به بحث کارایی الگوریتم صحبت می کنیم ..
Forwarded from آموزش برنامه نویسی - از مبتدی تا حرفه ای
گاهی برای حل یک مسئله با چند راه حل رو به رو هستیم و در این زمان هست که باید الگوریتم با بیشترین کارآمدی رو انتخاب کنیم .
ملاک و معیار کارایی یک الگوریتم هم 2 چیز هست :
1- زمان اجرای الگوریتم 2- میزان حافظه برای اجرا
اصطلاحا به اولی پیچیدگی زمانی و به دومی پیچیدگی فضا هم میگن ..
به دلایلی معمولا اولی رو بیشتر مورد بررسی قرار میدن و ماهم در ادامه ی آموزش هامون سعی میکنیم بیشتر با این موضوع آشنا بشیم .
ملاک و معیار کارایی یک الگوریتم هم 2 چیز هست :
1- زمان اجرای الگوریتم 2- میزان حافظه برای اجرا
اصطلاحا به اولی پیچیدگی زمانی و به دومی پیچیدگی فضا هم میگن ..
به دلایلی معمولا اولی رو بیشتر مورد بررسی قرار میدن و ماهم در ادامه ی آموزش هامون سعی میکنیم بیشتر با این موضوع آشنا بشیم .
Forwarded from آموزش برنامه نویسی - از مبتدی تا حرفه ای
خب حالا همین ابتدا سوالی پیش میاد :
❓چرا با وجود اینکه سرعت کامپیوتر ها در حال افزایش هست و حافظه هم در حال ارزانتر شدن ، بررسی کارایی یک الگوریتم ضرورت پیدا میکنه ؟
❓چرا با وجود اینکه سرعت کامپیوتر ها در حال افزایش هست و حافظه هم در حال ارزانتر شدن ، بررسی کارایی یک الگوریتم ضرورت پیدا میکنه ؟
Forwarded from آموزش برنامه نویسی - از مبتدی تا حرفه ای
جواب رو بایک مثال متوجه خواهیم شد :
در ریاضیات یکی از موضوعات کاربردی ، دنباله ی فیبوناچی هست . برای پیدا کردن یکی از جملات این دنباله 2 راه حل داریم . یکی الگوریتم بازگشتی هست و دیگری الگوریتم تکراری .
در ریاضیات یکی از موضوعات کاربردی ، دنباله ی فیبوناچی هست . برای پیدا کردن یکی از جملات این دنباله 2 راه حل داریم . یکی الگوریتم بازگشتی هست و دیگری الگوریتم تکراری .
Forwarded from آموزش برنامه نویسی - از مبتدی تا حرفه ای
int fibo (int n )
{
if (n<=1)
return n;
else return fibo(n-1) + fibo (n-2) ;
}
{
if (n<=1)
return n;
else return fibo(n-1) + fibo (n-2) ;
}
Forwarded from آموزش برنامه نویسی - از مبتدی تا حرفه ای
☝️☝️☝️☝️ الگوریتم بازگشتی محاسبه ی جمله ی n ام دنباله ی فیبوناچی
Forwarded from آموزش برنامه نویسی - از مبتدی تا حرفه ای
int fibo (int n)
{
index i ;
int f[0.n];
f [0] = 0 ;
if (n>0) {
f [1] = 1;
for ( i=2; i<= n ; i++)
f[ i ] = f [i-1] + f [i-2] ;
} return f[n];
}
{
index i ;
int f[0.n];
f [0] = 0 ;
if (n>0) {
f [1] = 1;
for ( i=2; i<= n ; i++)
f[ i ] = f [i-1] + f [i-2] ;
} return f[n];
}
Forwarded from آموزش برنامه نویسی - از مبتدی تا حرفه ای
☝️☝️☝️☝️ الگوریتم تکراری محاسبه ی جمله ی n ام دنباله ی فیبوناچی
Forwarded from آموزش برنامه نویسی - از مبتدی تا حرفه ای
فرض کنیم بخوایم جمله ی 100 ام این دنباله رو حساب کنیم . اگر با الگوریتم تکراری اینکارو کنیم ، 101 نانو ثانیه طول میکشه در حالی که با الگوریتم بازگشتی اینکار در 13 روز انجام خواهد پذیرفت . اگر جمله ی 120 ام رو بخوایم حساب کنیم ، با الگوریتم تکراری 121 نانو ثانیه وقت میخوایم ولی با روش بازگشتی 36 سال طول میکشه ..!!!!!!
خب مشخصه که بحث کارایی بحث خیلی مهمیه ..
این دقیقا بحث زمان اجراست و حالا باید دید چرا این زمان ها متفاوته و این اختلاف بسیار زیاده .. این همون پیچیدگی زمانی الگوریتم هست که در جلسه ی بعدی راجع به اون صحبت می کنیم
خب مشخصه که بحث کارایی بحث خیلی مهمیه ..
این دقیقا بحث زمان اجراست و حالا باید دید چرا این زمان ها متفاوته و این اختلاف بسیار زیاده .. این همون پیچیدگی زمانی الگوریتم هست که در جلسه ی بعدی راجع به اون صحبت می کنیم
پایتون ، یک زبان برنامهنویسی همه منظوره، سطح بالا،شیءگرا و مفسر است که توسط خودو فان روسوم در سال ۱۹۹۱ در کشور هلند طراحی شد.
فلسفهٔ ایجاد آن تاکید بر دو هدف اصلی خوانایی بالای برنامههای نوشته شده و کوتاهی و بازدهی نسبی بالای آن است. کلمات کلیدی و اصلی این زبان به صورت حداقلی تهیه شدهاند و در مقابل کتابخانههایی که در اختیار کاربر است بسیار وسیع هستند.
بر خلاف برخی زبانهای برنامهنویسی رایج دیگر که بلاکهای کد در آکولاد تعریف میشوند (بهویژه زبانهایی که از گرامر زبان سی پیروی میکنند) در زبان پایتون از نویسه فاصله و جلوبردن متن برنامه برای مشخص کردن بلاکهای کد استفاده میشود. به این معنی که تعدادی یکسان از نویسه فاصله در ابتدای سطرهای هر بلاک قرار میگیرند، و این تعداد در بلاکهای کد درونیتر افزایش مییابد. بدین ترتیب بلاکهای کد به صورت خودکار ظاهری مرتب دارند.
پایتون مدلهای مختلف برنامه نویسی (از جمله شیء گرا و برنامه نویسی دستوری و تابع محور) را پشتیبانی میکند و برای مشخص کردن نوع متغییرها از یک سامانهٔ پویا استفاده میکند.
این زبان از زبانهای برنامه نویسی مفسر بوده و به صورت کامل یک زبان شیگرا است که در ویژگیها با زبانهای تفسیری پرل، روبی، اسکیم، اسمالتاک و تیسیال مشابهت دارد و از مدیریت خودکار حافظه استفاده میکند.
پایتون پروژهای آزاد و متنباز توسعهیافتهاست و توسط بنیاد نرمافزار پایتون مدیریت میگردد.
فلسفهٔ ایجاد آن تاکید بر دو هدف اصلی خوانایی بالای برنامههای نوشته شده و کوتاهی و بازدهی نسبی بالای آن است. کلمات کلیدی و اصلی این زبان به صورت حداقلی تهیه شدهاند و در مقابل کتابخانههایی که در اختیار کاربر است بسیار وسیع هستند.
بر خلاف برخی زبانهای برنامهنویسی رایج دیگر که بلاکهای کد در آکولاد تعریف میشوند (بهویژه زبانهایی که از گرامر زبان سی پیروی میکنند) در زبان پایتون از نویسه فاصله و جلوبردن متن برنامه برای مشخص کردن بلاکهای کد استفاده میشود. به این معنی که تعدادی یکسان از نویسه فاصله در ابتدای سطرهای هر بلاک قرار میگیرند، و این تعداد در بلاکهای کد درونیتر افزایش مییابد. بدین ترتیب بلاکهای کد به صورت خودکار ظاهری مرتب دارند.
پایتون مدلهای مختلف برنامه نویسی (از جمله شیء گرا و برنامه نویسی دستوری و تابع محور) را پشتیبانی میکند و برای مشخص کردن نوع متغییرها از یک سامانهٔ پویا استفاده میکند.
این زبان از زبانهای برنامه نویسی مفسر بوده و به صورت کامل یک زبان شیگرا است که در ویژگیها با زبانهای تفسیری پرل، روبی، اسکیم، اسمالتاک و تیسیال مشابهت دارد و از مدیریت خودکار حافظه استفاده میکند.
پایتون پروژهای آزاد و متنباز توسعهیافتهاست و توسط بنیاد نرمافزار پایتون مدیریت میگردد.