تالار گفتمان نبض فردا  

بازگشت   تالار گفتمان نبض فردا > کامپیوتر و اینترنت > نرم افزار > آموزش ها و مقالات و برنامه نویسی

اطلاع رسانی

ارسال موضوع جدید  پاسخ
 
ابزارهای موضوع نحوه نمایش
قدیمی 06-07-2012   #1
Mino
عضو تالار
 

تاریخ عضویت: Feb 2012
محل سکونت: خوزستان، اهواز،
نوشته ها: 802
تشکرهای ایشان: 22,059
33,363بار در12,628پست از ایشان تشكر شده است

صندوق مدال ها

پیش فرض آموزش ++c و c

آموزش ++c و c
برج هانوی , معمایی است که از سه میله و N دیسک با اندازه های متفاوت . فرض شود که اگر دیسکی روی یک میله باشد , فقط دیسکی که قطر آن کوچکتر است می تواند بالای آن قرار گیرد مسئله چنین است که هر بار فقط یک دیسک انتقال یابد .
را حل : این مسئله با استفاده از یک الگوریتم باز گشتی حل می شود .
-اگر فقط یک دیسک باشد آنگاه آن را به میله مورد نظر انتقال می دهیم .
-اگر n > 1 باشد ; برای این کار n-1 دیسک بالای میله 1 را به میله 2 انتقال می دهیم . حالا دیسک پایینی میله 1 را ثابت باقی می ماند . حال دیسک باقیمانده در در میله 1 را به میله 3 منتقل میکنیم . سرانجام بار دیگر بصورت بازگشتی الگوریتم را فرا خانده تا n - 1 دیسک میله دو را به 3 منتقل کند .
اکنون موفق شدیم n دیسک را از میله 1 به 3 منقل کنیم .
این مسئله در درسهایی مانند ساختمان گسسته و ساختمان داده مورد بحث وبررسی قرار می گیرد .

/*
Algorithmic solution is as follows

1) if TopN==1, move the single disc from A to C and stop.
2) Move the top n-1 discs from A to B, using C as Inter.
3) Move the remaining disc from A to C.
4) Move the n-1 discs from B to C, using A as destination(dest).
*/

#include <stdio.h>
#include <conio.h>
void tower(int,char,char,char); /*prototype*/
int main()
{
int ndisk;
clrscr();
printf("\n Enter number of disks <<<::: ");
scanf("%d",&ndisk);
tower(ndisk,'A','B','C'); /*Calling Function*/
getch();
return 0;

} /* End of program */

/********************************************/

// src = Source | aux = Auxiliry | dest = Destination
void tower(int topN, char src,char aux,char dest)
{
if(topN == 1)
{
printf("\n Disk 1 from %c to %c ",src,dest);
}
else
{
tower(topN-1,src,dest,aux); //src to aux
printf("\n Disk %d from %c to %c ",topN,src,dest);
tower(topN-1,aux,src,dest); //aux to dest
}
}


__________________
Mino آنلاین نیست.   پاسخ با نقل قول
یک کاربر از پست مفیدMinoتشکر کرده است:
Sponsored Links
قدیمی 06-07-2012   #2
Mino
عضو تالار
 

تاریخ عضویت: Feb 2012
محل سکونت: خوزستان، اهواز،
نوشته ها: 802
تشکرهای ایشان: 22,059
33,363بار در12,628پست از ایشان تشكر شده است

صندوق مدال ها

پیش فرض

متغير
متغير، نامي براي يك محل حافظه است كه محتويات آن در طول اجراي برنامه ممكن
است تغيير كند . اسم هر متغير شامل حروف aتا zا، A،تا Zا ، ارقام 0تا 9ا و خط
ربط است . به طوري كه با يكي از حروف و يا خط ربط شروع شده باشند . طول نام هر
متغير بستگي به نوع كامپايلر دارد كه معمولا"از 1ز تا 31 كاراكتر قابل استفاده
است . بعضي از اسامي مجاز و غير مجاز در زير آمده اند :
اسامي مجاز براي متغيرها | اسامي غيرمجاز براي متغيرها |
| 1count | count |
| high! there | test123 |
| grad.1 | high |


تعريف نوع متغير
براي استفاده از متغيرها درC بايد ابتدا آنها را تعريف كنيم . تعريف متغيرها
شامل نامگذاري و تعيين نوع آنها است كه به صورت زير انجام مي شود :
<نوع> <اسامي متغيرها>
يكي از انواع است كه قبلا<نوع>" شامل متغيرهايي <اسامي متغيرها> ذكر كرديم و
است كه مي خواهيم داراي آن نوع باشند . براي تعريف چند متغير در يك دستور بايد
اسامي با كاما از يكديگر جدا گردد : int var1/ var2;

دستور فوق دو متغير به اسامي var2و var1و را از نوع int تعريف مي كند . float flovar1/ flovar2;

دستور فوق ، دو متغير به نام هاي flovar2و flovar1و را از نوع float تعريف
مي كند . double d1;
char ch;

