أنت هنا:برمجها»اللغة س»الدرس 4: قراءة وكتابة المعطيات
الدرس 4: قراءة وكتابة المعطيات الدرس 4: قراءة وكتابة المعطيات
قيم الموضوع
(1 تصويت)
المكتبة <stdio.h> تحتوي على مجموعة من الدوال التي تدير عملية الإتصال بين الآلة والعالم الخارجي. في هذه الفقرة، سنناقش ونتعرف على أهم هذه الدوال.
 

printf()

   كتابة الكلمات والمعطيات 

scanf()

   قراءة المعطيات

putchar()

   كتابة حرف

getchar()

   قراءة حرف

 1. كتابة الكلمات والمعطيات (printf)

الدالة ()printf  تمكن من إظهار الجمل  وقيم  المتغيرات أو نتائج الإنشاءات على الشاشة.

الكتابة الخوارزمية في C

اكتب <الإنشاء1>,<الإنشاء2>, ...

printf("<format>",<Expr1>,<Expr2>, ... )

 

"<format>"

 

شكل الإظهار أو التمثيل

<Expr1>,...

 

المتغيرات والإنشاءات المراد إظهارها

الجزء <format> يمكن أن يحتوي على :

  • 1-  نص.

  • 2-  بعض الرموز المخصصة في C.

  • 3- محددات شكل الإظهار.

  • الجزء <format>  يحتوي تماما على محدد الشكل لكل إنشاء <Expr1...N>. تبدأ المحددات دائما بالرمز % وتنتهي بحرف أو حرفين لتعيين شكل الإنشاء.

مثال 1:

 نعتبر الشفرة التالية:

int A = 1234;
int B = 567;
printf("%i × %i = %li\n", A, B, (long)A*B);

 يظهر على الشاشة هذا التعبير:
1234 × 567 = 699678

محتوى  printf :

-

الجزء <format>

"%i × %i = %li"

-

المتغير

A

-

المتغير

B

-

الإنشاء

(long)A*B

 

%i

 

 لأجل إظهار A ذي النوع int

   
     سيظهر على  شكل قيمة عددية

 <== 

1234

%i

 

 لأجل إظهار B ذي النوع int

   
     سيظهر على  شكل قيمة عددية

 <== 

567

%li

 

 لأجل إظهار الإنشاء  ذي النوع  long int

 <==    

699678

مثال 2:

 نعتبر الشفرة التالية:

char B = 'A';
printf("Character %c has %i !\n", B, B);

 يظهر على الشاشة هذا التعبير:

Le caractère A a le code 65 !

المتغير B  يقبل إذن شكلين للإظهار :

%c

  يظهر على  شكل حرف (char)

A

%i

  يظهر على  شكل عدد نسبي

65

محددات الشكل المستعملة :

الرمز

النوع

طبيعة الخروج

%d أو %i

 int

 عدد صحيح نسبي

%u

 unsigned int

عدد صحيح طبيعي

%o

 int

عدد صحيح بالشكل الثماني

%x

 int

عدد صحيح بالشكل الستعشري

%c

 char

حرف

%f

 double

عدد حقيقي بالشكل العشري

%e

 double

عدد حقيقي بالشكل الأسي

%s

 char*

جملة

 

أمثلة أخرى:

 

long N = 1500000;

==> 1500000, 16e360

printf("%ld, %lx", N, N);

==> e360, 16

printf("%x, %x" , N);

==> -7328, 22

printf("%d, %d" , N);

أمثلة أخرى:

 

float N = 12.1234;

 

double M = 12.123456789;

 

long double P = 15.5;

==> 12.123400

printf("%f", N);

==> 12.123457

printf("%f", M);

==> 1.212340e+01

printf("%e", N);

==> 1.212346e+01

printf("%e", M);

==> 1.550000e+01

printf("%Le", P);

أمثلة أخرى: الفراغ في الأمام، للفهم فقط  نعبر عنه بـ '_'

_123

==>

printf("%4d", 123);

1234

==>

printf("%4d", 1234);

12345

==>

printf("%4d", 12345);

___0

==>

printf("%4u", 0);

__7B

==>

printf("%4X", 123);

__7b

==>

printf("%4x", 123);

أمثلة أخرى: الفراغ في الوراء، للفهم فقط  نعبر عنه بـ '_'

100.123000

==>

printf("%f", 100.123);

__100.123000

==>

printf("%12f", 100.123);

100.12

==>

printf("%.2f", 100.123);

