موضوعات وبسایت : برنامه نویسی
سوالات امتحان آیین نامه رانندگی

دستور count در زبان c

دستور count در زبان c

نویسنده : نازنین رحمانی | زمان انتشار : 24 اسفند 1400 ساعت 18:02

جهت انجام پروژه های دانشجویی و یا تمرین‌های برنامه نویسی رشته کامپیوتر میتوانید به آی دی تلگرام زیر پیام دهید

@AlirezaSepand



مقدمات زبان C

زبان C در سال ۱۹۷۲ توسط دنیس ریچی طراحی شد. این زبان تکامل یافته زبان BCPL است. زبان C++ از C نشات گرفته است. C++ علاوه بر ویژگی های C، ویژگی های جدیدی دارد که در C موجود نیست.

سوالات امتحان آیین نامه رانندگی

انواع داده ها:

هدف از برنامه نویسی، ورود داده ها به کامپیوتر، پردازش آنها و استخراج نتایج است. لذا داده ها نقش مهمی را در برنامه نویسی ایفا می کنند. در زبان C، پنج نوع داده وجود دارند که عبارتند از: char، int، float، double و void. نوع char برای ذخیره داده های کاراکتری مثل ‘a’، ‘b’، ‘x’ به کار می رود. نوع int برای ذخیره اعداد صحیح مثل ۱۲، ۱۳۰ ، ۱۷۹۰  به کار می رود. نوع float برای ذخیره اعداد اعشاری مثل ۱۳٫۹، ۱۲۰٫۸۶ به کار می رود و نوع double برای ذخیره اعداد اعشاری که بزرگتر از float باشند مورد استفاده واقع می شود. نوع void را در بخش های آتی تشریح خواهیم کرد.

با استفاده از کلماتی مثل signed (با علامت)، unsigned (بدون علامت)، long و short می توان انواع جدیدی را ایجاد کرد.

متغیرها:

متغیر نامی برای کلمات حافظه است که داده ها در آنها قرار می گیرند و ممکن است در طول اجرای برنامه تغییر کنند. برای مراجعه به متغیرها از نامشان استفاده می شود. لذا متغیرها امکان نامگذاری برای کلمات حافظه را فراهم می کنند.

قواعد نامگذاری متغیرها

برای نامگذاری متغیرها می‌توان از ترکیبی از حروف a تا z یا A تا Z، ارقام و خط ربط (-) استفاده کرد، به طوری که اولین کاراکتر آنها رقم نباشد. نام متغیر می‌تواند با هر طولی باشد ولی ۳۱ کاراکتر اول آن مورد استفاده قرار می‌گیرد.

تعریف متغیرها

قبل از به کارگیری متغیرها باید نوع آنها را مشخص کرد. نوع متغیر، مقادیری که متغیر می‌تواند بپذیرد و اعمالی که می‌توانند بر روی آن مقادیر انجام شوند را مشخص می کند. تعیین نوع متغیر را تعریف متغیر گویند. برای تعیین نوع متغیر، به صورت زیر عمل می‌شود:

;نام متغیر     نوع داده

برای تعیین نوع بیش از یک متغیر باید آنها را با کاما از هم جدا کرد.

مثال:

;Int a,b

;Float x,y

;Double d

;Char ch1, ch2

 مقدار دادن به متغیرها

برای مقدار دادن به متغیرها به سه روش می‌توان عمل کرد:

  1. هنگام تعریف متغیر
  2. پس از تعریف متغیر و با دستور انتساب (=)
  3. دستورات ورودی

مثال:

  1. ;Int x,y=5

;’Char ch1=’a’ , ch2= ‘m

  1. ;Int x,m

;X=12

;M=90

  1. ;Int a,b

;Cin>>a>>b

تعریف ثابتها

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

  1. استفاده از دستور #define
  2. استفاده از دستور const.

<مقدار>  <نام ثابت> define#

