Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Уч.пособие 1 курс, 2012.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.89 Mб
Скачать

Практическое занятие № 16

Разработка алгоритма по обработке одномерного массива.

Цель занятия: Приобретение навыков в составлении схем и программ обработки массивов данных. Изучить формат оператора описания массива; способы описания массивов; процедуры ввода/вывода массивов данных. Познакомиться с различными видами массивов и их характеристиками.

Научиться находить сумму, произведение, количество элементов с заданными характеристиками, максимальный (минимальный) элемент и его порядковый номер, формировать из исходного массива массив с определенными свойствами.

Задание

Дома подготовить отчетный лист. Записать в отчетный лист формулировку задания (вариант задания соответствует порядковому номеру студента в журнале, выбрать из каждого уровня задач свой вариант). Изучить методические рекомендации к проведению практического занятия (Учебное пособие под ред. Чекановой Н. Н.). Изучить характеристики массивов, способы описания массивов, рассмотреть варианты ввода, вывода массива. Рассмотреть и выполнить на компьютере примеры методического материала по данной теме. Продумать алгоритм решения индивидуального задания: составить блок – схему и программу на языке Турбо Паскаль. Ответить на контрольные вопросы.

Работа в лаборатории

  1. Показать преподавателю черновые заготовки выполненных дома заданий.

  2. Набрать программу в оболочке текстового редактора Турбо Паскаля, выполнить трансляцию и отладку программы.

  3. Запустить программу на выполнение, получить результат.

  4. Оформить отчет и сделать выводы по работе.

Пояснения к работе

Сложные типы данных. Массивы.

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

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

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

Простые значения, образующие массив, упорядочиваются таким образом, что каждому значению приписывается номер (или совокупность номеров), называемых индексами. Основными характеристиками такой совокупности значений являются: имя, размерность (число элементов), тип его элементов и тип индексов.

Общая форма описания массива имеет следующий вид:

var

<имя>: Array [<тип индексов>] of <тип элементов>

Массивы в языке Pascal могут описываться разными способами, однако наиболее удобным способом можно считать описание массива через блок описаний переменных Var (что было показано выше).

Другой способ описания массива состоит в следующем:

Ввести новый тип данных, а потом описать переменные нового типа. В этом случае формат команды type следующий:

type

massiv=array [0..12] of real;

dabc=array [-3..6] of integer;

var

x, y: massiv;

z: dabc;

Тип индексов может быть любым скалярным типом (чаще всего целым), за исключением типа Real. Тип элементов массива может быть любым. В качестве примера рассмотрим описание массива М вещественного типа, состоящего из восьми элементов:

var М: Array [1..8] of Real; .

Индексы массивов чаще всего описываются, как показано выше, в виде отрезка целого типа (в примере это - 1..8). Две точки соответствуют синтаксису языка и записываются в обязательном порядке.

Описанный выше массив М, является одномерным, но можно описывать массивы и большей размерности, например, двумерные:

Var А: Array [1..3, 1..4] of Integer;.

Ссылка на элемент матрицы А, лежащего на пересечении i -й строки и j-ro столбца имеет вид А[i, j]. В целом для описанных ранее массивов М и А можно использовать, например, следующие операторы присваивания: M[i]:=A [5, j] + 2.5E3;

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

Массив на рисунке 1 состоит из восьми элементов, каждый из которых сохраняет число вещественного типа. Элементы массива пронумерованы. Такой массив является одномерным или простым.

12.1

0.13

-1.5

0

21.9

-3.7

5.0

121.7

1-й элемент массива

2-й элемент массива

3-й элемент массива

4-й элемент массива

5-й элемент массива

6-й элемент массива

7-й элемент массива

8-й элемент массива

Рис. 1. Одномерный массив

Массив на рисунке 2 состоит из четырёх строк и четырёх столбцов. Строки считаются первым измерением, а столбцы – вторым. Для доступа к элементам массива необходимо указать его имя и два индекса, первый - соответствует номеру строки, второй – номеру столбца.

3.5

7.8

1.3

0.5

-1.4

0.3

0

0.6

-5.7

-0.78

5.0

6.9

45.1

124.0

24.7

0.96

Рис. 2. Двумерный массив

Пример: ввод / вывод массивов.

program vv;

var

v: array[ I..3] of Integer;

mas: array [ I..2, 1..3] of Real;

i, j: Integer;

begin

read (v[ 1], v[2], v[3]);

readln; // переход на новую строку

for i: = 1 to 2 do

for j: =1 to 3 do

read (mas[ i, j]);

writeln ('массив v');

writeln; // печать пустой строки

for i: = 1 to 3 do

writeln( v[ i];5);

writeln;

writeln( 'массив mas');

for i := 1 to 2 do

begin

writeln;

for i: = 1 to 3 do

write ( mas[ i, j]:4);

end;

end.

Пример: Составить программу вычисления скалярного произведения двух векторов u и v, состоящих из четырех элементов, и длину вектора v[1,2…,4].

program sp;

var

s, dv: real;

u. v: array f [1..4] of real; i: integer;

begin

for i := 1 to 4 do

readln v[ i]);

readln;

for i := 1 to 4 do

readln u[ i];

s:=0;

dv := 0;

for i := 1 to 4 do

begin

s:=s + u[i] * v[i];

dv := dv + v[ i] * v[ i];

end;

dv :=sqrt( dv);

writeln ( 's=', s);

writeln ( 'dv=', dv:8:3);

end.

Содержание отчета

Представить преподавателю компьютерный вариант выполнения программы. В отчете записать формулировку задачи, блок-схему решения задачи, программу на языке Турбо Паскаль. Проанализировать полученные результаты. Сделать вывод по работе.

