Учитель ждет, пока дети успокоятся, приготовятся к уроку, при этом делает необходимые замечания. Здоровается.
2. Сообщение темы и цели урока.
Сегодня на уроке мы с вами познакомимся с новым понятием «одномерные массивы», узнаем, что же это такое, как их формировать, как выводить на экран, для чего они нужны и научимся с ними работать. Итак, записываем тему урока «Одномерные массивы».
3. Актуализация знаний и умений учащихся.
Для изучения новой темы нам понадобятся ранее приобретенные знания. Давайте вспомним некоторые моменты:
Что называется циклом? (Цикл - это специальная конструкция языка, позволяющая запрограммировать многократное выполнение определённого блока команд.)
С какими операторами цикла в Pascalвы знакомы?(Оператор цикла с параметром (FOR..TO..DO); с предусловием (WHILE…DO…); с постусловием (REPEAT…UNTIL…).)
Какой из данных операторов является универсальным? (WHILE)
При использовании какого оператора цикл выполнится как минимум один раз? (REPEAT)
Каково главное отличие условных операторов цикла от оператора цикла с параметром? (В теле условных циклов необходимо изменять переменные, входящие в условие, а в теле цикла с параметром параметр изменять нельзя)
4. Ввод основных понятий темы.
В программах очень часто приходится обрабатывать большие объёмы однотипных данных. Применять обычные переменные для этого очень неудобно. Представьте себе: вам нужно найти сумму 1000 целых чисел, притом ни одного из них не потерять. Для этого вам придется ввести 1000 переменных с разными именами и одинакового типа, которые невозможно обработать в цикле. Или вывести на экран эту тысячу чисел. Прописывать каждое число было бы глупо и трудоемко. Как же поступить в этом случае?
На самом деле эту проблему позволяет решить использование массивов.
Массив – это структурированный тип данных, состоящий из фиксированного числа элементов, имеющих один и тот же тип. Доступ к элементам массива осуществляется простым указанием номера элемента – индекса.
Такой тип данных применяется в программировании для обозначения объектов, аналогичных числовым последовательностям в математике, где сразу целая группа чисел обозначается одним именем (чаще всего буквой), а для обращения к каждому отдельному числу данной последовательности используются различные индексы (номера элементов). В математике это может выглядеть, например, так: a1, а2, а3, …, аn. Другой пример – список класса в журнале.
Массивы бывают одномерные (например, ряд чисел), двумерные (например, матрицы, таблицы умножения) и многомерные. На практике чаще всего встречаются первые два вида. Сегодня мы рассмотрим только одномерные массивы.
Одномерный массив– это фиксированное количество элементов одного и того же типа, объединенных одним именем, причем каждый элемент имеет свой уникальный номер, и номера элементов идут подряд (линейный массив).
Представьте себе комод с ящиками, в каждом из которых лежит какая-то вещь. Так вот, сам комод и будет в нашем случае массивом, номера ящиков – индексами, а вещь, которая в них лежит – элементом массива. То есть, массив – это составной объект, образованный из пронумерованных элементов одного и того же типа.
Как было сказано ранее, массив – это тип данных, и поэтому переменная типа «массив» описывается в разделе программы Varследующим образом (для одномерных):
VAR<Имя переменной>: ARRAY[<минимальное значение индекса>..<максимальное значение индекса>]OF<тип элементов>.
Например, VAR Mass1: ARRAY [1..100] OF Integer.
Индексы – переменные порядкового типа. Они могут быть различными, но чаще всего для этого используется ограниченный тип (диапазон) целых чисел, например, 1..100. Тип же самих элементов может быть любым, в том числе и составным. Количество элементов массива называется его размерностью. Несложно подсчитать, что при последнем способе описания множества индексов размерность массива равна:
максимальное значение индекса – минимальное значение индекса + 1.
Индексы элементов массива могут начинаться с любого целого числа, в том числе и отрицательного, например: Type b = Array [-5..3] Of Boolean. Массивы данного типа будут содержать 9 логических переменных, пронумерованных от -5 до 3”.
var A : array[ 1 .. 15 ] of integer
var X, Y: array [1..10] of real
var Q: array [0..9] of real
var A: array ['A'..'Z'] of real
Также можно использовать константу для описания размера массива.
const N=5;
var A : array[ 1 .. N] ofinteger
Можно выделить три этапа работы с массивом:
Заполнение массива данными.
Действия с элементами массива.
Вывод массива или отдельных данных на экран.
Способы ввода данных в массив.
Для ввода данных в память необходимо организовать цикл. Поскольку число повторений ввода данных известно, удобно использовать цикл пересчет. Ввод описанного массива а может иметь вид:
Склавиатуры:
for i:=1 to N do
begin
write ('введитеa[', i, ']=');
read ( a[i] );
end;
Как вы уже заметили вызов i–го элемента массива aосуществляется следующим образом: a[i].
С помощью генератора случайных чисел.
Например, массив заполнится случайными числами в интервале [50,150) в результате выполнения фрагмента
for i:=1 to N do
a[i] := random(100) + 50;
Вспомним, что функция
Random(x)– возвращает случайное целое число в диапазоне от 0 до x-1.
Random– возвращает случайное вещественное число из [0; 1).
С помощью вычисления элементов по формуле.
for i:=1 to N do
a[i] := I + 50;
Обратите внимание, что заполнение и вывод массива можно осуществлять только последовательно и поэлементно, то есть можно сначала присвоить значение первому элементу, затем второму и т.д. Аналогично обстоит дело и с выводом массива на экран – мы станем выводить на экран первый элемент, второй, третий и так до последнего.
Блок вывода массива в большинстве случаев присутствует в программе. Так же как и блок ввода, он использует цикл.
writeln('МассивA:');
for i:=1 to N do
write(a[i]:4);
5. Закрепление (применение полученных знаний).
Задача 1.Заполнить массив элементами последовательности Фибоначчи (по формуле). Последовательность Фибоначчи определяется так (a1)=1, a(2)=1, при i>2 a(i)=a(i-1)+a(i-2)
program chisla_fibonachi;
const n=10;
var i:integer;
a:array[1..n] of real;
begin
a[1]:=1;
a[2]:=1;
for i:=3 to n do
a[i]:=a[i-1]+a[i-2];
writeln("числафибоначчи');
for i:=1 to n do
writeln('a[',i,']=',a[i]:4:1);
end.
Результатом будет последовательность чисел Фибоначчи.
Далее рассмотрим следующую задачу
Задача 2. Массив предназначен для хранения ростов двенадцати человек.
С помощью датчика случайных чисел заполнить массив целыми значениями, лежащими в диапазоне от 163 до 190 включительно.
program massiv_rosta;
var a,b,i:integer;
r:array[1..12] of integer;
begin
writeln('ввестиначальноезначениедиапазона');
read(a);
writeln('ввести конечное значение диапазона');
read(b);
writeln('сформированный массив');
for i:=1 to 12 do
begin
r[i]:=random(b-a)+a;
write ('r[',i,']=',r[i],' ');
end;
end.
Мы получим массив, в котором рост выбран случайным образом.
Задача 3.(резерв) Вычислить сумму элементов массива (к задаче 2).
program massiv_rosta;
var a,b,i:integer;
r:array[1..4] of integer;
S:real;
begin
writeln('ввести начальное значение диапазона');
read(a);
writeln('ввести конечное значение диапазона');
read(b);
writeln('сформированный массив');
for i:=1 to 4 do
begin
r[i]:=random(b-a)+a;
write ('r[',i,']=',r[i],' ');
end;
S:=0;
For i:=1 to n do
S:=S+r[i];
writeln;
write(‘Сумма всех элементов массива =’,S);
readln;
end.
Задача 4. (резерв)Найти наибольший элемент в массиве (к задаче 2).
program massiv_rosta;
var a,b,I, max:integer;
r:array[1..12] of integer;
begin
writeln('ввестиначальноезначениедиапазона');
read(a);
writeln('ввести конечное значение диапазона');
read(b);
writeln('сформированный массив');
for i:=1 to 12 do
begin
r[i]:=random(b-a)+a;
write ('r[',i,']=',r[i],' ');
end;
max:=r[1];
for i:=2 to n do
if max<r[i] then max:=r[i];
write(‘наибольший элемент массива =’,max);
readln;
end.
6. Подведение итогов урока.
Провести фронтальный опрос. Отметить наиболее активных учеников.
Домашнее задание.
Конспект, составить алгоритм и программу для определения минимального элемента в массиве размером 15.