سی (زبان برنامهنویسی): تفاوت میان نسخهها
محتوای حذفشده محتوای افزودهشده
جز ربات: افزودن رده از مقاله همسنگ در ویکیانگلیسی |
Ryanblack993 (بحث | مشارکتها) بدون خلاصۀ ویرایش |
||
خط ۱:
{{دیگر کاربردها|سی}}
'''زبان برنامهنویسی سی''' به سخت افزار یا سیستم عامل خاصی وابسته نیست . این زبان خصوصیات و اجزا زبان های برنامه نویسی پیشرفته را همراه با کارآیی بالای زبان اسمبلی دربردارد و گاهی آن را یک زبان نیمه پیشرفته می دانند . </br>
C به گونه ای است که تطبیق نرم افزار از یک نوع کامپیوتر به نوع دیگر را آسان می کند. </br>
امروزه برنامه ریزی ریزکنترل ها و انواع [[سیپییو|سیپییوها]] و همچنین تولید سیستم عامل های جدید و نرم افزارهای کاربردی از طریق زبان C صورت می گیرد .
== تاریخچه زبان C ==
زبان C در سال 1972 توسط Dennis Ritchie در آزمایشگاه های Bell ساخته شد (بعدها این آزمایشگاه ها به AT&T Labs تبدیل شد) . سیستم عامل Unix هم قبلا در همان Bell Labs توسط زبان B نوشته شده بود.
C که از زبان B حاصل شده است، به منظور پیاده سازی سیستم عامل Unix روی یک کامپیوتر PDP-11 ارائه شد .Ritchie زبان B را گسترش داد و یک سری امکانات از جمله نوع دار کردن داده ها را به آن اضافه نمود و زبان حاصل را C نامید .
البته زبان B که توسط Ken Thompson در سال 1970 ساخته شده بود نیز از زبان BCPL حاصل شده که آن را Martin Ritchard ارائه داده بود. پس از آن که Ritchie و همکارش Kernighan در سال 1978 کتابی جهت آشنایی عموم با این زبان منتشر نمودند، توجه گسترده ی برنامه نویسان به آن جلب شد . به گونه ای که نسخه های مختلفی از آن روی کامپیوترهای مختلف به وجود آمد . همین امر موجب شد در سال 1983 انستیتوی استانداردهای ملی آمریکا (ANSI) کمیته ای برای استاندارد کردن این زبان تشکیل دهد . بالاخره در سال 1989 استاندارد آن تثبیت شد .
== ویژگیها ==
زبان برنامه نویسی C :
* تاثير گذارترين زبان برنامه نويسي در دنیای كامپيوتر است.
* یک زبان برنامه نویسی سطح میانی است.
* یک زبان ساخت یافته و قابل حمل است.
* دارای سرعت، قدرت و انعطاف پذیری بالایی است و هیچ محدودیتی را برای برنامه نویس به وجود نمی آورد.
* زبان برنامه نویسی [[سیستم]] است.
* زبان کوچکی است و تعداد کلمات کلیدی آن انگشت شمار است.
* نسبت به حروف حساس است و تمام کلمات کلیدی این زبان با حروف کوچک نوشته میشوند.
* در محیطهای توسعه دهنده مجتمع (Integrated Development Envoirements) صورت میگیرد.
BCPL و B، زبانهای ''بدون نوع دادهای'' هستند. اما در مقابل آن، در زبان C انواع مختلفی از نوعهای دادهای تدارک دیده شدهاست. نوعهای اصلی و پایهای انواع کارکتری و اعشاری اعداد با اندازههای مختلف هستند. علاوه بر این، سلسله مراتبی از انواع دادهای فرعی در زبان C وجود دارد که میتوان آنها را به همراه [[اشارهگر|اشارهگرها]] (Pointers)، [[آرایه (رایانه)|آرایه]]، [[ساختارها|ساختار]] (Structuers) و Unionها ایجاد کرد.
عبارتها، از عملگرها و عملوندها ساخته میشوند. هر عبارت از جمله، یک جایگزینی یا احضار یک تابع میتواند یک دستور باشد. اشاره گرها برای محاسبات روی آدرسها، که مستقل از ماشین هستند در نظر گرفته شدهاند.
C، یک زبان نسبتاً ''سطح پایین'' بهشمار میآید، این یک توصیف تحقیرآمیز نبوده، و صرفاً به این معنی است که C با همین نوع از اشیائی سروکار دارد که بیشتر کامپیوترها با آن سروکار دارند، نظیر کارکترها، اعداد و آدرسها.
این اشیا را میتوان با هم ترکیب کرد و میتوان روی آنها همان عملیات محاسباتی و منطقی را انجام داد که توسط یک کامپیوتر حقیقی پیاده سازی کرد.
سیستمعامل [[سیمبیان]] (symbian) با زبان C نوشته شده و بهمین دلیل این زبان بهعنوان زبان اولیه برای برنامه نویسی در آن انتخاب شدهاست.C بیشترین امکان دسترسی به APIهای سیستمعامل سیمبیان را فراهم میکند و بهترین کارکرد در حافظه و سرعت اجرا را داراست.
برای مثال این زبان قدرتمند را میتوان در زمینههای زیر بکار گرفت:
* برنامههایی که مانند سرور عمل میکنند. برای نمونه برنامههایی که در پشت صحنه کار میکنند و یکی از بخشهای سیستم- به عنوان مثال [[درگاه]]های COM - را مدیریت میکنند.
* PLUG inها که محیطی را بر پایه سیستمعامل ایجاد میکنند. بطور مثال برنامهای که فایلهای html را به فایلهای word سیمبیان تبدیل میکند از کتابخانه مبدل سیستمعامل استفاده میکند.
* درایورهای دستگاه که با Kernel کار متعامل میکنند و...
استفاده از زبان C در سیستمعامل سیمبیان بر روی مناسب بودن کارکرد گوشیها متمرکز شدهاست، که بدین معناست که چند تا از عملگرهای استاندارد زبان C مانند مدیریت [[استثنا (برنامهنویسی)|استثناها]] قابل استفاده در برنامه نویسی سیمبیان نیستند.
== ورودی و خروجی ==
* به خواندن داده ها از طریق دستگاههای ورودی، ورود اطلاعات به کامپیوتر میگویند.
* زبان C شامل توابع متنوعی جهت خواندن داده ها است.
* کاراکترها و اعدادی که توسط کاربر تایپ میشوند، داده های ورودی برنامه ها را تشکیل میدهند.
* نمایش اطلاعات به کاربر توسط کامپیوتر را خروجی مینامند.
* زبان C به کمک دستورهای خروجی امکان نمایش اطلاعات به روی کامپیوتر و چاپگر را فراهم میکند.
=== دستورهای خروجي ===
برای نوشتن یک متن ساده به روی مانتیور از شکل کلی روبرو استفاده میگردد: printf(" ---- "); 1
</br>
به عنوان مثال جهت چاپ متن "Hello World" از دستور روبرو استفاده میگردد : printf("Hello World"); 2
== مدیریت حافظه ==
یکی از مهمترین توابع زبانهای برنامه نویسی فراهم آوردن ابزاری جهت ادارهٔ حافظه و اشیا ذخیره شده در حافظه میباشد. سی دو راه اصلی برای تخصیص حافظه به اشیا را فراهم میکند.
* تخصیص حافظه به صورت اتوماتیک: اشیا موقتی میتوانند بر روی پشته ذخیره شوند، این فضای اختصاص داده شده به اشیا به صورت اتوماتیک پس از خارج شدن از بلاکی که اشیا در آنها تعریف شدهاند، آزاد و مجددا قابل استفاده خواهد بود.
* تخصیص حافظه به صورت دینامیک : اندازههای اختیاری از بلاکهای حافظه میتوانند توسط توابع کتابخانهای همانند تابع malloc از ناحیهای از رم موسوم به هیپ در هنگام اجرای برنامه درخواست بشود. این بلاکهای حافظه تا زمانیکه متعاقبا توسط تابع free به سیستم باز گردانده نشوند در حافظه باقی میمانند. برای تخصیص حافظه به صورت پویا(دینامیک) باید آدرس بلوک حافظهای که توسط تابع malloc گرفته میشود را در یک اشاره گر ذخیره کنیم.
==کلمات کلیدی==
{{چپچین}}
auto
, double
, int
, struct
, break
, else
, long , switch , case , enum , register , typedef , char , extern , return , union , const , float , short , unsigned , continue , for , signed , void , default , goto , sizeof , volatile , do , if , static , while
{{پایان چپچین}}
==تابع:==
برنامه ای است که برای حل بخشی از مسئله نوشته می شود.
با استفاده از توابع می توان برنامه های ساخت یافته نوشت که وظایف این نوع برنامه ها توسط بخش های مستقلی که تشکیل دهنده برنامه اند انجام می شود. این بخش های مستقل همان توابع هستند.
'''امتیازهای برنامه نویسی ساخت یافته عبارتند از:'''
1.نوشتن برنامه های ساخت یافته آسان است، زیرا برنامه های پیچیده به بخش های کوچک تری تقسیم می شوند و هر بخش توسط تابعی نوشته می شود. دستورالعمل ها و داده های موجود در تابع، مستقل از سایر بخش های برنامه است.
2.همکاری بین افراد را فراهم می کند.به طوری که افراد می توانند بخش های مختلفی از برنامه را بنویسند.
3.اشکال زدایی برنامه های ساخت یافته ساده تر است.اگر برنامه اشکالی داشته باشد، بررسی تابعی که این اشکال در آن به وجود آمده ساده است.
4.برنامه نویسی ساخت یافته موجب صرفه جویی در وقت می شود.
'''توابع کتابخانه ای'''
C دارای توابعی است که از قبل نوشته شده اند، و توابع کتابخانه ای نامیده می شوند .در واقع فرایند هایی که پر کاربرد هستند و در اغلب برنامه ها مورد استفاده قرار می گیرند به صورت توابع مستقل قبلاً نوشته شده اند.
'''نوشتن توابع'''
برای نوشتن تابع باید اهداف مشخص باشد.
هر تابع سه بخش دارد:فراخوانی، الگوی تابع، تعریف تابع
تعریف تابع مجموعه ای از دستورهاست که عملکرد تابع را مشخص می کند.
فراخوانی تابع دستوری است که تابع را فراخوانی می کند که با نام تابع انجام می شود.
<نوع تابع>یکی از چیزهایی است که توسط کاربر تعریف می شود.
'''نکات مهم در استفاده از توابع'''
1.الگوی تمام توابع را قبل از تابع ()main اعلان کنید.(البته می توانید در خود تابع ()main نیز اعلان کنید.)
2.نوع توابع را تعیین نمایید.
3.برای اجرای توابع آنها را با نامشان فراخوانی کنید.
4.متغیرهای مورد نیاز توابع را در داخل توابع تعریف کنید.
5.تعریف تابع در داخل تابع دیگر امکان پذیر نیست.
6.هنگام فراخوانی تابع دقت داشته باشید که تعداد و نوع پارامترها وآرگومان ها یکسان باشد.
7.توابع از نظر تعداد مقادیری که می توانند به تابع فراخوان برگردانند به سه دسته تقسیم می شوند 1.توابعی که هیچ مقداری برنمی گردانند 2.توابعی که یک مقدار برمی گردانند3.توابعی که چندین مقدار برمی گردانند.
8. هنگام اعلان الگوی توابع، نیاز به ذکر اسامی پارامترها نیست و ذکر نوع آن ها کفایت می کند.
9.اگر تابعی فاقد آرگومان است به جای لیست آرگومان ها کلمه void قرار دهید.
'''نکاتی درباره نوشتن توابع'''
1.ابتدا بدون پرداختن به جزئیات پیاده سازی توابع، آرگومان ها و نتیجه ای که از توابع انتظار دارید، مشخص کرده و برنامه اصلی را بنویسید.
2.توابع را طوری طراحی وپیاده سازی کنید که هر تابع فقط به آنچه که نیاز دارد دسترسی داشته باشد و بقیه قسمت های برنامه و سایر اطلاعات توسط توابع غیر مرتبط قابل دستیابی نباشد.
3.برای ارتباط بین توابع از آرگومان ها و پارامترها استفاده کنید.
==مثال ها==
1.تابعی بنویسید که درجه فارنهایت را به سانتیگراد تبدیل کند؟
2.تابعی بنویسید که مقدار صحیح و غیر منفی k را دریافت کرده وk! را محاسبه و ارسال نماید.
3.تابعی بنویسید که سه مقدار صحیح را دریافت کند و کوچک ترین آن ها را پیدا نموده و ارسال کند.
4.تابعی بنویسید که یک مقدار صحیح و یک مقدار اعشار ساده را دریافت کند وچنانچه اختلاف دو عدد کمتر از 0.0001باشد حرف t و در غیر این صورت حرف fرا بازگرداند.
5.تابعی بنویسید که یک عدد صحیح دریافت کند و اول بودن یا نبودن آن را مشخص کند و در صورت اول بودن 1 و در غیر این صورت 0 را ارسال کند.
6.برنامه ای بنویسید که هریک از اعداد1 تا 10 را همراه با فاکتوریل آن ها مقابل هم چاپ کند.
7.برنامه ای بنویسید که سه مقدار صحیح را خوانده و حداقل آن ها را چاپ کند.(با استفاده از تابع)
8.تابعی بنویسید که مقدار π را از فرمول (...+7/1-5/1+3/1-1)4=π تا زمانی که آخرین عبارت از0.0001 بیشتر است بدست آورده و ارسال کند.
9.برنامه ای نویسید که با استفاده از تابع مثال قبل مقدار عدد π را چاپ کند.
10.تابعی بنویسید که مقدار عدد π را از فرمول (...+7/1-5/1+3/1-1)4=π تا n جمله به دست آورده و چاپ کند.
11.برنامه ای بنویسید که ابتدا سری اعداد فیبوناتچی را تا جمله دوازدهم چاپ کرده و سپس یک عدد از ورودی بخواند و جزء سری بودن یا نبودن آن را بررسی و اعلام کند.(با استفاده از دو تابع)
12.برنامه ای بنویسید که معکوس 123 را چاپ کند.
13.برنامه ای بنویسید که متنی را دریافت کند و تمام حروف a را که در متن وجود دارد را به A تبدیل کند و متن را دوباره چاپ کند.
14.برنامه ای بنویسید که دو ماتریس را از کاربر بگیرد سپس آن ها را در هم ضرب کرده و نمایش دهد.
==متغیرها==
'''متغیرهای محلی (local) :'''
متغیرهایی که در بدنه تابع معرفی می شوند، متغیرهای محلی هستند که فقط در همان تابعی که معرفی شده اند قابل استفاده هستند. پارامترهای تابع نیز که در عنوان تابع معرفی شده اند متغیرهای محلی هستند.
'''متغیرهای سراسری (global):'''
این متغیرها را می توان خارج از توابع مثلاً ابتدای برنامه قبل از تعریف تابع Main یا قبل از تعریف هر تابع دیگر معرفی کرد. متغیرهایی که خارج از توابع معرفی شوند، توسط کلیه توابعی که از آن به بعد تعریف شده اند، قابل استفاده اند.
پس از هر فراخوانی همین که اجرای تابع خاتمه یافت، متغیرهای محلی آن از بین می روند.ولی متغیرهای سراسری تا پایان اجرای تابع mainفعال و قابل استفاده اند.
'''حوزه دسترسی به متغیر:'''
محدوده ای که هر متغیر در آن قابل دسترسی است حوزه دسترسی نامیده می شود. متغیرهایی که به صورت محلی در ابتدای تابع معرفی شده اند دارای حوزه دسترسی تابع هستند. متغیرهایی که در یک بلوک به طور محلی تعریف شده اند دارای حوزه دسترسی بلوک هستند . متغیرهایی که خارج از توابع معرفی شده اند دارای حوزه دسترسی فایل می باشند.
کلاس های حافظه دارای چهار نوع اتوماتیک، ثبات، خارجی، ایستا هستند که به ترتیب توسط کلمات auto ،، register ، extern و static مشخص می شوند.
==کلاس های حافظه==
'''کلاس حافظه اتوماتیک'''
متغیرهای دارای این کلاس خصوصیات زیر را دارند:
فقط در همان بلوکی که معرفی شده اند قابل دسترسی هستند.
طول عمر آن ها به اندازه طول عمر بلوکی است که در آن معرفی شده اند.یعنی هنگام ورود به بلوکی که در آن معرفی شده ایجاد می شوند، و با خاتمه اجرای بلوک از میان می روند.
چنانچه هنگام معرفی به آن ها مقدار اولیه داده نشده باشد، دارای مقدار معینی نیست.
'''کلاس حافظه ثبات'''
در رابطه با متغیرهایی که با کلاس حافظه ثبات معرفی می شوند، به کامپیوتر پیشنهاد می شود که آن ها را در ثبات پردازنده قرار دهد.اگر پردازنده نتواند ثبات آزادی در اختیار متغیر قرار دهد، کلاس حافظه ثبات بودن آن را ندیده می گیرد و با آن مانند یک متغیر با کلاس حافظه اتوماتیک برخورد می گردد. بنابراین بهتر است فقط متغیرهایی با کلاس حافظه ثبات معرفی شوند که از آن ها زیاد استفاده می گردد. مثلاً متغیرهایی که وظیفه کنترل حلقه تکرار را دارند از این دسته می توانند باشند.
خصوصیات متغیر دارای کلاس حافظه ثبات:
فقط در همان بلوکی که معرفی شده است قابل دسترسی است.
طول عمر آن به اندازه طول عمر بلوکی است که در آن معرفی شده است. یعنی هنگام ورود به بلوکی که در آن معرفی شده ایجاد می شود، و با خاتمه اجرای بلوک از میان می رود.
چنانچه هنگام معرفی به آن مقدار اولیه داده نشده باشد، دارای مقدار معینی نیست.
'''کلاس حافظه خارجی'''
کلاس حافظه متغیرهایی می تواند خارجی باشد که بیرون تابع معرفی شده اند.
خصوصیات متغیر دارای این کلاس:
در کلیه توابعی که بعد از معرفی آن قرار دارند، قابل دسترسی هستند.
طول عمر آن تا پایان عمر کل برنامه است . یعنی هنگام معرفی ایجاد می شود، و با خاتمه اجرای تابع main از میان می رود.
چنانچه هنگام معرفی به آن مقدار اولیه داده نشده باشد، داری مقدار اولیه صفر است.
'''کلاس حافظه ایستا'''
متغیری که درون تابع به طور ایستا معرفی شده باشد، مانند سایر متغیرهای محلی، دارای حوزه دسترسی تابع می باشد ولی به خاتمه اجرای تابع از میان نمی رود و مقدار خود را حفظ می کند. به این ترتیب در ورود مجدد به تابع، آخرین مقدار آن محفوظ و دوباره قابل استفاده می باشد.متغیرهای دارای کلاس حافظه ایستا هم می توانند درون تابع معرفی شوند و هم می توانند متغیر سراسری باشند.
خصوصیات این کلاس حافظه:
چنانچه متغیر محلی باشد، تنها در تابعی که معرفی شده است قابل دسترسی می باشد. اگر متغیر سراسری باشد، فقط در فایلی که معرفی شده است، آن هم توسط توابعی که پس از آن تعریف شده اند قابل دسترسی می باشد.
طول عمر آن تا پایان عمر کل برنامه است. یعنی هنگام معرفی ایجاد می شود، و با خاتمه اجرای تابع main از میان می رود.
چنانچه هنگام معرفی به آن مقدار اولیه داده نشده باشد، دارای مقدار اولیه صفر است.
== استفاده از آرایه ها در زبان C ==
بسیاری از موارد پیش می آید که برنامه نویس نیاز به استفاده از تعداد زیادی متغیر پیدا می کند. مثلا اگر بخواهیم جملات 1 تا 100 سری فیبوناچی را برای استفاده ذخیره کنیم، به صد متغیر نیاز داریم. تعریف این صد متغیر به صورت مستقل و با نام های جداگانه کاری سخت و طاقت فرساست و البته معقولانه نیست. به همین خاطر در زبان C قابلیتی پیش بینی شده تا بتواند تعداد دلخواهی متغیر از یک نوع را به راحتی ایجاد کرد.
به این متغیر ها که در حافظه پشت سر هم قرار می گیرند و همگی از یک نوع هستند آرایه (Array) می گویند. آرایه ها کاربردهای بسیار زیادی دارند و همانند دنباله ها در ریاضی عمل می کنند. همان طور که در ریاضی برای مشخص کردن یک جمله از دنباله از اندیس استفاده می کنیم، در C نیز برای مشخص کردن یک متغیر خاص از اندیس استفاده می شود.
همان طور که مشاهده می کنید خانه ی پنجم شماره ی 4 دارد و این بدین خاطر است که خانه ها از شماره ی 0 تا n-1 (که n تعداد خانه هاست) شماره گذاری می شود. پس باید به این مورد دقت کرد. مورد دیگر این که شماره ی خانه در [] قرار می گیرد. درون علامت آکلاد می توان عبارت نیز قرار داد.
همان طور که گفته شد در حافظه ی رایانه خانه های آرایه پشت سر هم قرار می گیرند. اندازه ی هر خانه به اندازه ی نوع تعریف شده است. مثلا در مثال قبل اگر int دو بایت اشغال کند آرایه ی array، در کل 20 بایت از حافظه اشغال خواهد کرد. این که خانه ها پشت سر هم قرار میگیرند ویژگی کارایی است که در بحث اشاره گر ها به کار می آید.
== اشاره گرها در C ==
یکی از مهم ترین قابلیت های زبان C، امکان استفاده از اشاره گر هااست. اشاره گر ها کارایی، قدرت و انعطاف پذیری برنامه را بیش تر می نمایند. علاوه بر فراهم آوردن امکان نوشتن کدهای برنامه ی کوتاهتر، غنی تر و کاراتر، گاهی مواردی پیش می آید که انجام محاسبات مورد نیاز برنامه تنها توسط اشاره گر ها امکان پذیر می باشد. به همین دلیل، از این توانایی در برنامه های C زیاد استفاده می گردد.اگر چه در ظاهر کار با اشاره گر ها مشکل است و درک برنامه ای که از آن ها استفاده شده است ساده نیست، اما در حقیقت اگر از آن ها به درستی استفاده گردد، وضوح و سادگی برنامه افزایش می یابد.
=== اشاره گر چیست؟ ===
روش مستقیم دسترسی به حافظه برای ذخیره سازی مقداری در آن، و یا بازیابی محتوای ذخیره شده، استفاده از نام متغیر است. همین که متغیری معرفی شد، سیستم بر اساس نوع اعلام شده، تعداد بایت لازم را به آن اختصاص می دهد و آدرس متغیر، شماره اولین بایت از مجموعه ی اختصاص یافته است. پس از آن به راحتی از طریق نام متغیر به محل مورد نظر دسترسی یافته، محتوای آن پردازش می گردد.
اما گاهی لازم می شود به جای نام، آدرس متغیر در اختیار برنامه نویس قرار گیرد تا از طریق آن دستیابی به محل مربوطه صورت گیرد. در زبان C، به راحتی می توان آدرس یک متغیر را در اختیار داشت و مقدارش را در حافظه ذخیره نمود تا در زمان نیاز، توسط آن به صورت غیر مستقیم به محل مورد نظر دست یافت.
برای این منظور از متغیر اشاره گر استفاده می گردد. متغیر اشاره گر، متغیری است که محتوای آن آدرس یک متغیر دیگر است.
== انواع متغیرها و داده ها در C ==
زبان C قابلیت های زیادی برای کار با داده ها دارد. تمام انواع عددی و غیر عددی به صورت کارا در سی یافت می شوند. در زیر به اختصار به بعضی اشاره می شود:
=== int ===
این نوع داده از نوع عددی صحیح (integer) است. در حافظه 2 بایت اشغال می کند ولی برخی کامپایلرها برای آن 4 بایت در نظر می گیرند.
=== float ===
این نوع داده از نوع اعشاری است. معمولا در حافظه 4 بایت اشغال می کند و اعداد اعشاری مثبت و منفی را در خود جای می دهد.
=== double ===
این نوع داده برای استفاده در اعداد اعشاری است که مقدار بیش تری فضا باید اشغال کنند. این نوع داده نیز 8 بایت اشغال می کند.
=== char ===
این نوع داده برای ذخیره ی کاراکتر استفاده می شود و 1 بایت اشغال می کند.
=== long int ===
برای داده های صحیحی که در حافظه فضای بیش تری اشغال می کنندو 4 بایت اشغال می کند.
=== short int ===
برای داده های صحیح که نیاز به حافظه ی زیادی ندارند قابل استفاده است.
== ساختارها در C ==
نوع داده هایی که تا به حال به آن ها برخورد داشته ایم مانند int,float,char,... در زبان C به صورت استاندارد تعریف شده اند و برنامه نویس مستقیما از آن ها برای تعیین نوع استفاده می نماید. مثلا C تعداد بایت هایی که float اشغال می شود. و فرم قرار گرفتن مقدار در حافظه مربوطه، مشخص نیست. ساختار ها هنوع دیگری از انواع داده ها می باشند با این تفاوت که توسط برنامه نویس تعریف می شوند.
=== ساختار چیست؟ ===
در بسیاری از برنامه ها، گروهی از داده ها در ارتباط با یکدیگر می باشند، به گونه ای که مجموعه ی آن ها یک واحد اطلاعاتی جامع تری را تشکیل می دهد. به عنوان مثال، اطلاعات دانشجو یک واحد اطلاعاتی مرکب است که شامل داده هایی نظیر نام، نام خانوادگی، شماره ی دانشجویی، معدل و ... می باشد. معمولا به مجموعه ای از داده ها که یک واحد اطلاعاتی کامل تر را تشکیل می دهند، یک رکورد گفته می شود و هر یک از این داده ها یک فیلد (field) نامیده می شود. خصوصیت یک رکورد آن است که نوع هر یک از فیلدهایش می تواند با نوع سایر فیلدهای آن متفاوت باشد.
در زبان C برای ذخیره و پردازش یک رکورد، از نوع داده ای به نام ساختار (structure) استفاده می شود. ساختار یک نوع داده ی مرکب است که مجموعه ای از چند نوع داده می باشد. داده های تشکیل دهنده ساختار را اعضا (members) آن می نامند. در حقیقت عضوهای ساختار، همان فیلدهای رکورد هستند.
نوع ساختار به صورت استاندارد تعریف نشده است. برنامه نویس بر اساس نوع و تعداد عضوهای تشکیل دهنده ی ساختار، آن را در متن برنامه تعریف می کند
==خود فراخوانی==
به فرایندی گفته می شود که طی آن از درون یک تابع همان تابع فراخوانی گردد.
== مثال هایی از برنامه نویسی به زبان C ==
برای آشنایی بیش تر با تمرینات C برنامه هایی در زیر برای شما قرار می گیرد:
1. برنامه ای که ضرب دو عدد m رقمی در n رقمی را انجام می دهد.
[https://docs.google.com/document/d/1ON5fnsGnSPFkbR-dzcP-wBkd7h2THcITwuD7tCmF2Pk/edit?hl=en m multi n]
2. برنامه ای که ماتریسی 6*6 را می خواند و سپس اولین بزگترین مقداری که از میانگین داده ها کوچک تر است با شماره ی خانه ی آن چاپ می کند.
[https://docs.google.com/document/d/1-YtopqlPX-5En-Ghdx0XJvFw2n9num8IVWg_HajCCTw/edit?hl=en MAX of means]
3. برنامه ای که ماتریسی 4*5 را می خواند سپس خود آن و ترانهاده اش را چاپ می کند، سپس حاصل ضرب آن ها را نیز به دست می آورد.
[https://docs.google.com/document/d/1ummTmPXXwE2IZmmiC6l_toYRx3DkiF5pNW0sdPxUGLA/edit?hl=en Matt Multi]
== منابع ==
* ویکیپدیای انگلیسی، C programming language .
* برنامه نویسی به زبان C، تالیف : هایده علی آبادی (عضو هیئت علمی دانشگاه صنعتی امیرکبیر)
*کتاب مهندس جعفر نژاد قمی
*کتاب برنامه نویسی با c، تالیف : بایرون اس.گاتفرید ترجمه : حسین ابراهیم زاده قلزم
[[رده:اختراعات آمریکایی]]
سطر ۱۰۱ ⟵ ۳۰۴:
[[رده:نرمافزارهای چندسکویی]]
[[رده:زبانهای برنامهنویسی رویهای]]
[[رده:زبان برنامهنویسی سی]]
[[af:C (programmeertaal)]]
سطر ۱۳۲ ⟵ ۳۳۲:
[[en:C (programming language)]]
[[eo:C (programlingvo)]]
[[es:
[[et:C (programmeerimiskeel)]]
[[eu:C (programazio lengoaia)]]
سطر ۱۴۰ ⟵ ۳۴۰:
[[gl:C (programación)]]
[[he:C (שפת תכנות)]]
[[hi:सी (प्रोग्रामिंग भाषा)]]
[[hr:C (programski jezik)]]
[[hu:C (programozási nyelv)]]
[[hy:C (ծրագրավորման լեզու)]]
[[ia:C (linguage de programmation)]]
[[id:C (bahasa pemrograman)]]
سطر ۱۴۸ ⟵ ۳۴۹:
[[it:C (linguaggio)]]
[[ja:C言語]]
[[jv:C (basa pamrograman)]]
[[ka:C (პროგრამირების ენა)]]
[[kab:C (tameslayt)]]
سطر ۱۵۴ ⟵ ۳۵۶:
[[ku:C (zimanê bernamekirinê)]]
[[la:C (lingua programmandi)]]
[[lo:ພາສາຊີ]]
[[lt:C (kalba)]]
[[lv:C (programmēšanas valoda)]]
سطر ۱۵۹ ⟵ ۳۶۲:
[[mk:C (програмски јазик)]]
[[ml:സി (പ്രോഗ്രാമിങ് ഭാഷ)]]
[[mn:
[[mr:सी
[[ms:C (bahasa pengaturcaraan)]]
[[nl:C (programmeertaal)]]
سطر ۱۷۸ ⟵ ۳۸۱:
[[sr:C (програмски језик)]]
[[sv:C (programspråk)]]
[[ta:சி
[[te:సీ]]
[[th:ภาษาซี]]
[[tl:C (wikang pamprograma)]]
[[tr:C (programlama dili)]]
[[tt:Си (программалау теле)]]
[[uk:C (мова програмування)]]
[[vi:C (ngôn ngữ lập trình)]]
|