![]() |
برنامه بازگشتی بعد ما عبارتست از عمل تقسیم توسط تفریق متوالی
کدش اینه #include<iostream.h> #include<stdio.h> int Devide(int,int); int i=0; int main(){ int a,b; cerr<<"Enter Two Number\n"; cin>>a>>b; cout<<"a/b="<<Devide(a,b); return 0; } int Devide(int a,int b){ if(a<b) return i; else { a=a-b; i++; return(Devide(a,b)); } } در این مثال هم شما تفریق رو انجام میدید ولی متوالی واین مفهوم تقسیمه.... راستی کسانی که در رشته مهندسی کامپیوتر درس خونده باشن در درس معماری کامپیوتر ما یاد میگیریم که cpu عمل جمع باینری رو فقط انجام میده و توسط این عمل ما ضرب وتوان و توسط جمع با قرینه(متمم2) رو میگم میتونیم منها و در نهایت تقسیم رو در واحد محاسبات که جزئی از Alu است رو داشته باشیم... پس مثال جالبی از آب در اومد فعلا خداحافظ تا مثال های بعدی |
ادامه برامه نویسی بازگشتی
برنامه بعدی برنامه ایی هست که بازم الگوریتم بازگشتی داشته و تعداد ارقام عدد ورودی رو مخص میکنه....
#include<iostream.h> برنامه بعد بازم مفهومی ضرب گونه داره با این تفاوت که الگوریتم ضرب هست ولی بازگشتی که توانایی ضرب رو در شرایطی که یکی از عملوند ها منفی یا هردو منفی باشند رو داره....همون طور که میدونید برنامه های بازگشتی در واقع یک خود فراخوانی است رو پشته سیستم و از پشته سیستم استفاده میکنه..و به این نکته هم توجه داشته باشید که هزینه اجرای برنامه هایی که توسط الگوریتم های بازگشتی نوشته میشه زیادتر از همون برنامه به روش غیر بازگشتیه ...از قدیم گفتن اگه راست میگی یه مثلا بیار#include<stdio.h> int Number(int); int i=1; int main(){ int a; cout<<"Enter A Number\n"; cin>>a; cout<<"Number Of Digit is="<<Number(a)<<"\n"; return 0; } int Number(int a){ if(a<10) return i++; else { a=a/10; i++; return(Number(a)); } } خوب من میخوام دو الگوریتم رو بررسی کنم که به یک صورت مساله اشاره داره اونم الگریتم معروف دنباله فیبوناچی هستش ... توضیح برا اونایی که نمیدونن فیبو ناچی چیه... دنباله ایی ریاضیه هستش که فرمولش انه Fn=F(n-1)+F(n-2) که در علم کامپیوتر و ریاضی کاربرد زیادی داره... به خاطر انکه همیشه دوست دارم اصل صداقت رو رعایت کنم ...به این نکته توجه داشته باشید که مطالبی رو که از این به بعد نقل میکنم راجع به دنباله فیبوناچی از کتاب طراحی الگوریتم ها نوشته ریچارد نیپولیتانه ترجمه پدر کامپیوتر ایران =جعفر نژاد به الگوریتم زیر که بازگشتی فیبوناچی هستش توجه کنید Int fib(int n){ If(n<=1) Return n; else return fib(n-1)+fib(n-2); } تابع احتیاج به محاسبه تابع به ازای ورودی 4 و 3 داره و.....یعنی مقادری تکراری تولید میشه که این زیاد خوب نیست مثلا طبق کتاب این الگوریتم برای محاسبه جمله 200 ام به 4*10000000000000سال زمان احتیاج داره تا اجرا بشه و این یعنی فاجعه....... ولی الگوریتم ساده دیگه ایی رو کتاب برای این مساله اورده که ر مبنای آرایه نوشته و پایه ریزی شده که جملات تکراری تولید نشده و از جملات ماقبل که در آرایه ذخبره شده ا ستفاده میکنه...که به قرار زیره : و این الگوریتم جدید برای همان جمله 200ام با شرایط مساوی به 201 نانو ثانیه زمان احتیاج داره...Int fib(int n){ Int I; Int f[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]; } ولی این یکی از ایراد های وارده به این نوع الگوریتم هاست که عموما درک راحت تری دارند نسبت به الگوریتم های مشابه... حالا بحث مربوط به حافظه دیگه بماند حاش نیست.....و توسط توابع صف و پشته که خودمان مینویسیم میتونیم تا حدودی با این مشکل مقابله کنیم... ولی در کل این نتیجه گیری منه که برای باز کردن ذهن برنامه نویسان و رشدذهنی ورزش خوبیه.... و الان بعد از سالها یاد حرف استاد ترم اول دانشگاه می افتم که میگفت هر برنامه ایی رو میشه بازگشتی نوشت... در ادامه بازم راجع به مثال هایی از برنامه های بازگشتی که در حد سواد خودم بوده وبرای درس ساختمان های داده نوشته ام توجه کنید... برنامه توان به صورت بازگشتی : #include<iostream.h> #include<stdio.h> #include<stdlib.h> float Power(int,int); int main(){ system("cls"); int a,b; cin>>a>>b; cout<<a<<"^"<<b<<"="<<Power(a,b)<<"\n\n\n\n\n\n\n"; return 0; } float Power(int a,int b){ if(b>=0){ if(b==0 ||a==1) return 1; else return (a*Power(a,b-1)); } if(b<0){ b=-b; return(1/Power(a,b)); } } برنامه عدد مغلوب : #include<iostream.h> #include<stdio.h> int ReverceNumber(int); int b; int main(){ int a; cout<<"Enter A Number\n"; cin>>a; ReverceNumber(a); return 0; } int ReverceNumber(int a){ if(a<10){ cout<<a; return a; } if(a==0) return 0; else { b=a%10; cout<<b; a=a-b; a=a/10; return(ReverceNumber(a)); } } در آخر هم باز ممنونم از کسانی که این بحث رو باز کردند تا فرستی برای تجدید خاطره پیش اومد.... اگر هم کم و کاستی به بزر گی خودتون ببخشید...حد و سواد من همین قدر بود... خدایا در آغاز با نام تو شروع کردیم و در ضمن در دل یاد تو را می پروراندیم که دیدیم در آخر جز تو کسی برایمان نمانده است... یا حق |
سلام بچه ها من نمی دونم باید چی کار کنم تا برنامه نویسیم خوب بشه!!!
به کچلی دچار شدم! |
چگونه میتوان در برنامه نویسی سی پلاس پلاس قوی شد؟
سلام
سلام امیدوارم حالتون خوب باشه و سلامت باشید.... سواد من در حدی نیست که بخوام اظهار وجود کنم فقط راهی رو که خودم رفتم و نتیجه گرفتم رو به شما هم پیشنهاد می کنم.. 1=ابتدا کتاب آموزش فلوچارت تهییه کنید-->مثل آموزش فلوچارت شهریار رسولی (با همت تمام و سمجی تمام الگوریتم هاشو کار کنید مهم نیست که چقر طول میکشه به دیگران بی توجه باشید و خودتونو با خودتون مقایسه کنید و سعی کنید همواره دید برنامه نویسانه داشته باشید) 2=انتخاب مرجع خوب برای سی پلاس پلاس انتخاب کنید --->کتاب زبان اصلی C++ How to Program 5th Edition http://www.kamyabonline.com/download...%20Edition.jpg من این کتاب رو پیشنهاد میکنم(ضمنا مرجع وزارت علومه) آدرس دانلود: که برای دانلود لازم است که بروی لینک آبی رنگ که نوشته شده است{دانلود با حجم ۱۰.۳ مگابایت} کلیک راست کرده و گزینه Saveو یاsave as را بزنید ****************** فایلها به سایت ضمیمه نشده بود بنابراین این لینک حذف شد از نشانی زیر با فرمتCHMاست رو دانلود کنید با حجم تقریبا 11 مگابایت هسستش .... 3=عملی کار کنید(برنامه نویسی ریاضی یا امار و معادلات دیفرانسیل نیست) 4=پروژه بنویسی (در حد پروژه های محاسبه معدل و ...)هم که شده |
درخواست
لینکت خرابه
خیلی بهش نیاز هم دارم چه کنم؟ |
منم مىخوام استارت سى ++رو بزنم.عاشق برنامه نويسيم.از دوستان كه در اين زمينه تجربه دارن تقاضا دارم كه تجاربشونو منتقل كنن.راستى همون قدر كه به برنامهنويسى علاقه دارم به جنبه درامدش هم فكر ميكنم.منتظر راهنماييهاتون هستم.باتشكر:53:
|
سلام
داش اسی من هیچی از برنامه نویسی نمیدونم یعنی میتونم یاد بگیرم |
بله ايمان جون.جرا نشه ياد بليرى.اكه دوست داشته باشى ميتونيم باهم استارتشو بزنيم:53:
|
بدون (++c) و (#c) که اصلاً برنامه نویسی معنی نداره بابا !
همچین گفتم انگار خودم آخر برنامه نویسی هستم اگر واقعاً پایه هستین ما هم یه هر از چند گاهی میاییم اینجا و یه چیزایی از شما یاد میگیریم ! ما حالا ،حالا ها موند مثل شما بشیم . |
یک سوال از درس برنامه نویسی ++c
چه طور میشه به یک فایل exeورودی داد و اینکه چه طور به mainتابع آرگومان دهیم؟ با سپاس |
اکنون ساعت 07:32 AM برپایه ساعت جهانی (GMT - گرینویچ) +3.5 می باشد. |
Powered by vBulletin® Version 3.8.4 Copyright , Jelsoft Enterprices مدیریت توسط کورش نعلینی
استفاده از مطالب پی سی سیتی بدون ذکر منبع هم پیگرد قانونی ندارد!! (این دیگه به انصاف خودتونه !!)
(اگر مطلبی از شما در سایت ما بدون ذکر نامتان استفاده شده مارا خبر کنید تا آنرا اصلاح کنیم)