Problem

1/10

آرایه ها (لیست ها). معرفی

Theory Click to read/hide

ذخیره‌سازی داده

فرض کنید شما یک بازی کامپیوتری به نام "User Hostile" ساخته اید که در آن بازیکنان با یک رابط کامپیوتری پیچیده و غیر دوستانه رقابت می کنند. اکنون باید برنامه ای بنویسید که فروش ماهانه این بازی را در یک دوره پنج ساله ردیابی کند. یا فرض کنید باید کارت های تجاری هکر قهرمان را موجودی کنید.
خیلی زود به این نتیجه خواهید رسید که برای ذخیره و پردازش اطلاعات به چیزی بیش از انواع داده های اولیه ساده نیاز دارید.
 

آرایه ها (لیست ها). مقدمه

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

هنگام کار با آرایه ها، باید چگونه حل سه کار را بیاموزید:
ایکس تخصیص حافظه با اندازه مورد نیاز برای یک آرایه
ایکس داده ها را در سلول مورد نظر بنویسید
ایکس خواندن داده ها از سلول


آرایه ها در پاسکال


پاسکال به طور سنتی از آرایه های ثابت مانند

استفاده می کند <پیش> var a: آرایه [1..10] عدد صحیح؛

مرزهای یک آرایه باید توسط ثابت ها تنظیم شوند و شما نمی توانید اندازه آرایه را در طول عملیات برنامه تغییر دهید. اما شما می توانید نه تنها از یک عدد صحیح، بلکه مثلاً از یک کاراکتر یا نوع شمارش شده نیز یک شاخص بسازید. به عنوان مثال، برای شمارش وقوع هر حرف، می توانید از یک آرایه

استفاده کنید <پیش> var LettersCount: آرایه ['a'..'z'] از عدد صحیح;

و تا حد دلخواه با آن کار کنید:

<پیش> تعداد حروف['z'] := 1; تعداد حروف['d'] := تعداد حروف['d'] + 1;

معایب چنین آرایه‌هایی مشخص است: اگر از قبل مشخص نباشد که چند عنصر باید استفاده شود، حداکثر اندازه حافظه برای آرایه تخصیص داده می‌شود. در نتیجه، در بیشتر موارد ما «برای آینده ذخیره می‌کنیم» و گاهی اوقات این «ذخیره» معلوم می شود کافی نیست به همین دلیل است که چنین آرایه هایی  استاتیک نامیده می شوند: اندازه آنها ثابت است و باید در مرحله کامپایل برنامه تنظیم شوند. با این حال، در پاسکال   آرایه های پویا وجود دارد که اندازه آنها نه تنها قابل تنظیم است، بلکه در طول برنامه نیز تغییر می کند. این آرایه ها و مزایای استفاده از آنها هستند که بیشتر مورد بحث قرار خواهند گرفت.

ایجاد آرایه

هنگام ایجاد یک آرایه، فضا به حافظه اختصاص داده می شود (تعداد مشخصی سلول) <پیش> آرایه‌ها می‌توانند ایجاد شده با فهرست کردن عناصر: <پیش> var a: آرایه عدد صحیح؛ SetLength(a, 3); a[0] := 1; a[1] := 2; a[2] := 3;
2) آرایه ها می توانند از هر نوع داده ای تشکیل شوند - اعداد صحیح یا واقعی، رشته های کاراکتر  <پیش> var a: آرایه char; SetLength(a, 3); a[0] := 'a'; a[1] := 'b'; a[2] := 'c'; 3) یک آرایه همیشه "می داند" اندازه شما تابع  length برای تعیین اندازه یک آرایه استفاده می شود. اغلب اندازه آرایه در یک متغیر جداگانه ذخیره می شود تا برنامه به راحتی قابل تغییر باشد تا با اندازه آرایه متفاوت کار کند. مثال: <پیش> N := 10; // در متغیر N اندازه آرایه را ذخیره می کنیم SetLength(a, N); // آرایه و اندازه N را تنظیم کنید writeln(طول(a)); // اندازه آرایه را نمایش می دهد اندازه یک آرایه را می توان از صفحه کلید تنظیم کرد.

Problem

برنامه را طوری تغییر دهید که در خط پنجم مقدار متغیر N از صفحه کلید وارد شود و در خط ششم آرایه ای به اندازه N ایجاد شود (مقادیر عناصر آرایه می تواند هر کدام باشد)