Вы находитесь на странице: 1из 27

Задача.

Задача.
С клавиатуры вводится n чисел (числа могут
повторяться). Необходимо подсчитать количество

чисел равных наименьшему числу.


Давайте составим алгоритм решения
задачи.
• Ввести n (количество вводимых чисел).
• Найти наименьшее число.
• Ввести число и запомнить его в переменную min.
• В цикле пока не просмотрим n чисел делать:
• Ввести число и запомнить его в переменную x/
• Сравнивать x с min. Если x<min, то записываем в
переменную min значение x.
• Сравнить введенные ранее числа со значением
min.
• А как? Ведь мы не запоминали вводимые числа.
РЕШИМ
РЕШИМ КРОССВОРД
КРОССВОРД
1 2 3 4 5

1. Символьный тип данных


2. Тип данных целые числа
3. Тип данных вещественный
4. Логический тип данных
РЕШИМ
РЕШИМ КРОССВОРД
КРОССВОРД
1 2 3 4 5
I
N B
T O
E O
R G L
E E E
A R R A Y
L E N
A
L

1. Символьный тип данных


2. Тип данных целые числа
3. Тип данных вещественный
4. Логический тип данных
Тема урока:
«Одномерные массивы.
Обработка массива»
ЦЕЛИ:
ЦЕЛИ:

--дать
датьопределение
определениемассива,
массива,как
какструктурированного
структурированноготипа
типа
данных,
данных,рассказать
рассказатьооспособах
способахописания
описанияиизаполнения
заполнения
массива,
массива,действиях
действияхнад
надэлементами
элементамимассива
массива
--сформировать
сформироватьпредставление
представлениеоомассиве
массивекак
какоосредстве
средстве
хранения
храненияинформации;
информации;
--определить
определитьэффективность
эффективностьиспользования
использованиямассивов
массивовпри
при
обработке
обработкебольшого
большогоколичества
количестваданных;
данных;
--научится
научитсяописывать
описыватьодномерный
одномерныймассив,
массив, построить
построить
алгоритм
алгоритмработы
работыссмассивами.
массивами.
• Массив представляет собой совокупность
данных одного типа с общим для всех
элементов именем.
• Массив относится к структурированным
типам данных (упорядоченная
совокупность данных).
• Номера элементов массива иначе
называются индексами, а сами элементы
массива — переменными с индексами
(индексированными переменными).
Массивы
НОМЕР
НОМЕР
элемента
элемента массива
массива
(ИНДЕКС)
A массив (ИНДЕКС)
1 2 33 4 5
5 10 15 20 25

A[1] A[2] A[3] A[4] A[5]

ЗНАЧЕНИЕ
ЗНАЧЕНИЕ элемента
элемента
массива
массива НОМЕР (ИНДЕКС)
элемента
элемента массива:
массива: 22

A[2]
ЗНАЧЕНИЕ
элемента
элемента массива:
массива: 10
10
1 2 3 4 5 6 7 8 9 10
a -5 8 2 4 -9 -1 6 4 2 1
Значение элемента массива
а[3]=2,
а[7]=4.
имя массива а[3]=2
индекс значение

Данные в массивах сохраняются только до конца


работы программы.
Для их долговременного хранения программа
должна записать данные в файл.
Объявление массивов
Зачем объявлять?
• определить имя массива
• определить тип массива
• определить число элементов
• выделить место в памяти
Массив целых чисел:
начальный конечный тип
имя
имя индекс
индекс индекс элементов

var A : array[ 1 .. 5 ] of integer ;


Размер через константу:

const N=5;
var A: array[1.. N ] of integer;
Объявление массивов
Массивы других типов:
var X, Y: array [1..10] of real;
C: array [1..20] of char;
Другой диапазон индексов:

var Q: array [0..9] of real;


ИндексыC: array
других [-5..13] of char;
типов:

var A: array ['A'..'Z'] of real;


B: array [False..True] of integer;
...
A['C'] := 3.14259*A['B'];
B[False] := B[False] + 1;
Массивы
Объявление:
const
const NN == 5;
5;
var
var a:
a: array[1..N]
array[1..N] of
of integer;
integer;
i:
i: integer;
integer;
Ввод с клавиатуры:
a[1] = 5
for i:=1
i:=1 to
to N do
do begin
begin a[2] = 12
write('a[', i,
i, ']=');
']='); a[3] = 34
read
read ( a[i]
a[i] );
); a[4] = 56
Поэлементные
end;
end; операции: a[5] = 13

Вывод
for
на экран:
for i:=1
i:=1 to
to NN do
do a[i]:=a[i]*2;
a[i]:=a[i]*2;

