Таблица и ее элементы, табличные величины


§ 63. табличные величины

Изучив этот пункт, мы:

Познакомимся с табличными величинами;

Узнаем, как описываются линейные таблицы в алгоритмах и программах; выясним, как организуется обработки линейных табличных величин; получим представление о многомерные таблицы.

==== 63.1.Таблица и ее элементы ==============================================

Во многих задачах возникает необходимость обрабатывать по определенным правилам совокупность однотипных величин. Для того чтобы можно было составлять компактные алгоритмы решения таких задач и обрабатывать величины одну за другой в цикле, их объединяют в Массив, или Таблицу.

Таблица — это поименованная совокупность однотипных величин с общим свойством, которые различаются между собой своим положением в таблице. Величины, входящие в таблице, называются ее Элементами.

Так, в таблицу можно объединить ежедневные данные о температуре воды на побережье Крыма за летний сезон, результаты спортивных соревнований, оценки ученика по определенному предмету за учебный год и др.

Таблицы различаются по сложности их организации. Простейшими являются таблицы, где элементы последовательно перенумерованы и упорядочены по их номерам. Такие таблицы называют Линейными, или Одномерными. Номер величины в таблице называют Индексом.Каждый элемент таблицы имеет имя, общее для всех элементов таблицы, — имя таблицы и свой уникальный индекс. Индекс записывают в квадратных скобках после имени таб-лице. Элементы таблицы, в отличие от простых величин, называют Величинами с индексом.

Например, для обработки результатов соревнований по прыжкам в высоту, где принимали участие 100 спортсменов, создадим таблицу, содержащую все 100 результатов, показанных спортсменами. Эти результаты упорядочены следующим образом: сначала результат, показанный первым участником, затем вторым и т. Д. Предоставим таблицы имя Rez. Тогда Rez [1] — это результат первого участника, Rez [37] — результат 37-го участника, Rez [100] — Rez [1] — разница между результатами последнего и первого участников и т. др.

Далее мы рассмотрим, как в алгоритмах и программах осуществляется описание и обработки таблиц. Как пример таблицы будем использовать таблицу результатов спортивных соревнований по прыжкам в высоту.

==== 63.2.Описание линейных таблиц ==============================================

Для того чтобы иметь возможность работать с таблицей, ее нужно описать так же, как это осуществляется для простых величин. Описание таблицы содержит указание на имя таблицы, а также тип и количество величин, объединенных в таблицу. Это описание позволяет компьютеру определить, какой объем памяти нужен для хранения таблицы, выделить его и связать с именем таблицы.

Читать  Множества в Паскаль – Операции над множествами

Для описания таблиц в НАМ используется служебное слово Таб.Описание таблицы

Осуществляется следующим образом:

Тип_елементив Таб Имя_таблицы [найменший_индекс: найбильший_индекс]

Для нашего случая описание таблицы имеет вид:

Цел Таб rez [1: 100]

Поскольку результаты прыжков в высоту подаются целым числом сантиметров.

В языке Паскаль таблицы обычно называют массивами. Объявления массива осуществляется с использованием служебных слов array (от англ. Array — масса, множество) и of (с) следующим образом:

Имья_масиву: Array [найменший_индекс .. найбильший_индекс] Of тип_елементив;

Для нашего случая описание таблицы на языке Паскаль имеет вид:

Rez : Array [1 .. 100] Of Integer;

По такому описанию в памяти компьютера будет выделено 200 байт для размещения таблицы, по

2 байта на каждый элемент.

Диапазон значений индекса можно задавать как с помощью целочисленных констант, так и с помощью выражений, которые дают значение целого типа. Например, наша таблица может быть объявленной как

Rez : Array [1 .. n] Of Integer;

Но значение n в таком случае уже должно быть определенным ранее в разделе констант:

Const n = 100;

Такой способ определения размера таблицы является удобным, так как можно составлять текст программы для таблицы с n элементов, а для «настройки» программы на конкретную таблицу менять только одно значение константы.

==== 63.3.Обработка линейных таблиц =======================================

Разработка таблиц в алгоритмах и программах обычно описывается с помощью циклов со счетчиком. В цикле осуществляется ввод и вывод элементов таблицы в цикле они анализируются или приобретают новые значения. При составлении таких циклов придерживаются определенных правил. В теле цикла размещают последовательность команд или операторов для обработки элемента таблицы, индекс которого задается переменной (например, И), а в заголовке цикла указывают перечень значений индекса. Если обработке подлежат все без исключения элементы таблицы, то в этот перечень входит весь диапазон значений индекса — от мала до велика значение (например, Для И От 1 До N).Итак, переменная, которая обозначает индекс, выступает в роли счетчика цикла. В нашем примере это переменная И.

Схему обработки всех элементов таблицы A [1 .. N] можно представить так:

Алгоритм в НАМ Программа на языке Паскаль
Для И От 1 До N For i: = 1 To n Do
Пс Begin
<команды обработки элемента a [i]> <Операторы обработки элемента a [i]>
Кс End;

Пользуясь этой схеме, запишем алгоритм подсчета среднего результата, показанного спортсменами на соревновании. Для вычисления среднего результата (sr) нужно найти сумму всех результатов (s) и разделить ее на количество участников соревнований (n).

Читать  Конспект лекций Паскаль для 1 курса заочного отделения – Методические рекомендации к выполнению контрольных работ

Для того чтобы избежать ввода с клавиатуры элементов таблицы (результатов, показанных спортсменами), предоставим им случайных значений с диапазона [170 199].

Алгоритм в НАМ Программа на языке Паскаль
Алг среднее (цел N; Цел Таб

Rez [1: n]; Дийс sr)

Арг N, Rez

Рез sr

Program average; Uses Crt; Const n = 100;

Var i, s: Integer; sr: Real;

 

Rez: Array [1 .. n] Of Integer;
Нач Цел I, S Begin
For i: = 1 To n Do
Rez [i]: = 170+ Random (30);
S = 0 S: = 0;
Для и От 1 до N For i: = 1 To n Do
S = S + Rez [i] S = s + rez [i];
Sr = S / N Sr = s / n;
Writeln (sr 5: 1);
Readln
Кон End.

==== 63.4.Нахождение наименьшего элемента таблицы =============================

В процессе решения многих задач обработки таблиц возникает потребность найти наименьший или наибольший элемент среди всех элементов таблицы. Рассмотрим, как осуществляется поиск наименьшего элемента.

Предоставим таблицы с n элементов имя a, обозначим искомое значение ее наименьшего элемента через min.

Для определения наименьшего элемента таблицы применяется следующим образом:

·  предоставляем переменной min значение первого элемента таблицы;

·  сравниваем min со вторым элементом таблицы. Если он меньше min, то предоставляем min значение второго элемента. Теперь переменная min содержит значение меньшего из двух элементов таблицы;

·  сравниваем min с третьим элементом таблицы. Если он меньше min, то предоставляем min значение третьего элемента. Теперь переменная min содержит значение наименьшего из трех элементов таблицы;

·  продвигаемся таким образом к концу таблицы и в конце концов получаем значение min

— самого маленького из всех элементов таблицы.

Описанные действия можно представить в виде цикла:

Представления в НАМ Представление на языке Паскаль
Min = A [1] Min = a [1];
Для I От 2 До N For i: = 2 To n Do
Если A [i] <min If a [i] <min
То Min = A [i] Then min = a [i];

Если в приведенном фрагменте знак сравнения «<» заменить на «>», то будет обнаружено не

Маленький, а наибольший элемент таблицы.

==== 63.5.Программа «Победитель соревнований» =====================================

Составим программу определения победителя соревнований по прыжкам в высоту. Победителем является тот, кто показал лучший, то есть самый большой по числовым значением результат. Наша задача состоит в том, чтобы в таблице результатов соревнований rez найти наибольшее значение и определить того, кому принадлежит этот результат, — победителя соревнований.

