PersianTools Forums

Go Back   PersianTools Forums > برنامه نویسی و طراحی وب، سیستمهای مدیریت سایت > برنامه نویسی > خانواده C++ , C

Reply
 
امکانات بيشتر
Old 12-17-2005, 09:57 PM   #61
saalek
مدیر بازنشسته
 
saalek's Avatar
 

Join Date: May 2005
Location: در پاي كوهپايه ها
Posts: 654



يك متغير چيست؟
از ديد يك برنامه نويس ، يك متغير ، يك مكاني در حافظه كامپيوتر شماست ، كه مي تواند يك مقدار را در خود ذخيره كند و شما مي توانيد بعدا دوباره اين مقدار را بازيابي كنيد.
To understand this, you must first understand a bit about how computer
memory works. Your computer’s memory can be thought of as a series of
cubby holes, all lined up in a long row. Each cubby hole—or memory loca-tion—
is numbered sequentially. These numbers are known as memory
addresses.

براي فهم اين ، شما بايستي اول مقداري راجع به طرز كار حافظه بدانيد. حافظه مثل حفره هايي است كه در يك رديف قرار گرفته اند. و اين خانه ها ، به ترتيب شماره گذاري شده اند. اين اعداد ، آدرسهاي حافظه نام دارند. Memory addresses .

Variables not only have addresses, they have names. For example, you might create a
variable named myAge . Your variable is a label on one of these cubby holes so that you
can find it easily, without knowing its actual memory address.
متغيرها نه تنها آدرس دارند ، بلكه ، نام هم دارند. براي مثال شما مي توانيد يك متغير با نام myage بسازيد. متغير شما نامي(برچسبي) است بر يكي از اين خانه ها ، و به اين ترتيب شما مي توانيد به راحتي آن را بيابيد ، بدون آنكه آدرس واقعي اين خانه حافظه را بدانيد.
در شكل زير متغير ما از خانه 103 شروع مي شود.




وقتي يك برنامه نويس از حافظه صحبت مي كند ، منظورش Ram است. كه هر وقت كامپيوتر خاموش بشود ، پاك مي شود و بعدا از Hard باز پر مي شود. متغيرها در Ram شكل مي گيرند. .




در ادامه اين مطلب كه ديگه متن اصلي را نمي گذارم، مي گويد كه شما دو وظيفه داريد موقع ايجاد يك متغير،
اول اينكه نامي براي آن تعيين كنيد.
دوم آنكه type را تعيين كنيد. مثل : integer, character, زيرا بايد معلوم شود كه چند خانه حافظه براي نگه داري اين متغير لازم است.
.
متغير char يك بايت حافظه مي خواهد. Short int در بيشتر كامپيوترها نياز به 2 بايت حافظه دارد. و long int نياز به 4 خانه حافظه دارد. و int بدون پيشوند long يا short مي تواند 2 يا 4 بايت باشد.

اگر شما ويندوز 95 يا 98 يا NT داريد ، مي توانيد int را 4 بايت تعيين كنيد وقتي يك كامپايلر مدرن داريد. شايد اين جمله را من خوب ترجمه نكردم. متن اصلي را مي گذارم.

If you are running Windows 95,Windows 98, or Windows NT, you can count on your int being four bytes as long as you use a modern compiler.

در ادامه ،
دستور sizeof به شما تعداد حافظه هر متغير را مي دهد.


#include <conio.h>
#include <iostream.h>

void main()
{
clrscr();
// ----------- shoroe ghaaleb -----------------
cout <<"The size of an int is:";
cout <<sizeof(int)<<"bytes.."<<endl;
cout <<"The size of a short int is:";
cout <<sizeof(short)<<"bytes.."<<endl;
cout <<"The size of a long int is:";
cout <<sizeof(long)<<"bytes.."<<endl;
cout <<"The size of a char is:";
cout <<sizeof(char)<<"bytes.."<<endl;
cout <<"The size of a float is:";
cout <<sizeof(float)<<" bytes.."<<endl;
cout <<"The size of a double is:";
cout <<sizeof(double)<<" bytes.."<<endl;
// ----------- entehaye ghaaleb -----------------
getch();
}



