Structure در زبان C


پست امروز درباره structure ها در زبان C است.structure یا ساختار به ما اجازه می دهد یک نوع داده ترکیبی از تعدادی داده  مرتبط با یکدیگر بسازیم.برای روشن تر شدن این موضوع، structure را با پیاده سازی یک برنامه معرفی می کنیم.

قصد داریم یک برنامه برای کار با اعداد مختلط در زبان C بنویسیم.برنامه ما قادر به انجام برخی محاسبات معمول با اعداد مختلط خواهد بود.می توانیم برنامه را با نوشتن تابعی که این اعداد را نمایش دهد شروع کنیم.اعداد مختلط متشکل از دو بخش هستند; بخش حقیقی(Real) و بخش موهومی(Imaginary) .برنامه ما با داشتن این دو بخش باید عدد را به صورت زیر نمایش دهد:

\(z = x + iy\)

بدین منظور می توان برنامه را بصورت زیر نوشت:

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

تعریف structure

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

کد بالا ساختار complex را به کامپایلر معرفی می کند و نشان می دهد که این ساختار از دو عدد اعشاری تشکیل شده است.این تعریف را می توان قبل از تابع main برنامه نوشت.بعد از اینکار قادر خواهیم بود در سرتاسر برنامه از این ساختار استفاده کنیم.به کد زیر که در آن یک عدد مختلط با استفاده از این ساختار تعریف میشود دقت کنید.در کد زیر struct complex یک نوع داده مانند int یا float است.

در کد بالا به شیوه دسترسی به ویژگی های structure دقت کنید.حالا اگر بخواهیم با سه عدد کار کنیم می توانیم برنامه را اینطور بنویسیم.

ارسال یک structure به تابع

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

دقت کنید که در کد بالا structure به پاس با مقدار  به تابع ارسال شده است. برای بهینه تر شدن برنامه خوب است آن را به صورت پاس با ارجاع به تابع ارسال کنیم.(میتوانید در این مورد رجوع کنید به این صفحه).

باز گرداندن structure از تابع

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

به همین ترتیب تابعی برای محاسبه مزدوج این اعداد می نویسیم.

و همینطور تابعی برای محاسبه حاصلضرب این اعداد.

آرایه ای از structure ها

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

برای مثال برنامه زیر سه عدد را در این آرایه ریخته و آن ها را نمایش می دهد.

جمع بندی

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

کد کامل شده برنامه ما به صورت زیر است:

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

امیدوارم پست مفیدی بوده باشه.

1 comment
پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *