پی سی سیتی

پی سی سیتی (http://p30city.net/index.php)
-   زبان های برنامه نویسی Programming (http://p30city.net/forumdisplay.php?f=12)
-   -   پرسش و پاسخ زبان سی پلاس پلاس c++ (http://p30city.net/showthread.php?t=12017)

deltang 07-24-2009 12:45 AM

پرسش و پاسخ زبان سی پلاس پلاس c++
 
این تاپیک بنا به درخواست دوستان مخصوص آموزش برنامه نویسی Visual Studio C++ 2008 قرار گرفته است...

http://i28.tinypic.com/e6c27s.jpg


در اینجا نحوه کار با نرم افزار بصورت فیلم و کد نویسی در این IDE آموزش داده میشه...
در پایان هر قسمت سوالاتی مطرح میشه.... برای تمرین بیشتر...
هرگونه مشکل در مورد این سوالات یا فیلم های گذاشته شده ( برای جلوگیری از بهریختگی) در تاپیک رفع اشکال در ++C مطرح کنید...
موفق باشید

deltang 07-24-2009 12:46 AM

برای شروع از همه دوستان خواهش می کنم نرم افزار Visual Studio C++ 2008 را نصب کنند... تا زمانی که آموزش را شروع کردیم همه نرم افزار را بر روی سیستم داشته باشند...
می توانید از VS 2005 هم استفاده کنید ...چون برای کار آموزشی ما زیاد تفاوتی ایجاد نمی کند...
http://xs130.xs.to/xs130/08336/vse_cpp_header485.jpg

می توانید VS C++ 2008 را به همراه پک کامل VS 2008 را از اینجا دانلود کنید.

deltang 07-24-2009 12:46 AM

در این فیلم می توانید طریقه ساخت یک پروژه در محیط Visual Studio C++ 2008 را مشاهده کنید...
فیلم را می توانید با Windows Media Player مشاهده کنید...


deltang 07-24-2009 12:48 AM

اجرای برنامه 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 مگابایت

deltang 07-24-2009 12:48 AM

توضیحات مختصری در مورد زبان ++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 منطقي

tajerman 10-12-2009 06:51 AM

سلام
دوست عزیز دیگه ادامه نمیدین ؟

sheida.m 10-14-2009 01:18 PM

شماره گیری 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;
با این ۲ تابع ساده میتونید به اینترنت متصل شید. اما نکاتی که هست اینه که :
اولا اصلا کانکشن ویندوزی ساخته نمیشه.
دوماً اینکه ایکون اتصال هم نمایش داده نمیشه و دست شمارو باز میگذاره که هرجور دوست دارید اعمال سلیقه کنید.

raha_10 02-01-2010 10:59 AM

این تاپیک خیلی جالبه حداقل برای من ادامه پیدا نمی کنه؟؟؟
{شیت شدن}:rolleyes:{شیت شدن}

زکریا فتاحی 02-01-2010 12:03 PM

هی خاطر شماهم که شده ادامش میدمیم.
می خوایین از چه سطحی شروع بشه؟

raha_10 02-01-2010 01:26 PM

آرایه ها و اشاره گرها نظر منه البته اگر که شما جدی می گین!
سپاس:53::53::53:

زکریا فتاحی 02-01-2010 02:31 PM

من جدیم
می خواین از همین حالا شروع کنیم؟

raha_10 02-01-2010 02:33 PM

مرسی....
چرا که نه!

زکریا فتاحی 02-01-2010 02:40 PM

پس بسم الله.

من عاشق توضیح دادن اشاره گر ها و آرایه هام. ( البته وقتی یه کاغذ جلوم باشه و بتونم روی اون کاغذ برای طرف مخاطبم شکل بکشم چون در این حالت خیلی گوتاتر و ساده تر میشه توضیح داد، پس مجبورم عکس هارو آپلود کنم. بزارین چندتا عکس بکشم و آپلود کنم ببینم میشه؟

ali215 02-01-2010 02:59 PM

با اجازه یک توضیح مختصری داره C++ بدم:
http://img.tebyan.net/Small%5C1386%5...2413527125.jpg
این برنامه یک مجموعه 7 قسمتی از آموزش زبان برنامه نویسی C++ می باشد. در این مجموعه 67 صفحه آموزش این زبان برنامه نویسی قدرتمند به شما ارائه می شود. این آموزش شامل مبانی C++ ، عملگرهای ریاضی ، ساختارهای شرطی و گردشی ، کار با توابع ، توابع کتابخانه ای ، تابع نویسی ، آرایه ها و کار با رشته های کاراکتری می باشد. فایلهای با فرمت PDF است و باید با WinRAR آنها را از حالت فشرده خارج کرده و با Adobe Reader باز کنید
دانلود
دانلود کنید کاملا فارسی با فرم pdf

زکریا فتاحی 02-01-2010 03:01 PM

درس اول: فرق بین اشاره گر ها و متغیر های عادی

دو جمله اینجا می گم که در طول برنامه به اهمیت اونا پی می بریم:

-----------------------------------------------------------------------------------
1- آن چیزی که درون متغیر های عادی قرار میگیرد یک مقدار است.
2- آن چیزی که درون یک اشاره گر قرار می گیرد، یک آدرس است.

-----------------------------------------------------------------------------------
به این شکل توجه کنید ( شکلها فقط تصورات ما هستند )

http://thumbnails28.imagebam.com/662...bf66260197.gif

وقتی که من می نویسم int a ، در حافظه ی کامپیوتر و در جایی با آدرس مشخص، خانه ای درست می شود که اسم آن برابر a و آدرس آن نیز مقداری مشخص ( در شکل فرضی ما دارای آدرس فرضی 0101).
می توانیم این خانه را همانند شکل سمت چپ تصور کنیم که: یک مستطیل با اسمی در بالا ی آن و یک آدرس فرضی در زیر آن، که وقتی من مینویسم a=10 مقدار 10درون این خانه قرار می گیرد همانند شکل زیر:

http://thumbnails20.imagebam.com/662...9466259980.gif

raha_10 03-02-2010 01:35 PM

#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--)
{

raha_10 03-02-2010 01:36 PM

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";
}

raha_10 03-02-2010 01:38 PM

دوستان گرامی این برنامه ی رسم بیضیه!
با احتساب مشکلات کپی پیست برنامه یعنی پرانتز ها و... لطفا اگه تونستین درستش کنین!
ممنون

ali_zangeneh 03-13-2010 05:25 PM

سلام منم مثه شما عاشق عملکرد اشاره گر ها هستم.......
واقعا چیزی که باعث قدرتمند شدن این زبان ساده میشه همینه ...مرسی بحث خوبی رو باز کردید...

ali_zangeneh 03-13-2010 05:54 PM

نوشتن برنامه های بازگشتی با سی پلاس پلاس
 
خب من الان میخوام از یک ویژگی خیلی خوب این زبان پرده بردارم و اونم اینه که ر زبان سی پلاس پلاس ما می تونیم برنامه های بازگشتی بنویسیم....
مثلا من الان کد برنامه عدد مغلوب رو اینجا میذارم واستون و از این این کد شروع می کنم...
#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 تغییر میدهد

ali_zangeneh 03-13-2010 06:01 PM

برنامه بازگشتی بعد ما عبارتست از عمل تقسیم توسط تفریق متوالی
کدش اینه
#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 است رو داشته باشیم...
پس مثال جالبی از آب در اومد فعلا خداحافظ تا مثال های بعدی

ali_zangeneh 03-13-2010 07:17 PM

ادامه برامه نویسی بازگشتی
 
برنامه بعدی برنامه ایی هست که بازم الگوریتم بازگشتی داشته و تعداد ارقام عدد ورودی رو مخص میکنه....
#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);
}
مثلا فرض کنید ما عدد 5 را برای بدست آوردن جمله پنجم فیبوناچی در برنامه ایی به تابع بازگشتی بالا می فرستیم...
تابع احتیاج به محاسبه تابع به ازای ورودی 4 و 3 داره و.....یعنی مقادری تکراری تولید میشه که این زیاد خوب نیست مثلا
طبق کتاب این الگوریتم برای محاسبه جمله 200 ام به 4*10000000000000سال زمان احتیاج داره تا اجرا بشه و این یعنی فاجعه.......
ولی الگوریتم ساده دیگه ایی رو کتاب برای این مساله اورده که ر مبنای آرایه نوشته و پایه ریزی شده که جملات تکراری تولید نشده و از جملات ماقبل که در آرایه ذخبره شده ا ستفاده میکنه...که به قرار زیره
:
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];
}
و این الگوریتم جدید برای همان جمله 200ام با شرایط مساوی به 201 نانو ثانیه زمان احتیاج داره...
ولی این یکی از ایراد های وارده به این نوع الگوریتم هاست که عموما درک راحت تری دارند نسبت به الگوریتم های مشابه...
حالا بحث مربوط به حافظه دیگه بماند حاش نیست.....و توسط توابع صف و پشته که خودمان مینویسیم میتونیم تا حدودی با
این مشکل مقابله کنیم...
ولی در کل این نتیجه گیری منه که برای باز کردن ذهن برنامه نویسان و رشدذهنی ورزش خوبیه....
و الان بعد از سالها یاد حرف استاد ترم اول دانشگاه می افتم که میگفت هر برنامه ایی رو میشه بازگشتی نوشت...
در ادامه بازم راجع به مثال هایی از برنامه های بازگشتی که در حد سواد خودم بوده وبرای درس ساختمان های داده نوشته ام
توجه کنید...
برنامه توان به صورت بازگشتی
:
#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));
}
}

