توابع ورودی و خروجی در c – آموزش برنامه نویسی به زبان C – جلسه سوم

توابع ورودی و خروجی در c رو این جلسه شروع می کنیم و وارد محیط نرم افزار Devcpp میشیم ، قبل از خوندن این قسمت پیشنهاد میکنم تنبلیو کنار بزارید برای چند دقیقه و حتما دو تا  آموزش قبلی رو یک بار دور کنید.

آموزش برنامه نویسی به زبان C – جلسه اول : مقدمات

آموزش برنامه نویسی به زبان C – جلسه دوم: متغیرها در C

اصلا توابع ورودی و خروجی یعنی چی؟ ما هر برنامه که بنویسیم یک سری اطلاعات رو باید داخل برناممون بدیم و یک سری خروجی هارو از کد بگیریم .

در این چند قسمت قراره در رابطه با همین محل های ورودی و خروجی اطلاعات به برناممون صحبت کنم.

 کد فرمت و کاراکترهای کنترلی

از این کاراکترها و فرمتهای چاپ در توابع ورودی و خروجی در c که امروز بحثشون رو یاد میگیریم استفاده میشه .

( اینهارو باید به خاطر بسپارید، البته نه با نوشتن روی کاغذ و حفظی خوندن، با تمرین داخل برنامه هاتون!)

کدهای فرمت رو در مثال 2 توضیح میدم.

کد فرمت مفهوم کاراکتر کنترلی مفهوم
c% کاراکتر f\ انتقال کنترل به صفحه جدید
d%

i%

عدد صحیح با علامت n\ انتقال مکانما به خط بعد
u% عدد صحیح بدون علامت t\ انتقالب مکان نما به 8 مکان بعد
s% رشته r\ ابتدای سطر جاری
f% اعداد اعشاری “\ چاپ کوتیشن
e% نمایش عدد علمی ‘\ چاپ تک کوتیشن
p% اشاره گر %% علامت %

یادتونه گفتم که 32 تا کلمه کلیدی داریم که برای توی زبون C و کامپایلر مفهوم دارن؟

بعد یکم جلوتر فهمیدیم میتونیم توی هر برنامه یک سری متغیر تعریف کنیم و به اونها هم مفهوم بدیم .

حالا میخوام اینو هم اضافه کنم که یک سری تابع داریم که با فراخوانی و اضافه کردن فایل سرعنوانشون به برناممون برای کامپایلر مفهوم پیدا میکنن.مثل همین توابع ورودی و خروجی.

بعنوان نمونه میخوام از تابع printf که یک تابع خروجیه شروع کنم.

وقتی این تابع رو به برنامه اضافه کنید ، کامپیوتر نمیدونه دارین از چی صحبت میکنین ! چون نه بعنوان متغیر تعریفش کردین و نه جز اون 32 کلمه ی کلیدی هستش.

اینجور توابع  روباید با استفاده از #include قبل از تابع اصلیِ main فراخوانی کنیم و صدا بزنیمشون تا کامپیوتر بفهمه مفهوم این کلمه چیه!

ممکنه کسی بپرسه که چرا مثل متغیر ها اونهارو خودمون توی برنامه تعریف نمی کنیم ؟

این توابع بیش از تعریف متغیر ها پیچیدگی دارن و برای اینکه ما درگیر اون پیچیدگی نشیم هر دفعه ، بخشی از کد در فایلی که include کردیم وجود داره و کار مارو ساده میکنه.

حالا از پرحرفی بگذریم!

اولین فایل سرعنوانی که قراره باهاش کار کنیم اسمش stdio.h هست که مربوط به توابع ورودی و خروجی در c میشه.
اولین تابعی که قراره با استفاده ازاین سرعنوان استفاده و معرفی کنیم تابع زیره:

printf :

یک تابع خروجی است که براي نمایش اطلاعات روي صفحه نمایش بکار میره.

شکل کلی این تابع بصورت زیرِ:

 

مثال 1: قراره روی صفحه بنویسیم لوینیک!

همینجا بریم سراغ نرم افزار  devc++ و اون رو باز کنیم، Ctrl+n رو بزنید تا یک سورس فایل جدید باز بشه، حالا طبق گفته های قبل میخوایم کد نویسی رو شروع کنیم، خط اول قراره stdio.h رو فراخوانی کنیم و بعد اون باید تابع main رو معرفی کنیم.و با استفاده از تابع printf قراره روی صفحه بنویسیم levinic  ، وقتی قراره یک متن ثابت رو روی صفحه با استفاده از این تابع بنویسیم لازم نیست که از کدهای فرمت و یا کنترلی استفاده کنیم و متغیری هم معرفی نمیکنیم و فقط داخل دابل کوتیشن ها متنمون رو مینویسیم:

کد هارو کپی نکنید؛ خودتون بنویسید و با Error هایی که میده آشنا بشین، مطمئن باشید اینطوری بهتر یاد میگیرید.

 

 

خب ، بعد از نوشتن کد حتما باید اونو save کنید ، بعد از save کلید F11 رو بزنید و یا از منوی Execute  گزینه ی compile & run رو انتخاب کنید تا صفحه ی زیر براتون باز بشه و کلمه ی لوینیک ای که نوشتین براتون به نمایش در بیاد.

آموزش C - توابع ورودی و خروجی در c

 

مثال 2 : میخوایم مقدار یک متغیر رو روی صفحه نمایش نشون بدیم ، این بار هم طبق تعاریفی که قبلا خوندیم کدش رو مینویسیم:

 

