مـنـتــدى شـبـاب اليمن العامه




"¨°°o°°¨]§[°مرحباُ بك في منتديات شباب اليمن °]§[¨°°o°°¨"

مـنـتــدى شـبـاب اليمن العامه


 
الرئيسيةالبوابهاليوميةمكتبة الصورس .و .جبحـثالأعضاءالمجموعاتالتسجيلدخولمنتدى شباب اليمن

شاطر | 
 

 دوال الإدخال و الإخراج في لغة سي

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل 
كاتب الموضوعرسالة
بنت اليمن
المشرف العام
المشرف العام
avatar

علم الــــدولـــة :
الجنس : انثى

الابراج : الميزان

الحصان
عدد المساهمات عدد المساهمات : 79
نقاط : 228

تاريخ التسجيل : 04/04/2011
العمر : 27
الموقع الموقع : http://yemen2day.yoo7.com
تعاليق : مــــا آروع ان تصادق أنسان يفوق حد الآدراك فيجبرك على ان تحبة وآلـــية تشـــتاق.ّ!ّ!.

عاشقة للحرية وحب المغامرات
لآخبرك يا سيدتى بكل صدق عن حبك ان احببت بصدق فلا تبالى بمن كسر قلبك فالخاسر لن يكون انت اعلمى ان من يعطى لا يخسر بقدر من ياخذ لانة سيحين وقت لمن اخذ ان يعطى ولكن عطاءة سيقابل بالجفاء فتقبلى ما كان وانظرى للدنيا من نافذة بلا قضبان!!!


مُساهمةموضوع: دوال الإدخال و الإخراج في لغة سي   الثلاثاء أبريل 05, 2011 9:45 pm

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

دوال الإدخال و الإخراج في لغة سي


في هذا الدرس سنتعرف على دوال جديدة مختلفة كثيراً عن الدرس السابق ... سنتعرف الآن على دوال مختصة في الإدخال و الإخراج I/O:

أولاً:
دالة الإخراج :


printf( );


طبعاً هذه الدالة من الدوال الأساسية جداً في لغة السي لا أعتقد أن هناك من يجهلها و هذه الدالة تأخذ متغر إلى متغيرين .


الأول يكون دائم من نوع سلسلة حرفية و المتغير الاول إجباري , أما المتغير الثاني فهو غير إجباري و يكون من نوع va_list طبعاً هو ليس من الأنواع القياسية

في لغة سي و لكنه مفيد جدا في أن الدالة تأخذ عدد غير محدد من القيم مثل ما يحصل مع الدالة printf و scanf و لكن عمل هذا النوع معقد جداً

و لن أتطرق له هنا ...المهم لو اردنا أن نطبع الجملة التالية :


Hi I am Talal


ما علينا إلا كتابة الآتي:


printf ("Hi I am Talal");


ولكن ماذا لو أردنا أن نكتبها هكذا:


Hi I am
Talal


سوف نكتبها هكذا :


printf ("Hi I am nTalal");


لاحظ هنا وجود علامة الـ n وهي تعني new line ( سطر جديد )
وهناك الكثير من العلامات التي تؤدي اغراض معينة مثل:
1. نقل المؤشر 8 مسافات و نستخدم لذلك علامة t .
2. إخراج صوت الصافرة ( بيب ) , ونستخدم العلامة a.
3. إرجاع المؤشر مسافة خلفية و نستخدم لذلك b .

ولكن ماذا لو اردت أن نطبع العلامة ؟!؟
الحل هو كتابتها كالتالي:


printf ("Hi I am Talal");


سنلاحظ أن المخرج على الشاشة هو :


Hi I am Talal


والحال ايضاً نفس الشئ مع الـ ؟ و الـ ' و الـ "
فما عليك إلا كتابتها مرتين ؟؟ و "" و ' ' .

ولنرى الان هذا البرامج على السريع :


#include "stdio.h"
main ( )
{
int a = 5, b = 10, c ;
float f = 45.5 ;
char ch = 'Y' ;
char name[10] = "Talal" ;

c = a + b ;
printf ("The int c = %d n",c) ;
printf ("The float f = %f n",f) ;
printf ("The char ch = %c n",ch) ;
printf ("The string name = %sn",name) ;
return 0 ;
}


لاحظ أن المخرجات ستكون بالشكل التالي :


The int c = 15
The float f = 45.5
The char ch = Y
The string name = Talal


لاحظ أن %d تكون توصيف لمتغير من نوع int ,
و الـ %f تكون لتوصيف متغير من نوع float ,
والـ %c تكون لتوصيف متغير من نوع char أي حرف واحد ,
والـ %s تكون لتوصيف متغير من نوع string حرف أو أكثر .

ثانياً:
دالة الادخال


scanf ( ) ;


وهي دالة لإدخال أي نوع من أنواع الـ Data Type .
وممكن نشوف هذا المثال و يكون كافي :


#include "stdio.h"
main ( )
{
int a ;
char string[20] ;
printf ("nEnter an int VALUE: ") ;
scanf ("%d",&a) ;
printf ("nEnter a string: ") ;
scanf ("%s",string) ;
printf ("The int value is:%d ,,, the string is:%sn", a, string) ;
return 0 ;
}


