Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТиТП. Экзамен. Первый семестр.docx
Скачиваний:
1
Добавлен:
21.12.2018
Размер:
109.78 Кб
Скачать

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

Санкт-Петербургский государственный политехнический университет

Факультет технической кибернетики

кафедра “Системный анализ и управление”

Теория и технология программирования.

конспект лекций

(1 семестр 2011)

доцент кафедры САиУ

Хлопин Сергей Владимирович

Санкт-Петербург

2011

Оглавление.

Этапы создания программного продукта. 3

Структурирование программы. 4

Этапы получения программного кода 5

Функциональная декомпозиция 6

Алгоритм программы 7

Функция main 14

Блоки кода 15

Комментарии 15

Базовые понятия языка Си. 16

Специфика присвоения имён. 17

Ключевые слова Си 18

Типы данных. 20

Функции 21

Блоки кода программы. 22

Операторы языка C. 23

Базовые типы данных. 27

Файловый ввод - вывод. 28

Понятие, объявление и определение. 29

Ключевое слово typedef. 30

Виды компоновки программ: 30

Область видимости. 31

Область видимости переменной. 32

Оператор разрешения области видимости. 34

Пространство имён – namespace. 34

Этапы создания программного продукта.

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

Постановка задачи

Документирование

Проектирование

Оценка риска

Верификация

Кодирование

Тестирование

Уточнения

Производство

Сопровождение

Рис. 1. Этапы создания программного продукта.

Чем хуже организованны этапы разработки, тем больше требуется время на программирование, и тем самым повышается стоимость программы.

Структурирование программы.

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

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

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

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

Рис. 2. Декомпозиция задачи на подзадачи.

Рис. 3. Файловая декомпозиция.

Разбиение на файлы позволяет:

  1. лучше ориентироваться в тексте программы;

  2. уменьшить общее количество времени создания нового загрузочного модуля компилятором.

Но между файлами возникают взаимодействия, поэтому программист обязан за ними следить.

Этапы получения программного кода

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

  1. Формирование исходного кода в текстовом редакторе.

  2. Предварительная обработка текста процессором.

  3. Компиляция объектного файла.

  4. Компоновка и сборка исполняемого файла.

  5. Отладка (добавляется отладочная информация).

Функциональная декомпозиция

Функция – первый уровень абстракции программирования (один и тот же код работает с разными наборами данных), при этом решаются две задачи:

  1. улучшается структура текста программы;

  2. функция является средством, позволяющим избежать дублирования кода

Основной задачей программиста является «объяснение» компилятору, каким образом компилятор должен формировать вызов по отношению к данному модулю функции. То есть, программист должен правильно задать входные данные.

Пример функциональной декомпозиции изображен на следующей схеме:

main ( )

{…

вызов f1 ( )

вызов f4 ( )

}

f1 ( )

{…

вызов f2 ( )

вызов f3 ( )

}

f4 ( )

{

}

f2 ( )

{…

}

f3 ( )

{…

}

В C++ функция — это фрагмент (блок) кода, оформленный определенным образом (в частности, ограничен фигурными скобками) и выполняющий некоторое законченное действие. В языках C функция принимает на вход множество значений, но возвращает всегда одно.