ملتقى المهندسين السوريين
أهلاً بك زائرنا الكريم (زائرتنا الكريمة)... ملتقى المهندسين السوريين يرحب بك و يدعوك للانضمام إلى فريقه للمساهمة في تطوير المنتدى و تحسينه أكثر فأكثر... إن تسجيلك في المنتدى يعطيك فرصة أكبر للاستفادة من محتواه...

يمكنك الآن المشاركة بمسابقة المنتدى وربح جوائز قيمة من خلال الرابط التالي http://shamra.sy/?c_ref=Ghadeer85

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

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

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

مُساهمة من طرف ruaa abdalber في 12/2/2014, 2:15 pm

بسم الله الرحمن الرحيم
دوال الإدخال و الإخراج في لغة سي

سنتعرف الآن على دوال مختصة في الإدخال و الإخراج  
I/O:

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

[ltr]printf( );
 
[/ltr]
طبعاً هذه الدالة من الدوال الأساسية جداً في لغة السي لا أعتقد أن هناك من يجهلها و هذه الدالة تأخذ متغير إلى متغيرين .

الأول يكون دائم من نوع سلسلة حرفية و المتغير الاول إجباري , أما المتغير الثاني فهو غير إجباري و يكون من نوع
va _list   طبعاً هو ليس من الأنواع القياسية
في  لغة سي و لكنه مفيد جدا في أن الدالة تأخذ عدد غير محدد من القيم مثل ما يحصل مع الدالة printf و scanf  و لكن عمل هذا النوع معقد جداً
و لن أتطرق له هنا ...المهم لو اردنا أن نطبع الجملة التالية :
 

[ltr]Hi I am Talal
 
[/ltr]
ما علينا إلا كتابة الآتي:
 

[ltr]printf ("Hi I am Talal");
 
[/ltr]
ولكن ماذا لو أردنا أن نكتبها هكذا:
 

[ltr]Hi I am
Talal
 
[/ltr]
سوف نكتبها هكذا :
 

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

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

[ltr]printf ("Hi I am Talal");
 
[/ltr]
سنلاحظ أن المخرج على الشاشة هو :
 

[ltr]Hi I am Talal
 
[/ltr]
والحال ايضاً نفس الشئ مع الـ ؟ و الـ ' و الـ "
فما عليك إلا كتابتها مرتين ؟؟ و "" و ' ' .

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

[ltr]#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 ;
}
 
[/ltr]
لاحظ أن المخرجات ستكون بالشكل التالي :
 

[ltr]The int c = 15
The float f = 45.5
The char ch = Y
The string name = Talal
 
[/ltr]
لاحظ أن %d تكون توصيف لمتغير من نوع int ,
و الـ %
f تكون لتوصيف متغير من نوع float ,
والـ %
c تكون لتوصيف متغير من نوع char أي حرف واحد ,
والـ %
s تكون لتوصيف متغير من نوع string حرف أو أكثر .

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

[ltr]scanf ( ) ;
 
[/ltr]
وهي دالة لإدخال أي نوع من أنواع الـ Data Type .
وممكن نشوف هذا المثال و يكون كافي :
 

[ltr]#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 ;
}
 
[/ltr]
لنلقي نظرة على البرنامج بسرعة :
في الأول عرفنا متغيرين الاول من نوع
int و الثاني من نوع char
وهي مصفوفة لأن الجمل في السي هي عبارة عن مصفوفة من نوع
char .
ثم طبعنا عبارة تطلب من المستخدم إدخال قيمة من نوع
int
ثم إستخدمنا الدالة
scanf لإدخال هذه القيمة في المتغير a ,
لاحظ أننا كتبنا
a& وليس a و هذا مطلب اساسي لجميع المتغيرات
ماعدا نوع
string , وهذا موضوع في الـ Functions يسمى
Call By reference. وذلك لأن قيمة a ستتغير بعد ما نستدعي هذه الدالة .
ثم قمنا بطلب آخر من المستخدم و هو إدخال جملة و لكن هذه المرة لم نقم بكتابة
string& لماذا ؟
لأن المصفوفة في السي عبارة عن مؤشر
Pointer و علامة * مع علامة & لا تكتب .
ثم في السطر الأخير طبعنا القيموة
a و قيمة المصفوفة string .
- تذكر هذا المثال جيداً لأننا سوف نقوم ببعض المقارنات بين الدالة
scanf و دالة أخرى سنراها في هذا الدرس .
 

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

[ltr]1. getchar ( ) ;
2. getche ( ) ;
3. getch ( ) ;
 
[/ltr]
وهذه دوال إدخال حرف واحد و هي متشابهه في الشكل و لكن مختلفة في الأداء نوعاً ما .
الدلة الأولى :
getchar توجد ضمن ملف التوجية stdio.h و تستخدم لإدخال حرف واحد ويظهر على الشاشة بعد الكتابة ولا ينتقل إلى الأمر الذي بعده إلا إذا ضغط المستخدم على مفتاح Enter .

مثال:
 