در آخر هم باز ممنونم از کسانی که این بحث رو باز کردند تا فرستی برای تجدید خاطره پیش اومد....
اگر هم کم و کاستی به بزر گی خودتون ببخشید...حد و سواد من همین قدر بود...
خدایا در آغاز با نام تو شروع کردیم و در ضمن در دل یاد تو را می پروراندیم که دیدیم در آخر جز تو کسی برایمان نمانده است... یا حق

raha_10 03-15-2010 09:54 AM

سلام بچه ها من نمی دونم باید چی کار کنم تا برنامه نویسیم خوب بشه!!!
به کچلی دچار شدم!

ali_zangeneh 03-15-2010 10:08 PM

چگونه میتوان در برنامه نویسی سی پلاس پلاس قوی شد؟
 
سلام

سلام امیدوارم حالتون خوب باشه و سلامت باشید....
سواد من در حدی نیست که بخوام اظهار وجود کنم فقط راهی رو که خودم رفتم و نتیجه گرفتم
رو به شما هم پیشنهاد می کنم..
1=ابتدا کتاب آموزش فلوچارت تهییه کنید-->مثل آموزش فلوچارت شهریار رسولی
(با همت تمام و سمجی تمام الگوریتم هاشو کار کنید مهم نیست که چقر طول میکشه به دیگران بی توجه باشید و خودتونو با خودتون مقایسه کنید و سعی کنید همواره دید برنامه نویسانه داشته باشید)
2=انتخاب مرجع خوب برای سی پلاس پلاس انتخاب کنید --->کتاب زبان اصلی C++ How to Program 5th Edition

