Урок 14. Масиви
Често в програмите се налага да се работи със сродни по смисъл и еднакви по тип данни. Например дните от седмицата, месеците, имената на учениците от едно училище, оценките на учениците в един клас по дадена дисциплина, месечните заплати на работниците и служителите от едно предприятие и т.н.
Такива еднотипни данни могат да бъдат последователно номерирани и заедно разглеждани като нов обект от съставен тип, наречен масив.
Отделните компоненти се наричат елементи на масива, а мястото на елемента в масива се определя от неговия номер, наречен индекс.
Масивът е структура за съхранение на еднородна по своята структура информация /едномерен масив – списък, двумерен – таблица / .
За да получим достъп до елемент от едномерен масив, трябва да използване неговото име и номера (индекса) на елемента, поставен в квадратни скоби. Индексът е цяло число –обикновено константа или променлива.
Пример:
a[1] или a[i] или a[i+1]
Индексирането / номерирането/ на елементите на масива започва от 0. То може да започне от 1 или от друго цяло число. Това зависи от задачата която решаваме. Ако тя е свързана с изчисляване на многочлени , масивът може да се използва за съхранение на коефициенти и тогава е по-удобно номерирането да започне от 0. Нулевия елемент ще съдържа коефициента при нулева степен първия – пред първа степен и т.н. Когато обработваме информация от икономически характер – в масив може да съхраним заплатата на определен работник и е по-удобно заплатата за месец януари да се съхрани в масив с номер 1, за февруари с номер 2 и т.н.
С елементите на масива можем да извършваме всички операции, които извършваме с променливите.
Например:
a[3] = 0 - присвояване
sum = sum + a[i] - събиране
a[i] > a[max] - сравняване
Обикновено то става чрез клавиатурата / явно въвеждане/ . Възможно е и чрез оператора за присвоятване /неявно въвеждане/.
Да разгледаме как ще въведем стойности за 4 елемента на масив
TextWindow.Write("Въведи стойност за елемент 1->")
a[1] = TextWindow.ReadNumber()
TextWindow.Write("Въведи стойност за елемент 2>")
a[2] = TextWindow.ReadNumber()
TextWindow.Write("Въведи стойност за елемент 3->")
a[3] = TextWindow.ReadNumber()
TextWindow.Write("Въведи стойност за елемент 4->")
a[4] = TextWindow.ReadNumber()
Но за да бъдем по-кратки и по-експедитивни, въвеждането можем да го направим с цикъл. Това е наложително, особено когато елементите са повече.
For i = 1 To 4
TextWindow.Write("въведи елемент " + i +" ->")
a[i] = TextWindow.ReadNumber()
EndFor
Задача Напишете програма която въвежда N елемента и изчислява средно аритметичното им.
Решение:
TextWindow.Title ="Средно аритметично на N елементи от масив"
TextWindow.Write("Какъв е броят на елементите на масива ")
N= TextWindow.ReadNumber()
' Въвеждане на масива
For i = 1 To n
TextWindow.Write("стойност " + i +".->")
a[i] = TextWindow.ReadNumber()
EndFor
' Изчисляване на сумата от елементите
s = 0
For i=1 To N
s = s + a[i]
EndFor
' Изчисляване на средно аритметичното
m = s / n
TextWindow.WriteLine("Средно аритметичното на елементите е="+m)
Задача: Напишете програма, която въвежда 5 елемента в масив и намира най-малкия елемент и го извежда.
Решение:
TextWindow.Title ="Най-малък елемент"
TextWindow.WriteLine("въвеждане на елементите")
' Вход на елементите
For i = 1 To 5
TextWindow.Write("елемент " + i +".->")
a[i] = TextWindow.ReadNumber()
EndFor
'Търсене на най-малкия елемент
m = 1 ' номер на най-малкия елемент
' Сравнявам i-й елемент с най-малкия
For i=2 To 5
If a[i] < a[m] Then
m = i
EndIf
EndFor
' Извеждане на резултата
TextWindow.WriteLine("----------")
TextWindow.WriteLine("Номера на най-малкия елемент е :" + m)
TextWindow.WriteLine("Минималния елемент масива е : " + a[m])
TextWindow.WriteLine("")
Задача: Напишете програма, която въвежда 5 елемента, сортира ги по големина и ги извежда.
Ще ползваме задачата за намиране на най-малък / аналогично най-голям елемент/. Припомнете си блок-схемите на тези алгоритми.
Решение:
For i = 1 To 5
TextWindow.Write("елемент " + i +"=")
a[i] = TextWindow.ReadNumber()
EndFor
TextWindow.WriteLine("Сортировка...")
For i = 1 To 4
' Търсене на най- големия емемент
' от i-я элемента массива
m = i ' предполагаме че I- елмент е минимален
' Сравняване на останалите елемнети с минималния
For j = i + 1 To 5
If a[j] < a[m] Then
m = j
EndIf
EndFor
' Намерен е най-малкия елемент а[i].
' смяна на местата на i-я и най-малкия елемент
buf = a[i]
a[i] = a[m]
a[m] = buf
EndFor
For l=1 To 5
TextWindow.Write(a[l] + "; ")
EndFor
Задачи за самостоятелна работа:
1. Напишете програма която намира най-големия елемент от N елемента на масив.
2. Напишете програма, която извежда 6 случайни числа от 1 до 49.
3. Напишете програма която сортира N елемента.