البته نتايج بالا مربوط به كامپيوتر من است. ويندوز من 98 است و توربو سي 3.0 استفاده مي كنم.
مقاديري كه در اين كتاب ذكر شده را در عكس زير مي بينيد و گفته كه ممكن است در كامپيوتر شما متفاوت باشد. اگر فرق داشت ، بي زحمت بگيد تا مقايسه اي بكنيم.



.
__________________
estefa va khoroj az forum. dostare hameye shoma.bye.

Last edited by saalek; 02-13-2006 at 11:33 PM..
saalek is offline   Reply With Quote
Old 12-18-2005, 12:48 AM   #62
saalek
مدیر بازنشسته
 
saalek's Avatar
 

Join Date: May 2005
Location: در پاي كوهپايه ها
Posts: 654
به برنامه زير دقت كنيد:




#include <conio.h>
#include <iostream.h>


void main()
{
clrscr();
char c ;
menu:
// ----------- shoroe ghaaleb -----------------

unsigned short int a;
short int b;
a=40000;
b=40000;
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;

// ----------- entehaye ghaaleb -----------------
cout<<"end -x > exit-any key > repeat"<<endl;
c=getch();
if(c != 'x') goto menu;
}




ما به a و b مقدار 40 هزار داده بوديم. ولي b مقداري اشتباه را نشان مي دهد.
قضيه از اين قراره كه وقتي كلمه unsigned را بكار مي بريم ، يعني اينكه فقط مقادير مثبت را مي خواهيم استفاده كنيم .
نوع int تا 32000 را قبول مي كند. خودتان حساب كنيد. 2 بايت حافظه را مي گيرد. هر بايت 8 بيت است. 2 بايت ميشه 16 بيت. حالا 2 را 16 بار در خودش ضرب كنيد. ميشه 65 هزار و 536 ولي يك بيت كم ميشه . چون براي علامت منفي يا مثبت استفاده ميشه. ميشه حدود 32 هزار .

حالا با دستور unsigned آن يك بيت را پس مي گيريم و باز ميشه 65 هزار . ولي ديگه اعداد منفي را نمي توانيم بهش بدهيم.
من براي امتحان 40 هزار را دادم كه بين 32 هزار بود و 65 هزار . و ديديد كه دومي قاطي كرد.
.

Last edited by saalek; 02-13-2006 at 11:35 PM..
saalek is offline   Reply With Quote
Old 12-18-2005, 01:11 AM   #63
plusdeck
Registered User
 
plusdeck's Avatar
 

Join Date: Feb 2005
Location: In My Earphones
Posts: 787
Send a message via Yahoo to plusdeck Send a message via Skype™ to plusdeck
Quote:
نوشته ای از saalek
اگر شما ويندوز 95 يا 98 يا NT داريد ، مي توانيد int را 4 بايت تعيين كنيد وقتي يك كامپايلر مدرن داريد. شايد اين جمله را من خوب ترجمه نكردم. متن اصلي را مي گذارم.
.
منظور از كامپايلر مدرن يعني كامپايلر تحت ويندوز.
اگه كامپايلر شما تحت داس باشه سيستم عامل به عنوان مثال مقدار 2 بايت به داده از نوع integer اختصاص ميده و اگه از كامپايلر تحت ويندوز استفاده مي كنيد مقدار 4 بايت رو.
plusdeck is offline   Reply With Quote
Old 12-18-2005, 01:52 AM   #64
saalek
مدیر بازنشسته
 
saalek's Avatar
 

Join Date: May 2005
Location: در پاي كوهپايه ها
Posts: 654



راجع به نوع char كه يك بايت است، ميشه 256 حالت كه همان كاراكترها ميشه .
اصطلاح ASCII يعني American Standard Code for Information .
لازم به تذكر است كه اين استاندارد را تمامي سيستم ها پشتيباني مي كنند.

Nearly every computer operating system supports ASCII, though many sup-port
other international character sets as well.



.
راجع به نام گذاري متغيرها كه قبلا 3 نكته را گفتيم. و نكته 4 اين كه معني دار باشه تا بدوانيم چي را در خود نگه مي داره. و نكته 5 هم اين كه سي++ به بزرگي و كوچكي حروف حساس است. يعني با حروف بزرگ اگر بنويسي و بعد با حروف كوچك ، ميشه دو تا اسم نه يك اسم.
3 تا قانون قبلي هم يكي اين بود كه با حرف يا آندرلاين شروع بشه . از حروف و اعداد و آندرلاين ساخته بشه و از كلمات كليدي سي++ هم استفاده نكند.
به قوانين نام گذاري و تعريف متغير در زير توجه كنيد.




