31
1 ي ج رو خ- ع ورودي ب وا ت

توابع ورودي-خروجي

  • Upload
    reid

  • View
    59

  • Download
    0

Embed Size (px)

DESCRIPTION

توابع ورودي-خروجي. توابع ورودي- خروجي در C. اغلب برنامه ها بايد اطلاعاتي را از كاربر بگيرند و روي آنها پردازش دهند و نتيجه پردازش را به كاربر اعلام نمايند در زبان برنامه نويسي C توابع متنوعي براي عمليات ورودي-خروجي تعريف شده‌اند كه هر كدام ويژگيهاي خاص خود را دارند - PowerPoint PPT Presentation

Citation preview

Page 1: توابع ورودي-خروجي

1

توابع ورودي-خروجي

Page 2: توابع ورودي-خروجي

2

Cتوابع ورودي- خروجي در

اغلب برنامه ها بايد اطالعاتي را از كاربر بگيرند وروي آنها پردازش دهند و نتيجه پردازش را به كاربر

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

ورودي-خروجي تعريف شده اند كه هر كدام ويژگيهاي خاص خود را دارند

عمومي ترين توابع ورودي-خروجي در زبانC تابع scanf براي ورود اطالعات و printf براي نمايش

اطالعات ميباشند

Page 3: توابع ورودي-خروجي

3

Cتوابع ورودي- خروجي در )ادامه(

توابع ورودي-خروجي ديگري كه درC وجود دارند و از آنها ميتوان استفاده كرد عبارتند از:

getch, getchar, putch, putchar, gets, puts در زبانC++ نيز براي سهولت عمليات ورودي

خروجي توابعي درنظر گرفته شده است:cin براي ورود اطالعات و cout براي نمايش

اطالعات

Page 4: توابع ورودي-خروجي

4

printfتابع اين تابع براي نمايش اطالعات به كاربر بر روي خروجي

استاندارد )مانيتور( بكار ميرود.قالب استفاده از اين دستور به شكل زير ميباشد

printf)“ [متغيرها ],”رشته كنترلي (; اين تابع در كتابخانهstdio.hتعريف شده است قرارميگيرد از (“”)رشته كنترلي كه داخل كتيشن

متنهاي ثابت و كاراكترهاي كنترلي تشكيل ميشود در بخش متغيرها، متناظر با هر كاراكتر كنترلي در رشته

كنترلي بايد يك متغير وجود داشته باشدكاراكتر كنترلي بايد متناسب با نوع متغير باشد

Page 5: توابع ورودي-خروجي

5

كاراكترهاي كنترلي آغاز ميشوند.%كاراكترهاي كنترلي با با استفاده از كاراكترهاي كنترلي ميتوان خروجي را به

شكل دلخواه نشان داد:فهرست كاراكترهاي كنترلي به شرح ذيل ميباشند

Page 6: توابع ورودي-خروجي

6

CharExpected InputFormat of output

%dInteger Signed decimal integer

%iInteger Signed decimal integer

%oInteger Unsigned octal integer

%uInteger Unsigned decimal integer

%xInteger Unsigned hexadecimal int (with a, b, c, d, e, f)

%XInteger Unsigned hexadecimal int (with A, B, C, D, E, F)

%fFloating pointSigned value of the form [-]dddd.dddd.

%eFloating pointSigned value of the form [-]d.dddd or e[+/-]ddd

%g

Floating point

Signed value in either e or f form, based on given value and precision. Trailing zeros and the decimal point

are printed if necessary.

%EFloating pointSame as e; with E for exponent.

%GFloating pointSame as g; with E for exponent if e format used

%cCharacter Single character

%s

String pointer

Prints characters until a null-terminator is pressed or precision is reached

Page 7: توابع ورودي-خروجي

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(;

Page 8: توابع ورودي-خروجي

8

3مثال int main)({

int event;char heat;float time;

event = 5;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 27.250000

Page 9: توابع ورودي-خروجي

9

4مثال int main)({

int x=31;float y=148.5;char z]10[ = {"computer"};printf ) "%d %f %s" , x , y , z (;return 0;

}

خروجي:31 148.500000 computer

Page 10: توابع ورودي-خروجي

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;

}

خروجي:50.000000 0.250000 12.500000 200.000005.000000e+01 2.500000e-01 1.250000e+01 2.000000e+02

Page 11: توابع ورودي-خروجي

11

كاراكترهاي تعيين ميدان در برنامه قبل ديديم كه متغير اعشاريy رقم مميز چاپ شده 6 با

است، درحالي كه تنها دو رقم از اين ارقام با ارزش هستند. از اين كاراكترها براي مرتب شدن خروجي و زير هم بودن اطالعات

استفاده ميشود.

%m.nf چاپ يك عدد اعشاري در طولm كه n رقم اعشار دارد

%md چاپ يك عدد صحيح در طولm

**.***%6.2f

***.**.%3f

******%6d

Page 12: توابع ورودي-خروجي

12

كاراكترهاي تعيين ميدانمثال

int x = 123;float m= 4872.458;

نحوه نمايشمتغيررشته كنترلي

%4dx123

%5dx123

%2dx123

%10.4fm4872.4580

%.4fm4872.4580

%.2fm4872.45

Page 13: توابع ورودي-خروجي

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;

}

123123.456 123.51.234560e+02 1.23456e+02 1.235e+02

خروجي:

Page 14: توابع ورودي-خروجي

14

در صورتي كه بخواهيم خانه هاي خالي با صفر 0 از كاراكتر %جايگزين شود، بعد از عالمت

استفاده ميكنيم)صفر(int x = 123;float m= 4872.458;

نحوه نمايشمتغيررشته كنترلي

%4dx123

%04dx0123

%10.3fm4872.458

%010.3fm004872.458

Page 15: توابع ورودي-خروجي

15

رشته هاي گريز در رشته كنترلي كاراكترهايي ميتوان استفاده كرد كه موقعيت

مكان نما را براساس نياز ما تغيير ميدهد. آغاز ميشوند و نمونه اي از آنها عبارت \رشته هاي گريز با

عملكردرشته گريزاست از:

\nسطر جديد

\tجهش هشت كاراكتري

\bبازگشت به عقب

چاپ عالمت نقل قول تكي’\

چاپ عالمت نقل قول دوتايي”\

backslashنمايش عالمت \\

Page 16: توابع ورودي-خروجي

16

- مثال 7مثال

برنامه اي بنويسيد كه خروجي زير را بصورتمرتب نمايش دهد.

num1 num2 sumation1 2 3100 2 1021010 256 12665 56 61

Page 17: توابع ورودي-خروجي

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;

}