خروجی:

آموزش C - توابع ورودی و خروجی در c

 

اینبار توی تابع از کد فرمت استفاده کردیم ، کد %d به کامپایلر اینو میفهمونه که ما میخوایم مقدار صحیح یک متغیری رو نمایش بدیم ، که بعد از بستن دابل کوتیشن و گذاشتن یک کاما نام متغیر رو معرفی میکنیم.(بخش آخر اونجا که نوشته x رو میگم).

کدهای فرمت در یک توضیح ساده همین کاربرد رو دارن که نوع نمایش مارو مشخص میکنن.

مثال 3 : اینبار یک عدد اعشاری تعریف کنید و مقدار آن را روی صفحه نمایش دهید :

خروجی:

 

آموزش C - توابع ورودی و خروجی در c

 

(بجای کد فرمت اعشاری از کد فرمت صحیح استفاده کنید و تغییر در خروجی رو مشاهده کنید.)

نکته ی جالبه این کد اینه که ،توی کد فرمت %f  با اینکه متغیرمون فقط 2 رقم بعد اعشار داره ، اما این کد فرمت کار خودشو میکنه و تا 6 رقم اعشار رو به ما نمایش میده  و 4 رقم بعدی رو صفر میزاره.

تعیین طول میدان یا فرمت چاپ:

توی تابع ( )printf میتونیم طول میدان خروجی یا فرمت خروجی را مشخص کنیم.

تعیین طول میدان براي رشته ها بصورت ns %که n طول میدان رو نشان میده.

این مثالو ببینید:

در حالت عادي، خروجی در سمت راست میدان قرار میگیره.توجه کنید که نگفتم سمت راست صفحه یا هرچی! سمت راست میدان عرض کردم:D(کدش رو خودتون بنویسید و توی نرم افزار کامپایلش کنید و خروجی رو ببنیدی.) توی خروجی میبینید که نوشته یک مقداری اومده سمت راست مثل تصویر زیر.

خروجی رو این شکلی تصور کنید: یازده خونه در نظر گرفته میشه ، اگر تعداد کاراکتر های ورودی کمتر باشه تعدادی ازون خالی میمونه و باز هم 11 خونه باقی میمونه.

تعیین طول میدان  یا فرمت چاپ در اعداد اعشاری :

تعیین طول میدان براي داده های اعشاري بصورت n.mf% که n اندازه کل عدد اعشاري شامل علامت ممیز و m تعداد ارقام اعشار رو نشان میده. باید به این نکته توجه داشت که اگر تعداد ارقام اعشار عدد مورد نظر از m بیشتر باشه، تعداد ارقام قسمت اعشار به m گرد میشه.

 

مثال : در مثال زیر حداکثر طول میدان 5 و حداکثر اعشـار 2 در نظر گرفته شده.

 

خروجی:

آموزش C - توابع ورودی و خروجی در c

برای تعیین طول میدان رشته و اعداد اعشاری تا اینجا توضیح دادیم ، در آخر هم طول میدان اعداد صحیح  میمونه.

طول میدان اعداد صحیح

برای اعداد صحیح  از nd% استفاده میشه که n تعداد ارقام مورد نظر برای چاپ متغیر رو نشون میده.
مثال های زیاد تری میشه برای این بخش و تا اینجا زد ، که پیشنهاد میکنم خیلی هاشو خودتون توی ذهنتون با کد ها ایجاد کنید و برای خودتون مثال و پروژه تعریف کنید .بلخره لازمه یکم خلاقیت به خرج بدین!:D

چند تا مثال دیگه که خودتون تست کنید و خروجی هاشون رو ببینید:

 

 

آخرین تابع این قسمت از آموزش هم تابعی برای خوندن از صفحه کلیده:

تابع scanf :

این تابع برای دریافت اطلاعات از صفحه کلید مورد استفاده قرار میگیره. شکل کلی این تابع بصورت زیره:

مثال:مقدار وارد شده از صفحه کلید را بخوانید و در متغیری صحیح به نام x بریزید.

 

در تابع printf قرار بود مقدار از متغیر خونده بشه و از کدهای فرمت استفاده کردیم.

در اینجا قراره مقداری در متغیر ها ریخته بشه و عکس عمل تابع قبلی انجام بشه. در تابع scanf هم پس باید از کد فرمت استفاده کنیم. فقط توجه کنید که مقابل کد فرمت اسم متغیر با & اومده. که اون به معنی عملگر آدرس هستش و در کنار کدهای فرمت به کامپایلر میفهمونه که طبق چه فرمتی و در چه آدرسی مطلب نوشته و ذخیره بشه. همیشه در تابع scanf از عملگر آدرس در کنار نام متغیر استفاده میکنیم.

 

فایل سرعنوان این تابع هم دیدیم که stdio.h هستش و اگر اونو نزارین کامپایلر نمیشناسه کد رو و اررور میده (همه اینارو تست کنید، برنامه نویسی برای C به درک مفهوم پروژه و خلاقیت احتیاج داره)
توضیح درباره ی این سرعنوان و توابع ورودی و خروجی در c زیاده و این مطلب هم تا اینجا خودش طولانی شده دیگه!بقیش باشه جلسه بعد 🙂

یا علی…

 

جلسه بعدی و ادامه ی آموزش توابع stdio.h : تابع getch و دیگر توابع ورودی

حمیدرضا مودت

یک مهندس الکترونیک ، علاقه مند به یاد دادن و یاد گرفتن پیرامون دانش برق و الکترونیک

مطالب مرتبط