Разработка урока по теме "Одномерные массивы"

Разделы: Информатика


Цели урока:

  • формирование знаний и умений учащихся по теме “Массивы”;
  • выработка первичных навыков решения задач с применением одномерных массивов;
  • подготовка к контрольной работе, олимпиаде, экзаменам.

Задачи урока:

образовательные:

  • формирование понятия массива, знаний характеристик массивов и их элементов;
  • овладение умениями и навыками осуществлять ввод и вывод значений элементов одномерного массива;
  • отработка навыков проектирования программ с использованием подпрограмм;
  • отработка навыков решения экспериментальных задач;

развивающие:

  • развитие структурного мышления учащихся;
  • развитие учебно-познавательную деятельность учащихся на основе самостоятельного анализа фактов, предлагаемых учителем;
  • развитие способностей к формализации;

воспитательные:

  • привитие исследовательского подхода в познании нового;
  • формирование умения применять на практике полученные знания;
  • воспитание чувства ответственности за результаты своего труда;
  • воспитание сотрудничества.

Тип урока: комбинированный.

Вид урока: сдвоенный, продолжительность – 90 минут.

Год обучения: второй.

Возраст учащихся: XI класс.

Программное обеспечение: программа Turbo Pascal 7.0, программа создания презентаций PowerPoint.

Методическое обеспечение урока:

  • компьютерная презентация “Одномерный массив” (Приложение 1);
  • раздаточные материалы с заданиями (Приложение 2);
  • оценка результатов учебной деятельности (Приложение 3);
  • демонстрационные файлы.

Виды работ: фронтальный устный опрос; самостоятельная работа в мини-группах по 2 человека; работа с тетрадями; работа с компьютером; решение экспериментальных задач.

Оборудование: IBM-совместимые компьютеры, мультимедийный проектор, экран, доска.

Ожидаемые результаты: овладение умениями и навыками разработки программ с использованием одномерных массивов; самостоятельное выполнение учащимися заданий экспериментального раздела. С заданиями первого уровня должны справиться все. Но каждый учащийся работает в индивидуальном темпе и общие результаты у всех должны быть разные.

План урока.

  1. Организационный момент – 2 мин.
  2. Актуализация знаний и умений учащихся – 8 мин.
  3. 2.1. Фронтальный опрос – 3 мин.
    2.2. Проверка домашнего задания на компьютере – 5 мин.

  4. Создание проблемной ситуации – 5 мин.
  5. Формирование понятия “массив”, знаний характеристик массивов и их элементов – 10 мин.
  6. Овладение умениями и навыками осуществлять ввод и вывод значений элементов одномерного массива – 8 мин.
  7. Отработка навыков решения экспериментальных задач – 16 мин.
  8. Отработка навыков проектирования программ с использованием подпрограмм – 10 мин.
  9. Самостоятельное выполнение заданий на компьютере – 15 мин.
  10. Физкультминутка – 2 мин.
  11. Подведение итогов урока – 3 мин.
  12. Домашнее задание – 2 мин.

Ход урока

1. Организационный момент.

Учитель. Здравствуйте, очень рада встретиться с вами снова. Наш урок начнется с решения нескольких занимательных задач.

Учитель предлагает три занимательные задачи (Приложение 1), ребята устно решают их.

Тема сегодняшнего урока – “Одномерные массивы”. Мы продолжаем осваивать технологию нисходящего программирования. Тема для вас новая, но интересная. От того, насколько вы будете внимательны и аккуратны, зависит результат вашего труда.

Каждый из вас получит:

- раздаточные материалы с заданиями (Приложение 2);

- творческую карточку учащегося [5] (Приложение 3, таблица 1);

- критерии оценки выполненной работы [5] (Приложение 3, таблица 2).

2. Актуализация знаний и умений учащихся.

Начнем с материала, изученного ранее. Для этого ответим на следующие вопросы и проверим домашнюю задачу.

2.1. Фронтальный опрос.

Вопросы для повторения.

  1. Что такое подпрограмма? Для чего используется подпрограмма?
  2. Запишите структуру процедуры.
  3. Что такое формальные и фактические параметры?
  4. Как записывается вызов процедуры?
  5. Что такое глобальные и локальные переменные?
  6. Какое правило необходимо соблюдать при разработке программ с использованием подпрограмм-процедур?
  7. Как описываются константы в программе?
  8. Как описать новый тип данных в разделе описания типов?

