Рабочая программа для специальности: 220400 Программное обеспечение вычислительной техники и автоматизированных систем Факультет Автоматики и вычислительной техники (автф)

Вид материалаРабочая программа

Содержание


Всего аудиторных занятий - 60 часов
Цели и задачи преподавания дисциплины
СОДЕРЖАНИЕ ТЕОРЕТИЧЕСКОГО РАЗДЕЛА ДИСЦИПЛИНЫ (ЛЕКЦИИ) (26 часов)
ОСНОВЫ ЯЗЫКА СИ (3 часа)
УКАЗАТЕЛИ (3 часа)
ФУНКЦИИ (4 часа)
КЛАССЫ ПАМЯТИ (2 часа)
ПРЕПРОЦЕССОРНЫЕ СРЕДСТВА (2 часа)
СИСТЕМА ВВОДА-ВЫВОДА И РАБОТА С ФАЙЛАМИ В ЯЗЫКЕ СИ (4 часа)
Программа самостоятельной познавательной деятельности
Текущий и итоговый контроль результатов изучения дисциплины
Учебно-методическое обеспечение дисциплины
Подобный материал:




Министерство образования Российской Федерации

ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ


УТВЕРЖДАЮ

Декан АВТФ

____________ Ю.С.Мельников

«___»___________ 2001 г.


АЛГОРИТМИЧЕСКИЕ ЯЗЫКИ И ПРОГРАММИРОВАНИЕ Ч.2


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


220400 - Программное обеспечение вычислительной техники
и автоматизированных систем



Факультет - Автоматики и вычислительной техники (АВТФ)

Обеспечивающая кафедра - Автоматики и компьютерных систем (АиКС)

Курс - второй

Семестр - четвертый

Учебный план набора 2001 года с изменениями года


Распределение учебного времени

Лекции - 26 часов (ауд.)

Лабораторные занятия - 34 часа (ауд.)

Всего аудиторных занятий - 60 часов

Самостоятельная (внеаудиторная) работа - 68 часов

Общая трудоемкость - 128 часов


Зачет в четвертом семестре


2001 г.


ПРЕДИСЛОВИЕ


  1. Рабочая программа составлена на основе ГОС по специальности 220400 Программное обеспечение вычислительной техники и автоматизированных систем, утвержденного 27.03.00 г., учебного плана ТПУ по подготовке инженеров по специальности 220400 РАССМОТРЕНА и ОДОБРЕНА на заседании обеспечивающей кафедры Автоматики и компьютерных систем «_6_»___09____ 2001 г., протокол № _1_.



  1. Разработчик доцент каф. АиКС И.В.Цапко



  1. Зав. обеспечивающей каф. АиКС Г.П.Цапко



  1. Рабочая программа СОГЛАСОВАНА с факультетом, выпускающими кафедрами специальности; СООТВЕТСТВУЕТ действующему плану.



Зав. выпускающей кафедры

Автоматики и компьютерных

систем, профессор Г.П.Цапко


АННОТАЦИЯ


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


ABSTRACT


The present syllabus is a program of studying a course on discipline «Programming», purposed for training the specialists of the Computer Science Faculty on professions 220400 - Software of Computing machinery and automatic systems. The syllabus is drawn up on the basis of state educational standard on professions 220400 Software of Computing machinery and automatic systems, approved 12.10.94, and scholastic plan on this professions. Its structure, contents and registration of program corresponds a Standard TPU «STI TPU 2.4.01-99». The course includes main concepts of programming theory, stages of deciding the tasks on PC, bases of algorithmisation, programming on language of the high level, special questions, concerning presentations of main structures, procedures, types of data, dynamic structures of data, ways of programs design.


ЦЕЛИ И ЗАДАЧИ ПРЕПОДАВАНИЯ ДИСЦИПЛИНЫ


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

В результате изучения дисциплины «Программирование» студенты АВТФ данной специальности должны обладать таким составом знаний и умений, которые достаточны для дальнейшего изучения других общетехнических и специальных дисциплин, определенных для данной специальности.

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

Целью изучения курса «Программирование» является глубокое освоение студентами языка Си в его Borland реализации и на его основе овладение основными приемами и методами программирования и алгоритмизации.

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

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

должен приобрести навыки:
  • грамотной постановки задач, возникающих в практической деятельности для их решения с помощью ЭВМ;
  • работы с языком Си, в том числе и в интегрированной среде;
  • формализованного описания поставленных задач.


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

Неотъемлемой частью курса является лабораторный практикум, при прохождении которого студентами приобретаются навыки программирования в интегрированной среде Borland C++.


СОДЕРЖАНИЕ ТЕОРЕТИЧЕСКОГО РАЗДЕЛА ДИСЦИПЛИНЫ (ЛЕКЦИИ) (26 часов)


ВВЕДЕНИЕ (1 час)

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

Этапы решения задачи на ЭВМ. Правила хорошего стиля программирования. Тестирование и отладка программ. Проектирование и документирование программ. Характеристики качества программного обеспечения. Характеристики и свойства языков программирования.


