
- •Введение в системное программирование Основные понятия и определения Программы и программное обеспечение
- •Системное программирование
- •Этапы подготовки программы
- •Системное программирование
- •Лекция 1
- •1. Язык Си: Общая характеристика, историческая справкаи основные достоинства
- •2. Подготовка к выполнению и выполнение программ
- •3. Элементы языка с
- •Лекция 2
- •1. Понятие типа данных. Переменные и константы. Операция присваивания
- •2.Типы данных в языке си. Описание данных в программе
- •3. Константы в языке Си
- •4. Арифметические операции и арифметические выражения
- •5. Операции отношения, логические операции и логические выражения
- •6. Автоматическое преобразрвание типов и операция приведения
- •7. Простейшие операторы языка си. Составной оператор
- •Лекция 3
- •3. Инициализация переменных и массивов
- •4. Управляющие конструкции языка си
- •Лекция 4
- •1. Адреса и указатели
- •2. Отождествление массивов и указателей.Адресная арифметика
- •3. Указатели на массивы. Массивы указателей и многомерные массивы
- •4. Динамическое выделение памяти под массивы
- •5. Инициализация указателей
- •Лекция 5
- •1. Функции в языке си. Формальные и фактические параметры. Механизм передачи параметров. Возвращаемые значения
- •2. Использование указателей в качестве аргументов функций
- •3. Предварительное описание функций
- •4. Аргументы командной строки
- •Лекция 6
- •1. Ввод и вывод в языке си: Общие концепции
- •2. Файлы данных и каталоги. Внутренняя организация и типы файлов
- •3. Стандартные функции для работы с файлами и каталогами
- •4. Внешние устройства как специальные файлы. Организация обмена со стандартными внешними устройствами
- •5. Операции ввода/вывода через порты микропроцессоров intel 8086/80286
- •Лекция 7
- •1. Общая структура программы на языке си. Время существования и видимость переменных. Блоки
- •2. Классы памяти
- •3. Рекурсивные вызовы функций. Реализация рекурсивных алгоритмов
- •4. Препроцессор языка Си
- •5. Модели памяти, поддерживаемые компилятором ibm c/2
- •Лекция 8
- •1. Структуры в языке си: основные понятия
- •2. Массивы структур
- •3. Указатели на структуры
- •4. Вложение структур
- •5. Структуры и функции
- •6. Объединения
- •7. Перечисления
- •8. Определение и использование новых типов данных
- •9. Классы имен
Лекция 1
Язык Си: историческая справка, общая характеристика, основные достоинства. Подготовка к выполнению и выполнение программ в операционной среде MS DOS. Элементы языка Си: множество символов, ключевые слова, константы и переменные, операции и операторы, управляющие конструкции. Примеры простейших программ: разбор элементов языка.
1. Язык Си: Общая характеристика, историческая справкаи основные достоинства
Язык Си является языком программирования общего назначения. Появление его тесно связано с созданием операционной системы UNIX, ибо он разрабатывался специально для этой системы и на нем написана большая часть системного программного обеспечения UNIXа. Однако язык Си не ориентирован на работу только лишь в одной операционной системе или на какой-либо конкретной машине. Он представляет собой универсальный, машиннонезависимый, легко переносимый язык программирования, в равной степени подходящий как для системного программирования, так и для решения задач вычислительной математики, технических и коммерческих приложений. Язык Си - это алгоритмический язык "не очень высокого уровня". Приведенная характеристика означает, что он дает возможность работы с такими типами объектов и позволяет выполнять такие операции, которые традиционно относят к машинноориентированным языкам "низкого уровня", подобным языку ассемблера. Примером упомянутых объектов могут служить символы, числа (со знаком и без), адреса оперативной памяти и указатели, битовые цепочки и т.д., над которыми можно проделывать арифметические, логические и поразрядные операции. В то же время, Си не обеспечивает возможности работы со строками, множествами, массивами или списками как с единым целым. В языке Си имеется большой набор управляющих конструкций для реализации циклических и разветвленных алгоритмов, средства для блочного и модульного программирования, а также возможность гибкого управления процессом выполнения программы. Все это позволяет охарактеризовать Си как язык структурного программирования. Однако сам по себе язык Си не обеспечивает возможности управления вводом/ выводом и в нем нет операторов, подобных операторам READ и WRITE в FORTRANе. Все же действие по обмену информацией с периферийными устройствами выполняются при помощи явным образом вызываемых внешних функций, входящих в состав стандартных библиотек. Появление Си принято связывать с именем Мартина Ритчи, подготовившего в 1972 году первую версию этого языка в ходе работ над операционной системой UNIX для ЭВМ семейства PDP. Однако исторически его возникновение следует связывать с, во многом машиннозависимым, языком B, созданным Кеном Томпсоном на основе языка BCPL. В настоящее время из 13000 строк системного кода UNIXа лишь 800 строк, выполняющих работу наиболее низкого уровня, написаны на языке ассемблера. Остальная же часть этой операционной системы и множество ее программных утилит написаны на Си. В заключение перечислим некоторые основные свойства языка Си:
- широкий набор управляющих конструкций для организации циклов и условных переходов, обеспечивающих возможность написания гибких и хорошо структурированных программ;
- большой набор операторов и операций, многие из которых допускают прямую трансляцию в машинный код;
- многообразие примитивных типов данных, включая возможность управления длиной целочисленных и вещественных переменных;
- наличие средств для конструирование новых агрегатированных типов данных;
- возможность непосредственной работы с машинными адресами через аппарат указателей;
- наличие препроцессора, позволяющего вносить изменение в текст программы непосредственно перед ее компиляцией;
- блочная структура программного кода, возможность работы с различными классами памяти и средства для модульного программирования.