اولين دستور ، d1 را از نوع double و دستور دوم متغير ch را از نوع char
تعريف مي كند .

مقدار دادن به متغيرها
براي مقدار دادن به متغيرها مي توان به دو طريق عمل كرد: 1 به هنگام تعريف
متغير . 2 پس از تعريف متغير . به عنوان مثال : int a=0;
int b/ c/ d/ e=0;
char ch= 'a';
b=0;
c=d=0;

دستور اول ضمن تعريف a از نوع int مقدار آن را برابر با 0 قرار مي دهد .
دستور دوم چهار متغيرb، c،، d،و eو را از نوع int تعريف كرده وفقط مقدار متغير ch
را از نوع كاراكتري تعريف كرده و مقدار آن را برابر با حرف a قرار مي دهد .
دستور چهارم مقدار متغير b را برابر با 0 قرار مي دهد . دستور پنجم مقدار دو
متغير cو dو را برابر صفر قرار مي دهد و اين دستور ، انتساب چندتايي را مشخص
مي كند .
همان طور كه قبلا"گفته شد مقدار متغيرها ممكن است در طول اجراي برنامه تغيير
كند . با استفاده از كلمه كليدي const مي توانيم متغيرهايي را تعريف كنيم كه
مقدار آنها در طول اجراي برنامه ثابت باشد . براي تعريف اين نوع متغيرها بصورت
زير عمل مي شود :
<نوع> <اسامي متغيرها>const
نوع ، يكي از نوع هايي است كه قبلا" ذكر شده و اسامي متغيرها ، مشخص كننده
متغيرهايي است كه بايد به صورت ثابت تعريف شوند : const int a = 10 / b = 20;

دستور فوق دو متغير aو bو را از نوع int تعريف كرده و مقادير آنها را برابر مي دهد . اين مقادير در طول اجراي برنامه قابل تغيير هستند .
Mino آنلاین نیست.   پاسخ با نقل قول
این2کاربر از Mino بخاطر پست مفیدشان تشکر کرده اند
قدیمی 06-07-2012   #3
Mino
عضو تالار
 

تاریخ عضویت: Feb 2012
محل سکونت: خوزستان، اهواز،
نوشته ها: 802
تشکرهای ایشان: 22,059
33,363بار در12,628پست از ایشان تشكر شده است

صندوق مدال ها

پیش فرض

برنامه نويسي ماوس در Turbo C
با توجه به اين كه برنامه هاي تحت داس رابط ضعيفي نسبت به ويندوز و لينوكس و... دارند ما حداقل بايد برنامه هايمان را به ماوس مجهز كنيم تا اين نقص تا حدودي برطرف شود. مخصوصا اگر بخواهيم يك برنامه گرافيكي بنويسيم برنامه مان بدون ماوس غير قابل استفاده خواهد بود. خب بهتره بريم سر اصل مطلب. در اين مقاله فعال كردن ماوس در زبان C توضيح داده شده. البته ما ماوس را با استفاده از وقفه ها كه در تمام كامپيوترهاي IBM يكي هستند فعال مي كنيم و كدهاي ارائه شده با كمي تغيير در پاسكال و بيسيك نيز كار خواهند كرد. اگر شما با زبان C آشنايي نداريد ممكن است اين كدها برايتان ناآشنا باشند. پس بهتر است از خواندن اين مقاله صرفنظر كنيد. البته ممكن است به زودي آموزش C و ++C را نيز در اين سايت بگذاريم. ابتدا براي اين كه از ماوس استفاده كنيم بايد بفهميم كه درايور ماوس نصب شده يا نه؟ اگر نصب نشده باشد نمي توان ماوس را فعال كرد. براي اين كار از تابع شماره 00hex از وقفه 33hex استفاده مي كنيم. اگر قبلا با وقفه ها كار كرده باشيد حتما مي دانيد كه شماره تابع وقفه در ثبات AH قرار مي گيرد ولي توابع 33hex به جاي AH از AX استفاده مي كنند. يعني براي فراخواني اين وقفه شماره تابع آن را در ثبات AX قرار مي دهيم. پس از فراخواني اين وقفه اگر مقدار ثبات AX برابر 0000hex باشد يعني درايور ماوس نصب نشده و ما نميتوانيم از ماوس استفاده كنيم. پس از اين كار بايد نشانگر ماوس را د ر صفحه ظاهر كنيم. نشانگر ماوس دقيقا در وسط صفحه ظاهر خواهد شد. اگر در حالت متني باشيم اين نشانگر به صورت يك مستطيل و اگر در حالت گرافيكي باشيم نشانگر به صورت يك فلش كوچك نشان داده خواهد شد. براي ظاهر كردن كافي است از تابع شماره 01 وقفه 33h استفاده كنيم. برنامه زير هم درايور ماوس را تشخيص داده و هم آن را در حالت متني نشان ميدهد:
کد:
#include <STDIO.H>
#include <CONIO.H>
#include <STDLIB.H>
#include <DOS.H>
void main()
{ union REGS r;
clrscr();
r.x.ax= 0;
int86(0x33,&r,&r);
if(r.x.ax==0)
{
printf("No Mouse Available.....");
getch();
exit(1);
}
r.x.ax=1;//place 01 in AX register
int86(0x33,&r,&r);//showing the mouse pointer
printf(“press any key to exit…”);
getch();
}

