- Урок информатики «Одномерные массивы». 9-й класс
- Ход урока
- I. Организационный момент
- II. Проверка домашнего задания
- III. Изучение нового материала
- IV. Закрепление изученного
- Массивы в PascalABC.NET
- Описание и выделение памяти
- Индексация в динамических массивах и использование статических массивов
- Простейшее заполнение
- Ввод и вывод элементов массива
- Циклы по массиву
- Методы массива
- Операции с массивами
- Изменение размера динамического массива
Урок информатики «Одномерные массивы». 9-й класс
Класс: 9
Цель: «Создать условия в осмыслении понятий одномерного массива, объяснить ввод массива, научить заполнять массив данными различными способами; формирование навыков решения задач в среде программирования Паскаль».
Задачи:
- Формировать у детей представления об одномерном массиве.
- Организовать деятельность учащихся по восприятию и осмыслению понятий: «массива», «одномерного массива»; по осуществлению ввода и вывода одномерного массива;
- Воспитывать интерес к информатике, как к учебному предмету.
- Воспитание аккуратности, точности.
- Развитие представлений детей о программировании на языке Паскаль.
- Развитие психических процессов у детей, таких как внимание, мышление, память (произвольное запоминание, слуховая, зрительная память) с помощью различных методических приёмов на уроке.
- Формирование приемов логического и алгоритмического мышления, развитие познавательного интереса к предмету, развитие умения планировать свою деятельность;
Материалы и оборудование:
- Интегрированная инструментальная оболочка программы ABCPascal.
- Карточки с заданиями, блок-схемы задач, шаблоны.
- Наглядные материалы: ввод и вывод одномерного массива на языке программирования и в виде блок-схемы.
План урока:
- Организационный момент
- Проверка домашнего задания.
- Изучение нового материала.
- Понятие одномерного массива.
- Описание массива.
- Способы заполнение и вывода одномерного массива.
- Закрепление изученного.
- Самостоятельное решение задач (Приложение).
- Подведение итогов.
- Домашнее задание.
Ход урока
I. Организационный момент
II. Проверка домашнего задания
III. Изучение нового материала
1. Понятие одномерного массива.
Тема нашего урока «Одномерные массивы». Программирование на Паскале. На сегодняшнем уроке мы рассмотрим следующие вопросы:
- Понятие одномерного массива.
- Описание массива.
- Заполнение одномерного массива.
- Вывод значений элементов массива.
Рассказ учителя.
В жизни мы постоянно сталкиваемся с множеством объектов, объединенных по определенным признакам.
- Рост учеников класса
- Поле цветов…
- Таблица температур за неделю.
Такую таблицу называют линейной. В программировании линейная таблица называется одномерным массивом. Массив- это пронумерованная конечная последовательность однотипных величин. Массив характеризуется: типом, то есть все элементы массива имеют один и тот же тип; именем, массив имеет имя – одно для всех элементов; размером, Размер массива – это количество его элементов. Для обращения к конкретному элементу массива необходимо указать имя массива и в квадратных скобках индекс элемента: A[I].
Пример: Рассмотрим массив А. Массив состоит из пяти целых чисел: 5, 10, 15, 20, 25.
Элементы массива пронумерованы. Порядковый номер элемента называется его индексом.
Например, 3 – номер элемента массива, по другому индекс. 15 – значение элемента массива.
Обозначаются элементы массива в квадратных скобках, А[2], А[3], А[4], А[5].
2 – номер элемента массива. 10 – значение элемента массива.
2. Описание массива.
Рассмотрим описание массива на Паскале. Слово array буквально переводится как массив.
Где А имя массива. 1 – начальный индекс. 5 – конечный индекс. integer – тип элементов – целый. Границы индекса могут быть любыми целыми числами. Важно, чтобы нижняя граница была меньше верхней границы. И рассмотрим описание – размер через константу:
Const – это раздел описания констант, то есть постоянных величин, определяемых заранее и не изменяющихся по ходу выполнения программы. I – переменная, хранящая индекс элемента массива, к которому идет обращение.
Массив — это упорядоченный набор величин (или таблица) обозначенных одним именем.
Элементы массива последовательно располагаются в памяти ЭВМ. При обращении к элементу массива указывается его имя и индекс (номер элемента в совокупности). Если каждый элемент массива имеет только один индекс, то такой массив называется одномерным (линейным).
1 | 2 | 3 | 4 | 5 | 6 | i |
5 | 8 | 11 | 14 | 17 | 20 | A[i] |
Одномерный массив – упорядоченный набор данных, имеющих одно имя, но разные порядковые номера (индексы).
Подобно переменной – ячейке памяти компьютера, массив – это последовательность ячеек в памяти компьютера, обозначенных одним именем и имеющих каждая свой номер – индекс.
Как и переменная, массив описывается в разделе var:
b: array[1..21] of integer;
M:array[1..30] of Real;
M[19] – 19-ый элемент массива М.
Все массивы вводятся и обрабатываются в цикле, причем параметром цикла является индекс элемента массива.
Термин заполнить массив означает задать значения всем элементам массива.
Термин вывести массив – напечатать на экране все элементы массива.
Потребность использовать массив возникает всякий раз, когда при решении задачи приходится иметь дело с большим, но конечным количеством однотипных данных, которые необходимо хранить в памяти. Предположим, что мы наблюдали температуру воздуха в течение некоторого периода времени (например, месяца). Закончив наблюдения, приступаем к обработке полученных данных: поиску самого холодного или самого теплого дня, вычислению среднемесячной температуры и т.д. Для этого мы должны составить алгоритм и программу осуществляющие обработку данных.
3. Заполнение одномерного массива.
Рассмотрим заполнение массива. Существует несколько способов заполнения массива.
Мы рассмотрим четыре способа:
- с клавиатуры;
- с помощью датчика случайных чисел;
- с помощью формулы.
- с помощью оператора присваивания.
var a:array [1..5] of integer;
Как бы ни был примитивен приведенный пример, он все же иллюстрирует возможность непосредственного обращения к каждому элементу массива отдельно. Правда, никакого преимущества массива перед несколькими простыми переменными здесь не видно. Очевидно, что в случае, когда количество элементов очень велико, этот способ не подходит. Как правило, этот способ используется не для заполнения массива, а для изменения значений элементов массива.
Заполнение массива с клавиатуры.
Рассмотрим пример заполнения массива А пятью целыми числами с клавиатуры.
Для того чтобы организовать ввод исходных данных в массив, нужно использовать цикл.
Begin – начало цикла ввода элементов массива.
Вводим элемент с индексом один.
Обращаемся к первому элементу массива А.
Запоминаем число 13.
End – конец цикла ввода элементов массива.
Аналогично запоминаем остальные 4 числа.
d: array[1..10] of integer;
for j:=1 to 10 do
for j:=1 to 10 do
Заполнение массива случайными числами .
Рассмотрим задание значений элементов массива как случайных чисел. Функция получения случайных чисел из заданного интервала [0, М-1] выдает целые числа из этого интервала: random (М). Можно использовать функцию получения случайных чисел без указания аргумента. Она выдает случайное вещественное число от нуля до одного: random
Функция получения случайных чисел из интервала [А, В] имеет вид random (b-a+1)+a
Заполним массив например десятью целыми числами из интервала [1,100] запишем фрагмент программы:
Заполнение массива с помощью формулы
Заполнить одномерный массив из 10 чисел по формуле b[i]:=i*3
Здесь массив из десяти целых чисел заполняется индексами элементов умноженными на три.
4. Вывод значений элементов массива
Рассмотрим вывод массива из трех целых чисел. Здесь параметр 4 означает количество позиций, отводимых под значение а [i], то есть значение переменной а[i] выводится как целое число в четыре символьные позиции на экране. Результатом вывода массива будет:
Массив А: 4 5 7
Решение задач по обработке массива связано, как правило, с перебором элементов массива. Такой перебор происходит в цикле, в котором изменяются значения индексов от начальной до конечной величины. В практике работы по обработке массивов могут встречаться различные задачи, которые могут быть сведены в несколько наиболее характерных групп:
- нахождение суммы (или произведения) элементов.
- нахождение максимального (минимального) элемента;
- нахождение номеров элементов, обладающих заданным свойством.
- нахождение количества элементов, обладающих заданным свойством.
- замена элементов массива.
- удаление элементов из одномерного массива.
- вставка элементов.
- изменение значений некоторых элементов.
- создание массивов.
IV. Закрепление изученного
Одномерные массивы (общий вид)
Итак, общий вид одномерного массива.
Сначала описываем массив.
Затем вводим элементы массива любым способом.
Выполняем поэлементные операции в цикле.
Выводим элементы массива на экран.
Например, вывести массив по формуле.
Источник
Массивы в PascalABC.NET
В PascalABC.NET рекомендуется использовать динамические массивы. В отличие от статических, они имеют огромное количество методов и операций, просты в создании, заполнении и выводе.
Описание и выделение памяти
Динамический массив описывается так:
Память под динамический массив a выделяется в момент работы программы:
Здесь — первое преимущество динамических массивов — в переменной a может храниться массив любого размера, память выделяется в процессе работы программы. Кроме того, выделенная память гарантированно автоматически заполняется нулевыми значениями.
Можно совместить описание и выделение памяти — тип динамического массива выводится автоматически:
Обычно в PascalABC.NET совмещают описание динамического массива, выделение памяти и заполнение значениями. Самый простой способ — заполнить n нулями:
Индексация в динамических массивах и использование статических массивов
Динамические массивы индексируются с нуля — это эффективно. В качестве индексов в динамических массивах могут выступать только целые.
Статические массивы тем не менее иногда удобно использовать — в задачах, где индексы либо символьные, либо по-существу начинаются не с нуля. Например, для подсчёта количества слов на каждую букву может использоваться стаический массив
Заполнение статических массивов — увы — производится в цикле. Кроме того, они не помнят свою длину и передача таких массивов в качестве параметров подпрограмм связана с техническими сложностями 40-летней давности, не нужными начинающим.
Простейшее заполнение
Важную роль играют функции заполнения динамических массивов. Перед заполнением они выделяют для массива память, поэтому в одной строке можно совмещать описание, выделение памяти и заполнение.
Простейшее заполнение — набором значений:
Заполнение диапазоном целых или символьных значений делается с использованием функции Arr:
Заполнение определённым значением осуществляется с помощью операции умножения массива на число:
Для заполнения можно также использовать функцию ArrFill:
Для заполнения массива случайными значениями следует использовать
Не рекомендуется использовать алгоритм для заполнения массива случайными в каждой задаче:
Повторять этот текст в каждой задаче — странно. Для этого есть стандартные функции.
Ввод и вывод элементов массива
Для ввода элементов массива базовых типов используются функции
Стандартная процедура вывода Write или Print выводит значения в массиве в квадратных скобках черезх запятую:
Однако лучше всего для вывода воспользоваться методом Print, выводящим все значения в массиве через пробел:
Не рекомендуется вводить и выводить элементы массива в цикле
Повторять этот текст в каждой задаче — странно. Для этого есть стандартные функции.
Циклы по массиву
Для обработки элементов массива используются следующие циклы:
- Цикл for по индексам (если требуется менять элементв или нужна информация об индексах)
Пример. Найти количество чётных элементов, стоящих на чётных местах
Методы массива
Массивы содержат большое количество стандартных методов:
Кроме того, доступны процедуры
Методика. Обращаем внимание, что в методических целях естественно рассказывать, как эти алгоритмы устроены “внутри”. Но потом следует пользоваться стандартными алгоритмами, а не заставлять учеников во всех задачах использовать рукописные сортировки или рукописный поиск минимума. Например, рекомендуется показать, как накопить сумму элементов массива:
Здесь следует обратить внимание, что этот алгоритм может быть легко модифицирован в алгоритм нахождения суммы элементов по условию: например, всех чётных элементов:
Отметим, что заполнение случайными и вывод — это технические части программы, которые делаются в PascalABC.NET в одну строку, позволяя концентрироваться на алгоритме.
Если условие надо накладывать на индексы, то в этом случае (и только в этом случае) следует использовать цикл for по индексам:
Для нахождения суммы без условия необходимо использовать стандартный метод a.Sum:
Отметим также, что для поиска суммы по условию также имеется короткая однострочная запись. Она требует использование стандартного метода Where с параметром, являющимся лямбда-выражением. Лямбда-выражения мы будем рассматривать далее:
Методика. Поскольку данная запись использована здесь впервые, обращаем внимание на её высокую универсальность: алгоритмы фильтрации и поиска суммы не слиты в один алгоритм, а используются порознь один за другим, что позволяет:
- Лучше читать код (потому что он записан компактно и методами с понятными и очевидными названиями)
- Лучше модифицировать код
- Решать более сложные и более прикладные задачи за одно и то же время урока
Далее лямбда-выражения объясняются подробно и тщательно и используются повсеместно.
Операции с массивами
Изменение размера динамического массива
Если в процессе работы программы требуется чтобы динамический массив менял свой размер, то следует … пользоваться типом List ! Это — динамический массив с возможностью эффективного измненения размера и рядом дополнительных методов. Основным является методы Add — добавить в конец:
Для первоначального заполнения списков List используется короткая фунеция Lst:
При необходимости список List можно преобразовать к динамическому массиву, вызвав метод .ToArray:
Большинство методов, которые имеются в массивах, есть и в списках List. Поэтому выбор типа List или array of для контейнера при решении задач определяется тем, будет ли данный контейнер расширяться по ходу работы программы.
Источник