Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_СП_2004_1_00.doc
Скачиваний:
69
Добавлен:
04.11.2018
Размер:
882.69 Кб
Скачать

Курс лекций по системному программированию

В данном курсе представлено 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.

Обратить внимание: программа - это данные. Один из основных принципов машины фон Неймана - то, что и программы, и данные хранятся в одной и той же памяти. Сохраняемая в памяти программа представляет собой некоторые коды, которые могут рассматриваться как данные. Возможно, с точки зрения программиста программа - активный компонент, она выполняет некоторые действия. Но с точки зрения процессора команды программы - это данные, которые процессор читает и интерпретирует. С другой стороны программа - это данные с точки зрения обслуживающих программ, например, с точки зрения компилятора, который на входе получает одни данные - программу на языке высокого уровня (ЯВУ), а на выходе выдает другие данные - программу в машинных кодах.

Определение (ГОСТ)

Программное обеспечение (ПО) - совокупность программ СОИ и программных документов, необходимых для их эксплуатации

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

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

  2. Эффективность. ПО, рассчитанное на многократное использование (например, ОС, текстовый редактор и т.п.) пишется и отлаживается один раз, а выполняется многократно. Таким образом, выгодно переносить затраты на этап производства ПО и освобождать от затрат этап выполнения, чтобы избежать тиражирования затрат.

  3. Надежность. В том числе:

  • Тестирование программы при всех допустимых спецификациях входных данных

  • Защита от неправильных действий пользователя

  • Защита от взлома - пользователи должны иметь возможность взаимодействия с ПО только через легальные интерфейсы.

Готье: "Ошибки в системе возможны из-за сбоев аппаратуры, ошибок ПО, неправильных действий пользователя. Первые - неизбежны, вторые - вероятны, третьи - гарантированы". Появление ошибок любого уровня не должно приводить к краху системы. Ошибки должны вылавливаться диагностироваться и (если их невозможно исправить) превращаться в корректные отказы. Системные структуры данных должны сохраняться безусловно. Сохранение целостности пользовательских данных желательно.

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