لنلقي نظرة على البرنامج بسرعة :
في الأول عرفنا متغيرين الاول من نوع int و الثاني من نوع char
وهي مصفوفة لأن الجمل في السي هي عبارة عن مصفوفة من نوع char .
ثم طبعنا عبارة تطلب من المستخدم إدخال قيمة من نوع int
ثم إستخدمنا الدالة scanf لإدخال هذه القيمة في المتغير a ,
لاحظ أننا كتبنا a& وليس a و هذا مطلب اساسي لجميع المتغيرات
ماعدا نوع string , وهذا موضوع في الـ Functions يسمى
Call By reference. وذلك لأن قيمة a ستتغير بعد ما نستدعي هذه الدالة .
ثم قمنا بطلب آخر من المستخدم و هو إدخال جملة و لكن هذه المرة لم نقم بكتابة string& لماذا ؟
لأن المصفوفة في السي عبارة عن مؤشر Pointer و علامة * مع علامة & لا تكتب .
ثم في السطر الأخير طبعنا القيموة a و قيمة المصفوفة string .
- تذكر هذا المثال جيداً لأننا سوف نقوم ببعض المقارنات بين الدالة scanf و دالة أخرى سنراها في هذا الدرس .


ثالثاً:
دوال الإدخال


1. getchar ( ) ;
2. getche ( ) ;
3. getch ( ) ;


وهذه دوال إدخال حرف واحد و هي متشابهه في الشكل و لكن مختلفة في الأداء نوعاً ما .
الدلة الأولى : getchar توجد ضمن ملف التوجية stdio.h و تستخدم لإدخال حرف واحد ويظهر على الشاشة بعد الكتابة ولا ينتقل إلى الأمر الذي بعده إلا إذا ضغط المستخدم على مفتاح Enter .

مثال:


char ch ;
ch = getchar() ;
printf ("%c",ch) ;



الدلة الثانية : getche وتوجد ضمن ملف التوجية conio.h و تستخدم ايضاً لإدخال حرف واحد و يظر على الشاشة إلا أنها تختلف عن الدالة getchar في أنها لا تحتاج الضغط على مفتاح Enter للإنتقال للأمر التالي...
مثال:


char ch ;
ch = getche() ;
printf ("%c",ch) ;



الدالة الثالثة : getch ( محبوبتي Very Happy ) وتوجد ضمن ملف التوجية conio.h ومع هذه الدالة الأمر مختلف عن الدالتين السابقتين, فالدالتين
السابقتين كان الحرف يظهر على الشاشة و لكن هنا لا يظهر و لا يطلب من المستخدم الضغط على مفتاح Enter للإكمال .
مثال :


char ch ;
ch = getch();
printf("%c",ch);



طبعاً أولاً نفذ هذه الدوال الثلاث و ضعها في برنامج .


ثم لنرى فائدة من فوائد الدالة الأخيرة getch إذا كنت من مستخدمي منتجات بورلاند فلابد من أنك قد مملت ان ينفذ البرنامج

و عند الإنتهاء منه تضغظ على مفتاحي Alt + F5 لترى آخر النتائج , الدالة getch تحل لك هذه المشكلة كل ما عليك هو ان

تكتب في نهاية الدالة main الجملة التالية


getch();


و جرب و سترى ان هذا يحل لك الاشكال ... Wink



و هذا أيضاً إذا كنت تريد ان تري المستخدم شئ و ستمسح الشاشة بعدها
ماهو الحل بالتأكيد الدالة getch و بعدها قم بمسح الشاشة .
- مسوي دعاية لهالدالة كأنها متنج تلفزيوني أبغا أبيعه – Very Happy .


وتستخدم هذه الدالة أيضاً في حركات كتابة أرقام السر لأنه ليس من
المفروض ان يرى المستخدم رقمة السري ولا لا ؟!؟ Wink

رابعاً:
دالة الإدخال gets :
توجد هذه الدالة ضمن ملف التوجية stdio.h , و تستخدم في إدخال عبارة حرفية -string- وتستخدم كالتالي:


gets ( str ) ; // str is type of array of char ….


لنرى المثال التالي :


#include "stdio.h"
#include "conio.h"
main ()
{
char name[20] ;
printf ("nPlease Enter Your name: ") ;
gets (name) ;
puts (name) ;
printf ("n%s",name);
getch ();
return 0 ;
}



طبعاً يوجد في البرنامج دالة جديدة علينا وهي الدالة puts وهي نفس الدالة gets ولكن puts للإخراج , وتستخدم كما في المثال .

ولكن نفذوا البرنامج السابق وبدل من الجملة


gets (name);


ضعوا :


scanf ("%s",name) ;


ثم قم بإدخال إسمك كاملاً لنقل ثلاثياً و لاحظ المخرجات !!!
ستجد أن المطبوع هو إسمك الأول فقط و ذلك بسبب أن الدالة scanf
تقراء حتى يواجهها أول فراغ فتتوقف عن القرائة !! إذا ما هو الحال ؟!
الحل هو إستخدام الدالة gets جرب و لاحظ النتائج بنفسك .
التجربة خير برهان .

وأيضاً هناك دوال مشايهه سأذكرها على عجالة وهي :


putchar ();


وهي مثل الدالة puts ولكن هذه لإخراج حرف واحد فقط فعندما نكتب :


putchar ( 'a' ) ;


يكون المخرج على الشاشة حرف a .
وعندما تكتب الفقرة التاليه في برنامج :


char ch ;
ch = getchar () ;
putchar(ch);


وهذه الدالة موجوده في ملف التوجية stdio.h .
وأختها putch ولكن موجودة في ملف التوجية conio.h ولها نفس المعاملات تماماً و تستخدم بنفس الطريقة .



عموما أسألوا لي التوفيق من الله تعالى .
وأسال الله لكم التوفيق و النفع بما لدي و أن أنتفع بما لديكم .
الرجوع الى أعلى الصفحة اذهب الى الأسفل
http://yemen2day.yoo7.com/
 
دوال الإدخال و الإخراج في لغة سي
استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
مـنـتــدى شـبـاب اليمن العامه :: البرامج الحاسوبية-
انتقل الى: