1. Требования к курсу



Скачать 299.48 Kb.
Дата30.11.2012
Размер299.48 Kb.
ТипДокументы





1.Требования к курсу


В связи с тем, что предусмотренное стандартом содержание дисциплины «Информатика» частично излагается в дисциплине «Концептуальные основы информатики» (выделено курсивом), курс в значительной мере соответствует дисциплине «Программирование на языке высокого уровня» стандарта подготовки бакалавров направления 230100 «Информатика и ВТ» (260 часов) – как по содержанию, так и по объему.

2. Принципы построения курса


Входной уровень. Дисциплина базируется на школьном курсе информатики. Однако практика показывает, что студенты обладают в этом направлении знаниями в основном на уровне представлений, либо фрагментарными сведениями (в основном, учатся «давить кнопки»). Они, как правило, не имеют целостного представления о языке программирования, не имеют понятия о технологии разработки программ (изучают предмет по принципу «вот вам программа, и вот она работает»). Дополнительная сложность – недостаточный уровень математической подготовки: отсутствуют навыки формально-логического мышления при решении сложных задач и составления предварительного плана действий, хотя бы на бумаге. Факт: большинство поступающих не имеют представления о том, что такое процедура (функция) и что такое ее вызов, хотя это основа принципа модульного проектирования программы.

Особенности курса. Основные понятия информатики излагаются исключительно через язык программирования, который является не столько предметом изучения, сколько инструментом решения задач, возникающих при изучении курса «Информатика». Такой инструментальный подход позволяет избежать схоластического подхода и сформировать необходимые представления и понятия, отталкиваясь и абстрагируясь от практики.

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

Модуль 1. Базовый уровень программирования («Программист начинающий»). Основная задача – сформировать осознанное отношение к процессу программирования, которое никоим образом не сводится к знанию языка. Главная проблема – непонимание «как это делается» на уровне «здравого смысла». Предлагаемая методика акцентирует внимание на элементах процесса программирования, считающихся, видимо, само собой разумеющимися, и поэтому не рассматривающимися в учебно-методической и, тем более, справочной литературе.
В этом разделе обязательны для изучения:

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

- основы анализа (чтения) программ. Совершенно не отраженный в литературе раздел. Для понимания того, что и как делает программа необходимо видеть ее поведение во времени («исторический» анализ) и уметь выделять в ней стандартные программные решения – стандартные программные контексты (СПК), смысловое содержание которых инвариантно (неизменно) в любом окружении («логический» анализ). Таких СПК насчитывается около 20 (минимум, накопление, подсчет, «три стакана» и т.п.) и они составляют значительную часть (до 70-80%) любой программы. Навыки «чтения» программ состоят в умении «видеть» эти контексты, переводить их содержание на естественный язык и на этой основе воспроизводить поведение программы как процесс, порождающий ее результат;

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

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

Модуль 2. Традиционный уровень прикладного программирования («Программист прикладной»). На следующем шаге должен быть сделан качественный скачок от элементарных программных систем к модульным и иерархическим: от отдельных простых переменных и массивов к иерархическим (3-5 –уровневым типам данных), от одного модуля к системе взаимодействующих. Здесь присутствуют обязательные разделы, знание которых необходимо для эффективного программирования, программирования на уровне архитектуры, системного программирования:

- типы данных – указатели, структуры, функции;

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

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

- динамические переменные и массивы;

- модульная (многофайловая) организация программных проектов;

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

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

Важное значение в теоретическом плане и для последующих дисциплин имеют разделы рекурсия (курс «Теория языков программирования и методы трансляции») и указатели на функции (курс «Объектно-ориентированное программирование»).

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

3. Цели курса

Представления


В результате изучения дисциплины у студентов должны быть сформулированы представления о:

  1. архитектуре компьютера с точки зрения реализации понятий алгоритма и программы;

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

  3. фазах трансляции и видах ошибок (лексические, синтаксические, семантические, связывания).

  4. средствах определения данных (типы данных, переменные) и алгоритмов, принятых в большинстве языков программирования;

  5. технологии проектирования сложных модульных программ;

  6. процессах распределения памяти в программе, осуществляемых при трансляции и выполнении программы, сегментах команд, данных, стека, динамической памяти.

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

Знания


