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



ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ РФ

ПЕРМСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Кафедра Информационных технологий и автоматизированных систем

 

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

 

Проектирование программ и программирование на С++:

структурное программирование

(часть I)

 

 

Пермь 2007


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

 

УДК 681.3

 

Учебное пособие по изучению курсов «Алгоритмические языки и программирование», «Программирование на языках высокого уровня» для студентов направления 230100 «Информатика и вычислительная техника» специальностей 230101 «Вычислительные машины, комплексы, системы и сети», 230101 «Автоматизированные системы обработки информации и управления» для дневной и заочной форм обучения. Сост. Викентьева О.Л., Гусин А.Н., Полякова О.А.; Перм. гос. техн. ун-т. –Пермь, 2007,100с.

Рецензенты: доцент каф. Высшей математики и информатики Пермского филиала Государственного университета Высшая школа экономики, кандидат физико-математических наук Шестакова Л. В., доцент каф. Информационных технологий и автоматизированных систем Пермского государственного технического университета Ноткин А. М.

 

 

(с) Пермскй государственный

Технический университет, 2007


Оглавление

Введение. 5

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

2. Среда программирования Visual C++ 6.0. 7

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

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

2.3. Компиляция и запуск проекта. 9

2.4. Отладка программы.. 9

2.5. Создание рабочего пространства для нескольких проектов. 9

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

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

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

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

6.1. Тип int.. 14

6.2. Тип char.. 14

6.3. Тип wchar_t 15

6.4. Тип bool 15

6.5. Типы с плавающей точкой. 15

6.6. Тип void. 15

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

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

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

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

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

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

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

10.3. Операторы выбора. 20

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

10.5. Операторы перехода. 23

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

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

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

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

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

12. Массивы.. 31

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

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

13. Указатели. 34

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

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

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

14. Ссылки. 38

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

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

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

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

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

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

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

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

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

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

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

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

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

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

13.5.1. Передача одномерных массивов как параметров функции. 54

13.5.2. Передача строк в качестве параметров функций. 57

13.5.3. Передача многомерных массивов в функцию.. 57

17.6 Функции с начальными значениями параметров (по-умолчанию) 60

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

19. 7. Очереди и стеки. 84

19. 8. Бинарные деревья. 85

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

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

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

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

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

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

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

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

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

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

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

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

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

 

 


Введение

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Эти концепции представлены методологиями структурного (1) и объектно-ориентированного (2) анализа соответственно.


 

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

 

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

Для преодоления этой проблемы была разработана технология, которая снижала общие затраты на протяжении всего жизненного цикла программы: от замысла, до эксплуатации. Такая технология появилась в начале 70-х годов и была названа структурным программированием.

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

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

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

· Линейной называется конструкция, представляющая собой последовательное соединение двух или более операторов.

· Ветвление – задает выполнение одного из двух операторов, в зависимости от выполнения какого либо условия.

· Цикл – задает многократное выполнение оператора.

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

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


2. Среда программирования Visual C++ 6.0

 

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

Проект (project) – это набор файлов, которые совместно используются для создания одной программы.

Рабочее пространство (workspace) может включать в себя несколько проектов.

 

После запуска VC++ 6.0 на экране появится окно (рис. 1).

 

Рис. 1 Окно VC++ 6.0.

 

Окно содержит:

· Главное меню (1) – список основных команд VC++;

· Панель инструментов (2) - панель с кнопками команд Visual C++;

· Панель рабочего пространства Workspace (3) - содержит две вкладки:

- ClassView – отображает список классов в проекте,

- FileView – отображает список файлов, входящих в проект.

· Окно для редактирования кодов (4) – окно с текстом программы;

· Выходную панель результатов компиляции (5) - окно для вывода сообщений в процессе компиляции или отладки, показывает текущую стадию компиляции, список ошибок и предупреждений и их количество.

 

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

 

Консольное приложение – это приложение, которое с точки зрения программиста является программой DOS, но может использовать всю доступную оперативную память (если каждый элемент данных программы не будет превышать 1 Мб). Этот тип приложения запускается в особом окне, которое называется “Окно MS-DOS”. На примере консольных приложений прослеживаются этапы развития VC++ при переходе от одной версии к другой.

