Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум по QBasic.doc
Скачиваний:
4
Добавлен:
29.04.2019
Размер:
5.12 Mб
Скачать

Лабораторна робота № 8

Обробка одновимірних масивів

Мета роботи — оволодіння практичними навичками роботи з одновимірними масивами, особливостями їх вводу та виводу, набуття подальших навичок по організації програм циклічної структури з використанням прийомів програмування.

Теоретична частина

Група змінних, яка має одне загальне ім`я, і її змінні розташовані в порядку зростання їх порядкових номерів (індексів), називається масивом. Кожна змінна в цій групі називається елементом масиву і характеризується двома атрибутами: своїм місцезнаходженням усередині масиву і значенням.

В залежності від типу даних масиви можуть бути будь-якого типу — і текстові, і числові. При цьому всі елементи масиву будуть мати однаковий тип.

Значення елементам масиву можна присвоювати різними способами:

  • з допомогою оператора присвоєння:

B(1) = 1

B(2) = 10

B(3) = 100

Проте, якщо масив великий, ця процедура стає довгою та утомлюючою.

  • за допомогою циклу при заповнені великого масиву:

1) можна вводити значення з клавіатури:

FOR I= 1 TO 10

INPUT B(I)

NEXT I

2) можна використовувати оператор DATA і READ:

DATA 10,20, 30, 40, 50, 60

FOR I=1 TO 6

READ B(I)

NEXT I

Цей спосіб зручний і має додаткову перевагу – дані не губляться при повторному виконанні програми. Значення зберігаються в операторі DATA і вводяться в програму один раз – при її написанні. Оператор READ звертається до оператора DATA і присвоює черговій змінній поточне значення з списку.

  • можна використовувати стандарті функції:

FOR I=1 TO 10

B( I ) = RND ( I )

NEXT I

В даному прикладі використовується тільки спеціальна функція, що генерує випадкові числа. Це одна з функцій, яка використовується при створенні навчальних та ігрових програм.

На відміну від попередніх діалектів Бейсику, QBASIC не завжди потребує оголошення масиву при використанні його в програмі. Якщо масив містить менше 11 елементів, достатньо лише одного згадування імені змінної, щоб QBASIC автоматично виділив комірки в пам’яті для масиву з 11-ти елементів і присвоїв їм нульове значення. Перший елемент масиву в QBASIC по умовчанню має індекс нуль, а не 1, тому останній елемент буде мати порядковий номер 10. Дійшовши в робочій програмі до оператора A(1)=3, QBASIC виділить 11 комірок пам’яті і заповнить їх значеннями в наступному порядку:

A(0)=0

A(1)=3

A(2)=0

A(3)=0

A(4)=0

A(5)=0

A(6)=0

A(7)=0

A(8)=0

A(9)=0

A(10)=0

Якщо ви бажаєте працювати з великими масивами, необхідно повідомити QBASIC з допомогою оператора DIM. Загальна форма оператора DIM наступна:

DIM імя1 (індекс1) [ імя2 (індекс2), …]

імя1, імя2 – імена масивів змінних;

індекс1, індекс2 — розмірність масиву, що виражається наступним чином:

[нижній TO] верхній [,нижній TO] верхній…,

де нижній – нижнє значення індексу масиву (по умовчанню нуль);

верхній — верхнє значення індексу масиву.

Оператор DIM дозволяє резервувати місце в пам’яті одразу для декількох масивів. Наприклад:

DIM A%(15), NAME (20), Z (1 TO 10)

Цим оператором ми одночасно:

  • визначаємо ім’я масиву;

  • визначаємо тип елементів масиву;

  • резервуємо комірки пам’яті для масиву;

  • заповнюємо нульовим значенням комірки для масиву числового типу або пустими рядками текстовий масив.

Оператор DIM може знаходитися в будь-якому місці програми раніше першого звернення до масиву (масивів), які він оголошує. Звичайно всі оператори DIM розміщують на початку програми, що полегшує процес відладки.

Якщо ви працюєте з іншими версіями Бейсика і звикли, що перший елемент масиву має номер 1, то в QBASIC ви можете змінювати порядковий номер першого елемента масиву. Для цього можна використовувати спеціальний оператор:

OPTION BASE значення,

де значення — номер початкового елемента масиву. В QBASIC цей параметр може приймати значення 0 або 1.

Зверніть увагу на те, що масив, визначений в наступному прикладі, складається з 100 елементів (замість 101):

OPTION BASE 1

DIM Х(100)

Найпростішими задачами на обробку масиву є задачі на визначення його кількісних характеристик, таких, як сума елементів, їх добуток тощо.

Розглянемо алгоритм знаходження суми елементів масиву X(N). В ньому можна виділити певні дії, що є характерними для задач визначення кількісних характеристик масиву.

В таблиці 8.1. наведені аналогічні операції для знаходження таких кількісних характеристик одновимірного масиву X(N):

  • добуток елементів ( );

  • кількість елементів К;

  • середнє арифметичне К елементів ( );

  • середнє геометричне К елементів ( );

  • максимальний, мінімальний елемент та його номер.

Таблиця 8.1.

Характеристика масиву

До циклу

В циклі

Після циклу

Сума

S=0

S=S+Xi

Вивід S

Добуток

P=1

P=P*Xi

Вивід P

Кількість

K=0

K=K+1

Вивід K

Середнє арифметичне

S=0; K=0

S=S+Xi; K=K+1

SA=S/K

Вивід SA

Середнє геометричне

P=1; K=0

P=P*Xi; K=K+1

SR=P1/K

Вивід SR

Максимальний елемент

MAX=X1 або MAX=-1020

Якщо Xi>MAX, то MAX=Xi

Вивід MAX

Максимальний елемент і його номер

MAX=X1 або MAX=-1020, L=1

Якщо Xi>MAX, то MAX=Xi,

L= i

Вивід MAX, L

Мінімальний елемент

MIN=X1 або MIN=1020

Якщо Xi<MIN, то MIN=Xi

Вивід MIN

Мінімальний елемент і його номер

MIN=X1 або MIN=1020 L=1

Якщо Xi<MIN, то MIN=Xi ,

L= i

Вивід MIN, L

Завдання 1. В масиві A(M) знайти суму парних елементів, максимальний елемент і його номер.

Програма (Блок-схема представлена на рис. 8.2).

REM Програма1. Одновимірні масиви

REM Лабораторна робота №8, задача №1

CLS

INPUT "Введіть розмірність масиву"; M

DIM A(M)

FOR I = 1 TO M

INPUT "Введіть елементи масиву"; A(I)

NEXT I

S = 0

FOR I = 1 TO M

IF A(I) / 2 = INT(A(I) / 2) THEN S = S + A(I)

NEXT I

MAX = A(1)

NM = 1

FOR I = 1 TO M

IF A(I) > MAX THEN MAX = A(I): NM = I

NEXT I

PRINT

PRINT "Сума елементів="; S

PRINT

PRINT "Максимальний елемент=";MAX, "Його номер=";NM

END

Завдання 2. Задано масив X(M). Сформувати, використовуючи його елементи, масив Y(M) наступним чином: додатні елементи масиву X розмістити на початку масиву Y; відємні елементи масиву X замінити на середнє арифметичне додатних елементів масиву X і розмістити їх в масиві після додатних; нульові елементи розмістити в кінці масиву Y.

Програма (Блок-схема представлена на рис. 8.3)

REM Програма2. Одновимірні масиви

REM Лабораторна робота №8, задача №2

CLS

INPUT "Введіть розмірність масиву"; M

DIM X(M)

S = 0: K = 0

FOR I = 1 TO M

INPUT "Введіть масив"; X(I)

IF X(I) > 0 THEN S = S + X(I): K = K + 1

NEXT I

SA = S / K: J = 0

PRINT

PRINT "Середнє арифметичне"; SA

PRINT

PRINT "Сформований масив"

FOR I = 1 TO M

IF X(I) > 0 THEN

J = J + 1

Y(J) = X(I)

PRINT Y(J)

END IF

NEXT I

FOR I = 1 TO M

IF X(I) < 0 THEN

J = J + 1

Y(J) = SA

PRINT Y(J)

END IF

NEXT I

FOR I = 1 TO M

IF X(I) = 0 THEN

J = J + 1

Y(J) = 0

PRINT Y(J)

END IF

NEXT I

END