تابع مفيد ديگري براي كار با ماوس تابع 02 از وقفه 33hex ميباشد. اين تابع نشانگر ماوس را پنهان مي كند. فرض كنيد مي خواهيد مانند برنامه Paint وقتي ماوس را ميكشيد يك خط هم با آن كشيده شود. در اين حالت اگر نشانگر ماوس ديده شود بعضي از نقاط خط پاك خواهند شد و بهتر است كه در اين مواقع نشانگر را پنهان كنيم. بعدا مثال كاملتري برايتان خواهم نوشت. براي كار با ماوس ما بايد بدانيم كه نشانگر اكنون د ركجاي صفحه مي باشد يعني مختصات (x,y) آن را بدست آوريم. براي اين كار از تابع شماره 03 استفاده مي كنيم. كه پس از فراخواني تابع ثبات CX حاوي مختصات افقي(x) و DX حاوي مختصات عمودي نشانگر خواهد بود. كار مهم ديگر تشخيص كليدهاي فشرده شده ماوس است. تابع 03 همچنين تعيين مي كند كه كدام كليد از ماوس فشرده شده است. اين كليدها را ثبات BX تعيين ميكند. فقط همين كافي است كه بدانيد پس از فراخواني وقفه اگر BX برابر با 00000001)Hex (باشد كليد چپ ماوس فشار داده شده است. راجع به فشار دادن كليدهاي ديگر اگر علاقه مند بوديد به من ايميل بزنيد تا نحوه تشخيص آنها را هم بنويسم. مثال زير نحوه كار را مشخص مي كند: کد:
< /P>< /P>
#include <STDIO.H>
#include <CONIO.H>
#include <STDLIB.H>
#include <DOS.H>
void main() {
union REGS i,o;
clrscr();
i.x.ax=0;
int86(0x33,&i,&o);
if(o.x.ax==0) {
printf("No Mouse Available...");
exit(1);
}
i.x.ax=1;
int86(0x33,&i,&o);
gotoxy(25,23);
printf("Press any key to exit...");
while(!kbhit())
{
i.x.ax=3;
int86(0x33,&i,&o);
gotoxy(2,2);
printf("x->co-ordinate=(%d) \n y->co-ordinate=(%d) ",o.x.cx,o.x.dx);
if(o.x.bx==0x01) printf(“Right button of mouse pressed.”); }
i.x.ax=2; int86(0x33,&i,&o);
}

براي پايان كار مي خواهيم يك برنامه كه ابزار pencil برنامه هاي گرافيكي را شبيه سازي مي كند بنويسيم. براي اين كار ما ابتداصفحه را درحالت گرافيكي قرار مي دهيم براي اين كهبرنامه زير كار كند در دستور initgraph(&gd,&gm,""); در داخل كوتيشن مسيرفايلهاي .bgi را بنويسيد. کد:
#include <CONIO.H>
#include <STDIO.H>
#include <STDLIB.H>
#include <GRAPHICS.H>
#include <DOS.H>
union REGS i,o;
main() {
int show_mouse();
int hide_mouse();
int get_mouse_pos(int *,int *,int *);
int gd=DETECT,gm,button,x1,y1,x2,y2;
initgraph(&gd,&gm,"");
i.x.ax=0; int86(0x33,&i,&o);
if(o.x.ax==0)
{ printf("No Mouse is available..");
exit(1);
restorecrtmode();
}
outtextxy(230,400,"Press any key to exit....");
while(!kbhit())
{
show_mouse(); get_mouse_pos(&x1,&y1,&button);
x2=x1;
y2=y1;
while(button==1) {
hide_mouse();
line(x1,y1,x2,y2);
x1=x2;
y1=y2;
get_mouse_pos(&x2,&y2,&button); }
}
restorecrtmode();
} show_mouse()
{
i.x.ax=1; int86(0x33,&i,&o);
}
hide_mouse()
{
i.x.ax=2; int86(0x33,&i,&o);
}
get_mouse_pos(int *x,int *y,int *button)
{
i.x.ax=3;
int86(0x33,&i,&o);
*x=o.x.cx;
*y=o.x.dx; *button=o.x.bx&1;


Mino آنلاین نیست.   پاسخ با نقل قول
این2کاربر از Mino بخاطر پست مفیدشان تشکر کرده اند
قدیمی 06-07-2012   #4
Mino
عضو تالار
 

تاریخ عضویت: Feb 2012
محل سکونت: خوزستان، اهواز،
نوشته ها: 802
تشکرهای ایشان: 22,059
33,363بار در12,628پست از ایشان تشكر شده است

صندوق مدال ها

پیش فرض

انواع داده
در هر زبان برنامه سازي تعدادي از نوع هاي داده
وجود دارند كه بازه اي را شامل بوده و اعمال خاصي روي آنها انجام پذير است و در 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) . نوعهاي تركيبي
Mino آنلاین نیست.   پاسخ با نقل قول
این2کاربر از Mino بخاطر پست مفیدشان تشکر کرده اند
قدیمی 06-07-2012   #5
Mino
عضو تالار
 

تاریخ عضویت: Feb 2012
محل سکونت: خوزستان، اهواز،
نوشته ها: 802
تشکرهای ایشان: 22,059
33,363بار در12,628پست از ایشان تشكر شده است

صندوق مدال ها

پیش فرض

دستور العملهاي برنامه c

دستور العملهاي برنامه c داراي ويژگي هاي زير است:
هر دستور زبانc به ; ختم مي شود.
هر دستور زبان c مي تواند در يك يا چند سطر ادامه داشته باشد.
در هر سطر مي توان چند دستور تايپ كرد.


با كلماتي مانند signed(باعلامت), unsigned(بدون علامت), long , short مي توان انواع جديدي ايجاد كرد.
مثال:


long double
short int


در واقع نقش صفت دارند وقبل از نوع داده مي آيند.
چون نوع int با علامت است با signed نمي آيد.
مثال:



;long int p2


تعيين نوع متغير را اعلان متغير گوييم.


اعلان ثوابت:
ثوابت مقاديري هستند كه در برنامه تغيير نمي كند.



براي اعلان ثوابت دو روش وجود دارد:



1) define#
2) const