[ltr]char ch ;
ch = getchar() ;
printf ("%c",ch) ;
 
[/ltr]

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

[ltr]char ch ;
ch = getche() ;
printf ("%c",ch) ;
 
[/ltr]

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

[ltr]char ch ;
ch = getch();
printf("%c",ch);
 
[/ltr]

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

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

[ltr]getch();
 
[/ltr]
و جرب و سترى ان هذا يحل لك الاشكال ... ;)


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

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

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

[ltr]gets ( str ) ; // str is type of array of char ….
 
[/ltr]
لنرى المثال التالي :
 

[ltr]#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 ;
}
 
[/ltr]

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

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

[ltr]gets (name);
 
[/ltr]
ضعوا :
 

[ltr]scanf ("%s",name) ;
 
[/ltr]
ثم قم بإدخال إسمك كاملاً لنقل ثلاثياً و لاحظ المخرجات !!!
ستجد أن المطبوع هو إسمك الأول فقط و ذلك بسبب أن الدالة
scanf
تقراء حتى يواجهها أول فراغ فتتوقف عن القرائة !! إذا ما هو الحال ؟!
الحل هو إستخدام الدالة
gets جرب و لاحظ النتائج بنفسك .
التجربة خير برهان .

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

[ltr]putchar ();
 
[/ltr]
وهي مثل الدالة puts ولكن هذه لإخراج حرف واحد فقط فعندما نكتب :
 

[ltr]putchar ( 'a' ) ;
 
[/ltr]
يكون المخرج على الشاشة حرف a .
وعندما تكتب الفقرة التاليه في برنامج :
 

[ltr]char ch ;
ch = getchar () ;
putchar(ch);
 
[/ltr]
وهذه الدالة موجوده في ملف التوجية stdio.h .
وأختها putch ولكن موجودة في ملف التوجية conio.h ولها نفس المعاملات تماماً و تستخدم بنفس الطريقة .

*****************

منقوووووووووووووووووووووول

ruaa abdalber
مهندس جديد
مهندس جديد

الجنس : انثى
عدد المساهمات : 2
السٌّمعَة : 0
تاريخ التسجيل : 06/01/2014

معاينة صفحة البيانات الشخصي للعضو

الرجوع الى أعلى الصفحة اذهب الى الأسفل

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

مُساهمة من طرف Admin في 12/2/2014, 7:11 pm

الف شكر لكِ مهندسة رؤى... نتمنى رؤية المزيد من إبداعك  قلب  قلب  قلب  قلب


شارك بمسابقة شمرا واربح لابتوب بمواصفات عالية جداً وعشرات الجوائز الأخرى
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

Admin
مدير الموقع
مدير الموقع

الجنس : ذكر
البرج : الحوت
عدد المساهمات : 2760
السٌّمعَة : 116
تاريخ التسجيل : 15/09/2010
العمر : 31

معاينة صفحة البيانات الشخصي للعضو

الرجوع الى أعلى الصفحة اذهب الى الأسفل

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

مُساهمة من طرف hop في 13/2/2014, 1:37 pm

مشكووووووووووورة اخت رؤى,,,,,,, بتمنا انو شوفك ع طول هووووووووووون وررررررررتي ولا تردي ع الدب ادمن هاد دبدووب بس والله عسووووول ادمنننننننن والله لخلي الكل يعرف انك دبدوب هههههههههههه دبكة  دبكة  ههه  ههه  قلب  قلب  قلب  قلب يا قلب اختك انت

hop
مشرفة قسم الموسيقا
مشرفة قسم الموسيقا

الجنس : انثى
البرج : الحمل
عدد المساهمات : 532
السٌّمعَة : 3
تاريخ التسجيل : 21/02/2012
العمر : 27
الموقع : ملتقى المهندسين السورين

معاينة صفحة البيانات الشخصي للعضو

الرجوع الى أعلى الصفحة اذهب الى الأسفل

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

مُساهمة من طرف Admin في 14/2/2014, 1:56 am

angry  angry  angry  angry  angry  angry  angry  angry  angry  angry  angry  angry


شارك بمسابقة شمرا واربح لابتوب بمواصفات عالية جداً وعشرات الجوائز الأخرى
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

Admin
مدير الموقع
مدير الموقع

الجنس : ذكر
البرج : الحوت
عدد المساهمات : 2760
السٌّمعَة : 116
تاريخ التسجيل : 15/09/2010
العمر : 31

معاينة صفحة البيانات الشخصي للعضو

الرجوع الى أعلى الصفحة اذهب الى الأسفل

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

مُساهمة من طرف hacksyria في 4/6/2014, 7:05 pm

يسلموو بس يارت يعني تزبطين النص بعد ما تنسخينو من موقع ثاني اسمحي مروري

hacksyria
مهندس جديد
مهندس جديد

الجنس : ذكر
عدد المساهمات : 26
السٌّمعَة : 0
تاريخ التسجيل : 21/04/2014
الموقع : hacksyria2014.blogspot.com

معاينة صفحة البيانات الشخصي للعضو

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى