Admin المدير العام
عدد الرسائل : 595 العمر : 42 الموقع : https://emadghost.yoo7.com المزاج : رايق . : نقاط : 311 تاريخ التسجيل : 10/05/2008
| موضوع: دوال الإدخال و الإخراج في لغة سي الأربعاء أكتوبر 15, 2008 11:43 am | |
| سم الله الرحمن الرحيم دوال الإدخال و الإخراج في لغة سي في هذا الدرس سنتعرف على دوال جديدة مختلفة كثيراً عن الدرس السابق ... سنتعرف الآن على دوال مختصة في الإدخال و الإخراج 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 ( محبوبتي ) وتوجد ضمن ملف التوجية conio.h ومع هذه الدالة الأمر مختلف عن الدالتين السابقتين, فالدالتين السابقتين كان الحرف يظهر على الشاشة و لكن هنا لا يظهر و لا يطلب من المستخدم الضغط على مفتاح Enter للإكمال . مثال : char ch ; ch = getch(); printf("%c",ch); طبعاً أولاً نفذ هذه الدوال الثلاث و ضعها في برنامج . ثم لنرى فائدة من فوائد الدالة الأخيرة getch إذا كنت من مستخدمي منتجات بورلاند فلابد من أنك قد مملت ان ينفذ البرنامج و عند الإنتهاء منه تضغظ على مفتاحي Alt + F5 لترى آخر النتائج , الدالة getch تحل لك هذه المشكلة كل ما عليك هو ان تكتب في نهاية الدالة main الجملة التالية getch(); و جرب و سترى ان هذا يحل لك الاشكال ... و هذا أيضاً إذا كنت تريد ان تري المستخدم شئ و ستمسح الشاشة بعدها ماهو الحل بالتأكيد الدالة getch و بعدها قم بمسح الشاشة . - مسوي دعاية لهالدالة كأنها متنج تلفزيوني أبغا أبيعه – . وتستخدم هذه الدالة أيضاً في حركات كتابة أرقام السر لأنه ليس من المفروض ان يرى المستخدم رقمة السري ولا لا ؟!؟ رابعاً: دالة الإدخال 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 ولها نفس المعاملات تماماً و تستخدم بنفس الطريقة . عموما أسألوا لي التوفيق من الله تعالى . وأسال الله لكم التوفيق و النفع بما لدي و أن أنتفع بما لديكم . | |
|
mohamedkenawy المدير العام
عدد الرسائل : 164 العمر : 35 الموقع : www.hatrex-net.ba7r.org المزاج : فايق ورايق على الاخر الاوسمة : اعلام البلاد : . : نقاط : 322 تاريخ التسجيل : 23/04/2009
| موضوع: رد: دوال الإدخال و الإخراج في لغة سي الجمعة يونيو 05, 2009 9:15 am | |
| شكرا لك وانصحك بزيارت موقع كتب اكيد عارفه | |
|
عماد الامير صاحب المنتدي ورئيس مجلس الادارة
عدد الرسائل : 366 الاوسمة : اعلام البلاد : . : نقاط : 229 تاريخ التسجيل : 24/05/2008
| موضوع: رد: دوال الإدخال و الإخراج في لغة سي الأحد أغسطس 02, 2009 8:53 pm | |
| | |
|