вводный урок по теме "Массивы"
Опубликовано: 2011-01-16 16:46:48 Автор: Сухорукова Татьяна Васильевна Комментарии (3)
Электронное пособие
Цели урока:
2. Примеры реальных объектов, которые можно представить в виде массива.
3. Правила описания массивов на языке Turbo Pascal.
4. Примеры использования масивов.
5. Использование циклов при операциях с массивами.
6. Примеры операций с массивами на языке Turbo Pascal.
I.Объяснение нового материала.
В программировании даже при написании самых простых программ возникает необходимость в большом количестве переменных. Обычно они разные по типам и по использованию, но бывают ситуации, когда эти переменные одинаковы и их необходимо очень большое количество.
Для того, чтобы Вы лучше поняли, я приведу простой пример. Давайте представим работу такой программы, как нахождение среднего арифметического среди 100 чисел. Что нам понадобиться для написания такой программы? Конечно, сами числа. Для хранения 100 чисел мы должны использовать 100 переменных. Описать их можно, скажем, следующим образом:
var
n1,n2,n3,n4,n5,
n6,n7, ..., n100: Integer;
Это будет выглядеть крайне громоздко, не так ли? Вот здесь и возникает понятие массивов.
Массив - это на самом деле одна переменная, но она содержит в себе большое количество отдельных элементов, того типа, который определит программист, и столько, сколько он захочет. (При этом размер массива несколько ограничен). Что это означает? Что заведя переменную-массив мы как бы создаем цепочку переменных. После чего мы можем обратиться к любому элементу этой цепочки: прочитать его, изменить, сделать с ним все, что можно сделать с обычной переменной.
Мы можем создать цепочку и из чисел, и из символов, да и вообще из чего угодно. Сегодня мы разберем создание массивов из чисел, а далее по ходу рассылки разберемся и с другими типами массивов.
Индекс – что-то (чаще всего номер), что позволяет отличать элементы массива один от другого и обращаться к ним.
Массивы, как и простые переменные, подлежат описанию в разделе переменных:
VAR <имя>: ARRAY[] OF <тип элементов>;
array (эррэй) - массив. of (оф) - из.
Тип индексов - любой скалярный тип кроме real. Индексы можно вычислять.
Тип элементов - любой для данной версии языка.
[min..max] - размер массива. min - нижняя, max –верхняя границы индексов. min<=max. Границы можно задать с помощью переменных.
Можно задавать постоянный массив:
constx: array[1..10] ofinteger=(4,6,3,5,2,1,7,8,9,13);
const x: array [1..8] of char=('a','b','c','d','e','f','g','h');
Элементы таких массивов являются константами.
Если массивы одинаковы и отличаются лишь именами, то их можно описать в одной строке:
var a,b,c :array[1..n] of real; , где n -верхняя граница индекса и n описывается в разделе констант.
Сколько элементов в этом массиве? Какого они типа? Как они нумеруются?
Z: array[-8..-1] ofinteger;
Сколько элементов в этом массиве? Какого они типа? Как они нумеруются?
Mass: array[5..15] ofinteger;
Сколько элементов в этом массиве? Какого они типа? Как они нумеруются?
Вот пример описания массива на 100 чисел:
var Mas: Array [1..100] of Integer;
begin
Mas[1] := 100;
Readln(Mas[2]);
Write(Mas[4]);
if Mas[100] < 18 then Halt;
Mas[50] := Mas[49] + Mas[1];
end.
Для ввода данных в память необходимо организовать цикл. Поскольку число повторений ввода данных известно, удобно использовать цикл пересчет. Ввод описанного массива а может иметь вид:
Write (‘введите элементы массива через пробел’);
For i:=1 to n do
Begin
Read(a[i]);
End;
Ввод массива.
Program V1;
Const n=10;
Var А: array[1..n] of integer;
i: integer;
Begin
For i:=1 to n do
begin
writeln('Введите элементы массива ');
readln(А[i]);
end;
End.
Вывод массива.
Program V2;
Const m=10;
Var A: array[1..m] of integer;
i: integer;
Begin
For i:=1 to m do
begin
writeln('Вывод элементов массива ');
writeln (A[i]);
end;
End.
Задан одномерный массив А[1..15], определить сумму отрицательных элементов.
Program P1;
Const m=15;
Var К: array[1..m] of integer;
i,S: integer;
Begin
For i:=1 to m do
begin
writeln('Введите элементы массива ');
readln(К[i]);
end;
S:=0;
for i:=1 to m do
if К[i]<0 then S:=S+ К[i];
writeln('S=',S)
End.
Генерация элементов массива с помощью функции случайных чисел.
Program P2;
Const m=10;
Var F: array[1..m] of integer;
i: integer;
Begin
Randomize;
{функция позволяет перемешивать числа из диапазона указанном в функции randomи употребляется перед ней }
For i:=1 to m do
begin
F[i]:=random(101);
{Функция random(101) генерирует целые
числа в диапазоне от 0 до 100}
write(F[i]);
end; End.
Вот такая программа. Здесь я использую новую функцию Random , думаю, она вам не знакома. Очень интересная функция.
Функция Random
Данная функция возвращает от своей работы случайное число. Что значит "случайное число"? Это значит, что функция возвращает от своей работы какое-то число, каждый раз новое. В качестве параметра задается максимальное значение случайного числа, иначе говоря функция не возвратит число большего диапазона. Для того, чтобы использовать эту функцию, необходимо включить (так говорят, однако мне нравиться больше "инициализировать" - на включение это мало похоже) датчик случайных чисел. Тогда функция начнет нормально работать и возвращать действительно случайные значения.
Инициализация датчика случайных чисел (ДСЧ) происходит вызовом процедуры Randomize. Вы видите ее перед циклом.
Теперь посмотрите, как я использую эту функцию в программе. Дело в том, что вводить с клавиатуры 100 чисел не так уж и приятно, верно? Вот я и заполняю массив случайными числами. Диапазон до 500 вполне здесь подходит, числа будут не очень большие, но и не очень маленькие. При этом я циклом изменяю значение массива и с помощью переменной I пробегаюсь по всем его элементам, заполняя их случайными числами.
Этот пример хорошо демонстрирует создание массива и доступ к его элементам.
Поиск максимальных и минимальных элементов
Дан одномерный массив Kиз 10 целых элементов, найти максимальный элемент и его индекс.
Решение:
Program Poisk_2;
Const maxM=10;
Var К: array[1..maxM] of integer;
Max, i, j: integer;
Begin
Randomize;
For i:=1 to maxM do
begin
К[i]:=random(101);
write(К[i]);
end;
Max:=K[1];
J:=1;
for i:=2 to maxM do
if Max
writeln('Максимальный элемент=', max);
writeln('Индекс макс. элемента=', j);
End.
СОРТИРОВКА ВЫБОРОМ
For i:=1 to N-1 do
begin
K:=i; max:=A[i]
for j:=i+1 to N do
if A[j]>max then
begin
max:=A[j];
K:=j;
end;
A[K]:=A[i];A[i]:=max;
end;
II. Рефлексия.
Составить программу нахождения среднего арифметического элементов массива.
Program N1;
var
M: Array [1..100] of Integer;
S: Real;
I: Byte;
begin
Randomize;
ForI := 1 to 100 do
M[I] := Random(500);
ForI := 1 to 100 do
S := S + M[I];
S:= S/ 100;
Write('Среднее арифметическое всех чисел массива: ', S);
end.
III. Домашнее задание.
1 Дан массив из 15 чисел. Заполните его случайными числами. Определить, сколько в нем элементов, отличных от последнего элемента. Вывести их количество. 2 Дан массив из 50 чисел. Заполните его случайными числами. Вывести на экран сначала все положительные его элементы, а затем все отрицательные. 3 Дан массив из 10 чисел. Введите его с клавиатуры, после чего измените у всех чисел знак на противоположный. Вывести получившийся массив на экран.
IV. Подведение итогов урока
Массив– группа элементов одного типа, объединенных под общим именем.
Индекс– что-то (чаще всего номер), что позволяет отличать элементы массива один от другого и обращаться к ним.
Массивы описываются в разделе описания переменных. Общий вид описания:
<имя массива>: array [<начальный индекс>..<конечный индекс>] of <тип элемента>;
Примеры:
A : array [1..10] of real;
для ввода массива можно использовать цикл:
For i:=1 to 10 do read( A[i] );
С отдельным элементом массива можно делать все, что с любой переменной. A[i]:=25
Функция Random(A: Integer);.
Данная функция возвращает от своей работы случайное число.
Среди введенных чисел максимальное мы находим следующим образом:
Сначала за максимальное принимается первое число;
После оно сравнивается со всеми оставшимися числами, при этом:
Если следующий элемент больше принятого за максимум (переменная Max), то оно принимается за максимум.
После сравнения всех элементов в конце концов остается одно число, которое больше всех в массиве.
Цели урока:
- познакомить учащихся с определением массива, индекса;
- показать естественность использования циклов при обработке массивов;
- продемонстрировать преимущество использования массивов при решении некоторых типов задач;
- показать правила описания массивов в среде Turbo Pascal и продемонстрировать простейшие алгоритмы на массиве (поиск наибольшего, поиск заданного элемента и т.д.)
- Учащиеся должны знать основные типы данных и операции над ними, структуру условного и циклических операторов и их особенности.
- Учащиеся должны уметь формулировать алгоритмы (линейные, ветвящиеся и циклические) словесно, записывать их в виде блок-схем, и программ, анализировать простые блок-схемы и программы.
Этапы урока
1. Новая тема
2. Примеры реальных объектов, которые можно представить в виде массива.
3. Правила описания массивов на языке Turbo Pascal.
4. Примеры использования масивов.
5. Использование циклов при операциях с массивами.
6. Примеры операций с массивами на языке Turbo Pascal.
2. Рефлексия
Составить программу для нахождения среднего арифметического элементов массива
3. Домашнее задание.
4. Подведение итогов урока.
I.Объяснение нового материала.
В программировании даже при написании самых простых программ возникает необходимость в большом количестве переменных. Обычно они разные по типам и по использованию, но бывают ситуации, когда эти переменные одинаковы и их необходимо очень большое количество.
Для того, чтобы Вы лучше поняли, я приведу простой пример. Давайте представим работу такой программы, как нахождение среднего арифметического среди 100 чисел. Что нам понадобиться для написания такой программы? Конечно, сами числа. Для хранения 100 чисел мы должны использовать 100 переменных. Описать их можно, скажем, следующим образом:
var
n1,n2,n3,n4,n5,
n6,n7, ..., n100: Integer;
Это будет выглядеть крайне громоздко, не так ли? Вот здесь и возникает понятие массивов.
Массив - это на самом деле одна переменная, но она содержит в себе большое количество отдельных элементов, того типа, который определит программист, и столько, сколько он захочет. (При этом размер массива несколько ограничен). Что это означает? Что заведя переменную-массив мы как бы создаем цепочку переменных. После чего мы можем обратиться к любому элементу этой цепочки: прочитать его, изменить, сделать с ним все, что можно сделать с обычной переменной.
Мы можем создать цепочку и из чисел, и из символов, да и вообще из чего угодно. Сегодня мы разберем создание массивов из чисел, а далее по ходу рассылки разберемся и с другими типами массивов.
- Определение массива и индекса
Индекс – что-то (чаще всего номер), что позволяет отличать элементы массива один от другого и обращаться к ним.
-
Примеры реальных объектов, которые можно представить в виде массива, обсуждение почему это так:
- Почему книгу можно считать “массивом”? Что в этом случае будет элементом массива, а что - индексом?
- Почему дом можно считать “массивом”? Что в этом случае будет элементом массива, а что - индексом?
- Почему шахматную доску можно считать массивом? Что в этом случае будет элементом массива, а что - индексом?
- Почему футбольную команду можно считать массивом? Что в этом случае будет элементом массива, а что - индексом?
- Правила описания массивов на языке Turbo Pascal
Массивы, как и простые переменные, подлежат описанию в разделе переменных:
VAR <имя>: ARRAY[] OF <тип элементов>;
array (эррэй) - массив. of (оф) - из.
Тип индексов - любой скалярный тип кроме real. Индексы можно вычислять.
Тип элементов - любой для данной версии языка.
[min..max] - размер массива. min - нижняя, max –верхняя границы индексов. min<=max. Границы можно задать с помощью переменных.
Можно задавать постоянный массив:
constx: array[1..10] ofinteger=(4,6,3,5,2,1,7,8,9,13);
const x: array [1..8] of char=('a','b','c','d','e','f','g','h');
Элементы таких массивов являются константами.
Если массивы одинаковы и отличаются лишь именами, то их можно описать в одной строке:
var a,b,c :array[1..n] of real; , где n -верхняя граница индекса и n описывается в разделе констант.
- Примеры описания массивов.
Сколько элементов в этом массиве? Какого они типа? Как они нумеруются?
Z: array[-8..-1] ofinteger;
Сколько элементов в этом массиве? Какого они типа? Как они нумеруются?
Mass: array[5..15] ofinteger;
Сколько элементов в этом массиве? Какого они типа? Как они нумеруются?
Вот пример описания массива на 100 чисел:
var Mas: Array [1..100] of Integer;
begin
Mas[1] := 100;
Readln(Mas[2]);
Write(Mas[4]);
if Mas[100] < 18 then Halt;
Mas[50] := Mas[49] + Mas[1];
end.
- Использование циклов при операции с массивами.
Для ввода данных в память необходимо организовать цикл. Поскольку число повторений ввода данных известно, удобно использовать цикл пересчет. Ввод описанного массива а может иметь вид:
Write (‘введите элементы массива через пробел’);
For i:=1 to n do
Begin
Read(a[i]);
End;
Ввод массива.
Program V1;
Const n=10;
Var А: array[1..n] of integer;
i: integer;
Begin
For i:=1 to n do
begin
writeln('Введите элементы массива ');
readln(А[i]);
end;
End.
Вывод массива.
Program V2;
Const m=10;
Var A: array[1..m] of integer;
i: integer;
Begin
For i:=1 to m do
begin
writeln('Вывод элементов массива ');
writeln (A[i]);
end;
End.
- Примеры операций с массивами на языке Turbo Pascal.
Задан одномерный массив А[1..15], определить сумму отрицательных элементов.
Program P1;
Const m=15;
Var К: array[1..m] of integer;
i,S: integer;
Begin
For i:=1 to m do
begin
writeln('Введите элементы массива ');
readln(К[i]);
end;
S:=0;
for i:=1 to m do
if К[i]<0 then S:=S+ К[i];
writeln('S=',S)
End.
Генерация элементов массива с помощью функции случайных чисел.
Program P2;
Const m=10;
Var F: array[1..m] of integer;
i: integer;
Begin
Randomize;
{функция позволяет перемешивать числа из диапазона указанном в функции randomи употребляется перед ней }
For i:=1 to m do
begin
F[i]:=random(101);
{Функция random(101) генерирует целые
числа в диапазоне от 0 до 100}
write(F[i]);
end; End.
Вот такая программа. Здесь я использую новую функцию Random , думаю, она вам не знакома. Очень интересная функция.
Функция Random
Данная функция возвращает от своей работы случайное число. Что значит "случайное число"? Это значит, что функция возвращает от своей работы какое-то число, каждый раз новое. В качестве параметра задается максимальное значение случайного числа, иначе говоря функция не возвратит число большего диапазона. Для того, чтобы использовать эту функцию, необходимо включить (так говорят, однако мне нравиться больше "инициализировать" - на включение это мало похоже) датчик случайных чисел. Тогда функция начнет нормально работать и возвращать действительно случайные значения.
Инициализация датчика случайных чисел (ДСЧ) происходит вызовом процедуры Randomize. Вы видите ее перед циклом.
Теперь посмотрите, как я использую эту функцию в программе. Дело в том, что вводить с клавиатуры 100 чисел не так уж и приятно, верно? Вот я и заполняю массив случайными числами. Диапазон до 500 вполне здесь подходит, числа будут не очень большие, но и не очень маленькие. При этом я циклом изменяю значение массива и с помощью переменной I пробегаюсь по всем его элементам, заполняя их случайными числами.
Этот пример хорошо демонстрирует создание массива и доступ к его элементам.
Поиск максимальных и минимальных элементов
Дан одномерный массив Kиз 10 целых элементов, найти максимальный элемент и его индекс.
Решение:
Program Poisk_2;
Const maxM=10;
Var К: array[1..maxM] of integer;
Max, i, j: integer;
Begin
Randomize;
For i:=1 to maxM do
begin
К[i]:=random(101);
write(К[i]);
end;
Max:=K[1];
J:=1;
for i:=2 to maxM do
if Max
writeln('Максимальный элемент=', max);
writeln('Индекс макс. элемента=', j);
End.
СОРТИРОВКА ВЫБОРОМ
For i:=1 to N-1 do
begin
K:=i; max:=A[i]
for j:=i+1 to N do
if A[j]>max then
begin
max:=A[j];
K:=j;
end;
A[K]:=A[i];A[i]:=max;
end;
II. Рефлексия.
Составить программу нахождения среднего арифметического элементов массива.
Program N1;
var
M: Array [1..100] of Integer;
S: Real;
I: Byte;
begin
Randomize;
ForI := 1 to 100 do
M[I] := Random(500);
ForI := 1 to 100 do
S := S + M[I];
S:= S/ 100;
Write('Среднее арифметическое всех чисел массива: ', S);
end.
III. Домашнее задание.
1 Дан массив из 15 чисел. Заполните его случайными числами. Определить, сколько в нем элементов, отличных от последнего элемента. Вывести их количество. 2 Дан массив из 50 чисел. Заполните его случайными числами. Вывести на экран сначала все положительные его элементы, а затем все отрицательные. 3 Дан массив из 10 чисел. Введите его с клавиатуры, после чего измените у всех чисел знак на противоположный. Вывести получившийся массив на экран.
IV. Подведение итогов урока
Массив– группа элементов одного типа, объединенных под общим именем.
Индекс– что-то (чаще всего номер), что позволяет отличать элементы массива один от другого и обращаться к ним.
Массивы описываются в разделе описания переменных. Общий вид описания:
<имя массива>: array [<начальный индекс>..<конечный индекс>] of <тип элемента>;
Примеры:
A : array [1..10] of real;
для ввода массива можно использовать цикл:
For i:=1 to 10 do read( A[i] );
С отдельным элементом массива можно делать все, что с любой переменной. A[i]:=25
Функция Random(A: Integer);.
Данная функция возвращает от своей работы случайное число.
Среди введенных чисел максимальное мы находим следующим образом:
Сначала за максимальное принимается первое число;
После оно сравнивается со всеми оставшимися числами, при этом:
Если следующий элемент больше принятого за максимум (переменная Max), то оно принимается за максимум.
После сравнения всех элементов в конце концов остается одно число, которое больше всех в массиве.
Просмотров: 5648
Категория: Информатика