ما با متغیر، ساختارهای تصمیم و حلقهها آشنا شده ایم. اما این ابزارها بهتنهایی برای حل مسائل واقعی کافی نیستند؛ چون:
دادهها معمولاً تعدادشان زیاد استاطلاعات دنیای واقعی ساختیافته و ترکیبی هستندبرنامههای بزرگ بدون نظم، غیرقابل نگهداریمیشوند
بنابراین در این جلسه چهار مفهوم کلیدی معرفی میشود که ستون فقرات برنامهسازی هستند:
آرایه
(Array)
تابع
(Function)
ماتریس
(Matrix)
ساختار دادهای ساده
(Record / Struct)
آرایه مجموعهای از دادههای همنوع است که:
تحت یک نام مشترک ذخیره میشوند
هر عنصر با یک اندیس عددی شناخته میشود
در حافظه بهصورت پیوسته قرار میگیرند
نتیجهی این تعریف:
دسترسی به هر عنصر سریع است.
مدیریت دادههای حجیم ساده میشود.
اگر بخواهیم نمرات ۴۰ دانشجو را ذخیره کنیم:
بدون آرایه ۴۰ متغیر جداگانه
با آرایه یک ساختار منظم و قابل پردازش
نتیجه :
آرایه ابزار حل مسئلههایی است که با تعداد زیاد دادهیهمنوع سر و کار دارند.
هر آرایه سه مؤلفهی اصلی دارد:
نام
(Name)
نوع داده
(Data Type)
بازه اندیس
(Index range)
اندیسها معمولاً از صفر شروع میشوند و این یعنی:
این موضوع باعث میشود در حلقهها دچار خطای محدوده نشویم.
مقداردهی معمولاً با حلقه انجام میشود، چون:
تکرار زیاد است
ورودی اغلب از کاربر گرفته میشود
الگوریتم استاندارد:
تعریف متغیر اندیسی
تکرار از ابتدا تا انتهای آرایه
دریافت مقدار هر عنصر
این الگو پایهی تقریباً تمام برنامههای آرایهای است.
مثال ۱: محاسبه میانگین
الگوریتم :
مجموع = ۰
حلقه روی عناصر
مجموع ÷ تعداد عناصر
نتیجه:پیچیدگی زمانی این الگوریتم خطی است، یعنی با افزایش تعداد عناصر، زمان اجرا به همان نسبت افزایش مییابد.
اگر آرایه مرتب نباشد:
باید همه عناصر بررسی شوند
نتیجه قطعی: در بدترین حالت، تعداد مقایسهها برابر با تعداد عناصر آرایه است.
ماتریس آرایهای است که:
دارای دو اندیس است.
دادهها را به شکل جدولی ذخیره میکند.
به شکل روبه رو میتوان نشان داد :
زیرا بسیاری از دادههای واقعی:
بهصورت ردیف و ستون نمایش داده میشوند.
اصل قطعی:
هر ماتریس حداقل به دو حلقه نیاز دارد.
الگوی کلی:
این ساختار باعث میشود:
جابهجا نوشتن اندیسها
اشتباه در حدود حلقهها
استفاده از حلقه ناقص
نتیجه: بیش از ۷۰٪ خطاهای دانشجویان در ماتریسها مربوط به حلقههاست.
تابع بخشی از برنامه است که:
•وظیفهای مشخص دارد•مستقل از بخشهای دیگر عمل میکند•ورودی دریافت میکند•در صورت نیاز خروجی تولید میکند
بدون تابع
کد تکراری
خوانایی پایین
اشکالزدایی سخت
با تابع
ساختار منظمتوسعهپذیریاستفاده مجدد
نتیجه حرفهای: تابع ابزار مدیریت پیچیدگی برنامه است.
روش صحیح:
این دقیقاً همان تفکر الگوریتمی است که ما روی آن تأکید دارد.
تابع بدون خروجی :
انجام عملیات (چاپ، ثبت)
تابع با خروجی:
محاسبه و بازگرداندن نتیجه
نتیجهگیری: در طراحی حرفهای، توابع محاسبهگر بهتر است خروجی داشته باشند.
اطلاعات واقعی معمولاً شامل:
عدد
(Number)
رشته
(String)
مقدار اعشاری
(Decimal value)
ترکیب Struct با آرایه و تابعذخیره جداگانه آنها باعث:
بینظمی
Irregularity
خطا
(Error)
سختی پردازش
(Processing difficulty)
ساختار دادهای که:
چند نوع دادهی مختلف را
در برنامههای واقعی: