پرسش و پاسخ زبان سی پلاس پلاس c++
این تاپیک بنا به درخواست دوستان مخصوص آموزش برنامه نویسی Visual Studio C++ 2008 قرار گرفته است...
http://i28.tinypic.com/e6c27s.jpg در اینجا نحوه کار با نرم افزار بصورت فیلم و کد نویسی در این IDE آموزش داده میشه... در پایان هر قسمت سوالاتی مطرح میشه.... برای تمرین بیشتر... هرگونه مشکل در مورد این سوالات یا فیلم های گذاشته شده ( برای جلوگیری از بهریختگی) در تاپیک رفع اشکال در ++C مطرح کنید... موفق باشید |
برای شروع از همه دوستان خواهش می کنم نرم افزار Visual Studio C++ 2008 را نصب کنند... تا زمانی که آموزش را شروع کردیم همه نرم افزار را بر روی سیستم داشته باشند...
می توانید از VS 2005 هم استفاده کنید ...چون برای کار آموزشی ما زیاد تفاوتی ایجاد نمی کند... http://xs130.xs.to/xs130/08336/vse_cpp_header485.jpg می توانید VS C++ 2008 را به همراه پک کامل VS 2008 را از اینجا دانلود کنید. |
در این فیلم می توانید طریقه ساخت یک پروژه در محیط Visual Studio C++ 2008 را مشاهده کنید...
فیلم را می توانید با Windows Media Player مشاهده کنید... http://xs130.xs.to/xs130/08352/safs849.jpg http://ufile.info/up/files/8bya3ci0ndki0c7h3eo5.gif حجم دانلود : 2.7 مگابایت |
اجرای برنامه Hello World
با برنامه Hello World کار را شروع می کنیم...
در این برنامه فقط یک جمله که Hello World است را در خروجی چاپ می کنیم... این کدی است که اجرای آن را در فیلم مشاهده می کنید.. كد: #include<iostream> usingnamespace std; int main() { cout << "Hello World!" <<endl ; return 0; } چند نکته را توجه کنید : 1-برای ورودی - خروجی در VS 2008 حتما باید عبارت های كد: #include<iostream> usingnamespace std; را در تمام برنامه ها بنویسید.. 2- همچنین برای استفاده از کتابخانه ها اصلا از h. استفاده نکنید.. برای مثال اگر از کتابخانه iostream.h می خواهید استفاده کنید ..تنها iostream را بنویسید... 3- برای رفع اشکال(Debug) کلید F7 را بزنید و برای اجرای برنامه Ctlr + F5 را بزنید.. البته می توانید از کلید های که در منوی بالا موجود است استفاده کنید...که در فیلم این کار آموزش داده شده است... 4- برای چاپ در خروجی عبارت >> cout را بنویسید.. 5- در پایان تمام عبارت ها کتیشن( ; ) را بگذارید چون نذاشتن آن باعث خطا در برنامه می شود.. حجم دانلود 2.1 مگابایت |
توضیحات مختصری در مورد زبان ++C
دستورات زبان C به حروف كوچك و بزرگ حساس هستند و تمام كلمات كليدي اين زبان با حروف كوچك هستند.( case sensitive ) حداكثر طول يك دستور 255 كاراكتر است. تمامي دستورات به ; ختم مي شوند.(سمي كولون) توضيحات در C بين //(براي يك خط) و /* ..... */ (براي چند خط) قرار مي گيرند. ساختار يك برنامه ساده درC بصورت زير مي باشد: void main() { تعريف متغيرها : دستورات : } كاراكترهاي } و { نشان دهنده آغاز و پايان يك بلو ك ميباشند. البته اين ساختار خيلي ساده است و در جلسه هاي آينده اين ساختار را گسترش خواهيم داد. انواع داده ها در C : داده هاي صحيح(integer): براي تعريف از كلمه كليدي int استفاده مي كنيم. داده هاي اعشاري(float): براي تعريف از كلمه كليدي floatاستفاده مي كنيم. داده هاي اعشاري با دقت مضاعف: براي تعريف از كلمه كليدي double استفاده مي كنيم. داده هاي كاراكتري: براي تعريف از كلمه كليدي char استفاده مي كنيم. داده تهي: براي تعريف از كلمه كليدي void استفاده مي كنيم. براي تعريف رشته ها در C نيز از char استفاده ميكنيم .البته رشته در C وجود ندارد و ما از آرايه كاراكتري براي تعريف رشته استفاده مي كنيم. كاراكتر ها در C بين گيومه(‘ ‘) و رشته ها بين كوتيشن(“ “)قرار مي گيرند. نحوه تعريف متغيرها: هر متغير از يكي از انواع بالا تعريف ميشود. البته نوع تهي براي تعريف توابع و نوع برگشتي آنها وقتي كه نمي خواهيم چيزي برگشت دهند به كار مي رود. براي تعريف متغيرها مي توان از حروف كوچك و بزرگ انگليسي و ارقام صفر تا نه استفاده كرد به شرطي كه نام متغير با عدد شروع نشود. شكل كلي تعريف متغير به صورت زير مي باشد: ;نام متغير نوع براي مثال: ; int a ; float a,b,c ; int a=5,b18 ; char ch خط اول متغير a را از نوع صحيح، خط دوم متغيرهاي a و bو c را از نوع اعشاري و خط آخر ch را از نوع كاراكتري تعريف مي كند . خط سوم علاوه بر تعريف متغير a مقدار 5 را نيز در آن قرار مي دهد همچنين متغير b18 را نيز بدون مقدار تعريف ميكند. عملگرهاي زبان C : (عملگرهاي محاسباتي) مثال مفهوم عملگر x+y عمل جمع + x-y و -x تفريق و منفي - x*y ضرب * x/y تقسيم صحيح و اعشاري / x%y باقيمانده تقسيم % ++x و x++ افزايش يك واحدي(incremnt) ++ x-- و --x كاهش يك واحدي(decrement) -- (عملگرهاي منطقي) مثال مفهوم عملگر R1 && R2 AND منطقي && R1 || R2 OR منطقي |
سلام
دوست عزیز دیگه ادامه نمیدین ؟ |
شماره گیری Dial up با ++C
برنامه ی ساده ای که یوزر و پسورد رو از شما میگیره و خودش به اینترنت وصل میشه ...
اول که باید یه پروژه جدید بسازید و ۳ تا edit box برای اطلاعات یوزر و پسورد و شماره تلفن. اولین کاری که باید کنید اینه که ۱-۲ کلاس رو به پروژه اضافه کنید که با ۲خط زیر انجام میدید: #include "ras.h" #include "raserror.h" حالا ۲ تا دکمه بگذارید برای وصل شدن و قطع ارتباط. برای وصل شدن از چند خط ساده زیر استفاده کنید که هر خط جداگانه توضیح داده شده: RASDIALPARAMS rdParams;// متغییری(شئی) است برای دادن اطلاعات مورد نیاز برای کانکت به اینترنت rdParams.dwSize = sizeof(RASDIALPARAMS); rdParams.szEntryName[0] = ''\0''; lstrcpy( rdParams.szPhoneNumber, m_strPhoneNumber );//در این قسمت شماره تلفن را مقدار دهی میکنیم rdParams.szCallbackNumber[0] = ''\0''; lstrcpy( rdParams.szUserName, m_strUserName );//در این قسمت یوزررا مقدار دهی میکنیم lstrcpy( rdParams.szPassword, m_strPassword );//در این قسمت پسورد را مقدار دهی میکنیم rdParams.szDomain[0] = ''\0''; HRASCONN hRasConn = NULL;//این متغییر برای نسبت دادن یک هندل به این کانکشن در صورت موفقیت خوهد بود که بتوان در آینده از آن استفاده کرد مثلا آنرا قطع کرد DWORD dwRet = RasDial( NULL, NULL, &rdParams, 0L, NULL, &hRasConn );//در این قسمت شروع به شماره گیری میکند و نتیجه شماره گیری بازگردانده می شود که در صورت موفقیت صفر و در غیر این صورت شماره خطلا خواهد بود if ( dwRet == 0 ) return true; char szBuf[256]; if ( RasGetErrorString( (UINT)dwRet, (LPSTR)szBuf, 256 ) != 0 )//اگر منجر به خطا شد با استفاده از شماره خطا متن خطا را بدست آمرده نمایش می دهیم و کانکشن را می بندیم wsprintf( (LPSTR)szBuf, "Undefined RAS Dial Error (%ld).", dwRet ); RasHangUp( hRasConn ); MessageBox( (LPSTR)szBuf, "Error", MB_OK | MB_ICONSTOP ); return false; تا ایجا نحوه خیلی ساده اتصال رو دیدیم. حالا باید در صورت نیاز امکان قطع کردن رو هم فراهم کنیم که اونم به سادگی کد زیر هستش: RASCONN ras[20]; DWORD dSize, dNumber; char szBuf[256]; connected=false; ras[0].dwSize = sizeof( RASCONN ); dSize = sizeof( ras ); // Get active RAS - Connection DWORD dwRet = RasEnumConnections( ras, &dSize, &dNumber ); if ( dwRet != 0 ) { if ( RasGetErrorString( (UINT)dwRet, (LPSTR)szBuf, 256 ) != 0 ) wsprintf( (LPSTR)szBuf, "Undefined RAS Enum Connections error (%ld).", dwRet ); MessageBox( (LPSTR)szBuf, "RasHangUp", MB_OK | MB_ICONSTOP ); return false; } bool bOK = true; for( DWORD dCount = 0; dCount < dNumber; dCount++ ) { // Hang up that connection HRASCONN hRasConn = ras[dCount].hrasconn; DWORD dwRet = RasHangUp( hRasConn ); if ( dwRet != 0 ) { char szBuf[256]; if ( RasGetErrorString( (UINT)dwRet, (LPSTR)szBuf, 256 ) != 0 ) wsprintf( (LPSTR)szBuf, "Undefined RAS HangUp Error (%ld).", dwRet ); MessageBox( (LPSTR)szBuf, "RasHangUp", MB_OK | MB_ICONSTOP ); bOK = false; } } return bOK; با این ۲ تابع ساده میتونید به اینترنت متصل شید. اما نکاتی که هست اینه که : اولا اصلا کانکشن ویندوزی ساخته نمیشه. دوماً اینکه ایکون اتصال هم نمایش داده نمیشه و دست شمارو باز میگذاره که هرجور دوست دارید اعمال سلیقه کنید. |
این تاپیک خیلی جالبه حداقل برای من ادامه پیدا نمی کنه؟؟؟ {شیت شدن}:rolleyes:{شیت شدن} |
هی خاطر شماهم که شده ادامش میدمیم.
می خوایین از چه سطحی شروع بشه؟ |
آرایه ها و اشاره گرها نظر منه البته اگر که شما جدی می گین! سپاس:53::53::53: |
من جدیم
می خواین از همین حالا شروع کنیم؟ |
مرسی....
چرا که نه! |
پس بسم الله.
من عاشق توضیح دادن اشاره گر ها و آرایه هام. ( البته وقتی یه کاغذ جلوم باشه و بتونم روی اون کاغذ برای طرف مخاطبم شکل بکشم چون در این حالت خیلی گوتاتر و ساده تر میشه توضیح داد، پس مجبورم عکس هارو آپلود کنم. بزارین چندتا عکس بکشم و آپلود کنم ببینم میشه؟ |
با اجازه یک توضیح مختصری داره C++ بدم:
http://img.tebyan.net/Small%5C1386%5...2413527125.jpg این برنامه یک مجموعه 7 قسمتی از آموزش زبان برنامه نویسی C++ می باشد. در این مجموعه 67 صفحه آموزش این زبان برنامه نویسی قدرتمند به شما ارائه می شود. این آموزش شامل مبانی C++ ، عملگرهای ریاضی ، ساختارهای شرطی و گردشی ، کار با توابع ، توابع کتابخانه ای ، تابع نویسی ، آرایه ها و کار با رشته های کاراکتری می باشد. فایلهای با فرمت PDF است و باید با WinRAR آنها را از حالت فشرده خارج کرده و با Adobe Reader باز کنید دانلود دانلود کنید کاملا فارسی با فرم pdf |
درس اول: فرق بین اشاره گر ها و متغیر های عادی دو جمله اینجا می گم که در طول برنامه به اهمیت اونا پی می بریم: ----------------------------------------------------------------------------------- 1- آن چیزی که درون متغیر های عادی قرار میگیرد یک مقدار است. 2- آن چیزی که درون یک اشاره گر قرار می گیرد، یک آدرس است. ----------------------------------------------------------------------------------- به این شکل توجه کنید ( شکلها فقط تصورات ما هستند ) |
#include<iostream.h> #include<iomanip.h> void main() { int i,j,k,b,t=0,x; char code; cout<<"BE BARNAMEHYE RASME BEYZIE GHAEM KHOSH AMADID!"<<"\n"; cout<<"lotan ghtre bozorge beyzi ra vared konid:"; cin>>b; cout<<"lotan ghtre koochake beyzi ra vared konid:"; cin>>k; if(b==k) cout<<"shekle mored nazare shoma yek dayereh mibashad!"<<endl; cout<<"lotan code morede nazar ra vared konid:"; cin>>code; if(k%2==0) k=k/2; else k=k/2+1; cout<<setw(6); for(i=1;i<=k;i++) cout<<code; cout<<endl; if(b%2==0) b=b/2; else b=b/2+1; for(t=5;t>=4;t--) { |
cout<<setw(t)<<code; for(x=0;x<=1;x++) for(i=1;i<=(k-3)+(2*x);i++) cout<<" "; cout<<code<<endl; } for(j=1;j<=(b-4);j++) { cout<<setw(4); cout<<code; for(i=1;i<=(k+2);i++) cout<<" "; cout<<code<<endl; } for(t=4;t<=5;t++) { cout<<setw(t)<<code; for(x=0;x<=1;x++) for(i=1;i<=(k-3)+(2*x);i++) cout<<" "; cout<<code<<endl; } cout<<setw(6); for(i=1;i<=k;i++) cout<<code; cout<<endl; cout<<"az hosne entekhabe shoma sepas gozarim!"<<"\n"; } |
دوستان گرامی این برنامه ی رسم بیضیه!
با احتساب مشکلات کپی پیست برنامه یعنی پرانتز ها و... لطفا اگه تونستین درستش کنین! ممنون |
سلام منم مثه شما عاشق عملکرد اشاره گر ها هستم.......
واقعا چیزی که باعث قدرتمند شدن این زبان ساده میشه همینه ...مرسی بحث خوبی رو باز کردید... |
نوشتن برنامه های بازگشتی با سی پلاس پلاس
خب من الان میخوام از یک ویژگی خیلی خوب این زبان پرده بردارم و اونم اینه که ر زبان سی پلاس پلاس ما می تونیم برنامه های بازگشتی بنویسیم....
مثلا من الان کد برنامه عدد مغلوب رو اینجا میذارم واستون و از این این کد شروع می کنم... #include<iostream.h> #include<stdio.h> int Maghloub(int); int b; int main(){ int a; cin>>a; Maghloub(a); return 0; } int Maghloub(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(Maghloub(a)); } } مثلا شما بعد از اجرای این کد عدد123 را وار میکنید و برنامه عدد را به 321 تغییر میدهد |
برنامه بازگشتی بعد ما عبارتست از عمل تقسیم توسط تفریق متوالی
کدش اینه #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تابع آرگومان دهیم؟ با سپاس |
آرگومان برای تابع main() ارسال مقادیر برای فایل EXE (ارگومان خط فرمان command line argument )
آرگومان برای تابع main() ارسال مقادیر برای فایل EXE (ارگومان خط فرمان command line argument )
نقل قول:
این واسه برنامه های کنسول هست و برای برنامه هایی که فرم اپلیکیشن هستند من چیزی نمیدونم فرض رو هم بر این میگیریم که شما سوالت در مورد برنامه های به زبان سی هست . اولا کاربرد این چی هست ؟ مثلا شما در خط فرمان اگر notepad.exe رو بعدش اسم یه فایل متنی رو بنویسین و بزنین اون رو براتون باز میکنه یا یادتون هست در دوران داس مثلا edit text1.txt رو میزدی برنامه ادیبت این فایل رو باز میکرد به هر دلیلی شما بخواین ارگومانی رو بفرستین به برنامه باید تابع main از پیش اماده شده باشه . برای توضیحات بیشتر حتما توی نت برای argv argc سرچ کنین argc یه عدد صحیحه که حداقلش 1 هست و تعداد ارگونانهای موجود در خط فرمان رو نگه میداره (واسه این حداقلش یکه که اسم فایل رو باید نگه داره ) و argv ارایه ای از اشارگرهای رشته ای است کد:
# include <iostream.h> یک نکته اینکه این argc argv دو تا اسم اختیاری هستند هر چیزی میتونین بذارین منتهی این اسما متداول هستند و شما برای سرچ در نت از همین اسم استفاده کنین . char * argv[] این براکت برای این هست که ما طول رشته رو نمیدونیم . حالا برای دست یافتن به هرکدام از این رشته ها باید از ایندکس استفاده کرد مثلا argv[0] نام برنامه است و argv[1] اولین ارگومان است برنامه بالا همه ی ارگومان ها رو نشون میده . اسپیس و tab برای سپریتور قابل قبوله و اگر از رشته ای استفاده کردیم که خودش حاوی اسپیس بود باید اون رو توی "" بگذارید "this is a test" |
یک سوال کمی تا قسمتی امنیتی: چه کنیم که «.h »و «.cpp»واسط را به کاربر بدهیم اما پیاده سازی را به او ندهیم؟ |
سلام. |
سلام:)
دوتا سئال دارم شاید براتون عجیب باشه که نمیدونم ولی خب نمیدونم 1-کنسول اپلیکیشن چیه؟ 2-موقع آرگومان دادن به تابع چه جوری بفهمیم call by reference بهتره یا call by value ؟ منظورم اینه که تو آرگومانا کیا از علامت & استفاده کنیم؟ معمولا وقتی میخوایم جریان ورودی و خروجی رو تعریف کنیم برا گونه جدید، ازش استفاده میکنیم، ولی میخوام بدونم اولا چرا، دوما آیا همیشه اینجوریه؟ دیگه کجاها اینکارو بکنیم؟ یه سوال کوچولوی دیگه هم داشتم انگار یادم رف! یادم اومد میپرسمش. آها یادم اومد! فرق debug و run رو نمیدونم چیه. ممنون میشم بگید |
تا زکریا بیاد بنده شاگردش جواب میدم .
کنسولی که شما مد نظرت هست یعنی اینکه همون صفحه سیاهه بیاد توش برنامه بنویسی به جای اینکه فرم و دکمه و گرافیک ببینی کلا کنسول منظور کیبرد و مانیتور هست وقتی میگی cin یا cout یعتی اینکه ورودی رو نه از فایل نه از اسکنر بلکه از کیبرد بگیر و خروجی رو نه به فایل نه به پرینتر نه به هیچ ! بلکه به مانیتور ببر و چاپ کن بعضی وقتها شما نیازی به چاپ اطلاعات خروجی نداری فقط باید ذخیره ش کنی در فایل پس از cout استفاده نمیکنی (consol out console in ( یا مثلا در دستورات داس اگر یادتون باشه مثلا دستور copy con رو داشتی این هم همون کنسوله ... پس برنامه نویسی کنسول یعنی با خط فرمان کار کنی و خروجیتم همونجا توی اون صفحه توی مانیتور باشه ... در عوض فرم اپلیکیشن داری وب اپلیکشن داری و .../.. برای رفرنس و ولیو : تکنیک کال بای رفرنس برای این ایجاد شده که یه وقت یه داده ای خیلی بزرگه حجمشم زیاده به جای اینکه یه کپی ازش درست بشه و تو با کپیش کار کنی و دو نسخه داده داشته باشی میگی مستقیم با خود داده اصلی کار کن شما معمولا توابعتون تا الان توی درس مبانی مثلا یه عدد صحیح یا فلوت رو به تابعی ارسال کردی فوقش چند بایته ؟ اما همیشه اینطوری نیست یه وقت یه کلاس میسازی که کلی داده داره و یه شی از این کلاس رو به یه تابعی ارسال میکنی خب چون حجم اون شی بالاست به صرفه نیست که با مقدار کنی بلکه رفرنس میفرستی تا مستقیم با داده ی اصلی کار کنه خیلی هم سریعتره حالا جریان های ورودی خروجی هم معمولا اینطوری هستند که حجمشون بیشتره واسه همینه که از رفرنس استفاده میکنیم .... این دقیقا سوال خود من هم بود در درس مبانی و نمیدونستم اما از یه ترم بالایی پرسیدم. شما همون ران رو بزن خیال راحت خودش دیباگ هم میکنه . |
سلام به دوستان برنامه نویس.
من چند تا سوال فنی دارم.من کتاب مهندس جعفر نژاد قمی رو خوندم البته زبان سی رو.الان دارم کتاب مربوط به سی پلاس پلاس میخونم .اول اینکه چه جوری میتونم توانایی خودم توی زبان سی بسنجم و دوم چه کتابهایی رو در مورد سی پلاس پلاس پیشنهاد میکنید که مفید باشه و بیشترجنبه تمرینی باشه؟.و در ضمن الان میتونم برنامه هایی رو در این حد بنویسم که مثلا لیست از دانشجویان رو مرتب کنه معدلشونو حساب کنه و مشروط_:2: شدنشو مشخص کنه و امکان سرچ داشته باشه و از این قبیل امکانات .با ااین حساب چقدر دیگه باید کار کنم که کاملا مسلط شم؟ |
نقل قول:
راستش من تا حالا با DOS کار نکردم. ولی فک کنم لازم باشه نه؟ باید یادش بگیرم. این سوالو منم از یه سال بالایی پرسیدم، رفت توی مبحث فایل هایی که پسوندشون h. و exe. و cpp. هست. اما متوجه ش نشدم! و چون وقت نداشت دیگه پی ش نرفتم! شما که اینجا وقت دارین!؟ بازم ممنون. |
اون سال بالاییه فک کنم که من بودم!!! ولی تا اون جایی که یادمه چیزای دیگه ای هم گفتم!
تفاوت Run و Debug اینه که: وقتی ما Debug می کنیم کامپایلر کد رو می خونه، فایلای سرآمد و سایر امکانات مورد نیاز!! رو جمع آوری می کنه و اگر برنامه خطا نداشته باشه یه سری فایل برای برنامه ایجاد می کنه از جمله فایل exe که فایل اجراییه برنامس ولی زمانی که Run رو می زنیم فقط این فایل exe رو اجرا می کنیم پس برای بار اول باید Debug کرد و بعد که برنامه ساخته شد برای امتحان کردن برنامه با داده های مختلف از Run استفاده می کنیم! یعنی در این حالت سرعت Run بیشتر از سرعت Debug خواهد بود!!! |
هاهاه اولا من امروز قضیه استاد خطاب شدن ایوب رو فهمیدم گفتم ایوب شیطون بلاست ممکنه خودش رو به عزیزان ترم پایینی استاد معرفی کرده باشه که مشخص گشت ایشون تی ای بودند
دنیا چقدر کوچیک شده مهرگان خانم دانشجوی رازی زکریا معلمک (معلم کمکی) بچه ها در مورد کلاس و اکسپشن ایوب جان تیچر اسیستنت و بنده هم هیچکاره و همه عضو پی سی سیتی .. به علی پس فردا اقای امجدیان و خانم موسوی و جمشیدی و ... هم عضو سایت مکنیم و میکوبیم برای عضویت از استادان رجب زاده و چاله چاله و .. من شاید یه نکته رو درست توضیح ندادم من هم مثل خانم مهرگان وقتی مبانی داشتم نمیدونستم چرا در جریانهای ورودی و خروجی و سربارگذاری عملگر ها از رفرنس استفاده میکنیم و چون واقعا ازارم میداد از ادریس دوست همیشه عزیزم پرسیدم که الان در خدمت سربازی احتمالا دارند برای افسر ها و نگهبان ها در باب مزایای استفاده از فری ویر سخنها میراند در مورد ران و دیباگ هم عرض کردم شما ران رو بزن خیالت راحت باشه حوصله کردی اولای این متن رو بخونین When to Use a Debugger ایوب ران همیشه اخرین exe سالم و تولید شده رو اجرا میکنه بنابراین اگر تو کد رو عوض کردی چه خطا داشته باشه چه نداشته باشه بهتر نیست یه بار دیگه به طور کامل تمام عملیات لینک و کامپیال و دیباگ و همه ی خرگ و خوله های دیگه انجام بگیره ؟ بعضی وقتا ادم یادش نیست همون ران رو میزنه برنامه قشنگ اجرا میشه غافل از اینکه کدت یه کد تغییر یافته و غلطه و یه EXE فیک و غیر واقعی رو اجرا کردی اینطوره یا من اشتباه میکنم ؟ یه نگاه به سایتهای مرجع انداختم تازه یه بدبختی دیگه که هست اینه که نوشته بودند یه وقتهایی فایل اگزه-ی ایجاد شده مثلا خارج از محیط ویژوال استدیو خودش به خوبی باز و ران و اجرا میشه اما وقتی توی محیط برنامه نویسی رانش میکنی خطا میده و نوشته بودند این طبیعیه چون پراسس منیجر ویژوال استدیو با ویندوز فرق میکنه و ممکنه که گاهی پیش بیاد . |
این تاپیکو دوس دارم، منو یاد دانشگاه میندازه، خط به خط پستاتونو میخونم
یادش بخیر استاد مردوخی و خانومش، شیرینی ازدواجشونو سر کلاس ساختمان داده خوردیم، چقدر درس مدارمنطقیرو دوست داشتم، عجب هوای برنامه نویسی کردم و .... حسودیم شد:d |
اکنون ساعت 12:05 PM برپایه ساعت جهانی (GMT - گرینویچ) +3.5 می باشد. |
Powered by vBulletin® Version 3.8.4 Copyright , Jelsoft Enterprices مدیریت توسط کورش نعلینی
استفاده از مطالب پی سی سیتی بدون ذکر منبع هم پیگرد قانونی ندارد!! (این دیگه به انصاف خودتونه !!)
(اگر مطلبی از شما در سایت ما بدون ذکر نامتان استفاده شده مارا خبر کنید تا آنرا اصلاح کنیم)