Тема «Структурированные типы данных. Массивы»
Знать: Видыструктурированных типов данных. Правила описания массивов; способы заполнения массивов, основные алгоритмы обработки массивов.
Уметь: Описывать и заполнять массивы; осуществлять поиск, сортировку, обработку элементов массива.
Цели: 1. Познакомить с понятием массива.
2. Освоить способы по созданию массивов в памяти и обработке массивов).
Массив - это совокупность данных одного типа. (Пассажиры, зрители, ученики 11 А класса и т.д. Массивы бывают одномерные (в одну строку или столбец); Двумерные (несколько строк и столбцов)
Массив имеет:
ИМЯ - латинские буквы или буквы с цифрой, например: A. MAS. FAM. ROST
РАЗМЕРНОСТЬ А[1..5]- 5 элементов, FAM [I..25] -25 фамилий
При описании массива ему резервируется память под заданное количество элементов. Var
FAM: ARRAY [I..25] of String[10]; -25 фамилий до 10 букв длиной каждая
God : ARRAY [ I ..25] of Integer; - Год рождения для 25 учеников
Ос : ARRAY[1..7.1..25]ofByte;
Обращение к элементам массива производится по имени массива и номеру его элемента (пассажир с 12 места, зритель с 3 ряда 16 места и т.д.)- FAM[1], God[l] - фамилия и год рождения первого ученика.
Способы заполнения массивов.
1. Задаются в программе FAM[1]:='Абрамов ":God[l]:=1988;Oc[l.l]:=5:
2. В разделе CONST
CONST
Fam=ARRAY[ 1.4] OF String[ 10] = ("Абрамов'.'Белецкая','Борисов'.'Витрук');
3. Задаются вводом с клавиатуры (Так как массив состоит из нескольких
элементов количество которых заранее известно, то их удобнее задавать
и обрабатывать в цикле FOR(цикле со счетчиком) ).
For l:=l T0 4 Do
Begin
Write Ln('Задайте фамилию');
ReadLn(Fam[l]); End;
4. Чтение из файла.
Assign(F,'C: Student.dal'); {установили связь между именем файла F в программе и физическим именам I
Reset(F): {Открыли файл для чтения)
For l:=l ТО 4 Do ReadLn(f.A[l]); {Прочитали из файла на диске' С:'
Student.dat' 4 элемента и занесли их в массив А}
5. Задаются датчиком случайных чисел
Randomize: [Подключили генератор случайных чисел}
Forl:=I TO 4 Do
Begin
A[l]:=Random( 100); { задается случайное число от 0 до 99.)
WriteLn(A[l]):
end;
6. Рассчитываются по формуле
For I:=l ТО 4 Do A[I]:=B[1]*C[I]; [элемент массива А равен произведению
элементов массивов В и С}
Основные типы задач на обработку массивов.
Массивы используются при обработке большого количества однотипных данных. Типовые алгоритмы:
ü Замена элементов массива.
ü Поиск произведения, суммы, количества элементов массива.
ü Поиск max, min элементов массива.
ü Сортировка элементов массива.
Задача
Воздушный шар упадет, если общий вес 8 ящиков (каждый до 10) кг больше 50 килограмм. Определить средний вес ящика, самый тяжелый ящик. Все ящики тяжелее среднего заменить на минимальный вес.
Программа.
Program C'ircl;
Var
Ves:array [ l..8] of real;
Min.Max.Mid.Sum:real;
I: Integer;
Begin
Max:=0;
Sum:=0;
For l:=l to 8 Do
Begin
Ves [i]:=Random( 10)+1: (Вес задается случайным числом от I до 10)
Writeln(‘Вес ящика с номером ', I , 'равен ‘, Ves[i]);
Sum:=Sum+Ves|i|; { считаем бишй нес}
End;
For l:=l to 8 Do Begin
If Ves[i]<Min Then Min:=Ves[i]: {Поиск минимального значения}
If Ves[i]>Max Then Max:=Ves[i]: {Поиск максимального значения)
End;
Writel.n('Самый легкий ящик’,Min);
Writeln('Самый тяжелый яшик ', Max);
Mid:= Sum/8; {Определение среднего веса}
For I:=M to 8 Do \
Begin
If Ves[i]> Min then Ves[i]:=Min; {Замена элементов на минимальный }
WrheLn (‘для полета нужно взять яшик номер’,I,’ с весом ', Ves[i]);
Sum:=Sum- Ves[I]:{Определяем вес ящиков после замены) -.
End;
It'Siim<50 Then WrileLn(‘ шар взлетит’);
End.