После изучения дисциплины студент должен знать:

  1. формы представления числовой и символьной информации;

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

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

  4. назначение («смысл») переменных в стандартных фрагментах программ, основные принципы анализа программ путем разбиения на стандартные фрагменты;

  5. основы технологии структурного программирования;

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

  7. свойства и принципы работы с производными типами данных - указателями, структурами, массивами, функциями.

  8. принципы определения сложных типов данных и работы с переменными соответствующих типов, принципы организации модульных программ, работающих со сложными типами данных;

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

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

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

  12. виды структур данных, их сравнительные характеристики, основные алгоритмы работы с ними;

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

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

  15. алгоритмы работы с деревьями, свойства двоичных деревьев;

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

Умения и навыки


После изучения дисциплины студент должен приобрести умения и навыки:

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

  2. подготовки, трансляции и отладки программ в среде Microsoft Visual C;

  3. разработки простых программ на Си и использованием базовых типов данных и массивов;

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

  5. проектирования программ обработки символов и строк;

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

  7. разработки модульных программ, использующих сложные иерархические типы данных и переменные;

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

  9. распознавания типа переменной по ее контексту;

  10. разработки функций, имеющих формальные параметры и результат различных типов;

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

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

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

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

4. Структура и содержание курса

4.1. Структура курса


Основная часть учебного курса опубликована в изданиях:

  • Романов Е.Л.. Язык Си++ в задачах, вопросах и ответах. – Новосибирск: Издательство НГТУ, 2003, 428 с.;

  • Романов Е.Л. Практикум по программированию на Си++: - BHV-Санкт-Петербург, 2004, 432 c.,

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


  1. Анализ и проектирование программ.

    1. Прежде чем начать (Чего не могут компьютеры)

    2. Как работает программа

    3. Стандартные программные контексты

    4. Процесс проектирования программы

    5. Структурное программирование

    6. Модульное программирование

    7. Логическое и историческое в программировании

  2. Программист «начинающий»

    1. Арифметические задачи

    2. Итерационные циклы и приближенные вычисления

    3. Структуры данных. Последовательность. Стек. Очередь

    4. Символы, строки, текст

    5. Сортировка и поиск

    6. Указатели

    7. Структурированные типы

    8. Типы данных, переменные, функции, модули

  3. Программист «системный»

    1. Управление физической памятью и указатели

    2. Динамические переменные и массивы

    3. Динамическое связывание

    4. Рекурсия

    5. Структуры данных. Массивы указателей

    6. Структуры данных. Линейные списки

    7. Структуры данных. Деревья

    8. Иерархические структуры данных

4.2. Содержание курса

Семестр 1. Лекции (51 час)


Модуль 1. Программист «начинающий».

Раздел: Основы информатики (8 часов)

  1. История развития языков программирования высокого уровня: Фортран, Бейсик, Паскаль, Си, их особенности. Язык Си как средство программирования архитектуры компьютера (1 час).

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

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

  4. Основные положения теории информации. Понятие информации. Единицы измерения, хранения и передачи информации: бит, байт, машинное слово. Формы представления числовой, символьной, графической, звуковой информации (2 часа).

Раздел: Основы языка программирования Си (15 часов)

  1. Пример простейшей Си-программы вычисления суммы элементов массива. Особенности синтаксиса. Функции, переменные, операции, операторы (2 часа) .

  2. Понятие типа данных и переменной. Определение переменных в Си. Базовые типы данных char,int,long как машинные слова. Особенности типа данных char. Байт, слово, двоиной слово. Знаковая и беззнаковая формы представления в Си. Представление символов. Представление чисел с плавающей запятой. Массивы: особенности работы, инициализация (2 часа) .

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

  4. Преобразование базовых типов данных в выражениях: действия, порядок. Явные и неявное преобразования. (1 час) .

  5. Выражения и операторы. Роль ";" как ограничителя. Классификации управляющей логики программы - последовательность, условие, цикл, переход. Основные операторы Си: if, while, do-while, for, switch, break, continue, return, goto: классификация, особенности синтаксиса и выполнения (2 часа) .

  6. Функции. Формальные и фактические параметры. Способы передачи параметров – по значению и по ссылке. Результат функции. Локальные и глобальные (автоматические и внешние) переменные. Функция как основа модульного программирования. Структура данных как система взаимосвязанных переменных и значений. Последовательность. Стек и очередь. Свойства. Представление стека и очереди в массиве. Использование стека при вызове функции (4 часа). (тема 2.3).

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

Раздел: Основы анализа программ (6 часов).

  1. Основы анализа программ. «Исторический» и логический анализ программы. «Смысл» выражений и переменных. Стандартные программные контексты (СПК). Доказательство результата: трассировка, аналогия, метод математической индукции (2 часа).

  2. СПК: cчетчик, накопитель, минимум-максимум, признак, индекс текущего. Индекс как независимое перемещение по массиву: разделение, слияние. Присваивание как запоминание состояния. «Образный» смысл СПК: сдвиги, “три стакана”. Проверка свойства всеобщности. Результат цикла – место его остановки. СПК в различных областях программирования (арифметические задачи). Примеры анализа программ, сочетание логического и «исторического» анализа. Проектирование программ с использованием СПК (4 часа).

Раздел: Технология и традиционные разделы программирования (16 часов)

  1. Технология программирования. Программирование методом «северо-западного угла». Образная модель. Предварительный сбор фактов, касающихся программы. Принцип замены формулировки алгоритма управляющей конструкцией языка. Структурное программирование – нисходящее, пошаговое, структурное проектирование программы и данных. Последовательность действий, связанных переменными как основная логическая конструкция алгоритма. Примеры проектирования программ. Сортировка выбором. Варианты: c удалением найденных, со сдвигом оставшейся части, с обменом с очередным элементом. Сбор фактов, структурное проектирование (4 часа) (тема 1.4, 1.5).

  2. Циклические программы. Виды циклов. Итерационный цикл. Рекуррентные последовательности и итерационные циклы. Программа вычисления корня функции. Программа вычисления суммы ряда. (2 часа) (тема 2.2).

  3. Работа со строками. Представление строки в Си. Строка и массив символов. Поиск в строке: вложенных скобок, слова минимальной длины, подстроки. Посимвольная и пословная обработка: инвариант цикла. Обработка строк: удаление комментариев, последовательное выделение вложенных фрагментов. Функции ввода-вывода. Преобразования целого числа из внешней формы во внутреннюю и обратно. Последовательные текстовые файлы. (4 часа) (тема 2.4).

  4. Сортировка и поиск. Понятие записи и ключа. Линейный и двоичный поиск. Трудоемкость алгоритмов сортировки и поиска. Классификация сортировок: выбор, вставка, обмен, подсчет, разделение, слияние. Примеры проектирования программ: разделение, циклическое слияние (4 часа) (тема 2.5).

Модуль 2. Программист «прикладной».

Раздел: Типы данных. Иерархия алгоритмов и данных (18 часов).

  1. Указатели. Указатель как элемент архитектуры компьютера. Синтаксис указателя в Си. Указатель - как «степень свободы» программы. Указатель - формальный параметр и результат функции. Ссылка как неявный указатель. Передача формальных параметров и результата по ссылке (4 часа) (тема 2.6).

  2. Адресная арифметика. Указатели и массивы. Способы работы через указатель с массивом - индексация и перемещение указателя. Указатели char*, работа со строками через указатели. Примеры (2 часа) (тема 2.6).

Семестр 2. Лекции (34 часа)


  1. Структура. Определение структуры как типа данных. Структура и массив. Массивы структурированных переменных. Указатель на структуру. Указатель на структуру - формальный параметр и результат функции. Инициализация структурированных переменных. Проектирование сложных программ - иерархия типов данных и функций (4 часа) (тема 2.7).

  2. Динамическая память. Динамические переменные и массивы. Операторы и функции управления динамической памятью. Строки - как динамические массивы. «Виртуальные массивы» - программная реализация (2 часа) (тема 3.2).

  3. Понятие типа данных. Тип данных и переменная. Базовые и производные типы данных. Виды производных типов данных. Операции извлечения составляющего типа данных. Иерархия определений типов данных и вложенности компонент переменных. Контекстный способ определения типа данных в Си. Примеры анализа контекстных определений. Абстрактный тип данных. Спецификация typedef . Иерархия типов данных и иерархия вызовов функций в модульных программах (4 часа) (тема 2.8).

  4. Модульная организация программы. Время жизни и область действия переменных. Классификация. Определение и объявление переменных. Внешние, автоматические и статические переменные. Область действия функций. Внешние и статические функции. Модульное программирование. Библиотеки. Заголовочные файлы, их назначение и содержание. Файл проекта (2 часа) (тема 2.8).

Модуль 3. Программист «системный».

Раздел: Введение в структуры данных (22 часа)

  1. Понятие структуры данных. Алгоритмическая компонента структуры данных. Статические и динамические структуры данных. Структуры данных «в узком смысле». Упорядоченность. Понятие логического номера элемента, ключевого поля. Операции включения, добавления, удаления, поиска по ключу, извлечения по логическому номеру и сортировки структуры данных. Классификация структур данных: массивы, массивы указателей, списки, деревья. Иерархические структуры данных (2 часа).

  2. Массивы указателей. Способы формирования массивов указателей - статические, динамические, смешанные. Работа с массивами указателей. Примеры функций включения, исключения, сортировки и поиска. Массив указателей на строки (2 часа) (тема 3.5).

  3. Списки. Определение элемента списка. Фрагменты алгоритмов работы со списками. Текущий элемент, заголовок. Способы формирования списков. Односвязные списки. Операции включения, исключения, добавления в список. Сортировка списка - выбор, вставка. Представление очереди и стека односвязным списком. Двусвязные списки. Включение и исключение элемента. Проблема концов списка, циклические списки (4 часа) (тема 3.6).

  4. Рекурсия. Определение рекурсии. Рекурсивные определения, структуры данных, функции. Особенности проектирования рекурсивных функций. Рекурсивная функция как процесс. Смысл формальных и фактических параметров, локальных и глобальных переменных и результата функции как характеристик рекурсивного процесса. Проектирование рекурсивных алгоритмов и метод математической индукции - принцип «локального мышления». Использование рекурсивных алгоритмах в задачах поиска, основанных на переборе вариантов. Примеры программ движения по лабиринту, расстановки фигур, составления цепочек слов (4 часа) (тема 3.4).

  5. Деревья как рекурсивные структуры данных. Определение вершины дерева. Рекурсивный характер обхода дерева. Алгоритмы полного обхода дерева, поиска минимального значения, включения на заданную глубину. Нумерация вершин дерева. Способы нумерации. Поиск элемента по логическому номеру. Способы организации данных в дереве для сокращения глубины просмотра. (4 часа) (тема 3.7).

  6. Двоичное дерево. Включение и поиск в двоичном дереве. Связь двоичного дерева с алгоритмов двоичного поиска. Эффективность поиска в двоичном дереве. Сбалансированность. Извлечение из двоичного дерева по логическому номеру (2 часа) (тема 3.7).

  7. Указатель на функцию. Синтаксис. Смысл указателя на функцию - как средства параметризации части алгоритма обработки данных. Указатель на функцию - формальный параметр. Функция вычисления определенного интеграла. Итератор. Итераторы foreach, firstthat. Итераторы, основанные на сравнении - сортировка, поиск минимального, двоичный поиск. Примеры (2 часа) (тема 3.3).

  8. Сравнительная характеристика структур данных. Иерархические структуры данных. Сбалансированность. Примеры реализации алгоритмов (2 часа) (тема 3.8).

Семестр 1. Практические занятия (34 часа)


Модуль 1. Программист «начинающий».

Раздел: Основы информатики (12 часов)

  1. Системы счисления (СС), определение числа в позиционной системе счисления, прямой и обратный перевод, оценка значения в 2СС, особенности 8,16СС. Арифметические операции в различных СС (3 часа).

  2. Контрольная работа. (1 час).

  3. Общая структура языка. Данные. Переменные. Алгоритм. Блок-схема. Основные управляющие конструкции языка: последовательность, ветвление, цикл, переход. «Интуитивное» программирование – разработка программ с использованием блок-схем. Разработка линейных, разветвляющихся и циклических алгоритмов с использованием блок-схем: арифметические задачи - поиск простых чисел, разложение числа на множители (3 часа).

  4. Контрольная задание (1 час).

  5. Циклические алгоритмы на массивах, «Интуитивное» программирование с использованием блок-схем. Заполнение массива: разложение числа на множители, разложение числа на цифры. Поиск простых чисел (Решето Эратосфена) (2 часа) (тема 1.7).

  6. Контрольное задание (2 часа).

Раздел: Основы анализа программ (4 часа).

  1. Основы анализа программ. «Исторический» и логический анализ программы. «Смысл» выражений и переменных. Примеры построения программ из отдельных смысловых фрагментов - сортировка выбором, вставками, подсчетом (2 часа) (тема 1.3).

  2. Контрольное задание (2 часа).

Раздел: Технология и традиционные разделы программирования (18 часов)

  1. Технология программирования. Примеры проектирования: сортировка погружением, подсчетом, выбором (со сдвигом и обменом) (решение по вариантам, разбор). Образная модель, факты, выстраивание программы методом нисходящего структурного проектирования (2 часа) (темы 1.4, 1.5).

  2. Работа со строками: инвертирование строки, удаление заданного символа со сдвигом, дублирование заданного символа со сдвигом, подсчет макс. количества повторений (решение по вариантам, разбор). Варианты посимвольной и построчной обработки: инвертирование слов в строке (2 часа) (тема 2.4)..

  3. Контрольное задание (2 часа).

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

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

  6. Сложные случаи использования СПК. Сортировка однократным слиянием с использованием массива индексов. Циклическое слияние с неявным и явным разделением групп в последовательности (2 часа) (тема 2.5).

  7. Стандартная библиотека ввода-вывода, работа с текстовыми файлами (2 часа).

  8. Программирование графики. Псевдографика, позиционирование курсора, простейшая анимация, моделирование движения (2 часа).

  9. Программирование реального времени без использования прерываний. События. Отслеживание текущего времени и событий. Диспетчеризация (2 часа).

Семестр 2. Практические занятия (17 часов)


  1. Работа со строками с использованием указателей char*. Контрольное задание. (4 часа) (тема 2.6).

  2. Структурированные типы. Иерархия типов данных. Программа редактирования таблицы (2 часа) (тема 2.7).

  3. Массивы указателей. Поиск фрагментов в строке, сортировка однократным слиянием с использованием массивов указателей (2 часа) (тема 3.5).

  4. Списки. Форматирование текстового файла с представлением словаря в виде списка. Пример проектирования фрагмента курсовой работы (2 часа) (тема 3.6).

  5. Рекурсивные функции. Примеры проектирования рекурсивных сортировок и поисковых алгоритмов (2 часа) (тема 3.4).

  6. Деревья. Примеры проектирования фрагмента курсовой работы: построение кода Хаффмана (2 часа) (тема 3.7).

  7. Иерархические структуры данных. Список с массивом указателей. Пример выполнения фрагментов курсовой работы (2 часа) (тема 3.8).

  8. Зачетное занятие (1 час).

Семестр 1. Лабораторные занятия (34 часа)





  1. Изучение оболочки Visual C, приемов редактирования и отладки программ (4 часа).

  2. Стандартные программные контексты, отладка и анализ тестовых заданий (8 часов) (тема 1.3).

  3. Вызов функций, передача параметров (4 часа) (тема 1.5).

  4. Проектирование программ решения арифметических задач (4 часа) (тема 2.1).

  5. Итерационные циклы. Вычисления суммы ряда (4 часа) (тема 2.2).

  6. Работа со строками (4 часа) (тема 2.4).

  7. Сортировка и поиск. (4 часа) (тема 2.5).

  8. Зачетное занятие (2 часа).

Семестр 2. Лабораторные занятия (34 часа)





  1. Указатели (4 часа) (тема 2.6).

  2. Структуры, массивы структур и указатели (8 часов) (тема 2.7).

  3. Массивы указателей (4 часа) (тема 3.5).

  4. Списки (4 часа) (тема 3.6).

  5. Рекурсия (4 часа) (тема 3.4).

  6. Деревья (4 часа) (тема 3.7).

  7. Указатели на функции. Иерархические структуры данных (4 часа)(темы 3.3,3.8).

  8. Зачетное занятие (2 часа).

Семестр 1. Расчетно-графическая работа. Тематика работ





  1. Анимация алгоритмов сортировки.

  2. Анимация программ работы со строками.

  3. Игровые программы реального времени.

Семестр 2. Курсовая работа. Тематика работ





  1. Разработка иерархических структур данных.

  2. Форматирование текстового файла в HTML-файл.

  3. Исследование алгоритмов сортировки на структурах данных (массивах указателей, списках).

5. Учебная деятельность


Технологическая цепочка изучения курса построена по традиционной схеме. Лекционный курс включает в себя все основные темы, перечисленные в структуре курса. Практические занятия первого семестра дополняют лекционный материал анализом конкретных примеров, обеспечивают контроль усвоения материала (анализ тестовых заданий и разработка программ по вариантам). Лабораторные работы позволяют получить практические навыки по большинству разделов курса. Для их выполнения широко используются «программные заготовки» (около 140) – завершенные фрагменты программ (функции), представленные в электронной версии курса (около 140). Для защиты лабораторных работ используются тестовые задания – завершенные фрагменты программ (от 10 до 25 по каждой теме, всего около 300). Для защиты лабораторной работы необходимо оформить вызовы 2 функций для статических данных, объяснить полученный результат на основе анализа тестового задания.

6. Правила аттестации студентов


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

7. Список литературы


  1. Романов Е.Л. Язык Си++ в задачах, вопросах и ответах. – Новосибирск: Издательство НГТУ, 2003, 428 с.;

  2. Романов Е.Л. Практикум по программированию на Си++: - BHV-Санкт-Петербург, 2004, 432 c.,

  3. http://ermak.cs.nstu.ru/cprog - методические материалы по дисциплинам «Информатика» и «Программирование».

  4. Подбельский В.В., Фомин С.С. Программирование на языке Си. М.:ФиС, 1999, 600 с. (рекомендуемый учебник по направлению «Информатика и ВТ»).

  5. Дейтел Х.М., Дейтел П.Дж. Как программировать на Си++. М.:ЗАО БИНОМ, 1999, 1000 с. (первые 600 страниц - изложение обычного Си, наиболее полно соответствует структуре курса для 1-2 семестра).

  6. Топп У., Форд У.. Структуры данных в Си++. М.:ЗАО БИНОМ, 1999, 800 с. (наиболее полно соответствует структуре курса для 2 семестра).

  7. Климова Л.М.. Основы практического программирования на языке Си. М.: Издательство ПРИОР, 1999, 464 с..

  8. Романов E.Л. Информатика. Основы анализа и проектирования программ. Конспект лекций и методические указания к лабораторным работам по дисциплине "Информатика". - Новосибирск, Изд-во НГТУ, 1999, -80 с. («методичка» для 1-го семестра, библиотека НГТУ - 73Р693)

  9. Романов E.Л. Язык Си. Типы данных и управление памятью. Конспект лекций. Тестовые вопросы и задания к лабораторным работам. - Новосибирск, Изд-во НГТУ, 2000, -62 с. («методичка» для 1,2-го семестра, библиотека НГТУ – 51Р693)

  10. Романов E.Л. Язык Си. Структуры данных. Тестовые вопросы и задания к лабораторным работам. - Новосибирск, Изд-во НГТУ, 2001, -80 с. («методичка» для 2,3-го семестра, библиотека НГТУ - Р693)

  11. Подбельский В.В. Язык Си++: Учеб.пособие. -М.:Финансы и статистика, 1995. -560 с.:ил. (рекомендуемый учебник по направлению «Информатика и ВТ»).

Дополнительная литература


  1. Керниган Б., Ритчи Д., Фьюер А. Язык программирования Си. Задачи по языку Си: Пер. с англ. - М.: Финансы и статистика, 1985. («Библия»-изложение классического Си авторами) (Библиотека НГТУ - 51К362)

  2. Трой Д. Программирование на языке Си для персонального компьютера IBM PC: Пер. с англ. - М.: Радио и связь, 1991, - 432 с., ил. (неплохая, хотя и не очень актуальная книжка, библиотека НГТУ - 51Т106)

  3. Касаткин А.И. Профессиональное программирование на языке Си. Управление ресурсами: Справ. пособие. - Мн.: Выш. шк., 1992, - 432 с., ил. (машинно-зависимое программирование на Си под DOS) (Библиотека НГТУ - 681К28)

  4. Касаткин А.И. Профессиональное программирование на языке Си. Системное программирование. - Мн.: Выш.шк., 1993, - 301 с., ил. (машинно-зависимое программирование на Си под DOS) (Библиотека НГТУ - 681К28)

  5. Вирт Н. Алгоритмы и структуры данных: Пер. с англ. - М.: Мир, 1989, - 360 с., ил.

  6. Кнут Д. Искусство программирования для ЭВМ. т.3. Сортировка и поиск: Пер. с англ., - М.: Мир, 1978, 845 с., ил.

  7. Романов E.Л. Организация файлов данных. Методические указания к лабораторным работам по дисциплине "Информатика". - Новосибирск, Изд-во НГТУ, 1995, -32 с. («методичка» для 3-го семестра, библиотека НГТУ - n 1178).

8. Контролирующие материалы к аттестации студентов


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

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

  2. вызов функции для статических параметров (структур данных) с объяснением алгоритма тестового фрагмента и обоснованием результатов (защита лабораторных работ).

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

Пример выполнения тестового задания.
//---------------------------------------------------

int F(char c[]){

for (int i=0,ns=0; c[i]!=0; i++)

if (c[i]!-‘ ‘ && (c[i+1]==’ ‘ || c[i+1]==0)) ns++;

return ns;}

void main(){ cout << F(“aaaa bbb ccc dddd”) << endl; // Выведет – 4

Функция работает со строкой, поскольку в качестве параметра получает массив символов, которую просматривает до обнаружения символа конца строки. Переменная ns является счетчиком. Условие, выполнение которого увеличивает счетчик – текущий символа не является пробелом, а следующий – пробел, либо конец строки. Это условие обнаруживает конец слова. Таким образом, программа подсчитывает количество слов в строке, разделенных пробелами.

Вопросы к заданию:

  1. Смысл переменной ns (счетчик выполения условия).

  2. Смысл логической операции || (…хотя бы один … ИЛИ).

  3. Смысл логической операции && (…одновременно оба …И).

  4. Смысл условия c[i]!-‘ ‘ && (c[i+1]==’ ‘ || c[i+1]==0 (обнаружение конца слова).

  5. Что означает заголовок функции (функция получает массив-строку по ссылке и возвращает целое).

  6. Что может быть фактическим параметром вызова (имя массива символов, строковая константа).

9. Приложения


  1. Варианты заданий, требования к оформлению и пояснительная записка к расчетно-графической работе (семестр 1).

  2. Варианты заданий, требования к оформлению и пояснительная записка к курсовой работе (семестр 2).

  3. Список экзаменационных вопросов и задач (семестр 1).

  4. Образцы вариантов к контрольным заданиям (семестр 1).


Романов Е.Л. Рабочая программа по дисциплине «Информатика» .


Похожие:

1. Требования к курсу iconПрограмма по курсу Систематика высших растений
«Биология», квалификация биолог(2000) предьявляет следующие требования к уровню подготовки специалиста по общепрофессиональной дисциплине...
1. Требования к курсу iconМетодические указания по курсу «Информационные системы»
«Общие требования к содержанию курсового проекта», «Основные объекты субд access»
1. Требования к курсу iconПримерные вопросы к экзамену
Требования к работе пользователя на пк, что должен знать и уметь делать к 4 –ому курсу вмк
1. Требования к курсу iconЗачётные требования по курсу «Линейная алгебра и геометрия»
Приведение матрицы симметрического оператора к диагональному виду ортого-нальным преобразованием
1. Требования к курсу icon1. Минимальные требования к содержанию учебного курса (выписка из госа по специальности)
Комплект учебно-методических материалов к учебному курсу «Техническая термодинамика»
1. Требования к курсу icon1. Минимальные требования к содержанию учебного курса (выписка из госа по специальности)
Комплект учебно-методических материалов к учебному курсу «Классическая механика»
1. Требования к курсу icon1. Минимальные требования к содержанию учебного курса (выписка из госа по специальности)
Комплект учебно-методических материалов к учебному курсу «Специальная теория относительности»
1. Требования к курсу iconРабочая учебная программа по курсу «Краеведение» Цель и задачи изучения дисциплины
Требования к уровню освоения программы и формы текущего и промежуточного контроля
1. Требования к курсу iconК курсу «Архив компании
Организация архива (задачи и функции архива; требования к зданиям и помещениям, оборудованию архивохранилищ)
1. Требования к курсу icon1. Минимальные требования к содержанию учебного курса дпп. Ф. 17 (выписка из госа по специальности)
Комплект учебно-методических материалов к учебному курсу «Интернет и мультимедиа технологии»
Разместите кнопку на своём сайте:
ru.convdocs.org


База данных защищена авторским правом ©ru.convdocs.org 2016
обратиться к администрации
ru.convdocs.org