• مشکی
  • سفید
  • سبز
  • آبی
  • قرمز
  • نارنجی
  • بنفش
  • طلایی
تعداد مطالب : 351
تعداد نظرات : 75
زمان آخرین مطلب : 6108روز قبل
کامپیوتر و اینترنت
آموزش زبان C بخش دهم
قسمت اول
ساختارهاي تكرار

ساختارهاي تكرار ، تحت شرايط خاصي امكان اجراي مكرر دستور يا مجموعه اي از
دستورات را فراهم ميكنند. اين ساختارها در زبان هاي برنامه سازي مختلف به اشكال
متفاوتي وجود دارند كه ذيلا" انواع مختلف اين ساختارها در زبان C ، مورد بررسي
قرار مي گيرد .

ساختار تكرار for
ساختار for يكي ازامكانات ايجاد حلقه تكرار ميباشد كه بصورتهاي زير استفاده
مي شود :
(َ1) ;دستور(گام حركت ;شرط حلقه ;مقدار اوليه انديس حلقه ) for
(َ2) (گام حركت ;شرط حلقه ;مقدار اوليه انديس حلقه ) for {

مجموعه دستورات }
for(;;( )3)
{

مجموعه دستورات }

نكاتي كه بايد در مورد نحوه كاربرد ساختار تكرار for در نظر داشت عبارتند
از : 1
دستوري كه بعد از ساختار for آمده است مي تواند در خط ديگري تايپ شود . 2
ساختار forبه ; ختم نمي شود . زيرا در غير اين صوتر مجموعه دستوراتي كه
اجراي آنها بايد تكرار شود ، فقط يك بار اجرا خواهند شد . 3
علامت { در نحوه كاربرد دوم و سوم ، مي توانند در همان خطي كه ساختار for
آمده است قرار گيرند . 4
بعد از اولين مقدار انديس حلقه و شرط حلقه ; قرار مي گيرد .
ساختار for در مواردي مفيد است كه تعداد دفعات تكرار مجموعه اي از دستورات
معلوم باشد ، هر حلقه تكرار داراي يك شمارنده است كه تعداد دفعات تكرار اجراي
دستورات داخل حلقه را مشخص مي كند. اين شمارنده ، انديس حلقه نامگذاري مي شود.
انديس حلقه مي تواند مثبت ، منفي ، صحيح و يا اعشاري باشد . مقدار اوليه انديس
حلقه مشخص مي كند كه شمارنده ، از چه مقداري شروع مي شود. شرط حلقه مشخص ميكند
كه مجموعه دستورات داخل حلقه تكرار ، تحت چه شرايطي اجرا مي شوند . گام حركت
مشخص مي كند كه در هر بار اجراي مجموعه دستورات داخل تكرار ، چه مقداري به
شمارنده حلقه اضافه مي شود . گام حركت مي تواند مثبت منفي ، صحيح و يا اعشاري
باشد . بعنوان مثال در دستور : for( i=0;i<5;i++)
printf("\n the value of i is:%d / i);
i
انديس حلقه تكرار است كه مقدار اوليه آن برابر با صفر است . شرط حلقه
تكرار اين است كه i كوچكتر از 5 باشد و گام حركت نيز 1 است كه با i++ مشخص شده
است . خروجي حاصل از اجراي اين دستور بصورت زير است : 0
1
2
3
4

مثال 1: برنامه اي كه تعداد 10 عدد را از ورودي خوانده ، ميانگين آنها را
محاسبه كرده و به خروجي مي برد : main)(
{
int i / sum=0 / num ;
float ave ;
for(i=1 ; i<=10 ; i++)
{
printf("enter number %d: "/i );
scanf("%d"/&num );
sum+=num ;
printf("\n" );
}
ave-sum/10 ;
printf("\n the average is:%f "/ave);
}

خروجي حاصل از اجراي برنامه مثال 1 : enter number 1 : 12
enter number 2 : 13
enter number 3 : 17
enter number 4 : 18
enter number 5 : 16
enter number 6 : 20
enter number 7 : 23
enter number 8 : 28
enter number 9 : 31
enter number 10 : 14

the average is:19.000000


مثال 2: برنامه زير جدول كدهاي اسكي را در خروجي چاپ مي كند : main)(
{
int i ;
for(i=41 ; i<=120 ; i++)
{
printf("%3d=%c\t"/i/i );
if(i%5==0 )printf("\n" );
}
}

برنامه فوق با چند دستور ساده توانسته است جدول زير را در خروجي چاپ كند . 41= )42=* 43=+ 44=/ 45=-
46= .47=/ 48=0 49=1 50=2
51=3 52=4 53=5 54=6 55=7
56=8 57=9 58= :59=; 60=<
61== 62=> 63=? 64=@ 65=A
66=B 67=C 68=D 69=E 70=F
71=G 72=H 73=I 74=J 75=K
76=L 77=M 78=N 79=O 80=P
81=Q 82=R 83=S 84=T 85=U
86=V 87=W 88=X 89=Y 90=Z
91=[ 92=\ 93=] 94=^ 95=_
96=` 97=a 98=b 99=c 100=d
101=e 102=f 103=g 104=h 105=i
106=j 107=k 108=l 109=m 110=n
111=o 112=p 113=q 114=r 115=s
116=t 117=u 118=v 119=w 120=x

اگر بخواهيم اين برنامه را در زبانهاي ديگر بنويسيم ، برنامه طولاني تري به
دست مي آيد .
خداییش اگر خوشت اومد نظر بده
دوشنبه 19/6/1386 - 21:51
کامپیوتر و اینترنت
آموزش زبان C بخش نهم
نوشتن يك كاراكتر در خروجي

براي نوشتن يك كاراكتر در خروجي علاوه بر تابع ()printf ، دو تابع ديگر نيز
معمولا" مورد استفاده قرار ميگيرند. قبل از بررسي آنها به مثالي درمورد ()print
كه منجر به چاپ يك كاراكتر در خروجي مي گردد . مي پردازيم . main)(
{
printf("example for character");
printf(": %c"/'a' );
}

خروجي حاصل از اجراي برنامه فوق ، حرف a است . example for character :a


تابع ()putch
اين تابع براي نوشتن يك كاراكتر در صفحه نمايش مورد استفاده قرار گرفته و
بدين صورت استفاده مي شود : ;
( متغير ) putch

مثال 1: main)(
{
char ch ;
printf("\n enter a character: ");
ch=getch )(;
printf("you typed the character:");
putch(ch );
}

خروجي حاصل بصورت زير است : enter a character:
you typed the character : s

براي نوشتن يك كاراكتر توسط تابع ()putch اين تابع را بصورت زير هم مي توان
بكار برد : putch('a');

دستور فوق موجب چاپ كاراكتر a در خروجي مي شود .

تابع ()putchar
اين تابع همانند تابع ()putch براي نوشتن يك كاراكتر در صفحه نمايش به كار
مي رود و بصورت زير استفاده مي شود : ;
( متغير )putchar

مثال 2: #include "stdio.h"
main)(
{
char ch ;
printf("enter a character :" );
ch=getch )(;
printf("\n you typed: " );
putchar(ch );
}

به نمونه اي از خروجي برنامه مثال 2 كه در زير آمده است توجه كنيد : enter a character:
you typed : s
براي نوشتن حرف a در خروجي تابع ()putchar بصورت ;('a')putch بكار مي رود .

خداییش اگر خوشت اومد نظر بده
دوشنبه 19/6/1386 - 21:51
کامپیوتر و اینترنت
آموزش زبان C بخش هشتم
خواندن يك كاراكتر از ورودي

براي خواندن يك كاراكتر از ورودي ، علاوه بر تابع ()scanf از توابع ديگري نيز
استفاده ميشود كه قبل از بررسي آنها به مثالي از()scanf جهت خواندن يك كاراكتر
توجه كنيد :
مثال 1: main)(
{
char ch ;
printf("enter a character : " );
scanf("%c"/&ch );
printf(" you typed the character");
printf(": %c"/ch );
}

نمونه اي از خروجي حاصل از مثال 1 بصورت زير است : enter a character: j
you typed the character:j


تابع ()getch
اين تابع براي خواندن يك كاراكتر از ورودي بكار مي رود و بصورت زير استفاده
مي شود :
()= getch متغير
پس از آن كه كنترل اجراي برنامه به تابع ()getch رسيد ، برنامه منتظر فشار
دادن كليدي از صفحه كليد مي شود . اگر متغير مورد نظر كاراكتري باشد مقدار
كاراكتري كليد ورود به اين متغير منتقل مي شود و در صورتي كه اين متغير از نوع
عددي باشد ، كد اسكي كليد وارد شده ، در اين متغير قرار مي گيرد .

مثال 2: main)(
{
char ch ;
int x ;
printf("\n enter a character : " );
ch=getch )(;
printf("\n enter this character" );
printf(" second time :" );
ch=getch )(;
printf("\n character is:" );
printf("%c/%c/%d/%d/ch/x/ch/x );
}

فرض كنيد در پاسخ به اجراي اين برنامه كليد s را دوبار در پاسخ به دو تابع
()getch وارد كنيم . در اين صورت خروجي حاصل از اجراي برنامه بصورت زير خواهد
بود : enter a character:
enter this character second time:
character is:s/s/115/115

اگر در مثال 2 به تابع ()printf توجه كنيد ، متغير chو xو را يكبار با فرمت %c
و بار ديگر با فرمت %d نوشته ايم كه در هر دو حالت عدد 115 كه كد اسكي s است
چاپ شده است . وقتي متغير عددي x را با فرمت %d نوشته ايم آنچه كه در آن قرار
گرفته ( كد اسكي كليد s ) نوشته شده است و زماني كه اين متغير را با فرمت %c
نوشته ايم كد اسكي به كاراكتر s تبديل شده و سپس در خروجي چاپ مي شود .

تابع ()getche
اين تابع همانند تابع ()getch براي خواندن يك كاراكتر از ورودي بكار مي رود
و بصورت زير استفاده مي شود :
()= getche متغير
نوع عمل اين تابع مثل ()getch است . با اين تفاوت كه اين تابع پس از اخذ
ورودي ، آن را روي صفحه نمايش چاپ مي كند . حرف e در انتهاي تابع به معني echo
( عكس العمل ) است .

تابع ()getchar
اين تابع همانند توابع ()getch و ()getche براي خواندن يك كاراكتر از ورودي
بكار رفته و بصورت زير استفاده مي شود :
()= getchar متغير
نوع عمل اين تابع همانند دو تابع فوق الذكر است . با اين تفاوت كه در اين
تابع پس از وارد نمودن كليه ( كاراكتر ) مورد نظر ، كليد enter نيز بايد وارد اله در توربو C رعايت مي شود ) .
خداییش اگر خوشت اومد نظر بده
دوشنبه 19/6/1386 - 21:50
کامپیوتر و اینترنت
آموزش زبان C بخش هفتم
تابع ()scanf

اين تابع براي خواندن اطلاعات از ورودي استاندارد ( صفحه كليد ) بكار رفته و
بصورت زير استفاده مي شود : ;
(آدرس متغيرها ، " كاراكترهاي فرمت ") scanf
كاراكترهاي فرمت ، نوع اطلاعاتي كه بايد خوانده شوند را مشخص مي كند. و آدرس
متغيرها، مشخص كننده محل هايي از حافظه هستند كه اطلاعات ورودي بايد درآن محلها
قرار گيرند. همانطور كه قبلا" ديده ايم آدرس متغيرها را با عملگر & مشخص ميكنيم .
در تابع scanf همانند تابع printf از تعدادي كاراكترهاي فرمت استفاده مي شود .
( جدول 1 ) .
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ |
| كاراكتر اطلاعاتي كه خوانده مي شوند |
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ |
%c | % يك كاراكتر | |
%d | % يك عدد صحيح دهدهي | |
%i | % يك عدد صحيح دهدهي | |
%e | % عدد اعشاري مميز شناور | |
%f | % عدد اعشاري مميز شناور | |
%g | % عدد اعشاري مميز شناور | |
%o | % عدد مبناي 8 | |
%x | % عدد مبناي 16 | |
%p | % يك اشاره گر | |
%n | % مشخص كننده تعداد كاراكترهايي است كه تا | %%n |
| ورودي خوانده شده اند | |
%u | % عدد صحيح مثبت | |
%s | % رشته ها |
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ
جدول (1) . كاراكترهاي فرمت در تابع ()scanf

مثال 1: main)(
{
char ch ;
printf("\n enter a character :");
scanf("%c"/&ch );
printf("\n ch=%c".ch );
}

اجراي فرمان فوق ، ضمن صدور يك پيام ، كاراكتري را از ورودي خوانده در متغير ch
قرار مي دهد . نمونه اي از خروجي را در زير مشاهده مي كنيم : enter a character : s
ch=s


مثال 2: main)(
{
int year ;
printf("enter your age in year:");
scanf("%d"/&year );
printf("\n your age is");
printf(" %d day."/year*365);
}

نمونه اي از خروجي را در زير مشاهده مي كنيم : enter your age in year:19
your age 6935 day.

اين برنامه ، سن شما را از ورودي دريافت كرده و آن را به روز تبديل ميكند و
سپس به خروجي مي برد . لازم به ذكر است كه در مثال 2 تابع ()scanf بر روي خطي
عمل مي كند كه تابع ()printf اولي عمل كرده است . تابع ()printf دومي به علت
وجود \n ، بر روي خط بعدي از صفحه نمايش عمل خواهد كرد . استفاده از ساير
كاراكترهاي قالب در تابع ()scanf همانند تابع ()printf است كه ذكر مثال درمورد
آنها ضروري به نظر نمي رسد .
قالب ديگري كه بايد در مورد آن توضيح داده شود %n است كه مشابه آن را در
تابع ()printf داشته ايم . %n در تابع ()scanf تعداد كاراكترهاي خوانده شده توسط
اين تابع تا %n را به متغيري كه آدرس آن متناظر با %n ذكر شده است منتقل ميكند.
براي خواندن چند متغير از ورودي توسط تابع ()scanf ، اسامي متغيرها را كه
به همراه & ( عملگر آدرس ) ذكر مي شوند با كاما از يكديگر جدا كرده و در حين
ورود اطلاعات مي توانيم آنها را با فاصله (blank) ، كليد enter و يا tab جدا
كنيم .

مثال 3: main)(
{
int a/b/c ;
float ave ;
printf("\n enter three number :");
scanf("%d %d %d"/&a/&b/&c );
ave=(a+b+c)/3 ;
printf("\n average is:%f"/ave );
}

به نتيجه اجراي برنامه و چگونگي ورود سه عدد 20 ، 19 و 18 بعنوان اطلاعات
ووردي توجه كنيد : enter three number :20 19 18
av

خداییش اگر خوشت اومد نظر بده
دوشنبه 19/6/1386 - 21:50
کامپیوتر و اینترنت
آموزش زبان C بخش ششم
تابع ()printf

اين تابع براي انتقال اطلاعات از كامپيوتر به صفحه نمايش مورد استفاده قرار
مي گيرد و بصورت زير استفاده مي شود : ;
( عبارت ديگر " / عبارت " 1) printf) "
عبارت " 1 شامل تعدادي كاراكترهاي كنترلي ، كاراكترهاي قالب جهت تعيين شكل
خروجي و رشته هاي ديگري است كه بايد به خروجي منتقل شوند . " عبارت ديگر " شامل
اطلاعاتي هستند كه با فرمت مشخص شده در " عبارت " 1، بايد به خروجي منتقل شوند.
كاراكترهايي كه براي تعيين فرمت خروجي مورد استفاده قرار مي گيرند با كاراكتر %
شروع مي شوند ( جدول 1 ) .

كاراكتر | نوع اطلاعات كه بايد به خروجي منتقل شود |

%C | % يك كاراكتر | |
%d | % اعداد صحيح دهدهي مثبت و منفي | |
%i | % اعداد صحيح دهدهي مثبت و منفي | |
%e | % نمايش علمي عدد همراه با حرف e | |
%E | % نمايش علمي عدد همراه با حرف E | |
%f | % عدد اعشاري مميز شناور | |
%g | % اعداد اعشاري مميز شناور | |
%G | % اعداد اعشاري مميز شناور | |
%O | % اعداد مبناي 8 مثبت | |
%S | % رشته اي از كاراكترها ( عبارت رشته اي ) | |
%U | % اعداد صحيح بدون علامت ( مثبت ) | |
%x | % اعداد مبناي 16 مثبت با حروف كوچك | |
%X | % اعداد مبناي 16 مثبت با حروف بزرگ | |
%p pointer | % ( اشاره گر ) | |
%n | % موجب ميشود تا تعداد كاراكترهايي كه تا قبل | |
| ازاين كاراكتر به خروجي منتقل شده اند شمارش | |
| شده و در پارامتر متناظر با آن قرار گيرد . | |
%% | % علامت % |

جدول (1) . كاراكترهاي فرمت در تابع ()printf

كاراكترهاي كنترلي كه در تابع ()printf بكار ميروند در جدول (2) آمده است .
بعضي از كاراكترهاي كنترلي براي انتقال خروجي به يك محل معين از صفحه نمايش
مورد استفاده قرار مي گيرند .

| كاراكتر عملي كه انجام مي شود |

\f | \ موجب انتقال كنترل به صفحه جديد مي شود | |
\n | \ موجب انتقال كنترل به خط جديد مي شود | |
\t | \ انتقال به 8 محل بعدي صفحه نمايش | |
\" | \ چاپ كوتيشن (") | |
\' | \ چاپ كوتيشن (') | |
\0 NULL | \ رشته تهي | | back slash | \\ |
|
\V | \ انتقال كنترل به 8 سطر بعدي | |
\N | \ ثابت هاي مبناي 8( N( عدد مبناي 8 است ) | |
\xN | \ ثابت هاي مبناي 16( N( عدد مبناي 16 است ) |

جدول (2) . كاراكترهاي كنترلي

چند دستور متوالي كه شامل تابع ()print باشند ، خروجي خود را بر روي يك سطر
منتقل يم كنند . مگر اين كه با پارامتر كنترلي \n كنترل را به سطر بعدي منتقل
كنيم .
مثال 1:
main)(

{

printf(" i like %c "/'c' );

printf("%s"/"very much." );

}


خروجي حاصل از اجراي برنامه فوق بصورت ذيل خواهد بود : i like c very much.

با استفاده از \n مي توانيم خروجي را در چند سطر داشته باشيم . main)(
{
printf("this is second program.\n" );
printf("output is in two line." );
}

خروجي حاصل از اجراي برنامه فوق بصورت ذيل است : this is second program.
output is in two line.


مثال 2: main)(
{
int num ;
printf("the address of num is:" );
printf(" %p"/ &num );
}

در مثال فوق عبارت &num آدرس متغير num را مشخص مي كند كه براي نوشتن آن از
كاراكتر فرمت %p استفاده شده است . نمونه اي از خروجي مثال 2 بصورت زير است . the address of num is : 6A30:OFE4

اگر در تابع ()printf چند كاراكتر فرمت داشته باشيم ، هر كاراكتر با يك عنصر
داده كه بايد به خروجي برود تطبيق داده مي شود : main)(
{
int a=10 ;
float b=20 ;
printf(" a is:%d/b is :%f"/a/b);
}

خروجي حاصل از اجراي برنامه فوق بصورت ذيل است : a is:10/b is:20:000000


مثال 3: main)(
{
unsigned int num ;
num=100 ;
printf("the value of num is:%u"/num);
}

همانطوري كه در مثال 3 مشاهده مي شود ، براي چاپ عدد num كه بصورت عدد صحيح
بدون علامت تعريف شد ، از %u استفاده شده است .
خروجي حاصل از اجراي برنامه مثال 3 به صورت ذيل است : the value of num is:100


مثال 4: main)(
{
double d ;
d=le+007 ;
printf("the value of d is:%e\n"/d);
printf("the value of d is:%E\n"/d);
printf("the value of d is:%g\n"/d);
}

خروجي حاصل از اجراي برنامه مثال 4 بصورت ذيل خواهد بود : the value of d is:1.00000e+07
the value of d is:1.00000E+07
the value of d is:1e+07

همانطور كه مشاهده مي شود براي چاپ اعدادي كه بصورت نماد علمي باشند ميتوان
از كاراكترهاي فرمت % e، % E،و % gو استفاده كرد .

مثال 5: main)(
{
float f=12.50 ;
int t=10 ;
printf("\n f is:%f"/f );
printf(" tenper is:%%%d"/t );
}

خروجي حاصل از اجراي برنامه فوق بصورت زير است : f is:12.500000/tenper is:%10

در مثال 5 براي چاپ علامت % از كاراكتر %% و براي چاپ متغير f از نوع float
مي باشد از %f استفاده شده است .
كاراكتر فرمت %n از ساير كاراكترهاي فرمت متفاوت است . اين كاراكتر بجاي
انتقال مقاديري به خروجي ، موجب مي شود تا تعداد كاركترهايي كه تا قبل از اين
كاراكتر به خروجي منتقل شده اند ، شمارش شده و در پارامتر متناظر با آن قرار
بگيرد .

مثال 6: main)(
{
printf("\neach\tword\tis\n" );
printf("tabbed\tover\tonce" );
}

خروجي از اجراي برنامه فوق بصورت زير خواهد بود : each word is
tabbed over once

كاراكتر كنترلي \b موجب انتقال مكان نما به اندازه يك كاراكتر به عقب ميشود
( بسمت چپ ). كاراكترهاي كنترلي \ "و \و براي چاپ كوتيشن درخروجي مورد استفاده
قرار مي گيرند .

تعيين طول ميدان در تابع ()printf
در حين انتقال اطلاعات توسط تابع ()printf ميتوانيم طول ميدان خروجي را مشخص
كنيم . در اين مورد مي توانيم محل نقطه اعشار و تعداد ارقام اعشار را نيز تعيين
كنيم . تعيين طول ميدان در جدول بندي ها بسيار مفيد است . طول ميدان ، بصورت w.d
است كه در اعداد اعشاري مميز شناور ، w طول ميدان و d تعداد ارقام اعشار را
مشخص مي كند .

مثال 7: main)(
{
printf("\n%8.1f %8.1f %8.1f\n"
/3.0/12.5/523.3 );
printf("\n%8.1f %8.1f %8.1f\n"
/300.0/1200.5/5300.3 );
}

خروجي حاصل از اجراي برنامه فوق بصورت زير است : 3.0 12.5 523.3
300.0 1200.5 5300.3

همانطوركه مشاهده مي گردد طول ميدان برابر با 8 و تعداد ارقام اعشار، برابر
با يك كه در منتهااليه سمت راست ميدان قرار گرفته ، منظور شده است . براي توضيح
بيشتر ، عدد 5300/3 را در حافظه نشان مي دهيم :
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ | | | 5 | 3 | 0 | 0 | . | 3 |

ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ
اگر فرمت w.d كه طول ميدان را مشخص مي كند در مورد رشته ها استفاده گردد ، w
حداقل طول ميدان و d حداكثر كاراكترهاي قابل چاپ را مشخص مي كند .
اگر w.d در مورد اعداد صحيح بكار برده شود ، w مشخص كننده حداقل طول ميدان
و d تعيين كننده حداكثر طول ميدان است .

مثال 8: main)(
{
printf("%7.4f\n"/123.1234567 );
printf("%3.8d\n"/1000 );
printf("%10.16a\n"/"this is a" );
printf(" simple test" );
}

خروجي حاصل از اجراي برنامه فوق بصورت زير است : 123.1235
00001000
this is a simple

در خروجي اول ، تعداد ارقام اعشاري 4 در نظر گرفته شده كه بقيه ارقام حذف
شده اند و ضمنا" عدد حاصل گرد شده است .
در خروجي دوم كه : ميدان 3/8 است عدد صحيح 1000 چاپ شده است .
در خروجي سوم از رشته this is a simple به اندازه 16 كاراكتر چاپ شده است .
در حالت معمولي ، خروجي حاصل در سمت راست ميدان قرار مي گيرد كه مي توان با
قرار دادن علامت منها ( - ) بلافاصله پس از علامت % ، اطلاعات را در سمت چپ ميدان

خداییش اگر خوشت اومد نظر بده
دوشنبه 19/6/1386 - 21:49
کامپیوتر و اینترنت
آموزش زبان C بخش پنجم

ساختمان زبان C و چند تابع ورودي خروجي

همانطور كه قبلا" گفته شد C زبان ساخت يافته است و هر برنامه در اين زبان
شامل يك يا چند تابع است . يكي از اين توابع كه اسم آن ()main است به عنوان
تابع اصلي برنامه و بقيه توابع بعنوان تابع عرضي هستند . اجراي برنامه با تابع
اصلي ، يعني ()main شروع مي شود. در نوشتن برنامه ، بايد تابع اصلي و سپس بقيه
توابع را بنويسيم . تعريف يك تابع در داخل تابع ديگر امكان پذير نيست ولي هر
تابع مي تواند يك يا چند تابع ديگر را فراخواني نمايد .
برخلاف زبانهاي ديگر كه زير روال و توابع دو چيز جداگانه اي هستند در C همگي
تحت عنوان تابع بررسي مي شوند .
كليه متغيرهايي كه در برنامه استفاده مي شوند بايد تعريف شوند و منظور از
تعريف متغير ، نامگذاري و تعيين نوع آن است . متغيرها در C مقدار اوليه ندارند
و تا متغيري مقدار نگيرد قابل استفاده نخواهد بود . شكل (1) ساختمان ساده يك
برنامه به زبان C را نشان مي دهد كه پس از مطالعه مفاهيم ديگري از زبان C ، آن
را تكميل تر خواهيم كرد .
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ | main )(|
| { |
|
تعريف متغيرها | | . |
| . |
| . |
| } |
| f1 )(|
| { |
| . |
| . |
| . |
| } |
| f2 )(|
| { |
| . |
| . |
| . |
| } |

ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ
شكل (1) . ساختمان ساده اي از برنامه C

اولين تابع برنامه ، ()main است . ابتدا متغيرهاي مورد استفاده اين تابع
تعريف ، سپس دستورات تابع اصلي با يك { شروع و به } ختم مي شود . بعضي از
دستورات تابع اصلي ممكن است فراخواني توابع ()f1 ، ()f2 وغيره نيز باشند. ()f1
()f2 دو تابع فرعي هستند كه در برنامه وجود دارند همانطوري كه مشاهده مي گردد
تعريف توابع فرعي پس از تابع اصلي صورت مي گيرد. در زبان C فرض ميشود كه نتايج
حاصل از تابع بصورت int است كه اگر غير از اين باشد ، بايد ضمن تعريف متغيرها وع توابع استفاده شده در برنامه به كامپايلر اعلان شود .
خداییش اگر خوشت اومد نظر بده
دوشنبه 19/6/1386 - 21:49
کامپیوتر و اینترنت
آموزش زبان C بخش چهارم
تبديل انواع

وقتي كه متغيرهاي با نوع هاي مختلف در يك عبارت با يكديگر تركيب مي شوند
بايد تبديل نوع صورت گيرد . قاعده كلي اين است كه نوع هاي با طول كوچك تر به
نوع هايي با طول بزرگتر تبديل مي شوند . مثلا" اگر دو متغير از نوع كاراكتري و
عددي صحيح با يكديگر تركيب شوند ، نوع كاراكتري به عددي صحيح تبديل مي شود .

مثال 1: char ch;
int i;
float f;
double d;
result =( ch/i )+( f*d( - )f+i)
| | | | | |
int |double | | float
| | | | | |
| | | | | |

ؤؤؤ ؤؤؤ ؤؤؤ | | |
int double float
| | |
| | |
|
ؤؤؤؤؤؤؤؤؤ | |
| |
double |
| |
| |

ؤؤؤؤؤؤؤؤؤؤؤؤؤ |
double

همان طور كه از مثال 1 پيداست ، نوع نتيجه double خواهد بود .
علاوه بر تبديل انواع در عبارات ، در احكام انتساب نيز ممكن است تبديل انواع
صورت گيرد . در تبديل انواع اطلاعاتي از بين مي روند كه بايد در نتيجه حاصل از
احكام انتساب دقت كافي به خرج داد. در ذيل تبديل انواع در احكام انتساب مشاهده
مي شود : int x;
char ch;
float f;
ch= x;
x= f;
f= ch;
f= x;

كليه احكام انتساب فوق قابل انجام بوده و از طرف كامپايلر زبان C هيچ گونه
خطايي گزارش نمي شود . اطلاعاتي كه ممكن است در تبديل انواع از بين بروند . در
جدول (1) آمده است .
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ |
نوع منبع | نوع مقصد | اطلاعاتي كه ممكن است از بين برود |
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ |
| signed char | char اگر مقدار بزرگتر از127 باشد مقصد منفي خواهد شد |
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ |
| short 8 | char بيت با ارزش |
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ |
| int 8 | char بيت با ارزش |
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ |
| long int | char َ24 بيت با ارزش |
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ |
| long int | int َ16 بيت با ارزش |
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ |
| float | int قسمت كسري يا بيشتر و نتيجه حاصل گرد مي شود |
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ |
| double | float قسمت كسري و يا بيشتر و نتيجه حاصل گرد مي شود |
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ
جدول (1) . تبديل انواع

دو نكته را بايد در مورد تبديل انواع ( جدول (1) ) به خاطر داشته باشيم : 1
بعضي از تبديل انواع در جدول فوق وجود ندارد مثل doubleبه int . در اين
موارد مي توان double را به float تبديل كرده و سپس float را به int تبديل نمود. 2
وقتي نوع بزرگتري به نوع كوچكتري انتساب داده مي شود . قسمتي از اطلاعات
از دست مي روند . همان طور كه مي دانيم ، معمولا" اعداد صحيح (int) در 2 بايت و
اطلاعات از نوع char در يك بابت ذخيره مي شوند :
ؤؤؤؤؤؤؤؤؤؤؤ char
ؤؤؤؤؤؤؤؤؤؤؤ
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ int
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ
بايت كم ارزش بايت باارزش
وقتي يك متغير int به يك متغير char انتساب داده مي شود بايت كم ارزش متغير
از نوع int به متغير char منتقل شده ولي با ارزش متغير int در متغير char جايي ميگوييم در انتساب متغيرintبه char ، 8، بيت با ارزش از دست ميرود.

خداییش اگر خوشت اومد نظر بده
دوشنبه 19/6/1386 - 21:48
کامپیوتر و اینترنت
آموزش زبان C بخش سوم
قسمت دوم

عملگر دستكاري بيت ها
ازآنجايي كه زبان C طوري طراحي شده است كه بتواند دربسياري ازموارد جايگزين
زبان اسمبلي گردد. بايد قادر باشد كليه اعمال ( يا حداقل بسياري از اعمال ) كه
در زبان اسمبلي قابل انجام هستند را انجام دهد . يكي از اعمالي كه در زبان
اسمبلي براحتي انجام پذير است . انجام اعمالي بر روي بيت هاي يك بايت يا يك
كلمه از حافظه است كه در زبان C براي انجام اين منظور از عملگرهايي استفاده
مي شود كه به عملگرهاي بيتي معروفند ( جدول (7) ) . اين عملگرها انجام اعمال
تست ، مقدار دادن و يا انتقال (shift) بيت ها را در يك بايت يا كلمه حافظه
امكان پذير مي نمايند. عملگرهاي بيتي فقط بر روي متغيرهايي از نوع charيا intا
عمل مي كنند و بر روي متغيرهايي از نوع float، double،، long double،، void، و
يا ساير متغيرها قابل اجرا نيستند . عملگرهاي بيتي &، |،و ~و(AND(، OR،و NOTو)
مشابه عملگرهاي منطقي AND، OR،و NOTو عمل مي كنند با اين تفاوت كه عمل آنها بر
روي يك بيت است . با فرض اين كه pو qو دو بيت مختلف باشند ، نحوه عمل عملگر ^
را در ذيل مشاهده مي نماييد .
p | q | p^q |

0 | 0 | 0 |

1 | 0 | 1 |

1 | 1 | 0 |

عملگرهاي بيتي در جدول (7) مشاهده مي شوند .
عملگر | نوع عمل |
& | AND ( و ) |
| | OR ( يا ) |
^ | XOR ( يا انحصاري ) |
~ | NOT ( نقيض يا متمم يك ) |
>> | انتقال به سمت راست (shift right) |
<< | انتقال به سمت چپ (shift left) |
جدول (7) . عملگرهاي بيتي

همان طور كه مشاهده شد ، نتيجه عملگر بيتي ^ وقتي يك (1) است كه يكي از
عملوندهاي آن صفر و ديگري يك باشد . به عبارت ديگر ، نتيجه عملگر بيتي ^ وقتي
صفر است كه هر دو عملوند آن صفر و يا هر دو يك باشند .
عملگرهاي &، |،و ^و و << ، >> بر روي دو عملوند عمل مي كنند اما عملگرهاي ~
به صورت ذيل به كار مي روند: >> و <<بر روي يك عملوند عمل مي كنند . عملگرهاي
متغير >>تعداد انتقال
متغير <<تعداد انتقال
و <<در روش كلي فوق ، متغير ، يك بايت يا كلمه اي از حافظه است كه عملگرهاي
بايد بر روي آن عمل كنند . تعداد انتقال عددي است كه مشخص مي كند بيت هاي >>"
متغير " بايد چند محل به سمت راست و يا چپ انتقال يابند . همان طور كه قبلا"
براي انتقال به چپ مورداستفاده << براي انتقال به راست و عملگر>>گفته شد عملگر
قرار مي گيرد . هر انتقال به چپ ، معادل با تقسيم كردن مقدار متغير به 2 و هر
انتقال به راست ، معادل ضرب كردن در 2 است .

مثال 1 :
تعداد عددي متغير | x مقدار بيتي متغير | x دستورات زبان | C
| char x; | | |

| x=7 ; | 00000111 | 7 |

| x<<1 ; | 00001110 | 14 |

| x<<3 ; | 01110000 | 112 |

| x<<2 ; | 11000000 | 192 |

| x>>1 ; | 01100000 | 96 |

| x>>2 ; | 00011000 | 24 |

همان طور كه مشاهده مي كنيد پس از اجراي دستور 2<< x< اطلاعات واقعي از بين
مي روند و مساله ضرب در 2 شدن ، در اينجا صدق نمي كند .
عملگر ~ در يك بايت يا كلمه حافظه ( يك متغير ) كليه بيت ها را نقيض ميكند.
يعني بيت صفر را به بيت يك و بيت يك را به بيت صفر تبديل مي نمايد . لذا اگر
اين عملگر دو بار بر روي يك متغير عمل كند وضعيت بيت هاي متغير به حالت اول
برمي گردند .

مثال 2 : x :00101100
~x :11010011
~x :00101100

همان طور كه مشاهده مي شود بيت هاي رديف اول و رديف آخر داراي يك وضعيت
ميباشند ( بيت هاي رديف آخر نتيجه دوبار اجراي عملگر نقيض بر روي متغير است ).
نكته اي كه در مورد عملگرهاي بيتي بايد در نظر داشت اين است كه اين عملگرها
معمولا" در مبدل هاي دستگاهها (device drivers) مورد استفاده قرار مي گيرند .
مثل برنامه هايي كه براي كار با modem و با چاپگر نوشته مي شوند . زيرا در اين
گونه موارد معمولا" تست كردن بيت هاي يك متغير مد نظر خواهد بود .

عملگر ?
عملگر ? با تست يك شرط ، مقداري را به يك متغير نسبت مي دهد . اين عملگر به
صورت زير استفاده مي شود : exp3
:= exp1 ? exp2 متغير exp1
، exp2،و exp3و سه عبارت هستند . نحوه عمل ? به اين صورت است كه : ابتدا
عبارت اول (exp1) ارزيابي مي شود چنانچه اين عبارت داراي ارزش true ( ارزش
درستي ) باشد مقدار exp2 پس از ارزيابي ، در متغير ذكر شده قرار مي گيرد وگرنه
عبارت سوم (exp3) ارزيابي شده و نتيجه آن به متغير ذكر شده منتقل مي شود . x= 10;
y= x>9 ? 100 :200;

نحوه عمل در دو دستور فوق به اين صورت است كه عبارت 9> x> ارزيابي مي شود .
چون اين عبارت يك ارزش منطقي true دارد ( 9> x> است ) لذا عدد 100 در متغير y
قرار مي گيرد .

عملگرهاي &و *و
عملگر & يك عملگر يكاني است كه آدرس عملوند خود را مشخص مي كند و به صورت
زير به كار مي رود : ;
نام عملوند &
مثل : int num;
p= &num;

با اجراي دستورات فوق آدرس متغير num در متغير p قرار مي گيرد. لذا عملگر &
به معني " آدرس " است . عملگر * همانند عملگر & يك عملگر يكاني است كه محتويات
يك آدرس حافظه را مشخص مي كند و به صورت زير به كار مي رود . ;
نام عملوند *
مثل : p= &num;
m= *p;

دستور اول ، آدرس متغير num را در p قرار ميدهد و دستور دوم ، محتويات محلي
را كه آدرس آن در p قرار دارد ( محتويات num ) ، را در m قرار ميدهد. بنابراين
مفهوم " * محتويات آدرس " مي باشد . دو دستور فوق معادل دستور m = num; است كه
موجب انتقال محتويات متغير num به متغير m مي شود .

عملگر كاما (/)
عملگر كاما براي انجام چند عمل در يك دستور ، به كار رفته و به صورت زير
استفاده مي شود :
( عبارت 2 و عبارت 1) =) متغير
عملگر كاما موجب مي شود تا " عبارت " 1 ارزيابي شده و سپس نتيجه ارزيابي "
عبارت " 2 با يكديگر ارتباط دارند . x =( y = 3 / y + 5);

ابتدا y باربر با 3 قرار مي گيرد و نتيجه عبارت y + 5 كه برابر 8 است در x
قرار خواهد گرفت .

عملگر sizeof
اين عملگر كه عملگر زمان ترجمه ناميده مي شود، براي محاسبه طول يك نوع و يا
يك متغير به كار رفته و به صورت زير استفاده مي شود . ;
(نوع) sizeof ;
متغير sizeof
اگر بخواهيم با استفاده از اين عملگرها، طول يك نوع مثل int، double و غيره
را محاسبه كنيم بايد آن را در داخل پرانتز قرار دهيم : اما اگر بخواهيم طول يك
متغير را محاسبه كنيم نيازي به استفاده از پرانتز نيست . به عنوان مثال : int a/ b/ c;
a= sizeof( int);
b= sizeof c;

دستور اول سه متغير a، b،ز cز را به صورت int تعريف مي كند . دستور دوم طول
نوع int را محاسبه كرده و در متغير a قرار مي دهد . دستور سوم طول متغير c را
محاسبه كرده و در متغير b قرار مي دهد. اين دستور براي مساله portability زبان C
بسيار مفيد است . بعنوان مثال ممكن است طول نوع int از ماشيني به ماشين ديگر
متفاوت باشد . نكته اي كه در مورد اين عملگر بايد توجه داشت اين است كه معمولا"
روش اول مورد استفاده قرار مي گيرد و روش دوم چندان جالب نيست .

تقدم عملگرها در حالت كلي
وقتي كه در يك عبارت چندين عملگر مورد استفاده قرار مي گيرند تقدم عملگر به
صورت جدول (8) خواهد بود .

بالاترين تقدم () | | ! ~ + + - - * & sizeof |
| * / % |
| + - |
| << >> |
| << = >> = |
| == =! |
| & |
| ^ |
| | |
| && |
| || |
| ? |
| = +=- = *= /= %= |
| / |

جدول (8) . تقدم عملگرها در حالت كلي

اگر در يك عبارت چندين عملگر وجود داشته باشد و درآن از پرانتز نيز استفاده
شود ، تقدم پرانتز از ساير عملگرها بيشتر بوده و عبارت داخل پرانتز زودتر
ارزيابي مي شوند .

مثال 3 : int x=5/ y=10/ k=4;
int s;
s= x*((x+y-)3)/k;

درنتيجه اجراي چند دستور فوق مقداري كه درs قرار مي گيرد برابر با 15 خواهد
بود . سپس عدد 3 از 15 كم مي شود كه 12 حاصل مي گردد و بعداز آن عمل ضرب انجام برابر با 60 ( 5 * 12 ) مي باشد و عملگر تقسيم (/) آخرين.

خداییش اگر خوشت اومد نظر بده
دوشنبه 19/6/1386 - 21:48
کامپیوتر و اینترنت
آموزش زبان C بخش سوم
قسمت اول
عملگرها

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

عملگرهاي محاسباتي
عملگرهاي محاسباتي كه در C مورد استفاده قرار مي گيرند در جدول (1) فهرست
شده اند .

رديف | عملگر | نام | مثال |

1 | - | تفريق و منهاي يكاني | |-xx/x-y

2 | + | جمع | | x+y

3 | * | ضرب | | x*y

4 | / | تقسيم | | x/y

5 | % | باقيمانده تقسيم | | x%y

6 | - - | كاهش يك واحد * | - -xيا xا - |-

7 | ++ + | افزايش يك واحد * | x+ + يا | + +xا

* decrement ** increment

جدول (1) . عملگرهاي محاسباتي

عملگرهاي رديف 1تا 4ا در جدول (1) تقريبا" در همه زبانهاي برنامه سازي وجود
دارند. عملگر % كه در بقيه زبانها با علامت ديگري ( مثلا" در بيسيك به صورت MOD)
وجود دارد باقيمانده تقسيم دو عدد را محاسبه مي كند : x= 13;
y= 5;
z= x%y;

اگر سه دستور فوق را توسط ماشين اجرا كنيم مقدار3 كه باقيمانده تقسيم 13 بر 5
است در z قرار مي گيرد .
عملگر كاهش ، يك واحد از عملوند مربوط كم مي كند . x= 10;
- - x;

دستور x - - از x يك واحد كم مي كند و نتيجه را در x قرار مي دهد كه معادل
دستور 1 + َx = x-1 است .
عملگر افزايش ، يك واحد به عملوند مربوطه اضافه مي كند : x= 40;
++x;

دستور ++x معادل دستور x = + 1 است كه موجب افزودن يك واحد به x مي شود .
عملگرهاي افزايش و كاهش يك واحد را مي توان بعداز عملوند مربوطه نيز به كار
برد مثل : x + + و - - x .
اگر در يك عبارت از عملگرهاي افزايش و كاهش يك واحد ، استفاده كنيم به كار
بردن اين عملگرها در قبل و بعد از عملوند مربوطه ، با يكديگر متفاوت است . بدين
معني كه اگر اين عملگرها قبل از عملوند باشند مقدار فعلي عملوند مورد استفاده
قرار گرفته و سپس عملگرها بر روي آن عمل ميكنند، ولي اگر بعد از عملوند مربوطه
باشند پس از انجام عمل افزايش و كاهش يك واحد به آنها مقادير جديد ، در عبارت
مورد استفاده قرار مي گيرند. استفاده ازعملگرهاي افزايش و كاهش يك واحد ، سرعت
محاسباتي را بالا مي برد .
اگر در يك عبارت از چند عملگر محاسباتي استفاده شود ، مساله تقدم عملگرها
مطرح مي شود . ( جدول (2) ) .

بالاترين تقدم - - | + + |
تفريق يكاني - | | * / % |
|
پايين ترين تقدم - | +

جدول (2) . تقدم عملگرهاي محاسباتي

همان طور كه در جدول (2) مشاهده مي شود ، عملگرهاي افزايش و كاهش يك واحد
داراي بالاترين تقدم و عملگرهاي جمع و تفريق داراي كمترين تقدم هستند و منهاي
يكاني ، داراي دومين تقدم است . عملگرهايي كه در يك سطر آمده اند ، مثل - و +
بدين معني است كه داراي تقدم مكاني نسبت به يكديگر هستند. در اين صورت هر كدام
از غملگرها كه اول ظاهر شود ، زودتر انجام خواهد شد .

عملگرهاي رابطه اي
عملگرهاي رابطه اي براي تشخيص ارتباط بين عملوندها يا مقايسه آنها مورد
استفاده قرار مي گيرند ( جدول (3) ) .

عملگر | نام | مثال |

> | بزرگتر | y >x | >

= >|> بزرگتر مساوي | =y >x | >

< | كوچكتر | y
< |>

= <|< كوچكتر مساوي | =y
< |>

== | = مساوي بودن | | x=x==y

!= | ! نامساوي | | x=x!=y

جدول (3) . عملگرهاي رابطه اي

نكته قابل ذك درمورد عملگرهاي رابطه اي اين است كه عملگر== براي تشخيص مساوي
بودن دو عبارت مورد استفاده قرار مي گيرد. اين عملگر با عملگر= كه براي انتساب
يك عبارت به يك متغير استفاده مي شود متفاوت است .

عملگرهاي منطقي
عملگرهاي منطقي ( جدول (4) ) بر روي عملوندهاي منطقي عمل ميكنند. عملوندهاي
منطقي داراي دو ارزش درستي و نادرستي هستند .

عملگر | نام | مثال |

&& | & و(AND) z || x

|| | | يا (OR) z || x

! | نقيض (NOT) | !x |

جدول (4) . عملگرهاي منطقي

ارزش نادرستي درزبان C با مقدار صفر و ارزش درستي با مقادير غيراز صفر مشخص
ميشود. عملگر منطقي ! داراي بالاترين تقدم و عملگر || داراي كمترين تقدم در بين
عملگرهاي منطقي هستند . چون عملگرهاي منطقي رابطه نزديكي با عملگرهاي رابطه اي
دارند مي توان تقدم آنها را نسبت به يكديگر بيان كرد ( جدول (5) ) .

بالاترين تقدم | ! | > >= < <= |
| == != |
| && |
|
پايين ترين تقدم | ||

جدول (5) . تقدم عملگرهاي منطقي و رابطه اي

عملگرهاي محاسباتي و رابطه اي با يكديگر تركيب شده و عملگرهاي ديگري را بنام
عملگرهاي محاسباتي رابطه اي ايجاد مي كنند ( جدول (6) ) . تقدم اين عملگرها از
ساير عملگرها پايين تر است .

عملگر | نام | مثال |

+= | + انتساب جمع | x+=y |

= | انتساب تفريق | x-=y |

*= | * انتساب ضرب | x*=y |

/= | / انتساب تقسيم | x/=y |

%= | % انتساب باقيمانده تقسيم | x%=y |

جدول (6) . عملگرهاي محاسباتي و رابطه اي

در جدول (6) ، عبارت x + = y معادل با x = x + y است و عبارت x % = y معادل y
x = x % است كه موجب انتساب باقيمانده تقسيم xبر yربه x مي شود : int a=10;
int b=20;
a+= b;

با اجراي دستورات فوق متغير a برابر30 خواهد بود. زيرا دستور a + = b معادل
دستور a = a + b است .



خداییش اگر خوشت اومد نظر بده
دوشنبه 19/6/1386 - 21:47
کامپیوتر و اینترنت
آموزش زبان C بخش دوم
انواع داده

همان طور كه قبلا" گفته شد در هر زبان برنامه سازي تعدادي از نوع هاي داده
وجود دارند كه بازه اي را شامل بوده و اعمال خاصي روي آنها انجام پذير است و در C
پنج نوع داده اصلي وجود دارد كه عبارتند از : char، int،، float،، double، و void
. در اين زبان اندازه و محدوده اي كه هر نوع داده اختيار مي كند بستگي به
نوع پردازشگر (Processor) و نحوه پياده سازي كامپايلر دارد. شناسه هايي ( متغير
برچسب ، اسامي توابع و ... ) كه از نوع char باشند براي ذخيره كردن مقاديري كه
توسط كاراكترهاي اسكي تعريف شده اند به كار مي روند. شناسه هايي از نوع int براي
ذخيره كردن مقادير صحيح ، و از نوع floatو doubleو براي ذخيره كردن اطلاعات عددي
اعشاري به كار ميروند كه محدوده آنها توسط تعداد ارقام و دقت آنها مشخص ميشود.
نوع void در مورد توباع به كار مي رود .
نوعهاي داده اصلي ( به جز void ) مي توانند با عباراتي مثل signed، long، unsigned
و shortو تركيب شده و نوع هاي ديگري را به وجود آورند . ( جدول (1) ).

نوع | اندازه تقريبي به بيت | بازه قابل قبول |

char
|
| 8 | 127- تا | 127 unsigned char
|
| 8 | 0 تا | 255 signed char
|
| 8 | 127- تا | 127 int
|
| 16 | 32767- تا | 32767 unsigned int
|
| 16 | 0 تا | 65525 signed int
|
| 16 | 32767- تا | 32767 short int
|
| 16 | 32767- تا | 32767 unsigned
|
| 16 | 0 تا | 65525 | | | short int |
signed
|
| 16 | 32767- تا | 32767 | | | short int |
long int
|
| 32 | َ2147483647- تا | 2147483647 |
float | 32 | 6 رقم دقت | |
double | 64 | 10 رقم دقت | |
long double | 128 | 10 رقم دقت | |
signed | 32 | َ2147483647- تا | 2147483647 | | | long int |
|
| uunsigned long int 32 | 0 تا | 4294967295
ول (1) . نوعهاي تركيبي

خداییش اگر خوشت اومد نظر بده
دوشنبه 19/6/1386 - 21:47
مورد توجه ترین های هفته اخیر
فعالترین ها در ماه گذشته
(0)فعالان 24 ساعت گذشته