__100

==>

printf("%5.0f", 100.123);

___100.123

==>

printf("%10.3f", 100.123);

1.2346

==>

printf("%.4f", 1.23456);


التمرين 4.1

نعتبر ما يلي:

#include <stdio.h>
main()
{
  int N=10, P=5, Q=10, R;
  char C='S';
  N = 5;
  P = 2;
  Q = N++ > P || P++ != 3;
  printf ("C : N=%d P=%d Q=%d\n", N, P, Q);

  N = 5;
  P = 2;
  Q = N++ < P || P++ != 3;
  printf ("D : N=%d P=%d Q=%d\n", N, P, Q);

  N = 5;
  P = 2;
  Q = ++N == 3 && ++P == 3;
  printf ("E : N=%d P=%d Q=%d\n", N, P, Q);

  N=5;
  P=2;
  Q = ++N == 6 && ++P == 3;
  printf ("F : N=%d P=%d Q=%d\n", N, P, Q);

  N=C;
  printf ("G : %c %c\n", C, N);
  printf ("H : %d %d\n", C, N);
  printf ("I : %x %x\n", C, N);

  return 0;
}

أ) بدون استعمال الحاسوب، أوجد وأكتب نتائج الشفرة أعلاه.

ب) تحقق من ذلك باستعمال الحاسوب.

 


2. قراءة المعطيات (scanf)

الدالة ()scanf مشابهة للدالة ()printf  لكن في الشكل المعاكس.

الكتابة الخوارزمية في C

اقرا <المتغير1>,<المتغير2>, ...

scanf("<format>",<AdrVar1>,<AdrVar2>, ...)

 

"<format>"

 

شـكل قراءة المعطيات

<Expr1>,...

 

  عنوان المتغيرات المراد قراءتها

 

مثال :

int JOUR, MOIS, ANNEE;
float x;
scanf("%i %i %i %f", &JOUR, &MOIS, &ANNEE,&x);

قراءة 4 متغيرات مفرق بينها بواسطة الفراغ أو الجدولة أو الرجوع إلى السطر. القيم التي يتم إدخالها يجب أن تكون على التوالي  JOUR  ثم MOIS  ثم ANNEE  ثم x.

محددات الشكل المستعملة لـ()scanf :

الرمز

النوع

طبيعة الخروج

%d او %i

int*

 عدد صحيح نسبي

%u

int*

عدد صحيح طبيعي

%o

int*

عدد صحيح بالشكل الثماني

%x

int*

عدد صحيح بالشكل الستعشري

%c

char*

حرف

%s

char*

جملة

%e أو  %f

float*

عدد حقيقي بالشكل الأسي

 

1. النوع long: إذا أردنا قراءة متغير من نوع long ، يكفي أن نستعمل المحددات  ld% وli%  و lu% وlo% و lx% وإلا فالعدد يأخذ النوع int.

2. النوع double: إذا أردنا قراءة متغير من نوع double، يكفي أن نستعمل المحددات  le% و lf% وإلا فالعدد يأخذ النوع float.

3. النوع long double: إذا أردنا قراءة متغير من نوع long double ، يكفي أن نستعمل المحددات  Le% و Lf%.

4. تحديد الطول القصوي للإدخال: لجميع المحددات يكفي وضع رقم أمامها لتحديد الطول القصوي الذي يجب إدخاله.

 مثال :  نعتبر الأوامر التالية :

int A,B;
scanf("%4d  %2d", &A, &B);

إدا أدخلنا العدد 1234567 ، نحصل على النتائج التالية :  A=1234   و  B=56  أما العدد 7 فيحتفظ به لأجل الأمر التالي.

5. إشارات الفراغ : t\ و n\ و r\

 مثال : نعتبر الأوامر التالية :

int A,B;
scanf("%4d  %2d", &A, &B);

 

 طرق الإدخالات التالية كلها متكافئة :

12 4 1980
أو  12 004 1980
أو    12 4 1980

6. أشكال مخصصة

 مثال : نعتبر الأوامر التالية :

int JOUR, MOIS, ANNEE;
scanf("%i/%i/%i", &JOUR, &MOIS, &ANNEE);

إدخال مقبول

إدخال مرفوض

12/4/1980

12 4 1980

12/04/01980

12 /4 /1980


التمرين 4.2

أنجز شفرة تمكن من قراءة 3 متغيرات من نوع int من لوحة المفاتيح .

مثلا :

