جستجو در سوالات؟
پیام ارسال شد بستن

آرایه،توابع،ماتریس و ساختار

مقدمه‌ای بر موضوعات جلسات قبل

ما با متغیر، ساختارهای تصمیم و حلقه‌ها آشنا شده ایم.
 اما این ابزارها به‌تنهایی برای حل مسائل واقعی کافی نیستند؛ چون:

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

بنابراین در این جلسه چهار مفهوم کلیدی معرفی می‌شود که ستون فقرات برنامه‌سازی هستند:

آرایه

(Array)

تابع

(Function)

ماتریس

(Matrix)

ساختار داده‌ای ساده

(Record / Struct)

آرایه

آرایه مجموعه‌ای از داده‌های هم‌نوع است که:

تحت یک نام مشترک ذخیره می‌شوند

هر عنصر با یک اندیس عددی شناخته می‌شود

در حافظه به‌صورت پیوسته قرار می‌گیرند

نتیجه‌ی این تعریف:

تحت یک نام مشترک ذخیره می‌شوند

هر عنصر با یک اندیس عددی شناخته می‌شود

در حافظه به‌صورت پیوسته قرار می‌گیرند

دسترسی به هر عنصر سریع است.

مدیریت داده‌های حجیم ساده می‌شود.

چرا به آرایه نیاز داریم؟

اگر بخواهیم نمرات ۴۰ دانشجو را ذخیره کنیم:

بدون آرایه 
۴۰ متغیر جداگانه

با آرایه 
یک ساختار منظم و قابل پردازش

نتیجه‌ :

آرایه ابزار حل مسئله‌هایی است که با تعداد زیاد داده‌یهم‌نوع سر و کار دارند.

ساختار منطقی آرایه

هر آرایه سه مؤلفه‌ی اصلی دارد:

نام

(Name)

نوع داده

(Data Type)

بازه اندیس

(Index range)

اندیس‌ها معمولاً از صفر شروع می‌شوند و این یعنی:

  • اولین عنصر = اندیس
  • آخرین عنصر = اندیس n-1

این موضوع باعث می‌شود در حلقه‌ها دچار خطای محدوده نشویم.

مقداردهی آرایه

مقداردهی معمولاً با حلقه انجام می‌شود، چون:

تکرار زیاد است

ورودی اغلب از کاربر گرفته می‌شود

الگوریتم استاندارد:

تعریف متغیر اندیسی

تکرار از ابتدا تا انتهای آرایه

دریافت مقدار هر عنصر

این الگو پایه‌ی تقریباً تمام برنامه‌های آرایه‌ای است.

پردازش آرایه‌ها

مثال ۱: محاسبه میانگین

الگوریتم :

مجموع = ۰

حلقه روی عناصر

مجموع ÷ تعداد عناصر    

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

نوع داده

الگوریتم :

مجموع = ۰

حلقه روی عناصر

مجموع ÷ تعداد عناصر    

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

بازه اندیس

اگر آرایه مرتب نباشد:

باید همه عناصر بررسی شوند

نتیجه قطعی: در بدترین حالت، تعداد مقایسه‌ها برابر با تعداد عناصر آرایه است.

آرایه‌های دوبعدی (ماتریس‌ها)

تعریف حرفه‌ای ماتریس

ماتریس آرایه‌ای است که:

دارای دو اندیس است.

داده‌ها را به شکل جدولی ذخیره می‌کند.

ماتریس آرایه‌ای است که:

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

تعریف حرفه‌ای ماتریس

زیرا بسیاری از داده‌های واقعی:

  • گزارش‌های مالی
  • کارنامه‌ها
  • جدول فروش

به‌صورت ردیف و ستون نمایش داده می‌شوند.

پردازش ماتریس‌ها (حلقه‌های تودرتو)

اصل قطعی:

هر ماتریس حداقل به دو حلقه نیاز دارد.

الگوی کلی:

  • حلقه بیرونی → حرکت روی ردیف‌ها
  • حلقه درونی → حرکت روی ستون‌ها

این ساختار باعث می‌شود:

  • تمام خانه‌های جدول پردازش شوند
  • هیچ داده‌ای جا نماند

تحلیل خطاهای رایج

جابه‌جا نوشتن اندیس‌ها

اشتباه در حدود حلقه‌ها

استفاده از حلقه ناقص

نتیجه:
 بیش از ۷۰٪ خطاهای دانشجویان در ماتریس‌ها مربوط به حلقه‌هاست.

توابع

تعریف مهندسی تابع

تابع بخشی از برنامه است که:

•وظیفه‌ای مشخص دارد
•مستقل از بخش‌های دیگر عمل می‌کند
•ورودی دریافت می‌کند
•در صورت نیاز خروجی تولید می‌کند

چرا برنامه‌نویسی بدون تابع مشکل‌ساز است؟

بدون تابع

کد تکراری

خوانایی پایین

اشکال‌زدایی سخت

با تابع

ساختار منظم
توسعه‌پذیری
استفاده مجدد

نتیجه حرفه‌ای:
 تابع ابزار مدیریت پیچیدگی برنامه است.

طراحی برنامه مبتنی بر تابع

روش صحیح:

  1. مسئله را به زیرمسئله تقسیم می‌کنیم
  2. برای هر زیرمسئله یک تابع می‌نویسیم
  3. برنامه اصلی فقط وظیفه‌ی هماهنگی دارد

این دقیقاً همان تفکر الگوریتمی است که ما روی آن تأکید دارد.

طراحی برنامه مبتنی بر تابع

تابع بدون خروجی :

انجام عملیات (چاپ، ثبت)

تابع با خروجی:

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

نتیجه‌گیری:
 در طراحی حرفه‌ای، توابع محاسبه‌گر بهتر است خروجی داشته باشند.

ساختارها

مشکل داده‌های غیرهم‌نوع

اطلاعات واقعی معمولاً شامل:

عدد

(Number)

رشته

(String)

مقدار اعشاری

(Decimal value)

ترکیب Struct با آرایه و تابعذخیره جداگانه آن‌ها باعث:

بی‌نظمی

Irregularity

خطا

(Error)

سختی پردازش

(Processing difficulty)

تعریف Struct / Record

ساختار داده‌ای که:

چند نوع داده‌ی مختلف را

  • در یک واحد منطقی
  • کنار هم نگه می‌دارد
    این یعنی:
    یک شیء واقعی را مدل‌سازی کرده‌ایم.

ترکیب Struct با آرایه و تابع

در برنامه‌های واقعی:

  • چندین Struct داریم
  • در قالب آرایه ذخیره می‌شوند
  • با توابع پردازش می‌شوند
    این ترکیب، کامل‌ترین شکل برنامه‌سازی پایه است.

«برنامه‌سازی خوب، نتیجه‌ی فکر کردن خوب است؛
 نه فقط نوشتن دستور.»

0
    0
    سبد خرید شما
    سبد خرید شما خالی است.بازگشت به فروشگاه