توابع ورودي-خروجي
description
Transcript of توابع ورودي-خروجي
1
توابع ورودي-خروجي
2
Cتوابع ورودي- خروجي در
اغلب برنامه ها بايد اطالعاتي را از كاربر بگيرند وروي آنها پردازش دهند و نتيجه پردازش را به كاربر
اعالم نمايند در زبان برنامه نويسيC توابع متنوعي براي عمليات
ورودي-خروجي تعريف شده اند كه هر كدام ويژگيهاي خاص خود را دارند
عمومي ترين توابع ورودي-خروجي در زبانC تابع scanf براي ورود اطالعات و printf براي نمايش
اطالعات ميباشند
3
Cتوابع ورودي- خروجي در )ادامه(
توابع ورودي-خروجي ديگري كه درC وجود دارند و از آنها ميتوان استفاده كرد عبارتند از:
getch, getchar, putch, putchar, gets, puts در زبانC++ نيز براي سهولت عمليات ورودي
خروجي توابعي درنظر گرفته شده است:cin براي ورود اطالعات و cout براي نمايش
اطالعات
4
printfتابع اين تابع براي نمايش اطالعات به كاربر بر روي خروجي
استاندارد )مانيتور( بكار ميرود.قالب استفاده از اين دستور به شكل زير ميباشد
printf)“ [متغيرها ],”رشته كنترلي (; اين تابع در كتابخانهstdio.hتعريف شده است قرارميگيرد از (“”)رشته كنترلي كه داخل كتيشن
متنهاي ثابت و كاراكترهاي كنترلي تشكيل ميشود در بخش متغيرها، متناظر با هر كاراكتر كنترلي در رشته
كنترلي بايد يك متغير وجود داشته باشدكاراكتر كنترلي بايد متناسب با نوع متغير باشد
5
كاراكترهاي كنترلي آغاز ميشوند.%كاراكترهاي كنترلي با با استفاده از كاراكترهاي كنترلي ميتوان خروجي را به
شكل دلخواه نشان داد:فهرست كاراكترهاي كنترلي به شرح ذيل ميباشند
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
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;
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
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
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
11
كاراكترهاي تعيين ميدان در برنامه قبل ديديم كه متغير اعشاريy رقم مميز چاپ شده 6 با
است، درحالي كه تنها دو رقم از اين ارقام با ارزش هستند. از اين كاراكترها براي مرتب شدن خروجي و زير هم بودن اطالعات
استفاده ميشود.
%m.nf چاپ يك عدد اعشاري در طولm كه n رقم اعشار دارد
%md چاپ يك عدد صحيح در طولm
**.***%6.2f
***.**.%3f
******%6d
12
كاراكترهاي تعيين ميدانمثال
int x = 123;float m= 4872.458;
نحوه نمايشمتغيررشته كنترلي
%4dx123
%5dx123
%2dx123
%10.4fm4872.4580
%.4fm4872.4580
%.2fm4872.45
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
خروجي:
14
در صورتي كه بخواهيم خانه هاي خالي با صفر 0 از كاراكتر %جايگزين شود، بعد از عالمت
استفاده ميكنيم)صفر(int x = 123;float m= 4872.458;
نحوه نمايشمتغيررشته كنترلي
%4dx123
%04dx0123
%10.3fm4872.458
%010.3fm004872.458
15
رشته هاي گريز در رشته كنترلي كاراكترهايي ميتوان استفاده كرد كه موقعيت
مكان نما را براساس نياز ما تغيير ميدهد. آغاز ميشوند و نمونه اي از آنها عبارت \رشته هاي گريز با
عملكردرشته گريزاست از:
\nسطر جديد
\tجهش هشت كاراكتري
\bبازگشت به عقب
چاپ عالمت نقل قول تكي’\
چاپ عالمت نقل قول دوتايي”\
backslashنمايش عالمت \\
16
- مثال 7مثال
برنامه اي بنويسيد كه خروجي زير را بصورتمرتب نمايش دهد.
num1 num2 sumation1 2 3100 2 1021010 256 12665 56 61
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 1825.0 days old.
خروجي:
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و تعداد اسكناسهاي
توماني مورد نياز را محاسبه نمايد.
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
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;
}
27
)(getchar و )getch)(، getche ) توابع
توابع getch)(، getche )( و getchar)( براي گرفتن يك كاراكتر از كاربر استفاده ميشوند.
تابعgetch با فشار دادن يك كليد، كد آن را برميگرداند و هيچ كاراكتري در روي مانيتور نمايش داده نميشود.
تابعgetche همانند تابع getch عمل ميكند با اين تفاوت كه كاراكتر وارد شده روي مانيتور نقش ميبندد
تابع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
C در زبان charمتغيرهاي
مقداردهي به متغيرchar به شكل زير را در نظر بگيريد:
char ch=‘A’ دستور فوق باعث ميشود كد اسكي كاراكترA در
قرارگيردchمتغير ميتوان بجاي دستور فوق از دستور زير استفاده نمود
char ch=65.هر دو دستور فوق يك عمل را انجام ميدهند كامپايلرC انواع داده اي از نوع كاراكتر را به كد
اسكي آنها تبديل ميكند
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;}