http://www.kamyabonline.com/download...%20Edition.jpg
من این کتاب رو پیشنهاد میکنم(ضمنا مرجع وزارت علومه)

آدرس دانلود:

که برای دانلود لازم است که بروی لینک آبی رنگ که نوشته شده است{دانلود با حجم ۱۰.۳ مگابایت}
کلیک راست کرده و گزینه Saveو یاsave as را بزنید

****************** فایلها به سایت ضمیمه نشده بود بنابراین این لینک حذف شد

از نشانی زیر با فرمتCHMاست رو دانلود کنید با حجم تقریبا 11 مگابایت هسستش ....
3=عملی کار کنید(برنامه نویسی ریاضی یا امار و معادلات دیفرانسیل نیست)
4=پروژه بنویسی (در حد پروژه های محاسبه معدل و ...)هم که شده

apoxid 10-18-2010 07:22 PM

درخواست
 
لینکت خرابه
خیلی بهش نیاز هم دارم
چه کنم؟

esygolden 10-18-2010 09:02 PM

منم مىخوام استارت سى ++رو بزنم.عاشق برنامه نويسيم.از دوستان كه در اين زمينه تجربه دارن تقاضا دارم كه تجاربشونو منتقل كنن.راستى همون قدر كه به برنامهنويسى علاقه دارم به جنبه درامدش هم فكر ميكنم.منتظر راهنماييهاتون هستم.باتشكر:53:

