Download presentation
Presentation is loading. Please wait.
1
توابع ورودي-خروجي
2
توابع ورودي- خروجي در C اغلب برنامه ها بايد اطلاعاتي را از كاربر بگيرند و روي آنها پردازش دهند و نتيجه پردازش را به كاربر اعلام نمايند در زبان برنامه نويسي C توابع متنوعي براي عمليات ورودي-خروجي تعريف شدهاند كه هر كدام ويژگيهاي خاص خود را دارند عمومي ترين توابع ورودي-خروجي در زبان C تابع scanf براي ورود اطلاعات و printf براي نمايش اطلاعات ميباشند
3
توابع ورودي- خروجي در C (ادامه)
getch, getchar, putch, putchar, gets, puts در زبان C++ نيز براي سهولت عمليات ورودي خروجي توابعي درنظر گرفته شده است: cin براي ورود اطلاعات و cout براي نمايش اطلاعات
4
تابع printf اين تابع براي نمايش اطلاعات به كاربر بر روي خروجي استاندارد (مانيتور) بكار ميرود. قالب استفاده از اين دستور به شكل زير ميباشد printf(“رشته كنترلي”[, متغيرها]); اين تابع در كتابخانه stdio.h تعريف شده است رشته كنترلي كه داخل كتيشن (“”) قرارميگيرد از متنهاي ثابت و كاراكترهاي كنترلي تشكيل ميشود در بخش متغيرها، متناظر با هر كاراكتر كنترلي در رشته كنترلي بايد يك متغير وجود داشته باشد كاراكتر كنترلي بايد متناسب با نوع متغير باشد
5
كاراكترهاي كنترلي كاراكترهاي كنترلي با % آغاز ميشوند.
با استفاده از كاراكترهاي كنترلي ميتوان خروجي را به شكل دلخواه نشان داد فهرست كاراكترهاي كنترلي به شرح ذيل ميباشند:
6
Integer Floating point Character String pointer Signed decimal integer
Format of output Expected Input Char Signed decimal integer Integer %d %i Unsigned octal integer %o Unsigned decimal integer %u Unsigned hexadecimal int (with a, b, c, d, e, f) %x Unsigned hexadecimal int (with A, B, C, D, E, F) %X Signed value of the form [-]dddd.dddd. Floating point %f Signed value of the form [-]d.dddd or e[+/-]ddd %e Signed value in either e or f form, based on given value and precision. Trailing zeros and the decimal point are printed if necessary. %g Same as e; with E for exponent. %E Same as g; with E for exponent if e format used %G Single character Character %c Prints characters until a null-terminator is pressed or precision is reached String pointer %s
7
مثال Ex 1. نمايش يك عدد صحيح در خروجي
int n=2; printf("n is an integer = %d" , n ); Ex 2.نمايش عمليات جمع دو عدد صحيح int a(3),b(4); printf(" %d+%d=%d", a , b , a+b);
8
مثال 3 خروجي: int main() { int event; char heat; float time;
heat = ‘C’; time = 27.25; printf( “The winning time in heat %c" , heat); printf( “ of event %d was %f" , event , time); return 0; } خروجي: The winning time in heat C of event 5 was
9
مثال 4 خروجي: 31 148.500000 computer int main() { int x=31;
float y=148.5; char z[10] = {"computer"}; printf ( "%d %f %s" , x , y , z ); return 0; } خروجي: computer
10
مثال 5 خروجي: int main() { float x=50.0, y=0.25;
printf ( "%f %f %f %f\n" , x , y , x*y , x/y ); printf ( "%e %e %e %e" , x , y , x*y , x/y ); return 0; } خروجي: e e e e+02
11
كاراكترهاي تعيين ميدان
در برنامه قبل ديديم كه متغير اعشاري y با 6 رقم مميز چاپ شده است، درحالي كه تنها دو رقم از اين ارقام با ارزش هستند. از اين كاراكترها براي مرتب شدن خروجي و زير هم بودن اطلاعات استفاده ميشود. چاپ يك عدد اعشاري در طول m كه n رقم اعشار دارد %m.nf چاپ يك عدد صحيح در طول m %md ***.** %6.2f **.*** %.3f ****** %6d
12
كاراكترهاي تعيين ميدان مثال
int x = 123; float m= ; نحوه نمايش متغير رشته كنترلي 123 x %4d 123 %5d 123 %2d m %10.4f %.4f %.2f
13
مثال 6 خروجي: int main() { float x=123.456;
printf ( "%7.0f\n%7.3f\n%7.1f\n\n" , x , x , x , x ); printf ( "%12e\n%12.5e\n%12.3e" , x , x , x , x ); return 0; } 123 123.5 e+02 e+02 1.235e+02 خروجي:
14
در صورتي كه بخواهيم خانه هاي خالي با صفر جايگزين شود، بعد از علامت % از كاراكتر 0 (صفر) استفاده ميكنيم int x = 123; float m= ; نحوه نمايش متغير رشته كنترلي 123 x %4d 0123 %04d m %10.3f %010.3f
15
رشته هاي گريز در رشته كنترلي كاراكترهايي ميتوان استفاده كرد كه موقعيت مكان نما را براساس نياز ما تغيير ميدهد. رشته هاي گريز با \ آغاز ميشوند و نمونه اي از آنها عبارت است از: عملكرد رشته گريز سطر جديد \n جهش هشت كاراكتري \t بازگشت به عقب \b چاپ علامت نقل قول تكي \’ چاپ علامت نقل قول دوتايي \” نمايش علامت backslash \\
16
مثال 7- مثال برنامه اي بنويسيد كه خروجي زير را بصورت مرتب نمايش دهد.
num1 num2 sumation 1 2 3
17
مثال 7 int main() { printf ( "num1\t num2\t sumation\n" );
printf ( "%4d\t %4d\t %8d\n" , 1 , 2 , 3 ); printf ( "%4d\t %4d\t %8d\n" , 100 , 2 , 102 ); printf ( "%4d\t %4d\t %8d\n" , 1010 , 256 , 1266 ); printf ( "%4d\t %4d\t %8d\n" , 5 , 56 , 61 ); return 0; }
18
تمرين 1- برنامه اي بنويسيد كه خروجي به شكل زير توليد نمايد
************* * Hello World * 2- برنامه اي بنويسيد كه نام شما را در وسط صفحه نمايش چاپ كند (براي اينكار از تابع gotoxy استفاده كنيد. 3- برنامه اي بنويسيد كه عدد PI را با دقتهاي 1،2،5 و 10 رقم اعشار نمايش دهد
19
تابع scanf مهمترين تابع ورودي در C ميباشد كه براي گرفتن اطلاعات از IO استاندارد يعني كيبرد بكار برده ميشود. قالب استفاده از اين دستور به شكل زير ميباشد scanf(<رشته كنترلي>,<آدرس متغيرها>); اين تابع در كتابخانه stdio.h تعريف شده است رشته كنترلي داخل كتيشن (“”) نوشته شده و از كاراكترهاي كنترلي تشكيل ميشود. در بخش متغيرها، متناظر با هر كاراكتر كنترلي در رشته كنترلي بايد آدرس يك متغير وجود داشته باشد. كاراكتر كنترلي استفاده شده در اين تابع همانند كاراكترهاي كنترلي در تابع printf هستند
20
اپراتورهاي & و * همانطور كه اشاره شد متغيرها آدرس محلهايي در حافظه هستند با استفاده از نام متغير به تنهايي ما ميتوانيم به محتويات آن دسترسي پيدا كنيم در برخي موارد لازم است ما آدرس محل حافظه را داشته باشيم در اينصورت از اپراتور & استفاده ميكنيم. اپراتور * براي دسترسي به محتويات يك خانه حافظه استفاده ميشود. يعني اين اپراتور آدرس يك خانه حافظه را گرفته و محتويات آنرا برميگرداند. (در ادامه درس، بخش اشاره گرها مفصل در اين زمينه صحبت خواهد شد)
21
مثال: &(نام متغير) آدرس حافظه (آدرس متغير)
*(آدرس حافظه) مقدار حافظه فرض كنيد متغير ch از نوع كاراكتر تعريف شده باشد و سيستم عامل خانه 110 را به آن اختصاص داده باشد و ما مقدار 44 را در آن ذخيره كرده باشيم. در اينصورت: &(ch) 110 ch 44 *(110) 44
22
مثال2: برنامه نمايش يك متغير به همراه آدرس متغير
int main() { int num ; num = 2; printf ( "Value:%d, Address:%d" , num , &num ); return 0; } Value:2, Address:3536 خروجي:
23
مثال2: برنامه تبديل سن شخص به روزهاي زندگي
int main() { float years , days ; printf ( "please type your age in years: " ); scanf ( "%f" , &years ); days = years * 365; printf ( "\nyou are %.1f days old.\n" , days ); return 0; } please type your age in years: 5 you are days old. خروجي:
24
تمرين 1- برنامه اي بنويسيد كه 3 عدد صحيح را از كاربر گرفته و حاصل جمع آنها را نمايش دهد 2- برنامه اي بنويسيد كه 3 عدد اعشاري را از كاربر گرفته و حاصل جمع آنها را نمايش دهد 3- برنامه اي بنويسيد كه x و y را از كاربر گرفته xy را نمايش دهد. براي محاسبه توان از تابع pow استفاده نماييد 4- برنامه اي بنويسيد كه يك عدد صحيح را از كاربر گرفته و در خروجي زوج يا فرد بودن آنرا نمايش دهد اگر زوج بود عدد 0 و اگر فرد بود عدد 1 نمايش داده شود. 5- برنامه اي بنويسيد كه x , y از كاربر گرفته و باقيمانده تقسيم x بر y را نمايش دهد 6- برنامه اي بنويسيد كه شعاع يك كره را گرفته و مساحت جانبي و حجم آنرا در خروجي نمايش دهد 7- برنامه اي بنويسيد كه طول، عرض و ارتفاع يك مكعب مستطيل را گرفته و مساحت جانبي و حجم آنرا در خروجي نمايش دهد 8- برنامه اي بنويسيد كه يك مقدار درخواستي پول را از كاربر گرفته و تعداد اسكناسهاي 1000 توماني، 100 توماني، 50 توماني و 1 توماني مورد نياز را محاسبه نمايد.
25
مثال 3: گرفتن چند متغير از كاربر و نمايش
int main() { int event; char heat; float time; printf( "Type numbers for event heat and time: "); scanf( "%d %c %f", &event , &heat , &time); printf( "The winning time in heat %c" , heat); printf( " of event %d was %f" , event , time); return 0; } خروجي: Type numbers for event heat and time: 4 B 36.34 The winning time in heat B of event 4 was
26
تمرين كلاسي: برنامه اي بنويسيد كه ضرايب معادله درجه 2 را گرفته و ريشه هاي معادله را نمايش دهد.
int main() { float a , b , c; printf("Enter a b c: "); scanf( "%f %f %f", &a , &b , &c); float delta; delta= b * b – 4 * a * c ; float x1 , x2 ; x1 = (-b + sqrt( delta )) / (2 * a); x2 = (-b - sqrt( delta )) / (2 * a); printf( "x1=%f , x2=%f " , x1 , x2); return 0; } Enter a b c: x1= , x2= خروجي:
27
توابع getch()، getche() و getchar()
تابع getchar همانند تابع getche عمل نموده و براي وارد كردن كاراكتر لازم است بعد از كاراكتر مورد نظر كليد Enter هم فشرده شود
28
مثال 1: برنامه اي بنويسيد كه يك كاراكتر از كاربر بگيرد و در خروجي با يك پيام نمايش دهد
int main() { char ch; printf( "Enter a character: "); ch = getch(); printf( “\nInput character is: %c" , ch); return 0; } Enter a character: Input character is: a
29
كد اسكي ascii هر كاراكتر در سيستم ANSI در يك بايت ذخيره ميشود.
در زبان C نوع داده اي char براي ذخيره يك كاراكتر استفاده ميشود. هر كاراكتر با يك كد ارائه ميگردد كه به آن كد اسكي ميگويند. براي نمونه كد مربوط به كاراكتر A برابر 65 ميباشد
30
متغيرهاي char در زبان C مقداردهي به متغير char به شكل زير را در نظر بگيريد: char ch=‘A’ دستور فوق باعث ميشود كد اسكي كاراكتر A در متغير ch قرارگيرد ميتوان بجاي دستور فوق از دستور زير استفاده نمود char ch=65 هر دو دستور فوق يك عمل را انجام ميدهند. كامپايلر C انواع دادهاي از نوع كاراكتر را به كد اسكي آنها تبديل ميكند
31
مثال 2: كد اسكي int main() { char ch; ch= ’A’ ;
printf( "character is: %c\n" , ch); printf( "code is: %d\n" , ch); return 0; } int main() { char ch; ch= 65 ; printf( "character is: %c\n" , ch); printf( "code is: %d\n" , ch); return 0; }
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.