shkolakz.ru 1

Федеральное агентство по образованию

ГОУ ВПО «Уральский государственный технический университет - УПИ»


УТВЕРЖДАЮ


Проректор университета


_______________ О.И.Ребрин


“____”_______________2005 г.


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

Программирование на языке высокого уровня




Рекомендовано Методическим советом УГТУ-УПИ
для направления 552800 «Информатика и вычислительная техника»


Екатеринбург 200

5Программа составлена в соответствии с Государственным образовательным стандартом высшего профессионального образования направления 552800 «Информатика и вычислительная техника» (регистрационный номер 35 тех/бак от 13.03.2000) и учебным планом специальности(направления) 552800 «Информатика и вычислительная техника».


Программу составил:


доцент, к.ф.-м.н. Трофимов С.П.


Рабочая программа одобрена на заседании кафедры автоматики и информационных технологий “ 21 ” апреля 2005г., протокол № 11.


Заведующий кафедрой С.В.Поршнев


Рабочая программа одобрена на заседании методической комиссии РИ-РТФ

“____”_________2005 г., протокол №____.


Председатель методической комиссии _________ О.Г.Дружинина


АННОТАЦИЯ СОДЕРЖАНИЯ ДИСЦИПЛИНЫ


Дисциплина посвящена изучению основ алгоритмизации и программирования.

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

Приводятся основные положения теории программирования, способы конструирования и верификации программ.


1 Цели и задачи дисциплины

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


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

В настоящее время разработаны и эксплуатируются сотни различных языков программирования. Вместе с тем можно выделить ограниченное число языковых конструкций, которые присутствуют в каждом алгоритмическом языке и хорошее знание которых дает возможность без труда освоить любой язык. Изучение таких конструкций проводится на примере языка Си. В качестве основы выбрана версия языка – Borland C++2.0, используемая на персональных ЭВМ в среде операционной системы MS-DOS.

2 Требования к уровню освоения дисциплины

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

а) иметь представление:


  • о структуре, основных принципах работы персональных машин IBM PC и совместимых с ними;

  • об организации вычислительного процесса в среде MS-DOS;

  • о возможностях языков программирования различного уровня;

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

б) знать:

  • основные принципы алгоритмизации;

  • основные методы обработки данных;

  • этапы разработки программ и методы автоматизации программирования;

  • основные понятия и методы технологии программирования;

  • конструкции языка Си;

в) уметь:

  • самостоятельно работать на ПЭВМ с соблюдением основных принципов работы на машине;
  • осуществлять декомпозицию решения задачи и составлять алгоритмы отдельных его частей в соответствии с современной технологией программирования;


  • применять основные операторы языка Си, общие для всех языков программирования;

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

  • работать с ресурсами компьютера программными средствами.

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

Кроме этого в течение всего периода обучения студент получает индивидуальные задания по различным дисциплинам учебного плана, предусматривающие использование ЭВМ.


3. Объем дисциплины и виды учебной работы

Вид учебной работы

Всего часов

Семестр

2

3

Общая трудоемкость дисциплины

250

126

124


Аудиторные занятия

136

68

68

Лекции

68

34

34

Лабораторные работы

68

34


34

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

114

58

56

Подготовка к лекциям

20

10

10

Подготовка к лабораторным работам

20

10

10

Выполнение домашних работ

24

24

-

Подготовка к контрольным работам

4

-

4

Написание реферата

24

12

12

Выполнение курсовой работы

20

-

20

Итоговый контроль

2

2, зачет

экзамен



4. Содержание дисциплины


4.1. Разделы дисциплины и виды занятий

№ п/п

Раздел дисциплины

Лекции, час

Лаб. раб., час

1

Введение


4

-

2

Основы алгоритмики

8

12

3

Основы программирования на языке Си

38

40


4

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

6

4

5

Графическая библиотека Borland С

10

12

6

Заключение

2

-



4.2. Содержание разделов дисциплины

Раздел 1. Введение

Обзор языков высокого уровня. Место языка Си/Си++ в вычислительной технике.

Обзор литературы по языку Си.

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

Раздел 2. Основы алгоритмики

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

Начало и конец программного блока. Понятие действия. Условное обозначение действия на схемах алгоритма. Условие как основной тип ветвления алгоритмов и программ. Блок выбора как расширенный вариант блока условия. Понятие цикла. Индекс цикла, переменная цикла, диапазон, шаг. Представление цикла с помощью оператора условия. Цикл с индексом, цикл с условием в начале, цикл с условием в конце. Области применимости и основные различия между тремя конструкциями циклов. Правила работы с вложенными циклами. Служебные блоки комментарии. Примеры составления схем алгоритмов.



Раздел 3. Основы программирования на языке Си

3.1. Исторический обзор. История создания и развития языка Си. Основные преимущества Си перед другими языками программирования высокого уровня. Основные особенности работы в Си. Обзор компиляторов языка. Стандарты языка Си.

3.2. Основные понятия теории программирования.

Основные принципы написания программ. Структура программы на языке Си. Понятие выражения. Основные этапы решения задач на ЭВМ. Критерии качества программы. Жизненный цикл программы. Постановка задачи и спецификация программы.

Теорема структуры и структурное программирование. Утверждения о программах. Корректность программ. Правила вывода для основных структур программирования. Инвариантные утверждения.

Этапы преобразования программы. Создание ассемблерного кода программы с помощью компилятора командной строки.

3.3. Стандартные типы данных.

Имена переменных. Типы и размеры данных. Описания переменных. Символьные и строчные константы, константные выражения.

3.4. Операции языка Си.

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

3.5. Операторы управления.

Представление основных управляющих структур программирования. Операторы и блоки. Операторы if–else и else–if. Переключатель. Цикл for. Оператор цикла с предусловием while–do. Оператор цикла с постусловием do–while. Операторы безусловного перехода и метки. Пустой оператор. Операторы break и continue.

3.6. Среда программирования Borland С.

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


3.7. Массивы.

Определение массива. Одномерные и двумерные массивы. Размещение массива в памяти. Особенности индексации массивов в Си. Многомерные массивы. Утверждения о массивах.

3.8. Функции.

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

Функции с переменным числом параметров.

3.9. Классы памяти переменных.

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

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

3.10. Рекурсия.

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

3.11. Препроцессор языка Си.

Включение файлов и директива include. Макроопрделение и макроподстановка. Прагмы препроцессора. Параметризованные макросы. Условная прекомпиляция.

3.12 Указатели.

Указатели и адреса. Указатели и аргументы функций. Указатели и массивы. Адресная арифметика. Многомерные массивы. Массивы указателей. Инициализация массивов указателей. Командная строка аргументов. Указатели на функции.

3.13. Структуры.

Основные сведения. Структуры и записи. Массивы структур. Указатели на структуры. Структуры, ссылающиеся сами на себя. Поиск в таблице. Битовые поля. Объединения. Передача структур в функции.


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

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

3.14. Ввод и вывод.

Функции стандартного ввода и вывода. Форматный вывод – функции семейства …printf. Форматный ввод – функции семейства …scanf. Форматированное преобразование в памяти. Спецификаторы форматирования.

Использование файлов. Текстовые и бинарные файлы. Форматированный и неформатированный доступ к файлам. Работа с директориями и дисковым пространством.


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

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

Использование проектов. Преимущества проектной организации программы.


Раздел 5. Графическая библиотека

Основные библиотечные функции. Инициализация графического режима. Функции установки, рисования, заливки. Работа с пикселами. Копирование и перемещение образов. Графические окна. Работа с текстом и шрифтами.

Рисование графиков функций и соответствие между математической и графической системами координат.

Организация графического ввода и вывода текстовой и числовой информации.


Раздел 6. Заключение

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


5. Лабораторный практикум

Объем лабораторных занятий предполагается 4 часа.

п/п




раздела дисциплины

Наименование лабораторных работ

1

2
Системы счисления. Таблицы кодирования символов. Представление в компьютере целых и вещественных чисел.

2

2

Построение схем ветвящихся и циклических алгоритмов.

3

2

Построение сложных многостраничных алгоритмов.


4

3

Арифметические, логические и другие операции. Таблица приоритетов.

5

3

Программирование условных операторов и переключателей.

6

3

Программирование циклов.

7

3

Создание и использование функций.

8

3

Работа с одномерными и двумерными массивами.

9

3

Программы с использованием адресной арифметики.

10

3

Работа со структурами. Создание простой базы данных.

11

3


Работа с файлами, директориями и дисковым пространством.

12

3

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

13

3

Работа с функциями и структурами времени.

14

4

Создание проекта группой программистов.

15

5

Графический режим. Работа с пикселами. Рисование графиков математических функций

16

5

Организация графического интерфейса пользователя.


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

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


По разделам 2, 3.7, 3.8, 3.12, 3.13, 3.14 предусмотрены контрольные работы.


6.1. Тематика домашних работ

6.1.1. Составление схем алгоритмов.

6.1.2. Решение задач, связанных с использованием всех операций Си и их приоритетами.

6.1.3. Определение областей памяти переменных.

6.1.4. Исследование рекурсивных функций с построением схемы вызовов.

6.1.5. Исследование возможностей указательной арифметики.

6.1.6. Работа со справочной системой.