imann 10-19-2010 10:55 AM

سلام
داش اسی من هیچی از برنامه نویسی نمیدونم یعنی میتونم یاد بگیرم

esygolden 10-19-2010 12:17 PM

بله ايمان جون.جرا نشه ياد بليرى.اكه دوست داشته باشى ميتونيم باهم استارتشو بزنيم:53:

bigbang 10-27-2010 01:28 AM

بدون (++c) و (#c) که اصلاً برنامه نویسی معنی نداره بابا !
همچین گفتم انگار خودم آخر برنامه نویسی هستم اگر واقعاً پایه هستین ما هم یه هر از چند گاهی میاییم اینجا و یه چیزایی از شما یاد میگیریم !
ما حالا ،حالا ها موند مثل شما بشیم .

raha_10 10-28-2010 04:54 PM

یک سوال از درس برنامه نویسی ++c
چه طور میشه به یک فایل exeورودی داد
و
اینکه چه طور به mainتابع آرگومان دهیم؟
با سپاس

دانه کولانه 10-28-2010 07:59 PM

آرگومان برای تابع main() ارسال مقادیر برای فایل EXE (ارگومان خط فرمان command line argument )
 
آرگومان برای تابع main() ارسال مقادیر برای فایل EXE (ارگومان خط فرمان command line argument )
نقل قول:

نوشته اصلی توسط raha_10 (پست 192753)
یک سوال از درس برنامه نویسی ++c
چه طور میشه به یک فایل exeورودی داد
و
اینکه چه طور به mainتابع آرگومان دهیم؟
با سپاس



این واسه برنامه های کنسول هست و برای برنامه هایی که فرم اپلیکیشن هستند من چیزی نمیدونم
فرض رو هم بر این میگیریم که شما سوالت در مورد برنامه های به زبان سی هست .

اولا کاربرد این چی هست ؟
مثلا شما در خط فرمان اگر notepad.exe رو بعدش اسم یه فایل متنی رو بنویسین و بزنین اون رو براتون باز میکنه
یا یادتون هست در دوران داس مثلا edit text1.txt رو میزدی برنامه ادیبت این فایل رو باز میکرد
به هر دلیلی شما بخواین ارگومانی رو بفرستین به برنامه باید تابع main از پیش اماده شده باشه .

برای توضیحات بیشتر حتما توی نت برای
argv
argc
سرچ کنین

argc یه عدد صحیحه که حداقلش 1 هست و تعداد ارگونانهای موجود در خط فرمان رو نگه میداره (واسه این حداقلش یکه که اسم فایل رو باید نگه داره )
و argv ارایه ای از اشارگرهای رشته ای است


کد:

# include <iostream.h>

main( int argc,char *argv[])
{

int i;
for(i=1;i<argc;i++) cout<<argv[i]<<endl;
return 0;
}

یک نکته اینکه این argc argv دو تا اسم اختیاری هستند هر چیزی میتونین بذارین
منتهی این اسما متداول هستند و شما برای سرچ در نت از همین اسم استفاده کنین .
char * argv[] این براکت برای این هست که ما طول رشته رو نمیدونیم .
حالا برای دست یافتن به هرکدام از این رشته ها باید از ایندکس استفاده کرد
مثلا
argv[0] نام برنامه است
و argv[1] اولین ارگومان است
برنامه بالا همه ی ارگومان ها رو نشون میده .

اسپیس و tab برای سپریتور قابل قبوله و اگر از رشته ای استفاده کردیم که خودش حاوی اسپیس بود باید اون رو توی "" بگذارید
"this is a test"


raha_10 11-07-2010 04:56 PM

یک سوال کمی تا قسمتی امنیتی:
چه کنیم که «.h »و «.cpp»واسط را به کاربر بدهیم اما پیاده سازی را به او ندهیم؟

زکریا فتاحی 12-14-2010 10:28 AM

سلام.
بجز این راهی که الان بهتون میگم من دیگه راهی به زهنم نمیرسه جز اینکه تبدیلشون کنم به exe و بدم دست مردم.(چون .h و .cpp یعنی خود کد و نمیتونین اونا رو بدین ولی کسی از کدش خبر دار نشه)

اما راهی که هست اینه که کدتون رو obfuscate (آب فاس cate ) کنین.
تو جاوا یه همچین امکانی هست ولی برای cpp یا باید نرم افزارش رو گیر بیارین یا خودتون کدش ر بنویسین.
منظور از obfuscate چیه؟
این کار میاد کل متغیرهای کدتون رو rename می کنه از a تا z مثلا میگه a میره تو z و ... این یه کار ابتداییه ولی برای اینکه تازه کارها نتونن از کدتون چیزی بفهمن عالیه.
شما میاین .h یا .cpp تو رو obfuscate می کنین و بعد اون رو تحویل یه کاربر میدین.
کاربر بهرحال میتونه کد نوشته شده تو فایل .h یا .cpp تون رو ببینه اما چیزی که میبینه کدیه که هیچ قاعده و قانونی در نامگذاری متغیرهاش وجود نداره. که بازم میگم این روش تنها روشیه که به ذهن من میاد برای رفع مشکل شما و البته خیلی هم ابتداییه.

اگر میشد یه همچین کاری کرد که شما میخوایین, مایکروسافت دیوانه نبود که کد همه ی .h هاش رو تحویل همه ی کاربرها بده.
من خودم برای خیلی از الگوریتم ها از کدهای نوشته شده تو .h های مایکروسافت که همراه ویژوال نصب میشن استفاده میکنم.(البته آدم بدبخت میشه تا یه چیزی ازشون بفهمه)

مهرگان 02-25-2011 12:29 PM

سلام:)
دوتا سئال دارم شاید براتون عجیب باشه که نمیدونم ولی خب نمیدونم