الگو:
مقدار ثابت نام ثابت define#
;مقدار=نام ثابت نوع داده const


مثال:


;const int n=100

define N 100 #


دستور define# علامت ;نميگيرد.زيرا از دستورات پيش پردازنده (preprocessor)است.نه دستور زبان c.
پيش پردازنده چيست؟
يك برنامه سيستم است كه قبل از ترجمه ي برنامه توسط كامپايلر تغييراتي در آن ايجاد مي كندودر صورت مشاهده دستوراتي كه با #شروع مي شود اجرا مي شود.



نكته:بهتر است در ثابت define# نام ثابت را بزرگ بنويسيم.(براي تفكيك آن از متغير ها)
نكته:اگر پس از اعلان ثوابت سعي كنيد مقدار آن را عوض كنيد كامپايلر خطايي را به شما اعلام مي كند.
عملگر ها(operator)
عملگر ها نمادهايي هستند كه اعمال خاصي انجام مي دهند.
عملگر ها به چهاردسته محاسباتي_منطقي_رابطه اي_بيتي تقسيم ميشوند.
عملگرهاي محاسباتي:
+,-,*,/,....
مقاديري كه عملگر ها روي آنها عمل مي كنند عملوند(operand) گويند.
مثال:
m+3
m,3عملوندو +عملگر است.
عملگر ها ي محاسباتي به ترتيب اولويت:



-- ,++
مثال: ۴- -(unary)


*/ %(باقيمانده تقسيم)
مثال: 5-6 + -(binary)



مثالهايي از عملگر هاي محاسباتي:



;int x=10,y=10


;x++


;++y



متغيرهاي x,y با مقدار اوليه 10تعريف مي شود.دستور x++ يك واحد به x اضافه مي كند.دستور ++y هم يك واحد به y اضافه مي كند.
اگرعملگرهاي ++ و-- در عبارتهاي محاسباتی قبل از عملوند قرار گيرند,ابتدا اين عملگر ها عمل كرده. ولي اگربعد ازعملوند قرارگيرند مقدار فعلي عملوند مورد استفاده قرار مي گيرد بعد يك واحداضافه يا كم مي شود.


مثال:


;int x,y


;x=10

;++y=x


مقدار 10 درxقرار مي گيرد.
وبعد مقدار x در y قرار مي گيرد وبعد به x يك واحد اضافه مي شود.پس مقدار x برابر 11 ومقدار y برابر 10 مي شود.


عملگر هاي رابطه اي:


<بزرگتر
>كوچكتر
=<بزرگترمساوي
=>كوچكترمساوي
==مساوي
=! نامساوي



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



! (نقيض) X!
&& (و) Z>Y&& Z>X



|| (يا) X>Y||X>Z





نتيجه ي عملگر ! وقتي درست است كه عمولند آن داراي ارزش نادرستي باشد.
نتيجه ي عملگر && وقتي درست است كه هر دو عملوند ارزش درستي داشته باشد.
نتيجه ي عملگر || وقتي نا درست است كه نتيجه ي هر دو عملوند نا درست باشد.
در بقيه موارد ارزش درستي دارد.


