Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
rabtetrad.doc
Скачиваний:
7
Добавлен:
19.11.2019
Размер:
604.16 Кб
Скачать

§7 Массивы

УРОК 1

1) Самостоятельное усвоение нового материала с помощью самостоятельной работы (на 45') при наличии проблемной ситуации

Рассмотрим пример написания данных. Каким образом записываем данные в обоих случаях?

А) 1. 4 2 3 4, 5 6,1 __________________________

Б)

1

2

3

4

5

1,4

2

3

4.5

6, 1

_____________________________________________________________________

  • Для удобства обработки информации часто её сводят в таблицу, линейную или прямоугольную. Данная таблица имеет 5 элементов.

? Назовите пятый элемент таблицы, _______

четвертый________

третий________

второй________

первый________

  • Если некая величина является линейной таблицей, нужно задать тип элементов таблицы, ее имя, начальный и конечный порядковые номера. Для того, чтобы указать, какой элемент в данный момент используется, достаточно указать его порядковый номер – индекс.

Для таблицы: А[5]=6,1

A [2]=2

  • Для работы с табличными величинами используются массивы – упорядоченная по номерам совокупность значений, объединенных общим именем и типом.

Массивы в Qbasic описываются с помощью оператора DIM

Оператор

Форма строки

Название

Назначение

DIM

DIM имя массива (максимальный индекс)

Оператор размерности массива

Резервирует память ПК под массив

Рассмотрим пример 1:

Определить сумму элементов таблицы А

1

2

3

4

5

1,4

2

3

4.5

6, 1

Дано: таблица А из 5 элементов

Требуется: S – сумма элементов

Связь: S=S+очередное слагаемое А[ I ]

Алгоритм

Qbasic

алг сумма (арг вещ таб А[1:5], рез вещ S)

нач цел I

S:=0

для I от 1 до 5

нц

ввод А[ I ]

S=S+ А[ I ]

кц

вывод S

кон

REM сумма

DIM I AS INTEGER

OPTION BASE I

DIM A(10)

S=0

FOR I=1 TO 10

INPUT A(I)

S=S+a(i)

NEXT I

PRINT “S=”;S

Рассмотрим назначение оператора OPTION. Начальным индексом элементов массива считается ноль. При выполнении оператора DIM А (3) Qbasic выделит 4 ячейки под массив и присвоит им нулевое значение

А(0)

А(1)

А(2)

А(3)

0

0

0

0

Для удобства моно изменить номер первого элемента на 1 с помощью оператора OPTION BASE 1:

OPTION BASE 1

DIM A(3)

В этом случае будет выделено 3 ячейки под массив.:

А(1)

А(2)

А(3)

0

0

0

Пример 2

Составить алгоритм вычисления превых 30 чисел Фибоначи. Эти числа определяются так: А [1]=1, A [2]=1, а каждое следующее число равно сумме двух предыдущих

Дано: количество чисел Фибоначчи равно 30

Требуется: вычислить числа Фибоначчи

Связь:

A[1]=1

A [2]=1

A[3]= A[2}+A[1]=1+2=2

A[4]=A[3]+A[2]=2+1=3

В общем виде: A[I]=A[I-1]+A[I-2]

Алгоритм

Qbasic (составь сам)

алг числа Фибоначчи (рез цел таб A [1:30])

нач цел I

A[1]:=1; A[2]:=2

для I от 3 до 30

нц

A[I] :=A[I-1]+A[I-2]

кц

вывод А

кон

Пример3

Определить для таблицы А сумму положительных, количество нулевых, произведение отрицательных элементов

Дано: таблица A[1:N], размерность таблицы N

Требуется:

S – сумма положительных,

Р – произведение отрицательных

К –количество нулевых элементов таблицы А

A[1]

A[2]

A[3]

A[4]

A[5]

A[6]

A[7]

A[8]

5

-1

0

0

-8

4

Для определения результатов следует просматривать поочередно все элементы таблицы и делать выбор:

1) если элемент A[I] положителен (), то считать его слагаемым для суммы

S=S+A[I]

2)если элемент A[I] отрицателен (A[I]<0), от считать его сомножителем для произведения P=P *A[I]

  1. Если 0 от значение К=К+1

Алгоритм (составь сам)

Qbasic

REM S,K,P

DIM N,K,I AS INTEGER

INPUT “N=”:N

DIM A(N)

FOR I=1 TO N

INPUT A(I)

NEXT I

S=0: K=0: P=0

FOR I=1 TO N

IF A(I)>0 THEN S=S+A(I)

IF A(I)=0 THEN K=K+1

IF A(I)<0 THEN P=P*A(I)

NEXT I

PRINT”S=”;S, “K=”;K, “P=”;P

END

ПРИМЕР 4. Поиск заданного элемента в массиве.

Найти максимальный элемент в массиве

Дано: N – размерность таблицы, таблица A[1:N]

Требуется: max – максимальный элемент таблицы А

Порядок выполнения:

  1. просмотреть все элементы начиная с первого элемента таблицы и запомнить первый элемент

  2. начиная со второго элемента и до конца делать сравнение и текущего элемента таблицы A[I]. Если A[I] окажется больше max то испонитель запоминает его в качестве max, забывая о предыдущем значении.

Алгоритм

Qbasic (составь сам)

алг мах (арг цел N, вещ таб A[1:N], рез вещ МАХ)

нач цел I

ввод А

МАХ:= A[1]

для I от 2 до N

нц

если A[I]>MAX

то MAX:= A[I]

все

кц

вывод МАХ

кон

I

ПРИМЕР 5. СОРТИРОВКА МАССИВОВ.

Найти максимальный элемент в таблице и запомнить его индекс, например как переменную С. обменять значение последнего элемента A[N] и элемента A[С] В результате в последней клетке таблицы окажется самый большой элемент. Найти максимальный элемент среди A[1], …A[N-1] и обменять его с A[N-1] и т.д.

Алгоритм

Qbasic (составь сам)

алг сортировка (арг цел N, вещ таб A[1:N], рез вещ таб A[1:N])

нач цел I, J, C, вещ MAX, R

ввод А

для J от N до 1 шаг -1

нц

MAX:= A[1]; С:=1

для I от 1 до J

нц

если A[I]>MAX

то МАХ:= A[I]; C:=I

все

кц

R:=A[C]; A[C]:=A[J]: A[J]:=R

вывод А

кон

ПРИМЕР 6

На школьных соревнованиях зафиксированы результаты кросса. Напечатать фамилии учащихся в порядке показанных результатов и определить, кто же их учеников занял первое, втрое, третье место.

Алгоритм (составь сам)

Qbasic

INPUT “Введи количество участников”; N

DIM A$(N), B(N)

PRINT “Введи фамилию участника и его результат:”

For I=1 TO N

INPUT A$(I), B(I)

NEXT I

FOR J=1 TO N-1

FOR I=1 TO N-J

IF B(I)>B(I+1) THEN SWAP B(I), B(I+1): SWAP A$(I),A$(I+1)

NEXT I

NEXT J

FOR I=1 TO N

PRINT A$(I),B(I)

NEXT I

PRINT “Распределение мест:”

FOR I=1 TO 3

PRINT A$(I), B(I), I; “место”

NEXT I

Примечание: оператор SWAP B(I), B(I+1) производит обмен значений B(I) и B(I+1), т.е. действия, аналогичные следующим операциям: R=B(I): B(I)=B(I+1):B(I+1)=R

УРОК 2. САМОСТОЯТЕЛЬНАЯ РАБОТА (С РАЗНОУРОВНЕВЫМИ ЗАДАНИЯМИ)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]