2.2. Проверка домашней задачи на компьютере.

Приведите решение домашней задачи.

Задача.

Даны координаты трех вершин треугольника. Найти длины всех его сторон. Определить площадь треугольника. Составить программу с использованием процедуры.

Решение: (Приложение 1)

3. Создание проблемной ситуации.

Пример 1 [3]. Необходимо найти сумму пяти целых чисел.

Учитель. Решение очевидно. Поэтому программу пишем в тетради самостоятельно, а на доске напишет нам программу решения этой задачи …(называется фамилия или имя ученика).

Ученик пишет на доске программу (Приложение 1).

Пример 2. Найти сумму тридцати целых чисел.

Учитель. Решение аналогично. Поэтому программу пишем в тетради самостоятельно, а на доске напишет нам программу решения этой задачи …(называется фамилия или имя ученика).

Ученик. Если решать эту задачу по аналогии с предыдущей, то необходимо будет описать 30 переменных для всех исходных чисел. Это не очень удобно.

Учитель. Ребята! Какой выход из создавшейся ситуации нашли вы?

Ученики. Надо хорошенько подумать. Возможно, есть способ описания большого количества переменных. Правда?

Учитель. Да, такой способ есть. И мы сейчас с ним познакомимся. Мы используем для решения этой задачи одномерный массив.

4. Формирование понятия “массив”, знаний характеристик массивов и их элементов.

Регулярный тип данных. Одномерные массивы.

С понятием “массив” приходится сталкиваться при решении научно-технических и экономических задач обработки совокупностей большого количества значений. В общем случае массив – это структурированный тип данных, состоящий из фиксированного числа элементов, имеющих один и тот же тип [4].

Название регулярный тип (или ряды) массивы получили за то, что в них объединены однотипные (логически однородные) элементы, упорядоченные (урегулированные) по индексам, определяющим положение каждого элемента в массиве [1].

“Массив – это составной объект, образованный из элементов (компонент) одного и того же типа. Такой тип данных применяется в программировании для обозначения объектов, аналогичных числовым последовательностям в математике, где сразу целая группа чисел обозначается одним именем (чаще всего буквой), а для обращения к каждому отдельному числу данной последовательности используются различные индексы (номера элементов). В математике это может выглядеть, например, так: a1, а2, а3, …, аn.

Для описания подобных объектов в программировании предварительно следует ввести соответствующий тип в разделе описания типов. Описание типа данных массив производится согласно синтаксической диаграмме, представленной на схеме: (Приложение 1).

Все компоненты массива (то есть составляющие его элементы) обозначаются элементами упорядоченного множества индексов, принадлежащих к одному из порядковых типов.

Порядковые типы могут быть различными, но чаще всего для этого используется ограниченный тип (диапазон) целых чисел, например, 1..100. То есть фактически на месте порядкового типа обычно стоит следующая конструкция: (Приложение 1).

Тип же самих элементов может быть любым, в том числе и составным. Количество элементов массива называется его размерностью. Несложно подсчитать, что при последнем способе описания множества индексов размерность массива равна:

максимальное значение индекса – минимальное значение индекса + 1.

При использовании переменных для обозначения индекса их значения к моменту использования должны быть определены, а в случае арифметических выражений их результат не должен выходить за границы массива (минимальное и максимальное значения индекса). Индексы элементов массива могут начинаться с любого целого числа, в том числе и отрицательного, например: Type bb = Array [-5..3] Of Boolean. Массивы данного типа будут содержать 9 логических переменных, пронумерованных от -5 до 3”[2].

“Одномерный массив – это фиксированное количество элементов одного и того же типа, объединенных одним именем, причем каждый элемент имеет свой уникальный номер, и номера элементов идут подряд [1]. Например, введем 30 целых чисел от 25 до 54 и объединим их общим именем А. Имя А – общее имя для всех элементов. Элементы массива – целые числа, их 30” [1]. Опишем в разделе типов свой тип – одномерный массив, состоящий из 30 целых чисел.

Type myarray = Array [1..30] Of Integer;