نامگذاری برای ثابت‌ها از قانون نامگذاری برای متغیرها تبعیت می‌کند. مقداری که برای ثابت تعیین می شود، نوع ثابت را نیز مشخص می کند. دقت داشته باشید که در انتهای دستور define# علامت ; قرار نمی گیرد. علتش این است که این دستور از دستورات پیش پردازنده است و نه دستور زبان C. پیش پردازنده یک برنامه سیستم است که قبل از ترجمه برنامه توسط کامپایلر، تغییراتی در آن ایجاد می کند. پیش پردازنده مقدار ثابت را که در دستور define# آمده است، به جای نام ثابت در برنامه قرار می دهد و این دستور در زمان اجرا وجود ندارد.

مثال:
#define   M    ۱۰۰

define  PI     ۳٫۱۴

برای تعریف ثابت ها با دستور const به صورت زیر عمل می شود:

<مقدار> = <نوع داده> <نام ثابت> const

نام ثابت مثل نام متغیرها انتخاب می شود که مقدار ثابت با علامت = در آن قرار می گیرد.

مثال:

;Const int n= 100, int count=50

اگر پس از تعریف ثابت‌ها، سعی کنید مقادیر آنها را عوض کنید، کامپایلر خطایی را به شما اعلان خواهد کرد.

عملگرها

عملگرها نمادهایی هستند که اعمال خاصی را انجام می‌دهند. به عنوان مثال، نماد “+” عملگری است که دو مقدار را با هم جمع می‌کند. مقادیری را که عملگرها بر روی آنها عمل می کنند، عملوند گویند. انواع عملگرهای زبان C عبارتند از: عملگرهای محاسباتی، عملگرهای رابطه‌ای، عملگرهای منطقی، عملگرهای بیتی، عمگر & و *

در ادامه عملگرهایی که بیشتر در این درس کاربرد دارند آورده شده‌اند:

 عملگرهای محاسباتی

عملگرهای محاسباتی، عملگرهایی هستند که اعمال محاسباتی را روی عملوندها انجام می‌دهند.

تقدم عملگرهای محاسباتی:

++ , —

(منهای یکانی)-

/ * %

+ –

نکته: اگر عملگرهای ++ و – در عبارات محاسباتی قبل از عملوند قرار گیرند، ابتدا این عملگرها عمل کرده و نتیجه آن در محاسبات شرکت می‌کند ولی اگر بعد از عملوند ظاهر شوند، مقدار فعلی عملوند مورد استفاده قرار گرفته و سپس عملگر بر روی عملوند عمل می‌کند.

مثال:

Int x,y;

X=10;

Y=++x;

Int x,y;

X=10;

Y=x++;

Int x,y,m;

X=10;

Y=15;

M=++x+y++;

عملگرهای رابطه‌ای

این عملگرها ارتباط میان عملوندها را مشخص می کنند. اعمالی مثل تساوی دو مقدار، کوچکتر یا بزرگتر بودن، مقایسه با صفر و غیره توسط عملگرهای رابطه‌ای مشخص می‌شود.

عملگرهای منطقی

عملگرهای منطقی بر روی عبارات منطقی عمل می‌کنند. عبارات منطقی دارای دو ارزش درستی و نادرستی‌اند. در زبان C، ارزش نادرستی با صفر و ارزش درستی با مقادیر غیر صفر  مشخص می‌شود.

نتیجه عملگر ! وقتی درست است که عملوند آن دارای ارزش نادرستی باشد. نتیجه عملگر && وقتی درست است که هر دو عملوند ارزش درستی داشته باشند و نتیجه عملگر || وقتی نادرست است که هر دو عملوند ارزش نادرستی داشته باشند (در بقیه موارد نتیجه آن ارزش درستی دارد)

در جدول زیر تقدم عملگرهای رابطه‌ای و منطقی آورده شده است:

عملگرهای ترکیبی

از ترکیب عملگرهای محاسباتی و علامت =، مجموعه دیگری از عملگرها ایجاد می شود که عمل محاسباتی و انتساب را انجام می‌دهند. تقدم این عملگرها پایین‌تر از سایر عملگرهاست.

عملگر آدرس

همانطور که قبلا اشاره گردید متغیرها نامی برای کلمات حافظه اند و کلمات حافظه نیز دارای شماره ردیف می باشند که ما آنها را آدرس می نامیم. با استفاده از عملگر & می توانیم به آدرس متغیرها دسترسی داشته باشیم.

مثال:

آدرس x در p قرار می گیرد.                                                ;P=&x

عملگر ()

پرانتزها عملگرهایی هستند که تقدم عملگرهای داخل خود را بالا می برند.

عملگرهای بیتی

عملگرهای بیتی برای تست کردن، مقدار دادن یا شیفت دادن و سایر اعمال بر روی مقادیری که در یک بایت (char) یا کلمه (int) ذخیره شده اند به کار می روند. عملگرهای بیتی را نمی توان با انواع float، double، long double و void یا سایر انواع پیچیده به کار برد.

با فرض آنکه p و q دو بیت از داده ها باشند، عملکرد هر یک از عملگرهای بیتی در جدول زیر آمده است. نتیجه عملگر & وقتی یک است که هر دو بیت یک باشند. نتیجه عملگر | وقتی صفر است که هر دو بیت صفر باشند. نتیجه عملگر ^ وقتی یک است که یکی از بیت ها صفر و دیگری یک باشد.

عملگرهای شیفت، بر روی یک عملوند عمل می کند و بیت های آنرا به سمت راست یا چپ شیفت می دهند. این عملگرها به صورت زیر به کار می روند:

تعداد شیفت >> متغیر

متغیر << تعداد شیفت

ساختار برنامه C

برنامه های زبان C، از مجموعه ای از دستورات و تعدادی تابع تشکیل می شود. هر تابع، برای حل بخشی از مساله نوشته می شود و دارای نام است. نامگذاری برای توابع از قوانین نامگذاری برای متغیرها تبعیت می کند. در اینجا هدف آن نیست که در مورد توابع بحث کنیم بلکه می خواهیم متذکر شویم که بدنه اصلی برنامه، تابعی به نام main() است. به عبارت دیگر، هیچ برنامه ای وجود ندارد که فاقد این تابع باشد.

علاوه بر تابع main()، توابع دیگری از قبل نوشته شده همراه کامپایلر زبان C ارائه می شوند و به وفور در برنامه ها مورد استفاده قرار می گیرند. در واقع، بسیاری از اعمال در برنامه نویسی با C، توسط این توابع از پیش نوشته شده انجام می شوند. به عنوان مثال، ورود داده ها از صفحه کلید و نوشتن آنها در صفحه نمایش، در C توسط توابعی انجام می شود که از قبل نوشته شده اند و همراه کامپایلر وجود دارند. این توابع و سایر اطلاعاتی که کامپایلر برای ترجمه برنامه به آنها نیاز دارد، در تعدادی از فایل ها به نام فایل های سرآیند[۱] قرار دارند. پسوند این فایل ها .h است. برای اتصال این فایل ها به برنامه از دستور #Include استفاده می کنیم. این دستور که از دستورات پیش پردازنده است، قبل از تابع main() قرار می گیرد.

#include <نام فایل سرآیند>

مثال:

#include <stdio.h>

نکته۱: سیستم عامل که اجرا کننده تابع main() است، می خواهد بداند که این تابع با موفقیت به پایان رسیده است یا خیر. برای این منظور بهتر است در پایان اجرای برنامه، مقداری به سیستم عامل برگردانده شود تا سیستم عامل متوجه شود که برنامه با موفقیت به پایان رسیده است. به همین دلیل، آخرین دستور برنامه C، دستور return 0; است. این دستور مقدار صفر را به سیستم عامل بر می گرداند و سیستم عامل متوجه می شود که برنامه با موفقیت اجرا شده است.

مقداری که به سیستم عامل برگردانده می شود، باید از نوع int باشد. لذا تابع main() که می خواهد مقداری از نوع int را برگرداند، خودش باید از نوع int باشد. به همین دلیل تابع main() را به صورت زیر در برنامه مورد استفاده قرار می دهیم:

Int main()

توجه به این نکته نیز ضروری است که در بعضی از گونه های زبان C، برنامه می تواند مقداری را به سیستم عامل برنگرداند. در این صورت باید نوع تابع main() را void تعریف کرد:

Void main()

اگر به این صورت عمل کنید، دستور return 0; را نباید به کار ببرید.

نکته ۲: دستورالعمل های برنامه با {  شروع شده و به } ختم می شوند.

