Информация по курсу "Основы программирования"

(весенний семестр 2012 г., лектор - Ю.С. Корухова)
В конце семестра - ЭКЗАМЕН.

ОБЪЯВЛЕНИЯ
КОНСУЛЬТАЦИЯ к экзамену по курсу "ОСНОВЫ ПРОГРАММИРОВАНИЯ"
состоится 25 июня в 14-00 в ауд. 524




15 и 17 мая лекции и практического занятия не будет.
Дополнительные дни для сдачи практических заданий:
22 мая 10.30 ауд. 248,
24 мая 8.45 ауд. 248.

12 мая - лекция (по расписанию вторника).

Тема практического занятия 3 мая :работа с файлами
Задачи: 7.13, 7.14, 7.16, 7.18, 7.24, текст еще двух задач

Тема практического занятия 26 апреля: структуры
Задачи: 6.18, 6.29, 6.30, 6.35 а, 6.28 b, 6.28 c, 6.28 d (рассматривать только списки без заглавного звена, тип элементов - int)

Тема практического занятия 12 апреля: многомерные массивы.
Задание: написать программу в которой реализованы следующие операции над массивом строк.
  • Создание массива и его заполнение
  • Упорядочение массива (строки сравнивать лексикографически, использовать функцию strcmp)
  • Поиск заданной строки в массиве.(При поиске обязательно учесть факт, что массив уже упорядорчен).
  • Удаление массива (если требуется освобождение динамической памяти)


Тема практических занятий 29 марта и 5 апреля: многомодульные программы, утилита make.
Задание 1. Программа калькулятор арифметических или логических выражений.
Скачать варианты задания.
Задание 2*. Написать программу, печатающую свой текст в стандартный вывод.


Список литературы и интернет-источников

  1. Керниган Б., Ритчи Д. Язык программирования Си 3-е издание, изд-во «Невский диалект», Санкт-Петербург, 2004г. ; 2-е издание Москва: Финансы и статистика, 1992 г. или другие издания
  2. Руденко Т.В. Сборник задач и упражнений по языку Си Издательский отдел факультета ВМиК МГУ, Москва, 1999.
  3. Робачевский А.М., Немнюгин С.А., Стесик О.Л. Операционная система UNIX, БХВ-Петербург, Санкт-Петербург, 2005.
  4. http://ejudge.ru/study/3sem/c.shtml
  5. http://www.stolyarov.info/books/unixref


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


1. Введение. Типы, константы, выражения языка Си. Операторы.

Предмет курса "Основы программирования". Краткая история и цели разработки языка Си, пример программы. Базовые типы языка Си, квалификаторы signed, unsigned, long, short, правила записи констант целого, вещественного, символьного типов. Идентификаторы. Арифметические операции в языке Си. Представление логических значений, логические и побитовые операции. Операции с побочным эффектом, понятие точки последовательных вычислений. Неявные преобразования типов при вычислении выражений и при выполнении операции присваивания. Приоритет операций и порядок вычислений. Сравнение вычисления выражений в программах на языках Си и Паскаль. Операторы языка Си: формирование оператора из выражения, условный, составной, пустой операторы, операторы цикла, оператор выбора (switch). Операторы перехода goto, break, continue и область их применения. Функции ввода/вывода чисел и символов.

2. Определение функций. Структура программы.

Функции, передача параметров. Возвращаемое значение функций, преобразования типов в операторе return. Рекурсивные функции. Структура программы на языке Си. Локализация переменных. Статические переменные, регистровые переменные. Функции с переменным числом параметров. Примеры таких функций, их вызов, доступ к списку параметров (библиотека stdarg.h), работа функции printf.

3. Работа с указателями. Массивы. Строки.

Указатели. Операции над указателями. Указатель void*. Работа с динамической памятью (malloc, calloc, realloc, free). Указатель как параметр функции (моделирование передачи параметров по ссылке), работа функции scanf. Одномерные массивы. Работа с массивами с использованием индексирования и с использованием указателей. Многомерные массивы. Массивы указателей. Инициализация переменных и массивов (по умолчанию и явная). Указатели на функции. Интерпретация сложных деклараций; typedef. Строки. Объявление, инициализация строки, перебор символов строки с использованием указателя. Функции работы со строками (библиотека string.h). Массивы строк. Аргументы командной строки.

4. Схема трансляции программы. Препроцессор.

Схема трансляции программы в ОС UNIX. Простейшие make-файлы. Препроцессор. Директивы include, define, undef, условная компиляция. Определение макросов, выполнение макроподстановок. Заголовочные файлы, защита от повторного включения. Классы памяти. Программы из нескольких единиц трансляции. Компоновка программы из нескольких единиц трансляции: правила видимости имен.

5. Определение новых типов в языке Си и их использование.

Перечислимый тип. Структуры. Доступ к полям, инициализация. Операции над структурами. Работа со структурой через указатель. Объединения (union). Размещение объединений и структур в памяти ЭВМ. Реализация списков, бинарных деревьев.

6. Работа с файлами.

Высокоуровневая работа с файлами (библиотека stdio.h). Текстовые файлы. Буферизация ввода и вывода. Потоки stdin, stdout, stderr. Работа с бинарными файлами. Позиционирование в файле.

... Страница находится в процессе разработки ...