نمایش نتایج: از شماره 1 تا 2 , از مجموع 2

موضوع: Re: آموزش برنامه نویسی به زبان C

  1. #1
    مدیر بازنشسته
    تاریخ عضویت
    2010/01/09
    محل سکونت
    *گیلان-املش*
    سن
    31
    نوشته ها
    5,954

    New 1 Re: آموزش برنامه نویسی به زبان 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 |


    عبارات ورودی / خروجی :
    توضیحات : برای بهتر دیدن مقاله فایل .rar رو که attach کردم، دانلود کنید.


    بخش اول : (printf())

    در C از دستور printf() برای چاپ خروجی بر روی صفحه نمایش استفاده میشود و همچنین از scanf() برای خواندن اطلاعات از ابزارهای ورودی مانند keyboard بهره گرفته میشود. اما در این بین نکاتی است که در این بخش به آنها اشاره میکنیم .

    عبارات خروجی :
    دستور printf() در تابع کتابخانه ای stdio.h قرار دارد. این تابع در صورت صحیح اجرا شدن تعداد کاراکترهای چاپ شده و در غیر این صورت عددی منفی را برمیگرداند. فرم کلی دستور printf() به صورت روبرو است :
    کد:
    Printf( "<1>" , <2>);
    عبارت 1 : این بخش میتواند 3 حالت داشته باشد :
    1. یک متن خالص باشد :

    کد:
    printf("Iran is my country");

    2. حاوی فرمت متغیرهایی باشد که در عبارت 2 آورده میشوند، مانند : کد:
    printf("x=%d",x)
    . باید توجه داشت که فرمت های گوناگون که هر کدام با یک حرف (بعد از علامت % ) نشان داده میشوند، برای هر Data Type (مراجعه شود به پست انواع داده ها – نویسنده : aria ) فرق میکند. همگی فرمت ها با علامت % شروع میشوند . مثلا در مثال بالا %d بیان کننده ی data type عدد صحیح است (% نشان دهنده ی آغاز یک فرمت و d نماد اعداد صحیح است ). به جدول زیر توجه کنید :
    %c : کاراکتر
    %d : اعداد صحیح دهدهی + و -
    %i : اعداد صحیح دهدهی + و -
    %e : نمایش علمی عدد همراه حرف e
    %E : نمایش علمی عدد همراه حرف E
    %f : عدد اعشاری ممیز شناور
    %g : اعداد اعشاری ممیز شناور
    %G : اعداد اعشاری ممیز شناور
    %o : اعداد مبنای 8 مثبت
    %s :رشته ای از کاراکتر ها
    %u : اعداد صحیح بدون علامت
    %x : اعداد مبنای 16 مثبت با حروف کوچک
    %X : اعداد مبنای 16 مثبت با حروف بزرگ
    %p : Pointer (اشاره گر)
    %n :موجب میگردد تا تعداد کاراکترهایی که تا قبل از این فرمت چاپ شده است در متغیر متناظر با آن قرار گیرد.
    %% : علامت %
    %hd : برای چاپ اعداد از نوع long
    %ld : برای چاپ اعداد از نوع short
    3. حاوی کاراکترهای کنترلی باشد. به این صورت که با این کاراکتر ها میتوان محل چاپ،چاپ در سطر بعدی و ... را تنظیم کرد. این کاراکنر ها با "\" شروع میشوند و بعد از آن شناسه ی دیگر آن می آید(مانند کاراکترهای فرمت). در زیر اطلاعات تفصیلی در این باره آمده است :
    \f : موجب انتقال کنترل به صفحه ی جدید میشود.
    \n : موجب انتقال کنترل به خط جدید میشود.
    \t : انتقال به 8 محل بعدی صفحه نمایش.
    \" : چاپ (")
    \' : چاپ (')
    \\ : back slash
    \v : انتقال کنترل به 8 سطر بعدی
    \N : ثابت های مبنای 8 (N عددی مبنای 8 است)
    \xN : ثابت های مبنای 16 (N عددی مبنای 16 است)

    خوب حالا وحشت نکنید، الان مثال حل میکنیم تا مطلب جا بیفته قبل از هر چیز باید بگم عبارات و جمله هایی که در برنامه بعد از "//" قرار میگیرند توسط کامپایلر اجرا نمیشوند و تنها جهت توضیح و خوانایی برنامه است.
    مثال 1: چاپ یک رشته ی معمولی با printf() :
    کد:
    #include<stdio>// the library that printf is in that
    int main()
    {//Begin of program
    printf("C is a language"); // printing the text on the screen
    return 0; //waits for a key press after the program is finished & wont jump out of it
    } //End of program
    خروجی : C is a language


    حالا اگر یک تغییرات کوچکی در برنامه ی بالا بدهیم و دو عبارت را چاپ کنیم :
    کد:
    #include<stdio>
    int main()
    {
    printf("C is a language");
    printf("I like it"); //prints the second text
    return 0;
    }

    خروجی : C is a languageI like it
    به خروجی بالا دقت کنید. دقیقا عبارت دوم بعد از عبارت اول چاپ شده است و بسیار ناخوانا است. اینجاست که بحث حالت سوم پیش ماید. یعنی کاراکترهای کنترلی.
    با نگاهی به این کاراکترها میبینیم که آنها میتوانند نیازهای ما را برطرف کنند. مثلا اگر من بخواهم جمله ی دوم من در خط بعدی چاپ شود، یا در 8 سطر بعدی چاپ شود، یا در 8 ستون بعدی(یک Tab) و ...
    .....
    کد:
    Printf("C is a language/n"); // Control would be placed in next line
    printf("I like it");

    …..
    خروجی :
    C is a language
    I like it
    حال یک مثال دیگر :
    .....
    کد:
    printf("C is a language /t"); // Control would be placed in next Tab
    printf("I like it");

    …..
    خروجی :
    C is a language I like it

    حال یک مثال دیگر :
    .....
    کد:
    printf("/"Hello/"");

    …..
    خروجی :
    "Hello"
    و بقیه نیز بر حسب کاربرد به اینگونه است ...

    کاراکترهای فرمت :
    خوب، با یک مثال شروع میکنیم. ما یک متغیر داریم که میخواهیم مقدار آن را در خروجی چاپ کنیم. نوع data type آن integer هستش و در هنگام تعریف کردن به آن مقدار اولیه 5 را داده ایم. خوب شروع میکنیم.
    کد:
    #include<stdio>
    int main()
    {
    int x=5;
    printf("Our variable is called x & it is equal with %d",x);
    return 0;
    }

    خروجی :
    Our variable is called x & it is equal with 5
    در مثال بالا دقت کنید . متن ها به صورت عینی چاپ میشوند و در جای %d عینا مقدار صحیح متناظر قرار میگیرد. به مثالی دیگر توجه کنید.
    کد:
    #include<stdio>
    int main()
    {
    int x=5;
    float y=6.7;
    printf("Our variables are called x=%d \tand\t y=%f",x,y);
    return 0;
    }

    خروجی :
    Our variable are called x=5 and y=6.7
    بسیار خوب در این مثال ترکیبی از همه ی کارهای این بخش بود. \t ها باعث شد هنگام چاپ کنترل 8 کاراکتر به جلو بپرد و %d و %f هم که برای چاپ مقادیر صحیح و اعشاری int و float بودند.

    حالا میرسیم به این مبحث که ما این همه نوشتیم ، حالا چه جوری پاکش کنیم ؟!؟! یا اینکه چه جوری تو یه جای خاص از صفحه بنویسیم ؟ مثلا سطر 10 و ستون 20 .برای این کارها 2 تابع موجود است که هردو در فایل conio.h قرار دارد.

    تابعی که صفحه را پاک میکند clrscr() نام دارد. این تابع تمامی صفحه را پاک کرده و کنترل را به نقطه ی 0.0 منتقل میکند.
    تابع gotoxy(a,b) مکان نما را به نقطه ی a,b منتقل میکند و از این پس نوشتن را در آن محل انجام میدهد. به مثال زیر توجه کنید :
    ....
    کد:
    gotoxy(10,20);
    printf("C is a language");

    …..
    با اجرای این مثال جمله ی بالا در مختصات 10و20 صفحه چاپ میشود.


    طول میدان :
    برای اینکه به تابع printf() طول میدان بدیم تا هرکاری خواست در هنگام چاپ انجام نده باید در کاراکترهای فرمت تغییراتی رو ایجاد کنیم.
    %5d
    این دستور نشان دهنده ی یک کاراکتر فرمت صحیح با طول میدان 5 عدد صحیح است.
    %5.3f
    این دستور نشان دهنده ی یک کاراکتر فرمت اعشاری است با طول میدان 5 عدد صحیح و سه عدد اعشار.

    پایان .

    در انتها باید بگویم در C++ به جای printf() از تابعی با نام cout استفاده میشود . در این تابع کاراکتر های ورودی نقشی ندارند ولی از کاراکترهای کنترلی پشتیبانی میشود. روش استفاده از آن در مثال زیر نشان داده میشود:
    کد:
    #include<iostream>
    int main()
    {
    int x=5;
    cout<<"We are printing an integer variable : "<<x<<"\n";
    cout<<"again we are printing : "<<x<<endl;
    cout<<"Finished";
    return 0;
    }

    خروجی :
    We are printing an integer variable : 5
    Again we are printing : 5
    Finished

    توجه کنید که endl (end line) همان کار \n را انجام میدهد.

  2. #2
    مدیر بازنشسته
    تاریخ عضویت
    2010/01/09
    محل سکونت
    *گیلان-املش*
    سن
    31
    نوشته ها
    5,954

    پیش فرض

    بخش دوم : scanf()

    تابع scanf() اگر درست اجرا شود تعداد متغیرهایی را که از ورودی خوانده برمیگرداند و در غیر این صورت عبارت EOF ( با حروف بزرگ ) را برمیگرداند. صورت کلی scanf() به صورت زیر است :
    کد:
    Scanf("<1>",<2>);


    عبارت <1> میتواند در برگیرنده ی 3 کاراکتر میتواند باشد :
    1. کاراکترهای فرمت که از آنها به تفصیل در بَخش 1 سخن گفته شد.
    2. space : که به آن فضای خالی گویند و گذاشتن حتی یک space سبب میگردد که در هنگام وارد کردن اطلاعات تمامی space ها ، Tab ها و new line ها نادیده گرفته شوند و اطلاعات خالص از صفحه کلید خوانده شود. مثلا اگر شما قبل از عدد ورودی 5 جای خالی بگذارید به دلیل وجود space در قسمت 1 نادیده گرفته میشوند و تنها عدد 5 خوانده میشود.
    3. کاراکترهایی غیر از فرمت و space . این کاراکتر ها اگر عینا در هنگام وارد کردن اطلاعات وارد شوند از آنها صرفنظر میشوند. به مثال رو به رو توجه کنید : "%d,%d"
    به کاما در بین دو کاراکتر فرمت توجه کنید. حال فرض کنید در ورودی اطلاعات به صورت زیر وارد شده : 5,10 در این حالت اعداد 5 و 10 خوانده میشوند و از کاراکتر کاما صرف نظر میشود.

    در قسمت <2>، متغیر ها با آدرسشان ذکر میشوند. توجه شود که هنگامی که علامت & قبل از نام متغیر می آید، نشان دهنده ی آدرس آن است. یعنی دستور &variable1 آدرس متغیر variable1 را برمیگرداند.
    کد:
    scanf("%d%f", &x,&a);



    مثال : محیط و مساحت یک مستطیل :
    کد:
    #include<stdio>
    #include<conio>
    int main()
    {
    int x,y,area,p;
    printf("Enter length & width : ");
    scanf("%d%d", &x, &y);
    area=x*y;
    p=(x+y)*2;
    printf(" Area = %d , p = %d", area,p);
    getch();
    return 0;
    }

    توابع خواندن کاراکتر از صفحه کلید :
    برای خواندن کاراکتر از صفحه کلید ، 2 تابع وجود دارد : getch() و getche() . که هر دو عمل خواندن کاراکتر را با اندکی تفاوت انجام میدهند. تابع getch() کاراکتری را که از keyboard میخواند را در صفحه نمایش نمیدهد در حالی که getche() این کار را میکند (نمایش دادن کاراکتر). تفاوت هردوی آنها با scanf() در این است که نیازی به فشردن کلید Enter پس از فشردن کاراکتر بر روی صفحه کلید ندارد. به طوری که به سرعت پس از فشردن کلید بر روی صفحه، کاراکتر آن در متغیر از جنس char ذخیره میشود.
    مثال

    کد:
    getch() :
    #include<stdio>
    #include<conio>
    int main()
    {
    char ch;
    printf("Press a key : ");
    ch=getch();
    printf("You Pressed : ");
    printf(" %c",ch);
    getch();
    return 0;
    }

    خروجی : اگر فرض کنیم که کاربر کلید C را زده باشد داریم :
    C
    در این مثال تنها یک C چاپ میشود و آن نیز مقدار موجود در متغیر ch است. تابع getch() همانطور که میدانیم چیزی در صفحه نمایش چاپ نخواهد کرد.


    مثال
    کد:
    getche() :
    #include<stdio>
    #include<conio>
    int main()
    {
    char ch;
    printf("Press a key : ");
    ch=getche();
    printf("\n You Pressed : ");
    printf(" %c",ch);
    getch();
    return 0;
    }

    خروجی : اگر فرض کنیم که کاربر کلید C را زده باشد داریم :
    C
    You Pressed :C
    در این مثال اولین C همانی است که از صفحه کلید خوانده شده و دومی مقدار موجود در متغیر ch است.


    این مطلب بین C و ++C مشترک است.

    برنامه های ساخت یافته :


    توابع :
    با استفاده از توابع میتوانیم برنامه را به بخش های کوچکتر شکسته و آن را بسیار خواناتر کنیم. باید گفت توابع قسمتی از برنامه هستند که از کد اصلی (بخش main ) حذف شده و به صورت یک قطعه برنامه نوشته میشود (مثلا فرض کنید عمل جمع در یک ماشین حساب از بدنه ی اصلی برنامه جدا شود و یک قطعه کد شود که دو عددی که باید جمع کند را به صورت ورودی بگیرد).یک کاربرد دیگر توابع این است که از دوباره نویسی کدهایی که کاربردشان زیاد است جلوگیری میکند. مثلا اگر تابع جمع ما در برنامه ی ماشین حساب در 5 جا باید نوشته شود، با یکبار نوشتن تابع، میتوان آن را در 5 جا صدا کرد ( فراخوانی،Call ) . وقتی یک تابع call میشود خط اجرای برنامه به آن تابع رفته و پس از اجرای کامل تابع به برنامه بازمیگردد.
    در زبانهای برنامه نویسی روال تابع ها معمولا بر این اساس است که 2 نوع تابع دارند که یک سری یک مقدار ( متغیر ) را به برنامه برمیگرداند و سری دیگر فقط یک سری دستورات را اجرا میکنند ( البته بعضی از توابع هیچ یک از این دو سری نیستند . مانند constructor در کلاس ها-بعدا در مبحث کلاس ها توضیح داده میشود ).

    نوع اول : تابع های دارای نوع .
    این تابع ها دارای نوع (data type ) هستند، به طوری که مقداری که تابع برمیگرداند از جنس یکی از data type ها است.( مثلا int,char,double ,... ). این نوع توابع را به صورت کلی زیر مینویسند :

    ;()نام تابع نام datatype




    کد:
    int function1();
    char function2();





    function1 : تابعی از جنس int ( یعنی مقدار بازگردانده شده به برنامه از نوع عدد صحیح خواهد بود )
    function2 : تابعی از جنس کاراکتر ( یعنی مقدار بازگردانده شده به برنامه از نوع کاراکتر خواهد بود )

    توابع نوع دوم : این توابع تنها یک سری دستورات را اجرا میکنند و از هیچ نوع data type خاصی هم نیستند. این نوع توابع را به صورت کلی زیر مینویسند :

    ;()نام تابع void

    مثال :



    کد:
    void function3();
    void function4();





    Function3 , function4 دارای هیچ نوعی نیستند و تنها یک سری دستورات را اجرا میکنند.

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

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

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