Напомним, что раздел типов начинается со служебного слова Type, после него идут имя нового типа и его описание. Между именем типа и его описанием ставится знак “равно” (в разделе описания переменных между именем переменной и ее описанием ставится двоеточие). Здесь myarray – это имя нового типа; Array – служебное слово (в переводе с английского означает “массив”, “набор”); [1..30] – в квадратных скобках указывается номер первого элемента, затем, после двух точек, номер последнего элемента массива; в этом примере первый элемент имеет номер 1, а последний – номер 30; Of – служебное слово (в переводе с английского означает “из”); Integer – тип всех элементов массива [1]. Таким образом, одномерный массив описывается следующим образом:

Array [n1..n2] Of <тип элементов>;

где n1 – номер первого элемента,

n2 – номер последнего элемента массива.

Для того чтобы обратиться к элементу этого массива, необходимо указать имя массива и в квадратных скобках – номер элемента. Например, первый элемент массива А – A[1], а пятый – A[5]. Теперь составим программу решения нашей задачи. И решение, простое решение без 30 переменных (Приложение 1). Обратите внимание, что заполнение и вывод массива можно осуществлять только поэлементно, то есть можно сначала присвоить значение первому элементу, затем второму и т.д. Аналогично обстоит дело и с выводом массива на экран – мы станем выводить на экран первый элемент, второй, третий и так до последнего.

5. Овладение умениями и навыками осуществлять ввод и вывод значений элементов одномерного массива.

Способы заполнения массивов.

При решении задач часто приходится заполнять массивы (присваивать значения элементам). Рассмотрим несколько способов заполнения массивов.

Первый способ заполнения одномерного массива – это заполнение с клавиатуры. Мы его рассмотрели, решая предыдущую задачу. В программе Example_16 значения элементов массива вводились с клавиатуры. Формирование значений элементов массива путем ввода их с клавиатуры – достаточно утомительное занятие. Давайте попробуем использовать для этих целей генератор случайных чисел [1].

“Второй способ заполнения одномерного массива – это заполнение с помощью генератора случайных чисел. Этот способ удобен, когда в массиве много элементов, а их точные значения не слишком важны. Генератор случайных чисел – название сложное. Это сложное название мы будем понимать очень просто. Есть что-то (черный ящик), и это что-то выдает числа, причем какое число выдается следующим за очередным, нам неизвестно. Этим черным ящиком в Турбо Паскале является функция Random. Она возвращает случайное число. Если использовать ее без параметров, то при очередном обращении она будет выдавать в качестве результата некоторое псевдослучайное вещественное число из диапазона [0; 1] Числа называются псевдослучайными, так как для их нахождения используется некая итерационная последовательность ri = f(ri-1), которая к тому же имеет периодические свойства (то есть, начиная с какого-то момента, числа начнут повторяться в том же самом порядке). Кроме того, обязательно используется процедура Randomize. Она предназначена для задания первого значения в данной последовательности. Для этого она использует текущее значение компьютерного таймера; в результате при разных запусках программы последовательности получаются разными. Обращаться к процедуре Randomize имеет смысл только один раз – в начале работы программы [3]. Для получения целых случайных чисел из диапазона [0; dd-1] используется вызов функции Random с параметром dd: Random (dd)” [1].

Приведем пример заполнения случайным образом целочисленного массива А, состоящего из n элементов, десятичными цифрами:

Randomize;

For i:=1 To n Do A[i]:= Random (10);

Обратите внимание, ни один из элементов этого массива не может оказаться равным 10. Параметр 10 в данном случае соответствует тому, что полученные случайные значения являются различными остатками при делении на 10 – от 0 до 9 включительно.

Составим программу Example_17 заполнения одномерного массива с помощью генератора случайных чисел (Приложение 1). Здесь функция Random выбирает случайные числа из отрезка от 0 до dd-1. Очередному элементу массива будет присвоена сумма выбранного случайного числа и -25. Таким образом, массив будет заполняться случайными числами от -25 до -25 +(dd-1), то есть до -26 + dd.

6. Отработка навыков решения экспериментальных задач.

Работа с элементами массива (разбор на примерах)[3].

При работе с элементами массива можно выделить несколько видов задач.

Нахождение суммы (или произведения) элементов.

Такая задача была рассмотрена нами ранее (Example_16). Часто встречаются различные модификации этой задачи, например, требуется найти сумму элементов с заданным свойством.

Пример 3. Найти сумму элементов массива, кратных заданному числу [3].