دو روش مقدار دهي به متغير را در زير مي بينيد. يعني بلافاصله هم ميشه مقدار دهي كرد.




Last edited by saalek; 02-13-2006 at 11:56 PM..
saalek is offline   Reply With Quote
Old 12-18-2005, 01:54 AM   #65
saalek
مدیر بازنشسته
 
saalek's Avatar
 

Join Date: May 2005
Location: در پاي كوهپايه ها
Posts: 654
Quote:
نوشته ای از plusdeck
منظور از كامپايلر مدرن يعني كامپايلر تحت ويندوز.
اگه كامپايلر شما تحت داس باشه سيستم عامل به عنوان مثال مقدار 2 بايت به داده از نوع integer اختصاص ميده و اگه از كامپايلر تحت ويندوز استفاده مي كنيد مقدار 4 بايت رو.
خيلي ممنون. فكر كنم توربو سي تحت داس هم داريم. آيا ايني كه ما استفاده مي كنيم تحت ويندوزه؟
.
saalek is offline   Reply With Quote
Old 12-18-2005, 02:33 AM   #66
saalek
مدیر بازنشسته
 
saalek's Avatar
 

Join Date: May 2005
Location: در پاي كوهپايه ها
Posts: 654

#include <conio.h>
#include <iostream.h>

typedef unsigned short int ushort;

void main()
{
clrscr();char c ;
menu:
// ----------- shoroe ghaaleb ---------------

ushort a=10;
cout<<"a="<<a<<endl;


// ----------- entehaye ghaaleb -------------
cout<<"x=> exit anykey=> repeat"<<endl;
c=getch();if(c != 'x') goto menu;
}

به برنامه بالا دقت كنيد. با كلمه typedef مي توانيم يك اسم اختصاري براي نوعي از type انتخاب كنيم. در اينجا براي unsigned short int اسم ushort را گذاشتيم. و از اين كلمه در برنامه استفاده كرديم.
توجه كنيد كه ما type جديدي نساخته ايم بلكه يكي از type هاي موجود را اسم ديگري گذاشته ايم. اين براي اين خوبه كه در تايپ كردن صرفه جويي كنيم.
saalek is offline   Reply With Quote
Old 12-18-2005, 02:48 AM   #67
saalek
مدیر بازنشسته
 
saalek's Avatar
 

Join Date: May 2005
Location: در پاي كوهپايه ها
Posts: 654

#include <conio.h>
#include <iostream.h>

void main()
{
clrscr();char c ;
menu:
// ----------- shoroe ghaaleb -------------
unsigned short int smallnumber;
smallnumber =65535;
cout <<"small number:" <<smallnumber <<endl;
smallnumber++;
cout <<"small number:" <<smallnumber <<endl;
smallnumber++;
cout <<"small number:" <<smallnumber <<endl;

// ----------- entehaye ghaaleb -----------
cout<<"x=> exit anykey=> repeat"<<endl;
c=getch();if(c != 'x') goto menu;
}

برنامه بالا براي اينه كه بگيم وقتي از حدود مجاز يك متغير تجاوز كنيم چي ميشه. برنامه بالا را اجرا كنيد. 3 عدد خروجي اش است كه به ترتيب 65535 و صفر و يك است.
.
==================================

اما در مورد متغيرهاي علامت دار ، وضع به گونه ديگري است. در شكل زير اين قضيه را مي بينيد. نتيجه اجرا را هم در ((گوشه تصوير)) مي بينيد. در اينجا اصطلاح آينه اي شدن را بكار مي برند. فكر كنيد كه چرا اين اصطلاح بكار مي رود.



.

Last edited by saalek; 02-13-2006 at 11:58 PM..
saalek is offline   Reply With Quote
Old 12-18-2005, 01:51 PM   #68
saalek
مدیر بازنشسته
 
saalek's Avatar
 

