Методика проведения семинарских занятий по дисциплине «Основы программирования»
Покупка
Тематика:
Программирование и алгоритмизация
Автор:
Иванова Галина Сергеевна
Год издания: 2019
Кол-во страниц: 100
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-7038-5131-9
Артикул: 803780.01.99
Издание содержит описание основных приемов процедурного и объектно-ориентированного программирования, изучение которых предусмотрено программой дисциплины «Основы программирования». Указаны цели каждого семинарского занятия, представлен основной теоретический материал, перечислены задачи, рекомендуемые для решения. Дан справочный материал, содержащий необходимые определения, выполнен подробный разбор алгоритмов с указанием практических приемов, приведен перечень вопросов, на которые должны ответить студенты по завершении занятия.
Для преподавателей кафедры «Компьютерные системы и сети» МГТУ им. Н. Э. Баумана, проводящих семинарские занятия по обучению основам программирования. Издание может быть полезно преподавателям информатики и основ программирования других кафедр университета, а также студентам, обучающимся основам программирования.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Г.С. Иванова Методика проведения семинарских занятий по дисциплине «Основы программирования» Учебное пособие Федеральное государственное бюджетное образовательное учреждение высшего образования «Московский государственный технический университет имени Н.Э. Баумана (национальный исследовательский университет)»
ISBN 978-5-7038-5131-9 © МГТУ им. Н.Э. Баумана, 2019 © Оформление. Издательство МГТУ им. Н.Э. Баумана, 2019 И21 УДК 372.862:004.021(075.8) ББК 32.973+74.4 И21 Издание доступно в электронном виде по адресу ebooks.bmstu.press/catalog/255/book2005.html Факультет «Информатика и системы управления» Кафедра «Компьютерные системы и сети» Рекомендовано Научно-методическим советом МГТУ им. Н.Э. Баумана в качестве учебного пособия Иванова, Г. С. Методика проведения семинарских занятий по дисциплине «Основы программирования» : учебное пособие. — Москва : Издательство МГТУ им. Н. Э. Баумана, 2019. — 98, [2] с. : ил. ISBN 978-5-7038-5131-9 Издание содержит описание основных приемов процедурного и объектноориентированного программирования, изучение которых предусмотрено программой дисциплины «Основы программирования». Указаны цели каждого семинарского занятия, представлен основной теоретический материал, перечислены задачи, рекомендуемые для решения. Дан справочный материал, содержащий необходимые определения, выполнен подробный разбор алгоритмов с указанием практических приемов, приведен перечень вопросов, на которые должны ответить студенты по завершении занятия. Для преподавателей кафедры «Компьютерные системы и сети» МГТУ им. Н.Э. Баумана, проводящих семинарские занятия по обучению основам программирования. Издание может быть полезно преподавателям информатики и основ программирования других кафедр университета, а также студентам, обучающимся основам программирования. УДК 372.862:004.021(075.8) ББК 32.973+74.4
Предисловие Учебное пособие предназначено в помощь преподавателям, ведущим семинарские занятия по дисциплине «Основы программирования», входящей в базовую часть учебного плана основной образовательной программы подготовки бакалавров высшего образования МГТУ им. Н.Э. Баумана, которые обучаются на кафедре «Компьютерные системы и сети» по направлениям подготовки 09.03.01 «Информатика и вычислительная техника» и 09.03.03 «Прикладная информатика». Цель изучения дисциплины студентами — освоение теоретических сведений и практических приемов, знание которых необходимо для разработки простейшего программного обеспечения с использованием структурного и объектного подходов на универсальных языках программирования. Планируемые результаты обучения студентов После изучения дисциплины студенты должны владеть: • базовыми знаниями в области разработки учебных программ с использованием структурной и объектной декомпозиции, а именно принципами и методами разработки схем алгоритмов, диаграмм объектов, классов и состояний интерфейсов; • основными средствами создания консольных программ и программ с графическими интерфейсами на языке программирования Object Pascal в средах программирования Delphi и Lazarus; • простейшими методиками тестирования и отладки программ; • практическими навыками работы в среде визуального программиро- вания. Изучение дисциплины базируется на знаниях и умениях, которые были получены обучаемыми в средней школе при изучении дисциплин, связанных с информатикой и вычислительной техникой. Методические указания по освоению материала дисциплины студентами Материал дисциплины «Основы программирования» разделен на три части: • модуль 1 «Основы алгоритмизации и программирование с использованием скалярных типов данных» посвящен изучению основных приемов и средств разработки и документирования простейших программ — 3 занятия; • модуль 2 «Структурные типы данных и модульное программирование» предполагает изучение основных средств организации программ и данных при структурном подходе к программированию — 7 занятий; • модуль 3 «Организация данных на различных носителях и основы объектно-ориентированного программирования» включает рассмотрение более сложных способов организации и хранения данных, а также введение в принципы объектной декомпозиции программ, базирующиеся на декомпозиции данных, — 7 занятий.
Каждый модуль представляет собой логически завершенный раздел дисциплины. По каждому модулю проводятся семинарские занятия для закрепления теоретического материала, с которым студенты ознакомились на лекциях, и приобретения навыков его применения для решения практических задач. Учебное пособие по семинарским занятиям содержит перечень целей и задач каждого занятия, краткое изложение необходимого теоретического материала с указанием наиболее важных моментов или ссылки на этот материал в основном учебнике (Иванова Г.С. Программирование. М.: Кнорус, 2017), формулировки, способствующие усвоению и закреплению пройденного материала и приобретению навыков его применения, разбор решений этих задач, а также список вопросов, на которые преподавателю необходимо обратить особое внимание.
Введение Программирование — важнейшая часть профессиональной деятельности специалиста в области информатики и вычислительной техники. Без знания основ программирования невозможно работать в указанной области. Обучение основам программирования — многоаспектная задача, при решении которой невозможно отделить разработку последовательности выполняемых для решения задачи операций от изучения средств, предоставленных в распоряжение программиста тем или иным языком программирования и имеющимися библиотеками. Язык программирования и среда разработки непосредственно определяют набор проектных операций, в которых записываются разрабатываемые алгоритмы, а реализованные в языке подходы диктуют набор технологий, которые может использовать программист. Таким образом, при разработке программы программисту одновременно приходится мыслить на макро- и микроуровнях: на макроуровне — определять последовательность выполняемых действий, а на микроуровне — оценивать и выбирать используемые технологии, механизмы и средства реализации этих действий. Из существующих языков программирования более всего подходит для обучения программированию язык Паскаль. Этот язык, специально созданный для обучения разработке компиляторов, имеет сравнительно простой и логически обусловленный синтаксис. Это позволяет за счет использования жесткой логической модели языка частично отделить обучение алгоритмизации от обучения процессу написания программ на конкретном языке, что невозможно, например, при обучении на языках С++, C#, Java и др. Разработка простейшей программы предполагает выполнение следующих основных этапов: 1) анализ условия задачи и уточнение требований (функциональных, эксплуатационных, технологических и т. д.) к программе; 2) проектирование — разработка схем и диаграмм, описывающих основные решения, которые будут реализованы в программе; 3) реализация — собственно составление программы, ее отладка и тестирование; 4) модификация — адаптация программы к изменившимся условиям эксплуатации или к увеличению набора выполняемых программой функций. В процессе обучения выполнение каждого этапа имеет свои особенности. Так, анализ и уточнение требований сводится к уточнению условия задачи и приспособлению ее решения к изучаемой технологии и средствам. На первый план выходит проектирование решения, поскольку именно от разработанного проекта зависит, насколько правильно и эффективно с точки зрения используемого на конкретном этапе обучения набора средств будет решена задача. Реализация же с учетом ограниченности применяемых средств становится практически однозначной. А модификация выливается в изучение и использование наиболее технологичных решений, что в последующем позволит упростить адаптацию программы к конкретным условиям.
Согласно обычной практике обучения, на лекциях по дисциплине «Основы программирования», читаемых на кафедре «Компьютерные сети и системы», студенты ознакомляются с теоретическими положениями дисциплины: основными понятиями, механизмами, технологиями, приемами и средствами. Материал сопровождается необходимыми примерами, а используемые мультимедийные средства позволяют не только демонстрировать определения, рисунки, схемы, тексты программ, но и запускать программы на выполнение, а также показывать особенности отладки и тестирования разрабатываемого программного обеспечения. Главная цель семинарских занятий — обучение студентов основам алгоритмизации, принципам структурной и объектной декомпозиции, т. е. разработке проектов программ. В зависимости от используемой технологии проект программы включает схемы алгоритмов, структурные схемы, диаграммы объектов, классов, состояний и т. п. Именно обучение составлению проектов программ является наиболее сложным, поскольку решение любой задачи в программировании уникально. Можно выделить некоторые приемы, которые применяются при решении разных задач, например суммирование методом накопления, перебор элементов массива, поиск максимального элемента в массиве, разные варианты сортировки элементов массива и т. п. Но таких приемов сравнительно немного, а конкретное их применение может иметь существенные особенности. Каждая учебная задача решается заново, никаких рецептов практически не существует. Сама задача может быть такова, что для ее решения никакие обычные приемы не подходят. Таким образом, в процессе обучения алгоритмизации надо научить студента думать, строить мысленные модели структур и процессов, искать варианты решения, анализировать эти варианты не только с точки зрения возможности получения решения, но и с точки зрения эффективности того или иного алгоритма. Очень важно предлагать и рассматривать разные варианты решения, расширяя этим кругозор обучаемого, набор используемых приемов. Например, поиск наибольшего общего делителя двух целых чисел, с точки зрения вчерашнего школьника, предполагает поиск всех делителей этих чисел, а потом поиск одинаковых среди них. В то же время существует алгоритм Евклида, который позволяет решить эту задачу значительно проще и за меньшее время. Иногда даже просто перебор элементов массива не в порядке увеличения индексов, как обычно, а в обратном порядке позволяет получить существенно более эффективное решение. Именно поэтому при решении задач во время семинарских занятий преподавателю рекомендуется обсуждать со студентами возможные варианты решения, подтверждая выбор конкретного варианта оценками сложности его реализации, точности получаемого результата и вычислительной сложности его получения. В дискуссию необходимо включать как можно большее количество студентов, максимально поощряя их активность положительными оценками за предлагаемые решения. Так, одно решение обеспечивает простую в написании и отладке реализацию, другое — позволяет попутно проверить вводимые
данные, третье — имеет минимальную вычислительную сложность и т. п. Чем проще с виду условие задачи, тем больше студентов можно привлечь к предложению вариантов если не самого решения, то его обрамления, поскольку задача является понятной всем. Практика показала, что огромное значение при обучении имеет интерес преподавателя к преподаваемой дисциплине. Студенты очень чутко воспринимают эмоциональные оттенки отношения преподавателя. Поэтому задачи должны быть чем-то интересны прежде всего самому преподавателю. В каждой задаче или в используемых приемах надо искать «изюминки», повышающие интерес обучаемых к предмету, формируя положительный настрой во время проведения семинарского занятия. Очень важно научить студентов учитывать особые случаи, возникающие при решении задач. Надо обращать внимание студентов на то, что программа должна правильно работать как на допустимых, так и на недопустимых данных, выдавая осмысленные сообщения об ошибках данных. К сожалению, времени для рассмотрения различных вариантов данных на семинарских занятиях обычно не хватает, но необходимо постоянно напоминать об этом при поиске правильного решения задачи. Особую проблему при проведении семинарских занятий по основам программирования традиционно создает существенная дифференциация студентов по уровням знания предмета. Хорошо подготовленные студенты для каждой задачи сразу предлагают эффективное решение, нарушая нормальный процесс коллективного обдумывания задачи. Придумать простые задачи, которые интересны и слабым, и сильным студентам, при слишком большой разнице в подготовке студентов не всегда удается. Хорошо подготовленным студентам можно предлагать интересные для них задачи повышенной сложности, решение которых они потом могут докладывать на последующих семинарских занятиях или просто показывать преподавателю в перерыве или на консультациях. После обсуждения и выбора варианта решения необходимо составить проект будущей программы. При этом по возможности следует дать время на обдумывание конкретного проекта каждым студентом или небольшими группами студентов. Однако один из вариантов обязательно должен быть показан на доске. Детальный проект при написании программы на языке Паскаль однозначно переводится в ее текст, а потому написание программ во время семинарских занятий в большинстве случаев не является необходимым. Программы целесообразно писать только при наличии существенных особенностей реализации проектов программ. Это позволит разбирать на занятиях больше задач и существенно увеличит эффективность занятий. Реализация программ с использованием изучаемых средств при такой технологии обучения отрабатывается во время выполнения 10 лабораторных работ и трех домашних заданий, включающих еще 10 задач. Этого вполне достаточно для усвоения материала при условии, что студенты выполняют свои задания самостоятельно.
Модуль 1. Основы алгоритмизации и программирование с использованием скалярных типов данных Модуль посвящен проработке базовых понятий программирования, таких как этапы разработки программы, анализ допустимости вводимых данных, разработка алгоритма решения задачи с использованием основных управляющих конструкций «Следование», «Ветвление» и «Цикл-пока». Основная задача, решаемая при прохождении семинарских занятий этого модуля, — изучение и практическое применение базовых приемов разработки алгоритмов для решения задач, не требующих представления данных в виде структур, а также правил изображения полученных схем алгоритмов решений этих задач. Часть задач, решаемых на семинарских занятиях этого модуля, — классические задачи вычислительной математики, например задача о нахождении суммы ряда, задача вычисления определенного интеграла, задача определения длины кривой и т. п. Ключевые слова: скалярные данные, схема алгоритма, управляющие конструкции, задачи вычислительной математики, точность вычислений. Планируемые результаты выполнения семинарских занятий модуля Студент должен знать: • основные управляющие конструкции; • обозначения и правила изображения схем алгоритмов; • понятие «точность вычислений»; • понятия «счетный цикл» и «итерационный цикл» и области их применения в алгоритмах. Студент должен уметь разработать и изобразить схему алгоритма решения классических задач приближенных вычислений с заданной точностью: задачи о нахождении суммы ряда, задачи вычисления определенного интеграла методами прямоугольников и трапеций, задачи определения длины кривой. Студент должен иметь навыки разработки и изображения схем алгоритмов, включающих конструкции «Следование», «Ветвление» и «Цикл-пока».
Занятие 1. Схемы алгоритмов программ Цели занятия: •• изучение•и•применение•на•практике•правил•построения•схем•алгоритмов•программ•линейной,•разветвленной•и•циклической•структуры•из•блоков• «Следование»,•«Ветвление»•и•«Цикл-пока»; •• изучение•и•применение•на•практике•приемов•защиты•программы•от• ввода•неправильных•данных. План занятия 1. Краткое•повторение•условных•обозначений•схем•алгоритмов•и•правил• построения•основных•структурных•алгоритмических•конструкций•«Следование»,•«Ветвление»,•«Цикл-пока»•(Иванова Г.С.•Программирование:•учебник• для•вузов.•М.:•Кнорус,•2017,•с.•14–16)•—•20•мин.• 2.•Задача•1.•Определить•площадь•треугольника•по•трем•сторонам•—•20•мин. 3.•Задача•2.•Усложнить•задачу•1,•задав•требование•проверки•существования•треугольника,•—•25•мин.• 4.•Задача•3.•Рассмотреть,•как•построить•цикл•до•ввода•длин•сторон,•удовлетворяющих•условию•существования•треугольника,•—•25•мин. 5.•Задача•4•(дополнительная•для•сильных•групп,•подгрупп•или•отдельных• студентов).•Треугольник•и•точка•заданы•координатами•на•плоскости.•Определить,•находится•ли•точка•внутри•треугольника.•• Разбор решения задачи 1 Для•вычисления•площади•треугольника•по• трем•сторонам•используется•формула•Герона:• s p p a p b p c = − ( ) − ( ) − ( ),где• p a b c = + + 2 , a,•b,•c — длины•сторон•треуголь ника. Таким•образом,•если•не•учитывать•проверку• условий•существования•треугольника•с•заданными•сторонами•и•не•контролировать•ввод•данных,• получаем•линейный•алгоритм•(рис.•1.1). Разбор решения задачи 2 Условия•существования•треугольника,•заданного•тремя•длинами•сторон: а)•длины•сторон•треугольника•—•положительные•числа; б)•длина•каждой•стороны•меньше•суммы•длин•двух•других. Рис. 1.1.•Схема•алгоритма•определения•площади•треугольника• без•проверок•исходных•данных
Всего получается шесть условий, которые можно проверять по одному, а можно сгруппировать в несколько логических выражений или записать в виде одного логического выражения. Пояснить, что если проверять все условия в одном операторе, то не удастся вывести конкретные сообщения, а если проверять каждое условие отдельно, то программа будет слишком длинной. Целесообразно использовать промежуточный вариант алгоритма (рис. 1.2). Указания. При разборе решения задачи следует: 1) обратить внимание студентов на вложение конструкций «Ветвление», уточнив, что в целом схема алгоритма построена как суперпозиция конструкций «Следование» и «Ветвление»; 2) напомнить правила сравнения вещественных чисел, которые в памяти ЭВМ представляются неточно. Текст программы (для справки): Program Project1_1; {$APPTYPE CONSOLE} uses SysUtils; var A,B,C,P,S:single; begin writeLn(‘Input A,B,C:’); readln(A,B,C); if (A<=0)or(B<=0)or(C<=0) then writeln(‘A,B,C >0.’) else if (A+B<=C)or(A+C<=B)or(B+C<=A) then writeln(‘Not treug’) else Рис. 1.2. Схема алгоритма определения треугольника с проверкой существования