نکته ۳: متغیرهای مورد نیاز برنامه، در ابتدای برنامه و بلافاصله پس از { تعریف می شوند.

نکته ۴: انتهای دستورات زبان C، با نقطه ویرگول مشخص می شود. این قاعده به صورت کلی برقرار است و تنها چند استثنا دارد. از جمله آنکه بعد از خطوط #include، تعریف تابع، }، {  نقطه ویرگول استفاده نمی شود.

نکته ۵: زبان C نسبت به حروف کوچک و بزرگ حساس است. بنابراین همواره باید کوچکی و بزرگی حروف را رعایت کرد. برای رعایت کردن بزرگی و کوچکی حروف، این قاعده کلی را مد نظر داشته باشید که کلیه دستورات با حروف کوچک است مگر در موارد خاص که به موقع معرفی خواهند شد.

مثال:

#include <stdio.h>

Int main()

{

اعلان متغیرها

دستورات اجرایی

Return 0;

}

ورودی و خروجی در زبان C

یکی از بخش های اصلی حل یک مساله گرفتن ورودی ها از کاربر و تولید خروجی مناسب است.

 دستور cout

جهت چاپ خروجی بر روی صفحه نمایش استفاده می شود.  این دستور در فایل iostream قرار دارد.

#include <iostream>

#include <conio.h>

Using namespace std;

Int main()

{

Cout<<”Hello World!”;

Getch();

Return 0;

}

بخش های #include مربوط به شامل شدن دستوراتی است که در فایل های مختلف وجود دارد، به عنوان مثال با نوشتن #include<iostream> به برنامه امکان استفاده از دستورات ورودی- خروجی را می دهیم. به عنوان مثال دستور cout که در کد بالا آمده است، در این فایل قرار دارد و یا دستور getch(); در فایل conio.h قرار دارد. معمولا کلیه این فایل ها (به جز iostream) پسوند h دارند که حرف اول header به معنای سرآیند است.

پس از این بخش اولیه، یک جمله قرار دارد: using namespace std;، این جمله فعال کننده دستورات iostream است. یعنی حتما باید این خط وجود داشته باشد تا بتوانیم از دستوراتی نظیر cout استفاده کنیم. پس از این خطوط به بدنه اصلی برنامه می رسیم. این بدنه با int main() شروع می شود و بین دو علامت {} قرار می گیرد.

دستور cin

جهت دریافت اطلاعات از ورودی صفحه کلید استفاده می شود.

مثال:

#include <iostream>

#include <conio.h>

Using namespace std;

Int main()

{

Double a,b,x;

Cout<<”Enter a,b to solve ax+b=0:”;

Cin>>a>>b;

X=-b/a;

Cout<<”x=”<<x;

Getch();

Return 0;

}

ترتیب گرفتن متغیرها از ورودی، به ترتیب از چپ به راست همانی است که در cin آمده است. در این مثال، اولین عددی که وارد می شود در a  و دومی در b قرار می گیرد.

برنامه ۱: برنامه ای بنویسید که با دریافت طول و عرض مستطیل از ورودی، محیط و مساحت آنرا محاسبه کند.

#include <iostream>

#include <conio.h>

Using namespace std;

Void main()

{

Int x,y,s,p;

Clrscr();

Cout<<”Enter Length and width:”;

Cin>>x>>y;

S=2*(x+y);

P= x*y;

Cout<<”circumference is ”<<s;

Cout<<”Area is”<<p;

Getch();

}

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

#include <iostream>

#include <conio.h>

Using namespace std;

Void main()

{

Int a,b,c;

Float avg;

Clrscr();

Cout<<”Please enter 3 numbers:”;

Cin>>a>>b>>c;

Avg=(float)(a+b+c)/3;

Cout<<”Average= ”<<avg;

Getch();

}

برنامه ۳: برنامه ای بنویسید که با دریافت شعاع دایره که عددی صحیح است، محیط و مساحت آنرا محاسبه کند.

#include <iostream>

#include <conio.h>

Using namespace std;

Void main()

{

Int r,s,p;

Clrscr();

Cout<<”Enter radius:”;

Cin>>r;

S=2 * 3.14 * r;

P= 3.14 * r * r;

Cout<<”circumference is ”<<s;

Cout<<”Area is”<<p;

Getch();

}

برنامه ۴: برنامه ای بنویسید که با دریافت دو متغیر از ورودی، مقدار آنها را با هم جابجا کند و در خروجی نمایش دهد.

#include <iostream>

#include <conio.h>

Using namespace std;

Void main()

{

Int x,y,temp;

Clrscr();

Cout<<”Please enter two numbers: ”;

Cin>>x>>y;

Cout<<”Numbers before change are ”<<x<<y;

Temp=x;

X=y;

Y=temp;

Cout <<”Numbers after change are ”<<x<<y;

Getch();

}

کار با انواع کاراکتری

همانطور که قبلا گفته شد، نوع کاراکتری با char مشخص می شود. اصولا نوع کاراکتر، همان نوع int است و تقریبا می توانند به جای هم استفاده شوند. اما باید توجه داشت نوع کاراکتر دو تفاوت با نوع int دارد:

  • نوع کاراکتر ظرفیت کمتری دارد و تنها یک بایت اندازه دارد.
  • در موقع چاپ نوع کاراکتر، به جای چاپ عدد، معادل اسکی آن چاپ می شود.

مورد اول به آن معناست که حداکثر تعداد اعدادی که نوع کاراکتر میتواند نگه دارد ۲۵۶ عدد است.

در خصوص مورد دوم باید گفت در کامپیوترهای اولیه که مفهوم فونت های مختلف به وسعت امروز وجود نداشت و در محیط متنی، تنها یک قلم برای چاپ بر روی صفحه نمایش وجود داشت، برای نگه داشتن متن یا نمایش آن از یک جدول کدبندی استفاده می شد که به هر حرف یا علامت، یک عدد نسبت می داد. مثلا به A، عدد ۶۵ و به B، عدد ۶۶ و … .  بنابراین اگر کسی می خواست بر روی صفحه نمایش رشته ABC456 چاپ شود، می بایست اعداد ۶۵, ۶۶, ۶۷, ۵۲,۵۳,۵۴ را در حافظه نمایشی کامپیوتر می نوشت تا کامپیوتر این اعداد را بر روی مانیتور بر اساس کد اسکی آنها نمایش دهد.

این جدول از زمان های قدیم تا به امروز در حافظه کامپیوترها وجود داشته است. حال اگر شما یک متغیر از نوع کاراکتر را برابر عددی مثل ۶۵ قرار دهید و سپس بخواهید با cout آنرا چاپ کنید، به جای چاپ عدد ۶۵، معادل حرفی آنرا از جدول اسکی پیدا کرده و آنرا چاپ می کند (یعنی حرف A). در صورتی که بخواهیم عدد واقعی داخل کاراکتر چاپ شود، باید هنگام cout آن را به صورت موقت به int تبدیل کنیم.

مثال:

#include <iostream>

#include <conio.h>

Using namespace std;

Void main()

{

Char ch=65;

Cout<<ch<<endl;

Ch++;

Cout<<”Code of character ”<ch<”=”<<int (ch);

Getch();

Return 0;

}

ورودی و خروجی کاراکتری

تا کنون برای گرفتن ورودی از کاربر و قرار دادن آن در یک متغیر، از cin استفاده می کردیم و کاربر پس از وارد کردن یک عدد و سپس زدن دکمه Enter، ورودی مورد نظر خود را وارد می کرد. حال اگر بخواهیم کاربر بدون زدن دکمه Enter و تنها با فشردن کلیدی از صفحه کلید، به برنامه ورودی کاراکتری بدهد، دیگر نمی توانیم از cin استفاده کنیم. دستوری که باید استفاده کنیم دستور getch() می باشد.

مثال:

#include <iostream>

#include <conio.h>

Using namespace std;

Void main()

{

Char ch;

Ch=getch();

Cout<<”the pressed key is ”<<ch<<endl;

Cout<<”and its code is ”<<int(ch)<<endl;

Getch();

Return 0;

}

آیا این مطلب برای شما مفید بود؟




ارسال نظر

نام


ایمیل


نظر