6.1.7. Изучение стандартов оформления программной документации.

6.1.8. Изучение возможностей графической библиотеки.

6.1.9. Углубленное изучение оболочки пакета Borland C++ 2.0.


6.2.Примерная тематика рефератов

6.2.1. Правила хорошего стиля программирования.

6.2.2. Сравнение языков программирования высокого уровня: C, Pascal, Fortran.

6.2.3. Обзор истории развития языка Си.

6.2.4. Описание приложений, поставляемых с оболочкой программирования Си.


6.3.Примерная тематика курсовых работ

6.3.1.Приложение для построения графиков функций с вводом формулы с клавиатуры.

6.3.2.Перевод из одной системы счисления в другую чисел произвольной длины.

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

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

6.3.5.Разработка календаря на любой год с учетом високосных лет.

6.3.6.Решение системы линейных уравнений произвольной размерности методом Гаусса.

6.3.7.Создание генеалогического дерева с использованием списков.

6.3.8.Разработка программы для работы с файлами и директориями.

6.3.9.Реализация игры «Жизнь».


7. Учебно-методическое обеспечение дисциплины

7.1. Рекомендуемая литература

7.1.1. Основная литература


  1. Керниган Б., Ритчи Д. Язык программирования Си. М.: Финансы и статистика, 1988, 189 с.

  2. Климова Л.М. Cи++. Практическое программирование. Решение типовых задач: учебное пособие для вузов. М.:КУДИЦ-ОБРАЗ, 2000, 250с.

  3. Крячков А.В., Сухинина И.В., Томшин В.К. Программирование на С и С++: практикум. М.:Радио и связь, 1997, 220 с.
  4. Павловская Т.А. C/C++. Программирование на языке высокого уровня: учебное пособие для вузов. СПб.:Питер, 2002, 180 с.


  5. Подбельский В.В., Фомин С.С. Программирование на языке Си: учебное пособие для вузов. М.:Финансы и статистика, 1998, 350с.

  6. Скляров В.А. Программирование на языках Си и Си++: учебное пособие для вузов. М.:Высш. шк., 1999, 320 с.


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

  1. Дейкстра Э.В. Дисциплина программирования. М.: Мир, 1978, 275 с.

  2. Керниган Б.В., Плоджер Ф.Д. Элементы стиля программирования. М.: Радио и связь, 1984, 304 с.

  3. Уэзерелл У. Этюды для программистов. М.: Мир, 1982, 287 с.

  4. Шнейдерман Б. Психология программирования. М.: Радио и связь, 1984, 304 с.

  5. Керниган Б.В., Ритчи Д., Плоджер Ф.Д. Язык программирования Си. Задачи по языку Си. М.: Финансы и статистика, 1985, 279 с.

  6. Болски М. Язык программирования Си: справочник. М.: Радио и связь, 1988, 96 с.


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

  1. Трофимов С.П. Программирование в Си. Организация ввода-вывода: метод.указания. Екатеринбург: Изд-во УГТУ, 1998, 14с.

  2. Трофимов С.П. Программирование в Си. Динамическое распределение памяти. Екатеринбург: Изд-во УГТУ, 1998, 13с.

  3. Графические возможности языка Турбо Си: Метод. разработка/ Сост. В.И. Булгаков; Ин-т повыш. квалиф. спец. металлургии. Свердловск, 1990, 20 с.


8. Средства обеспечения освоения дисциплины

В процессе изучения дисциплины используются:

  • раздаточный материал для изучения лекционного материала;

  • учебный материал в электронном виде;

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

  • программное обеспечение в соответствии с содержанием дисциплины (пакет Borland C++ версии 2.0 или 3.1).


9. Материально-техническое обеспечение дисциплины

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


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

10. Методические рекомендации по организации изучения
дисциплины

Рекомендации для преподавателя включают в себя следующее:


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

  • разработку методики изложения курса: структуры и последовательности изложения материала; составление тестовых заданий, контрольных вопросов;

  • разработку методики проведения и совершенствование тематики лабораторных работ

  • разработка методики самостоятельной работы студентов;

  • постоянную корректировку структуры, содержания курса.

Рекомендации для студента включают в себя следующее:

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

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



Рабочая программа по дисциплине

“ Программирование на языке высокого уровня ”

для студентов


направления 552800 – «Информатика и вычислительная техника»


Составитель: Трофимов Сергей Павлович


Редактор


____________________________________________________________Подписано в печать Формат 60х84 1/16

Бумага типографская Плоская печать Усл.п.л.

Уч.-изд.л. Тираж 50 Заказ Цена "С"


Редакционно-издательский отдел УГТУ-УПИ

620002, Екатеринбург, Мира 19