Introduisez la date (jour mois année): 11 11 1991
jour : 11
mois : 11
année : 1991

* أدخل قيم أخرى مغايرة وانظر ماذا يحدث.

* غير الكتابة بحيث يكون الشهر واليوم والسنة منفصلين بالرمز '-'.


3. كتابة حرف (putchar)

 أمثلة:

char z = 66; char B = '\a';

putchar('x');    /* x إظهار الحرف */
putchar('?');    /* ? إظهار الرمز */
putchar('\n');   /* الرجوع إلى السطر */
putchar(65);     /*(ascii(A)=65) لأن A إظهار الحرف */
putchar(z);      /* B إظهار الحرف */ /* أنظر أعلاه (ascii(B)=66= z) لأن */
putchar(B);      /* إصدار صوت */
putchar(EOF);    /* نهاية ملف */


4. قراءة حرف (getchar)

 أمثلة

char z = 66; char B,C;

putchar('A');    /* A إظهار الحرف */
putchar('B');    /* B إظهار الرمز */
C=getchar();     /* قراءة حرف من لوحة المفاتيح */
putchar(C);     /* إظهار الحرف الذي تمت قراءته */

هناك دوال أخرى مشابهة تقوم بنفس العمل، منها :

()getch   قراءة حرف دون إظهاره أثناء الكتابة.
()getche   قراءة حرف مع إظهاره أثناء الكتابة.

التمرين 4.3

أنجز شفرة تمكن من قراءة حرف وأظهره  مع الرقم ASCII .

أ) استعمل فقط getchar  و printf .

ب) استعمل فقط getch  و printf .


تمارين تطبيقية

التمرين 4.4

أنجز شفرة تمكن من قراءة 3 متغيرات A و B وC  وقم بعد ذلك بإبدال بعضها ببعض كما يلي :

ضع A في  B ، ثم B في C ، ثم C في A.

أظهر النتائج على الشاشة.


التمرين 4.5

أنجز شفرة تمكن من تحديد الخارج والباقي للقسمة الصحيحة لعددين صحيحين يتم إدخالهما من لوحة المفاتيح وكذلك الخارج الحقيقي لهذين العددين.


التمرين 4.6

أنجز شفرة تمكن من تحديد المقاومة المكافئة لـ 3 مقاومات R1 و R2 و R3 و ( نوع double).

-إذا كانت المقاومات في الدارة على التوالي :
Rser = R1+R2+R3
-إذا كانت المقاومات في الدارة على التوازي :

التمرين 4.7

أنجز شفرة تمكن من تحديد المساحة لمثلث، المطلوب إدخال أطوال أضلاعه الثلاث A وB وC (النوع int).

يمكنك  استعمال العلاقة : ( S2 = P(P-A)(P-B)(P-C .

P : محيط المثلث.


التمرين 4.8

أنجز شفرة تمكن من  حساب مجموع 4 أعداد (النوع int) من خلال لوحة المفاتيح ، لكن باستعمال :

أ) 5 متغيرات .

ب)  متغيرين .


التمرين 4.9

أ)  أنجز شفرة تمكن من  حساب الثَمَن TTC (نوع double) لمنتوج معين من خلال ثمنه الأصلي PNET (نوع int ) والنسبة المئوية TVA (نوع int) المضافة.

 استعمل العلاقة التالية لكن خذ بعين الاعتبار الأسبقية والتحويل الذاتي لنوع المتغير.

ب) عكسيا الآن ، أنجز شفرة تمكن من  حساب الثمن الأصلي PNET (نوع double) لمنتوج معين من خلال الثمن الأصلي (نوع int ) والنسبة المئوية TVA (نوع int) المضافة.


التمرين 4.10

أنجز شفرة تمكن من تحديد المسافة DIST (نوع double) بين نقطتين A وB للمستوى المعرف بالإحداثيات :

 (XA, YA) و (XB, YB) المطلوب إدخالهما من طرف المستعمل ، أظهر النتائج على الشاشة.


 تأليف

المؤلف الأصلي: فرديريك فابر (Frédéric FABER)

البريد الإلكترونيعنوان البريد الإلكتروني هذا محمي من روبوتات السبام. يجب عليك تفعيل الجافاسكربت لرؤيته.

الموقع الإلكتروني http://www.ltam.lu/cours-c

ترجمة بتصرف: محمد عبد الرحمان


 

أضف تعليقا


إصنعها يريد أن يتأكد أنك لست روبوتا، لذلك أحسب ما يلي:

كود امني
تحديث