Каждое приложение, разрабатываемое как отдельный проект в среде VC++6.0, нуждается в том, чтобы ему соответствовало свое собственное рабочее пространство. Рабочее пространство включает в себя те папки, в которых будут храниться файлы, содержащие информацию о конфигурации проекта. Для того чтобы создать новое пространство для проекта, надо выполнить следующие действия:

1. В линейке меню нажать на меню File.

2. Выбрать пункт Newили нажатьCtrl+N.

3. Появится окно New.В нем содержится четыре вкладки: Files, Projects, Workspaces, Other Documents. Выбрать вкладку Projects.

4. Из списка возможных проектов выбрать Win32 Console Application для создания приложения DOS.

5. В поле Project name ввести имя проекта.

6. В поле Location ввести путь для размещения каталога проекта, или, нажав на кнопку справа […], выбрать нужную директорию.

7. Должен быть установлен флажок Create New Workspace. Тогда будет создано новое рабочее окно. Нажать кнопку OK

8. Установить один из флажков:

- An empty project – создается пустой проект, не содержащий заготовок для файлов;

- A simple application – создается простейшая заготовка, состоящая из заголовочного файла StdAfx.h, файла StdAfx.cpp и файла реализации;

- A “Hello World” application и An application that supports MFC являются демонстрационными и разными способами демонстрируют вывод на экран строки символов.

Нажать кнопку Finish.Появитсяинформация о созданном проекте содержащая: тип проекта, некоторые особенности и директорию.

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

Для создания нового файла надо выполнить следующие действия:

1. Выбрать меню File > New или Project > Add to Project > New.

2. Открыть вкладку Files.

3. Выбрать C++ Source File.

4. Чтобы создаваемый файл был автоматически присоединен к проекту, необходимо установить флаг Add to project.

5. В поле Filename ввести имя файла.

6. В поле Location указать путь для создания файла.

7.Нажать OK.

Для добавления существующего файла надо:

1. Выбрать в меню File > Add to Project > Files

2. Указать полное имя файла, который нужно присоединить

Для открытия существующего проекта надо:

1. Выбрать меню File > Open Workspace

2. Указать файл с расширением .dsw

Для сохранения текущего проекта надо выбрать в главном меню File > Save Workspace.

Для закрытия текущего проекта надо выбрать в главном меню File > Close Workspace.

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

 

Компиляция и запуск проекта

 

Для компиляции проекта надо выбрать в главном меню Build > Build <имя проекта> или нажать клавишу F7.

Visual C++ 6.0 откомпилирует исходные файлы и создаст соответствующие файлы с расширением .obj. Затем эти файлы соединяются в исполняемый файл. Весь процесс компиляции и создания исполняемого файла отображается в окне Output, вкладка Build. После компиляции файла его можно запустить.

Для запуска исполняемого файла надо выбрать в главном меню Build > Execute <имя файла>.exe или нажмите клавиши Ctrl+F5 . Если файл был создан, то он запустится. Для повторного запуска файла не нужно его снова компилировать. Но если в программу были внесены изменения, то перед запуском необходимо выполнить компиляцию. Выполняется именно файл с расширением .exe, а не текущий проект, т.е. в процессе запуска компиляции не происходит.

Отладка программы

Для отладки программы используется команда главного меню Build>Start Debug> Step Into – отладка с заходом в функции, которая начинается с первой строки функции main или Build>Start Debug> Run to Cursor – выполнение программы до курсора, т. е. отладка начинается с той строки, в которой установлен курсор. После выполнения этой команды выполнение программы происходит в режиме отладчика. Переход к следующей строке программы можно выполнять с помощью команды Step Into (F11) (с заходом во все вызываемые функции) или с помощью команды Step over (F10) (без захода в вызываемые функции). Выход из функции нижнего уровня выполняется командой Step Out (Shift+F11). Текущие значения переменных можно просматривать:

1) в специальных окнах Watch(отображает значения всех используемых переменных)иValue (отображает значения заданных пользователем переменных);

2) при наведении курсора мышки на переменную отображается текущее значение этой переменной.


Дата добавления: 2018-04-04; просмотров: 194;