Контрольные вопросы

  1. Какая форма организации данных называется массивом?

  2. Для чего нужно описывать массив?

  3. Что включает в себя понятие номер и значение элемента массива?

  4. Опишите, как организовать вывод одномерного массива в строку? В столбец?

  5. Перечислите основные алгоритмы обработки массивов. Напишите фрагмент программы.

Литература

  1. Алексеев Е. Р., Чеснакова О. В. Турбо паскаль 7. 0. ─ С. 90 – 118

  2. Немнюгин С. А., Перколаб Л. В. Изучаем Turbo Pascal. ─ С.106 - 128

  3. Потопахин В. П. Turbo Pascal. Освой на примерах. ─ С. 22 – 23,33– 40

  4. Культин Н. Б. Turbo Pascal в задачах и примерах. ─ С. 47 - 53

  5. Чеканова Н. Н. Информатика и ИКТ: Учебное пособие. ─ С. 96 – 102.

Варианты индивидуальных заданий (первый уровень)

  1. Посчитать количество нулевых элементов в массиве действительных чисел А (100). Построить блок-схему, написать программу.

  2. Составить программу для решения задачи. Вычислить значение переменной S по формуле:

S=

где А и В - одномерные массивы, состоящие из двадцати элементов.

  1. Вычислить скалярное произведение двух векторов Х и Y размером 4. Скалярное произведение вычисляется по формуле:

S=

  1. Составить программу для решения задачи. Переписать положительные элементы массива Х (100) подряд в массив Y.

  2. Информация о количестве осадков, выпадавших в течении месяца, и о температуре воздуха задана в виде двух массивов. Определить, какое количество осадков выпало в виде дождя, какое в виде снега. (Считать, что идет дождь, если температура воздуха > 0ºС).

  3. Найти сумму элементов одномерного массива размером 4.Разделить каждый элемент исходного массива на полученное значение. Результат получить в том же массиве, напечатать в одной строке.

  4. Информация о количестве выпадавших в течении месяца осадков задана в виде массива. Определить, общее количество осадков за месяц.

  5. Найти среднее значение элементов заданного массива размером 5. Преобразовать исходный массив, вычитая из каждого элемента среднее значение.

  6. Вычислить сумму и разность двух заданных одномерных массивов размером 10. Результат напечатать в виде двух параллельных столбцов.

  7. Задан массив Х размером 5. Вычислить значение функции y=0,5 log x при значениях аргумента, заданных в массиве Х , поместить их в массиве Y. Напечатать результат (массивы Х и Y) в виде двух столбцов.

  8. Информация о температуре воздуха за месяц задана в виде массива. Определить, сколько раз температура опускалась ниже 0C.

  9. Задан массив размером 10. Сформировать два массива размером 5, включая в первый элементы исходного массива с чётными индексами, а во второй - с нечётными.

  10. Информация о количестве осадков и температуре воздуха за месяц сведена в таблицу. Определить самый мокрый день, самый теплый день.

  11. Регистрация направления ветра на горном плато производится один раз в день по очереди двумя исследователями. Каждый месяц все результаты сводятся в одну таблицу. Составить программу, выполняющую эту операцию.

Указание. Направление ветра кодируется следующим образом:

1 – северный

5 – северо-западный

2 – южный

6 – северо-восточный

3 – восточный

7 – юго-западный

4 - западный

8 – юго-восточный

  1. Написать программу, которая проверяет, есть ли во введенном с клавиатуры массиве элементы с одинаковыми значениями.

Варианты индивидуальных заданий (второй уровень)

  1. Информация о средней суточной температуре воздуха за месяц задана в виде массива. Определить, температура скольких дней была ниже среднемесячной.

  2. Среди N сотрудников отдела выделить получающих зарплату выше средней по данным следующей таблицы:

Фамилия

Должность

Оклад

1

Иванов

Начальник

12000

2

Петров

Сотрудник

6000

3

Сидоров

Секретарь

2000

  1. Рост учеников класса представлен в виде массива. Рост девочек кодируется знаком «+», рост мальчиков знаком «—». Определить средний рост мальчиков.

  2. Сформировать массив b=(b1, b2,…, bn), записав в него элементы массива a=(a1, a2, …,an)с четными индексами. Вычислить среднее арифметическое элементов массива B и удалить из него пятый элемент.

  3. В области 10 районов. Заданы площади, засеваемые в районе пшеницей, и урожай, собранный в каждом районе. Определить среднюю урожайность пшеницы по каждому району и по области в целом.

  4. Переписать элементы массива целых чисел x=(x1, x2, …, xn) в обратном порядке в массив y=(y1, y2,…, yn). Вычислить количество четных, нечетных и нулевых элементов массива y.

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

  6. Написать программу, которая выводит минимальный элемент введенного с клавиатуры массива целых чисел.

  7. Задан массив y из n целых чисел. Сформировать массив z таким образом, чтобы в начале шли отрицательные элементы массива y, затем положительные и, наконец, нулевые.

  8. Решение сводится к формированию массива из заданного включением в него только элементов, удовлетворяющих заданному условию.

  9. Написать программу, которая вычисляет среднюю температуру воздуха (за неделю). Пример ввода данных с клавиатуры

Введите температуру воздуха за неделю.

Понедельник – 12

Вторник – 11

Среда – 12

Четверг – 13

Пятница – 13

Суббота – 14

Воскресенье -14

  1. Написать программу, которая вычисляет среднее арифметическое ненулевых элементов введенного с клавиатуры массива целых чисел.

  2. Написать программу, которая вычисляет количество студентов в группе, чей рост превышает средний.

  3. В массиве целых чисел найти минимальный элемент.

*В массиве x=(x1, x2,…,xn) определить количество элементов, меньших среднего арифметического значения. Не упорядочивая массив, удалить из него элементы, расположенные между максимальным и минимальным значениями.