writeln('Массив
writeln('Массив A:');
A:'); Массив A:
for
for i:=1
i:=1 to
to NN do
do 10 24 68 112 26
write(a[i]:4);
write(a[i]:4);
Характеристики массива:
• тип — общий тип всех элементов массива;
• размерность (ранг) — количество
индексов массива;
• диапазон изменения индекса (индексов) —
определяет количество элементов в массиве
Способы
Способыописания
описаниямассива
массива

var ИмяМассива: array [НижняяГраница.. ВерхняяГраница] of Тип Элементов;

Например:

Const n=100;

var a: array[1..n] of real; { 100 элементов — вещественные числа }

b: array[0..50] of char; { 51 элемент — символы }

с: array[-3..4] of boolean; { 8 элементов — логические значения }

x,y: array[1..20] of integer; { два массива x и у содержат по 20

элементов — целые числа }


Способы
Способыописания
описаниямассива
массива

Массив можно описать как типизированную константу.

Например:
const x: array[1..5] of integer=(l,3,5,7,9);

В этом примере не просто выделяется память под массив, а


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

Предварительное описание типа в разделе описания


типов данных.

Type ИмяТипа = аггау [НижняяГраница.. ВерхняяГраница ] of Тип


Элементов;
Var ИмяМассива : ИмяТипа;

Например.

Type z: array[1..20] of integer;


Var x, y: z
Задание
Задание 88 стр
стр 13
13 (( ))
1. Как вы думаете, при выполнении программы
обязательно заполнять все ячейки данными?
Почему?
2. Если ячейка не заполнена то, какое значение в ней
находится?
3. Может ли реальное количество элементов в массиве
может быть меньше, чем указано при описании?
Почему?
4. А может быть больше? Почему?
Способы
Способы заполнения
заполнения массива
массива

1. Ввод данных с клавиатуры:


for i:=1 to n do read (a[i]);

2. Ввод данных с помощью датчика случайных чисел.


Например. Заполним массив числами в диапазоне от -3 до
7.
randomize;
for i:=1 to n do a[i]:=random(11)-3;

3. Считывая значения элементов из файла:


for i:=1 to n do read (f, a[i]);
Способы
Способы заполнения
заполнения массива
массива
4. Присваивание заданных значений;
Например. Заполним массив четными числами
for i:=1 to n do a[i]:=i*2;
или
for i:=1 to n do begin
readln (x);
if x mod 2=0 then a[i]:=x

Вывод элементов массива


Вывод элементов массива осуществляется в цикле:
for i:=1 to n do write (a[i],’ ‘)
Действия
Действия сс одномерными
одномерными
массивами
массивами
Например.
Var A, B: array[1..n] of integer;
Выражение Результат

A=B истина, если значение каждого элемента массива A


равно соответствующему значению элемента B.
A<>B. результат истина, если хотя бы одно значение элемента
массива A не равно значению соответствующего
элемента массива B
A:=B все значения элементов массива B присваиваются
соответствующим элементам массива A.
Действия
Действия над
над элементами
элементами массива.
массива.
Вычислим сумму элементов.

Const n=10;
Var a:array[1..n] of integer; {описываем массив а}
i, s: integer;
begin
randomize; s:=0;
for i:=1 to n do begin
a[i]:=random(11)-3; {заполняем массив а случайными числами }
write (a[i],’ ‘); {вывожу заполненный массив}
end;
for i:=1 to n do s:=s+a[i]; {находим сумму элементов массива а}
writeln (‘сумма элементов массива =’, s) {выводим ответ }
end.
Действия
Действия над
над элементами
элементами массива.
массива.
Например: найти произведение элементов имеющих нечетный индекс.

Const n=10;
Var a:array[1..n] of integer; {описываем массив а}
i, p: integer;
begin
randomize; p:=1;
for i:=1 to n do begin
a[i]:=random(11)-3; {заполняем массив а случайными числами }
write (a[i],’ ‘); {вывожу заполненный массив}
end;
for i:=1 to n do if i mod 2<>0 then p:=p*a[i] {находим произведение
элементов массива а имеющих нечетный индекс}
writeln (‘призведение элементов массива =’, s) {выводим ответ }
end.
Действия
Действия над
над элементами
элементами массива.
массива.
Например, найти номер первого из элементов массива A, имеющего
значение равное нулю. Если таких элементов нет, вывести
соответствующее сообщение.
Const n=10;
Var a:array[1..n] of integer; i, p: integer;
begin
randomize; p:=1;
for i:=1 to n do begin
a[i]:=random(11)-3; {заполняем массив а случайными числами }
write (a[i],’ ‘); {вывожу заполненный массив}
end; i:=1;
Repeat
i:=i+1;
until (a[i]=0) or (i=n) ; выход из цикла, когда нашли нужный элемент или
массив закончился}
if a[i]=0 then writeln (‘номер первого нулевого элемента=’, i)
else writeln (‘ таких элементов нет!’); end.
Действия
Действия над
над элементами
элементами массива.
массива.

Поиск максимального (минимального) элемента и его


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

• Чем ценны массивы?


• Каким образом задается описание массива, что в нем
указывается?
• Каким образом задается обращение к элементу
массива?
• Почему при описании массива предпочтительнее
употреблять константы , а не указывать размеры
массива в явном виде?
Домашнее
Домашнее задание
задание

• §1.1читать,
• Решить задачи №3, №4 на стр. 12