Page 18: توابع ورودي-خروجي

18

تمرين1 برنامه اي بنويسيد كه خروجي به شكل زير توليد -

نمايد************** Hello World **************

2 برنامه اي بنويسيد كه نام شما را در وسط - gotoxyصفحه نمايش چاپ كند )براي اينكار از تابع

استفاده كنيد.3 برنامه اي بنويسيد كه عدد -PI 1،2،5 را با دقتهاي

رقم اعشار نمايش دهد 10و

Page 19: توابع ورودي-خروجي

19

scanfتابع مهمترين تابع ورودي درC ميباشد كه براي گرفتن

استاندارد يعني كي برد بكار برده ميشود.IOاطالعات از قالب استفاده از اين دستور به شكل زير ميباشد

scanf)< آدرس متغيرها>,>رشته كنترلي <(; اين تابع در كتابخانهstdio.hتعريف شده است نوشته شده و از (“”)رشته كنترلي داخل كتيشن

كاراكترهاي كنترلي تشكيل ميشود. در بخش متغيرها، متناظر با هر كاراكتر كنترلي در رشته

وجود داشته باشد.آدرس يك متغيركنترلي بايد كاراكتر كنترلي استفاده شده در اين تابع همانند

هستندprintfكاراكترهاي كنترلي در تابع

Page 20: توابع ورودي-خروجي

20

* و&اپراتورهاي همانطور كه اشاره شد متغيرها آدرس محلهايي در حافظه

هستند با استفاده از نام متغير به تنهايي ما ميتوانيم به محتويات

آن دسترسي پيدا كنيم در برخي موارد الزم است ما آدرس محل حافظه را داشته

استفاده ميكنيم.&باشيم در اينصورت از اپراتور براي دسترسي به محتويات يك خانه حافظه *اپراتور

استفاده ميشود. يعني اين اپراتور آدرس يك خانه حافظه را گرفته و محتويات آنرا برميگرداند.

)در ادامه درس، بخش اشاره گرها مفصل در اين زمينه صحبت خواهد شد(

Page 21: توابع ورودي-خروجي

21

مثال: آدرس حافظه )آدرس متغير( )نام متغير(& مقدار حافظه )آدرس حافظه(*

فرض كنيد متغيرch از نوع كاراكتر تعريف شده را به آن 110باشد و سيستم عامل خانه

را در آن 44اختصاص داده باشد و ما مقدار ذخيره كرده باشيم. در اينصورت:

&)ch( 110 ch 44 *)110( 44

Page 22: توابع ورودي-خروجي

22

برنامه نمايش يك متغير به : 2مثالهمراه آدرس متغير

int main)({

int num ;num = 2;printf ) "Value:%d, Address:%d" , num , &num (;return 0;

}

Value:2, Address:3536 خروجي:

Page 23: توابع ورودي-خروجي

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 1825.0 days old.

خروجي:

Page 24: توابع ورودي-خروجي

24

تمرين1 عدد صحيح را از كاربر گرفته و حاصل جمع 3- برنامه اي بنويسيد كه

آنها را نمايش دهد2 عدد اعشاري را از كاربر گرفته و حاصل 3- برنامه اي بنويسيد كه

جمع آنها را نمايش دهد3 برنامه اي بنويسيد كه -x و y را از كاربر گرفته xy .را نمايش دهد

استفاده نماييدpowبراي محاسبه توان از تابع 4 برنامه اي بنويسيد كه يك عدد صحيح را از كاربر گرفته و در -

و اگر 0 اگر زوج بود عدد خروجي زوج يا فرد بودن آنرا نمايش دهد نمايش داده شود.1فرد بود عدد

5 برنامه اي بنويسيد كه -x , y از كاربر گرفته و باقيمانده تقسيم x بر yرا نمايش دهد

6 برنامه اي بنويسيد كه شعاع يك كره را گرفته و مساحت جانبي و -حجم آنرا در خروجي نمايش دهد

7 برنامه اي بنويسيد كه طول، عرض و ارتفاع يك مكعب مستطيل را -گرفته و مساحت جانبي و حجم آنرا در خروجي نمايش دهد

8 برنامه اي بنويسيد كه يك مقدار درخواستي پول را از كاربر گرفته - 1 توماني و 50 توماني، 100 توماني، 1000و تعداد اسكناسهاي

توماني مورد نياز را محاسبه نمايد.

Page 25: توابع ورودي-خروجي

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.34The winning time in heat B of event 4 was 36.340000

Page 26: توابع ورودي-خروجي

26

تمرين كالسي: را گرفته و ريشه هاي 2برنامه اي بنويسيد كه ضرايب معادله درجه

معادله را نمايش دهد.

Enter a b c: 1 -5 6x1=3.000000 , x2=2.000000

خروجي:

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;

}

