
- •Введение в системное программирование Основные понятия и определения Программы и программное обеспечение
- •Системное программирование
- •Этапы подготовки программы
- •Системное программирование
- •Лекция 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. Классы имен
Курс лекций по системному программированию
В данном курсе представлено 9 лекций (Введение считается нулевой лекцией) по Системному програмированию – каждая лекция рассчитана на 4 академических часа (2 пары).
Введение в системное программирование 3
Основные понятия и определения 3
Программы и программное обеспечение 3
Системное программирование 4
Этапы подготовки программы 5
Лекция 1 13
1. Язык Си: Общая характеристика, историческая справкаи основные достоинства 14
2. Подготовка к выполнению и выполнение программ 14
3. Элементы языка С 15
Лекция 2 18
1. Понятие типа данных. переменные и константы. операция присваивания 19
2.Типы данных в языке си. описание данных в программе 19
3. Константы в языке Си 21
4. Арифметические операции и арифметические выражения 24
5. Операции отношения, логические операции и логические выражения 25
6. Автоматическое преобразрвание типов и операция приведения 26
7. Простейшие операторы языка си. составной оператор 27
Лекция 3 27
$ 1. Массивы переменных как однородные статические структуры данных 28
$ 2. Строки символов 29
3. Инициализация переменных и массивов 31
4. Управляющие конструкции языка си 32
Лекция 4 38
1. Адреса и указатели 38
2. Отождествление массивов и указателей.Адресная арифметика 40
3. Указатели на массивы. массивы указателей и многомерные массивы 42
4. Динамическое выделение памяти под массивы 44
5. Инициализация указателей 46
Лекция 5 46
1. Функции в языке си. формальные и фактические параметры. Механизм передачи параметров. возвращаемые значения 47
2. Использование указателей в качестве аргументов функций 49
3. Предварительное описание функций 52
4. Аргументы командной строки 53
Лекция 6 55
1. Ввод и вывод в языке си: Общие концепции 55
2. Файлы данных и каталоги. внутренняя организация и типы файлов 56
3. Стандартные функции для работы с файлами и каталогами 56
4. Внешние устройства как специальные файлы. Организация обмена со стандартными внешними устройствами 67
5. Операции ввода/вывода через порты микропроцессоров intel 8086/80286 68
Лекция 7 69
1. Общая структура программы на языке си. Время существования и видимость переменных. блоки 69
2. Классы памяти 73
3. Рекурсивные вызовы функций. Реализация рекурсивных алгоритмов 76
4. Препроцессор языка Си 76
5. Модели памяти, поддерживаемые компилятором ibm c/2 79
Лекция 8 80
1. Структуры в языке си: основные понятия 80
2. Массивы структур 82
3. Указатели на структуры 83
4. Вложение структур 84
5. Структуры и функции 85
6. Объединения 86
7. Перечисления 87
8. Определение и использование новых типов данных 87
9. Классы имен 88
Введение в системное программирование Основные понятия и определения Программы и программное обеспечение
Определение (ГОСТ) |
Программа - это данные, предназначенные для управления конкретными компонентами системы обработки информации (СОИ) в целях реализации определенного алгоритма. |
Определения даются по: ГОСТ 19781-90. Обеспечение систем обработки информации программное. Термины и определения. - М.:Изд-во стандартов, 1990.
Обратить внимание: программа - это данные. Один из основных принципов машины фон Неймана - то, что и программы, и данные хранятся в одной и той же памяти. Сохраняемая в памяти программа представляет собой некоторые коды, которые могут рассматриваться как данные. Возможно, с точки зрения программиста программа - активный компонент, она выполняет некоторые действия. Но с точки зрения процессора команды программы - это данные, которые процессор читает и интерпретирует. С другой стороны программа - это данные с точки зрения обслуживающих программ, например, с точки зрения компилятора, который на входе получает одни данные - программу на языке высокого уровня (ЯВУ), а на выходе выдает другие данные - программу в машинных кодах.
Определение (ГОСТ) |
Программное обеспечение (ПО) - совокупность программ СОИ и программных документов, необходимых для их эксплуатации |
Существенно, что ПО - это программы, предназначенные для многократного использования и применения разными пользователями. В связи с этим следует обратить внимание на ряд необходимых свойств ПО.
-
Необходимость документирования. По определению программы становятся ПО только при наличии документации. Конечный пользователь не может работать, не имея документации. Документация делает возможным тиражирование ПО и продажу его без его разработчика. По Бруксу ошибкой в ПО является ситуация, когда программное изделие функционирует не в соответствии со своим описанием, следовательно, ошибка в документации также является ошибкой в программном изделии.
-
Эффективность. ПО, рассчитанное на многократное использование (например, ОС, текстовый редактор и т.п.) пишется и отлаживается один раз, а выполняется многократно. Таким образом, выгодно переносить затраты на этап производства ПО и освобождать от затрат этап выполнения, чтобы избежать тиражирования затрат.
-
Надежность. В том числе:
-
Тестирование программы при всех допустимых спецификациях входных данных
-
Защита от неправильных действий пользователя
-
Защита от взлома - пользователи должны иметь возможность взаимодействия с ПО только через легальные интерфейсы.
Готье: "Ошибки в системе возможны из-за сбоев аппаратуры, ошибок ПО, неправильных действий пользователя. Первые - неизбежны, вторые - вероятны, третьи - гарантированы". Появление ошибок любого уровня не должно приводить к краху системы. Ошибки должны вылавливаться диагностироваться и (если их невозможно исправить) превращаться в корректные отказы. Системные структуры данных должны сохраняться безусловно. Сохранение целостности пользовательских данных желательно.
-
Возможность сопровождения. Возможные цели сопровождения - адаптация ПО к конкретным условиям применения, устранение ошибок, модификация. Во всех случаях требуется тщательное структурирование ПО и носителем информации о структуре ПО должна быть программная документация. Адаптация во многих случаях м.б. передоверена пользователю - при тщательной отработке и описании сценариев инсталляции и настройки. Исправление ошибок требует развитой сервисной службы, собирающей информацию об ошибках и формирующей исправляющие пакеты. Модификация предполагает изменение спецификаций на ПО. При этом, как правило, должны поддерживаться и старые спецификации. Эволюционное развитие ПО экономит вложения пользователей.