Join Date: May 2005
Location: در پاي كوهپايه ها
Posts: 654
كمي به عقب برگشتيم. شرمنده. منظورم پستهاي بالاست كه راجع به متغير صحبت شده.
راستش كتاب sams خيلي پايه اي راجع به متغيرها صحبت كرده بود و من دلم نيامد نگم.
كمي هم با ديد اسمبلي نگاه كرده بود به قضيه. به نظر من كسي كه سي كار مي كنه ، خيلي خوبه كه درك اسمبلي اش قوي باشه . چون همان طور كه مي گن ، سي يك زبان سطح مياني است و اين خصيصه تقريبا منحصر به فرده . سي بخاطر نزديكي به زبان ماشين خيلي قوي و سريع است. در عين حالي كه ميشه سي را يك زبان سطح بالا هم حساب كرد. منظور من از سطح بالا اينه كه به زبان انسان نزديك باشه.
كلا ، سي ، هم به زبان ماشين نزديكه ، هم به زبان انسان و اين خيلي خوبه.
ولي چون به زبان انسان شبيه است ممكنه با ماشين كمي ما بيگانه بشويم. يعني مثل اسمبلي نويسي نيست كه يكسره در تماس با سخت افزار باشيم ، بلكه سي با تعريف هاي دقيق خودش ارتباط با اسمبلي را برقرار مي كنه نه اينكه واقعا به زبان ماشين بنويسيم. اگر اين تعاريف را خوب بلد باشيم ، انگار كه داريم اسمبلي مي نويسيم.

Last edited by saalek; 12-18-2005 at 02:46 PM..
saalek is offline   Reply With Quote
Old 12-18-2005, 02:44 PM   #69
لیلی
Registered User
 

Join Date: Nov 2005
Location: Esf
Posts: 15
سلام saalek
واقعا کار جالبی رو شروع کردی.من از اولش دنبال میکردم.من هم مبتدی هستم.بیشتر تمرین حل می کنم.
یه پیشنهاد داشتم.اگه از اون کتابی که درس میدی میشه تمرین های جالبشو هم اخر هر مبحث بذاری؟(البته خیلی سخت نباشه!!)
راستی من 2 تا برنامه است که توش اشکال دارم.اگه کمک کنی ممنون میشم.

1)برنامه ای که عدد صحیح مثبت n را از ورودی بگیرد و کلیه اعداد کوچکتر یا مساوی با n را که خود اعداد برابر سمت راست مربعشان باشد در خروجی چاپ کند.مثلا اگر n=80 باشد اعداد 1 .5 .6 .25 .76 چاپ کند.(1=1 و 5*5=25 و6*6=36 و25*25=625 و76=5776 )

2)برنامه ای که عددی را بخواند وعددی را محاسبه کند که ارقام ان از ارقام عدد اولیه باشد و بزرگترین عدد ممکن.در دو حالت 1)با ارقام تکراری و 2)بدون ارقام تکراری.مثلا اگر عدد خوانده شده 50952 باشد1)عدد 95520 و برای حالت دوم عدد 9520 را چاپ کند.
لیلی is offline   Reply With Quote
Old 12-18-2005, 05:55 PM   #70
saalek
مدیر بازنشسته
 
saalek's Avatar
 

Join Date: May 2005
Location: در پاي كوهپايه ها
Posts: 654
Quote:
نوشته ای از لیلی
سلام 1)برنامه ای که عدد صحیح مثبت n را از ورودی بگیرد و کلیه اعداد کوچکتر یا مساوی با n را که خود اعداد برابر سمت راست مربعشان باشد در خروجی چاپ کند.مثلا اگر n=80 باشد اعداد 1 .5 .6 .25 .76 چاپ کند.(1=1 و 5*5=25 و6*6=36 و25*25=625 و76=5776 )

2)برنامه ای که عددی را بخواند وعددی را محاسبه کند که ارقام ان از ارقام عدد اولیه باشد و بزرگترین عدد ممکن.در دو حالت 1)با ارقام تکراری و 2)بدون ارقام تکراری.مثلا اگر عدد خوانده شده 50952 باشد1)عدد 95520 و برای حالت دوم عدد 9520 را چاپ کند.
سلام دوست گرامي.
خيلي خوب كرديد كه پيام داديد. اين جوري آدم بهتر مي داند چكار كند.

