برنامهنویسی به زبان C
اسلاید 1: 1برنامه نویسی به زبان CInstructor : Dr. Saeed Shiry
اسلاید 2: اجرای ترتیبی برنامه هادر یک برنامه اجرای دستورات به صورت ترتیبی است. یعنی دستوراتی که پشت سر هم نوشته شوند به همان ترتیب اجرا خواهند شد مگر آنکه توسط دستورات خاصی که دستورات کنترلی هستند این ترتیب به هم بخورد.
اسلاید 3: مثال 1#include <stdio.h>int main(){printf(“Braces come in pairs!”);printf(“Comments come in pairs!”);printf(“All statements end with a semicolon!”);printf(“Spaces are optional!”);printf(“Must have a main function!”);printf(“C is done mostly in lowercase.”);return(0);}این برنامه فاقد متغیر است! زیرا نیازی به ذخیره کردن داده ها بصورت صریح نداشته استاین برنامه دارای7 دستور است که پشت سر هم اجرا میشوند. 6 دستور اول باعث نمایش 6 جمله در صفحه نمایش میشود.دستور آخر باعث خاتمه تابع main و بازگشت به سیستم عامل و یا کامپایلر میشود.
اسلاید 4: دستورات خروجیدستورات خروجی:دستورات خروجی دستوراتی هستند که به کمک آنها میتوان اطلاعات مختلفی را به کاربر نشان داد و یا به ابزارهای خروجی مختلف مثل چاپگر فرستاد. در زبان C مثل هر زبان برنامه نویسی دیگر بعلت اهمیت تبادل اطلاعات با کاربر دستورات خروجی متعددی وجود دارد که ساده ترین آن بصورت زیر است.printf(“salam”);این دستور هر آنچه که داخل دو علامت گیومه “” نوشته شده باشد را عینا در خروجی صفحه نمایش چاپ میکند. در نتیجه اگر بخواهیم پیغام دیگری مثلا حال شما چطور است را نمایش دهیم کافی است عبارت داخل گیومه را عوض کنیم:printf(“Hale Shoma Che Tor Ast?”);
اسلاید 5: دستورات خروجیبه مثالهای زیر توجه کنید: printf(“ **********”); این دستور 10 عدد علامت* را پشت سر هم چاپ میکند.printf(“ 1 2 3 4 5 6 7 8 9”); این دستور اعداد 1 تا 9 را بدنبال هم در صفحه نمایش چاپ میکند.
اسلاید 6: کاراکتر nاگر خروجی مثال 1 را در صفحه نمایش ببینیم چندان برایمان خوشایند نخواهد بود زیرا با وضعیتی مثل شکل زیر مواجه میشویم که جملات پشت سر هم و بصورت نا خوانا قرار میگیرند. اگر بخواهیم هریک از جملات در یک سطر جداگانه نمایش داده شوند باید از کامپیوتر بخواهیم که اینکار را برایمان انجام دهد.Braces come in pairs!Comments come in pairs!All statementsend with a semicolon!Spaces are optional!Must havea main function!C is done mostly in lowercase.
اسلاید 7: کاراکتر nبرای رفتن به سر یک سطر جدید در صفحه نمایش از کاراکتر مخصوصی به نام new line استفاده میشود که برای معرفی آن در زبان C از ترکیب n استفاده میشود.لذا اگر در داخل گیومه دستور printf از این کاراکتر مخصوص استفاده شود در خروجی به ابتدای یک سطر خالی رفته و بقیه متن از ایتدای این سطر چاپ میشود.به مثال بعد توجه کنید.
اسلاید 8: مثال 2#include <stdio.h>int main(){printf(“nBraces come in pairs!”);printf(“nComments come in pairs!”);printf(“nAll statements end with a semicolon!”);printf(“nnSpaces are optional!”);printf(“nMust have a main function!”);printf(“nC is done mostly in lowercase.”);return(0);}Braces come in pairs!Comments come in pairs!All statements end with a semicolon!Spaces are optional!Must have a main function!C is done mostly in lowercase.در خروجی هر عبارت در یک سطر جدید نوشته میشود.در این قسمت علاوه بر ایجادسطر جدید یک خط فاصله هم افتاده است. زیرا ازدو کاراکتر n استفاده شوده بود.
اسلاید 9: مثال 3 برنامه ای بنویسید که اسم کاربر را از او پرسیده و سپس به او خوشامد بگوید.داده مورد نیاز: اسم کاربر. چون از نوع حرفی است لذا باید از متغیر char استفاده شود و چون یک اسم از تعداد زیادی حرف تشکیل میشود باید از یک آرایه استفاده نمود. از آنجائیکه اندازه حروف اسم فرد را نمیدانیم یک مقدار مناسب برای آن انتخاب میکنیم.char name[20];با این دستور name متغیری خواهد شد که میتواند یک اسم با حداکثر 19 کاراکتر را ذخیره نماید.چرا 19 کاراکتر؟
اسلاید 10: مثال 3الگوریتم :ابتدا باید از کاربر نام او سوال شود. چون کامپیوتر قادر به صحبت نیست لذا برای اینکار کافی است پیغام مناسبی را از طریق صفحه نمایش به او نشان دهیم. سپس از طریق یک دستور ورودی مناسب اسمی را که کاربر تایپ میکند از او دریافت کنیم.در مرحله آخر باید پیغام خوشامد مناسبی را به او نشان دهیم.
اسلاید 11: دستورات ورودیبرای دریافت داده هائی که از طریق صفحه کلید تایپ میشوند توابع مختلفی وجود دارد که یکی از مهمترین آنها تابع scanf است.این تابع بصورت زیر استفاده میشود:خواندن یک عدد صحیح و ذخیره آن در متغیر xscanf(”%i”,&x);خواندن یک حرف و ذخیره آن در متغیر mscanf(”%c”,&m);خواندن یک عدد اعشاری و ذخیره آن در متغیر zscanf(”%f”,&z);
اسلاید 12: دستورات ورودیبا مشاهده مثالها میتوان فرمت تابع scanf را بصورت زیر بیان کرد:scanf(”%i”,&x);% جزئی از فرمت دستور استاین حرف نوع داده ای را که قصد خواند آن را داریم مشخص میکند.i برای صحیح و f برای اعشارینام متغیری است که داده خوانده شده بعد از تبدیل شدن به عدد مناسب در آن دخیره میشود.& جزئی از فرمت دستور است و باید قبل از نام متغیر نوشته شودتوجه: کاربر داده ها را بصورت کاراکترهای پشت سر هم تایپ میکند. اما تابع scanf آنها را پس از دریافت باتوجه به نوع داده به عدد متناظر تبدیل و در حافظه اختصاص داده شده برای متغیر ذخیره میکند.
اسلاید 13: مثال 3#include <stdio.h>int main(){char me[20];printf(“What is your name?”);scanf(“%s”,&me);printf(“Darn glad to meet you, %s n”,me);return(0);}تعریف متغیری که بتواند نام را ذخیره نمایدپرسیدن نام از کاربردریافت نام، تبدیل آن به عدد و ذخیره در متغیر meچاپ جمله خوش آمد گوئی و همچنین اضافه کردن نام خوانده شده به آن
اسلاید 14: نکته جدید در مورد printfبرای اینکه مقدار یک متغیر را توسط این تابع چاپ کنیم نوع داده متغیر مورد نظر را نوشته و به همراه کاراکتر % درداخل این تابع مینویسیم.در حالیکه کاراکتر های معمولی که در داخل “ “ تابع printf نوشته میشوند عینا در خروجی چاپ میشوند، کاراکتری که بعد از % نوشته شود باعث میشود تا متغیری از بین متغیرهای نوشته شده بعد از “” در خروجی چاپ شوند.printf(“Darn glad to meet you, %s n”,me);این حروف عینا در خروجی چاپ میشوندترکیب %s باعث میشود تا یک string ویا بعبارت دیگر مجموعه ای از کاراکترها که در داخل متغیر me ذخیره شده اند در این محل چاپ شوندباعث رفتن به سر سطر میشودنام متغیری که باید چاپ شود
اسلاید 15: مثال 4#include <stdio.h>#include <conio.h>int main(){float r,s,PI=3.14;printf(“n Enter the Radious:”);scanf(“%f”,&r);s=r*r*PI;printf(“n Area = %f”,s);getch();return(0);}برنامه ای که شعاع دایره ای را خوانده و مساحت آنرا چاپ نماید.تعریف داده های مورد نیازیک برنامه خوب باید در مواقع لزوم کاربر را راهنمائی کند که چه کاری را باید انجام دهد.دریافت مقدار شعاع از کاربر و ذخیره آن در حافظه مربوط به rمحاسبه مساحتچاپ مساحت به همراه پیغامی که کاربر را متوجه معنای خروجی نماید.دستور اضافی برای اینکه شما خروجی را ببینید!
اسلاید 16: مثال 5#include <stdio.h>#include <conio.h>int main(){float r,s,m,PI=3.14;printf(“n Enter the Radious:”);scanf(“%f”,&r);s=r*r*PI;m=2*r*PI;printf(“n Masahat = %f , Mohit= %f”,s,m);getch();return(0);}برنامه ای که شعاع دایره ای را خوانده، محیط و مساحت آنرا چاپ نماید.این مثال به داده دیگری مثل m برای ذخیره محیط نیاز داردیک برنامه خوب باید در مواقع لزوم کاربر را راهنمائی کند که چه کاری را باید انجام دهد.دریافت مقدار شعاع از کاربر و ذخیره آن در حافظه مربوط به rمحاسبه مساحتدر خروجی کلمه مساحت در یک سطر جدید چاپ شده و بدنبال آن مقدار متغیر s بصورت یک عدد اعشاری چاپ میشود. سپس در همان سطر , و کلمه محیط چاپ شده و در مقابل آن مقدار محیط قرار میگیرد.محاسبه محیطEnter the Radious:2Masahat = 28.6 , Mohit = 18.84
اسلاید 17: ترتیب نمایش چندین متغیراگر درتابع printf چند متغیر باشد اولین کاراکتر تبدیل برای اولین متغیر و دومین کاراکتر تبدیل برای بعدی و الی آخر استفاده خواهد شد.
اسلاید 18: مثال 6خروجی برنامه زیر چیست؟#include <stdio.h>int main(){char name[20];char color[20];printf(“What is your name?”);scanf(“%s”,name);printf(“What is your favorite color?”);scanf(“%s”,color);printf(“%s’s favorite color is %sn”,name,color);return(0);}
اسلاید 19: اضافه کردن توضیحات در داخل برنامهیک برنامه نویس خوب باید سعی کند در هنگام نوشتن یک برنامه آنرا طوری بنویسد که بعدها برای خود وی و یا دیگران قابل فهم باشد.یک راه برای انجام اینکار اضافه کردن توضیحاتی در مورد کار توابع و دستورات، و همچنین دلیل استفاده از متغیر ها و یا هر مطلب دیگری است که خوانائی برنامه را برای دیگران بهتر کند.برای اینکه این توضیحات با برنامه اصلی تداخل نکند در زبان c آنها را در داخل دو حرف ترکیبی زیر قرار میدهند. کامپایلر بسادگی توضیحات برنامه را فراموش میکند!توضیحات میتواند بیش از یک خط نیز باشد.در c++ توضیحاتی که محدود به یک خط باشند را بصورت ساده تر زیر نیز مینویسند./* comments comes here */// comments comes here
اسلاید 20: مثال 7/*MADLIB1.C Source CodeWritten by (your name here)*/#include <stdio.h>int main(){char adjective[20];char food[20];char chore[20];char furniture[20];/* Get the words to use in the madlib */printf(“Enter an adjective:”); /* prompt */scanf(“%s”,&adjective); /* input */printf(“Enter a food:”);scanf(“%s”,&food);printf(“Enter a household chore (past tense):”);scanf(“%s”,&chore);printf(“Enter an item of furniture:”);scanf(“%s”,&furniture);/* Display the output */printf(“nnDon’t touch that %s %s!n”,adjective,food);printf(“I just %s the %s!n”,chore,furniture);return(0);}
اسلاید 21: حذف موقتی خطوط برنامهبعضی اوقات بخصوص در هنگام پیدا کردن غلط های یک برنامه میتوان با کامنت کردن خطوطی از برنامه که برایمان لازم نیستند، بدون خذف آنها از برنامه کاری کنیم که کامپایلر آنها را ترجمه نکند!/* Display the output *//*printf(“nnDon’t touch that %s %s!n”,adjective,food);printf(“I just %s the %s!n”,chore,furniture);*/
اسلاید 22: اپراتورهای محاسباتیبه کمک اپراتورهای محاسباتی میتوان انواع محاسبات مختلف را بر روی داده های ذخیره شده در حافظه انجام داد.
اسلاید 23: اپراتور جایگزینیAssignment Operatorx = 142;x = y = 123;این عمل غلط است:1 + x = y;چرا؟
اسلاید 24: اپراتورهای اعمال محاسباتی اصلی Mathematical/Arithmetic OperatorsVariable1 = Value1 + Value2;Variable1 = Value1 + Value2;Variable1 = Value1 * Value2;Variable1 = Value1 / Value2;Variable1 = Value1 % Value2;حتما باید متغیر باشدمیتواند متغیر یا مقدار ثابت باشد
اسلاید 25: مثال 8//Pie.c—Number of Pieces of Pie for Me// Pie.c - Using the modulus operators//------------------------------------------------void main(){ int PiecesForMe = 0; int PiecesOfPie = 0; PiecesOfPie = 3 * 6; PiecesForMe = PiecesOfPie % 13;printf(“Pieces Of Pie = %d”, PiecesOfPie);Printf(‘Pieces For Me = %d”, PiecesForMe); }
اسلاید 26: اپراتورهای ترکیبی
اسلاید 27: اپراتورهای یگانی افزایش و کاهشاین اپراتورهافقط به بک متغیر اعمال میشوند و موجب افزایش و یا کاهش مقدار متغیر به اندازه یک واحد میشوند.X++ X=X+1X-- X=X-1توجه:استفاده از این اپراتورها قبل از نام متغیر و بعد از آن اگرچه هر دو موجب اثر اپراتور بر متغیر میگردند، اما ممکن است بطور مختلفی در برنامه تاثیر بگذارند:بطور کلی اگر اپراتورهای فوق در یک عبارت قبل از نام متغیر نوشته شوند، ابتدا اپراتور اثر کرده و سپس متغیر در عبارت استفاده میشود. اما اگر اپراتور بعد ازنام متغیر نوشته شود ابتدا متغیر در عبارت بکار برده شده و سپس اپراتور اثر میکند.مثال صفحه بعد این اثر را نشان میدهد.
اسلاید 28: اپراتورهای ترکیبی/*Preepost.c—Using the Increment and Decrement Unary Operators Prepost.c - Using pre- versus post-increment operators*//*----------------------------------------------------*/ void Main() { int Val1 = 0; int Val2 = 0; printf(“Val1 = %d Val2 = %d”, Val1, Val2); printf(“Val1 (Pre) = %d Val2 = (Post) %d”, ++Val1, Val2++); printf(“Val1 (Pre) = %d Val2 = (Post) %d”, ++Val1, Val2++); printf(“Val1 (Pre) = %d Val2 = (Post) %d”, ++Val1, Val2++);return; }بهتر است برنامه را طوری بنویسیم که ابهامی در آن وجود نداشته باشد. لذا استفاده شک دار از این اپراتورها توصیه نمیشود.
اسلاید 29: 29اپراتورهای رابطه ایحاصل این اپراتورهای یک مقدار False یا True خواهد بود.
اسلاید 30: 30دستور ifif( expression)statement;این رابطه شرطی را بیان میکند که میتواند درست یا غلط باشد.در صورت درست بودن رابطه دستورات اجرا خواهند شد
اسلاید 31: 31دستور if// iftest.c—Using the if Command// iftest.c- The if statement //----------------------------------------------------int main() { int Val1 = 1; int Val2 = 0;printf(“Getting ready to do the if...”); if (Val1 == Val2) { printf(“If condition was true”); } printf(“Done with the if statement”); }
اسلاید 32: 32احتیاطیک اشتباه متداول در استفاده از دستور if این است که بعد از پرانتز ; نوشته شود.if( val != val );{// Statements to do when the if evaluates to true (which will// never happen)}این دستورات بدون توجه به شرط اجرا خواهند شد
اسلاید 33: 33اپراتورهای منطقیif( x < 5 && y < 10 && z > 10){printf(“x < 5 and y < 10 and z > 10”);}if (x == ‘m’ || x == ‘f’ ) // Male or female? {printf(“ male or female.”);}اپراتور ANDاپراتور OR
اسلاید 34: 34اشتباه در برنامه نویسیعبارت”اگر یا مساوی 3 باشد ” ممکن است بصورت نادرست زیر نوشته شود:xyif( x || y ==3)if( x==3 || y ==3)12< y <24if(12< y <24)if(12< y && y<24)همچنین رابطه ریاضی روبروممکن است به غلط بصورت زیر نوشته شود:غلطدرستغلطدرست
اسلاید 35: 35اولویت اپراتورهادر محاسبات زیر کدام عمل زودتر انجام میشود:Answer = 4 * 5 + 6 / 2 – 1;ترتیب اجرای اپراتورها بر اساس اولویت آنان تعیین میشود.بالاترین اولویت با () است یعنی ابتدا عملیات داخل پرانتز انجام میشوند. برای سایر اولویت ها طبق جدول زیر اولویت تعیین میشود.برای اپراتورهای هم رده اولویت از چپ به راست است.
اسلاید 36: 36اولویت اپراتورها
اسلاید 37: 37تمرینیکی از برنامه های زیر را بنویسید:برنامه ای که با گرفتن یک عدد بعنوان سال شمسی کبیسه بودن آن سال را تشخیص دهد.برنامه ای بنویسید که با گرفتن یک عدد آنرا دو برابر کرده و ارقام نتیجه بصورت معکوس در خروجی چاپ نماید:مثال: ورودی = 43خروجی = 68
اسلاید 38: 38مثالبرنامه حدس عددبرنامه ای بنویسید که عددی بین 0 تا 10000 را بطور تصادفی انتخاب نماید. سپس شما باید این عدد را حدس بزنید. شما عدد حدس زده شده را واردمیکنید و کامپیوتر میگوید که آیا عدد شما بزگتر یا کوچکتر از عدد کامپیوتر است. بدیهی است درصورت مساوی بودن عدد حدسی شما با عدد کامپیوتر شما برنده خواهید شد.کامپیوتر باید تعداد دفعاتی را که شما عدد را حدس زده اید نشان دهد.
نقد و بررسی ها
هیچ نظری برای این پاورپوینت نوشته نشده است.