1-کنسول اپلیکیشن چیه؟

2-موقع آرگومان دادن به تابع چه جوری بفهمیم call by reference بهتره یا call by value ؟
منظورم اینه که تو آرگومانا کیا از علامت & استفاده کنیم؟
معمولا وقتی میخوایم جریان ورودی و خروجی رو تعریف کنیم برا گونه جدید، ازش استفاده میکنیم، ولی میخوام بدونم اولا چرا، دوما آیا همیشه اینجوریه؟ دیگه کجاها اینکارو بکنیم؟

یه سوال کوچولوی دیگه هم داشتم انگار یادم رف! یادم اومد میپرسمش.

آها یادم اومد!
فرق debug و run رو نمیدونم چیه.
ممنون میشم بگید

دانه کولانه 02-25-2011 02:11 PM

تا زکریا بیاد بنده شاگردش جواب میدم .

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

کلا کنسول منظور کیبرد و مانیتور هست

وقتی میگی cin یا cout یعتی اینکه ورودی رو نه از فایل نه از اسکنر بلکه از کیبرد بگیر
و خروجی رو نه به فایل نه به پرینتر نه به هیچ ! بلکه به مانیتور ببر و چاپ کن
بعضی وقتها شما نیازی به چاپ اطلاعات خروجی نداری فقط باید ذخیره ش کنی در فایل پس از cout استفاده نمیکنی (consol out console in (


یا مثلا در دستورات داس اگر یادتون باشه مثلا دستور copy con رو داشتی این هم همون کنسوله ...
پس برنامه نویسی کنسول یعنی با خط فرمان کار کنی و خروجیتم همونجا توی اون صفحه توی مانیتور باشه ...
در عوض فرم اپلیکیشن داری وب اپلیکشن داری و .../..



برای رفرنس و ولیو : تکنیک کال بای رفرنس برای این ایجاد شده که یه وقت یه داده ای خیلی بزرگه حجمشم زیاده به جای اینکه یه کپی ازش درست بشه و تو با کپیش کار کنی و دو نسخه داده داشته باشی میگی مستقیم با خود داده اصلی کار کن
شما معمولا توابعتون تا الان توی درس مبانی مثلا یه عدد صحیح یا فلوت رو به تابعی ارسال کردی فوقش چند بایته ؟
اما همیشه اینطوری نیست یه وقت یه کلاس میسازی که کلی داده داره و یه شی از این کلاس رو به یه تابعی ارسال میکنی خب چون حجم اون شی بالاست به صرفه نیست که با مقدار کنی بلکه رفرنس میفرستی تا مستقیم با داده ی اصلی کار کنه
خیلی هم سریعتره
حالا جریان های ورودی خروجی هم معمولا اینطوری هستند که حجمشون بیشتره واسه همینه که از رفرنس استفاده میکنیم ....

این دقیقا سوال خود من هم بود در درس مبانی و نمیدونستم اما از یه ترم بالایی پرسیدم.

شما همون ران رو بزن خیال راحت خودش دیباگ هم میکنه .

esygolden 02-25-2011 08:37 PM

سلام به دوستان برنامه نویس.
من چند تا سوال فنی دارم.من کتاب مهندس جعفر نژاد قمی رو خوندم البته زبان سی رو.الان دارم کتاب مربوط به سی پلاس پلاس میخونم .اول اینکه چه جوری میتونم توانایی خودم توی زبان سی بسنجم و دوم چه کتابهایی رو در مورد سی پلاس پلاس پیشنهاد میکنید که مفید باشه و بیشترجنبه تمرینی باشه؟.و در ضمن الان میتونم برنامه هایی رو در این حد بنویسم که مثلا لیست از دانشجویان رو مرتب کنه معدلشونو حساب کنه و مشروط_:2: شدنشو مشخص کنه و امکان سرچ داشته باشه و از این قبیل امکانات .با ااین حساب چقدر دیگه باید کار کنم که کاملا مسلط شم؟

مهرگان 02-25-2011 09:46 PM

نقل قول:

نوشته اصلی توسط دانه کولانه (پست 208374)
این دقیقا سوال خود من هم بود در درس مبانی و نمیدونستم اما از یه ترم بالایی پرسیدم.

شما همون ران رو بزن خیال راحت خودش دیباگ هم میکنه .

خیلی ممنون ادمین...متوجه شدم.
راستش من تا حالا با DOS کار نکردم. ولی فک کنم لازم باشه نه؟ باید یادش بگیرم.

این سوالو منم از یه سال بالایی پرسیدم، رفت توی مبحث فایل هایی که پسوندشون h. و exe. و cpp. هست.
اما متوجه ش نشدم! و چون وقت نداشت دیگه پی ش نرفتم! شما که اینجا وقت دارین!؟
بازم ممنون.

kolbeye_shab 03-01-2011 02:16 PM

اون سال بالاییه فک کنم که من بودم!!! ولی تا اون جایی که یادمه چیزای دیگه ای هم گفتم!
تفاوت Run و Debug اینه که:
وقتی ما Debug می کنیم کامپایلر کد رو می خونه، فایلای سرآمد و سایر امکانات مورد نیاز!! رو جمع آوری می کنه و اگر برنامه خطا نداشته باشه یه سری فایل برای برنامه ایجاد می کنه از جمله فایل exe که فایل اجراییه برنامس
ولی زمانی که Run رو می زنیم فقط این فایل exe رو اجرا می کنیم
پس برای بار اول باید Debug کرد و بعد که برنامه ساخته شد برای امتحان کردن برنامه با داده های مختلف از Run استفاده می کنیم! یعنی در این حالت سرعت Run بیشتر از سرعت Debug خواهد بود!!!

دانه کولانه 03-01-2011 09:05 PM

هاهاه اولا من امروز قضیه استاد خطاب شدن ایوب رو فهمیدم گفتم ایوب شیطون بلاست ممکنه خودش رو به عزیزان ترم پایینی استاد معرفی کرده باشه که مشخص گشت ایشون تی ای بودند
دنیا چقدر کوچیک شده
مهرگان خانم دانشجوی رازی
زکریا معلمک (معلم کمکی) بچه ها در مورد کلاس و اکسپشن
ایوب جان تیچر اسیستنت و بنده هم هیچکاره و همه عضو پی سی سیتی ..
به علی پس فردا اقای امجدیان و خانم موسوی و جمشیدی و ... هم عضو سایت مکنیم و میکوبیم برای عضویت از استادان رجب زاده و چاله چاله و ..

من شاید یه نکته رو درست توضیح ندادم
من هم مثل خانم مهرگان وقتی مبانی داشتم نمیدونستم چرا در جریانهای ورودی و خروجی و سربارگذاری عملگر ها از رفرنس استفاده میکنیم و چون واقعا ازارم میداد از ادریس دوست همیشه عزیزم پرسیدم که الان در خدمت سربازی احتمالا دارند برای افسر ها و نگهبان ها در باب مزایای استفاده از فری ویر سخنها میراند


در مورد ران و دیباگ هم عرض کردم شما ران رو بزن خیالت راحت باشه
حوصله کردی اولای این متن رو بخونین
When to Use a Debugger

ایوب ران همیشه اخرین exe سالم و تولید شده رو اجرا میکنه بنابراین اگر تو کد رو عوض کردی چه خطا داشته باشه چه نداشته باشه بهتر نیست یه بار دیگه به طور کامل تمام عملیات لینک و کامپیال و دیباگ و همه ی خرگ و خوله های دیگه انجام بگیره ؟
بعضی وقتا ادم یادش نیست همون ران رو میزنه برنامه قشنگ اجرا میشه غافل از اینکه کدت یه کد تغییر یافته و غلطه و یه EXE فیک و غیر واقعی رو اجرا کردی

اینطوره یا من اشتباه میکنم ؟


یه نگاه به سایتهای مرجع انداختم تازه یه بدبختی دیگه که هست اینه که نوشته بودند یه وقتهایی فایل اگزه-ی ایجاد شده مثلا خارج از محیط ویژوال استدیو خودش به خوبی باز و ران و اجرا میشه اما وقتی توی محیط برنامه نویسی رانش میکنی خطا میده و نوشته بودند این طبیعیه چون پراسس منیجر ویژوال استدیو با ویندوز فرق میکنه و ممکنه که گاهی پیش بیاد .

رزیتا 03-02-2011 01:00 AM

این تاپیکو دوس دارم، منو یاد دانشگاه میندازه، خط به خط پستاتونو میخونم
یادش بخیر استاد مردوخی و خانومش، شیرینی ازدواجشونو سر کلاس ساختمان داده خوردیم،
چقدر درس مدارمنطقیرو دوست داشتم، عجب هوای برنامه نویسی کردم و ....
حسودیم شد:d


اکنون ساعت 12:05 PM برپایه ساعت جهانی (GMT - گرینویچ) +3.5 می باشد.

Powered by vBulletin® Version 3.8.4 Copyright , Jelsoft Enterprices مدیریت توسط کورش نعلینی
استفاده از مطالب پی سی سیتی بدون ذکر منبع هم پیگرد قانونی ندارد!! (این دیگه به انصاف خودتونه !!)
(اگر مطلبی از شما در سایت ما بدون ذکر نامتان استفاده شده مارا خبر کنید تا آنرا اصلاح کنیم)