راجع به سئوالات شما من خيلي كار كردم. با توابع رياضي ميشه حل كرد و من هم از همين راه رفتم. ولي آنقدر پيچيده ميشه كه خود آدم هم نمي دونه آخرش چكار كرده.
به نظر من نيازي به اين محاسبات پيچيده رياضي نيست. چون با توابع رشته اي خيلي كار ساده تره. چون (( مسئله شما ، به اعداد به چشم رشته نگاه مي كند)) ، پس بايد با توابع رشته اي حل بشه. و با توابع رياضي 5 برابر مراحل كار بيشتره. توابع حاضر و آماده اي سي داره كه به راحتي عددي را به رشته تبديل مي كند و بالعكس. مي توانيم هر جا خواستيم عددي روي عدد كار كنيم ، هر جا راحت تر بود ، سريع به رشته تبديل كنيم و رشته اي كار كنيم.

در ضمن من خيلي ضعيفم و دوستان ديگه به سادگي هر چه تمام تر اين مسائل را حل مي كنند.
البته من هم با همان روشهاي ضعيف خود حل خواهم كرد ولي چون هنوز رشته ها را نگفته ايم ، براي من سخته .
راجع به تمرينات ، من در حال حاضر 3 كتاب الكترونيكي دارم كه تمرينات آخر فصل ندارد. ولي اگر در سايتي ديدم منتقل مي كنم. دوستان هم ممكنه داشته باشند. . اگر لطف كنند خيلي خوبه.
.
.

Last edited by saalek; 12-19-2005 at 03:25 AM..
saalek is offline   Reply With Quote
Old 12-18-2005, 05:58 PM   #71
saalek
مدیر بازنشسته
 
saalek's Avatar
 

Join Date: May 2005
Location: در پاي كوهپايه ها
Posts: 654
يكسري تمرين ساده از :
stranger_in_rain
با تشكر از ايشان.
=====================
دسته ی اول سوالات :

1-وزن یک مولکول آب23^10*3 و وزن یک لیتر آب در حدود 950 گرم است . برنامه ای بنویسید که وزن آب را بر حسب لیتر از ورودی خوانده و تعداد مولکوتهای ان را محاسبه کند.


2- هرسال برابر با 7^10 *156/3 ثانیه است. برنامه ای بنویسید که سن شما را دریافت کرده به ثانیه تبدیل کند.


3-برنامه ای بنویسید که حقوق کارمندی را خوانده بیمه ومالیات ودریافتی محاسبه کند و نمایش دهد.
بیمه=حقوق کارمند *7%
مالیات= حقوق کارمند *10%
دریافتی=بیمه-مالیات-حقوق


4-برنامه ای که قیمت کالایی را در سال قبل و جاری خوانده نرخ تورم و قیمت سال بعد را چاپ کند.نرخ تورم باید به صورت درصد مثلا 6.5% چاپ گردد.


5- مدیر شرکتی به هر متخصص خود ماهانه 750000 ریال پرداخت میکند.او میخواهد بداند که اگر5/13 درصدبه حقوق هر متخصص اضافه کند سالانه چقدر به هزینه شرکت اضافه میشود. برنامه ای بنویسید که تعداد متخصصین را خوانده این کار را انجام دهد.


6-برنامه ای بنویسید که عدد دورقمی را خوانده مجموع ارقام و مغلوب انرا چاپ کند.


7-برنامه ای بنویسید که عددی را خوانده بدون استفاده از عملگر ضرب عبارت زیر را محاسبه کند.
توضیح: دراین برنامه برای عمل ضرب از عملگر >> (شیفت به چپ ) استفاده میکنیم.



8-برنامهای بنویسید که سه عدد را خوانده بزرگترین عدد را نمایش دهد.


9- برنامه ای بنویسید که عددی را خوانده اگر عدد زوج باشد عبارت زوج اگر نه فرد را چاپ کندبرای حل این مسئله عملگرهای ؟و % مورد استفاده قرار میگیرد.


