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; |
يظهر على الشاشة هذا التعبير: |
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'; |
يظهر على الشاشة هذا التعبير: |
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; |
قراءة 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; |
إدا أدخلنا العدد 1234567 ، نحصل على النتائج التالية : A=1234 و B=56 أما العدد 7 فيحتفظ به لأجل الأمر التالي.
5. إشارات الفراغ : t\ و n\ و r\
مثال : نعتبر الأوامر التالية : |
int A,B; |
طرق الإدخالات التالية كلها متكافئة : |
12 4 1980 |
6. أشكال مخصصة
مثال : نعتبر الأوامر التالية : |
int 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 إظهار الحرف */ |
4. قراءة حرف (getchar)
أمثلة |
char z = 66; char B,C; putchar('A'); /* A إظهار الحرف */ |
هناك دوال أخرى مشابهة تقوم بنفس العمل، منها :
()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
ترجمة بتصرف: محمد عبد الرحمان