РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ ·...

54
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ Филиал федерального государственного бюджетного образовательного учреждения высшего образования «Мурманский арктический государственный университет» в г. Апатиты РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 Программирование (шифр дисциплины и название в строгом соответствии с федеральным государственным образовательным стандартом и учебным планом) образовательной программы по направлению подготовки бакалавриата 09.03.02 «Информационные системы и технологии» профиль Общий (код и наименование направления подготовки с указанием профиля (наименования магистерской программы)) очная форма обучения форма обучения Составитель: Федоров А.М., канд.техн.наук., доцент Утверждено на заседании кафедры информатики, вычислительной техники и информационной безопасности (протокол № 1 от 26 января 2017г. ) Зав. кафедрой _____________ Королева Н.Ю.

Upload: others

Post on 23-Jun-2020

20 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ Филиал федерального государственного бюджетного образовательного учреждения высшего образования «Мурманский арктический государственный университет»

в г. Апатиты

РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ)

Б1.Б.20 Программирование (шифр дисциплины и название в строгом соответствии

с федеральным государственным образовательным стандартом и учебным планом)

образовательной программы

по направлению подготовки бакалавриата

09.03.02 «Информационные системы и технологии» профиль Общий

(код и наименование направления подготовки с указанием профиля (наименования магистерской программы))

очная форма обучения

форма обучения

Составитель: Федоров А.М., канд.техн.наук., доцент

Утверждено на заседании кафедры информатики, вычислительной техники и информационной безопасности (протокол № 1 от 26 января 2017г.) Зав. кафедрой _____________ Королева Н.Ю.

Page 2: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

1. НАИМЕНОВАНИЕ ДИСЦИПЛИНЫ (МОДУЛЯ)

Б1.Б.20 Программирование

2. АННОТАЦИЯ К ДИСЦИПЛИНЕ

Целями освоения дисциплины (модуля) являются: введение в проблематику, связанную с изучением языков программирования

высокого уровня, методов разработки алгоритмов и программ и особенности реализации языков программирования. Курс поддержан соответствующим компьютерным практикумом Задачи учебной дисциплины:

освоение методов описания синтаксических конструкций языков программирования, знание классификации и эволюции языков программирования;

освоение основных концепций языков программирования (выражения, типы данных, операторы, подпрограммы и др.) на примере языка С/C++ и формирование способности к изучению других алгоритмических и процедурных языков программирования высокого уровня;

освоение основных концепций объектно-ориентированного программирования; изучение жизненного цикла программного обеспечения и понимание работ,

выполняемых на каждом из его этапов; рассмотрение структуры транслятора и понимание стадий трансляции программы.

Требования к «входным» знаниям, умениям и готовностям обучающегося, необходимым при освоении данной дисциплины и приобретенным в результате освоения предшествующих дисциплин (модулей): базовый курс дисциплины "Информатика", представление об алгоритмизации, типах данных, устройстве памяти ЭВМ, типовых алгоритмах, представление о средах и языках программирования. Рекомендуемый начальный уровень обучаемого до изучения дисциплины: узнавать: язык и среду программирования, уметь составлять алгоритмы и конструировать блок-схемы, иметь представление о языках программирования высокого уровня.

Результат освоения данной учебной дисциплины: знания (понимание) основ структурного, модульного, и объектно-ориентированного программирования; умение записывать код алгоритма (программы) на языке С/С++ в рамках перечисленных парадигм. Умение создавать и использовать функции, обращаться к файлам, библиотекам функций, программным модулям, работать с современными средами программирования; знание, понимание и практические навыки работы с абстрактными типами и структурами данных. Уровень обучаемого после изучения дисциплины: знания: способы описания языка программирования синтаксис, семантика. технология создания программ, парадигмы программирования, трансляция программ; умения: составление программ на С/С++, использующих функции; динамическая память, алгоритмы работы с абстрактными структурами данных (списки), алгоритмы работы с файлами, составление ОО- программ на С/С++.

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

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

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

Page 3: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

уметь: ставить задачу и разрабатывать алгоритм ее решения, использовать прикладные

системы программирования; работать с современными системами программирования, включая объектно-

ориентированные; уметь использовать языки системы программирования для решения

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

владеть: методами и инструментальными средствами разработки программ; языками процедурного и объектно-ориентированного программирования, навыками

разработки и отладки программ не менее, чем на одном из алгоритмических процедурных языков программирования высокого уровня;

методами построения математической модели профессиональных задач и содержательной интерпретации полученных результатов

В целом, в результате освоения дисциплины обучающийся должен демонстрировать

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

3. ПЕРЕЧЕНЬ ПЛАНИРУЕМЫХ РЕЗУЛЬТАТОВ ОБУЧЕНИЯ ПО ДИСЦИПЛИНЕ (МОДУЛЮ), СООТНЕСЕННЫХ С ПЛАНИРУЕМЫМИ РЕЗУЛЬТАТАМИ ОСВОЕНИЯ ОБРАЗОВАТЕЛЬНОЙ ПРОГРАММЫ

В результате освоения дисциплины формируются следующие компетенции: владением широкой общей подготовкой (базовыми знаниями) для решения

практических задач в области информационных систем и технологий (ОПК-1)

4. УКАЗАНИЕ МЕСТА ДИСЦИПЛИНЫ (МОДУЛЯ) В СТРУКТУРЕ ОБРАЗОВАТЕЛЬНОЙ ПРОГРАММЫ

Данная дисциплина относится к обязательным дисциплинам базовой части Блока Б1. Для освоения данной дисциплины обучающиеся используют знания, умения,

навыки, способы деятельности и установки, которые они получили в процессе изучения дисциплин: «Информатика», «Развитие информационного общества»,

В свою очередь, «Программирование» представляет собой методологическую базу для усвоения студентами содержания дисциплин: «Информационные технологии», «Инженерная и компьютерная графика», «Защита информации», «Моделирование электромеханических систем», «Операционные системы» а также для выполнения междисциплинарной курсовой работы.

Основная связующая логика данной дисциплины с дисциплинами из указанного списка базируется на укреплении и развитии у учащихся навыков анализа, конструирования и записи алгоритмов (программного кода) в терминах языков

Page 4: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

программирования высокого уровня (на примере С/С++) и предлагаемых ими различных парадигм программирования.

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

В рамках учебного курса данной дисциплины максимально полно изучаются алгоритмические, функциональные и объектно-ориентированные возможности языка С/С++, а также рассматриваются базовые вопросы программирования. Некоторые вопросы курса (верификация программ, построение рекурсивных алгоритмов, сортировки и т.п.) более подробно прорабатываются в рамках других дисциплин профессионального цикла. 5. ОБЪЕМ ДИСЦИПЛИНЫ (МОДУЛЯ) В ЗАЧЕТНЫХ ЕДИНИЦАХ С УКАЗАНИЕМ КОЛИЧЕСТВА АКАДЕМИЧЕСКИХ ИЛИ АСТРОНОМИЧЕСКИХ ЧАСОВ, ВЫДЕЛЕННЫХ НА КОНТАКТНУЮ РАБОТУ ОБУЧАЮЩИХСЯ С ПРЕПОДАВАТЕЛЕМ (ПО ВИДАМ УЧЕБНЫХ ЗАНЯТИЙ) И НА САМОСТОЯТЕЛЬНУЮ РАБОТУ ОБУЧАЮЩИХСЯ

Общая трудоемкость дисциплины составляет 6 зачетные единицы или 216 часов.

(из расчета 1 ЗЕТ= 36 часов).

Кур

с

Сем

естр

Тру

дое

мко

сть

в ЗЭ

Т

Об

щая

тр

удое

мко

сть

(час

) Контактная работа

Все

го к

онта

ктн

ых

часо

в

Из

ни

х в

ин

тера

кти

вны

х ф

орм

ах

Кол

-во

часо

в н

а С

РС

Форма

контроля

ЛК

ПР

ЛБ

2 3 3 108 32 - 32 64 12 44

(из них 36ч для подготовки к

экзамену)

экзамен

2 4 3 108 34 - 34 68 12 40

(из них 36ч для подготовки к

экзамену)

экзамен

Page 5: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

6. СОДЕРЖАНИЕ ДИСЦИПЛИНЫ, СТРУКТУРИРОВАННОЕ ПО ТЕМАМ (РАЗДЕЛАМ) С УКАЗАНИЕМ ОТВЕДЕННОГО НА НИХ КОЛИЧЕСТВА АКАДЕМИЧЕСКИХ ИЛИ АСТРОНОМИЧЕСКИХ ЧАСОВ И ВИДОВ УЧЕБНЫХ ЗАНЯТИЙ

1-й семестр № п/п

Наименование раздела, темы

Контактная работа

Все

го к

онта

ктн

ых

часо

в

Из

ни

х в

ин

тера

кти

вной

ф

орм

е К

ол-в

о ча

сов

на

СР

С

ЛК

ПР

ЛБ

1 Языки программирования 4 - 4 8 1 0,5

2 Неформальное введение в язык С++ 2 - 2 4 1 0,5

3 Система программирования 2 - 2 4 1 0,5

4 Лексемы языка C++ 2 - 2 4 1 0,5

5 Константы языка C++ 2 - 2 4 1 0,5

6 Типы языка C++ 4 - 4 8 1 0,5

7 Выражения языка C++ 2 - 2 4 1 0,5

8 Инструкции (операторы) языка C++ 4 - 4 8 1 0,5

9 Блочная структура программы на С++

2 - 2 4 1 1

10 Подпрограммы языка С++ . 2 - 2 4 1 1

11 Заголовочные файлы языка С++ 2 - 2 4 1 1

12 Использование файлов в программах на С++

4 - 4 8 1 1

Итого: 32 - 32 64 12 8 Экзамен 36

Page 6: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

2-й семестр № п/п

Наименование раздела, темы

Контактная работа

Все

го к

онта

ктн

ых

часо

в

Из

ни

х в

ин

тера

кти

вной

ф

орм

е К

ол-в

о ча

сов

на

СР

С

ЛК

ПР

ЛБ

1 Реализация структур данных на языке C++

8 - 8 16 2 1

2 Объектно-ориентированное программирование

6 - 6 12 2 0,4

3 Потоковые классы: 4 - 4 8 2 0,2

4 Обработка исключительных ситуаций:

6 - 6 12 2 0,4

5 Шаблоны функций и классов: 6 - 6 12 2 1

6 Объектно-ориентированный анализ 8 - 8 16 2 1

Итого: 34 - 34 68 12 4 Экзамен 36 Содержание тематических блоков курса: 1. Языки

программирования Алфавит, синтаксис, семантика языка программирования. Методы описания синтаксических конструкций языков программирования. Эволюция языков программирования. Классификация языков программирования. Парадигмы программирования. Постановка задачи и разработка алгоритма ее решения, использование прикладных систем программирования методами и инструментальными средствами разработки программ

2. Неформальное введение в язык С++

Историческая справка. Пример простейшей программы. Процедуры и функции. Операторы. Выражения. Лексемы. Типы, переменные, константы. Заголовочные файлы (#include<...>). Общий вид C-программы. Использование языков и систем программирования для решения профессиональных задач, работа с программными средствами общего назначения, разработка и отладка программ

3. Система программирования

Понятия системы программирования. Техника разработки программ. Классификация ошибок в программе. Отладка программы. Основные понятия отладчика. Обзор современных системам программирования, включая объектно-ориентированные. Языки процедурного и объектно-ориентированного программирования.

4. Лексемы языка C++ . Спецсимволы. Зарезервированные слова. Идентификаторы. Числа. Метки. Символьные строки. Комментарии. Строки программы

Page 7: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

5. Константы языка C++ Константные выражения. Типизированные константы. Объявление и использование констант.

6. Типы языка C++ Понятие типа данных. Классификация типов данных. Базовые типы. Структурные типы. С-Строки. Ссылки и указатели. Процедурные типы. Эквивалентность и совместимость типов. Типы из стандартной библиотеки (string, AnsiString, ...

7. Выражения языка C++ Операнды и операции. Приоритеты операций. Арифметические операции. Булевские операции. Логические операции. Операции над строками. Операции над множествами. Операции отношения.

8. Инструкции (операторы) языка C++

Классификация операторов. Простые операторы. Особенность оператора GOTO. Структурные операторы.

9. Блочная структура программы на С++

Понятие блока. Область действия объявления (декларации). Правила видимости. Локальные и глобальные переменные. Распределение памяти.

10. Подпрограммы языка С++

Понятие подпрограммы. Процедуры и функции. Описание подпрограмм. Способы передачи параметров в подпрограмму и возвращение результата. Процедурные типы.

11. Заголовочные файлы языка С++

Разработка собственных модулей Принципы инкапсуляции и раздельной трансляции кода. Структура модуля: интерфейс, реализация. Использование модулей. Стандартные библиотеки С++. Использование языков и системы программирования для решения профессиональных задач, работа с программными средствами общего назначения, языками процедурного и объектно-ориентированного программирования

12. Использование файлов в программах на С++

Классификация файлов. Основные операции с файлами. Библиотеки функций для доступа к файлам (fstream, stdio). Примеры.

13. Реализация структур данных на языке C++

Понятие структуры данных. Классификация структур данных. Списки: стек, односвязный список, двусвязный список. Реализация на основе массива и ссылочных типов. Бинарные деревья и операции над ними. Реализация на основе массива и ссылочных типов. Рекурсивные функции.

14. Объектно-ориентированное программирование

Основные понятия и принципы ООП. Классы. Инкапсуляция: скрытые поля и методы. Наследование: перекрытие методов. Полиморфизм: виртуальные методы. Конструкторы и деструкторы. Динамические объекты.

15. Потоковые классы: понятие потока и операций работы с ним. Стандартные потоки. Форматирование данных. методы обмена с потоками. Ошибки потоков. Файловые потоки. виды потоковых устройств. Потоки и типы, определенные пользователем.

16. Обработка исключительных ситуаций:

понятие и использование исключительной ситуации. общий механизм и синтаксис обработки исключений.

17. Шаблоны функций и классов:

параметризация алгоритмов и типов данных. Применение шаблонов к типам, определяемым пользователем.

18. Объектно-ориентированный анализ

История появления, сфера применения, преимущества и недостатки, классические примеры

Page 8: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

7. ПЕРЕЧЕНЬ УЧЕБНО-МЕТОДИЧЕСКОГО ОБЕСПЕЧЕНИЯ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ ОБУЧАЮЩИХСЯ ПО ДИСЦИПЛИНЕ (МОДУЛЮ)

1. Страуструп Б. Язык программирования С++ для профессионалов, М..: «Издательство Интернет – Университет Информационных технологий, 2007г. – 568.

2. Павловская Т.А. С/С++. Программирование на языке высокого уровня. – СПб: Лидер, 2010 -461.

8. ФОНД ОЦЕНОЧНЫХ СРЕДСТВ ДЛЯ ПРОВЕДЕНИЯ ПРОМЕЖУТОЧНОЙ АТТЕСТАЦИИ ОБУЧАЮЩИХСЯ ПО ДИСЦИПЛИНЕ (МОДУЛЮ)

1. Кафедра Информатики, вычислительной техники и информационной безопасности

2. Направление подготовки 09.03.02.Информационные системы и технологии, профиль Общий

3. Дисциплина (модуль) Б1.Б.20 Программирование

Перечень компетенций владением широкой общей подготовкой (базовыми знаниями) для решения

практических задач в области информационных систем и технологий (ОПК-1)

Page 9: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

Критерии и показатели оценивания компетенций на различных этапах их формирования

Этап формирования компетенции (разделы, темы дисциплины)

Формируемая компетенция

Критерии и показатели оценивания компетенций Формы контроля сформированности

компетенций Знать:

Уметь:

Владеть:

Языки программирования ОПК-1 Алфавит, синтаксис, семантика

языка программирования. Методы описания синтаксических конструкций языков программирования. Эволюция языков программирования. Классификация языков программирования. Парадигмы программирования.

ставить задачу и разрабатывать алгоритм ее решения, использовать прикладные системы программирования

методами и инструментальными средствами разработки программ

решение задач (в виде программы), экспресс-опрос (тест)

Неформальное введение в язык С++ ОПК-1 Историческая справка. Пример простейшей программы. Процедуры и функции. Операторы. Выражения. Лексемы. Типы, переменные, константы. Заголовочные файлы (#include<...>). Общий вид C-программы.

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

навыками разработки и отладки программ

решение задач (в виде программы), экспресс-опрос (тест)

Система программирования ОПК-1 Понятия системы программирования. Техника разработки программ. Классификация ошибок в программе. Отладка программы. Основные понятия отладчика.

работать с современными системами программирования, включая объектно-ориентированные

языками процедурного и объектно-ориентированного программирования

решение задач (в виде программы), экспресс-опрос (тест)

Лексемы языка C++ . ОПК-1 Спецсимволы. Зарезервированные слова. Идентификаторы. Числа. Метки. Символьные строки. Комментарии. Строки программы

решать задачи по основным разделам курса

методами построения математической модели профессиональных задач и содержательной интерпретации полученных результатов

решение задач (в виде программы), экспресс-опрос (тест)

Page 10: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

Этап формирования компетенции (разделы, темы дисциплины)

Формируемая компетенция

Критерии и показатели оценивания компетенций Формы контроля сформированности

компетенций Знать:

Уметь:

Владеть:

Константы языка C++ ОПК-1 Константные выражения.

Типизированные константы. Объявление и использование констант.

решать задачи по основным разделам курса

методами построения математической модели

решение задач (в виде программы), экспресс-опрос (тест)

Типы языка C++ ОПК-1 Понятие типа данных. Классификация типов данных. Базовые типы. Структурные типы. С-Строки. Ссылки и указатели. Процедурные типы. Эквивалентность и совместимость типов. Типы из стандартной библиотеки (string, AnsiString, ...)

решать задачи по основным разделам курса

методами построения математической модели

решение задач (в виде программы), экспресс-опрос (тест)

Выражения языка C++ ОПК-1 Операнды и операции. Приоритеты операций. Арифметические операции. Булевские операции. Логические операции. Операции над строками. Операции над множествами. Операции отношения.

решать задачи по основным разделам курса

навыками разработки и отладки программ не менее, чем на одном из алгоритмических процедурных языков программирования высокого уровня

решение задач (в виде программы), экспресс-опрос (тест)

Инструкции (операторы) языка C++ ОПК-1 Классификация операторов. Простые операторы. Особенность оператора GOTO. Структурные операторы.

решать задачи по основным разделам курса

навыками разработки и отладки программ

решение задач (в виде программы), экспресс-опрос (тест)

Блочная структура программы на С++

ОПК-1 Понятие блока. Область действия объявления (декларации). Правила видимости. Локальные и глобальные переменные. Распределение памяти.

решать задачи по основным разделам курса

навыками разработки и отладки программ

решение задач (в виде программы), экспресс-опрос (тест)

Подпрограммы языка С++ ОПК-1 Понятие подпрограммы. Процедуры и функции. Описание подпрограмм. Способы передачи параметров в подпрограмму и возвращение результата. Процедурные типы.

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

навыками разработки и отладки программ

решение задач (в виде программы), экспресс-опрос (тест)

Page 11: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

Этап формирования компетенции (разделы, темы дисциплины)

Формируемая компетенция

Критерии и показатели оценивания компетенций Формы контроля сформированности

компетенций Знать:

Уметь:

Владеть:

Заголовочные файлы языка С++ ОПК-1 Разработка собственных модулей

Принципы инкапсуляции и раздельной трансляции кода. Структура модуля: интерфейс, реализация. Использование модулей. Стандартные библиотеки С++.

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

языками процедурного и объектно-ориентированного программирования

решение задач (в виде программы), экспресс-опрос (тест)

Использование файлов в программах на С++

ОПК-1 Классификация файлов. Основные операции с файлами. Библиотеки функций для доступа к файлам (fstream, stdio). Примеры.

решать задачи по основным разделам курса

языками процедурного и объектно-ориентированного программирования

решение задач (в виде программы), экспресс-опрос (тест)

Реализация структур данных на языке C++

ОПК-1 Понятие структуры данных. Классификация структур данных. Списки: стек, односвязный список, двусвязный список. Реализация на основе массива и ссылочных типов. Бинарные деревья и операции над ними. Реализация на основе массива и ссылочных типов. Рекурсивные функции.

решать задачи по основным разделам курса

языками процедурного и объектно-ориентированного программирования

решение задач (в виде программы), экспресс-опрос (тест)

Объектно-ориентированное программирование

ОПК-1 Основные понятия и принципы ООП. Классы. Инкапсуляция: скрытые поля и методы. Наследование: перекрытие методов. Полиморфизм: виртуальные методы. Конструкторы и деструкторы. Динамические объекты.

решать задачи по основным разделам курса

языками процедурного и объектно-ориентированного программирования

решение задач (в виде программы), экспресс-опрос (тест)

Потоковые классы: ОПК-1 понятие потока и операций работы с ним. Стандартные потоки. Форматирование данных. методы обмена с потоками. Ошибки потоков. Файловые потоки. виды потоковых устройств. Потоки и типы, определенные пользователем.

решать задачи по основным разделам курса

языками процедурного и объектно-ориентированного программирования

решение задач (в виде программы), экспресс-опрос (тест)

Page 12: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

Этап формирования компетенции (разделы, темы дисциплины)

Формируемая компетенция

Критерии и показатели оценивания компетенций Формы контроля сформированности

компетенций Знать:

Уметь:

Владеть:

Обработка исключительных ситуаций:

ОПК-1 понятие и использование исключительной ситуации. общий механизм и синтаксис обработки исключений.

решать задачи по основным разделам курса

языками процедурного и объектно-ориентированного программирования

решение задач (в виде программы), экспресс-опрос (тест)

Шаблоны функций и классов: ОПК-1 параметризация алгоритмов и типов данных. Применение шаблонов к типам, определяемым пользователем.

решать задачи по основным разделам курса

языками процедурного и объектно-ориентированного программирования

решение задач (в виде программы), экспресс-опрос (тест)

Объектно-ориентированный анализ ОПК-1 История появления, сфера применения, преимущества и недостатки, классические примеры

решать задачи по основным разделам курса

языками процедурного и объектно-ориентированного программирования

решение задач (в виде программы), экспресс-опрос (тест)

Page 13: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

Критерии и шкалы оценивания

1. Тестовый экспресс-опрос (в т.ч. терминологический срез)

Процент правильных ответов До 60 61-80 81-100 Количество баллов за решенный тест 0,5 1 1,5

2. Решение задач (в виде программы)

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

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

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

0 баллов - если студент выполнил менее 50% задания, и/или неверно указал варианты решения.

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

1) Типовые задания тестового экспресс-опроса

Цель: проведение оперативного контроля и промежуточной аттестации по итогам освоения разделов (тем) дисциплины, в т.ч. для контроля самостоятельной работы учащихся по отдельным разделам дисциплины. Раздел 1 "Базовые средства языка С/С++" Тема 00 "Введение"

1. "Что я жду от учебного курса <Программирование> ?"

2. "Программирование в моей будущей профессии ?"

Тема 01 "Базовые средства языка программирования" 2/2 Письменный ответ на вопросы в виде: - ментальной карты понятий; - тезисов - связного текста 1. Что такое структурное программирование? 2. Что относится к базовым средствам языка C++ ? 3. Из каких этапов состоит процесс подготовки программы для выполнения? 4. Что представляет собою алфавит языка С/C++ ? 5. Что такое идентификаторы и какими они бывают ? 6. Что такое ключевые слова и зачем они нужны?

Page 14: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

7. Что такое константы и где они используются? 8. Для чего используются комментарии и какими они должны быть? Тема 02 "Базовые средства языка C/C++" 2/4 Сформулировать вопросы по разделам указанной Темы: - первый вопрос по указанному разделу; - второй (и более) вопрос по любым выбранным разделам Темы. 1) Типы данных C++ ; 2) Основные типы данных []; 3) Структура программы []; 4) Переменные и выражения []; 5) Область действия идентификатора []; 6) Операции []; 7) Выражения ; 8) Преобразования типов []; Тема 03 "Базовые средства языка C/C++" 2/6 Письменно Задание по вариантам: а) Краткое объяснение сути подраздела - "для чего нужен?", б) Для рассматриваемого оператора - обязательный пример программного кода с пояснением 1. Базовые конструкции структурного программирования 2. Оператор «выражение» [] 3. Операторы ветвления [] 4. Операторы цикла [] 5. Операторы передачи управления [] б) любой другой вариант по собственному выбору Тема 04 "Базовые средства языка C/C++" 4/6 Указатели и массивы 1. Что такое указатель? Для чего используется? Какими бывают указатели? Примеры. 2. Что означает "инициализация указателя"? Какие способы инициализации бывают? Примеры. 3. Какие операции можно выполнять над указателями? Для чего нужны эти операции? Примеры. 4. Что такое ссылка? Для чего используется? Чем отличается от указателя? Примеры. 5. Что такое "динамический массив"? Для чего используется? Чем отличается от обычного? Примеры. 6. Как в языке С представляется строка? Способы инициализации строк. Какие операции можно выполнять над строками? Примеры. Тема 05 "Типы данных, определяемые пользователем " 6/6 Контрольное задание по теме "Типы данных, определяемые пользователем" [общий вопрос] 1. Для чего языках программирования нужны и используются "типы данных, определяемые пользователем"? 2. Пояснить назначение, привести и прокомментировать пример использования следующих конструкций языка программирования С/С++: [обязательный вариант] 2.1. Структура ; [вариант по выбору] 2.1. ... 2.2. Переименование типов; 2.3. Перечисление;

Page 15: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

2.4. Битовое поле; 2.5. Объединение. Тема 06 Модульное программирование. Функции. [2/4] Задание 1 [общие вопросы] 1. В чем заключается идея модульного программирования? 2. С какой целью и как в программах используются функции? [вариант по выбору] 3. Пояснить назначение, привести и прокомментировать пример использования следующих конструкций языка программирования С/С++: а. объявление функции; б. определение функции; в. вызов функции. Задание 2 [общие вопросы] 1. Что означает и как в С++ обеспечивается "взаимодействие функций"? 2. Почему взаимодействие функций играет важную роль в модульном программировании? [задание по вариантам] 3. Пояснить назначение, привести и прокомментировать пример использования следующих конструкций языка программирования С/С++: а. передача параметров по значению и по ссылке; б. передача параметров по значению и по указателю; в. передача массивов в качестве параметра; г. способы возвращение результатов из функции. [вариант по выбору] 4. Пояснить назначение, привести и прокомментировать пример использования следующих конструкций языка программирования С/С++: а. параметры функций со значениями по умолчанию; б. рекурсивные функции; в. перегрузка функций ; г. передача параметров в функцию main() Тема 07 Функции стандартной библиотеки: файлы, строки, символы, математические функции Контрольное задание по теме " Стандартная библиотека функций" 2/4 [общие вопросы] 1. Что такое, для чего используется и что в себя включает стандартная библиотека функций C/C++ ? 2. Что такое и как в программах на языке С/С++ организуется потоковый ввод/вывод? [задание по вариантам] 3. Пояснить назначение, привести и прокомментировать пример использования следующих конструкций языка программирования С/С++: а. открытие потока и ввод из потока; б. открытие потока и вывод в поток. 3. Пояснить смысл и назначение следующих элементов программы на языке С/С++: в. буферизированный ввод/вывод; г. используемый в функции fopen(...) указатель на структуру типа FILE;

Page 16: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

Контрольное задание по теме " Стандартная библиотека функций" 6/6 [общие вопросы] 1. Почему в программах на языках программирования высокого уровня математические функции, функции работы со строками и файлами и др. подключаются дополнительно через библиотеки, а не входят в базовый состав языка? [задание по вариантам] 1. Обработку каких ошибок файлового ввода/вывода необходимо предусмотреть в программе? Почему нельзя написать такую программу сразу без этих ошибок? Какие конструкции языка используются для обработки таких ошибок? 2. Как в программах на языке С/С++ представляются строки (строковые литералы)? Какие действия можно совершать над строками? Какие существуют способы выполнения этих действий? 3. Для чего и как в программах на зыках программирования можно использовать графическую подсистему компьютера? Какими примитивами (элементарными объектами) и их свойствами можно при этом управлять? Тема 07_2 " Возможности графической библиотеки: создание анимации" Письменный ответ на вопросы в виде: - ментальной карты понятий; - тезисов - связного текста

Графическая подсистема компьютера Виды компьютерной графики Функции графической библиотеки Создание анимированной графики

Тема 08 : Директивы препроцессора. Поименованные области Контрольное задание по теме "Директивы препроцессора" 2/4 [общие вопросы] 1. Что такое "препроцессор", для чего и как он используется при разработке программ на языке С\С++? [варианты] 1) 1+а, 2+а, 3+б, 4+б; 2) 1+б, 2+б, 3+а, 4+а; [вопросы] 1. Что делает препроцессор при выполнении директивы Х? 2. Как директива Х влияет на исходный текст программы? 3. Какая цель преследуется программистами при использовании в программе директивы Х? 4. Если бы не было директивы Х, что приходилось бы делать программистам? [значение Х] а. директива #include; б. директива #define. Контрольное задание по теме "Директивы препроцессора" 4/4 [вариант 01] 1. Что такое и для чего используется область действия идентификаторов? 2. В чем заключается "правило одного определения"? В чем смысл этого "правила"? [вариант 02] 3. Что такое и для чего используются в программах "внешние объявления"? 4. Что представляет собою, как и зачем используется пространство имен (в т.ч. пространство имен стандартной библиотеки)?

Page 17: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

Тема 09 Кодирование и документирование программ Контрольное задание по теме " Кодирование и документирование " 2/2 А.[общий вопрос] Что означает принцип кодирования: "лучше по-простому, чем по-умному "? Почему рекомендуется придерживаться именно этого принципа? Что произойдет, если игнорировать этот принцип и другие рекомендации по кодированию, документированию и оформлению программ? Б.[варианты 01-07] 1) Почему вместо непосредственного кодирования на языке программирования на первом шаге рекомендуется "записать программу на естественном языке"? Когда и почему этой рекомендацией можно(нельзя) пренебречь? Какие можно дать рекомендации по использованию в программе: 2) функций; 3) переменных и констант; 4) условных и циклических конструкций; 5) динамической памяти; 6) комментариев; 7) форматирования текста исходного кода? В.[вариант по выбору] из списка Б. Тема 10 Проектирование и тестирование программы Сформулировать вопросы по разделам указанной Темы: - первый вопрос по указанному разделу; - второй (и более) вопрос по любым выбранным разделам Темы.

"Этапы создания программ" 1. I этап. Постановка задачи 2. II этап. Разработка внутренних структур данных;

3. III этап. Проектирование 4. IV этап. Структурное программирование

5. V этап. Нисходящее тестирование.

Ключ: все вопросы открытого типа, что позволяет снизить давление на учащихся ограниченным списком вариантов ответов, и дать им максимально свободные и профессионально творческие ответы во всем многообразии их правильных вариантов.

2) Пример задачи

Написать программу обработки одномерного и двумерного массива целочисленных значений. Целевая функция для обработки - минимальное значение. Решение: #include <dos.h> #include <stdio.h> #include<iostream.h> int A[5] = {1,2,3,4,5}; //int M[5][5] = {{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5}}; int count (int* K, int N1) { int Min=K[0]; for(int i=0;i<N1;i++) if(Min>K[i]) Min=K[i]; return Min; }; void count2 (int* K, int N1, int &Min) { Min=K[0];

Page 18: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

for(int i=0;i<N1;i++) if(Min>K[i]) Min=K[i]; }; int count3 (int** K, int N1, int N2) { int Min=K[0][0]; for(int i=0;i<N1;i++) for(int j=0;j<N2;j++) if(Min>K[i][j]) Min=K[i][j]; return Min; }; void main() { cout<<count(A, 5); int rez; count2(A, 5, rez); cout<<rez; int **M = new int*[5]; for(int i=0;i<5;i++){ M[i] = new int[5]; //{{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5}}; for(int j=0;j<5;j++) M[i][j] = i+j+1; } cout<<count3(M,5,5); }

Вопросы к промежуточной аттестации

1. Языки программирования: назначение, особенности, классификация. Цели и задачи курса.

2. Состав алгоритмического языка (на примере С++): алфавит, лексемы. 3. Концепция типа данных. Основные (базовые) типы данных языка С++. 4. Структура программы на языке С++. Функция main(). Этапы создания исполняемой

программы. 5. Переменные и константы в языке С++. Область действия, видимости

идентификатора и время жизни переменной. Размещение переменных в памяти. 6. Операции языка С++: классификация и примеры. Построение выражений. Порядок

выполнения операций. Изменение порядка выполнения операций. 7. Структурное программирование. Базовые конструкции структурного

программирования 8. Оператор "выражение". Операции присваивания в языке С++. 9. Условный оператор. Порядок выполнения, особенности, синтаксис в С++. 10. Оператор множественного выбора: порядок выполнения, особенности, синтаксис в

С++. 11. Циклы. Оператор цикла с предусловием: порядок выполнения, особенности,

синтаксис в С++. 12. Циклы. Оператор цикла с постусловием: порядок выполнения, особенности,

синтаксис в С++ 13. Циклы. Оператор цикла с параметром: порядок выполнения, особенности,

синтаксис в С++. 14. Указатели. Инициализация указателей. Операции с указателями в С++:

разыменование, взятие адреса, арифметические и логические. 15. Ссылки. Инициализация ссылок. Операции со ссылками в С++. 16. Массивы в С++: одномерные и многомерные, статические и динамические.

Действия над массивами: доступ к элементам, инициализация, и д.р.

Page 19: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

17. С-строки. Действия над С-строками. Функции библиотеки для обработки С-строк в С++

18. Процедуры выделения и освобождения динамической памяти. Ошибочные ситуации при использовании динамической памяти.

19. Типы, определяемые пользователем. Переименование типов (typedef) и перечисления (enum).

20. Типы, определяемые пользователем. Структуры (struct): описание, инициализация, доступ к полям.

21. Модульное программирование. Функции. Объявление, определение и вызов функций в С++. Возвращение результата из функции.

22. Функции. Передача параметров в функцию: по адресу, по значению. Передача массивов в качестве параметров. Перегрузка функции.

23. Стандартная библиотека. Классификация и примеры функций стандартной библиотеки: математические, строки, ввода/вывода.

24. Потоки. Классификация потоков. Стандартные потоки. Операции над потоками: ввод из потока, вывод в поток. Методы обмена с потоками.

25. Файл - как особый способ хранения данных. Работа с файлами в С++. Файловые потоки. Последовательность работы с файлами. Операции чтения, записи и поиска в файле.

26. Этапы создания исполняемой программы. Препроцессор. Директивы препроцессора.

27. Поименованные области (namespace). Проект. Раздельная компиляция и компоновка: интерфейс, реализация, использование собственного модуля.

28. Технология создания программ. Рекомендации по кодированию и документированию программы: цели, переменные, операторы, функции, комментарии и д.р.

29. Технология создания программ. Проектирование и тестирование программ. Структурный подход. Этапы развития проекта и их назначение.

30. Динамические структуры данных. Линейный список, стек, очередь. Типовые операции обработки динамических структур данных.

Примеры практических экзаменационных заданий:

Массивы элементов: заполнение, поиск, замена, вывод

1.1. Написать функцию поиска минимального элемента в одномерном массиве. Массив и количество элементов предать в функцию в виде параметров. Результат вернуть как результат функции.

1.2. Написать функцию поиска суммы положительных элементов одномерного массива, расположенных на четных местах. Все необходимые для вычисления данные передать в функцию через параметры. Результат вычисления вернуть как результат функции.

Page 20: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

Динамические структуры – указатели: списки, динамические массивы, операции над указателями

1.3. Определить пользовательский тип, включающий в себя следующие поля: строка, целое число, указатель на байт, указатель на число с плавающей точкой. Внести изменения в созданный тип, так чтобы объекты этого типа могли образовывать односвязный список. Создать односвязный список из n объектов созданного типа.

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

Файлы ввод/вывод

1.5. Дан файл с целыми числами. Необходимо определить функцию, которая в качестве параметров принимает название файла и ссылку на переменную беззнакового целого типа. Функция должна читать заданный файл и подсчитывать сумму элементов в файле. Результат возвращается через ссылку.

1.6. Дан файл с произвольным текстом. Необходимо определить функцию, которая в качестве параметров принимает название файла и указатель на переменную целого беззнакового типа. Функция должна подсчитать количество символов пробел в указанном файле и вернуть значение через параметр (через указатель).

Вычисление арифметических выражений:

Вычислить значение заданного арифметического выражения. Исходные данные вводятся из файла. Вычисление оформить в виде функции, в которую передается имя файла с исходными данными. Функция

возвращает результат вычислений. Результат записывается в файл rezult.txt. (контрольный тест: а=1000, b=0.0001)

(а+b)2-(a2+2ab)

b2

Вычислить значение заданного арифметического выражения. Исходные данные вводятся из файла. Вычисление оформить в виде функции, в которую передается имя файла с исходными данными.

Функция возвращает результат вычислений (через параметр по ссылке). Результат записывается в файл rezult.txt. (контрольный тест: а=1000, b=0.0001)

sin(а/b)3-ln(a+ab2)

(a-b)

Page 21: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

9. ПЕРЕЧЕНЬ ОСНОВНОЙ И ДОПОЛНИТЕЛЬНОЙ УЧЕБНОЙ ЛИТЕРАТУРЫ, НЕОБХОДИМОЙ ДЛЯ ОСВОЕНИЯ ДИСЦИПЛИНЫ (МОДУЛЯ)

а) основная литература:

1. Страуструп Б. Язык программирования С++ для профессионалов, М..: «Издательство Интернет – Университет Информационных технологий, 2007г. – 568.

2. Павловская Т.А. С/С++. Программирование на языке высокого уровня. – СПб: Лидер, 2010 -461.

б) дополнительная литература:

1. А. В. Гордеев, А. Ю. Молчанов. Системное программное обеспечение. – Спб.: Питер, 2002. – 736с.: ил. ISBN 5-272-00341-1

2. П. Франка. С++: Учебный курс. – Спб.: Питер, 2001. -528с.: ил. ISBN 5-314-00136-5

3. Царев Р.Ю. Программирование на языке СИ. Учебное пособие. Красноярск: СФУ, 2014г. - 108

в) Электронные образовательные ресурсы (ЭОР):

1. "Введение в языки программирования C и C++ ", Автор: Ю.Л. Кетков http://www.intuit.ru/department/pl/ccpp/

2. "Программирование под Windows в среде Visual C++ 2005 ", Авторы: М.В. Свиркин, А.С. Чуркин http://www.intuit.ru/department/se/pwinviscpp2005/

3. "Язык программирования C++ ", Автор: А.Л. Фридман | ISBN: 978-5-9556-0017-8 http://www.intuit.ru/department/pl/cpp/

4. Интернет-университет - www.intuit.ru

г) программное обеспечение

среда программирования: Borland C++ 3.1; среда программирования: dev-c++ ; среда программирования: Code::Blocks; среда программирования : MS VisualStudio; среда программирования : Borland Developer Studio.

10. ПЕРЕЧЕНЬ РЕСУРСОВ ИНФОРМАЦИОННО-ТЕЛЕКОММУНИКАЦИОННОЙ СЕТИ "ИНТЕРНЕТ" (ДАЛЕЕ - СЕТЬ "ИНТЕРНЕТ"), НЕОБХОДИМЫХ ДЛЯ ОСВОЕНИЯ ДИСЦИПЛИНЫ (МОДУЛЯ)

1. Российская государственная библиотека - www.rsl.ru, www.leninka.ru 2. Библиотека МГУ.- www.msu.ru/libraries/ 3. Мурманская государственная областная научная библиотекаwww.mgounb.ru 4. Справочник по языку C++ https://msdn.microsoft.com/ru-ru/library/3bstk3k5.aspx

11. МЕТОДИЧЕСКИЕ УКАЗАНИЯ ДЛЯ ОБУЧАЮЩИХСЯ ПО ОСВОЕНИЮ ДИСЦИПЛИНЫ

Требования к обучаемым и результаты обучения

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

Результат обучения: знания (понимание) основ структурного, модульного, и объектно-ориентированного программирования; умение писать несложные программы на языке С++ в рамках перечисленных парадигм. Умение работать с собственными функциями, файлами, библиотеками функций, программными модулями, современными и

Page 22: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

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

Рекомендуемый начальный уровень обучаемого до изучения дисциплины : узнавать: язык и среду программирования, уметь составлять алгоритмы и рисовать блок-схемы, иметь представление о языках программирования высокого уровня.

Уровень обучаемого после изучения дисциплины: знания: способы описания языка прогр. синтаксис, семантика. технология создания программ, парадигмы программирования, трансляция программ; умения: составление программ на с++, использующих функции; динамическая память, алгоритмы работы с абстрактными структурами данных (списки), алгоритмы работы с файлами, составление ОО- программ на с++

Список получаемых навыков/умений:

По окончании курса студент будет обладать следующими навыками и умениями: 1. работа со средой программирования: -- открытие,закрытие ,сохранение программных проектов и отдельных программных файлов; -- отладка программы "по шагам", работа с таблицей переменных, -- компиляция программы, обнаружение и исправление ошибок компилятора и компоновщика; -- навыки оформления программного кода в классическом стиле: интерфейсные заголовки, операторные отступы, комментарии и др. 2. Навыки непосредственного программирования: -- знание и умение использовать стандартные алгоритмы (мин, макс, поиск и др); -- работа с внешними файлами: открытие, закрытие, чтение, запись; -- использование в программе функций: определение, объявление, вызов, передача параметров и возвращение результатов по значению и по адресу; -- работа с указателями и ссылками; -- пользовательские типы данных: структуры, нумерации, переименования типов; -- абстрактные типы данных: списки, деревья, очереди и т.п.

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

Самостоятельная работа

Помимо аудиторных занятий студенту рекомендуется самостоятельно изучать и практиковаться в некоторых аспектах рассматриваемой дисциплины. Самостоятельная работа позволяет четко сформировать и зафиксировать получаемые в процессе обучения

Page 23: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

навыки, знания и умения. Самостоятельная работа должна быть организована в соответствии с тематическим планом курса и рекомендуем количеством часов.

Выполнение практических (контрольных, лабораторных и др.) работ

В процессе обучения, для закрепления изученного материала, необходимо выполнять практические задания, которые предлагаются в виде контрольных и лабораторных работ. Список тем практических работ указа в рабочей программе дисциплины. Описания работ и примеры оформления результатов работ представлены в приложении.

Любая практическая работа должна быть выполнена обучающимся самостоятельно и в срок, указанный преподавателем. Если имеются причины, по которым работа не может быть выполнена, то этот вопрос должен быть разрешен преподавателем по данной дисциплине. Если у обучаемого имеются идеи по улучшению, дополнению или другой модификации работы, то эти идеи должны быть также рассмотрены и оценены преподавателем.

Результаты любой практической работы должны быть оформлены надлежащим образом. Результаты должны сопровождаться информацией о названии работы, номере варианта, о том кто и когда выполнил работу.

План лабораторных работ(1 семестр)

Лабораторная работа № 1. "Массивы"

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

2. Варианты 1. Написать функцию для обмена строк двумерного массива с ее помощью

отсортировать массив по элементам третьего столбца. 2. Написать процедуру для суммирования матриц. С ее помощью сложить исходную

матрицу и транспонированную (т. е. полученную поворотом исходной на 90 ). 3. Написать функцию для удаления строки из двумерного массива. Оставшиеся

строки должны быть расположены плотно, недостающие элементы заменяются 0. С помощью разработанных функций исключить из массива строки с номерами от А до В.

4. Определить является ли матрица ортонормированной, т. е. такой, что скалярное произведение каждой пары различных строк равно 0, а скалярное произведение строки самой на себя равно 1.

5. Элемент матрицы является седловой точкой, если он является наименьшим в своей строке и наибольшим в своем столбце (или наоборот: наибольшим в своей строке и наименьшим в своем столбце).Для заданной матрицы определить все седловые точки.

6. Написать процедуру обмена столбца и строки двухмерного массива. С ее помощью поменять местами те строки и столбцы, первые элементы которых совпадают.

7. Написать функцию транспонирования квадратной матрицы (т.е. поворота исходной матрицы на 90 ). С ее помощью определить является ли заданная матрица симметрической. (Матрица называется симметрической, если транспонированная матрица равна исходной).

8. Написать функцию для вычисления суммы элементов квадратной матрицы, которые расположены ниже главной диагонали. С ее помощью найти максимальное значение такой суммы в n матрицах.

Page 24: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

9. Написать функцию, проверяющую есть ли отрицательные элементы в указанной строке двумерного массива. Удалить из массива все строки с отрицательными элементами, удаленная строка заполняется 0 и переносится в конец массива.

10. Написать функцию, проверяющую по возрастанию или убыванию упорядочена указанная строка двумерного массива. Упорядочить по возрастанию все строки двумерного массива, которые неупорядочены по убыванию.

11. Написать функцию, для поиска максимального элемента в указанной строке двумерного массива. Сдвинуть в двумерном массиве все строки циклически вправо на количество элементов равное максимальному элементу в этой строке.

12. Определить можно ли в двумерном массиве найти такой столбец, который разбивает массив на два так, что сумма элементов в первом больше, чем сумма элементов во втором. Сам столбец в разбиваемые части не входит.

13. Вычислить произведение всех столбцов массива, у которых первый элемент больше элементов расположенных на главной и побочной диагонали.

14. Задан двумерный массив. Найти сумму элементов первого столбца без одного последнего элемента, сумму элементов второго столбца без двух последних, сумму элементов третьего столбца без трех последних и т. д. Последний столбец не обрабатывается. Среди найденных сумм найти максимальную.

15. Задан двумерный массив N x N. Разрешается произвольно переставлять элементы внутри любого столбца. Проверить, можно ли выполнив конечное количество перестановок в столбцах, расположить на побочной диагональ элементы так, чтобы он возрастали.

16. Задан двумерный массив N x M. Найти в нем подмассив 3 х 3, сумма элементов которого максимальна. N и M могут быть не кратны трем.

17. Задан двумерный массив N x N. Последовательно рассматриваются квадратные подмассивы, правый верхний элемент которых лежит на побочной диагонали. В каждом таком подмассиве находится максимальный элемент. Путем перестановок строк и столбцов (целиком) элемент надо переместить в правый верхний угол подмассива. Проверить получилась ли на побочной диагонали убывающая последовательность элементов.

18. Задана строка из N2 цифр. Установить можно ли, разбив строку на подстроки длиной N, записать их в строки двумерного массива N x N по одной цифре в одном элементе так, чтобы они в первом столбце расположились в порядке возрастания.

19. Найти минимальный из неповторяющихся элементов двумерного массива. 20. Найти максимальный из повторяющихся элементов двумерного массива. 21. В двумерном массиве найти среднее арифметическое первого столбца и количество

элементов в каждом из следующих столбцов, превышающих среднее арифметическое предыдущего столбца.

22. Задан одномерный массив состоящий из N целых чисел. Сформировать на его основе двумерный массив N x N так, чтобы сумма элементов в первом столбце была равна первому элементу одномерного массива, сумма элементов во втором столбце была равна второму элементу одномерного массива и т. д. Нули не использовать.

23. Определить сколько элементов двумерного массива больше любого элемента на главной диагонали.

24. Найти количество элементов в массиве, значение которых больше среднего значения всех элементов.

Page 25: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

Лабораторная работа № 2. "Работа с файлами" 1. Условия выполнения задач

Студенту необходимо подготовить решение двух задач из нижележащего списка.

Все исходные величины должны вводиться из файла (in.txt), а результат должен быть записан в результирующий файл (out.txt). Формат файла необходимо выбрать самостоятельно (например, текстовый фал in.txt, в котором необходимые значения перечислены через запятую). Исходный файл можно сформировать и заполнить вручную с помощью внешнего текстового редактора.

2. Варианты заданий

1. Даны два упорядоченных по возрастанию одномерных массива целых числе. Необходимо записать два исходных массива в третий так, чтобы он был тоже упорядоченным по возрастанию массивом.

2. Дан одномерный массив. Необходимо вывести на экран индексы максимального и минимального элементов данного массива

3. Дана одномерный массив целых числе. Необходимо подсчитать количество различных чисел в массиве. Например: массив 121332 содержит 3 различные цифры – это 1, 2 и 3

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

5 - yes

8 - no

11 - yes и т.д.

5. В массиве из 15 целых элементов необходимо поменять местами максимальный и минимальный элементы.

6. Даны два массива одной размерности - к1, к2, - целых чисел. Определите количество четных чисел на одинаковых местах во всех массивах.

7. В массиве из 20 целых чисел необходимо подсчитать количество положительных, отрицательных и нулевых элементов.

8. Дано целое число. Если число отрицательное, то необходимо вывести все четные числа, начиная со введенного до -2. Если число положительное, то необходимо вывести все нечетные числа, начиная с этого числа и заканчивая его квадратом.

9. Дан массив из N целых элементов и два целых числа A и B. Необходимо определить количество элементов, которые одновременно больше A и меньше B.

10. Дана строка символов. Необходимо удвоить все пробелы в строке.

11. Дан массив из N вещественных чисел и вещественное число R. Необходимо найти элемент массива, который максимально близок или равен R.

12. Даны две строки символов S и T. Необходимо определить сколько раз строка T входит в строку S и удалить первое и последнее вхождение T в S.

13. Дан массив из N вещественных чисел. Необходимо найти суммы максимальных и минимальных элементов.

Page 26: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

14. Дан массив из N вещественных чисел. Необходимо найти сумму всех элементов массива и записать ее на место первого элемента массива.

15. Дан массив из N вещественных чисел. Если количество элементов массива четно, то в пару элементов, которые находятся посередине массива записать сумму элементов от начала до середины и сумму элементов от середины до конца массива соответственно. Если N – не четно, то записать в центральный элемент массива 0.

16. Среди данного массива символов, найти и вывести все имеющиеся пары стоящих рядом одинаковых символов

17. Дан массив из 40 целых чисел. Найти максимальное число в этом массиве.

18. Дано 100 вещественных чисел. Вычислить разность между максимальным и минимальным из них.

19. Дан массив, в который записаны элементы последовательности натуральных чисел. Количество этих элементов не известно, но известно, что последним элементом последовательности является 0. Необходимо определить порядковый номер наименьшего элемента этой последовательности. (примечание: массив может быть заполнен не полностью, поэтому говорится, что кол-во элементов не известно)

20. Дано целое n > 0 и последовательность из n любых вещественных чисел, среди которых есть хотя бы одно отрицательное число. Найти элемент наибольший среди отрицательных чисел этой последовательности.

21. Дано n вещественных чисел. Определить, образуют ли они знакочередующуюся последовательность. (например, знакочередующаяся последовательность: -1.2, 2.8, -3.7, 9.1, -4.2, 1.0)

22. Дан массив, в который записаны элементы последовательности натуральных чисел. Количество этих элементов не известно, но известно, что последним элементом последовательности является 0. Найти количество четных элементов этой последовательности.

23. Дана последовательность из n вещественных чисел. Найти наиболее длинную последовательность подряд идущих нулей в этой последовательности.

24. Дана последовательность из 40 целых чисел. Логической переменной присвоить значение True, если в последовательности нет нулевых элементов и при этом положительные элементы чередуются с отрицательными, и значение False иначе.

25. Даны последовательность из n целых чисел и целое число a. Найти порядковый номер первого вхождения a в последовательность (номер первого элемента равного a) или вывести сообщение, что элемента равного a в последовательности нет.

26. Дана последовательность из n вещественных чисел. Найти значение последнего отрицательного элемента.

27. Дан массив, в который записаны элементы последовательности натуральных чисел. Количество этих элементов не известно, но известно, что последним элементом последовательности является 0. Если на четном месте находится элемент кратный 3, то заменить этот элемент на его квадрат. Полученную последовательность вывести на экран.

Page 27: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

28. Дана последовательность из m вещественных чисел. Найти количество элементов, которые больше своих соседей (левого: an > an-1 и правого: an>an+1).

29. Дана последовательность из 70 целых чисел. Определить сколько отрицательных чисел стоит в начале этой последовательности.

30. Дана последовательность, состоящая из 100 вещественных чисел. Определить является ли она возрастающей или убывающей.

31. Дана последовательность из 50 чисел. Найти их среднее арифметическое этих чисел.

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

33. Дана последовательность из n вещественных чисел. Вычислить сумму тех элементов последовательности, номера которых совпадают со значениями элементов последовательности.

34. Дана последовательность из n вещественных чисел. Необходимо замены отрицательные элементы последовательности их квадратами, а из положительных извлечь квадратный корень. Подсчитать сумму элементов полученной последовательности.

35. Дан массив вещественных чисел. Если сумма первого и последнего элемента окажется положительной, то необходимо получить сумму элементов исходной последовательности, а если отрицательной, то необходимо получить их произведение.

36. Даны две последовательности из n вещественных чисел каждая X и Y. Необходимо сформировать третью последовательность по следующему правилу: первый элемент результирующей последовательности равен max(x1,y1); второй - max(x2, y2) третий- max(x3 y3) . . .

37. Дана последовательность из n вещественных чисел. Необходимо сформировать две новые последовательности таким образом, чтобы в первой были записаны все положительные, а во второй все отрицательные элементы исходной последовательности.

38. Дана последовательность из n вещественных чисел. Сдвинуть все элементы последовательности циклически на k позиций влево. Например: 12345678 – на три позиции влево -> 45678123

39. Дана последовательность из n вещественных чисел. Переменной t присвоить значение True, если элементы последовательности упорядочены строго по возрастанию.

40. Дана последовательность из n вещественных чисел. Переменной t присвоить значение True, если в последовательности нет нулевых элементов и при этом положительные элементы чередуются с отрицательными.

41. Дана последовательность из n вещественных чисел. Все элементы первой половины последовательности с четными номерами, домножить на него максимальный элемент этой последовательности.

42. Дана последовательность из n вещественных чисел. Поменять в последовательности местами наибольший элемент и элемент с номером m.

43. Дана последовательность из n вещественных чисел. Найти номер первого вхождения данного числа в последовательность или вывести сообщение, что такого числа нет.

44. Дана последовательность из n вещественных чисел. Найти номер последнего вхождения данного числа в последовательность или вывести сообщение, что такого числа нет.

Page 28: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

45. Дана последовательность из n натуральных чисел. Переменной t присвоить значение True, если среди элементов последовательности есть хотя бы одна пара чисел, таких что ai = ai-1/2.

46. Дана последовательность из n целых чисел. Удалить все элементы последовательности значения которых кратны k (делятся на k без остатка).

47. Дана последовательность a из 99 целых чисел. Получить новую последовательность, удалив из исходной все элементы со значением max(a1,..., a99).

48. Дана последовательность из n действительных чисел. Получить числа b1,...,bn, где bi - среднее арифметическое всех элементов исходной последовательности, кроме i - того элемента.

49. Дана строка символов. Сколько различных символов встречается в ней. 50. Дана последовательность из 20ти целых чисел. Первый по порядку элемент с

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

Лабораторная работа № 3. "Функции и массивы"

1. Постановка задачи Используя функции, решить указанную в варианте задачу. Необходимые данные должны передаваться в функцию как параметр. Использование глобальных переменных запрещается. Результат выполнения программы записать в файл out.txt 2. Варианты

1. Написать функцию для обмена строк двумерного массива с ее помощью отсортировать массив по элементам третьего столбца.

2. Написать процедуру для суммирования матриц. С ее помощью сложить исходную матрицу и транспонированную (т. е. полученную поворотом исходной на 90 ).

3. Написать функцию для удаления строки из двумерного массива. Оставшиеся строки должны быть расположены плотно, недостающие элементы заменяются 0. С помощью разработанных функций исключить из массива строки с номерами от А до В.

4. Определить является ли матрица ортонормированной, т. е. такой, что скалярное произведение каждой пары различных строк равно 0, а скалярное произведение строки самой на себя равно 1.

5. Элемент матрицы является седловой точкой, если он является наименьшим в своей строке и наибольшим в своем столбце (или наоборот: наибольшим в своей строке и наименьшим в своем столбце).Для заданной матрицы определить все седловые точки.

6. Написать процедуру обмена столбца и строки двухмерного массива. С ее помощью поменять местами те строки и столбцы, первые элементы которых совпадают.

7. Написать функцию транспонирования квадратной матрицы (т.е. поворота исходной матрицы на 90 ). С ее помощью определить является ли заданная матрица симметрической. (Матрица называется симметрической, если транспонированная матрица равна исходной).

8. Написать функцию для вычисления суммы элементов квадратной матрицы, которые расположены ниже главной диагонали. С ее помощью найти максимальное значение такой суммы в n матрицах.

9. Написать функцию, проверяющую есть ли отрицательные элементы в указанной строке двумерного массива. Удалить из массива все строки с отрицательными элементами, удаленная строка заполняется 0 и переносится в конец массива.

Page 29: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

10. Написать функцию, проверяющую по возрастанию или убыванию упорядочена указанная строка двумерного массива. Упорядочить по возрастанию все строки двумерного массива, которые неупорядочены по убыванию.

11. Написать функцию, для поиска максимального элемента в указанной строке двумерного массива. Сдвинуть в двумерном массиве все строки циклически вправо на количество элементов равное максимальному элементу в этой строке.

12. Определить можно ли в двумерном массиве найти такой столбец, который разбивает массив на два так, что сумма элементов в первом больше, чем сумма элементов во втором. Сам столбец в разбиваемые части не входит.

13. Вычислить произведение всех столбцов массива, у которых первый элемент больше элементов расположенных на главной и побочной диагонали.

14. Задан двумерный массив. Найти сумму элементов первого столбца без одного последнего элемента, сумму элементов второго столбца без двух последних, сумму элементов третьего столбца без трех последних и т. д. Последний столбец не обрабатывается. Среди найденных сумм найти максимальную.

15. Задан двумерный массив N x N. Разрешается произвольно переставлять элементы внутри любого столбца. Проверить, можно ли выполнив конечное количество перестановок в столбцах, расположить на побочной диагональ элементы так, чтобы он возрастали.

16. Задан двумерный массив N x M. Найти в нем подмассив 3 х 3, сумма элементов которого максимальна. N и M могут быть не кратны трем.

17. Задан двумерный массив N x N. Последовательно рассматриваются квадратные подмассивы, правый верхний элемент которых лежит на побочной диагонали. В каждом таком подмассиве находится максимальный элемент. Путем перестановок строк и столбцов (целиком) элемент надо переместить в правый верхний угол подмассива. Проверить получилась ли на побочной диагонали убывающая последовательность элементов.

18. Задана строка из N2 цифр. Установить можно ли, разбив строку на подстроки длиной N, записать их в строки двумерного массива N x N по одной цифре в одном элементе так, чтобы они в первом столбце расположились в порядке возрастания.

19. Найти минимальный из неповторяющихся элементов двумерного массива. 20. Найти максимальный из повторяющихся элементов двумерного массива. 21. В двумерном массиве найти среднее арифметическое первого столбца и количество

элементов в каждом из следующих столбцов, превышающих среднее арифметическое предыдущего столбца.

22. Задан одномерный массив состоящий из N целых чисел. Сформировать на его основе двумерный массив N x N так, чтобы сумма элементов в первом столбце была равна первому элементу одномерного массива, сумма элементов во втором столбце была равна второму элементу одномерного массива и т. д. Нули не использовать.

23. Определить сколько элементов двумерного массива больше любого элемента на главной диагонали.

24. Найти количество элементов в массиве, значение которых больше среднего значения всех элементов.

Лабораторная работа № 4."Структуры"

1. Постановка задачи Используя функции, решить указанную в варианте задачу. Необходимые данные должны передаваться в функцию как параметр. Использование глобальных переменных запрещается. Результат выполнения программы записать в файл out.txt

Page 30: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

2. Варианты Вариант 1 1. Описать структуру с именем STUDENT, содержащую следующие поля: • фамилия и инициалы; • номер группы; • успеваемость (массив из пяти элементов). 2. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT; записи должны быть упорядочены по возрастанию номера группы; • вывод на дисплей фамилий и номеров групп для всех студентов, включенных в массив, если средний балл студента больше 4,0; • если таких студентов нет, вывести соответствующее сообщение. Вариант 2 1. Описать структуру с именем STUDENT, содержащую следующие поля: • фамилия и инициалы; • номер группы; • успеваемость (массив из пяти элементов). 2. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT; записи должны быть упорядочены по возрастанию среднего балла; • вывод на дисплей фамилий и номеров групп для всех студентов, имеющих оценки 4 и 5; • если таких студентов нет, вывести соответствующее сообщение. Вариант 3 1. Описать структуру с именем STUDENT, содержащую следующие поля: • фамилия и инициалы; • помер группы; ш успеваемость (массив из пяти элементов). 2. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT; записи должны быть упорядочены по алфавиту; ш вывод на дисплей фамилий и номеров групп для всех студентов, имеющих хотя бы одну оценку 2; • если таких студентов нет, вывести соответствующее сообщение. Вариант 4 1. Описать структуру с именем AEROFLOT, содержащую следующие поля: • название пункта назначения рейса; • номер рейса; • тип самолета. 2. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из семи элементов типа AEROFLOT; записи должны быть упорядочены но возрастанию номера рейса; • вывод на экран номеров рейсов и типов самолетов, вылетающих в пункт назначения, название которого совпало с названием, введенным с клавиатуры; • если таких рейсов нет, выдать на дисплей соответствующее сообщение. Вариант 5 1. Описать структуру с именем AEROFLOT, содержащую следующие поля: • название пункта назначения рейса; • номер рейса; • тип самолета. 2. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из семи элементов типа AEROFLOT; записи должны быть размещены в алфавитном порядке по названиям пунктов назначения;

Page 31: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

• вывод на экран пунктов назначения и номеров рейсов, обслуживаемых самолетом, тип которого введен с клавиатуры; • если таких рейсов нет, выдать на дисплей соответствующее сообщение. Вариант 6 1. Описать структуру с именем WORKER, содержащую следующие поля: • фамилия и инициалы работника; • название занимаемой должности; • год поступления на работу. 2. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из десяти структур типа WORKER; записи должны быть размещены по алфавиту. • вывод на дисплей фамилий работников, чей стаж работы в организации превышает значение, введенное с клавиатуры; • если таких работников нет, вывести на дисплей соответствующее сообщение. Вариант 7 1. Описать структуру с именем TRAIN, содержащую следующие поля: • название пункта назначения; • номер поезда; • время отправления. 2. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа TRAIN; записи должны быть размещены в алфавитном порядке по названиям пунктов назначения; • вывод на экран информации о поездах, отправляющихся после введеного с клавиатуры времени; • если таких поездов нет, выдать на дисплей соответствующее сообщение. Вариант 8 1. Описать структуру с именем TRAIN, содержащую следующие поля: • название пункта назначения; • номер поезда; • время отправления. 2. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из шести элементов типа TRAIN; записи должны быть упорядочены по времени отправления поезда; • вывод на экран информации о поездах, направляющихся в пункт, название которого введено с клавиатуры; • если таких поездов нет, выдать на дисплей соответствующее сообщение. Вариант 9 1. Описать структуру с именем TRAIN, содержащую следующие поля: • название пункта назначения; • номер поезда; • время отправления. 2. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа TRAIN; записи должны быть упорядочены по номерам поездов; • вывод на экран информации о поезде, номер которого введен с клавиатуры; • если таких поездов нет, выдать на дисплей соответствующее сообщение. Вариант 10 1. Описать структуру с именем MARSH, содержащую следующие поля: • название начального пункта маршрута; • название конечного пункта маршрута; • номер маршрута.

Page 32: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

2. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа MARSH; записи должны быть упорядочены по номерам маршрутов; • вывод на экран информации о маршруте, номер которого введен с клавиатуры; • если таких маршрутов нет, выдать на дисплей соответствующее сообщение. Вариант 11 1. Описать структуру с именем MARSH, содержащую следующие поля: • название начального пункта маршрута; • название конечного пункта маршрута; • номер маршрута. 2. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа MARSH; записи должны быть упорядочены по номерам маршрутов; • вывод на экран информации о маршрутах, которые начинаются или кончаются в пункте, название которого введено с клавиатуры; • если таких маршрутов нет, выдать на дисплей соответствующее сообщение. Вариант 12 1. Описать структуру с именем NOTE, содержащую следующие поля: • фамилия, имя; • номер телефона; • день рождения (массив из трех чисел). 2. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа NOTE; записи должны быть упорядочены но датам дней рождения; • вывод на экран информации о человеке, номер телефона которого введен с клавиатуры; • если такого нет, выдать на дисплей соответствующее сообщение. Вариант 13 1. Описать структуру с именем NOTE, содержащую следующие поля: • фамилия, имя; • номер телефона; • день рождения (массив из трех чисел). 2. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа NOTE; записи должны быть размещены но алфавиту; • вывод на экран информации о людях, чьи дни рождения приходятся на месяц, значение которого введено с клавиатуры; • если таких нет, выдать на дисплей соответствующее сообщение. Вариант 14 1. Описать структуру с именем NOTE, содержащую следующие поля: • фамилия, имя; • номер телефона; • день рождения (массив из трех чисел). 2. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа NOTE; записи должны быть упорядочены по трем первым цифрам номера телефона; • вывод на экран информации о человеке, чья фамилия введена с клавиатуры; • если такого нет, выдать на дисплей соответствующее сообщение. Вариант 15 1. Описать структуру с именем ZNAK, содержащую следующие поля: • фамилия, имя; • знак Зодиака; • день рождения (массив из трех чисел).

Page 33: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

2. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа ZNAK; записи должны быть упорядочены по датам дней рождения; • вывод на экран информации о человеке, чья фамилия введена с клавиатуры; • если такого нет, выдать на дисплей соответствующее сообщение. Вариант 16 1. Описать структуру с именем ZNAK, содержащую следующие поля: • фамилия, имя; • знак Зодиака; • день рождения (массив из трех чисел). 2. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа ZNAK; записи должны быть упорядочены по датам дней рождения; • вывод на экран информации о людях, родившихся под знаком, наименование которого введено с клавиатуры; • если таких нет, выдать на дисплей соответствующее сообщение. Вариант 17 1. Описать структуру с именем ZNAK, содержащую следующие поля: • фамилия, имя; • знак Зодиака; • день рождения (массив из трех чисел). 2. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа ZNAK; записи должны быть упорядочены по знакам Зодиака; • вывод на экран информации о людях, родившихся в месяц, значение которого введено с клавиатуры; • если таких нет, выдать на дисплей соответствующее сообщение. Вариант 18 1. Описать структуру с именем PRICE, содержащую следующие поля: • название товара; • название магазина, в котором продается товар; • стоимость товара в руб. 2. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа PRICE; записи должны быть размещены в алфавитном порядке по названиям товаров; • вывод на экран информации о товаре, название которого введено с клавиатуры; • если таких товаров нет, выдать на дисплей соответствующее сообщение. Вариант 19 1. Описать структуру с именем PRICE, содержащую следующие поля: • название товара; • название магазина, в котором продается товар; • стоимость товара в руб. 2. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа PRICE; записи должны быть размещены в алфавитном порядке по названиям магазинов; • вывод на экран информации о товарах, продающихся в магазине, название которого введено с клавиатуры; • если такого магазина нет, выдать на дисплей соответствующее сообщение. Вариант 20 1. Описать структуру с именем ORDER, содержащую следующие поля: • расчетный счет плательщика; • расчетный счет получателя;

Page 34: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

• перечисляемая сумма в руб. 2. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа ORDER; записи должны быть размещены в алфавитном порядке по расчетным счетам плательщиков; • вывод па экран информации о сумме, снятой с расчетного счета плательщика, введенного с клавиатуры; • если такого расчетного счета нет, выдать на дисплей соответствующее сообщение.

План лабораторных работ (2 семестр)

Лабораторная работа № 1. Классы и объекты в С++

Постановка задачи

Написать программу, в которой создаются и разрушаются объекты, определенного пользователем класса. Выполнить исследование вызовов конструкторов и деструкторов.

Порядок выполнения работы

1. Определить пользовательский класс в соответствии с вариантом задания (смотри приложение).

2. Определить в классе следующие конструкторы: без параметров, с параметрами, копирования.

3. Определить в классе деструктор. 4. Определить в классе компоненты-функции для просмотра и установки полей

данных. 5. Определить указатель на экземпляр класса. 6. Написать демонстрационную программу, в которой создаются и разрушаются

объекты пользовательского класса и каждый вызов конструктора и деструктора сопровождается выдачей соответствующего сообщения (какой объект какой конструктор или деструктор вызвал).

7. Показать в программе использование указателя на объект. 8. Лабораторная должна состоять из трёх файлов: заголовочный h-файл с определением класса, cpp-файл с реализацией класса, сpp-файл демонстрационной программы.

Для предотвращения многократного включения файла-заголовка следует

использовать директивы препроцессора #ifndef STUDENTH #define STUDENTH // модуль STUDENT.H ... #endif

Page 35: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

Варианты заданий.

Описания членов - данных пользовательских классов 1. СТУДЕНТ имя – char* курс – int пол – int(bool) 4. ИЗДЕЛИЕ имя – char* шифр – char* количество – int 7. АДРЕС имя – char* улица – char* номер дома – int 10. ЦЕХ имя – char* начальник – char* количество работающих – int 13. СТРАНА имя – char* форма правления – char* площадь – float 2. СЛУЖАЩИЙ имя – char* возраст – int рабочий стаж – int 5. БИБЛИОТЕКА имя – char* автор – char* стоимость – float 8. ТОВАР имя – char* количество – int стоимость – float

11. ПЕРСОНА имя – char* возраст – int пол – int(bool) 14. ЖИВОТНОЕ имя – char* класс – char* средний вес – int 3. КАДРЫ имя – char* номер цеха – int разряд – int 6. ЭКЗАМЕН имя студента – char* дата – int оценка – int 9. КВИТАНЦИЯ номер – int дата – int сумма – float 12. АВТОМОБИЛЬ марка – char* мощность – int стоимось – float 15. КОРАБЛЬ имя – char* водоизмещение – int тип – char*

Page 36: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

Лабораторная работа № 2. Перегрузка операций

Основное содержание работы.

Определить и реализовать класс. Определить и реализовать операции над данными

этого класса. Написать и выполнить программу полного тестирования этого класса.

Порядок выполнения работы.

1. Выбрать класс в соответствии с вариантом. 2. Определить и реализовать в классе конструкторы, деструктор, функции Input

(ввод с клавиатуры) и Print (вывод на экран), перегрузить операцию присваивания. 3. Написать программу тестирования класса и выполнить тестирование. 4. Дополнить определение класса заданными перегруженными операциями ( в

соответствии с вариантом). 5. Реализовать эти операции. Выполнить тестирование. Методические указания. 1.Класс реализовать как динамический массив. Для этого определение класса

должно иметь следующие поля: указатель на начало массива; максимальный размер массива; текущий размер массива. 2. Конструкторы класса размещают массив в памяти и устанавливают его

максимальный и текущий размер. Для задания максимального массива использовать константу, определяемую вне класса.

3. Чтобы у вас не возникало проблем, аккуратно работайте с константными объектами. Например:

* конструктор копирования следует определить так: MyClass (const MyClass& ob); * операцию присваивания перегрузить так: MyClass& operator = (const MyClass& ob); 4. Для удобства реализации операций-функций реализовать в классе

private(protected)-функции, работающие непосредственно с реализацией класса. Например, для класса множество это могут быть следующие функции:

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

операций (operator).

Варианты заданий.

1. Множество с элементами типа char. Дополнительно перегрузить следующие операции:

+ добавить элемент в множество(типа char + set); + объединение множеств; = = проверка множеств на равенство. 2. Множество с элементами типа char. Дополнительно перегрузить следующие

операции: - удалить элемент из множества (типа set-char);

Page 37: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

* пересечение множеств; < сравнение множеств. 3. Множество с элементами типа char. Дополнительно перегрузить следующие

операции: - удалить элемент из множества (типа set-char); > проверка на подмножество; != проверка множеств на неравенство.

4. Множество с элементами типа char. Дополнительно перегрузить следующие

операции: + добавить элемент в множество (типа set+char); * пересечение множеств;

= = проверка множеств на равенство. 5. Множество с элементами типа char. Дополнительно перегрузить следующие

операции: + добавить элемент в множество(типа char + set);

+ объединение множеств; <= сравнение множеств . 6. Множество с элементами типа char. Дополнительно перегрузить следующие

операции: > проверка на принадлежность(char > set); * пересечение множеств; < проверка на подмножество.

7. Однонаправленный список с элементами типа int. Дополнительно перегрузить

следующие операции: + – объединить списки (list+list); -- – удалить элемент из начала (--list);

= = – проверка на равенство. 8. Однонаправленный список с элементами типа int. Дополнительно перегрузить

следующие операции: + – добавить элемент в начало(int+list); -- – удалить элемент из начала(–list);

= = – проверка на равенство. 9. Однонаправленный список с элементами типа int. Дополнительно перегрузить

следующие операции: + добавить элемент в конец (list+int); -- удалить элемент из конца (list--);

!= проверка на неравенство. 10. Однонаправленный список с элементами типа int. Дополнительно перегрузить

следующие операции: [] доступ к элементу в заданной позиции, например: int i,c; list L; c=L[i];

Page 38: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

+ объединить два списка; = = проверка на равенство. 11. Однонаправленный список с элементами типа char. Дополнительно

перегрузить следующие операции: [] доступ к элементу в заданной позиции, например: int i; char c; list L; c=L[i]; + объединить два списка; != проверка на неравенство. 12. Стек. Дополнительно перегрузить следующие операции: + добавить элемент в стек; извлечь элемент из стека; bool() проверка, пустой ли стек. 13. Очередь. Дополнительно перегрузить следующие операции: + добавить элемент; извлечь элемент; bool() – проверка, пустая ли очередь. 14. Одномерный массив (вектор) вещественных чисел. Дополнительно перегрузить

следующие операции: + сложение векторов (a[i]+b[i] для всех i); [] доступ по индексу; + добавить число к вектору (double+vector). 15. Одномерный массив (вектор) вещественных чисел. Дополнительно перегрузить

следующие операции: - вычитание векторов (a[i]-b[i] для всех i); [] доступ по индексу; - вычесть из вектора число (vector-double). 16. Одномерный массив (вектор) вещественных чисел. Дополнительно перегрузить

следующие операции: * умножение векторов (a[i]*b[i] для всех i); [] доступ по индексу; * умножить вектор на число (vector*double). 17. Одномерный массив (вектор) вещественных чисел. Дополнительно перегрузить

следующие операции: = присвоить всем элементам вектора значение (vector=double); [] доступ по индексу; = = проверка на равенство; != проверка на неравенство; 18. Двухмерный массив (матрица) вещественных чисел. Дополнительно

перегрузить следующие операции: * умножение матриц;

Page 39: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

* умножение матрицы на число; * умножение числа на матрицу. 19. Двухмерный массив (матрица) вещественных чисел. Дополнительно

перегрузить следующие операции: - разность матриц; - вычесть из матрицы число;

= = проверка матриц на равенство. 20. Двухмерный массив (матрица) вещественных чисел. Дополнительно

перегрузить следующие операции: = присвоить всем элементам матрицы значение (matr=double); + сложение матриц; + сложить матрицу с числом (matr+double). 21. Двухмерный массив (матрица) вещественных чисел. Дополнительно

перегрузить следующие операции: = = проверка матриц на равенство; ++ транспонировать матрицу. -- вычесть из всех элементов матрицы единицу.

Лабораторная работа № 3. Перегрузка операций

1. Постановка задачи

Написать программу, в которой создаются и разрушаются объекты, определенного пользователем класса. В данном классе реализована перегрузка операторов, указанных в задании. Все исходные величины должны вводиться из файла (in.txt), а результат должен быть записан в результирующий файл (out.txt). Формат файла необходимо выбрать самостоятельно (например, текстовый фал in.txt, в котором необходимые значения перечислены через запятую). Исходный файл можно сформировать и заполнить вручную с помощью внешнего текстового редактора.

2. Порядок выполнения работы

1. Определить пользовательский класс в соответствии с вариантом задания (смотри приложение).

2. Определить в классе следующие конструкторы: без параметров, с параметрами, копирования.

3. Определить в классе деструктор. 4. Определить в классе компоненты-функции для просмотра и установки полей

данных. 5. В демонстрационной программе показать использование перегруженных

операторов. Каждый вызов перегруженного оператора должен сопровождаться выдачей соответствующего сообщения на экран.

6. В демонстрационной программе должны создаваться и разрушаться объекты пользовательского класса и каждый вызов конструктора и деструктора сопровождается выдачей соответствующего сообщения (какой объект какой конструктор или деструктор вызвал).

7. Лабораторная работа должна состоять из трёх файлов: * заголовочный h-файл с определением класса, * cpp-файл с реализацией класса, * сpp-файл демонстрационной программы.

Page 40: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

3. Варианты заданий

1. Определить класс, в котором описать указатель на целое число. Реализовать в этом классе конструктор и деструктор, который, соответственно, выделяет и освобождает память для указателя. Перегрузить для данного класса операторы потокового ввода вывода (<<, >>) и X++, >, <. Продемонстрировать работу объектов класса.

2. Определить класс, в котором описать массив элементов. Реализовать в этом классе конструктор, который заполняет массив случайными значениями. Перегрузить для данного класса операторы потокового ввода вывода (<<, >>) и операторы ++X, +, -.Продемонстрировать работу объектов класса.

3. Определить класс, в котором описать С-строку из 25 элементов. Добавить в класс конструктор по умолчанию и конструктор копирования. Перегрузить для данного класса операторы потокового ввода вывода (<<, >>) и операторы ==, +, -. Продемонстрировать работу объектов класса.

4. Определить класс, в котором описать целое беззнаковое поле. Для объектов данного класса перегрузить операцию сложения и сравнения. Также перегрузить для данного класса операторы потокового ввода вывода (<<, >>) и операторы X++, ++X, -. Продемонстрировать работу объектов класса.

5. Определить класс, в котором описать два целых числа. Добавить в класс конструктор и деструктор. Конструктор присваивает полям класса случайные числа от 0 до 10. Деструктор обнуляет эти числа и выводит сообщение на экран о том, что объект «умер». Перегрузить для данного класса операторы потокового ввода вывода (<<, >>) и операторы ==, X--, <. Продемонстрировать работу объектов класса.

6. Определить класс, в котором описать С-строку из 100 символов. Добавить в класс конструктор по умолчанию, который должен инициализировать строку случайными значениями. Перегрузить для данного класса операторы потокового ввода вывода (<<, >>) и операторы ==, <, >

7. Определить класс, в котором описать два поля целого типа. Конструктор по умолчанию должен инициализировать поля случайными значениями. Определить дружественный (friend) оператор, который позволяет складывать и вычитать целые числа и объекты данного класса. Также перегрузить для данного класса операторы потокового ввода вывода (<<, >>).

8. Определить класс, в котором описаны поля, представляющие дату (день, месяц, год). Реализовать в классе конструктор по умолчанию, который инициализирует дату случайными значениями, а также конструктор, который запрашивает дату с клавиатуры. Перегрузить для данного класса операцию +.

9. Создать класс, состоящий из двух целых чисел, конструктора и деструктора. Конструктор присваивает этим числам случайное число от -10 до 10. Деструктор обнуляет эти числа. Для экземпляров этого класса перегрузить операцию сложения и ввода и вывода в поток (<<, >>)

10. Создать класс, состоящий из строки длинной 100 символов и двух функций. Первая функция – подсчет количества пробелов в строке, вторая – заменяет в строке символы «а» на «о». Реализовать в классе перегруженные операторы ввода-вывода в поток (<<, >>).

11. Создать класс, состоящий из строки длинной 50 символов, конструктора и деструктора. Конструктор присваивает строке произвольное значение. Деструктор обнуляет строку. Перегрузить операцию сложения двух экземпляров этого класса, а также операции ввода-вывода в поток (<<, >>).

Page 41: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

12. Создать класс, состоящий из двух полей целого типа и двух функций. Первая функция – заменяет меньшее из чисел на их сумму, вторая – заменяет большее на их разность. Перегрузить операцию сложения двух экземпляров этого класса, а также операции ввода-вывода в поток (<<, >>).

13. Создать класс, состоящий из двух полей целого типа, функции и перегруженного оператора +. Функция – вычисляет разницу этих числе, Оператор возвращает объект данного класса, где первое число равно сумме первых чисел складываемых объектов, второе число равно сумме вторых чисел складываемых объектов. Перегрузить операцию сложения двух экземпляров этого класса, а также операции ввода-вывода в поток (<<, >>).

14. Написать перегруженный оператор сравнения (==) и оператор вывода (<<) для класса, состоящего из двух чисел. Конструктор по умолчанию в классе инициализирует эти два числа, значениями, вводимыми с клавиатуры. Также перегрузить оператор сложения для экземпляров этого класса.

15. Создать класс, состоящий из двух массивов целых чисел и двух функций. Первая функция – выводит минимальный из максимальных элементов массивов, вторая – инициализирует массивы случайными числами. Для данного класса необходимо перегрузить оператор присваивания (=) и оператор сравнения (==).

16. Создать класс «римские числа» (I, II, III, IV, V, … X). Конструктор по умолчанию определяет случайное значение. Для экземпляров этого класса определит перегруженные операторы ввода-вывода (<<, >>), а также арифметические операции.

17. Создать класс «матрица». Конструктор заполняет матрицу последовательными значениями от -10 с шагом 1.5. Реализовать в классе функции: транспонирование, поиск минимального элемента, поиск максимального элемента, умножение на число. Перегрузить оператор вывода в поток (<<).

18. Создать класс матрица. Конструктор заполняет матрицу случайными значениями. Реализовать в классе функции: поиск суммы, поиск количества отрицательных элементов, умножение на число. Перегрузить оператор вывода в поток (<<)

19. Создать класс вектор. Конструктор по умолчанию создает случайны единичный вектор. Определить для класса перегруженные функции ввода и вывода (<<, >>) и сложения векторов, а также создать функции «поворот вектора на угол A», «отображение относительно заданной оси координат»

20. Создать класс и описать в нем указанные поля. В классе определить конструктор, в котором инициализировать поля случайными, но разумными данными. В классе определить деструктор, который будет удалять из памяти все динамически созданные в класс переменные. Также перегрузить операторы сравнения (==), присваивания (=) и вывода в поток (<<): СТУДЕНТ: имя – char*;курс – int; пол – int(bool)

21. Создать класс и описать в нем указанные поля. В классе определить конструктор, в котором инициализировать поля случайными, но разумными данными. В классе определить деструктор, который будет удалять из памяти все динамически созданные в класс переменные. Также перегрузить операторы сравнения (==), присваивания (=) и вывода в поток (<<): ИЗДЕЛИЕ: имя – char*; шифр – char*; количество – int

22. Создать класс и описать в нем указанные поля. В классе определить конструктор, в котором инициализировать поля случайными, но разумными данными. В классе определить деструктор, который будет удалять из памяти все динамически созданные в класс переменные. Также перегрузить операторы сравнения (==), присваивания (=) и вывода в поток (<<): АДРЕС: имя – char*; улица – char*; номер дома – int

Page 42: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

23. Создать класс и описать в нем указанные поля. В классе определить конструктор, в котором инициализировать поля случайными, но разумными данными. В классе определить деструктор, который будет удалять из памяти все динамически созданные в класс переменные. Также перегрузить операторы сравнения (==), присваивания (=) и вывода в поток (<<): ЦЕХ: имя – char*; начальник – char*; количество работающих – int

24. Создать класс и описать в нем указанные поля. В классе определить конструктор, в котором инициализировать поля случайными, но разумными данными. В классе определить деструктор, который будет удалять из памяти все динамически созданные в класс переменные. Также перегрузить операторы сравнения (==), присваивания (=) и вывода в поток (<<): СТРАНА: имя – char*; форма правления – char*; площадь – float

25. Создать класс и описать в нем указанные поля. В классе определить конструктор, в котором инициализировать поля случайными, но разумными данными. В классе определить деструктор, который будет удалять из памяти все динамически созданные в класс переменные. Также перегрузить операторы сравнения (==), присваивания (=) и вывода в поток (<<): СЛУЖАЩИЙ: имя – char*; возраст – int; рабочий стаж – int

26. Создать класс и описать в нем указанные поля. В классе определить конструктор, в котором инициализировать поля случайными, но разумными данными. В классе определить деструктор, который будет удалять из памяти все динамически созданные в класс переменные. Также перегрузить операторы сравнения (==), присваивания (=) и вывода в поток (<<): БИБЛИОТЕКА: имя – char*; автор – char*; стоимость – float

27. Создать класс и описать в нем указанные поля. В классе определить конструктор, в котором инициализировать поля случайными, но разумными данными. В классе определить деструктор, который будет удалять из памяти все динамически созданные в класс переменные. Также перегрузить операторы сравнения (==), присваивания (=) и вывода в поток (<<): ТОВАР: имя – char*; количество – int; стоимость – float

28. Создать класс и описать в нем указанные поля. В классе определить конструктор, в котором инициализировать поля случайными, но разумными данными. В классе определить деструктор, который будет удалять из памяти все динамически созданные в класс переменные. Также перегрузить операторы сравнения (==), присваивания (=) и вывода в поток (<<): ПЕРСОНА: имя – char*; возраст – int; пол – int(bool)

29. Создать класс и описать в нем указанные поля. В классе определить конструктор, в котором инициализировать поля случайными, но разумными данными. В классе определить деструктор, который будет удалять из памяти все динамически созданные в класс переменные. Также перегрузить операторы сравнения (==), присваивания (=) и вывода в поток (<<): ЖИВОТНОЕ: имя – char*; класс – char*; средний вес – int

30. Создать класс и описать в нем указанные поля. В классе определить конструктор, в котором инициализировать поля случайными, но разумными данными. В классе определить деструктор, который будет удалять из памяти все динамически созданные в класс переменные. Также перегрузить операторы сравнения (==), присваивания (=) и вывода в поток (<<): КАДРЫ: имя – char*; номер цеха – int; разряд – int

31. Создать класс и описать в нем указанные поля. В классе определить конструктор, в котором инициализировать поля случайными, но разумными данными. В классе определить деструктор, который будет удалять из памяти все динамически созданные в класс переменные. Также перегрузить операторы сравнения (==), присваивания (=) и вывода в поток (<<): ЭКЗАМЕН: имя студента – char*; дата – int; оценка – int

32. Создать класс и описать в нем указанные поля. В классе определить конструктор, в котором инициализировать поля случайными, но разумными данными. В классе

Page 43: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

определить деструктор, который будет удалять из памяти все динамически созданные в класс переменные. Также перегрузить операторы сравнения (==), присваивания (=) и вывода в поток (<<): КВИТАНЦИЯ: номер – int; дата – int; сумма – float

33. Создать класс и описать в нем указанные поля. В классе определить конструктор, в котором инициализировать поля случайными, но разумными данными. В классе определить деструктор, который будет удалять из памяти все динамически созданные в класс переменные. Также перегрузить операторы сравнения (==), присваивания (=) и вывода в поток (<<): АВТОМОБИЛЬ: марка – char*; мощность – int; стоимость – float

34. Создать класс и описать в нем указанные поля. В классе определить конструктор, в котором инициализировать поля случайными, но разумными данными. В классе определить деструктор, который будет удалять из памяти все динамически созданные в класс переменные. Также перегрузить операторы сравнения (==), присваивания (=) и вывода в поток (<<): КОРАБЛЬ: имя – char*; водоизмещение – int; тип – char*

35. Создать класс и описать в нем указанные поля. В классе определить конструктор, в котором инициализировать поля случайными, но разумными данными. В классе определить деструктор, который будет удалять из памяти все динамически созданные в класс переменные. Также перегрузить операторы сравнения (==), присваивания (=) и вывода в поток (<<): ПРОЦЕССОР: название – char*; частота – float; цена – float

36. Создать класс и описать в нем указанные поля. В классе определить конструктор, в котором инициализировать поля случайными, но разумными данными. В классе определить деструктор, который будет удалять из памяти все динамически созданные в класс переменные. Также перегрузить операторы сравнения (==), присваивания (=) и вывода в поток (<<): ПРЕЗИДЕНТ: имя – char*; страна – char*; поддержка населения % – float

37. Создать класс и описать в нем указанные поля. В классе определить конструктор, в котором инициализировать поля случайными, но разумными данными. В классе определить деструктор, который будет удалять из памяти все динамически созданные в класс переменные. Также перегрузить операторы сравнения (==), присваивания (=) и вывода в поток (<<): ВЫБОРЫ: учреждение – char*; кандидаты – char*; расходы – int

38. Создать класс и описать в нем указанные поля. В классе определить конструктор, в котором инициализировать поля случайными, но разумными данными. В классе определить деструктор, который будет удалять из памяти все динамически созданные в класс переменные. Также перегрузить операторы сравнения (==), присваивания (=) и вывода в поток (<<): УЧЕНЫЙ: имя – char*; наука – char*; годы открытий – short[];

39. Создать класс и описать в нем указанные поля. В классе определить конструктор, в котором инициализировать поля случайными, но разумными данными. В классе определить деструктор, который будет удалять из памяти все динамически созданные в класс переменные. Также перегрузить операторы сравнения (==), присваивания (=) и вывода в поток (<<):СТАТЬЯ: название – char*; количество строк – short; автор – char*

40. Создать класс и описать в нем указанные поля. В классе определить конструктор, в котором инициализировать поля случайными, но разумными данными. В классе определить деструктор, который будет удалять из памяти все динамически созданные в класс переменные. Также перегрузить операторы сравнения (==), присваивания (=) и вывода в поток (<<):ПРАЗДНИК: название – char*; дата – date; меню – char*

41. Создать класс и описать в нем указанные поля. В классе определить конструктор, в котором инициализировать поля случайными, но разумными данными. В классе определить деструктор, который будет удалять из памяти все динамически созданные

Page 44: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

в класс переменные. Также перегрузить операторы сравнения (==), присваивания (=) и вывода в поток (<<):КОНТРОЛЬНАЯ: предмет – char*; сложность% -short; дата – date

42. Создать класс и описать в нем указанные поля. В классе определить конструктор, в котором инициализировать поля случайными, но разумными данными. В классе определить деструктор, который будет удалять из памяти все динамически созданные в класс переменные. Также перегрузить операторы сравнения (==), присваивания (=) и вывода в поток (<<): РАБОЧИЙ: имя – char*; возраст – int; рабочий стаж – int

Лабораторная работа № 4. Наследование и виртуальные функции

Основное содержание работы.

Написать программу, в которой создается иерархия классов. Включить полиморфные объекты в связанный список, используя статические компоненты класса. Показать использование виртуальных функций.

Порядок выполнения работы.

1. Определить иерархию классов (в соответствии с вариантом). 2. Определить в классе статическую компоненту - указатель на начало связанного списка

объектов и статическую функцию для просмотра списка. 3. Реализовать классы. 4. Написать демонстрационную программу, в которой создаются объекты различных

классов и помещаются в список, после чего список просматривается.

Методические указания.

1. Для определения иерархии классов связать отношением наследования классы, приведенные в задании. Из перечисленных классов выбрать один, который будет стоять во главе иерархии. Это абстрактный класс.

2. Определить в классах все необходимые конструкторы и деструктор. 3. Компонентные данные класса специфицировать как protected. 4. Пример определения статических компонентов:

static person* begin; // указатель на начало списка static void print(void); // просмотр списка

5. Статическую компоненту-данное инициализировать вне определения класса, в глобальной области.

6. Для добавления объекта в список предусмотреть метод класса, т.е. объект сам добавляет себя в список. Например, a.Add() объект a добавляет себя в список.

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

8. Список просматривать путем вызова виртуального метода Show каждого объекта. 9. Статический метод просмотра списка вызывать не через объект, а через класс. 10. Определение классов, их реализацию, демонстрационную программу поместить в

отдельные файлы.

Варианты заданий.

Перечень классов: 1. студент, преподаватель, персона, завкафедрой; 2. служащий, персона, рабочий, инженер; 3. рабочий, кадры, инженер, администрация; 4. деталь, механизм, изделие, узел;

Page 45: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

5. организация, страховая компания, судостроительная компания, завод; 6. журнал, книга, печатное издание, учебник; 7. тест, экзамен, выпускной экзамен, испытание; 8. место, область, город, мегаполис; 9. игрушка, продукт, товар, молочный продукт; 10. квитанция, накладная, документ, чек; 11. автомобиль, поезд, транспортное средство, экспресс; 12. двигатель, двигатель внутреннего сгорания, дизель, турбореактивный двигатель; 13. республика, монархия, королевство, государство; 14. млекопитающие, парнокопытные, птицы, животное; 15. корабль, пароход, парусник, корвет. 16. яблоко, фрукт, банан, персик 17. доктор, кандидат, звание, доцент 18. ботинки, обувь, тапочки, сапоги

Лабораторная работа № 5. Иерархия объектов и группа. Итераторы.

Основное содержание работы.

Получить практические навыки создания объектов-групп и использования методов-итераторов.

Основные теоретические сведения.

a. Группа.

Группа это объект, в который включены другие объекты. Объекты, входящие в группу, называются элементами группы. Элементы группы, в свою очередь, могут быть группой.

Примеры групп: 1. Окно в интерактивной программе, которое владеет такими элементами, как поля ввода

и редактирования данных, кнопки, списки выбора, диалоговые окна и т.д. Примерами таких окон являются объекты классов, порожденных от абстрактного класса TGroup( TDeskTop, TWindow, TDialog) в иерархии классов библиотеки Turbo Vision, и объекты классов, порожденных от TWindowObject в иерархии классов библиотеки OWL.

2. Агрегат, состоящий из более мелких узлов. 3. Огород, состоящий из растений, системы полива и плана выращивания. 4. Некая организационная структура (например, ФАКУЛЬТЕТ, КАФЕДРА,

СТУДЕНЧЕСКАЯ ГРУППА). Мы понимаем группу как класс, который не только хранит объекты других

классов, но и обладает собственными свойствами, не вытекающими из свойств его элементов.

Группа дает второй вид иерархии (первый вид иерархия классов, построенная на основе наследования) иерархию объектов (иерархию типа целое/часть), построенную на основе агрегации.

Реализовать группу можно несколькими способами: 1. Класс “группа” содержит поля данных объектного типа. Таким образом, объект

“группа” в качестве данных содержит либо непосредственно свои элементы, либо указатели на них

class TWindowDialog: public TGroup { protected: TInputLine input1; TEdit edit1;

Page 46: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

TButton button1; /*другие члены класса*/ }; Такой способ реализации группы используется в C++Builder. 2. Группа содержит член-данное last типа TObject*, который указывает на начало

связанного списка объектов, включенных в группу. В этом случае объекты должны иметь поле next типа TObject*, указывающее на следующий элемент в списке.Такой способ используется при реализации групп в Turbo Vision.

3. Создается связанный список структур типа TItem: struct TItem {TObject* item; TItem* next;}; Поле item указывает на объект, включенный в группу. Группа содержит поле last

типа TItem *, которое указывает на начало связанного списка структур типа TItem. Если необходим доступ элементов группы к ее полям и методам, объект типа

TObject должен иметь поле owner типа TGroup*, которое указывает на собственника этого элемента.

Методы группы. Имеется два метода, которые необходимы для функционирования группы: 1) void Insert(TObject* p); Вставляет элемент в группу. 2) void Show(); Позволяет просмотреть группу. Кроме этого группа может содержать следующие методы: 1) int Empty(); Показывает, есть ли хотя бы один элемент в группе. 2) TObject* Delete(TObject* p); Удаляет элемент из группы, но сохраняет его в памяти. 3) void DelDisp(TObject* p); Удаляет элемент из группы и из памяти.

b. Иерархия объектов.

Иерархия классов есть иерархия по принципу наследования, т.е. типа “это есть разновидность того”. Например, “рабочий есть разновидность персоны”, “автомобиль” есть разновидность “транспортного средства”. В отличие от этого иерархия объектов это иерархия по принципу вхождения, т.е. типа “это есть часть того”. Например, “установка часть завода”, “двигатель” часть “автомобиля”. Таким образом, объекты нижнего уровня иерархии включаются в объекты более высокого уровня, которые являются для них группой.

c. Итератор.

Итераторы позволяют выполнять некоторые действия для каждого элемента определенного набора данных.

For all элементов набора { действия} Такой цикл мог бы быть выполнен для всего набора, например, чтобы напечатать

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

Page 47: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

Мы будем рассматривать итераторы как специальные методы класса-группы, позволяющие выполнять некоторые действия для всех объектов, включенных в группу. Примером итератора является метод Show.

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

Определим тип указателя на функцию следующим образом:

typedef void(*PF)(TObject*,< дополнительные параметры>);

Функция имеет обязательный параметр типа TObject или TObject*, через который ей передается объект, для которого необходимо выполнить определенные действия.

Метод-итератор объявляется следующим образом: void TGroup::ForEach(PF action,< дополнительные параметры >);

где action единственный обязательный параметр-указатель на функцию, которая

вызывается для каждого элемента группы; дополнительные параметры передаваемые вызываемой функции параметры.

Затем определяется указатель на функцию и инициализируется передаваемой

итератору функцией.

PF pf=myfunc; Тогда итератор будет вызываться, например, для дополнительного параметра типа

int, так: gr.ForEach(pf,25);

Здесь gr объект-группа.

d. Динамическая идентификация типов.

Динамическая идентификация типа характерна для языков, в которых поддерживается полиморфизм. В этих языках возможны ситуации, в которых тип объекта на этапе компиляции неизвестен.

В С++ полиморфизм поддерживается через иерархии классов, виртуальные функции и указатели базовых классов. При этом указатель базового класса может использоваться либо для указания на объект базового класса, либо для указания на объект любого класса, производного от этого базового.

Пусть группа содержит объекты различных классов и необходимо выполнить некоторые действия только для объектов определенного класса. Тогда в итераторе мы должны распознавать тип очередного объекта.

В стандарт языка С++ включены средства RTTI (Run-Time Type Idendification) динамическая идентификация типов. Эти средства реализованы в последних системах Borland C++ (версий 4.0 и выше).

Информацию о типе объекта получают с помощью оператора typeid, определение которого содержит заголовочный файл <typeinfo.h>.

Имеется две формы оператора typeid: typeid (объект) typeid (имя_типа) Оператор typeid возвращает ссылку на объект типа type_info. В классе type_info перегруженные операции == и != обеспечивают сравнение

типов.

Page 48: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

Функция name () возвращает указатель на имя типа. Имеется одно ограничение. Оператор typeid работает корректно только с