10- برنامه ای بنویسید که نام را خوانده که قد و وزن و سن فردی را خوانده اندازه لباسهای او را محاسبه کند
قد به اینچ / وزن به پوند*9/2=اندازه کلاه
7/5 /وزن به پوند =دور کمر به اینچ
▲برای افرادی که سن انها بالای 28 سال باشدبه ازای هر دو سال کامل 10/1 اینچ به دور کمر اضاف میگردد.
قد به اینچ *سن=اندازه کت به اینچ
. ▲ برای افراد بالای 30 سال به ازای هر 10 سال کامل 8/1 اینچ به اندازه کت اضافه میگردد.
===============
با تشكر از ايشان.
شايد اشاراتي به دستورات سي داشته باشد نه سي پلاس پلاس
ولي مهم مسائلي براي تمرين است
شايد هم بعضي براي اين قسمت نامناسب باشد
ديگه امكانات نيست من هم يه جايي فرستادم.
.
================
البته اينها تمرينات كتاب نيست. سئوالاتي است كه دوستي برايم فرستاده تا به موقع بكار برم. من هم قاطي كردم همه را بي موقع ارسال كردم.
.

Last edited by saalek; 12-19-2005 at 03:27 AM..
saalek is offline   Reply With Quote
Old 12-18-2005, 07:55 PM   #72
saeedsmk
مدیر بازنشسته
 
saeedsmk's Avatar
 

Join Date: Sep 2003
Posts: 1,523
Quote:
نوشته ای از لیلی
سلام saalek
واقعا کار جالبی رو شروع کردی.من از اولش دنبال میکردم.من هم مبتدی هستم.بیشتر تمرین حل می کنم.
یه پیشنهاد داشتم.اگه از اون کتابی که درس میدی میشه تمرین های جالبشو هم اخر هر مبحث بذاری؟(البته خیلی سخت نباشه!!)
راستی من 2 تا برنامه است که توش اشکال دارم.اگه کمک کنی ممنون میشم.

1)برنامه ای که عدد صحیح مثبت n را از ورودی بگیرد و کلیه اعداد کوچکتر یا مساوی با n را که خود اعداد برابر سمت راست مربعشان باشد در خروجی چاپ کند.مثلا اگر n=80 باشد اعداد 1 .5 .6 .25 .76 چاپ کند.(1=1 و 5*5=25 و6*6=36 و25*25=625 و76=5776 )

2)برنامه ای که عددی را بخواند وعددی را محاسبه کند که ارقام ان از ارقام عدد اولیه باشد و بزرگترین عدد ممکن.در دو حالت 1)با ارقام تکراری و 2)بدون ارقام تکراری.مثلا اگر عدد خوانده شده 50952 باشد1)عدد 95520 و برای حالت دوم عدد 9520 را چاپ کند.
برنامه اولت ميشه اين
Code:
#include <conio.h>
#include <iostream.h>

void main()
{
	clrscr();
	int Input_Num;
	int dumm;
	int Power_Ten;
	Input_Num=0;
	dumm=0;
	Power_Ten=0;
	cout<<"Please Enter number: ";
	cin>>Input_Num;
	for (int i=1;i<=Input_Num;i++){
		Power_Ten=10;
		while ((i/Power_Ten)>1)
			Power_Ten=Power_Ten*10;
		dumm=(i*i)%Power_Ten;
		if (dumm==i) cout<<"The number is "<< i <<" and power tow is "<<i*i<< endl;
	}
	cout<<"Press any key ...";
	getch();
}
كه اول مياد عدد رو ميگيره و بعد مياد ميبينه ازچه مرتبه 10 كوچكتره يعني يك رقمي دو رقمي يا و...
بعد مياد توان دو رو حساب كرده و بعد باقي مونده اون رو بر مرتبه ده اي كه بدست اورده بدست مياره
اينطوري عددي كه بدست مياد هم مرتبه عدد اوله و بعد اونها رو مقايسه و چاپ ميكنه

اما برنامه دومت بايد يه ارايه تعريف كني
بعد رقمهاي اعداد تو توش قرار بدي و بعد اونها رو از كوچيك به بزرگ مرتب كني حالا فرض كن اريت A[] عدت ميشه و 4 رقم داره
out=a[4]*10^4+a[3]*10^3 و الا اخر
اگه تكرار نيمخواي بعد از سورت بايد عدادي كه برابر هستند رو حذف كني و مثل فسمت قبل عددت رو حساب كني
__________________
در دنيايي كه مرگ شكارچي آن است بايد شكارچي بود.
300 the movie
saeedsmk is offline   Reply With Quote
Old 12-18-2005, 09:59 PM   #73
لیلی
Registered User
 

