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

Разделы: Информатика


Тип урока: Практическая работа

Программно-дидактическое обеспечение: ПК. Локальная сеть. ОС Windows XP.Turbo Pascal.

Цели и задачи:

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

Требования к знаниям и умениям:

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

Учащиеся должны уметь:

  • выполнять разработку алгоритма (программы) по обработке одномерного массива;
  •  применять свои знания на практике.

План занятия

  1. Организационный момент.1 мин
  2. Постановка целей и задач занятия. Ознакомление с планом занятия. 1 мин
  3. Объяснение нового материала. 10 мин
  4. Решение задач основных типов. 15 мин
  5. Практическая работа на закрепление одномерных массивов (самостоятельное выполнение): 15 мин
  6. Подведение итогов. Выставление оценок. 3 мин

Ход урока

Презентация к уроку (приложение)

  • Объяснение нового материала.

Массивом называется совокупность элементов одинакового типа. Число элементов в массиве называется размерностью массива; каждый элемент массива задается своим порядковым номером в массиве – так называемым индексом. (слайд 1,2,3)

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

Для создания типа массивов в языке Pascal используются служебные слова TYPE и ARRAY, позволяющие создать пользовательский тип данных «Массив». Каждому типу массивов присваивается собственное имя; элементы, относящиеся к данному массиву, описываются в операторе VAR как переменные его типа. (слайд 4)

Ввод и вывод элементов массива осуществляется в циклах. Индексы элементов массивов записываются в квадратных скобках.

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

Язык Pascal допускает описание в программах одномерных массивов в следующем виде:

TYPE <Имя_типа_массива>=ARRAY [<Диапазон_индексов>] OF <Тип>,

где TYPE - служебное слово, используемое для создания пользовательского типа данных;

ARRAY … OF - служебные слова для описания массивов (“Массив…из”); (слайд 4)

<Имя_типа_массива> - задаваемое пользователем имя типа массива (требования к именам типов совпадают с требованиями к именам переменных);

<Диапазон_индексов> – диапазон изменения индексов массива. В качестве данного диапазона может выступить любой порядковый тип, кроме LONGINT. Чаще всего используют тип-диапазон, в котором задают границы изменения индексов;

<Тип> - тип элементов массива, например, REAL, INTEGER, CHAR и др.

Примеры описания типа массивов:

TYPE М=ARRAY [1..10] OF INTEGER;
TYPE AR=ARRAY [0..15] OF REAL;
TYPE VТ=ARRAY [-5..5] OF SINGLE;
TYPE GRUP=ARRAY [1..27] OF STRING[10].

Переменные, относящиеся к тому или иному типу массивов, должны быть соответственно объявлены в разделе описания переменных.

Например:

VAR REZ:M;
VAR P:AR;
VAR A:VТ;
VAR FIO:GRUP.

Можно также описать переменную как непосредственно имеющую тип массива, например:

VAR REZ:ARRAY [1..10] OF INTEGER;

При обращении к элементам массива в тексте программы обязательно требуется указывать их порядковый номер в массиве, например, REZ[1], POLE[0], A[5], FIO[i] (где i принадлежит диапазону изменения индексов массива).

Основные задачи по работе с одномерными массивами:

  • Нахождение минимального (максимального) элемента массива;
  • Нахождение суммы (произведения) элементов массива;
  • Нахождение количества элементов массива по определенному условию;
  • Упорядочивание элементов массива по убыванию (возрастанию).
  • Решение задач основных типов.

Рассмотрим перечисленные типы задач на следующих примерах.

Пример 1. Заполнить массив случайным образом. (слайд 8).

Пример 2. Нахождение наибольшего элемента в массиве

Известно, что 16 детишек ясельной группы разобрали все кубики. Определить у какого ребенка наибольшее количество кубиков.

Для описания списка количества кубиков у детишек воспользуемся типом массива KUB, для задания количества кубиков каждого из ребенка – переменной SOTR. Количество кубиков вводиться с клавиатуры.

Текст программы к приведенному примеру:

Program pr2;
Type KUB=array[1..16] of real;
Var i:integer;

sotr:KUB;
Max: real;

Begin
For i:=1 to 16 do
Begin
Writeln (‘Введите количество кубиков ’, i,’ –го ребенка, шт.’);
Readln(sotr[i]);
End;
Max:=sotr[1];
For i:=2 to 16 do if max<sotr[i] then max:=sotr[i];
Writeln(‘Наибольшее количество кубиков=’,max:10:2,’ шт.’);
End.

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

Аналогично может быть найден и наименьший элемент в массиве. Для этого достаточно заменить в изложенной программе условие max<sotr[i] на условие min>sotr[i], где i меняется от 1 до 1 до 16, min – переменная типа REAL.

Пример 3. Дан одномерный массив. Найти количество элементов массива, равных заданному k. (Приложение 1)

Посмотрим, что получилось. (Приложение 3)

Пример 4. Дан одномерный массив. Упорядочить его элементы в порядке возрастания. {Сортировка массива выбором (в порядке возрастания). Идея решения: пусть часть массива (по K-й элемент включительно) отсортирована. Нужно найти в неотсортированной части массива минимальный элемент и поменять местами с (K+1)-м}

Program Sortirovka;
Var N, I, J, K, Pr : Integer; A : Array [1..30] Of Integer;
Begin 
Write('Введите количество элементов: ');
ReadLn(N);
For I := 1 To N Do
Begin
Write('Введите A[', I, '] ');
Readln(A[I]);
End;
WriteLn;
For I := 1 To N - 1 Do
Begin
K:= I;
For J := I + 1 To N Do
If A[J] ;
Pr := A[I];
A[I] := A[K];
A[K] := Pr;
End;
For I := 1 To N Do
Write(A[I], ' ');
End.
Тест: N = 10; элементы массива - 1, 2, 2, 2, -1, 1, 0, 14, 5, 3.
Ответ: -1, -1, 0, 1, 2, 2, 2, 3, 5, 14.

  • Практическая работа на закрепление одномерных массивов. 

Задание 1: Определить результат выполнения алгоритма, представленного в виде блок-схемы:

Всем учащимся раздаются карточки (приложение 2) .

Задание 2:Найти ошибки в написании программы:

Program pr_2:
Var mas:array[1..13] of real;

I:integer;
Min:real;

Begin

For I:=1 to 13 do

Begin Write(‘введите элемент массива’);

Readln(mas[i]);

End:
Max:=mas[6]; min:=mas[12];
For I:=7 to 8 do
If max<mas[i] then max:=mas[i];
For I:=1 to 2 do
If min>mas[i] then min:=mas[i];
Writeln(‘самая высокая температура летом’, max);
Writeln(‘самая низкая температура зимой’, min);
End.

Задание 3: Дан одномерный массив А(N), N=25, заданный случайным образом. Вычислить сумму положительных элементов данного массива.

  • Подведение итогов. Выставление оценок.