объектами, у которых определены виртуальные функции. Большинство объектов имеют виртуальные функции, хотя бы потому, что обычно деструктор является виртуальным для устранения потенциальных проблем с производными классами. Когда оператор typeid применяют к неполиморфному классу (в классе нет виртуальной функции), получают указатель или ссылку базового типа.

Примеры. 1. #include<iostream.h> #include<typeinfo.h> class Base{ virtual void f(){}; //… }; class Derived: public Base{ //… }; void main(){ int i; Base ob,*p; Derived ob1; cout<<typeid(i).name(); //Выводится int p=&ob1; cout<<typeid(*p).name(); // Выводится Derived } 2. //начало см. выше void WhatType(Base& ob){ cout<< typeid(ob).name()<<endl; } void main(){ Base ob; Derived ob1; WhatType(ob); //Выводится Base WhatType(ob1); //Выводится Derived } 3. //начало см. выше void main(){ Base *p; Derived ob; p=&ob; if(typeid(*p)==typeid(Derived)) cout<<“p указывает на объект типа Derived”; … } Если при обращении typeid(*p), p=NULL, то возбуждается исключительная

ситуация bad_typeid

Page 49: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

Порядок выполнения работы.

1. Дополнить иерархию классов лабораторной работы № 4 классами “группа”. Например, для предметной области ФАКУЛЬТЕТ можно предложить классы

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

2. Написать для класса-группы метод-итератор. 3. Написать процедуру или функцию, которая выполняется для всех объектов, входящих в

группу (смотри Варианты запросов). 4. Написать демонстрационную программу, в которой создаются, показываются и

разрушаются объекты-группы, а также демонстрируется использование итератора.

Методические указания.

1.Класс-группа должен соответствовать иерархии классов лабораторной работы № 5, т.е. объекты этих классов должны входить в группу. Например, для варианта 1 может быть предложена следующая иерархия классов:

При этом иерархия объектов будет иметь следующий вид:

2. Для включения объектов в группу следует использовать третий способ (через связанный список структур типа TItem).

3. Пример определения добавленных абстрактных классов: class TObject { public: virtual void Show()=0;}; class TDepartment:public TObject // абстрактный класс-группа { protected: char name[20]; // наименование

Факультет

Студ_ группа_1

Студ_ группа_N

Студенты Студенты

Кафедра_1 Кафедра_N

Преподаватели

Завкафедрой Преподаватели

Завкафедрой

Tobject (абстр. класс)

Персона (абстр. класс)

Подразделение (абстрактная

группа)

Студент Завкафедрой Кафедра Факультет Преподаватель

Студенческая группа

Page 50: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

TPerson* head; // руководитель TItem* last; // указатель на начало связанного списка структур TItem public: TDepartment(char*,TPerson*); TDepardment(TDepartment&); ~ TDepartment(); char* GetName(); TPerson* GetHead(); void SetName(char* NAME); void SetHead(TPerson* p); void Insert(TObject* p); virtual void Show()=0; };

4. Иерархия объектов создается следующим образом (на примере ФАКУЛЬТЕТА):

а) создается пустой ФАКУЛЬТЕТ, б) создается пустая КАФЕДРА, в) создаются ПРЕПОДАВАТЕЛИ и включаются в КАФЕДРУ, г) КАФЕДРА включается в ФАКУЛЬТЕТ, д) тоже повторяется для другой кафедры, е) создается пустая СТУДЕНЧЕСКАЯ ГРУППА, ж) создаются СТУДЕНТЫ и включаются в СТУДЕНЧЕСКУЮ ГРУППУ, з) СТУДЕНЧЕСКАЯ ГРУППА включается в ФАКУЛЬТЕТ, и) тоже повторяется для другой студенческой группы.

5. Удаляется ФАКУЛЬТЕТ (при вызове деструктора) в обратном порядке. 6. Метод-итератор определяется в неабстрактных классах-группах на основе выбранных

запросов. Например, для класса TStudentGroup может быть предложен итератор void

TStudentGroup::ForEach(PF action, float parametr); где action указатель на функцию, которая должна быть выполнена для всех объектов, включенных в группу (в данном случае для всех СТУДЕНТОВ), parametr-передаваемая процедуре дополнительная информация.

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

void MyProc(TObject* p,float rate) { if (((TStudent*)p) ->GetGrade()>=rate) cout<<(((TStudent*)p) ->GetName()); }

7. Студент определяет передаваемую итератору функции на основе запросов, которые должны быть выполнены вызовом итератора. Варианты запросов приведены в приложении.

Варианты запросов.

1. Имена всех лиц мужского (женского) пола. 2. Имена студентов указанного курса. 3. Имена и должность преподавателей указанной кафедры. 4. Имена служащих со стажем не менее заданного. 5. Имена служащих заданной профессии. 6. Имена рабочих заданного цеха. 7. Имена рабочих заданной профессии. 8. Имена студентов, сдавших все (заданный) экзамены на отлично (хорошо и

отлично). 9. Имена студентов, не сдавших все (хотя бы один) экзамен. 10. Имена всех монархов на заданном континенте.

Page 51: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

11. Наименование всех деталей (узлов), входящих в заданный узел (механизм). 12. Наименование всех книг в библиотеке (магазине), вышедших не ранее

указанного года. 13. Названия всех городов заданной области. 14. Наименование всех товаров в заданном отделе магазина. 15. Количество мужчин (женщин). 16. Количество студентов на указанном курсе. 17. Количество служащих со стажем не менее заданного. 18. Количество рабочих заданной профессии. 19. Количество инженеров в заданном подразделении. 20. Количество товара заданного наименования. 21. Количество студентов, сдавших все экзамены на отлично. 22. Количество студентов, не сдавших хотя бы один экзамен. 23. Количество деталей (узлов), входящих в заданный узел (механизм). 24. Количество указанного транспортного средства в автопарке (на автостоянке). 25. Количество пассажиров во всех вагонах экспресса. 26. Суммарная стоимость товара заданного наименования. 27. Средний балл за сессию заданного студента. 28. Средний балл по предмету для всех студентов. 29. Суммарное количество учебников в библиотеке (магазине). 30. Суммарное количество жителей всех городов в области. 31. Суммарная стоимость продукции заданного наименования по всем накладным. 32. Средняя мощность всех (заданного типа) транспортных средств в организации. 33. Средняя мощность всех дизелей, обслуживаемых заданной фирмой. 34. Средний вес животных заданного вида в зоопарке. 35. Среднее водоизмещение всех парусников на верфи (в порту).

12. ПЕРЕЧЕНЬ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ, ИСПОЛЬЗУЕМЫХ ПРИ ОСУЩЕСТВЛЕНИИ ОБРАЗОВАТЕЛЬНОГО ПРОЦЕССА ПО ДИСЦИПЛИНЕ (МОДУЛЮ), ВКЛЮЧАЯ ПЕРЕЧЕНЬ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ И ИНФОРМАЦИОННЫХ СПРАВОЧНЫХ СИСТЕМ (ПРИ НЕОБХОДИМОСТИ)

среда программирования: Borland C++; среда программирования: dev-c++; среда программирования: Code::Blocks; среда программирования: MS VisualStudio.

Информационно-поисковые и справочные: встроенные в среды разработки

программ справочные подсистемы и онлайн справочные системы в интернете.

Page 52: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

13. ОПИСАНИЕ МАТЕРИАЛЬНО-ТЕХНИЧЕСКОЙ БАЗЫ, НЕОБХОДИМОЙ ДЛЯ ОСУЩЕСТВЛЕНИЯ ОБРАЗОВАТЕЛЬНОГО ПРОЦЕССА ПО ДИСЦИПЛИНЕ (МОДУЛЮ) № п\п

Наименование оборудованных учебных кабинетов, объектов для проведения занятий с перечнем основного оборудования

Фактический адрес учебных кабинетов и объектов, номер ауд.

1 Учебная аудитория для проведения занятий лекционного типа, занятий семинарского типа, курсового проектирования

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

Мебель аудиторная (столы, стулья, доска аудиторная),

мультимедийное оборудование (проектор, экран)

184209, Мурманская область, город Апатиты, улица Лесная, дом 29, здание Учебного корпуса

№ 7, ауд. 307

2 Мультимедийная лаборатория информационных технологий

Проектор мультимедийный NEC M350XS – 1 шт., доска интерактивная IQ Board PS S100B – 1 шт.

11 ПЭВМ: Моноблок Acer Aspire Z3771: материнская плата Acer Aspire Z3771, процессор DualCore Intel Core i3-2120 3300 MHz, ОЗУ DDR3-1333 4096Мб PC3-10600, ЖД WDC WD5000AAKX-221CA1 (500 ГБ, 7200 RPM, SATA-III), 3D-акселератор nVIDIA GeForce GT

520, DVD-ROM Slimtype DVD A DS8A8SH Клавиатура беспроводная – 11 шт., мышь беспроводная – 11 шт.

184209, Мурманская область, город Апатиты, улица Лесная, дом 29, здание Учебного корпуса

№ 7, ауд. 302

3 Лаборатория информационных технологий

Мультимедийный проектор Toshiba TDP-TW95 – 1 шт., экран проекционный матовый – 1 шт.

11 ПЭВМ: системный блок DEPONeos: материнская плата MSI 945GCM7 (MS-7507), процессор DualCoreIntelPentium 2217 MHz, ОЗУ DDR2 667 2048 МБ , WDC WD1600AAJS-00WAA0 (160 ГБ,

7200 RPM, SATA-II), Видеоадаптер NVIDIA GeForce 8500 GT (512 МБ).

Монитор Acer AL1917 [19" LCD] – 11 шт., клавиатура – 11 шт., мышь – 11 шт., наушники с микрофоном DialogM-780HV – 1 шт.

184209, Мурманская область, город Апатиты, улица Лесная, дом 29, здание Учебного корпуса

№ 7, ЛИТ 9

4 Помещение для самостоятельной работы студентов

Мультимедийный проектор Toshiba TDP-TW95 – 1 шт., экран проекционный матовый – 1 шт.

11 ПЭВМ: системный блок DEPONeos: материнская плата MSI 945GCM7 (MS-7507), процессор DualCoreIntelPentium 2217 MHz, ОЗУ DDR2 667 2048 МБ , WDC WD1600AAJS-00WAA0 (160 ГБ, 7200 RPM, SATA-II), видеоадаптер NVIDIA GeForce 8500 GT (512

МБ) Монитор Acer AL1917 [19" LCD] – 11 шт., клавиатура – 11 шт.,

мышь – 11 шт.

184209, Мурманская область, город Апатиты, улица Лесная, дом 29, здание Учебного корпуса

№ 7, ЛИТ 8

Page 53: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

14. ТЕХНОЛОГИЧЕСКАЯ КАРТА ДИСЦИПЛИНЫ ОСНОВНАЯ ОБРАЗОВАТЕЛЬНАЯ ПРОГРАММА

09.03.02 Информационные системы и технологии, профиль Общий

(код, направление, профиль)

ТЕХНОЛОГИЧЕСКАЯ КАРТА

Шифр дисциплины по РУП Б1.Б.20 Дисциплина Программирование Курс 2 семестр 3 Кафедра информатики, вычислительной техники и информационной безопасности

Ф.И.О. преподавателя, звание, должность Федоров Андрей Михайлович, канд. техн. наук., доцент

Общ. трудоемкостьчас/ЗЕТ 108/3 Кол-во семестров 2 Интерактивные формыобщ./тек. сем. 12/12 ЛКобщ./тек. сем. 32/32 ПР/СМобщ./тек. сем. -/- ЛБобщ./тек. сем. 32/32 Форма контроля Экзамен

Содержание задания Количество

мероприятий

Максимальное количество

баллов Срок предоставления

Вводный блок Не предусмотрен

Основной блок Экспресс-опрос (тест) 16 24

В начале каждой лекции (проверка знаний

предыдущей темы) Решение задач (в виде программы)

4 36 По согласованию с

преподавателем Всего: 60

Экзамен Вопрос 1 5 В сроки сессии Вопрос 2 5 В сроки сессии Решение задачи 30 В сроки сессии

Всего: 40 Итого: 100

Дополнительный блок

Page 54: РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Б1.Б.20 …€¦ · переименование типов; абстрактные типы данных:

ТЕХНОЛОГИЧЕСКАЯ КАРТА

Шифр дисциплины по РУП Б1.Б.20 Дисциплина Программирование Курс 2 семестр 4 Кафедра информатики, вычислительной техники и информационной безопасности

Ф.И.О. преподавателя, звание, должность Федоров Андрей Михайлович, канд. техн. наук., доцент

Общ. трудоемкостьчас/ЗЕТ 108/3 Кол-во семестров 1 Интерактивные формыобщ./тек. сем. 12/12 ЛКобщ./тек. сем. 34/34 ПР/СМобщ./тек. сем. -/- ЛБобщ./тек. сем. 34/34 Форма контроля Экзамен

Содержание задания Количество

мероприятий

Максимальное количество

баллов Срок предоставления

Вводный блок Не предусмотрен

Основной блок Экспресс-опрос (тест) 16 24

В начале каждой лекции (проверка знаний

предыдущей темы) Решение задач (в виде программы)

5 36 По согласованию с

преподавателем Всего: 60

Экзамен Вопрос 1 5 В сроки сессии Вопрос 2 5 В сроки сессии Решение задачи 30 В сроки сессии

Всего: 40 Итого: 100

Дополнительный блок

Шкала оценивая в рамках балльно-рейтинговой системы МАГУ: «2» - 60 баллов и менее, «3» - 61-80 баллов, «4» - 81-90 баллов, «5» - 91-100 баллов.

15. ИНЫЕ СВЕДЕНИЯ И МАТЕРИАЛЫ НА УСМОТРЕНИЕ ВЕДУЩЕЙ КАФЕДРЫ

Не предусмотрено. 16. ОБЕСПЕЧЕНИЕ ОБРАЗОВАНИЯ ДЛЯ ЛИЦ С ОВЗ Для обеспечения образования инвалидов и лиц с ограниченными возможностями здоровья реализация дисциплины Б1.Б.20 Программирование может осуществляться в адаптированном виде, с учетом специфики освоения и дидактических требований, исходя из индивидуальных возможностей и по личному заявлению обучающегося.