Join Date: Nov 2005
Location: Esf
Posts: 15
ممنون.من هم صبر می کنم تا به اون قسمت ها برسیم. من هم تو حلشون خیلی گیج شدم .البته saeedsmk توضیح داده.برنامه دوم هم سعی میکنم از رو توضیح saeed بنویسم.
البته این مسئله رو وقتی هنوز ارایه ها رو نخونده بودیم استادمون به عنوان مسئله اضافه داد حل کنیم.
از تمرین ها هم ممنون من هم اگه تمرین جالبی دیدم حتما می نویسم
لیلی is offline   Reply With Quote
Old 12-18-2005, 11:09 PM   #74
saalek
مدیر بازنشسته
 
saalek's Avatar
 

Join Date: May 2005
Location: در پاي كوهپايه ها
Posts: 654
مبناهاي عدد نويسي:

البته اكثرا اينها را بلدند و زياد هم يادگيريش ضروري نيست .
سه نوع مبنا در كامپيوتر استفاده ميشه . مبناي 2 ، مبناي 10 ، مبناي 16 .
در مبناي 10 كاراكترهاي مورد استفاده صفر تا 9 است يعني 10 حالت.
در مبناي 2 كاراكترهاي مورد استفاده صفر و يك است يعني 2 حالت.
در مبناي 16 كاراكترهاي مورد استفاده صفر تا 15 است يعني 16 حالت.


در مبناي 10 داريم: 0123456789
در مبناي 2 داريم:01
در مبناي 16 داريم: 0123456789abcdef

براي تبديل از مبناي 10 به 2 ، از تقسيم هاي متوالي بر 2 استفاده مي كنيم. و باقيمانده ها را كنار هم مي چينيم تا عدد در مبناي 2 حاصل شود.
اولين باقيمانده تقسيم(بر 2) ميشه اولين عدد از سمت راست و الي آخر.

اگر عددي در مبناي 16 عبارت باشد از 2f (بخوانيد 2 اف) و (ببينيد اف در سمت راسته و 2 در سمت چپه، چون در موقع انتقال به فروم ممكنه جاشون عوض بشه)

بله ، 2 اف ميشه 2 ضرب در 16 بعلاوه 15 .(a ميشه 10 ، b ميشه 11 ، c ميشه 12 ، d ميشه 13 ، e ميشه 14 ، f ميشه 15 ) پس ميشه 32 بعلاوه 15 كه ميشه 47 .

در درس pointer ها ديديم كه آدرس در مبناي 16 ارسال ميشه. البته نيازي به تبديل به مبناي 10 نبود ولي اين مبناها را گفتم تا معلوم بشه آن چطور ساخته ميشه.
كار در مبناي 16 ساده تر از مبناي 2 است. همين 47 را بياييد به مبناي 2 تبديل كنيم.
اول تقسيم بر 2 مي كنيم.
باقيمانده ميشه 1 . اين ميشه a0=1
خارج قسمت 23 بود كه باز تقسيم بر 2 ميشه 11 و باقيمانده 1 يعني a1=1
عدد 11 تقسيم بر 2 ميشه 5 و باقيمانده 1 يعني a2=1
پنج تقسيم بر 2 ميشه 2 و باقيمانده 1 يعني a3=1
دو تقسيم بر 2 ميشه 1 و باقيمانده ندارد. a4=0
و آخرين خارج قسمت هم ميشه a5=1
A=101111







.
كامپيوتر در مبناي 2 كار مي كند و انسان در مبناي 10 و
مبناي 16 آشتي بين انسان وكامپيوتر است.
.

Last edited by saalek; 02-13-2006 at 11:59 PM..
saalek is offline   Reply With Quote
Old 12-18-2005, 11:14 PM   #75
saalek
مدیر بازنشسته
 
saalek's Avatar
 

Join Date: May 2005
Location: در پاي كوهپايه ها
Posts: 654
Quote:
نوشته ای از
-----
آقا سعيد خيلي تميز مسئله را حل كرد. ممنون از ايشان.
و ممنون از همكاري و كمك شما.
.
saalek is offline   Reply With Quote
Reply

امکانات بيشتر

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +4.5. The time now is 03:18 AM.

PersianTools RSS Feeds


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.