بخشی از پاورپوینت
اسلاید 1 :
مبانی کامپیوتر و برنامه سازی
فصل چهارم : آرایه ها
اسلاید 2 :
4 متغیرهای اندیس دار یا آرایه ها
در مثالهایی که در فصل قبل بیان گردید، از متغیرهای معمولی استفاده گردید. اما گاهی نیاز به تعداد زیادی متغیر برای نگاهداری داده ها داریم. درچنین مواردی نه تنها برای نامگذاری این متغیرها دچار مشکل می شویم، بلکه دسترسی به تک تک آنها نیز مشکل است.
مثال ) الگوریتمی بنویسید که شماره دانشجویی، نام و معدل تعدادی دانشجو را بخواند و مشخصات دانشجویانی را که معدل آنها از میانگین معدل کلاس بیشتر است را چاپ کند.
برای حل این مثال ابتدا باید مشخصات و معدل کلیه دانشجویان دریافت شود تا بتوانیم میانگین معدل های آنان را محاسبه کنیم. سپس باید معدل تک تک دانشجویان با میانگین کلاس مقایسه گردد. مسلما نمی توانیم مجددا از کاربر بخواهیم که همان اطلاعات قبلی را مجددا وارد کند، بلکه باید از قبل آنها را در درون متغیرهایی ذخیره کرده باشیم تا اکنون بتوانیم مقایسه را انجام دهیم. برای اینکار نیاز به تعدادی متغیر (به تعداد دانشجویان مثلا 100 عدد) داریم که ما را دچار 2 مشکل اساسی می کند :
این متغیرها را چگونه نامگذاری کنیم ؟
بر فرض نامگذاری متغیرها برطبق یک روش خاص، چگونه تک تک آنها را با میانگین کل مقایسه کنیم؟ آیا باید برای مقایسه هر کدام یک دستور مجزا بنویسیم ؟
اسلاید 3 :
1-4 آرایه های یک بعدی
تعریف آرایه : مجموعه ای از داده های هم نوع است که تحت یک نام مشترک ذخیره می گردند.
برای دسترسی به هریک از اعضا یا عناصر آرایه از نام آرایه بعلاوه یک اندیس استفاده می شود. بنابراین هر عنصر آرایه درحقیقت یک متغیر مستقل از همان نوع مورد نظر است.
یک آرایه پیش از آنکه استفاده گردد باید اعلان شود. اعلان آرایه شامل نام آرایه و اندازه آن است. عناصر آرایه برای سهولت در دسترسی (معمولا) در خانه های پشت سرهم حافظه ذخیره می گردند.
مثال) آرایه A را با 100 عضو درنظر بگیر
.
.
A(1)
A(2)
A(3)
A(4)
A(i)
A(100)
اسلاید 4 :
1-4 آرایه های یک بعدی
مثال) الگوریتمی بنویسید که شماره دانشجویی، نام و معدل تعدادی دانشجو را بخواند و مشخصات دانشجویانی را که معدل آنها از میانگین معدل کلاس بیشتر است را چاپ کند
n را بخوان
آرایه های idList و nameList و aveList را با n عنصر درنظر بگیر.
i ← 1 و sum ← 0
تازمانیکه ( i ≤ n ) دستورات 5 تا 8 را تکرار کن
چاپ کن "مشخصات دانشجوی " ، i ، "را وارد کنید"
idList(i) و nameList(i) و aveList(i) را بخوان
sum ← sum + aveList(i)
i ← i + 1
totalAve ← sum / n
i ← 1
تازمانیکه ( i ≤ n ) دستورات 12 تا 13 را تکرار کن
اگر ( aveList(i) ≥ totalAve) آنگاه
idList(i) و nameList(i) و aveList(i) را چا پ کن
i ← i +1
توقف کن
اعلان
اسلاید 5 :
1-4 آرایه های یک بعدی
الگوریتمی بنویسید که تعدادی عدد را دریافت و سپس ابتدا اعداد مثبت و سپس اعداد منفی را بطور جداگانه چاپ کند.
n را بخوان
آرایه های positive و negative را با n عنصر درنظر بگیر
i ← 1 و posCount ← 0 و negCount ← 0
تازمانیکه ( i ≤ n ) دستورات 5 تا 7 را تکرار کن
adad را بخوان
اگر ( adad ≥ 0 ) آنگاه
posCount ← posCount + 1 و positive(posCount) ← adad
در غیراینصورت negCount ← negCount + 1 و negative(negCount) ← adad
i ← i + 1
چاپ کن "لیست اعداد مثبت"
i ← 1
تازمانیکه ( i ≤ posCount ) دستورات 11 تا 12 را تکرار کن
چاپ کن positive(i)
i ← i + 1
چاپ کن "لیست اعداد منفی"
i ← 1
تازمانیکه ( i ≤ negCount ) دستورات 16 تا 17 را تکرار کن
چاپ کن negative(i)
i ← i + 1
توقف کن
اسلاید 6 :
1-4 آرایه های یک بعدی
الگوریتمی بنویسید که دو مجموعه از اعداد را خوانده و در دو آرایه قرار دهد. سپس اشتراک آن دو را محاسبه و در یک آرایه دیگر قرار دهد. در پایان اشتراک حاصل را چاپ کند.
n و m را بخوان
آرایه A را با n عنصر و آرایه B را با m عنصر در نظر بگیر.
آرایه C را با min(n,m) عنصر درنظر بگیر
آرایه های A با n عنصر و B با m عنصر را بخوان (البته نیاز به حلقه دارد)
aCount ← 1 و cCount ← 0
تا زمانیکه ( aCount ≤ n) دستورات 7 تا 11 را تکرار کن
bCount ← 1 و sw ← 1
تازمانیکه ( bCount ≤ m and sw = 1) دستورات 9 تا 10 را تکرار کن
اگر ( A(aCount) = B(bCount) ) آنگاه
cCount ← cCount + 1 و C(cCount) ← A(aCount) و sw ← 0
bCount ← bCount + 1
aCount ← aCount + 1
چاپ کن "اشتراک دو مجموعه برابر است با :"
i ← 1
تازمانیکه ( i ≤ cCount ) دستورات 15 تا 16 را تکرار کن
C(i) را چاپ کن
i ← i + 1
توقف کن
اسلاید 7 :
1-4 آرایه های یک بعدی
آزمایش الگوریتم اشتراک
اسلاید 8 :
1-4 آرایه های یک بعدی
مثالهای آینده:
الگوریتم مثال قبل را برای اجتماع دو مجموعه تکرار کنید.
الگوریتمی بنویسید که یک لیست را گرفته و پس از حذف اعداد تکراری آن، حاصل را در یک لیست دیگر قرار دهد.
الگوریتم مثال قبل را بگونه ای تغییر دهید که عملیات حذف داده های تکراری را درخود آرایه اصلی (بدون کمک آرایه دیگر) انجام دهد.
الگوریتمی بنویسید که یک لیست مرتب بصورت صعودی از اعداد و یک عدد را از کاربر دریافت و سپس بدنبال داده در لیست جستجو کند و آن را حذف نماید.