Для решения задачи нам нужно иметь две таблицы: таблицу, содержащую список фамилий спортсменов (обозначим ее p), и таблицу их результатов rez, которая содержит результаты спортсменов в том же порядке, в котором их фамилии содержатся в таблице p. Итак, p [i] — это фамилия спортсмена, который показал результат rez [i].

Мы знаем, как найти наибольший элемент в таблице rez, однако в данной задаче нужно также выяснить, по какому номеру этот элемент содержится в таблице rez. Обозначим наибольший элемент через max, а его номер в таблице rez (то есть индекс) через m. Тогда имеем: max = rez [m], и фамилия победителя соревнований находим как p [m].

Для того чтобы найти не только крупнейший в таблице элемент, но и его место в таблице, нужно одновременно с предоставлением значение переменной max предоставлять соответствующего значения переменной m. При составлении программы объявим таблицу p как таблицу строчных величин. Фамилия победителя обозначим как pp, это переменная строчной типа. Остальные переменных по содержанию задачи

Относим к целому типу.

Ввода данных в таблицы p и rez будем осуществлять с клавиатуры. Для каждого спортсмена будем вводить его фамилию и показанный им результат. Значение n выберем небольшим, например n = 10.

Program winner; Uses Crt; Const n = 10;

Var i, m, max: Integer; pp: String; rez: Array [1 .. n] Of Integer;

P: Array [1 .. n] Of String; Begin

Clrscr; {Создаем таблицу результатов Соревнований}

Writeln ( ‘Таблица результатов соревнований’);

For i: = 1 To n Do

Begin {Вводим данные:}

Write (i, «. ‘); {Номер участника}

Readln (p [i], rez [i]); {фамилия, Результат}

End;

Max = rez [1]; {Находим max (самый Результат)}

M = 1, {и m (номер победителя)}

For i: = 2 To n Do if rez [i]> max

Then begin

Max = rez [i]; m = i;

End;

Pp = p [m]; {Находим фамилия Победителя}

Writeln ( ‘Победитель соревнований — «, pp)

Readln; End.

==== 63.6.Понятие о многомерные таблицы ====================================

Линейные таблицы является простейшей формой организации данных. Познакомимся с тем, как образуются Многомерные таблицы, где каждый элемент определяется не одним, а несколькими индексами.

Пусть таблица w содержит оценки определенного ученика (например, Петрова) за учебный год с 10 предметам: украинскому языку, математике, информатики. Тогда w [1] — оценка Петрова по украинскому языку, w [2] — по математике и тому подобное. Таблица w описывается как w:

Array [1 .. 10] Of Integer.

Аналогичные таблицы для всех 25 учеников класса (Алехин, Барахтян…, Петров…, Яшин) сведем в одну таблицу ww. В первом ее строке разместим оценки Алехина, во втором — Барахтяна и т. Д. Таблица ww является двумерной. Она состоит из 25 строк, по 10 элементов в каждом, и описывается как ww: Array [1..25,1..10] Of integer.Каждый из 250 элементов таблицы определяется двумя индексами. Например, для того чтобы узнать оценку Петрова по математике, нужно указать номер, по которому идет Петров в списке учеников (например, 17), и номер, по которому идет математика в списке предметов (номер 2). Следовательно, оценка Петрова по математике достается как ww [17, 2].

Можно представить себе и трехмерную таблицу — объединение оценок учеников параллельных классов

— и т. Д.

ВЫВОДЫ

Контрольные вопросы и упражнения

1. Линейная таблица объединяет… элементы. Каждый элемент имеет свое… в таблице. Все элементы имеют… имена. Для различения элементов к имени добавляется… .

А) линейные; б) одинаковы;

В) однотипные;

Г) разные по типу; д) индекс;

Е) место;

Е) значения; ж) массив.

2. Выберите объявления массива, которые не содержат ошибок. А) army: Array [1: 10] Of Integer;

Б) z: Array of [0 .. 41] Integer;