عملگرهاي بيتي :
& و
| يا
^ ياي انحصاري
~ نقيض
<< شيفت به راست(right shift)
>> شيفت به چپ (left shift)
نتيجه ي عملگر & وقتي درست است كه هر دو عملوند ارزش درستي داشته باشد.
نتيجه ي عملگر | وقتي نا درست است كه هر دو عملوند نا درست باشد.
نتيجه ي عملگر ^ وقتي درست است كه يكي از عملوند ها ارزش درستي وديگري ارزش نادرستي داشته باشد.
در بقيه موارد ارزش درستي دارد.
اگر X,Y دو بيت از داده ها باشند وXبرابر 1 باشد0=x~ است.
اگر Xبرابر با1 وY برابر با 0 باشد.1=y|x مي شود وX&Y برابر 0 ميشود.
^وقتي درست است كه يكي از داده ها درست (1) وديگري غلط (0)باشد.
هر شيفت به راست معادل تقسيم بر 2 وهر شيفت به چپ معادل ضرب در 2 است.
الگو:



x=x>>1


مثلآاين عبارت عدد 192 را تقسيم بر ۲مي كند.




عملگر ؟



:الگو
;عبارت3:عبارت 2 ? عبارت1=متغير


اگر عبارت 1 داراي ارزش درستي باشد مقدار عبارت 2 در متغير قرار مي گيرد.وگرنه عبارت 3 در متغير قرار مي گيرد.
مثال:



;int n,m=5


;n=m>5?m*2:m*5


m>5 داراي ارزش نادرستي است . زيراmاز 5 بزرگتر نيست. بنابراين مقدار m*5 كه برابر


با 5*5=25 در متغير yقرار مي گيرد.
Mino آنلاین نیست.   پاسخ با نقل قول
این2کاربر از Mino بخاطر پست مفیدشان تشکر کرده اند
قدیمی 06-07-2012   #6
Mino
عضو تالار
 

تاریخ عضویت: Feb 2012
محل سکونت: خوزستان، اهواز،
نوشته ها: 802
تشکرهای ایشان: 22,059
33,363بار در12,628پست از ایشان تشكر شده است

صندوق مدال ها

پیش فرض

عملگر sizeof:
اين عملگر مي تواند طول يك متغير يا نوع داده را بر حسب بايت تعيين كند.



;متغيرsizeof


;(نوع داده)sizeof



عملگر &:
با استفاده از & مي توان به آدرس متغير ها دسترسي پيدا كرد.
مثال:
m=&x


آدرس x در m قرار دارد.
نكته:
C نسبت به حروف حساس است (case sensitive)يعني بين حروف كوچك و بزگ آن تفاوت وجود دارد.به عنوان مثال كلمات كليدي (key words) درC بايد به صورت كوچك نوشته شود مثلآ
for يك كلمه كليدي است ولي FOR كلمه كليدي نيست.




ساختار برنامه درC :
هر برنامه داراي يك تابع اصلي به نام ()main است.

اين تابع وساير اطلاعات در فايلي به نام فايل سرآيند (header file ) قرار مي گيرد.
پسوند اين فايل ها h. است وبر روي فهرستي از ديسك به نام include قرار مي گيرد.
اين دستور از دستورات پيش پردازنده است وكار اتصال فايل هاي سر آيند را به برنامه انجام مي دهد.



الگو:
<فايل سرآيند>include#


< FONT>

توجه كنيد بعد از اين دستور; قرار نمي گيرد چون يك دستور پيش پردازنده است.
بين #وinclude نبايد فاصله اي وجود داشته باشد .
بين نام فايل وعلائم <>نبايد فاصله اي وجود داشته باشد .
ذكر علائم<> ضروري است.
printf:
براي چاپ خروجي به كار مي رود.



الگو:
;(عبارت2,عبارت1)printf



در عبارت 1 ميتوان عين خروجي را چاپ كرد يا كاراكتر هاي فرمت يا كنترلي
در عبارت 2 عين خروجي را ميتوان چاپ كرد.
كاراكتر هاي فرمت:
%d براي چاپ اعداد صحيح
%c براي چاپ كاراتر
%f براي چاپ اعداد اعشاري
مثال:


;(printf("%f",t


كاراكتر هاي كنترلي:
n/ براي رفتن به سطر جديد.(new line)



****
scanf:
براي ورود داده ها به كارمی رود.



الگو:
;(عبارت2,عبارت1)
scanf



در عبارت 1 كاراكتر هاي كنترلي وفرمت ودر عبارت2 آدرس ورودي داده مي شود.
مثال:



;(scanf("%d",&n



به عنوان مثال برنامه ی محيط ومساحت مستطيل را مي نويسم.
برنامه اي بنويسيد كه طول وعرض مستطيل را گرفته ومحيط ومساحت آن را حساب كند.



<>


(void main(void

}

;int x,y,s,p

;(scanf("%d%d",&x,&y


;p=(x+y)*2



;s=x*y


;(printf("%d%d",p,s

{


برنامه ميانگين 3 عدد صحيح :


<>


(void main(void


}

;int a,b,c

;float t

;(scanf("%d%d%d",&a,&b,&c

;t=(float)(a+b+c)/3

;(printf("%f",t

{


ميانگين 3 عدد صحيح ممكن است اعشاري باشد به همين علت ميانگين را از نوعfloatتعيين مي كنيم.

float را داخل پرانتز نوشتيم چون تغيير نوع (intبهfloat)صورت گرفته است.
كه به اين عمل (type casting) مي گويند.
مي توان برنامه را به اين صورت هم نوشت.



<>



(void main(void


}

;int a,b,c


;float t


;(scanf("%d%d%d",&a,&b,&c

;t=a+b+c/3

;(printf("%f",t

{
Mino آنلاین نیست.   پاسخ با نقل قول
این2کاربر از Mino بخاطر پست مفیدشان تشکر کرده اند
قدیمی 06-07-2012   #7
Mino
عضو تالار
 

تاریخ عضویت: Feb 2012
محل سکونت: خوزستان، اهواز،
نوشته ها: 802
تشکرهای ایشان: 22,059
33,363بار در12,628پست از ایشان تشكر شده است

صندوق مدال ها

پیش فرض

ساختار تکرار
ساختار تکرار ( WHILE )
WHILE یک ساختار تکرار شرطی در زبان C است در مواقعی که تعداد دفعات تکرار دستورات زیادی نباشد استفاده می شود
دستور (شرط While ( (1
نوع دیگری (شرط)While (2 دستورات { وقتی که کامپایلر برنامه را کامپایل کرد و به ساختار while رسید شرط آن را چک می کند اگر شرط برقرار باشد خارج می شود و به ادامه برنامه می رود وگر نه شرط بر قرار نبود آنقدر این کار را تکرار می کند تا شرط برقرار شود
مثال اعداد بین 0تا 15 را چاپ کند .
main()
}
lnt n;
While (n<16)
{
Printf ("%d",n);
{
N=n++;
{
مثال2
برنامه ای که فاکتوریل تعداد نامحدودی عدد را از ورودی گرفته ومحاسبه کند و با ctrl+breakاز برنامه خارج شود؟
Main()
{
Int a,n;
while (1)
{
Printf("\n enter number:");
Scanf("%d",&n);
A=1;
While (n>1)
A*=a— 1;
Printf("\n factor is :");
Printf("%d\n",a);
}
}
ساختار تکرار do
مانند دستور while است فقط تفاوت آن در این است که در این دستور شرط را در آخر حلقه چک می شود اما در while در اول حلقه شرط چک می شود
do
}
دستورات ;
{
(شرطWhile(
مثال
برنامه ای که عددی را از ورودی می گیرد و معکوس آنر ا چاپ می کند؟
(چنانچه ما از فرمولی استفاده کنیم که اعداد ده دهی بر 10 تقسیم شوند وسپس باقیمانده (%) و خارج قسمت (/)
را کنارهم بگزاریم برعکس عدد می شود)
Main()
{
Int n,d;
printf("enter a number :");
scanf("%d",&n);
do
{
d=(n%10)
printf("%d",d);
n=n/10;
}
While(n!=0)
}
برای استفاده از دستور for برای بی نهایت کردن حلقه از دستور فوق استفاده می کنیم
For (;
{
دستورات
{

مثال
همان برنامه فاکتوریل
Main()
{
Int a,n;
for(;
{
Printf("\n enter number:");
Scanf("%d",&n);
A=1;
While (n>1)
A*=a— 1;
Printf("\n factor is :");
Printf("%d\n",a);
}
}
Mino آنلاین نیست.   پاسخ با نقل قول
این2کاربر از Mino بخاطر پست مفیدشان تشکر کرده اند
قدیمی 06-07-2012   #8
Mino
عضو تالار
 

تاریخ عضویت: Feb 2012
محل سکونت: خوزستان، اهواز،
نوشته ها: 802
تشکرهای ایشان: 22,059
33,363بار در12,628پست از ایشان تشكر شده است

صندوق مدال ها

پیش فرض

دستورات شرطي
دستور if
اولين دستور بصورت if (boolean expression) {statements} آورده شده است.
دستور if با استفاده از كلمه كليدي if آغاز مي‌شود. سپس يك عبارت منطقي
درون يك زوج پرانتز قرار مي‌گيرد . پس از بررسي اين عبارات منطقي
دستورالعمل/دستورالعمل‌هاي داخل كروشه اجرا مي‌شوند
. همانطور كه مشاهده مي‌نماييد، دستور if يك عبارت منطقي
را بررسي مي‌كند. در صورتيكه مقدار اين عبارات true باشد دستورهاي داخل
بلوك خود را اجرا مي‌نمايدو در صورتيكه مقدار آن برابر با false باشد اجراي
برنامه به بعد از بلوك if منتقل مي‌شود. در اين مثال همانطور كه ملاحظه مي‌نماييد
، عبارت منطقي دستور if بشكل if(myInt > 0) است. در صورتيكه مقدار myInt
بزرگتر از عدد صفر باشد، دستور داخل بلوك if اجرا مي‌شود و در غير اينصورت
اجراي برنامه به بعد از بلوك if منتقل مي‌گردد.
Main()
{
Int Myint ;
If (myint>0)
Printf("%d",myint);
}


دستور if-else
در بيشتر موارد از تصميم‌گيري‌هاي دوگانه يا چندگانه استفاده مي‌شود. در اين نوع تصميم‌گيري‌ها، دو يا چند شرط مختلف بررسي مي‌شوند و در صورت true بودن يكي از آنها عمل مربوط به آن اجرا مي‌گردد. در اين حالت درصورتيكه عبارت منطقي دستور if برابر با true باشد دستور بعد از if اجرا مي‌شود و در غير اينصورت دستور بعد از else به اجرا در مي‌آيد. در حقيقت در اين حالت مي‌گوئيم " اگر شرط if صحيح است دستورات مربوط به if را انجام بده و درغير اينصورت دستورات else را اجرا كن".
فرم كلي دستور if-else بصورت زير است :
if (boolean expression)
{statements}
else
{statements}
كه در آن boolean expression عبارت منطقي است كه صحت آن مورد بررسي قرار مي‌گيرد و statements دستور يا دستوراتي است كه اجرا مي‌گردند.
دستور if-else if … else يا if تودرتو
در صورتيكه نياز باشد تا چندين حالت منطقي مورد بررسي قرار گيرد و دستورات مربوط به يكي از آنها اجرا شود، از فرم تصميم‌گيري چندگانه استفاده مي‌نماييم. اين نوع استفاده از دستور if در اصطلاح به if تودرتو (Nested If) معروف است چراكه در آن از چندين دستور if مرتبط به يكديگر استفاده شده است. چهارمين دستور if در مثال 1-3 استفاده از if تودرتو را نشان مي‌دهد. در اين حالت نيز دستور با كلمه كليدي if آغاز مي‌گردد. شرطي بررسي شده و در صورت true بودن دستورات مربوط به آن اجرا مي‌گردد. اما اگر مقدار اين عبارت منطقي false بود آنگاه شرطهاي فرعي ديگري بررسي مي‌شوند.اين شرطهاي فرعي با استفاده از else if مورد بررسي قرار مي‌گيرند. هر يك از اين شرطها داراي عبارات منطقي مربوط به خود هستند كه در صورت true بودن عبارت منطقي دستورات مربوط به آنها اجرا مي‌گردد و در غير اينصورت شرط بعدي مورد بررسي قرار مي‌گيرد. بايد توجه كنيد كه در ساختار if تودرتو تنها يكي از حالتها اتفاق مي‌افتد و تنها يكي از شرطها مقدار true را بازمي‌گرداند.
فرم كلي if تودرتو بشكل زير است :
if (boolean expression)
{statements}
else if (boolean expression)
{statements}

else
{statements}
Mino آنلاین نیست.   پاسخ با نقل قول
این2کاربر از Mino بخاطر پست مفیدشان تشکر کرده اند
قدیمی 06-07-2012   #9
Mino
عضو تالار
 

تاریخ عضویت: Feb 2012
محل سکونت: خوزستان، اهواز،
نوشته ها: 802
تشکرهای ایشان: 22,059
33,363بار در12,628پست از ایشان تشكر شده است

صندوق مدال ها

پیش فرض

رسم چند شکل جالب در محیط گرافیکی
با همین چند خط کد کوتاه اشکال زیبایی در محیط گرافیکی ایجاد می شود , تنها با تغییر برخی اندازه ها اشکال جدیدی خلق می شود . برای این دو برنامه کوتاه فکر نکنم نیازی به هیج توضیحی باشد چون در هر کتاب آموزش C/C++ درباره برنامه نویسی در محیط گرافیکی مطلب گفته شده (تنها نکته لازم به ذکر این است که مسیرگرافیکی کتابخانه مبدل گرافیکی c++ درست داده شود مثلاً مسیر گرافیکی C++ من "C:\\tc\\bgi" می باشد , حواستان باشد که باید از \\ استفاده کنید نه از \ . )
Program 1 :
/*
########################################
# WWW : cpp.blogfa.com #
# Released on July 2005 #
########################################
*/
//Essential Library
#include <graphics.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>


int main(void)
{
int gdriver = DETECT;
int gmode,errorcode,a,b,s;
float k,x,y,i,j;
float pi = 3.14159;
initgraph(&gdriver,&gmode,"c:\\tc\\bgi");
errorcode = graphresult();
if ( errorcode != grOk)
{
exit(1);
}
s = 0;
setcolor(12);
do {
i = 38+100*cos(pi*s/190);
j = 175+100*sin(pi*s/190);
x = (int)i;
y = (int)j;
circle(x+s,y,(int)y/6);
s=s+3;
} while (s<550);
getch();
closegraph();
// Return into text mode
return 0;
}
//End of program


Program 2 :
/*
########################################
# WWW : cpp.blogfa.com #
# Released on July 2005 #
########################################
*/
//Essential Library

#include <graphics.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>

int main(void)
{
int gdriver = DETECT;
int gmode,errorcode,i;
initgraph( &gdriver, &gmode,
"c:\\tc\\bgi");
errorcode = graphresult();
if (errorcode != grOk)
{
exit(
1);
}

setcolor(
10);
i=
0;

do{
i=i+
1+(int)i/10;
line(
120+i,i,520-i,i);
line(
120+i,400-i,520-i,400-i);
line(
520-i,400-i,520-i,i);
line(
120+i,i,120+i,400-i);
} while (i<
200);

getch();
closegraph();
//Return into text mode
return 0;//End of Programm
}
Mino آنلاین نیست.   پاسخ با نقل قول
یک کاربر از پست مفیدMinoتشکر کرده است:
قدیمی 06-07-2012   #10
Mino
عضو تالار
 

تاریخ عضویت: Feb 2012
محل سکونت: خوزستان، اهواز،
نوشته ها: 802
تشکرهای ایشان: 22,059
33,363بار در12,628پست از ایشان تشكر شده است

صندوق مدال ها

پیش فرض

معرفی چند تابع کاربردی

1.clreol : این تابع تمام کاراکترها که بعد از مکان نما قرار دارد را تا آخر آن خط پاک میکند بدون آنکه موقعیت مکان نما تغییر کند . علت اینکه من از تابع cptintf در مثال زیر استفاده کردم این است که توابع clreol - clrscr و getch هر سه در کتابخانه Conio.H هستند و تابع cprintf هم در این کتابخانه است و دیگر از printf استفاده نکردم همچنین یکی دیگر از مزیت های cprintf این است که برای چاپ text های رنگی در خروجی از این تابع استفاده می شود , در حالیکه printf چنین امکانی را در اختیارمان قرار نمی دهد . در زیر مثالی ارائه شده تا مفهوم تابع clreol را بهتر متوجه شوید :
#include <stdlib.h>

int main(void)

{
clrscr();
textcolor(10);
cprintf("The function CLREOL clears all characters from the\r\n");
cprintf("cursor position to the end of the line within the\r\n");
cprintf("current text window, without moving the cursor.\r\n");
cprintf("Press any key to continue . . .");
gotoxy(14,4);
getch();

clreol();

getch();
return 0;
}
2 . delline : این تابع سبب می شود که خطی که مکان نما (Cursor) در آن قرار دارد حذف شود . برای تفهیم بیشتر به مثال زیر توجه کنید :
#include <stdlib.h>int main(void)
{
clrscr();
textcolor(12);
cprintf("The function DELLINE deletes the line containing the\r\n");
cprintf("cursor and moves all lines below it one line up.\r\n");
cprintf("DELLINE operates within the currently active text\r\n");
cprintf("window. Press any key to continue . . .");
gotoxy(1,2);
/* Move the cursor to the second line and first column */
getch();

delline();

getch();
return 0;
}


3 . insline : با استفاده از این تابع می توان یک خط خالی در بالای مکانی که مکان نما قرار دارد ایجاد کرد . به مثال زیر توجه کنید :
#include <stdlib.h>
int main(void)
{
clrscr();
textcolor(12);
cprintf("The function DELLINE deletes line containing the\r\n");
cprintf("cursor and moves all lines below it one line up.\r\n");
cprintf("DELLINE operates within the currently active text\r\n");
cprintf("window. Press any key to continue . . .");
gotoxy(1,2);
/* Move the cursor to the second line and first column */
getch();

delline();

getch();
return 0;
Mino آنلاین نیست.   پاسخ با نقل قول
این2کاربر از Mino بخاطر پست مفیدشان تشکر کرده اند
پاسخ


کاربران در حال دیدن موضوع: 1 نفر (0 عضو و 1 مهمان)
 

(View-All تعداد کاربرانی که این تاپیک را مشاهده کرده اند : 16
Afof, ASHIL, code-academy.ir, dajes, daryuush, fardin75, Fertax, hassan717, koma1369, KOROSH BOZORG, mehrnosh, Mino, m_ahmad_b, reza300, s@eed, S@m!ra
ابزارهای موضوع
نحوه نمایش

مجوز های ارسال و ویرایش
شما نمیتوانید موضوع جدیدی ارسال کنید
شما امکان ارسال پاسخ را ندارید
شما نمیتوانید فایل پیوست در پست خود ضمیمه کنید
شما نمیتوانید پست های خود را ویرایش کنید

BB code هست فعال
شکلک ها فعال است
کد [IMG] فعال است
کد HTML غیر فعال است

انتخاب سریع یک انجمن


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


Powered by vBulletin Version 3.8.9
.Copyright ©2000 - 2017, Jelsoft Enterprises Ltd

Free Persian Language By Persian Forum Ver 3.0
« ثبت شده در پایگاه ساماندهی وزارت ارشاد »
مسئولیت متون درج شده در این پایگاه اینترنتی، بر عهده ی نویسنده ی آن می باشد.