Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектирование программ и программирование на С++ Часть 1. Структурное.pdf
Скачиваний:
18
Добавлен:
15.11.2022
Размер:
3.8 Mб
Скачать

Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Пермский национальный исследовательский политехнический университет»

О.Л. Викентьева, А.Н. Гусин, O.A. Полякова

ПРОЕКТИРОВАНИЕ ПРОГРАММ И ПРОГРАММИРОВАНИЕ НА C++

Часть I СТРУКТУРНОЕ ПРОГРАММИРОВАНИЕ

Рекомендовано УМО РАЕ по классическому университетскому и техническому образованию в качестве учебного пособия для студентов высших учебных заведений, обучающихся

по направлению подготовки: 230100 - «Информатика и вычислительная техника» и специальностям: 230101.65 - «Вычислительные машины, комплексы, системы и сети»,

230102.65 - «Автоматизированные системы обработки информации и управления»

Издательство Пермского национального исследовательского

политехнического университета

2012 НАУЧНАЯ БИБЛИО

УДК 681.3 В43

Рецензенты:

канд. физ.-мат. наук, доцент Л.В. Шестакова (Пермский филиал Национального исследовательского

университета «Высшая школа экономики»); доцент А.М. Ноткин

(Пермский национальный исследовательский политехнический университет)

Викентьева, О.Л.

В43 Проектирование программ и программирование на C++: учеб, пособие: в 2 ч. Ч. I. Структурное программирование / О.Л. Викентьева, А.Н. Гусин, О.А. Полякова. - Пермь: Изд-во Перм. нац. исслед. политехи, ун-та, 2012. - 139 с.

ISBN 978-5-398-00761-9

Рассмотрены вопросы, касающиеся объектно ориентированного анализа и проектирования сложных программных систем, реализации объектно ориенти­ рованных программ на ЯВУ C++: основные операторы C++, массивы данных, функции, динамические структуры дашгых.

Предназначено для студентов направления 230100 «Информатика и вы­ числительная техника» дневной и заочной форм обучения.

УДК 681.3

ISBN 978-5-398-00761-9

©ПНИПУ, 2012

Введение........................................................................................

 

6

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

 

8

2. Среда программирования Microsoft VisualStudio.................

10

2.1. Общий вид окна................................................................

 

10

2.2. Создание консольного приложения иработа с ним ....

11

3. Структура программы на языке C/C++

 

16

4. Элементы языка C/C++

 

19

5. Константы в C/C++

 

20

6. Типы данных в C/C++

 

22

7. Переменные...............................................................................

 

24

8. Выражения.................................................................................

 

26

9. Ввод и вывод данных

 

27

10. Операторы C/C++

 

29

10.1. Базовые конструкции структурного

 

 

программирования

 

29

10.2. Оператор «выражение»

 

30

10.3. Составные операторы.....................................................

 

30

10.4. Операторы выбора..........................................................

 

30

10.5. Операторы циклов..........................................................

 

32

10.6. Операторы перехода.......................................................

 

34

11. Примеры решения задач с использованием основных

 

операторов C++

 

36

11.1. Программирование ветвлений......................................

 

37

11.2. Программирование арифметических циклов..............

39

11.3. Программирование итерационных циклов.................

40

11.4. Программирование вложенных циклов......................

 

44

12. Массивы

 

46

12.1. Определение массива в C/C++

 

46

12.2. Примеры решения задач с использованием

 

массивов..........................................................................

 

47

13. Указатели

 

50

13.1. Понятие указателя..........................................................

 

50

13.2. Динамическая память..................................

,.................

52

13.3. Операции с указателями................................................

 

52

14. Ссылки.....................................................................................

 

55

15. Указатели и массивы.............................................................

 

56

15.1. Одномерные массивы и указатели................................

56

15.2. Многомерные массивы и указатели............................

57

15.3. Динамические массивы..................................................

57

16. Символьная информация и строки.......................................

61

16.1. Представление символьной информации...................

61

16.2. Библиотечные функции для работы со строками......

63

16.3. Примеры решения задач с использованием строк.....

64

17. Функции в C++

68

17.1. Объявление и определение функций............................

68