В) s: Integer of array [1 ..8];

Г) class11: array [1 .. 25] Of string; д) price: Array [1 .. 1000] Of real; е) w: Array of integer [1 .. 10].

3. Укажите, какие значения будут предоставлены элементам массива в результате выполнения оператора:

1) For k: = 1 To 5 Do

If k> 3 Then a [k] = k Else a [k] = 7;

2) For k: = 1 To 5 Do

If k <> 3 Then a [k] = k Else a [k] = 7;

3) For k: = 1 To 5 Do

If k Mod 3 = 2 Then a [k] = k Else a [k] = 7;

4) For k: = 1 To 5 Do

If k Mod 3 <k Then a [k] = k Else a [k] = 7.

А) 7, 7, 7, 4, 5,

Б) 1, 2, 3, 4, 5,

В) 1, 2, 3, 7, 7

Г) 7, 7, 3, 4, 5;

Д) 7, 2, 7, 7, 5,

Е) 7, 2, 7, 4, 7

Е) 1, 2, 7, 4, 5,

Ж) 1, 2, 7, 7, 7.

4. Линейная таблица a [1: n], где n = 7, содержит элементы: 18, 24, 6, 48, 0, 12 6.

Найдите значение элементов таблицы после выполнения фрагмента алгоритма:

1) Для k От 1 До n

A [k] = a [n-k + 1]

2) Для k От 1 До n

A [k] = a [k] / a [n-4]

3) t = a [1]

Для k От 1 До n-1 a [k + 1] = a [k]

A [1] = t

4) t = a [n]

Для k От n До 2 Шаг -1 a [k] = a [k-1]

A [1] = t

5. Данная таблица, которая содержит должностные оклады n работников фирмы. Составьте программу:

1) определения среднего должностного оклада работника фирмы;

2) повышение окладов всех работников фирмы на z грн.

6. Данная таблица, содержащая ежедневные показатели о средней температуре воздуха в течение марта. Составьте программу подсчета, которых дней в марте было больше — с температурой выше или ниже нулю.

7. Создайте две таблицы: таблицу T, которая содержит список товаров в магазине, и таблицу C, которая содержит их цены. Составьте программу, которая выводит на экран список товаров, сме-тують дешевле заданного Z.

8. Составьте программу, которая моделирует телевизионное шоу «Счастливый случай». Перед игроком клеточное поле, которое содержит 5 ´ 5 ячеек. Игрок делает «выстрел» (вводит номера ячейки по горизонтали и по вертикали).По некоторым клетками скрытые подарки: приглашение в романтическое путешествие, ужин в ресторане «Престиж», комплект духов тому подобное.

9. Составьте программу-тренажер, которая предлагает пользователю проверить его знания столиц известных стран. Программа одну за другой выводит на экран названия стран, а пользователь вводит с клавиатуры названия их столиц. Программа проверяет правильность каждого ответа и завершения выводит сообщение о результатах проверки.

10. Составьте программу «Ипподром». Программа выводит на экран список участников забега и предлагает пользователю сделать ставку на определенного участника. Результаты забега определяются с помощью датчика случайных чисел. Программа выводит их на экран, определяет победителя и сообщает пользователю, проиграла или выиграла его ставка.

11. Составьте программу «Кассир». Программа по данным о стоимости покупки и предоставленную покупателем сумму денег определяет, сколько и каких купюр нужно выдать ему на сдачу. Сдача дается наименьшим количеством купюр.

12. Составьте программу-тренажер, которая предлагает пользователю проверить его знания английского языка. Программа выводит на экран слово украинского языка, а пользователь с клавиатуры вводит перевод этого слова на английский. Программа проверяет правильность каждого ответа и завершения выводит сообщение о результатах проверки. Усовершенствуйте программу так, чтобы она по выбору пользователя проверяла перевод с английского на украинский или с украинского на английский, или произвольно выбирала слова то одной, то другой языка.

[Всего голосов: 3    Средний: 5/5]