ПРОГРАММА ЭЛЕКТИВНОГО КУРСА ПО ИНФОРМАТИКЕ «ПРОГРАММИРУЕМ НА ЯЗЫКЕ ПАСКАЛЬ» . Класс: 8 Количество часов в неделю – 2 Образовательная область: «Информатика». ПОЯСНИТЕЛЬНАЯ ЗАПИСКА Часто говорят, что в современных условиях развитого прикладного программного обеспечения изучение программирования потеряло свое значение как средство подготовки основной массы школьников к труду, профессиональной деятельности. С одной стороны, это действительно так, но, с другой стороны, изучение основ программирования связано с целым рядом умений и навыков (организация деятельности, планирование ее и т.д.), которые по праву носят общеинтеллектуальный характер и формирование которых - одна из приоритетных задач современной школы. Очень велика роль изучения программирования для развития мышления школьников, формирования многих приемов умственной деятельности. Здесь роль информатики сродни роли математики в школьном образовании. Поэтому не использовать действительно большие возможности программирования, решения соответствующих задач для развития мышления школьников, формирования многих общеучебных, общеинтеллектуальных умений и навыков было бы, наверное, неправильно. Изучая программирование на языке Паскаль, учащиеся прочнее усваивают основы алгоритмизации и программирования на языке Бейсик (предполагается изучение в курсе информатики двух языков программирования: один в основном курсе информатики, другой в старшей школе, в качестве элективного курса), приобщаются к алгоритмической культуре, познают азы профессии программиста. Цели и задачи курса Формирование интереса к изучению профессии, связанной с программированием. Формирование алгоритмической культуры. Дать ученику возможность реализовать свой интерес к выбранному курсу. Научить учащихся структурному программированию как методу, предусматривающему создание понятных, локально простых и удобочитаемых программ, характерными особенностями которых является: модульность, использование унифицированных структур следования, выбора и повторения, отказ от неструктурированных передач управления, ограниченное использование глобальных переменных. 1 Приобретение знаний и навыков алгоритмизации учащимися в ее структурном варианте. Освоение всевозможных методов решения задач, реализуемых на языке Паскаль. Развитие алгоритмического мышления учащихся. Формирование навыков грамотной разработки программ. Углубление знаний, умений и навыков решения задач по программированию и алгоритмизации. Состав учебно-методического комплекта. Учебно-методический комплект по элективному курсу «Программируем на языке Паскаль» включает учебные пособия и практикум: Попов В.Б. Turbo Pascal для школьников: Учеб. Пособие.- 3-е доп. изд. - М.: Финансы и статистика, 2002. Рапаков Г.Г., Ржеуцкая С.Ю. Turbo Pascal для студентов и школьников. – СПб.: БХВ-Петербург, 2004. Информатика. Задачник - практикум в 2т. / Под ред. И.Г. Семакина, Е.К. Хеннера: Том 1. – М.: Бином. Лаборатория Знаний, 2002. Также предполагается использование дополнительных пособий по программированию. Личностно-ориентированная направленность курса. Личность ученика – вот, что должно стоять во главе учебно-воспитательного процесса. Личностно-ориентированное обучение в настоящее время становится все более актуальным. Главная цель, использования личностно-ориентированного подхода – не просто видеть на уроке (занятии) каждого ученика, но и делать его успешным даже в самой трудной ситуации. Важно - создать на уроке ситуацию успеха. Контроль знаний и умений. Текущий контроль уровня усвоения материала осуществляется по результатам выполнения учащимися практикумов по каждому разделу курса. Организация учебного процесса. В основу организации учебного процесса положена система лекционно-семинарских занятий. Данная система позволяет максимально приблизить учащихся к обучению в высших учебных заведениях. Поэтому учебный процесс можно организовать в двух взаимосвязанных и взаимодополняющих формах: урочная форма, в которой учитель объясняет новый материал (лекции), консультирует учащихся в процессе решения задач, учащиеся сдают зачеты по теоретическому материалу и защищают практикумы по решению задач, курсовые проекты; 2 внеурочная форма, в которой учащиеся после занятий (дома или в компьютерном классе) самостоятельно выполняют компьютерные практикумы, курсовые работы. Лекции. Представление учебного материала учащимся проводится в форме лекций. Каждая лекция – дидактическая единица, требующая примерно одинакового времени на изложение теоретического материала (по 2 часа). Для лучшего восприятия материала лекции сопровождаются демонстрацией презентаций. Практикум по решению задач. Основной формой проведения занятий являются практикумы по решению задач. Организация личностно-ориентированных практикумов по решению задач, личностно-ориентированного контроля – это как раз то, что необходимо учащемуся для его уверенности, успешности в очень сложном разделе информатики. Эти две формы работы предполагают следующее: Каждому ученику подбираются индивидуальные задачи (как правило, для тематического 2-3, для итогового до 10). Подбор задач для каждого ученика необходимо выполнять исходя из их умственных способностей и психологического настроя к программированию. Задачи каждому ученику выдаются адресно. Каждый ученик на разных практикумах имеет разный вариант (сегодня первый, в следующий раз девятый и т.д.) – это тоже важный момент, ориентированный на личность учащегося. Задачи для каждого ученика посильные, т.е. он заведомо уверен в своем успехе. Примеры практикумов можно посмотреть в журнале «Информатика и образование» №11 2005г. «Организация контроля в курсе программирования». Семинар. После завершения практикума каждый ученик защищает свои решения на семинарах перед другими учениками, делится новыми способами решения. Принимает участие в дискуссии по поводу решения задач, предлагает другие пути их решения. Отвечает на возникшие вопросы в ходе обсуждения. ПРОГРАММА КУРСА Введение в Паскаль. Данные. Типы данных Алгоритмы линейной структуры Алгоритмы разветвляющейся структуры Перечислимый и интервальный типы данных Циклы Подпрограммы Массивы МИНИМАЛЬНО НЕОБХОДИМЫЙ УРОВЕНЬ ЗНАНИЙ, УМЕНИЙ И НАВЫКОВ УЧАЩИХСЯ, НЕОБХОДИМЫХ ДЛЯ УСПЕШНОГО ПРОХОЖДЕНИЯ КУРСА 3 Базовые алгоритмические структуры. Запись алгоритма в виде блок-схем. ТЕМАТИЧЕСКОЕ ПЛАНИРОВАНИЕ № Тема Часы Введение в Паскаль. Данные. Типы данных – 6 часов 1-2 Введение в Паскаль. Структура программы на языке Паскаль. Рекомендации по стилю записи программы, использование комментариев. Алфавит языка. 3-4 2 Типы данных: целый и вещественный, логический и символьный. Константы. 2 Переменные. 5 Организация ввода-вывода. Оператор присваивания. 1 6 Зачетный класс 1 Алгоритмы линейной структуры – 8 часов 7-8 Арифметические выражения. Стандартные функции. Правила записи арифметических выражений. Операции. Операнды. Следование. 9-12 Практикум по решению задач №1 2 4 13 Обобщающий урок по теме «Алгоритмы линейной структуры» 1 14 Зачетный класс 1 Алгоритмы разветвляющейся структуры – 10 часов Организация ветвлений в программах. Основные понятия математической 15-16 логики. Условный оператор. Оператор безусловного перехода. 17-22 Практикум по решению задач №1 2 6 23 Обобщающий урок по теме «Алгоритмы разветвляющейся структуры» 1 24 Зачетный класс 1 Перечислимый и интервальный типы данных – 6 часов 25 Перечислимые и ограниченные типы данных. Оператор выбора case. 26-28 Практикум по решению задач №2 1 3 29 Обобщающий урок по теме «Перечислимый и интервальный типы данных» 1 30 Зачетный класс 1 Циклы – 10 часов 31-32 Программирование циклических алгоритмов, виды циклов. Операторы организации циклов. Вложенные циклы. 2 4 33-38 Практикум по решению задач №2 6 39 Обобщающий урок по теме «Циклы» 1 40 Зачетный класс 1 Подпрограммы – 10часов 41-44 Процедуры. Функции. Рекурсии. Процедуры и функции пользователя. 4 45-48 Практикум по решению задач №7 4 49 Обобщающий урок по теме «Подпрограммы» 1 50 Зачетный класс 1 Массивы – 17 часов 51-54 Одномерные массивы: описание и задание элементов, действия над ними. Поиск, замена в одномерном массиве. Сортировка массива. Способы 4 сортировки. 55-59 Практикум по решению задач №3 4 Понятие двумерного массива. Действия над элементами массива. Обработка 60-61 элементов двумерных массивов. Квадратная матрица. Транспонирование 2 матрицы. 62-66 Практикум по решению задач №4 5 67 Обобщающий урок по теме «Массивы» 1 68 Зачетный класс 1 Итого по 1-му году обучения 68 ПОУРОЧНОЕ ПЛАНИРОВАНИЕ Как уже было отмечено выше, в основу организации учебного процесса положена система лекционно-семинарских занятий. Поурочное планирование будет рассмотрено на примере одной главы, для других глав поурочное планирование строится подобным образом, исходя из тех требований к знаниям, умениям и навыкам, которые предъявляются к выпускникам, прошедшим данный курс. Объяснение нового материала дается в форме лекций, которые сопровождаются слайдами презентации (пример лекции приведен в качестве методической разработки занятия по теме «Типы данных»). Практически каждая глава учебного курса имеет практикум по решению задач, на котором формируются и закрепляются практические умения и навыки по теме (навыки программирования). Целью обобщающих уроков – воедино собрать знания, полученные при изучении темы, установить логические связи и закономерности между изученными определениями и понятиями, а также 5 обобщить практические умения и навыки. Обобщающие уроки проходят в форме семинаров или с элементами семинарского занятия (пример обобщающего занятия приведен в качестве методической разработки занятия по теме «Записи»). Контролирующий урок по каждой теме проводится в форме зачетного класса (пример зачетного класса приведен в качестве методической разработки занятия по теме «Массивы»). При подготовке занятий используется литература: Попов В.Б. Turbo Pascal для школьников: Учеб. Пособие.- 3-е доп. изд. - М.: Финансы и статистика, 2002. Рапаков Г.Г., Ржеуцкая С.Ю. Turbo Pascal для студентов и школьников. – СПб.: БХВ-Петербург, 2004. Культин Н. Б. Turbo Pascal в задачах и примерах. – СПб.: БХВ-Петербург, 2002г Электронное пособие «Задачник–решебник. Программируем на языке Паскаль» (разработанный на основе предыдущих пособий). Рассмотрим поурочное планирование на примере главы «Алгоритмы линейной структуры». Занятие 7-8 Тема. Арифметические выражения. Стандартные функции. Правила записи арифметических выражений. Операции. Операнды. Следование. Цели. Познакомить учащихся с арифметическими выражениями. Формирование понятий: операция, операнд, функция, знак операции, тип выражения. Познакомить с правилами записи арифметических выражений, стандартных функций и обеспечить их осознанное усвоение. Формирование навыков составления программ, имеющих линейную структуру. Содержание. Форма изложения материала лекционная. Рассматривается материал, содержащий понятия: операция, операнд, функция, знак операции, тип выражения. Вводятся арифметические операции и такие как div, mod. На примерах отрабатывается правило конструирования арифметических выражений с использованием стандартных функций (abs(x), sqr(x), sin(x), cos(x), arctan(x), ln(x), exp(x), sqrt(x), int(x) и др.). Рассматриваются задачи линейной структуры. План проведения занятия. 1. Лекция по данной теме. Лекция сопровождается презентацией. Учащиеся записывают основные понятия, которые отображены в презентации. 2. Подведение итогов. На этом этапе учащиеся отвечают на поставленные вопросы по ходу лекции. 6 3. Домашнее задание: повторить основные понятия; знать правила записи арифметических выражений; составить по пять арифметических выражений и выписать все входящие в них операнды, операции. Занятие 9-12 Тема. Практикум по решению задач №1 Цели. Формирование умений и навыков программирования, используя алгоритмы линейной структуры. Содержание. Данный практикум разбит на две части. Каждому учащемуся предоставляется по десять задач: пять на линейные и пять на разветвляющие алгоритмы. Примеры практикума приведены в журнале «Информатика и образование» №11, 2005г. План проведения занятий (все практикумы поводятся по одному плану). 1. Индивидуальное решение задач каждым учащимся. 2. Консультирование учителя по возникшим вопросам. Занятие 13 Тема. Обобщающий урок по теме «Алгоритмы линейной структуры» Цели. Воедино собрать знания, полученные при изучении темы «Алгоритмы линейной структуры», установить логические связи и закономерности между изученными определениями, понятиями, правилами. Обобщить практические навыки и умения по данной теме. Содержание. Все основные понятия, определения, правила, вводимые на первом занятии данной теме. План проведения занятия. 1. Семинар, на котором проходит обсуждение программ, которые учащиеся получили в ходе выполнения практикума. 2. Подведение итогов 3. Домашнее задание: подготовиться к зачетному классу по данной теме. Занятие 14 Тема. Зачетный класс по теме «Алгоритмы линейной структуры» Цели. Проконтролировать знания, умения и навыки по данной теме. Содержание. Арифметические выражения. Стандартные функции. Правила записи арифметических выражений. Операции. Операнды. Следование. План проведения занятия. Зачетные классы проводятся по одной схеме, приведенной ниже. Далее план проведения зачетных классов указываться не будет. 1. Тест 7 2. Контрольное задание (задача, содержащая базовую структуру следование) ТРЕБОВАНИЯ К ЗНАНИЯМ И УМЕНИЯМ УЧАЩИХСЯ ПОСЛЕ ПРОХОЖДЕНИЯ КУРСА Тема «Введение в Паскаль» Учащиеся должны знать и уметь: Место языка Паскаль среди языков программирования высокого уровня. Структуру программы на языке Паскаль. Читать синтаксические диаграммы и сопоставлять их с реальными текстами на языке Паскаль. Структуру модулей в Турбо Паскаль. Пользоваться готовыми модулями и разбираться в их структуре, назначении отдельных разделов. Пользоваться стандартным модулем Crt. Тема «Данные. Типы данных. Выражения. Операнды. Операции» Учащиеся должны знать и уметь: Что такое величина и чем она характеризуется. Что такое операция, операнд и их характеристики; в чем принципиальные отличия величин структурированных и не структурированных; о таких структурах данных, как множество, запись, файл, стек, очередь, строка. Что может входить в состав арифметического выражения; перечень математических функций, входящих в Турбо Паскаль. О логических выражениях и входящих в них операндах, операциях и функциях. Записывать примеры арифметических и логических выражений всех атрибутов, которые могут в них входить. Тема «Операторы» Учащиеся должны знать и уметь: Перечень основных операторов языка Паскаль. Синтаксис этих операторов. Детали процесса исполнения каждого из операторов. Описывать словесно работу каждого из рассмотренных операторов. Разрабатывать программы обработки числовой и символьной информации, требующие вложения одного и более основных операторов. Тема «Перечислимый и интервальный типы данных» Учащиеся должны знать и уметь: Назначение перечислимого и интервального типов данных. Какие ограничения связаны с этими типами. Примеры программ, использующих эти типы. Создавать перечислимые типы. Описывать переменные перечислимого типа. Разрабатывать программы, содержащие величины перечислимого типа. Строить интервальный тип на базе произвольного порядкового типа. Тема «Процедуры и функции» Учащиеся должны знать и уметь: 8 Почему наличие полноценных процедур и функций является принципиально важным для структурно-ориентированного языка высокого уровня. Каковы правила описания процедур в Паскале. Как строится вызов процедур. В чем принципиальные отличия между формальными, локальными и глобальными переменными. В чем отличия между параметрами-переменными и параметрами-значениями, и в каких ситуациях целесообразно использовать те и другие. В чем отличия между процедурами и функциями. Область действия описаний в процедурах. В чем в принципе заключается рекурсия и как она реализована на Паскале. Выделять вспомогательные алгоритмы в сложных задачах. Формировать процедуры и функции. Правильно строить обращения к процедурам и функциям. Тема «Структурированные типы данных» Учащиеся должны знать и уметь: Какие структурированные типы данных есть в языке Турбо Паскаль. Как формально определять в программе типы «массив», «строка», «множество», «запись», «файл». Какими свойствами обладают данные указанных типов. Какие операции возможны над величинами указанных типов. При решении содержательных задач, в которых целесообразно пользоваться структурированными данными, адекватно выбирать подходящую из перечисленных выше структур. Пользоваться комбинациями структур данных (типа «массив записей» и т.д.). Воспроизвести алгоритмы сортировки линейных числовых массивов и поиска в упорядоченном массиве. Распространить эти алгоритмы на сортировку и поиск в нечисловых массивах, массивах записей. МЕТОДИЧЕСКИЕ РАЗРАБОТКИ УРОКОВ ЗАНЯТИЕ 1. Тема урока: Типы данных Цель урока: сформировать у учащихся целостного представления о типах данных языка Паскаль Задачи урока: образовательные: формирование знаний и умений учащихся по теме «Типы данных языка Паскаль»: скалярные и структурированные данные, стандартные и пользовательские типы данных, целые, логические, символьные, перечисляемые, интервальные, вещественные, ссылочные, строковые, регулярные, комбинированные, множественные, файловые, процедурные типы данных. развивающие: развитие приемов умственной деятельности (обобщение, анализ, синтез, сравнение); развитие внимания, восприятия. 9 воспитательные: развивать познавательный интерес к программированию, повышать информационную культуру учащихся. Тип урока: урок изучения нового материала. Вид урока: сдвоенный, продолжительность 90 минут. Форма проведения: лекция. Оборудование: компьютер, проектор. Программное обеспечение: презентация в PowerPoint по теме урока «Типы данных» При подготовке урока использовалась литература: Попов В.Б. Turbo Pascal для школьников: Учеб. Пособие.- 3-е доп. изд. - М.: Финансы и статистика, 2002. Рапаков Г.Г., Ржеуцкая С.Ю. Turbo Pascal для студентов и школьников. – СПб.: БХВ-Петербург, 2004. Культин Н. Б. Turbo Pascal в задачах и примерах. – СПб.: БХВ-Петербург, 2002г. Рекомендации по проведению лекции Лучше всего, для восприятия учащимися лекционного материала, сопровождать лекцию демонстрацией слайдов презентации. Выделить важные моменты в отдельные слайды. Некоторые таблицы и схемы можно заготовить учащимся в виде раздаточного материала – это экономит время и лучше воспринимается учащимися. План урока 1. Организационный момент – 10 минут 2. Лекция – 75 минут 3. Подведение итогов урока – 3 минуты 4. Домашнее задание – 2 минуты Ход урока I. Организационный момент Учитель. Здравствуйте, ребята! Прежде чем приступить к серьезной работе, настроиться на получение большого потока информации, я предлагаю Вам выступить с сообщениями по темам: «Язык программирования Паскаль», «История создания языка Паскаль», «Никлаус Вирт – создатель языка программирования Паскаль». Учащиеся выступают с сообщениями по названным темам, подготовленным дома. Важно проследить, чтобы информация была различной и взаимно - дополняла друг друга. Учитель. Большое спасибо всем выступающим. Сегодня на уроке мы должны представить целостную картину о типах данных языка Паскаль. 10 Приготовьтесь к внимательному восприятию информации. По ходу лекции будет демонстрироваться презентация, в которой отображены важные моменты темы. Их необходимо записать себе в тетрадь. Итак, тема урока «Типы данных». Запишите тему урока. Лекция II. Функционирование любой программы связано с обработкой данных. Данные, предназначенные для обработки, называются исходными и задаются обычно в начале программы. Программа по ходу выполнения может запрашивать недостающие исходные данные. В процессе выполнения программы исходные данные преобразуются в результаты. Каждый элемент данных, используемый в программе, является константой или переменной. Константами называются элементы данных, значения которых в процессе выполнения программы не изменяются. В языке Turbo Pascal используются константы следующих видов: числовые, логические (булевские), символьные и строковые. Числовые константы предназначены для представления числовых данных (целых и вещественных). Булевские константы используются для представления данных, имеющих смысл логических высказываний (да - нет, истина – ложь, 1 - 0). Символьные и строковые константы – это отдельные символы и их последовательности. Переменные, в отличие от констант, могут менять свои значения при выполнении программы. В программировании переменную можно трактовать как одну или несколько ячеек оперативной памяти компьютера, которым присвоено определенное имя (идентификатор). Содержимое этих ячеек может меняться, но имя переменной остается неизменным. Каждое новое значение, записанное в ячейку памяти, «затирает» предыдущее значение, поэтому в любой момент времени переменная имеет только одно, текущее, значение. Обычно переменные используются для хранения исходных данных, результатов программы, а также промежуточных данных, которые образуются по ходу выполнения алгоритма. Вопрос. Как вы думаете, может ли быть верным данное высказывание а:=а+1? В математике значение переменной в рамках определенной задачи неизменно, поэтому математик сочтет это высказывание неверным. Для программиста это абсолютно правильная конструкция, которая задает вычисление суммы содержимого ячейки а и числовой константы 1 и занесение полученного результата в ту же ячейку а. После выполнения этого действия старое значение переменной а будет потеряно, т.к. одна ячейка памяти не может вместить сразу несколько значений. Это очень важный момент в программировании. 11 Именование констант и переменных в программировании очень похоже на использование символических выражений в алгебре, однако, для того чтобы компилятор смог их обрабатывать, нужно снабдить его некоторой дополнительной информацией – выполнить описание. В этой информации сообщается о типе каждой именованной величины. Для описания множества допустимых значений величины и совокупности операций, в которых может участвовать данная величина, используется указание ее типа данных. Тип данных (data type) – множество величин, объединенных определенной совокупностью допустимых операций. Каждый тип имеет свой диапазон значений и специальное зарезервированное слово для описания. Все типы данных можно разделить на две группы: скалярные и структурированные (составные). Скалярные типы, в свою очередь, делятся на стандартные и пользовательские. Стандартные типы предлагаются пользователям разработчиками системы Турбо Паскаль. К ним относятся целочисленные, вещественные, литерные, булевские типы данных и указатели. Пользовательские типы разрабатываются пользователями системы программирования Турбо Паскаль. Перечень типов данных в языке Турбо Паскаль можно представить в виде следующей схемы: Данные Простые типы (скалярные) byte integer longint real Простые (скалярные) типы данных extended single Файловый (file) Множественный (set) Комбинированный (record) Регулярный (array) Строковый (string) Вещественные типы Интервальный тип (диапазон) Перечисляемый типы shortint word Процедурные типы Ссылочный Символьный тип ( char) Логический тип (boolean) Целые типы Порядковые Структурированные типы double comp К скалярным (scalar - простые) типам данных относят типы данных таких величин, значения которых не содержат составных частей. 12 Все простые данные имеют два характерных свойства: неделимость и упорядоченность их значений. Целочисленные типы данных Целочисленные типы Тип Диапазон Требуемая память (байт) byte 0..255 1 данных представляют собой shortint -128..127 1 значения, integer -32768..32767 2 использоваться word 0..65535 2 арифметических выражениях longint -2147483648..2147483647 4 и занимать в памяти от 1 до 4 которые могут в байт. Вещественные типы данных Тип Диапазон Мантисса Требуемая память (байт) real 2.9*10E – 39..1.7*10E38 11-12 6 single 1.5*10E – 45..3.4*10E38 7-8 4 double 5.0*10E – 324..1.7*10E308 15-16 8 extended 1.9*10E – 4951..1.1*10E4932 19-20 10 comp 8 -2E+63+1..2E+63-1 10-20 Вещественные типы данных представляют собой вещественные значения, которые могут использоваться в арифметических выражениях и занимать в памяти от 4 до 6 байт. Паскаль допускает представление вещественных значений и с плавающей запятой, и с фиксированной точкой. Все вещественные типы, кроме real, могут использоваться в программе, если в компьютере имеется математический сопроцессор Intel 8087/80287 или программно эмулируются (эмуляция – имитация функционирования математического сопроцессора в его отсутствие программными средствами) аппаратные операции с вещественными типами. Вещественные значения могут изображаться в форме с фиксированной точкой, например 7.32, 456.721 или 0.015, а также в форме с плавающей точкой, т.е. парой чисел вида <мантисса>Е<порядок> (7.32Е+00, 4.56721Е+02, 1.5Е-02). Литерный (символьный) тип. Литерный (символьный) тип char определяется множеством значений кодовой таблицы ПЭВМ. Каждому символу приписывается целое число в диапазоне от 0 до 255. Для размещения в памяти переменной литерного типа требуется один байт. Булевский тип 13 Булевским типом называют тип данных, представляемый двумя значениями true (истина) и false (ложь). Он широко применяется в логических выражениях и выражениях отношения. Для размещения в памяти переменной булевского типа требуется 1 байт. Пользовательские типы Кроме стандартных типов данных Паскаль поддерживает скалярные типы, определенные самим пользователем. К ним относятся перечисляемый и интервальный типы. Данные этих типов занимают в памяти один байт, поэтому скалярные пользовательские типы не могут содержать более 256 элементов. Их применение значительно улучшает наглядность программы, делает более легким поиск ошибок, экономит память. Интервальный тип (диапазон) Интервальный тип позволяет задавать две константы, определяющие границы диапазона значений для данной переменной. Компилятор при каждой операции с переменной интервального типа генерирует подпрограммы проверки, определяющие, остается ли значение переменной внутри установленного для нее диапазона. Обе константы должны принадлежать одному из стандартных типов (тип real недопустим). Значение первой константы должно быть значительно меньше значения второй. Например: 1..12 (номер месяца может принимать значения от 1 до 12) или ‘а’..’я’ (буквы русского алфавита – от а до я) Перечисляемый тип Перечисляемый тип (enumerated type) – тип данных, заданных списком принадлежащих ему значений. Объявление перечисляемого типа описывает множество идентификаторов, которые являются возможными значениями перечисляемого типа. Идентификаторы в описании типа представляют собой константы. Отдельные значения указываются через запятую, а весь список заключается в круглые скобки. Перечисляемый тип ограничен больше чем интервальный, он задается перечислением своих значений. Например, в виде строковых констант: color=(red, blue, green, black). В приведенном примере создается новый (нестандартный) тип данных color. Переменные этого типа могут принимать всего 4 значения: red, blue, green, black. Такая возможность создания новых пользовательских типов данных имеется в языке Turbo Pascal. Структурированные типы данных Структурированные типы данных определяют упорядоченную совокупность скалярных переменных и характеризуются типом своих компонентов. 14 Структурированные типы данных в отличие от простых задают множества сложных значений с одним общим именем. Можно сказать, что структурные типы определяют некоторый способ образования новых типов из уже имеющихся. Существует несколько методов структурирования, каждый из которых отличается способом обращения к отдельным компонентам и, следовательно, способом обозначения компонентов, входящих в структурные данные. По способу организации и типу компонентов в сложных типах данных выделяют следующие разновидности: регулярный тип (массивы); комбинированный тип (записи); файловый тип (файлы); множественный тип (множества); строковый тип (строки); в языке Турбо Паскаль версии 6.0 и старше введен объектный тип (объекты). В отличие от простых типов данных, данные структурированного типа характеризуются множественностью образующих этот тип элементов, т.е. переменная или константа структурированного типа всегда имеет несколько компонентов. Каждый компонент в свою очередь может принадлежать структурированному типу, т.е. возможна вложенность типов. Все структурированные типы данных требуют отдельного рассмотрения и будут подробно изучены нами в дальнейшем, а сегодня мы только их определим. Строки Строка (string) – это последовательность символов кодовой таблицы персонального компьютера. Количество символов в строке может изменяться от 0 до 255. Массивы Простые типы определяют различные множества неразделимых значений. В отличие от них структурированные типы задают множества сложных значений, каждое из которых образует совокупность нескольких значений другого типа. В структурных типах выделяют регулярный тип (массивы - array). Название регулярный тип (или ряды) массивы получили за то, что в них объединены однотипные элементы, упорядоченные (урегулированные) по индексам, определяющим положение каждого элемента в массиве. Множества Множество (set) – это структурированный тип данных, представляющий собой набор взаимосвязанных по какому-либо признаку или группе признаков объектов, которые можно рассматривать как единое целое. Каждый объект в множестве называется элементом 15 множества. Все элементы множества должны принадлежать одному из скалярных типов, кроме вещественного. Записи Иногда для решения задач, в которых возникает необходимость хранить и обрабатывать совокупность данных различного типа, используются отдельные массивы для каждого типа данных, а для установления соответствия между ними вводятся соответствующие индексы. Для записи комбинации объектов разных типов в Паскале применяется комбинированный тип данных – запись (record). Например, товар на складе описывается следующими величинами: наименование, количество, цена, наличие сертификата качества и т.д. В этом примере наименование – величина типа string, количество – integer, цена – real, наличие сертификата – boolean. Запись представляет собой наиболее общий и гибкий структурированный тип данных, так как она может быть образована из неоднотипных компонентов и в ней явным образом выражена связь между элементами данных, характеризующими реальный объект. Файлы Большие совокупности данных удобно иметь записанными во внешней памяти в виде последовательности сигналов. В Паскале для этих целей предусмотрены специальные объекты – файлы (file). Файлом называется совокупность данных, записанная во внешней памяти под определенным именем. Рассмотри задачи на объявление переменных и констант скалярного типа. Приступая к решению задач на объявление данных скалярного типа, следует помнить, что: каждая переменная программы должна быть объявлена; объявление переменных помещают в раздел, который начинается словом var; константы помещают в раздел, который начинается словом const; переменные пользовательских типов (перечисляемые и интервальные) объявляют по особой схеме; В имени переменной можно использовать буквы латинского алфавита и цифры (первым символом должна быть буква); после инструкции объявления данных рекомендуется указывать назначение переменной или константы; инструкция объявления констант выглядит так: ИмяКонстанты = значение константы; Пример: const 16 min=1; {минимальное значение} max=54; {максимальное значение} инструкция объявления переменных выглядит так: имя ИмяПеременной: тип; var k1: integer; {количество тетрадей} k2: byte; {количество карандашей} c1: real; {цена одной тетради} инструкция объявления переменных интервального типа помещается в двух разделах type, var и выглядит так: type <имя типа>=(<константа1> ..<константа2>); var <идентификатор, …>: <имя типа>; Пример: type days=1..31 ; {дни месяца} var rabotday: days; {рабочие дни} vihodday: days; {выходные дни} инструкция объявления переменных перечисляемого типа помещается в двух разделах type, var и выглядит так: type <имя типа>=(<значении 1, значение 2, значение n>); var <идентификатор, …>: <имя типа>; Пример: type days=(monday, muesday, wednesday, thursday, friday, saturday, sunday) ; {дни } var day: days; {дни недели} season: (may, april, juin ); {дни отпуска} Рассмотрим несколько задач на объявление данных скалярного типа (целого и вещественного). Задача 1. Объявите переменные, необходимые для вычисления значения функции у=х2. 17 Учитель. Прежде чем записать инструкцию объявления переменных для вычисления того или иного выражения или функции, необходимо: записать формулу; определить количество переменных, входящих в эту формулу; определить какой тип может быть у этих переменных; определить наиболее приемлемый. Важно помнить, что программа должна занимать минимально памяти компьютера, а это на прямую зависит от типа данных. Анализ задачи. Сколько переменных входят в данную формулу у=х2? Какое значение имеет переменная х? Какое значение имеет переменная у? Какого типа могут быть переменные? Если переменная х – целого типа, то какого типа должна быть переменная у? Какие варианты инструкции объявления переменной для вычисления данной функции могут быть? Запишем их. Вариант 1. var Вариант 2. var Вариант 3. var х:real; {аргумент} х:integer;{аргумент} х: integer; {аргумент} у: real; {функция} у:integer;{функция} у:real;{функция} Какой из этих вариантов самый приемлемый и почему? (Ответ: первый вариант самый приемлемый, так как в область допустимых значений данной функции может входить как целое число, так и вещественное, но диапазон целых чисел не может содержать себе вещественные числа, а входить в вещественный диапазон может). Задача 2. Объявите данные, необходимы для вычисления площади круга. Анализ задачи. Запишем формулу для вычисления площади круга: s= r 2 . Сколько переменных входят в данное выражение? Есть ли еще данные, кроме переменных, входящих в данную формулу? Чем является число - переменной или константой? Какое значение имеет переменная r? Какое значение имеет переменная s? Если переменная r – целого типа, то какого типа должна быть переменная s? Запишем инструкцию объявления данных. const pi=3.14 ; {число } var r: real; {радиус} s: real; {площадь} Задача 3. Объявите данные, необходимы для вычисления стоимости покупки, состоящей из нескольких тетрадей, карандашей и линейки. Анализ задачи. Запишем формулу для вычисления площади круга: s=k1*c1+k2*c2+c3. Сколько переменных входят в данную формулу? Какое значение имеют переменные k1, k2? Какое значение имеют переменные с1, с2, с3? Какое значение имеет переменная s? Запишем инструкцию объявления данных. 18 var k1: real; {количество тетрадей} k2: real; {количество карандашей} с1: real; {цена одной тетради} с2: real; {цена одного карандаши} с3: real; {цена линейки} s: real; {стоимость покупки} Подведение итогов урока III. Учитель. На этом уроке вы узнали о типах данных языка Паскаль. Давайте еще раз посмотрим схему, отображающую типы данных. И обобщим услышанное во время лекции. Ответьте, пожалуйста, на вопросы: 1. Какие данные различают в языке Паскаль? (Ответ: переменные и константы). 2. На какие две основные группы можно разделить эти данные? (Ответ: простые (скалярные) и структурированные). 3. Посмотрите на схему и назовите основные типы скалярного типа данных. (Ответ: литерные, вещественные, целые, логические, пользовательские). 4. Почему важно правильно определить тип данных при составлении программы? Приведите свой пример. (Ответ: для того чтобы программа занимала меньший объем памяти и не было сбоев в программе). 5. Как выглядят инструкции объявления констант и переменных? (Ответ: const ИмяКонстанты=Значение; var ИмяПеременной: тип;) 6. Почему рекомендуется указывать назначение данных, используемых в программе? (Ответ: во-первых, это считается хорошим тоном программирования, во-вторых, облегчает чтение программы и отслеживание ее работы). Учитель. Большое всем спасибо за работу. Очень рада что вы внимательно слушали, помогали мне в работе. И теперь главное, хорошо подготовиться дома к следующему занятию. IV. Домашнее задание 1. Знать материал лекции. 2. Приготовить таблицы диапазонов целых и вещественных чисел. 3. Знать зарезервированные слова для скалярного типа данных. 4. Задачи (по карточкам). Карточка для домашнего задания. 1. Объявите переменные, необходимые для вычисления площади кольца. 19 2. Объявите переменные, необходимые для вычисления стоимости покупки, состоящей из нескольких тетрадей и такого же количества обложек. ЗАНЯТИЕ 2. Тема урока: Записи. Тип урока: обобщающий урок Форма проведения: семинарское занятие. Продолжительность урока: 45 минут Подготовка кабинета. На доске висит плакат с эпиграфом к уроку: «Успех совершаемого – в продумывании, неудачи – в бездумье (Хань Юю)» На доске отображается план урока, чтобы учащиеся соблюдали регламент. Для каждой группы выделяется отдельный стол. Для каждой группы выделяются компьютеры. Желательно, чтобы они были расположены рядом со столом группы. На каждый стол готовиться пакет с заданиями (по количеству учащихся), включающий в себя: тест, макет таблицы, тексты задач, оценочные листы. Защита программ реализуется с помощью проектора. Цели урока: повторение и закрепление материала по теме: «Записи»; стимулирование интереса учащихся к программированию; активизация взаимодействия между учащимися, навыков групповой работы; воспитание у учащихся самостоятельности, ответственности за себя и других членов коллектива; развитие: алгоритмического мышления; умения применять полученные знания при решении задач; памяти; внимательности; План урока: 1. Организационный момент – 2 минуты. 2. Разминка – 7 минут. 3. Работа в группах – 23 минуты. 4. Защита программ, обсуждение – 10 минут. 5. Подведение итогов. Рефлексия – 2 минут. 6. Домашнее задание – 1 минута. Ход урока I. Организационный момент 20 Сегодня мы завершаем изучение темы «Записи». Заключительный урок мы проведем в виде семинара. Для того чтобы было удобно работать, мы разобьемся на группы. Во время разминки каждой группе будут предложены: тест и задание на конструирование таблицы (объявить данные, необходимые для создания данной таблицы) с помощью комбинированного типа данных. Следующий этап – решение задач: группе будет предложены задачи. Обсуждение алгоритма решения осуществляется коллективно, программу решения пишет каждый индивидуально. После того, как закончится время для работы в группах – проведем научное собрание с защитой всех решенных задач. Оценивать работу каждого в группе будете самостоятельно. Для того чтобы работа была плодотворной, разобьемся на три группы. Группы сформируем случайным образом. Проведем жеребьевку (каждый ученик вытягивает карточку с номером): у кого номера 1 – 4 – первая группа, 5 – 8 – вторая группа, 9-12 – третья. Разминка II. Задание 1. Тест 1. В чем заключается существенное отличие между массивами и записями? a. В отличие от записей, массива позволяют объединять значения различных типов b. В отличие от массивов, записи позволяют объединять значения различных типов c. Записи относят к комбинированным типам d. Ни в чем 2. Какие служебные слова определяют список полей? a. record, begin, end c. record, repeat, end b. record, end d. record 3.С помощью какого оператора происходит обращение к элементам некоторой записи a. If c. With b. While d. Record 4. Определите ошибку в описании записи type avto=record; number: integer; {номер автомобиля} marka: string; fio: string; {марка автомобиля} {фамилия, инициалы владельца} address: string; {адрес владельца} end; a. не указана длина строковых полей 21 b. слово address написано не верно c. после слова record не ставится точка с запятой d. ошибок нет 5. Составное имя некоторого значения поля записи состоит из... a. имени переменной и имени поля, разделенных точкой b. имени записи и имени поля, разделенных точкой c. имени переменной и имени поля, разделенных двоеточием d. имени переменной и имени поля, разделенных точкой с запятой 6. Запись address описана следующим образом: typy address=record k: longint; {почтовый индекс} city: string[10]; {город} street: string;{улица} end; Найти ошибки сортировки данной записи по полю город. Смотри текст программы: for i:=1 downto 2 do for j:=1 to i-1 do with x[i] do begin if x[j].city>x[j+1].city then begin z:=x[j].city; x[j].city:=x[j+1].city; x[j].city:=z; end; a. b. сортируются все поля кроме поля c. city d. сортировка не происходит сортировка выполнена верно сортируется только поле city 7. Имя поля не может иметь тип... a. longint c. string b. real d. if e. char Задание 2. «Конструирование таблицы». Объявить данные, с помощью которых можно задать предложенную таблицу. Как можно обратиться к элементу, который отображен в одной из ячейки. 22 Таблица 1. Anketa facult group address fio k city street bd house flat date month year Корытово Таблица 2. sklad prom_tovar name k cena prod_tovar stoim name tvset k cena stoim pribil 13.5 Задания разминки может выполнять каждый участник группы, а возможно распределение заданий между учащимися. III. Работа в группах. На этом этапе каждой группе предложено по одной задаче, для которой учащиеся должны составить программу и подготовить выступление по защите своего решения. Учащиеся сами распределяют между собой, как они будут выполнять это задание. Задача для первой группы: Сформировать список студентов, состоящий из №, фамилии, оценки за три экзамена, общий балл за все экзамены, сумму начисленной стипендии, подоходный налог, итоговой суммы. Если бал за экзамены равен 15, то сумма начисленной стипендии рана 75, если бал за экзамены меньше 15, но больше 12, то сумма начисленной стипендии равна 62.5, если бал за экзамены меньше 12, но больше 9, то сумма начисленной стипендии равна 50, иначе сумма начисленной стипендии равна 0. Налог равен 1% от начисленной суммы. Сумма к выдаче равна начисленная сумма минус налог. Отсортировать данный список в алфавитном порядке. Задача для второй группы: Известно расписание поездов, проходящих через станцию: номер поезда, назначение (например «Москва-Омск»), часы и минуты прибытия, часы и минуты отправления. Значение часов и минут целые величины; число часов не превышает 23, число минут – 59. Общее число проходящих поездов равно 10. Поезда приходят каждый день. Отсортировать данный список по полю «номер поезда». По данному времени, определить, какие поезда (номер и назначение) стоят в этот момент на станции. 23 Задача для третей группы: Известна информация о 10 клиентах проката: фамилия, имя, отчество, адрес и домашний телефон. Известно также наименование предмета, взятого каждым из них (телевизор, холодильник и т.д.). Вывести на экран фамилии тех, кто взял на прокат телевизор. Посчитать количество взятых на прокат холодильников. И определить остались ли в прокате утюги. Защита программ, обсуждение. IV. Учащиеся каждой группы на этом этапе представляют решение своих задач. Представление лучше всего показать на проекторе, чтобы все учащиеся могли хорошо видеть программу. Цель каждого ученика: внимательно прослушать предложенное решение, вникнуть в его; задавать вопросы друг другу; оценивать «соперников»; предлагать свои варианты решения. При подведении итогов занятия будет учитываться участие каждого учащегося в дискуссии. Учитель может составлять рейтинг по ходу дискуссии: V. кто чаще всего задавал вопросы? кто дал больше всех правильных ответов? чьи вопросы и ответы были более интересными и др.? Подведение итогов. Рефлексия. Учащиеся высказывают свое мнение по предложенным учителем вопросам: 1. Какие трудности возникли у вас при решении задач по данной теме? 2. Что у вас получалось хорошо? На что еще нужно обратить внимание дома, чтобы выполнить зачетный класс? 3. Оцените каждый свою деятельность. (Предлагается оценочный лист). 4. Оцените деятельность других. (Предлагается оценочный лист). Выставление оценок за урок по результатам оценочных листов учащихся – это трудная задача. Такую работу необходимо проводить в системе. Если такой метод оценивания использовать однократно на конкретном уроке, то можно ущемить права и интересы конкретного учащегося. Поэтому, если ранее не был использован этот метод, учителю необходимо проанализировать оценочные листы учащихся и свое видение и оценить каждого учащегося по его достижениям во время семинарского занятия. VI. Домашнее задание 1. Повторить материал по теме занятия, подготовиться к зачетному классу (зачетный класс, как всегда, состоит из теста, защиты задач практикума, решения контрольной задачи). 2. Выполнить работу над ошибками тех заданий, в которых были допущены ошибки на сегодняшнем уроке. 24 ПРИЛОЖЕНИЕ К МАТЕРИАЛАМ ЗАНЯТИЯ Разминка Задание 1. Ответы к тесту: 1 2 3 4 5 6 7 b b c c b b d Задание 2. Конструирование таблиц. Таблица 1. type anketa=record facult: string; group: 1..6; fio: string; address=record k: longint; city: string[10]; street: string; house, flat: integer; end; bd=record date: 1..31; month: 1..12; year: integer; end; end; var ved: array[1..20] of anketa; ved[2].address.city:=’Корытово’; Таблица 2. type sklad=record prom_tovar=record name: string; k: integer; cena: real; stoim: real; end; prod_tovar=record name: string; 25 k: integer; cena: real; stoim: real; end; pribil: real; end; var spisoc: array[1..20] of sklad; spisoc[3].prod_tovar.cena:=13.5; Работа в группе. Решение задач. Задача для первой группы (листинг) program zadacha_3; uses crt; type s=record f: string [20]; {фамилия студента} e1,e2, e3:integer; {оценки за экзамены} b: integer; {общий балл за все экзамены} sum: real; {суммa начисленной стипендии} nal: real; {подоходный налог} it: real; {итоговая сумма стипендии} end; var x:array [1..30] of s; i,k,m,n,y: integer; z: s; begin clrscr; write ('Введите кол-во студентов '); readln (n); For i:=1 to n do with x[i] do begin write ('Введите фамилию ',i,' студента '); readln (f); write ('введите его три оценки '); readln (e1,e2,e3); end; for i:=1 to n do 26 with x[i] do begin b:=e1+e2+e3; If (e1=2) or (e2=2) or (e3=2) then sum:=0 else if b=15 then sum:=75 else if b>12 then sum:=62.5 else if b>9 then sum:=50 else sum:=0; nal:= sum*0.01; it:=sum-nal; end; for k:=1 to n-1 do begin y:=x[k].b; m:=k; for i:=k+1 to n do if y < x[i].b then begin y:=x[i].b; m:=i; end; z:= x[k]; x[k]:=x[m]; x[m]:=z; end; writeln; writeln (' СТИПЕНДИАЛЬНАЯ ВЕДОМОСТЬ'); for i:=1 to 64 do write ('-'); writeln; writeln ('|№|фамилия|эк1|эк2|эк3|балл|сумма|налог|итог|'); for i:=1 to 64 do write ('-'); writeln; for i:=1 to n do with x[i] do begin writeln (i:3,f:10,e1:6,e2:6,e3:6,b:6,sum:9:2,nal:8:2,it:7:2); readln; end; end. Задача для второй группы (листинг) program zadacha_2 uses crt; 27 type s=record nom: integer; {номер поезда} naz: string [20]; {назначение} clockp: integer; {час прибытия} minp: integer; {минуты прибытия} clocko: integer; { час отправления } mino: integer; { минуты отправления } end; var a: array [1..10] of s; i,j, k, timeclok, timemin: integer; z: s; begin clrscr; for i:=1 to 10 do with a[i] do begin write ('Введите номер ',i,'-го поезда '); readln (nom); write ('Введите его назначение (пример: Нерюнгри - Кисловодск) '); readln (naz); write ('Время прибытия на станцию (пример: 20 00) '); readln (clockp, minp); write ('Время отправления со станции (пример: 20 42) '); readln (clocko,mino); end; for i:=1 to 9 do for j:= i+1 to 10 do with a[i] do begin if a[i].nom>a[j].nom then begin z:=a[i]; a[i]:=a[j]; a[j]:=z ; end; end; writeln ('Введите время (часы и минуты)'); readln (timeclok,timemin); writeln ('|№|Назначение| Время прибытия | Время отправления |'); writeln; for i:=1 to 10 do with a[i] do 28 begin writeln (nom:3,naz:27,clockp:6,'ч',minp:6,'мин',clocko:8,'ч',mino:6,'мин'); readln; end; writeln; for i:=1 to 10 do with a[i] do begin if (a[i].clockp > timeclok) and (a[i].minp > timemin) and (a[i].clocko < timeclok) and (a[i].mino < timemin) then begin writeln ('В ',timeclok,'ч. ',timemin,'мин. на стоянке стоит поезд №',nom, ' назначением ',naz); k:=k+1; end; end; if k=0 then begin writeln ('В ',timeclok,'ч. ',timemin,'мин. на стоянке не стоит поездов'); end; readln; end. Задача для третей группы (листинг) program zadacha_3 uses crt; type t=record f:string[10]; {фамилия} im:string[10]; {имя} ot:string[10]; {отчество} adress:string[10];{адрес} nom:integer; m:string[20]; {номер телефона} {предмет взятый на прокат} end; Var a:array [1..100] of t; {массив} i:integer; 29 n:integer; {количество клиентов} p:integer; {количество взятых на прокат холодильников} y:integer; {утюги, имеющиеся в прокате} s:integer; {сумма взятых на прокат утюгов} x:integer; {количество оставшихся в прокате утюгов} begin clrscr; write('Введите количество клиентов - '); readln(n); for i:=1 to n do with a[i] do begin write('Введите фамилию клиента - '); readln(f); write('Введите имя клиента - '); readln(im); write('Введите отчество клиента - '); readln(ot); write('Введите адрес клиента - '); readln(adress); write('Введите номер телефона клиента - '); readln(nom); write('Введите предмет, взятый на прокат - '); readln(m); end; s:=0; x:=0; for i:=1 to n do with a[i] do begin writeln('{|Фамилия|Имя |Отчество|Адрес|Номер телефона|Предмет |'); for i:=1 to n do with a[i] do begin writeln(f:5,im:15,ot:7,adress:8,nom:3,m:5); end; end; for i:=1 to n do with a[i] do begin if a[i].m='телевизор' then begin writeln(a[i].f); 30 end; end; write('Введите количество утюгов - '); readln(y); for i:=1 to n do with a[i] do begin if a[i].m='утюг' then begin s:=s+1; p:=y-s; end; end; writeln('p=',p); for i:=1 to n do with a[i] do begin if a[i].m='холодильник' then begin x:=x+1; end; end; writeln('x=',x); readln; end. Оценочный лист «Оцени свою деятельность на уроке» Сегодня ты должен сам оценить свою деятельность на уроке. Вспомни каждый этап урока. Как ты работал на каждом этапе? Заполни оценочный лист. Название задания Оценка Пояснение к оценке (в баллах) (почему я поставил именно такую оценку) Разминка. Тест. Разминка. Конструирование таблицы. Работа в группе Научное собрание ИТОГ Оценочный лист «Оцени деятельность коллег по группе на уроке» Сегодня ты должен оценить сам оценить деятельность своих коллег по группе на уроке. Вспомни каждый этап урока. Как работал каждый ученик твоей группы, на каждом этапе? Заполни оценочный лист. 31 ИТОГОВАЯ ОЦЕНКА Научное собрание Работа в группе Разминка. Найти ошибки в программах Группы Разминка. Работа с фрагментами программ. Список Разминка. Кроссворд. Задания Пояснение к оценке (почему я поставил именно такую оценку) ЗАНЯТИЕ 3. Тема урока: Массивы. Тип урока: урок контроля знаний и умений учащихся Форма проведения: зачетный класс. Продолжительность урока: 45 минут Цели урока: проконтролировать знания, умения и навыки учащихся по теме: «Массивы»; стимулирование интереса учащихся к программированию; воспитание у учащихся самостоятельности; развитие: алгоритмического мышления; умения применять полученные знания при решении задач; развитие коммуникативных навыков: умение представлять свою работу, отстаивать свою точку зрения (решение). План урока: 1. Организационный момент – 1 минуты. 2. Работа с тестом – 5 минут. 3. Защита практикума – 35 минут. 4. Решение контрольной задачи (параллельно с защитой практикума) – 35 минут. 5. Подведение итогов. Рефлексия – 2 минут. 6. Домашнее задание – 1 минута. Ход урока I. Организационный момент Сегодня мы завершаем изучение темы «Массивы». Контрольный урок мы проведем, как всегда, в виде зачетного класса. Первое задание для всех – выполнение теста. Далее 32 начинаете работать над контрольной задачей, а я буду принимать защиту вашего практикума (по списку). Желаю всем успехов! Тест II. Учащиеся отвечают на вопросы теста, подготовленном в тестовой оболочке «Познание» (ЦИНО Общества «Знание», 1999). За каждый правильный ответ начисляется 10 баллов. Из предложенных вопросов, в тес берется (случайным образом) 10 вопросов. Тест 1. Что представляет собой массив в Pascal'е? a. Структурированный тип данных, представляющий последовательность взаимосвязанных по какому либо признаку объектов. b. Структурированный тип данных, состоящий из фиксированного числа элементов, отличающихся типом. c. Структурированный тип данных, представляющий набор взаимосвязанных по какому либо признаку или группе признаков объектов, которые можно рассматривать как единое целое. d. Структурированный тип данных, состоящий из фиксированного числа элементов, имеющих один и тот же тип. 2. В чем заключается метод "пузырьковой сортировки"? a. Начиная с последнего, сравниваются соседние элементы массива, и они переставляются, если последующий элемент меньше предыдущего. b. Начиная с первого, сравниваются соседние элементы массива, и они переставляются, если последующий элемент меньше предыдущего. c. Начиная с последнего, сравниваются соседние элементы массива, и они переставляются, если предыдущий элемент меньше последующего. d. Нет правильного ответа 3. Какого типа не может быть индекс массива? a. integer c. real b. byte d. word 4. По способу организации и типу компонентов массивы относятся к одному из следующих типов данных: a. Комбинированному d. Строковому b. Файловому e. Регулярному c. Множественному 5. Одномерный массив можно назвать... a. многомерной таблицей b. вектором 33 c. квадратной матрицей d. двумерной матрицей 6. В каком из предложенных описаний нет ошибок? a. c: array[1..a+b] of real; d. b: array[10..1] of integer; b. d: array[1.0..100.0] of integer; e. a: array[] of real; c. f: array[1..100] of integer; 7. Каким способом осуществляется ввод элементов массива write('Введите количество элементов в массиве'); readln(n); for i:=1 to n do begin writeln('a[',i,']='); readln (a[i]); end; a. с помощью датчика случайных чисел b. с клавиатуры c. присвоением заданных значений 8. Каким способом осуществляется ввод элементов массива randomize; writeln('Введите количество элементов массива'); readln(n); for i:=1 to n do begin a[i]:=random(50); writeln('a(',i,')=',a[i]); end; a. с помощью датчика случайных чисел b. с клавиатуры c. присвоением заданных значений 9. Каким способом осуществляется ввод элементов массива writeln('Введите количество элементов массива'); readln(n); for i:=1 to n do begin a[i]:=i*i/i+2; writeln('a(',i,')=',a[i]); end; a. с помощью датчика случайных чисел b. с клавиатуры c. присвоением заданных значений 10. Какие действия нельзя производить с одномерными массивами? a. находить сумму всех элементов массива b. находить минимальный элемент c. находить максимальный элемент главной диагонали d. находить среднее арифметическое элементов, удовлетворяющих некоторому условию 34 11. Как можно описать следующий массив? 3,14 0,2 -9,1 2,17 1,7 -0,25 -2,5 77 0 a. a: array[1..3,1..3] of real; c. a: array[1..3,1..] of integer; b. a: array[1..50,1..50] of real; d. a: array[1..3,1..3] of byte; 12. В какой ячейке находится элемент D[2,6]? a. Во втором столбце и шестой строке c. В строке с номером 2,6 b. Во второй строке и шестом столбце d. В столбце с номером 2,6 Каким образом выведется массив на экран монитора? 13. for i:=1 to n do begin for j:=1 to m do write (a[i, j]:3); writeln; end; a. По столбцам b.По строкам c. По строкам и столбца d.Ничего не выведется 14. Сколько элементов находится в массиве Х(4;7)? a. 4 b. 7 c. 11 d. 28 e. пустой массив 15. Двумерный массив размером n*m можно назвать... a. линейной таблицей b. вектором c. матрицей d. квадратной матрицей 35 16. Назовите элементы квадратной матрицы, которые заданы следующим фрагментом программы: if i=j then <инструкции> a. элементы расположены на главной диагонали b. элементы расположены выше главной диагонали c. элементы расположены на побочной диагонали d. элементы расположены на главной диагонали и выше ее e. элементы расположены ниже главной диагонали f. элементы расположены на главной диагонали и ниже ее g. элементы расположены выше побочной диагонали h. элементы расположены ниже побочной диагонали 17. Назовите элементы квадратной матрицы, которые заданы следующим фрагментом программы: if i+j=n+1 then <инструкции> a. элементы расположены на побочной диагонали b. элементы расположены на главной диагонали c. элементы расположены ниже главной диагонали d. элементы расположены на главной диагонали и ниже ее e. элементы расположены выше главной диагонали f. элементы расположены ниже побочной диагонали g. элементы расположены на главной диагонали и выше ее h. элементы расположены выше побочной диагонали 18. Назовите элементы квадратной матрицы, которые заданы следующим фрагментом программы: for i:=1 to n do for j:=1 to n do if i < j then <инструкции> a. элементы расположены на главной диагонали и выше ее b. элементы расположены ниже главной диагонали c. элементы расположены выше главной диагонали d. элементы расположены выше побочной диагонали e. элементы расположены на побочной диагонали f. элементы расположены на главной диагонали g. элементы расположены на главной диагонали и ниже ее h. элементы расположены ниже побочной диагонали 19. Назовите элементы квадратной матрицы, которые заданы следующим фрагментом программы: 36 for i:=1 to n do for j:=1 to n do if i>j then <инструкции> a. элементы расположены на побочной диагонали b. элементы расположены на главной диагонали и ниже ее c. элементы расположены выше главной диагонали d. элементы расположены ниже побочной диагонали e. элементы расположены выше побочной диагонали f. элементы расположены на главной диагонали g. элементы расположены ниже главной диагонали h. элементы расположены на главной диагонали и выше ее 20. Назовите элементы квадратной матрицы, которые заданы следующим фрагментом программы: for i:=1 to n do for j:=1 to n do if i>=j then <инструкции> a. элементы расположены на главной диагонали b. элементы расположены на главной диагонали и выше ее c. элементы расположены на главной диагонали и ниже ее d. элементы расположены выше главной диагонали e. элементы расположены ниже побочной диагонали f. элементы расположены на побочной диагонали g. элементы расположены ниже главной диагонали h. элементы расположены выше побочной диагонали 21. Назовите элементы квадратной матрицы, которые заданы следующим фрагментом программы: for i:=1 to n do for j:=1 to n do if i<=j then <инструкции> a. элементы расположены ниже главной диагонали b. элементы расположены на побочной диагонали c. элементы расположены ниже побочной диагонали d. элементы расположены выше главной диагонали e. элементы расположены выше побочной диагонали f. элементы расположены на главной диагонали и выше ее 37 g. элементы расположены на главной диагонали и ниже ее h. элементы расположены на главной диагонали 22. Назовите элементы квадратной матрицы, которые заданы следующим фрагментом программы: for i:=1 to n-1 do for j:=1 to n-1 do if i+j<=n then <инструкции> a. элементы расположены на главной диагонали и ниже ее b. элементы расположены на главной диагонали c. элементы расположены выше побочной диагонали d. элементы расположены на главной диагонали и выше ее e. элементы расположены ниже главной диагонали f. элементы расположены на побочной диагонали g. элементы расположены ниже побочной диагонали h. элементы расположены выше главной диагонали 23. Назовите элементы квадратной матрицы, которые заданы следующим фрагментом программы: for i:=2 to n do for j:=2 to n-1 do if i+j>n+1 then <инструкции> a. элементы расположены на главной диагонали и ниже ее b. элементы расположены на главной диагонали c. элементы расположены выше побочной диагонали d. элементы расположены на главной диагонали и выше ее e. элементы расположены ниже главной диагонали f. элементы расположены на побочной диагонали g. элементы расположены ниже побочной диагонали h. элементы расположены выше главной диагонали III. Решение контрольной задачи. Учащимся предлагается решить по одной контрольной задаче. Всего два варианта. Проверку задач учитель осуществляет не во время занятия. Задача для первого варианта. Поменять второй столбец матрицы с предпоследним. Задача для второго варианта. Дана действительная квадратная матрица. Вычислить сумму тех элементов, расположенных по главной диагонали и выше неё, которые 38 превосходят по величине все элементы, расположенные ниже главной диагонали. Если элементов с указанным свойством нет, то вывести соответствующее сообщение. Защита практикума Каждый учащийся представляет решение задач, которые им предлагалось решить в ходе практикума по темам: «Одномерные массивы» и «Двумерные массивы». План защиты: 1. Представление программы (возможен выбор задачи учителем, т.е. учитель сам предлагает представить одну из двух задач или обе задачи). 2. Тестирование программы. 3. Ответ на вопросы учителя. IV. Подведение итогов Учитель. Мы закончили изучение темы «Массивы», а так же изучение первого модуля курса. Результат зачетного класса по этой теме вы можете узнать через два часа. Сейчас вы должны готовиться к защите курсовой работы и сдаче экзамена. ПРИЛОЖЕНИЕ К МАТЕРИАЛАМ ЗАНЯТИЯ Разминка Задание 1. Ответы к тесту: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 d b c e b c b a c c a b c d c a a c g c f c g Решение контрольной задачи Вариант – 1. program zadacha_1; uses crt; var a, b: array [1..50,1..50] of integer; m,n,i,j: integer; begin clrscr; writeln('Количество строк'); readln(n); writeln('Количество столбцов'); readln(m); for i:= 1 to n do for j:= 1 to m do begin write ('a[',i,',',j,']='); readln (a[i,j]); end; writeln('Исходная матрица:'); for i:=1 to n do begin 39 for j:=1 to m do write (a[i,j]); writeln; end; for i:=1 to n do begin for j:=1 to m do b[i,j]:=a[i,j]; end; for i:=1 to n do begin a[i,2]:=b[i,m-1]; end; for i:=1 to n do begin a[i,m-1]:=b[i,2]; end; writeln('Полученная матрица:'); for i:=1 to n do begin for j:=1 to m do write (a[i,j]); writeln; end; readln; end. Вариант – 2 program zadacha_2; uses crt; var a: array[1..50,1..50] of real; i,j, n : integer; max, s: real; begin clrscr; writeln ('введите кол-во строк и столбцов'); readln (n); for i:=1 to n do for j:=1 to n do begin write('a[',i,',',j,']='); readln(a[i,j]); end; s:=0; max:=0; for i:=1 to n do for j:=1 to n do begin if i>j then begin if a[i,j]>max then begin max:=a[i,j]; end; 40 end; end; for i:=1 to n do for j:=1 to n do begin if (i<=j) then begin if a[i,j]>max then begin s:=s+a[i,j]; end; end; end; if s<>0 then begin write ('s=',s:5:2); end else begin writeln ('Элементов с указанным свойством нет'); end; readln; end. ЛИТЕРАТУРА, ИСПОЛЬЗУЕМАЯ ПРИ НАПИСАНИИ ПРОГРАММЫ И РЕКОМЕНДУЕМАЯ ДЛЯ ПОДГОТОВКИ К ЗАНЯТИЯМ 1. Методика преподавания информатики: Учеб. Пособие для студ. Пед. вузов / М.П. Лапчик, И.Г. Семакин. Е.К. Хеннер; Под общей ред. М.П. Лапчик. - М.:-Издательский центр «Академия», 2001. 2. Попов В.Б. Turbo Pascal для школьников: Учеб. Пособие.- 3-е доп. изд. - М.: Финансы и статистика, 2002. 3. Информатика. Задачник - практикум в 2т. / Под ред. И.Г. Семакина, Е.К. Хеннера: Том 1. – М.: Бином. Лаборатория Знаний, 2002. 4. Культин Н. Б. Turbo Pascal в задачах и примерах. – СПб.: БХВ-Петербург, 2002. 5. Рапаков Г.Г., Ржеуцкая С.Ю. Turbo Pascal для студентов и школьников. – СПб.: БХВПетербург, 2004. 41