17.2. Прототип функции..........................................................

71

17.3. Параметры функции.......................................................

71

17.4. Локальные и глобальные переменные........................

75

17.5. Функции и массивы........................................................

76

17.5.1. Передача одномерных массивов

 

как параметров функции...................................

76

17.5.2. Передача строк в качестве параметров

 

функций...............................................................

79

17.5.3. Передача многомерных массивов

 

в функцию............................................................

80

17.6. Функции с начальными значениями параметров

 

(по умолчанию)

82

17.7. Подставляемые (inline) функции..................................

83

17.8. Функции с переменным числом параметров...............

84

17.9. Рекурсия.............................................................................

86

17.10. Перегрузка функций.....................................................

88

17.11. Шаблоны функций........................................................

89

17.12. Указатель на функцию..................................................

92

17.13. Ссылки на функцию

95

18. Типы данных, определяемые пользователем

96

18.1. Переименование типов...................................................

96

18.2. Перечисления...................................................................

96

18.3. Структуры........................................................................

96

18.3.1. Работа со структурами......................................

98

18.3.2. Битовые поля

99

18.3.3. Объединения

100

19. Динамические структуры данных........................................

102

19.1. Создание элемента списка.............................................

103

19.2. Создание списка из п элементов...................................

104

19.3. Перебор элементов списка............................................

105

19.4. Удаление элемента с заданным номером

106

19.5. Добавление элемента с заданным номером...............

108

19.6. Двунаправленные списки..............................................

109

19.7. Очереди и стеки..............................................................

114

19.8. Бинарные деревья

115

19.9. Обход дерева...................................................................

117

19.10. Формирование дерева..................................................

119

19.11. Удаление элемента из дерева......................................

122

19.12. Обработка деревьев с помощью рекурсивного

 

обхода.............................................................................

124

20. Препроцессорные средства...................................................

125

20.1. Стадии и команды препроцессорной обработки.......

125

20.2. Директива #define............................................................

125

20.3. Включение текстов из файлов......................................

126

20.4. Условная компиляция....................................................

129

20.5. Макроподстановки средствами препроцессора.........

130

21. Технология создания программ

133

21.1. Проектирование программы.........................................

133

21.2. Кодирование и документирование программы.........

135

Список литературы......................................................................

138

В процессе создания промышленных программных продуктов людям приходится сталкиваться с проблемой преодоления сложности, лежащей в самой природе таких систем. От этой сложности невозмож­ но избавиться, пренебрегая отдельными проявлениями поведения сис­ темы, как в физике. С этой сложностью можно только справиться.

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

Сложность программного обеспечения определяется:

-сложностью реальной предметной области, из которой исхо­ дит заказ на разработку;

-трудностью управления процессом разработки;

-необходимостью обеспечить достаточную гибкость программы;

-неудовлетворительными способами описания поведения боль­ ших дискретных систем.

Неумение создавать сложные программные системы проявляется

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

Цель проектирования - выявление ясной и относительно про­ стой внутренней структуры системы, иногда называемой архитекту­ рой. Результатами процесса проектирования являются модели, позво­ ляющие понять структуру будущей системы, определить требования

инаметить способы реализации.

Главным принципом проектирования любой сложной системы является разделение последней на все меньшие и меньшие подсисте­ мы, каждую из которых можно проектировать и совершенствовать независимо. В этом случае для понимания любого уровня системы потребуется одновременно держать в уме информацию лишь о не­ многих ее частях.

Следующим по важности принципом является принцип иерар­ хического упорядочивания, предполагающий организацию составных

частей проблемы в иерархические древовидные структуры с добав­ лением новых деталей на каждом уровне.

На данный момент существуют два основных подхода к анализу предметной области и проектированию системы:

1.Разделение по алгоритмам концентрирует внимание на поряд­ ке происходящих событий: каждый модуль системы выполняет один из этапов общего процесса.

2.Разделение по объектам представляет предметную область со­ вокупностью автономных действующих лиц, которые взаимодейст­ вуют друг с другом, чтобы обеспечить поведение системы, соответ­ ствующее более высокому уровню.

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

и объектно ориентированного анализа соответственно.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]