1 / 236

بسم الله الرّحمن الرّحيم

بسم الله الرّحمن الرّحيم. برنامه سازی پیشرفته ( C ). فهرست مطالب. منظور از برنامه نويسي کامپيوتر تاريخچه مختصر برنامه نويسي مراحل نوشتن يک برنامه قالب کلی برنامه ها در زبان C انواع خطاهای برنامه نویسی. فهرست مطالب. نمایش متن, دستور printf و کاراکترهای کنترلی

odelia
Download Presentation

بسم الله الرّحمن الرّحيم

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. بسم الله الرّحمن الرّحيم برنامه سازی پیشرفته (C)

  2. فهرست مطالب • منظور از برنامه نويسي کامپيوتر • تاريخچه مختصر برنامه نويسي • مراحل نوشتن يک برنامه • قالب کلی برنامه ها در زبان C • انواع خطاهای برنامه نویسی

  3. فهرست مطالب • نمایش متن, دستور printf و کاراکترهای کنترلی • آشنایی با مفهوم متغیرها و عملگرها • چاپ مقدار متغيرها • دستورات ورودي: scanf, getche, getch • فرمت بندي خروجي • تبديل انواع • تقدم عملگرها

  4. فهرست مطالب • تعینن طول میدان در دستورات scanf, printf • تبدیل انواع داده ای به یکدیگر • عملگرهای ++, -- • دستورات شرطی: if, if-else, switch-case • دستور break • حلقه ها: while, for, do-while • حلقه های تودرتو

  5. فهرست مطالب • توابع ( مفهوم, طرز تعریف) • توابع کاربر- توابع کتابخانه ای • متغیرهای محلی و سراسری • توابع بازگشتی • خوانایی برنامه • آرایه ها • دستور define • آرایه های چندبعدی • رشته ها

  6. برنامه نويسي به زبان C

  7. ساده ترين برنامه به زبان C void main( ) { } نکات: • خط اول در هر برنامه C بايد وجود داشته باشد. • { : شروع برنامه • { : خاتمه برنامه • دستورات برنامه در داخل {} نوشته مي شوند.

  8. مراحل چهارگانه نوشتن، compile، link و اجرا • نوشتن • Compile • Link • اجراء

  9. نکات • error: به خطاهاي برنامه نويسي error مي گويند. • انواع خطاها در برنامه نويسي: • خطاهاي زمان compile(compile errors): • مانع کامپايل صحيح برنامه مي شوند. • خطاهاي زمان link (Link errors): • براي کامپايل مزاحمتي ايجاد نمي کنند اما مانع Link برنامه مي شوند. • خطاهاي زمان اجرا: (Run time errors): • کامپايل و Link با موفقيت انجام مي شود ولي اجراي برنامه دچار اشکال مي شود.

  10. error • حسن سيب را خورد. • هسن سيب را خورد. • متناظر با خطاي کامپايل • را حسن خورد سيب. • متناظر با خطاي Link • سيب حسن را خورد. • متناظر با خطاي زمان اجرا

  11. مثال 2) نمايش متن بر روي مانيتور برنامه اي بنويسيد که پيغام Hello را در مانيتور نشان دهد. #include <stdio.h> void main() { printf(“Hello”); } پيغام Hello چاپ مي شود و مکان نما بعد از حرف o قرار مي گيرد.

  12. نکات • Stdio.h نمونه اي از يک header file است. فايل هاي header جزئيات غير مرتبط با • کاربر را از ديد او مخفي مي کند و موجب مي شود برنامه اي خلاصه تر و خواناتر داشته باشيم. • دستور #include …. يک راهنماي پيش پردازش (preprocessor directive) يا • راهنماي کامپايلر (compiler directive) خوانده مي شود. Compiler قبل از شروع • کامپايل، محتويات اين فايل را به برنامه اضافه مي کند و سپس کامپايل آغاز مي گردد. • در انتهاي هر دستور زبان C داخل main علامت ; قرار داده مي شود.

  13. نکات (ادامه) • Printf(“Hello welcome”); خروجي ؟؟ • فاصله ها هم نمايش داده مي شوند. • مي خواهيم خروجي ما به صورت زير باشد: Hello Welcome #include <stdio.h> Void main( ) { Printf(“Hello Welcome”); } #include <stdio.h> Void main( ) { Printf(“Hello\nWelcome”); } خطا

  14. \t #include <stdio.h> Void main( ) { Printf(“Hello\tWelcome”); } حرکت به اندازهيک tab \nو \t اصطلاحا کاراکترهاي کنترلي ناميده مي شوند. کاراکترهاي کنترلي در printf عينا چاپ نمي شوند بلکه اثراتي ديگر از خود بروز مي دهند.

  15. خلاصه مطالب قبل • تعريف و تاريخچه مختصري از کامپيوتر • مقدمه اي بر مفهوم برنامه نويسي و چگونگي شکل گيري آن • نوشتن چند برنامه ساده به زبان C • کاراکترهاي کنترلي : مانند \n و \t void main() { } ساده ترين برنامه #include <stdio.h> void main() { printf("Hello"); } چاپ متن روي مانيتور

  16. آشنايي با مفهوم متغيرها، اپراتورها (عملگرها) • چاپ مقدار متغيرها • دستورات ورودي • فرمت بندي خروجي • تبديل انواع • تقدم عملگرها

  17. مثال • برنامه اي بنويسيد که حاصل 2+2 را محاسبه کند. void main( ) { int x; x=2+2; }

  18. نکات-1 • int x; • هنگام اجراي اين دستور: • يک مکان 4 بايتي حافظه به برنامه اختصاص داده مي شود. • اين مکان را x مي نامد. • به برنامه اجازه مي دهد که يک عدد صحيح (integer) در x بريزد. • اصطلاحا به x ، يک متغير (Variable) از نوع صحيح (int)گفته مي شود. • به دستور بالا دستور تعريف متغير مي گوييم. • x نام متغير مي باشد. • نام متغير • ترکيبي از حروف a تا z و A تا Z ، ارقام 0 تا 9 و _ (Undeline) مي باشد. • نبايد با يک رقم شروع شود. مثال : اسامي مجاز: a، asd، ali، A09 ، _A اسامي غير مجاز: 9a، A-s x

  19. نکات-2 • X=2+2; • ابتدا 2 با 2 جمع مي شود. • به علامت + اصطلاحا يک operator (عملگر) ميگوييم. • هر يک از اعداد 2 يک operand (عملوند) خوانده ميشوند. • سپس حاصل جمع در x قرار مي گيرد. • يا اصطلاحا 4 به xتخصيص مي يابد. • به = اصطلاحا يک اپراتور تخصيص مقدار و به دستور بالا يک دستور تخصيص مقدار (Assignment statement) ميگوييم. • درسمت چپ يک دستور تخصيص مقدار فقط و فقط نام يک متغير بايد باشد. سمت راست مي تواند ترکيبي از نام متغير و مقادير باشد. x 4

  20. بعضي انواع متغيرها float x; X=2.3; short ys; ys=123; char c; c='a‘; c=97; ys=0x23;

  21. ?? int x; short x; x=2.3; x=3243243255556; float x; x=3;

  22. بعضي انواع اپراتورها • محاسباتي: • + - * / % (باقيمانده) ++ -- • تخصيص مقدار: • = • مقايسه اي: • < < == =!

  23. صورت هاي ديگر نوشتن برنامه Void main () { int x; int y; y=2; x=y+2; } Void main () { int x,y; y=2; x=y+2; } Void main () { int y=2; int x; x=y+2; } Void main () { int y=2,x; x=y+2; } Void main () { int z=2,y=2,x; x=z+y; } void main( ) { int x; x=2+2; }

  24. نمايش مقادير در مانيتور • مسئله: مي خواهيم مقدار يک متغير را روي مانيتور چاپ کنيم. #include <stdio.h> Void main () { int x=4; int y=5; x=2; y=x+2; printf(“Result=%d”,y); } %dيعني يک عدد صحيح را روي مانيتور نشان بده اين عدد صحيح y خواهد بود. %d نيز يک کاراکتر کنترلي مي باشد.

  25. نکات • چاپ بيش از يک مقدار Void main () { int x=2,y=2,z; z=x+y; printf(“%d + %d =%d”,x,y,z); }

  26. کاراکترهاي کنترلي مشابه %d

  27. چند مثال • printf(“%d”,23); • 23 چاپ مي شود. • printf(“%c”,’a’); • کاراکتر a روي مانيتور چاپ مي شود. • printf(“%d”,’a’); • کد اسکي کاراکتر a يعني 97 چاپ مي شود. • printf(“%c”,97); • کاراکتري که کد اسکي آن 97 است يعني a چاپ مي شود.

  28. دستورات ورودي • با استفاده از دستورات ورودي مي توانيم مقدار متغيرها را از طريق keyboard وارد کنيم.

  29. دستور scanf برنامه اي بنويسيد که عددي صحيح را از keyboard دريافت کند و مربع آن را چاپ کند. #include <stdio.h> void main() { int x; scanf(“%d”,&x); printf(“%d”,(x*x)); } علامت آدرس يک عدد صحيح را از کاربر دريافت و آن را در متغير x مي ريزد.

  30. نکات • به طرزي مشابه printf • براي خواندن اعداد اعشاري: %f • خواندن کارکترها:%c • خواندن اعداد مبناي 16: %x • براي استفاده از scanf هم بايد از stdio.h استفاده کرد. • بعد از وارد کردن مقدار بايد ENTER زده شود.

  31. مثال • برنامه اي بنويسيد که دو عدد را از صفحه کليد دريافت کرده و حاصل ضرب آنها را چاپ کند. #include <stdio.h> void main() { int x,y; printf(“\nEnter two numbers”); scanf(“%d%d”,&x,&y); printf(“The sum=%d”,(x*y)); } هنگام وارد کردن اعداد بايد بين آنها لااقل يک فاصله قرار داده شود يا ENTER زده شود. بعد از وارد کردن عدد آخر بايد ENTER زده شود. دستور scanf بالا را مي توان به صورت زير هم نوشت: scanf(“%d”,&x); scanf(“%d”,&y); مي توان بيش از دو مقدار هم با دستور scanf دريافت کرد.

  32. يک مشکل در گرفتن کاراکتر با scanf • برنامه اي بنويسيد که دو کاراکتر بگيرد و سپس آنها را در کنار هم چاپ کند. ظاهرا اين برنامه بايد به صورت زير باشد: #include <stdio.h> void main() { char c1,c2; scanf("%c%c",&c1,&c2); printf("%c%c",c1,c2); } اما هنگام اجراي برنامه ملاحظه مي کنيم که تنها يکي از کاراکترهاي وارد شده چاپ مي شود.

  33. بافر ورودي • علت رخ دادن اين مشکل: • داده هايي که در هنگام اجراي scanf وارد مي کنيم در داخل محلي از حافظه که بافر دستور scanf خوانده مي شود ذخيره مي شود. دستور printf بسته به آنچه برايش مشخص شده است از اين بافر عنصر بر مي دارد و روي مانيتور چاپ مي کند. • در اين مثال هنگام اجراي scanf ما ابتدا يک کاراکتر (مثلا a) ، سپس فاصله يا ENTER و بعد کاراکتربعد (مثلا b) را وارد کرده ايم. با توجه به اينکه فاصله يا ENTER در واقع خود يک کاراکتر هستند در واقع ما سه کاراکتر وارد کرده ايم که هر 3 در بافر scanf قرار مي گيرند. • هنگام اجراي printf دو تا کاراکتر اول يعني a و فاصله (يا ENTER) چاپ مي شود و کاراکتر مورد نظر (b) چاپ نمي شود. • براي رفع مشکل مي توان نوشت : scanf(“%c%c%c”,&c1,&c2,&c3); • به طور کلي استفاده از scanf براي گرفتن کاراکتر مناسب نيست. دو دستور که مخصوص گرفتن کاراکتر هستند و مشکل بالا را ندارند getche و getch مي باشند.

  34. دستور getche • تنها براي دريافت کاراکتر از keyboard به کار مي رود. • تفاوت آن با scanf اين است که در اينجا نيازي به زدن Enter بعد از وارد کردن مقدار نيست. • نياز به header file با نام conio.h دارد. #include <conio.h> #include <stdio.h> void main() { char ch; ch=getche(); printf(”\n%c",ch); }

  35. دستور getch • کاملا مشابه getche مي باشد. تنها تفاوت آن اين است که ورودي را نمي بينيم.

  36. فرمت بندي خروجي #include <stdio.h> Void main() { float num=3.4; printf(“%f”,num); } • روي مانيتور، 3.400000 چاپ خواهد شد. • %f به طور پيش فرض عدد را با 6 رقم اعشار نشان مي دهد. • با فرمت بندي خروجي مي توانيم مشخص کنيم اعداد چگونه نمايش داده شوند.

  37. فرمت بندي خروجي (ادامه) • در فرمت بندي خروجي دو چيز مشخص مي شود: • تعداد ارقام اعشار • تعداد مکان هاي در نظر گرفته شده براي نمايش عدد (طول ميدان) مثالها: float x=2.3; 2.300مقدار چاپ شده : printf(“%.3f”,x); رقم بعد از نقطه تعداد ارقام اعشاري را مشخص مي کند. float x=2.3; 2.3000000 مقدار چاپ شده : printf(“%.7f”,x);

  38. تعيين طول ميدان int x=23; printf(“%5d”,x); int x=23; printf(“%-5d”,x); float x=2.3; printf(“%-7.3f”,x); float x=2.3; printf(“%7.3f”,x);

  39. چند مثال int x=123456; printf(“%3d”,x); float x=23.476; printf(“%.2f”,x); float x=23.456; printf(“%2.2f”,x);

  40. تبديل انواع • زماني بروز مي کند که مي خواهيم عددي از يک نوع را در متغيري از نوع ديگر بريزيم. int num; num=2.56; 2

  41. قانون کلي مقدار اعشاري=متغير از نوع صحيح (int، long، short، char) بخش اعشاري حذف مي شود و بخش صحيح در متغير قرار مي گيرد.

  42. تخصيص مقدار خارج از محدوده عدد short num; num=234567; عددي در محدوده short بين 32768- تا 32767

  43. استفاده از کاراکترکنترلي نامناسب float x=23.5; printf(“%d”,x); int x=23; printf(“%f”,x); مقدار نامرتبط صفر در استفاده از کاراکترهاي کنترلي % در printf بايد دقت کرد که متناظر با نوع متغير باشد. مثال هاي بالا نمونه هايي از خطاهاي زمان اجرا مي باشد.

  44. اپراتورهاي ++ و -- X= X+1 X++ يا ++X X=X-1 X-- يا --X

  45. تفاوت ++j و j++ يا --j و j-- #include <stdio.h> void main() { int i=0; } printf("%d", i++); printf("%d",++ i); خروجي: 0 خروجي: 1

  46. += و -= X*=z; X/=Y; X%=z; X=X-23; X-=23; X=X-Y; X-=Y; X=X+23; X+=23; X=X+Y; X+=Y;

  47. تقدم (اولويت) عملگرها X=2+4*5%2; ?

  48. مثال 2+4%2=2+0=2 (2+4)%2=(6)%2=0 4+6%3/2*4=4+0/2*4 =4+0*4=4+0=4 i=0; j=3; ++i+4/2+ -- j=1+4/2+-- j =1+4/2+2=1+2+2=3+2=5 در يک عبارت ،تقدم اپراتورهايي که در يک سطح اولويت قرار دارند از چپ به راست مي باشد.

  49. خلاصه مطالب گذشته • آشنايي با دستور خروجي printf براي چاپ متن يا مقدار متغيرها • دستورات ورودي: scanf ، getche و getch • فرمت بندي خروجي: تعيين تعداد ارقام اعشار و طول ميدان • اپراتورها، انواع آنها و اولويت

  50. چند مثال برنامه نويسي مثال 1: برنامه اي بنويسيد که زاويه بر حسب درجه را دريافت کرده و معادل راديان آن را روي مانيتور نشان دهد. • قبل از نوشتن يک برنامه قدم اول پيدا کردن راه حل مسئله است. • در اين جا بايد رابطه اي بين درجه و راديان پيدا کرد. 2. سپس آنچه در برنامه از ما خواسته شده را به صورت مجموعه اي از مراحل مي نويسيم. • گرفتن درجه: d • تبديل درجه به راديان با استفاده از رابطه بالا: به دست آمدن R • چاپ R • به بيان بالا اصطلاحا يک الگوريتم گفته مي شود. الگوريتم مجموعه اي از مراحل است که دنبال کردن آنها ما را به حل مسئله مي رساند. • نوشتن الگوريتم مستقل از يک زبان برنامه نويسي خاص است. 3. در مرحله آخر با نوشتن دستورات مناسب الگوريتم را به برنامه واقعي تبديل مي کنيم.

More Related