Page 27: توابع ورودي-خروجي

27

)(getchar و )getch)(، getche ) توابع

توابع getch)(، getche )( و getchar)( براي گرفتن يك كاراكتر از كاربر استفاده ميشوند.

تابعgetch با فشار دادن يك كليد، كد آن را برميگرداند و هيچ كاراكتري در روي مانيتور نمايش داده نميشود.

تابعgetche همانند تابع getch عمل ميكند با اين تفاوت كه كاراكتر وارد شده روي مانيتور نقش ميبندد

تابعgetchar همانند تابع getche عمل نموده و براي وارد كردن كاراكتر الزم است بعد از كاراكتر مورد نظر

هم فشرده شودEnterكليد

Page 28: توابع ورودي-خروجي

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

Page 29: توابع ورودي-خروجي

29

asciiكد اسكي

هر كاراكتر در سيستمANSI در يك بايت ذخيره ميشود.

در زبانC نوع داده اي char براي ذخيره يك كاراكتر استفاده ميشود.

هر كاراكتر با يك كد ارائه ميگردد كه به آن كداسكي ميگويند.

براي نمونه كد مربوط به كاراكترA ميباشد65 برابر

Page 30: توابع ورودي-خروجي

30

C در زبان charمتغيرهاي

مقداردهي به متغيرchar به شكل زير را در نظر بگيريد:

char ch=‘A’ دستور فوق باعث ميشود كد اسكي كاراكترA در

قرارگيردchمتغير ميتوان بجاي دستور فوق از دستور زير استفاده نمود

char ch=65.هر دو دستور فوق يك عمل را انجام ميدهند كامپايلرC انواع داده اي از نوع كاراكتر را به كد

اسكي آنها تبديل ميكند

Page 31: توابع ورودي-خروجي

31

)(int main: كد اسكي2مثال {

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;}