Решение задачи на нахождение суммы всех элементов массива изменится незначительным образом. Добавляется описание еще одной переменной для хранения значения числа, на кратность которому проверяются значения элементов массива. Появляются операторы

Writeln (‘ Введите число ‘);

Readln (k);

и изменяется оператор из тела цикла:

If A[i] Mod k = 0 Then s:=s+A[i];

Ребята! Попробуйте самостоятельно составить программу.

Ученики продолжают работу над программой. Когда большинство ребят получили результаты, учитель предлагает сравнить свой вариант решения с вариантом, который учитель демонстрирует на слайде (Приложение 1).

Надеюсь, ваша программа аналогична и выдает правильные результаты.

Нахождение номеров элементов, обладающих заданным свойством.

Пример 4. Найти номера четных элементов.

Для решения (Program Example_19) необходимо просмотреть весь массив, и если просматриваемый элемент является четным, то вывести его номер (Приложение 1).

Есть ли в массиве элементы с данным свойством, или найти первый (последний) элемент, отвечающий заданным условиям.

Для решения задач этого типа необходимо использовать циклы с условиями.

Пример 5. Есть ли отрицательный элемент в массиве?

Решение (Program Example_20):

Начнем просматривать массив с первого элемента (i=1). Пока не просмотрен последний (i<=n) и не найден отрицательный (A[i]>=0), будем переходить к следующему (Inc(i)). Таким образом, мы закончим просмотр в одном их двух случаев: первый – просмотрели все элементы и не нашли отрицательного, тогда i>n, второй – нашли нужный, при этом i<=n. Опишем переменную с, значение которой истина (True), если в массиве есть отрицательный элемент, и ложь (False), если его нет (Приложение 1).

7. Отработка навыков проектирования программ с использованием подпрограмм.

Попробуем оформить задание значений элементам одномерного массива (с помощью генератора случайных чисел), вывод массива на экран и вывод результата данного примера как процедуры в программе Example_22_m (Приложение 1).

Казалось бы, что мы только проиграли. Было несколько строк программного кода, а сейчас … Пожертвуем кажущейся простотой предыдущей версии программы. С этого момента будем стараться создавать программы так, чтобы основная программа состояла из вызовов процедур, а затем и функций, когда мы их освоим. Разработка программ с использованием процедур и функций ведет к выработке хорошего стиля написания программ, без которого работа коллективов программистов над большими проектами была бы невозможна. Как показывает практика, переучиваться с одного стиля на другой гораздо сложнее, чем учиться сразу писать громоздкие программы для решения научно-технических и экономических задач.

8. Самостоятельное выполнение заданий на компьютере.

Работа идет в мини-группах по два человека. Учащиеся получают задания на корточках и составляют программы на компьютере. Учитель внимательно наблюдает за ходом работы ребят, в случае затруднений дает рекомендации (Приложение 2).

9. Физкультминутка (Приложение 4).

10. Подведение итогов урока.

Теперь настала пора подвести итоги нашего урока. Посмотрим, чем же нас порадуют наши юные программисты. Еще раз обратим наши взоры на экраны компьютеров и посмотрим, у кого что получилось. Какие работы вам понравились больше всего и почему? Обоснуйте свои ответы. Для определения качества выполненных работ воспользуемся критериями оценки выполненной работы (Приложение 3).

Учитель обращает внимание ребят на творческие находки, типичные ошибки, рациональное и нерациональное выполнение работ, оценивает деятельность каждого и группы в целом, отмечает лучшие работы.

Учитель. Ребята! Мы сегодня сделали большой шаг вперед. Мы приступили к разработке программ не только с использованием подпрограмм, но и с использованием регулярных типов данных, то есть массивов. Это уже большое дело. Вы сегодня замечательно поработали. Молодцы!

11. Домашнее задание.

Учитель демонстрирует домашнее задание на экране (Приложение 1). Ученики получают домашние задачи на карточках.

Литература.

  1. Информатика. Приложение к газете “Первое сентября”. 1999, № 26.
  2. Информатика. Приложение к газете “Первое сентября”. 2005, № 21.
  3. Окулов С.М. Основы программирования. М.: Лаборатория Базовых Знаний, 2002.
  4. Попов В.Б. TURBO PASCAL для школьников. М.: Финансы и статистика, 1999.
  5. Информатика и образование. 2005, № 6.