Рекурсия Массивы. Перебор элементов массива
Автор: Мажитова Миля Рашитовна
Организация: МБОУ «СОШ № 54 г. Челябинска»
Населенный пункт: г. Челябинск
Технологическая карта открытого урока
Ф.И.О. учителя: Мажитова Миля Рашитовна
Предмет: Информатика
- _____10 ______УМК_____для 10 кл. автор: Поляков К.Ю. Информатика. 10 класс. Базовый и углубленный уровни: в 2 ч. Ч. 1/ К.Ю. Поляков, Е.А. Еремин. – М.: БИНОМ. Лаборатория знаний, 2017. – 352 с., сайт: http://kpolyakov.narod.ru
Время проведения 40 мин.
Тема урока (занятия): «Рекурсия Массивы. Перебор элементов массива»
Место данного урока (занятия) в системе уроков: данная тема является частью раздела «Алгоритмизация и программирование» в теме календарно-тематического планирования данный урок № 47-48 из 18 часов в разделе._______________________________________________________________-
Тип урока: открытие нового знания
Цель урока (занятия):
- познакомить с понятием массив, одномерный массив, видами массивов;
- изучить что такое рекурсия, массивы, перебор элементов массива
• показать правила описания одномерного массива, способы ввода, вывода его элементов;
• совершенствовать умения и навыки работы с программой Pascal.ABC.NET.
Планируемые результаты:
- Личностные: формирование ответственного отношения к учению, готовности и способности, обучающихся к саморазвитию на основе мотивации к обучению и познанию_______________________________________________________________________________________________
-
Метапредметные (УУД):
- 2.1. Познавательные: владение основами самоконтроля, самооценки, принятия решений и осуществления осознанного выбора в учебной и познавательной деятельности__________________________________________________________________________________________________
- 2.2.Коммуникативные:умениеосознанно использовать речевые средства в соответствии с задачей коммуникации; владение устной и письменной речи_________________________________________________________________________________________________________________
- 2.3. Регулятивные: включающие действия саморегуляции и обеспечивающие организацию учебной деятельности___________________________
- Предметные: умение создавать и выполнять программы для решения несложных алгоритмических задач в выбранной среде программирования______________________________________________________________________________________________________________________
Методы и приемы: практических методов обучения________________________________________________________________________________
Используемые технологии (в т.ч. ИКТ):
Технология дифференцированного обучения______________________________________________________________________________________
Опорные понятия, термины: массив, индекс, одномерный массив., Рекурсия _________________________________________________________
Новые понятия: массив, индекс, одномерный массив _Рекурсия_____________________________________________________________________
Дидактический материал: презентация, карточки-задания с содержанием практической работой (приложение № 1, приложение № 2, 3, 4 )_____
Оборудование: _проектор, ПК, интерактивная доска. ______________________________________________________________________________
Способы контроля предметных результатов обучения: ___практическая работа________________________________________________________
Этап урока |
Время |
Цель |
Содержание учебного материала |
Формы. Методы и приемы работы |
Деятельность учителя |
Деятельность ученика |
УУД |
Организационный этап. |
1 мин. |
подготовить учащихся к работе на уроке.
|
|
Предоставление единых требований ко всем учащимся. |
Учитель приветствует учеников, отмечает отсутствующих, проверяет готовность к уроку - состояние рабочего места, внешний вид учащихся. Здравствуйте, ребята. Садитесь
|
Проверяют наличие учебных принадлежностей, учебника, тетради и дневника на уроке. |
Личностные: самоопределяются, настраиваются на урок.
Познавательные: ставят перед собой цель: «Что я хочу получить сегодня от урока».
Коммуникативные: планируют учебное сотрудничество с учителем и одноклассниками. |
Постановка цели и задач урока. Мотивация учебной деятельности учащихся. |
3 мин |
организовать и направить к цели познавательную деятельность учащихся |
|
|
Задает наводящие вопросы: -Ребята скажите, что такое массив? Как вы думаете, может ли программа вызывать саму себя? - Итак, дадим определение массива
- Попробуйте придумать примеры данных, которые можно организовать в виде массива. -Теперь давайте попытаемся сформулировать цели нашего урока, (познакомимся с понятием «массив», «индекс»; узнаем, как используется цикл при обработке массива; научимся формулировать алгоритмы словесно, записывать их в виде блок-схем и программ; анализировать простые блок-схемы и программы, создавать трассировочную таблицу).
|
Отвечают на вопросы:
|
Коммуникативные: -Форсированность умения учитывать разные мнения и самостоятельно выстраивать свою деятельность в сотрудничестве в соответствии с целями, поставленными учителем; - Сформированность умения планировать общие способы работы в совместной деятельности под руководством учителя
|
Актуализация знаний. |
2 мин. |
воспроизведение учащимися знаний умений и навыков, необходимых для повторения знаний |
Необходимый уровень: Выберите в трасировочную таблицы элементы, относящиеся к понятию «массива» и отметте их «+». Повышенный уровень: запишите в трассировочную таблицу условие соответствующий каждому верному утверждению. |
Фронтальный опрос Создание комфортного климата с помощью похвалы и поддержки; |
Помогает актуализовать знания о понятии массива, правил описания и ввода значений в массив, циклических конструкциях, нахождении суммы, произведения, среднего значения элементов массива. |
Заполняют трассировочную таблицу в тетради Записывают задания.
|
Регулятивные: - Сформированность умения в сотрудничестве с учителем ставить новые учебные задачи; - Сформированность умения в сотрудничестве с учителем осуществлять превентивный контроль по результату и по способу действия. |
Освоение нового материала (первичное закрепление нового знания) |
10 мин.
|
обеспечение восприятия, осмысления и первичного запоминания знаний, связей и отношений в объекте изучения |
ТЕМА УРОКА «Рекурсия Массивы. Перебор элементов массива»
Массив – группа элементов одного типа, объединенных под общим именем. Индекс – что-то (чаще всего номер), что позволяет отличать элементы массива один от другого и обращаться к ним.
Почему книгу можно считать “массивом”? Что в этом случае будет элементом массива, а что - индексом? (слайд № 3)
Алгоритмическая конструкция, в какой подпрограмма вызывает сама себя, называется рекурсией. Рекурсивные алгоритмы обычно возникают там, где исходную задачу можно привести к такой же, но с другими аргументами или в других обстоятельствах. Итерация — это организация обработки данных, при которой действия повторяются многократно с помощью цикла, при этом не приводя к вызовам самих себя. |
Фронтальный опрос, Использование такого поискового метода парная работа, коллективное обсуждение. Создание комфортного климата с помощью похвалы и поддержки; |
Разворачивает диалог: начинает с общего побуждения, продолжает подсказкой и заканчивает, формулируя новое знание. Учитель организует коллективную деятельность учащихся по проверке высказанного им утверждения, предлагает вопросы, подводящие детей к самостоятельному выводу по проблемам. Рекурсия – это приём, позволяющий свести исходную задачу к одной или нескольким более простым задачам того же типа
- Ребята давайте посмотрим следующие Интернет – ресурсы:
Массив – это поименованная совокупность однотипных элементов. Давайте запишем это определение себе в тетрадь. - Мы будем рассматривать одномерные массивы.
Правила описания массивов на языке Pascal (слайд № 7). Массивы описываются в разделе описания переменных. Общий вид описания: <имя массива>: array [<начальный индекс>..<конечный индекс>] of<тип элемента>;
Примеры: A : array [1..10] of real; Создается массив из действительных чисел (real), с нумерацией от 1 до 10 (всего 10 элементов). Примеры описания массивов (слайд № 8). M : array [-5..5] of integer; Сколько элементов в этом массиве? Какого они типа? Как они нумеруются? Z : array [-8..-1] of integer; Сколько элементов в этом массиве? Какого они типа? Как они нумеруются? Mass : array [5..15] of integer; Сколько элементов в этом массиве? Какого они типа? Как они нумеруются? Использование элементов массива в выражениях внутри программы (слайд № 9) Для использования элемента указывается имя массива и в квадратных скобках индекс этого элемента. Примеры: Read(A[1]); A[3]:=(2 * x + 6) mod 4; A[4]:=(A[1]+A[2]) div A[3]; … |
Читают параграф, отвечают на вопросы Работа с изображением на экране Отвечают на вопросы учителя. Ответ: книга состоит из множества однотипных элементов – страниц, у каждой страницы есть номер (индекс), все страницы объединены под одним названием (название книги) Ответ: дому соответствует один почтовый адрес (город, улица, номер). Элементами дома можно считать квартиры, у каждой из которых есть номер (индекс). Ответ: доска состоит из клеток, каждая клетка обозначается буквой и цифрой (двойной индекс). Ответ: команда состоит из нескольких людей, у каждого из них есть номер (индекс). Вывод: значит понятие массива, это тоже что и обозначение упорядоченных множеств по математике, лесной массив в географии и т.д.
|
Личностные: -Сформированность целостного мировоззрения, соответствующего современному уровню развития науки и общественной практики. Познавательные: - Сформированность умения самостоятельно осуществлять поиск и выделение информации, в том числе с использованием ресурсов библиотек и интернета, для выполнений учебных заданий;
Регулятивные: - Сформированность умения самостоятельно учитывать выделенные учителем ориентиры действия в новом учебном материале;
Коммуникативные: -Сформированность умения учитывать разные мнения и самостоятельно выстраивать свою деятельность в сотрудничестве в соответствии с целями, поставленными учителем; - Сформированность умения планировать общие способы работы в совместной деятельности под руководством учителя - Сформированность умения строить монологическое контекстное высказывание средствами устной и письменной речи. |
Первичная проверка понимания изученного материала |
5 |
установление правильности и осознанности усвоения нового учебного материала; выявление пробелов и неверных представлений и их коррекция.
|
|
Работа в группах Создание комфортного климата с помощью похвалы и поддержки; |
По готовым ответам учитель проверяет правильность выполнения задания каждой группой. Высказывания, в которых были допущены ошибки, разбираются коллективно, всем классом. Допустимые операции определяются типом элемента (элемент массива ничем не отличается от обычной переменной, кроме особенного написания имени).
|
По группам решаются задачи на непосредственное применение массива, заполняют трассировочную таблицу в тетрадях. Учащиеся в рабочей тетради составляют список способов заполнения массива, подкрепляя их примерами. Решают задачи, самостоятельно выбирая уровень сложности. Решают разноуровневые задания. Задача 1. Напишите программу для описания, заполнения и вывода массива целочисленных элементов с именем z, состоящего из 30 элементов. Данные сгенерируйте случайным образом в диапазоне от 0 до 1000. Программу сохраните в своей личной папке с именем «Заполнение массива 3». (Высокий уровень)
Задача № 2 Напишите программу для описания, заполнения и вывода массива целочисленных элементов с именем massive, состоящего из 15 элементов. Данные введите с клавиатуры. Программу сохраните в своей личной папке с именем «Заполнение массива». (Повышенный уровень) Задача № 3. Составить программу для решения следующих задач:
(необходимый уровень) |
Познавательные: - Сформированность умения осуществлять сравнение, сериацию и классификацию, выбирая критерии; устанавливать причинно-следственные связи под руководством учителя Регулятивные - Сформированность умения в сотрудничестве с учителем осуществлять превентивный контроль по результату и по способу действия. Коммуникативные: -Сформированность умения учитывать разные мнения и самостоятельно выстраивать свою деятельность в сотрудничестве в соответствии с целями, поставленными учителем; - Сформированность умения планировать общие способы работы в совместной деятельности под руководством учителя - Сформированность умения строить монологическое контекстное высказывание средствами устной и письменной речи. |
Необходимый уровень: расставьте события и явления в правильной последовательности Повышенный уровень: Приведите 1-2 примера Максимальный уровень: приведите все возможные доказательства своего убеждения
|
Фронтальный опрос Создание комфортного климата с помощью похвалы и поддержки
|
Учитель организует коллективную деятельность учащихся по проверке высказанного учеником утверждения, предлагает вопросы, подводящие детей к самостоятельному выводу по проблемам. Теперь построим блок-схему и составим программу на Паскаль.
|
|||||
Практическая работа (фронтальная) на закрепление материала |
15 мин. |
усвоение учащимися новых знаний и способов действий. |
«Уровни успешности».
Одномерный массив — это фиксированное количество элементов одного и того же типа, объединенных одним именем, где каждый элемент имеет свой номер. Обращение к элементам массива осуществляется с помощью указания имени массива и номеров элементов.
Запись одномерного массива в PascalABC: Var a : array [1..N] of integer;
или type arr = array[1..N] of integer;
Var a: arr; Ввод одномерного массивав PascalABC: а) клавиатуры for i := 1 to N do read(a[i]); б) с использованием генератора случайных чисел for i := 1 to N do a[i]:=random(Const);
Пример фрагмента программы заполнения массива Паскаля случайными числами Var A: array [1..10] of integer; I : byte ; {переменная I вводится как индекс массива} Begin For i :=1 to 10 do A [ i ]:= random (10);
Вывод одномерногомассива в PascalABC: For i:=1 to N do Writeln (a[i]);
Пример фрагмента программы вывода массива Паскаля в столбик Var A: array [1..10] of integer; I : byte ; {переменная I вводится как индекс массива} Begin For i:=1 to 10 do Writeln ('a[', i,']=', a[i]);
Пример программы суммирования массивов Program summa; Var a, b, c: array [1..100] of integer; I, n: byte; Begin Write ('введите размерность массивов:'); Readln(n); For i:=1 to n do Readln (a[i]); { ввод массива a} For i:=1 to n do Readln (b[i]); { ввод массива b} For i:=1 to n do C[i]:=a[i]+b[i]; { вычисление суммы массивов} For i:=1 to n do write (c[i],' '); { вывод массива с } End. Пример программы вывода на экран последовательность из n элементов, заданных датчиком случайных чисел на интервале [-23, 34]. Program posled; Var a: array[1..100] of integer; i, n: integer; Begin Write (‘Сколько элементов?’); Readln (n); For i=1 to n do begin a[i]:= Random(58)-23; writeln (a[i],’ ‘); end; End.
|
Фронтальный опрос Создание комфортного климата с помощью похвалы и поддержки;
|
Задает наводящие вопросы. Проверяет первичное закрепление знания «Заполнение массива». Существует несколько способов заполнения массива: 1)с помощью const 2)через присваивание в программе 3)с клавиатуры 4)с помощью генератора случайных чисел Для закрепления изученного материала мы сейчас выполним практическую работу на ПК. (см. далее Приложение № 1, 2) - Запишем условия задания и на примере одного массива разберем все рассмотренные варианты описания, заполнения и вывода массива. - Итак, задача №1: «Дан массив с названием a, состоящий из десяти целочисленных элементов. Необходимо заполнить и распечатать элементы данного массива. Составить блок-схему и написать программу на языке Паскаль». /предлагает всем прочитать условие задачи, затем проводит фронтальный опрос/ (к доске приглашается 1 учащийся, остальные участвуют в коллективном обсуждении) Вопросы: - Приглашаю для работы на доске желающих. Еще раз записываем условие: Массив a[1..10] ofiinteger - С чего начинается любая блок-схема? - Как заполняется блок описания данных? - Какой вариант будем использовать для заполнения массива? (1 вариант – через const) - Как будем выводить (распечатывать) массив? - Совершенно верно, теперь построим блок-схему и составим программу на Паскаль. - Помним правило, что каждому блоку блок-схемы соответствует один оператор языка программирования. /учащиеся строят блок-схему и пишут программу на Паскаль одновременно с работой на доске/ Вопросы: - Из скольких блоков состоит программа на Паскаль? - Если используем 1 вариант заполнения массива, какой раздел описания переменных используем? - Какой цикл будет реализован для вывода массива? - Как будем выводить элементы массива: в строку или в столбец? /выполняют задание, сверяя решение с решением на доске, в процессе и по итогам – обсуждение решения/
- Теперь перейдем к практическому выполнению этого задания на компьютере /предлагает всем пересесть за рабочие места за ПК, включить компьютеры, запустить программную среду PascalABC/ - Что необходимо сделать? - Совершенно верно: набираем программу, запускаем, проверяем, сохраняем в своей личной папке под именем «Заполнение массива» на диске. Систематизация изученного материала с заданиями из ОГЭ Давайте еще обратим внимание на задания из КИМов ОГЭ, в котором рассматривается массив элементов. Учитель выводит через проектор на экран варианты такого типа заданий из ОГЭ, обсуждает предложенный способ заполнения массива/ Сейчас мы на практике увидим как работает итерация. И для примера, который является классическим, мы используем пример подсчет факториала. Ребята, вы знакомы с понятием факториала? |
Учащиеся записывают условия задания в рабочих тетрадях.
Учащиеся отвечают на вопросы, коллективное обсуждение, формулирование решения.
Учащиеся составляют блок-схему.
Рассуждения учащихся.
Учащиеся отвечают на вопросы, коллективное обсуждение, формулирование решения.
Все ученики пересаживаются за рабочие места за ПК, включают их, запускают программную среду PascalABC
Учащиеся набирают в программной среде готовую программу, выполняют ее, сохраняют.
Рассуждения учащихся, предположения, формулирование решения, написание программы, тестирование в программной среде.
Переписывают готовую работающую программу в тетрадь.
Рассуждения учащихся, предположения, формулирование решения, написание программы, тестирование в программной среде.
Учащиеся проверяют программу, вводя данные с клавиатуры. Переписывают готовую работающую программу в тетрадь.
Рассуждения учащихся, предположения, формулирование решения, написание программы, тестирование в программной среде.
Учащиеся проверяют программу, вводя данные с клавиатуры. Переписывают готовую работающую программу в тетрадь.
|
Познавательные: - Сформированность умения осуществлять сравнение, сериацию и классификацию, выбирая критерии; устанавливать причинно-следственные связи под куроводством учителя.
Регулятивные - Сформированность умения в сотрудничестве с учителем осуществлять превентивный контроль по результату и по способу действия.
Коммуникативные: -Сформированность умения учитывать разные мнения и самостоятельно выстраивать свою деятельность в сотрудничестве в соответствии с целями, поставленными учителем; - Сформированность умения планировать общие способы работы в совместной деятельности под руководством учителя - Сформированность умения строить монологическое контекстное высказывание средствами устной и письменной речи.
|
Информация о домашнем задании, инструктаж по его выполнению |
1 мин. |
|
Вопросы устно:
|
|
Объясняет способ выполнение домашнего задания и критерии его оценки Задание.
Подсчитать средний балл за экзамен по математике у учащихся, сдавших его. |
Записывают домашнее задание в дневниках Задают вопросы учителю по выполнению домашнего задания. |
Познавательные: называют тему и задачи урока, отмечают наиболее трудные и наиболее понравившиеся эпизоды урока, высказывают оценочные суждения. Коммуникативные: отмечают успешные ответы, интересные вопросы одноклассников, участников группы.
Регулятивные: определяют степень соответствия поставленной цели и результатов деятельности, определяют степень своего продвижения к цели |
Рефлексия (подведение итогов занятия) |
3 мин. |
Осознание учащихся своей учебной деятельности, оценивание результатов собственной деятельности |
Оцени свою работу на уроке |
Создание комфортного климата с помощью похвалы и поддержки; |
Учитель организует оценку выполнения работы. Сегодня мы рассмотрели тему «Итерация и рекурсия». Озвучивает результаты работы учащихся на уроке Выразите ваши впечатления от урока. Продолжите предложения: Я узнал… Мне понравилось… Я открыл для себя… Мне было интересно…
|
|
Личностные: -Сформированность целостного мировоззрения, соответствующего современному уровню развития науки и общественной практики.
Коммуникативные: -Сформированность умения учитывать разные мнения и самостоятельно вы-страивать свою деятельность в сотрудничестве в соответствии с целями, поставленными учителем; -умение самостоятельно оценивать результаты своей деятельности в соответствии с общими требованиями |
Приложение 1
Опорный конспект к уроку
Теоретические сведения
Массив – это упорядоченное множество однотипных величин (элементов массива), которым присваивается одно общее имя.
Массив – это именованная группа однотипных данных, хранящихся в последовательных ячейках памяти. Каждая ячейка содержит элемент массива. Элементы нумеруются по порядку, но, не обязательно начиная с единицы. Порядковый номер элемента массива называется индексом этого элемента. Помним, что все элементы определенного массива имеют один и тот же тип. У разных массивов типы данных могут различаться. Н-ер, один массив может состоять из чисел типа integer, а другой – из чисел типа real
Элементы массива различаются номерами – индексами. Индексы элементов массива обычно целые числа, однако могут быть и символами, а также описывается другими порядковыми типами. Массив можно создать несколькими способами. Обращение к определенному элементу массива осуществляется путем указания имени переменной массива и в квадратных скобках –индекса элемента. Простой массив называется одномерным. Он представляет собой линейную структуру.
Перед использованием в программе массив должен быть описан, то есть должно быть указано имя массива, количество элементов массива и их тип.
Суммирование элементов массива осуществляется за счёт поочерёдного добавления слагаемых.
Массив представляет собой последовательность ячеек памяти, в которых хранятся однотипные данные. При этом существует всего одно имя переменной, связанной с массивом, а обращение к конкретной ячейки происходит по ее индексу (номеру) в массиве. Нужно четко понимать, что индекс ячейки массива не является ее содержимым. Содержимым являются хранимые в ячейках данные, а индексы только указывают на них. Действия в программе над массивом осуществляются путем использования имени переменной, связанной с областью данных, которая отведена под массив.
Задача на нахождение суммы элементов данной конечной числовой последовательности или массива.
На блок-схеме представлен алгоритм обработки массива. Определить имя и размер массива, способ заполнения массива, тип значений элементов массива.
Запишите программу на языке программирования Паскаль.
Блок-схеме представлен алгоритм обработки массива
Вспомним с помощью, какой конструкции мы работаем с числовыми последовательностями.
Как записывается оператор цикла с предусловием? Как он работает?
Как записывается оператор цикла с постусловием? Как он работает?
Как записывается оператор цикла с параметром? Как он работает?
В каких случаях используется каждый оператор?
С помощью какого цикла можно решить задачу? (перечисление задач)
Как удобнее работать с последовательностями
чисел, списками, таблицами?
Ответы:
Массив с именем А состоит из 20 целых величин, заполняется данными, которые вводятся с клавиатуры.
Программа:
Program _n6;
Var a: array [1...20] of integer; i, s: integer;
Begin
For i:=1 to 20 do
Begin
Read a[i];
s : = s+ a[i]
End;
Writeln(s);
End.
Приложение 2
Практическая работа
Задание 1. Рассмотрим математическую головоломку из книги Ж. Арсака «Программирование игр и головоломок». Построим последовательность чисел следующим образом: возьмем целое число i>1. Следующий член последовательности равен i/2, если i четное, и 3 i+1, если i нечетное. Если i=1, то последовательность останавливается.
Математически конечность последовательности независимо от начального i не доказана, но на практике последовательность останавливается всегда.
Применение рекурсии позволило решить задачу без использования циклов, как в основной программе, так и в процедуре.
Пример программы с использованием рекурсии
Program Arsac;
Var first: word;
Procedure posledov (i: word);
Begin
Writeln (i);
If i=1 then exit;
If odd(i) then posledov(3*i+1) else posledov(i div 2);
End;
Begin
Write (‘ введите первое значение ’); readln (first);
Posledov (first);
Readln ;
End.
Задание 2.Заполните массив числами, которые вводит пользователь, и вычислите их сумму. Если пользователь вводит ноль или превышен размер массива, то запросы на ввод должны прекратиться.
Примечание. Для решения подобного рода задач иногда бывает уместно использовать цикл с постусловием repeat.
Программа на языке Паскаль:
Var arr: array [1...10] of integer;
Sum, i: integer;
Begin
i: =1; sum:=0;
Repeat
Write (‘Число :’);
Readln (arr[i]);
Sum:=sum+arr[i];
i:=i+1
Until (arr[i-1]=0)or(i>n);
For i:=1 to n do write (arr[i], “ “);
Writeln (‘sum=’, sum);
End.