ОСНОВЫ ЯЗЫКА СИ (3 часа)

Структура и компоненты простой программы. Простейшая программа. Типы данных. Объявление переменных. Инициализация переменных. Константы в языке СИ. Именованные константы. Ввод-вывод.

Операции языка СИ: Арифметические, Операции отношения и логические операции, Операция присваивания, Операция запятая, Операция sizeof, Условная трехместная операция, Поразрядные (побитовые) операции. Приведение типов.

Управляющие операторы. Условные операторы. Операторы цикла. Операторы break и continue в циклах. Оператор goto.


УКАЗАТЕЛИ (3 часа)

Операции над указателями. Указатели и массивы (чисел и символов). Указатели и многомерные массивы. Массивы указателей.


ТИПЫ ДАННЫХ, ОПРЕДЕЛЯЕМЫЕ ПОЛЬЗОВАТЕЛЕМ (5 часов)

Массивы. Символьная информация и строки. Ввод-вывод символьных данных. Строки. Ввод-вывод строк. Функции для работы со строками. Переименование типов - typedef.

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


ФУНКЦИИ (4 часа)

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

Массивы указателей на функции. Указатели на функции как параметры. Указатель на функцию как возвращаемое функцией значение. Функции с переменным числом параметров. Перегрузка функций (для СИ++). Аргументы функции main(). Рекурсивные функции.


КЛАССЫ ПАМЯТИ (2 часа)

Динамическое распределение памяти. Расширения языка СИ. Сегменты. Модели памяти. Указатели типа near и far. Указатели типа huge.


ПРЕПРОЦЕССОРНЫЕ СРЕДСТВА (2 часа)

Директивы препроцессора: Директива #define, Директива #include, Директивы условной компиляции, Директива #error, Директива #pragma, Директива #line. Предопределенные макросы


СИСТЕМА ВВОДА-ВЫВОДА И РАБОТА С ФАЙЛАМИ В ЯЗЫКЕ СИ (4 часа)

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


ЯЗЫК С++ (2 часа)

Введение. Характеристики объектно-ориентированного языка. Понятие класса в С++. Конструктор и деструктор. Конструктор с параметрами. Перегрузка конструкторов. Структуры, объединения и классы. Наследование.


.


ПЕРЕЧЕНЬ ЛАБОРАТОРНЫХ РАБОТ (34 часа)

  1. Ввод-вывод. Предельные значения фиксированных констант (2 часа).
  2. Операции и операторы языка Си (2 часа).
  3. Обработка массива с использованием адресной арифметики (4 часа).
  4. Обработка строковой информации (4 часа).
  5. Динамические массивы (2 часа).
  6. Функции (2 часа).
  7. Рекурсивные функции (2 часа).
  8. Структуры (2 часа).
  9. Обработка битовых последовательностей (2 часа).
  10. Файлы (4 часа).
  11. Связные списки (4 часа).
  12. Классы (4 часа).


ПРОГРАММА САМОСТОЯТЕЛЬНОЙ ПОЗНАВАТЕЛЬНОЙ ДЕЯТЕЛЬНОСТИ


Самостоятельная (внеаудиторная) работа студентов состоит в проработке лекционного материала, подготовке к лабораторным работам и контрольным работам. Она составляет 68 часов и включает следующие пункты:
  1. проработка курса лекций и подготовка к лабораторным работам (18 ч.)
  2. проработка курса лекций и подготовка к контрольным работам (18 ч.)
  3. подготовка материала по следующим темам (32 ч):
    • Функции с переменным числом параметров;
    • Перегрузка функций;
    • Файлы в С++.


ТЕКУЩИЙ И ИТОГОВЫЙ КОНТРОЛЬ РЕЗУЛЬТАТОВ ИЗУЧЕНИЯ ДИСЦИПЛИНЫ


В соответствии с рейтинговой системой при изучении курса «Программирование» проводится 3 рубежные контрольные работы.


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

«Указатели и функции с указателями»
  1. Что напечатается в результате работы этой программы?

#include

#define PC(X,Y) printf("%c %c\n", X, Y)

char ref[ ]={ 'D', 'O', 'L', 'T'};

main ()

{

char *ptr;

int index;

for (index=0, ptr=ref; index<4; index++, ptr++)

PC(ref[index], *ptr);

}

Ответ: D D

O O

L L

T T

  1. Определите значение *ptr и *(ptr+2)

int *ptr;

static int boop[4]={12,21,121,212};

ptr=boop;


Ответ: 12 и 121

  1. Определите значение *ptr и *(ptr+2)

float *ptr;

static float boop[2][2]={{1.0,2.0},{3.0,4.0}};

ptr=boop[0];


Ответ: 1.0 и 3.0

  1. Определите значение *ptr и *(ptr+2)

int *ptr;

static int boop[4]={12,21};

ptr=boop;


Ответ: 12 и 0 (автоматическая инициализация нулем)

  1. Определите значение *ptr и *(ptr+2)

int *ptr;

static int boop[2][2]={12,21,121};

ptr=boop[0];


Ответ: 12 и 121

  1. Определите значение *ptr и *(ptr+2)

int *ptr;

static int boop[2][2]={{12},{21,121}};

ptr=boop[0];


Ответ: 12 и 21

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

Ответ:

int sum (int x, int y)

{

return (x+y);

}

  1. Напишите функцию, которая берет две переменные типа int и заменяет их соответственно на сумму и разность

Ответ:

void sum (int *x, int *y)

{int sum, dif;

sum=*x+*y;

dif=*x-*y;

*x=sum;

*y=dif;

}


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

«Структурные типы данных, файлы.»
  1. Исправьте шаблон:

structure {

char it;

int num[20];

char *tog;

};


Ответ:

struct att{

char it;

int num[20];

char *tog;

};

  1. Что напечатает программа?

#include


struct adr{

int house;

char *street;

int flat;

};

void main(void)

{adr abc={30,"Lenin",83};

adr *ttt;

ttt=&abc;

cout <flat<
cout <
cout <street[1]<<" "<
}


Ответ:

30 83

Lenin

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


Ответ:

struct month {

char name [10]; //или char *name;

char abbrev[4]; //или char *abbrev;

int days;

int monumb;

}

  1. Значение какого типа возвращает функция fseek()?


Ответ: int

  1. Исправьте программу


void main(void)

{ file *f1;

char str[80];

f1=fopen("story","r");

while (fgets(str,80,f1)!=NULL)

puts(str);

}


Ответ:

#include

void main(void)

{ FILE *f1;

char str[80];

f1=fopen("story","r");

while (fgets(str,80,f1)!=NULL)

puts(str);

fclose(f1);

}


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

«Динамическое распределение памяти. Динамические структуры данных.»
  1. Как вы могли бы распределить память для размещения массива структур?


Ответ:

void main(void)

{struct wine {

int a;

char c;

};

wine *prt= new wine[10*sizeof(wine)];

delete prt;

}

  1. Исправьте программу:

#include

void main(void)

{

char pointer=new [100];

if (pointer!=NULL)

cout << "Память успешно выделена" << endl;

else

cout << "Ошибка выделения памяти" << endl;

}


Ответ:


#include

void main(void)

{

char *pointer=new char[100];

if (pointer!=NULL)

cout << "Память успешно выделена" << endl;

else

cout << "Ошибка выделения памяти" << endl;

}

  1. При помощи какого оператора освобождается выделенная память?


Ответ: delete.

  1. Опишите структуру, использующуюся для хранения односвязного списка.


Ответ:

struct snd

{ float val;

snd *n ;

} DL;


5. Опишите структуру, использующуюся для хранения двусвязного списка.


Ответ:

struct snd

{ float val;

snd *n ;

snd *m;

} DL;


УЧЕБНО-МЕТОДИЧЕСКОЕ ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ


Перечень технических и программных средств

  1. Компьютеры класса IBM PC с операционной системой Windows-95, 97, 98.
  2. Microsoft Offis.
  3. Borland C++, версии 3.1.


Перечень рекомендуемой литературы

  1. Джамса К. Учимся программировать на языке С++: Пер. с англ. - М.: Мир, 1997. - 320 с.
  2. Березин Б.И., Березин С.Б. Начальный курс С и С++. - М.: ДИАЛОГ-МИФИ, 1996. - 288 с.
  3. Цимбал А.А., Майоров А.Г., Козодаев М.А. Козодаев М.А. Turbo C++: язык и его применение. - М.: Джен Ай Лтд., 1993. - 512 с.
  4. Намиот Д.Е. Основные особенности языка программирования С++. Реализация Turbo C++. - М.: МП «Память», 1991. - 96 с.
  5. Бруно Бабэ. Просто и ясно о Borland C++: Пер. с англ. - М.:БИНОМ.- 400 с.
  6. Подбельский В.В., Фомин С.С. Программирование на языке Си: Учеб.пособие. - 2-е доп.изд. - М.: Финансы и статистика, 1999. - 600 с.: ил.
  7. Липаев В.В. Проектирование программных средств: Учеб. пособие для вузов по спец. “Автом. сист. обр. информ. и упр.”. — М.: Высш. шк., 1990. — 303 с.: ил.
  8. Фокс Дж. Программное обеспечение и его разработка: Пер. с англ. — М.: Мир, 1985. — 368 с.: ил.
  9. Мик Б., Хит П., Рашби Н. и др. Практическое руководство по программированию: Пер. с англ. — М.: Радио и связь, 1986. — 168 с.: ил.


Методическое обеспечение курса

  1. Интегрированная среда программирования системы Borland C++. Методические указания к выполнению лабораторных работ. Составитель: Цапко И.В., Томск, ТПИ, 2000. - 36 с.
  2. Программирование. Программа и методические указания по курсу «Программирование» для студентов заочного отделения специальности 220400. Составитель: Цапко И.В., Томск, ТПУ, 2000.