
- •Оглавление
- •6. Ввод-вывод 52
- •11. Операторы. Дополнение 93
- •12. Передача данных потоком 100
- •13. Файлы 103
- •14. Структура программы 109
- •15. Указатели, массивы, строки 118
- •16. Работа с экраhом 137
- •17. Управление программой с помощью клавиатуры 151
- •Введение
- •1. Основные понятия и определения
- •1.1. Компьютер
- •Процессор
- •Периферия
- •1.2. Алгоритмы
- •1.3. Программы и языки
- •Основные понятия языка программирования
- •Выполнение программы
- •Машинный и алгоритмический языки
- •Метаобозначения
- •Этапы обработки программы на компьютере
- •Терминология
- •Трансляция
- •Редактирование связей (компоновка)
- •Загрузка
- •1.4. Данные
- •Системы счисления
- •Типы и совокупности данных.
- •Вещественные
- •Логические
- •Совокупности данных
- •2. Элементы языка
- •2.1. История языков с и Basic
- •2.2. Алфавит
- •2.3. Идентификаторы
- •2.4. Знаки разрядки
- •2.5. Комментарии
- •2.6. Запись текста программы
- •3.1.1. Целые
- •3.1.2. Данные с плавающей точкой
- •3.1.3. Логический тип
- •3.1.4. Символьные данные
- •3.1.5. Дополнительные типы данных
- •3.2. Совокупности данных
- •3.2.1. Массивы
- •Объявления массивов
- •Обращение к элементу массива
- •3.2.2. Структуры
- •4.1. Арифметические операторы Основные
- •Дополнительные
- •Приоритет
- •4.2. Операторы конкатенации
- •4.3. Операторы сравнения
- •4.4. Логические операторы
- •4.5. Обращение к функции
- •4.6. Встроенные функции
- •4.7. Заключительные замечания
- •5.1. Объявления
- •5.2. Присваивание
- •5.3. Безусловный переход
- •5.4. Инструкция If. Пустая инструкция
- •5.5. Составная инструкция
- •5.6. Циклы
- •5.6.1. Циклы с предусловием
- •Циклы while
- •Циклы for
- •5.6.2. Циклы с постусловием
- •5.6.3. Вложенные циклы
- •5.7. Управляемые переходы
- •5.7.1. Инструкция break
- •5.7.2. Инструкция continue
- •5.7.3. Инструкции exit
- •5.8. Многоальтернативный выбор
- •5.8.1. Инструкция switch (язык с)
- •5.8.2. Инструкция select case (язык Basic)
- •Вопросы для самопроверки и контроля Вопросы для самопроверки
- •Контрольные вопросы
- •6. Ввод-вывод
- •6.1. Управляющая строка
- •6.1.1. Спецификация d (целые десятичные числа)
- •6.1.2. Спецификация f (десятичные числа с плавающей точкой)
- •6.1.3. Спецификация e (десятичные числа с плавающей точкой)
- •6.1.4. Спецификация g (универсальная спецификация)
- •6.1.5. Вывод символьной информации
- •6.2. Инструкции printf и scanf. Схема ввода-вывода
- •7.1.1. Распределение скаляров
- •7.1.2. Распределение массивов
- •7.1.3. Статическое и динамическое распределение памяти
- •7.2. Блоки
- •7.3. Процедуры
- •7.3.1. Определения процедур
- •7.3.2. Связь между вызывающей и вызываемой функциями
- •Механизмы передачи данных
- •Прототипы функций (c)
- •Передача скаляров Возвращаемое значение
- •Входные данные
- •Выходные данные
- •Передача массивов
- •Передача функций
- •Вопросы для самопроверки и контроля Вопросы для самопроверки
- •Контрольные вопросы
- •8. Препроцессор
- •8.1. Определение символических констант
- •8.2. Включение файлов в текст программы
- •9.1. Формирование листинга
- •Перенос:
- •9.2. Комментарии
- •9.3. Имена Имена объектов программы должны быть осмысленными.
- •3. Литералы.
- •10.5. Подмассивы (сечения) (c)
- •10.6. Динамические массивы (b)
- •10.7. Структуры и объединения (c)
- •10.7.1. Структуры
- •10.7.2. Рекурсивные структуры
- •10.7.3. Поля битов
- •10.7.4. Объединения (смеси)
- •10.7.5. Переменные структуры
- •10.9. Пользовательские типы данных
- •10.9.1. Инструкция type (b)
- •10.9.2. Инструкция typedef (c)
- •10.10. Преобразование типов
- •10.10.1. Автоматические преобразования
- •10.10.2. Явные преобразования
- •Вопросы для самопроверки и контроля Вопросы для самопроверки
- •Контрольные вопросы
- •11. Операторы. Дополнение
- •11.1. Уровень 1
- •11.2. Уровень 2 (унарные или одноместные операторы)
- •11.3. Уровень 3 (мультипликативные операторы)
- •11.4. Уровень 4 (аддитивные операторы)
- •11.5. Уровень 5 (сдвиги)
- •11.6. Уровень 6 (отношения)
- •11.7. Уровень 7 (равенство и неравенство)
- •11.8. Поразрядные операторы
- •11.9. Логические операторы
- •11.10. Уровень 13 (условное выражение)
- •11.11. Уровень 14 (операторы присваивания)
- •11.12. Уровень 15 (оператор ',' - запятая)
- •11.13. Некоторые замечания
- •11.14. Постоянные выражения
- •Вопросы для самопроверки и контроля Вопросы для самопроверки
- •Контрольные вопросы
- •12. Передача данных потоком
- •12.1. Спецификация "s" управляющей строки функций scanf и printf
- •12.2. Функции getchar и putchar
- •12.3. Функции gets и puts
- •12.4. Внутренняя передача данных (функции sscanf и sprintf)
- •13.2. Описание файла
- •13.3. Открытие и закрытие файлов
- •13.4. Средства языка с
- •13.4.1. Открытие и закрытие файла
- •13.4.2. Основные функции обмена
- •13.5. Средства языка Basic
- •13.5.1. Открытие и закрытие файла Инструкция open
- •Инструкция close
- •13.5.2. Работа с файлами Инструкция input
- •Функция input
- •Инструкция line input
- •Инструкция write
- •Инструкция print
- •Инструкция width
- •Длина файла
- •Функция MsgBox
- •Вопросы для самопроверки и контроля Вопросы для самопроверки
- •Контрольные вопросы
- •14. Структура программы
- •14.1. Элементы структуры программы.
- •14.1.1. Язык c
- •14.1.2. Язык Basic
- •14.2. Область видимости (действия) и время жизни переменных
- •14.2.1. Язык c
- •14.2.2. Язык Basic
- •14.3. Проект программы
- •14.3.1. Использование директивы препроцессора #include
- •14.3.2. Средства управления проектом
- •14.4. Инициализация данных
- •2. Массивы.
- •15.1. Указатели
- •Определение указателей
- •Задание значений
- •Вывод значений
- •15.2. Указатели и массивы
- •15.3. Работа со строками
- •15.3.1. Литералы
- •15.3.2. Переменные
- •15.3.3. Операторы и функции
- •15.4. Динамические объекты
- •15.5. Типичные ошибки, связанные с указателями Отсутствие инициализации указателя
- •Двойное указание
- •Hе выполнено освобождение выделенной памяти
- •Задание адреса локальной (auto) переменной
- •15.6. Примеры использования указателей. Структуры данных
- •15.6.1. Стек
- •15.6.2. Однонаправленный список
- •15.7. Ссылки и многомерные массивы
- •15.8. Рекурсивные процедуры
- •15.8.1. Рекурсивное решение
- •15.8.2. Нерекурсивное решение. Стек в виде массива
- •15.8.3. Нерекурсивное решение. Стек в виде списка
- •Вопросы для самопроверки и контроля Вопросы для самопроверки
- •Контрольные вопросы
- •16. Работа с экраhом
- •16.1. Текстовый режим(textmode)
- •16.1.2. Управление режимом и окном
- •16.1.3. Управление атрибутом(цветами символа и фона в окне)
- •16.1.4. Информация о текстовом режиме
- •16.1.5. Пример
- •16.1.6. Пример(продолжение)
- •16.2. Графический режим
- •16.2.1. Установка и закрытие
- •16.2.2. Форматирование Цвета
- •Битовые образы(pattern)
- •Текстовые фонты
- •Восстановление установок по умолчанию
- •16.2.3. Размещение на экране Окна
- •Координаты курсора и перемещения
- •16.2.4. Вывод на экран Текст
- •Прямоугольники
- •Эллипсы
- •Многоугольники
- •Пиксели
- •16.2.5. Дополнительные функции
- •Простые циклы
- •Вложенные циклы
- •Процедуры
- •Работа со строками
- •Приложения
- •П1.1. Меню File (Файл)
- •П1.2. Меню Options (Установки среды)
- •П1.3. Разное
- •П1.4. Редактирование текста
- •П1.5. Сообщения
- •Трансляция
- •Компоновка (редактирование связей)
- •Ошибки времени выполнения
- •П1.6. Отладка
- •Прогон до точки прерывания
- •Пошаговое выполнение программы
- •Установка точек прерывания
- •Получение значений объектов программы
- •П1.7. Окна
- •Управление окнами
- •Приложение 2. Среда разработки Visual Basic Express
- •П2.1. Запуск среды
- •П 2.2. Подготовка к работе с новым проектом
- •П2.3. Окна и режимы работы
- •П2.4. Главное меню
- •П2.5. Меню File (Файл)
- •П2.6. Редактирование текста
- •П2.7. Меню View (Обзор)
- •П2.8. Меню Project (Проект)
- •П2.9. Отладка
- •Точки прерывания
- •Определение значений объектов программы в момент прерывания
- •Продолжение работы
- •П2.10. Меню Tools (Средства)
- •П2.11. Меню Window (Окно)
- •Приложение 3. Ответы на вопросы для самопроверки
- •2. Элементы языка
- •3. Элементы данных
- •4. Выражения
- •5. Основные инструкции
- •6. Ввод-вывод
- •7. Процедуры
- •8. Препроцессор
- •9. Стиль программирования
- •10. Данные. Дополнение
- •11. Операторы. Дополнение
- •12. Передача данных потоком
- •13. Файлы
- •14. Структура программы
- •15. Указатели, массивы, строки
- •16. Работа с экраном
- •17. Управление программой с помощью клавиатуры
- •Приложение 4. Темы для курсовой работы
- •Библиографический список
Получение значений объектов программы
Под объектами здесь будем понимать переменные, массивы и структуры.
Inspect (Alt+F4) – вызывает появление окна, в котором можно задать имя объекта программы. После чего в другом окне будет показано его значение (или совокупность значений).
Evaluate\modify (Ctrl+F4) – работает подобным же способом, но может вычислять произвольные выражения, содержащие известные на момент прерывания объекты. Более того, имеется возможность задать в этот момент новые значения переменных и продолжить выполнение, однако это надо делать с осторожностью, чтобы не нарушить логику выполнения программы.
Также можно задать имена нужных объектов для отслеживания, т.е. показа их значений без запроса в каждой точке прерывания. Эти значения будут выводиться в отдельное окно Watch. Удаление объектов из окна выполняется клавишей Del, добавление – командой Add watch (Ctrl+F7).
Замечание. Все перечисленные выше приемы отладки будут иметь смысл только в том случае, если будут известны правильные значения объектов программы в точках прерывания. Их получают ручным вычислением, с помощью других средств или специальным подбором входных данных программы.
П1.7. Окна
Среда Borland C++ 3.1 имеет многооконный интерфейс, в котором по умолчанию показываются 2 окна: Edit и Message. Окно Watch вызывается автоматически при выполнении программы в точке прерывания, если задан режим отслеживания каких-либо переменных. Окно пользователя User screen вызывается автоматически при вводе данных с клавиатуры во время выполнения. Это окно занимает весь экран и в него выводятся: все сообщения и команды операционной системы MS DOS, а также результаты (выход) программы в текстовом и графическом режимах. При этом среда (IDE) недоступна. Существует также отдельное окно Output, которое показывает сообщения MS DOS и выход программы в текстовом режиме, но не в графическом. Оно может использоваться совместно с окнами Message и Watch.
После завершения программы управление автоматически возвращается в среду пользователя, поэтому, если Вы хотите сразу же видеть результаты, необходимо в конце программы предусмотреть ввод с клавиатуры.
Пример.
printf("Нажмите любую клавишу:");
getch(); // Функция ввода символа с клавиатуры, файл прототипов conio.h
Управление окнами
Для манипуляций с нужным окном необходимо сделать его активным, т.е перейти в него.
Переходы между окнами. Если окно видно на экране, то проще всего щелкнуть мышью по видимой части окна. Если его не видно, но оно уже открывалось в текущем сеансе работы, то можно использовать клавиши Alt+<№ окна>, например, ALT+3. Окно User screen вызывается нажатием клавиш Alt+F5. Любое окно (даже ранее не открывавшееся), кроме окна Edit, вызывается из соответствующего пункта меню Window. Для перехода к следующему по номеру окну можно использовать клавишу F6.
Закрытие окна. Активное окно может быть закрыто:
- щелчком мыши по прямоугольнику в левом верхнем углу рамки окна;
- нажатием клавиш Alt+F3.
Окно User screen закрывается щелчком мыши в любом месте окна или нажатием любой клавиши.
Открытие окна на весь экран. Выполняется щелчком мыши по правом верхнем углу рамки окна или нажатием клавиши F5. Повторное действие возвращает прежний размер окна.
Остальные функции среды пользователя Borland C++ 3.1 рекомендуется изучить самостоятельно.
П1.8. Средства работы с проектами Borland C++ 3.1
П
роект
состоит из файлов с расширениями .c
(.cpp) и .h,
составляющих полный исходный текст
приложения. Он может также включать
файлы с расширениями .obj
и .lib. Объектные
файлы могут являться частями ранее
разработанных приложений и, в общем
случае, получаются из различных
источников. Тоже касается и файлов с
расширением .lib,
которые являются библиотеками
(наборами) объектных модулей,
объединенными в единый файл. Библиотеки
более удобны с точки зрения компоновки
загрузочного модуля и включения в
состав проектов будущих приложений.
Файл проекта имеет расширение .prj.
Пример. Приложение Forest – Полоса отвода и средства снегозащиты ЮУЖД.
Для каждого файла указывается его имя и расширение (File name), директория, где он располагается (Location). Для файлов с расширением .c приводятся: число строк (Lines) и объем объектного кода в байтах (Code), а также объем данных, распределенных компилятором (Data). После включения исходного модуля в проект, но до компиляции, а также для файлов с расширением .lib в этих колонках указывается текст n/a. Директория расположения файла указывается относительно директории запуска приложения.
При запуске процесса сборки проекта происходит перетрансляция только тех .c(.cpp) файлов, дата создания которых больше даты создания соответствующего .obj файла, что существенно сокращает процесс построения задачи. То есть перекомпилируются только те исходные модули, которые подвергались коррекции с момента предыдущего построения задачи. Поскольку могут также изменяться .h файлы, включаемые в отдельные .c(.cpp) файлы, необходимо перекомпилировать последние. Это достигается включением режима Проверки автозависимостей (Check auto-dependencies) в пункте OptionsMake.
С
редства
работы с проектом располагаются в
пункте Project Главного
меню среды разработки. Это меню имеет
вид:
Пункт Open project позволяет открыть существующий проект или создать новый. Открытие существующего проекта аналогично открытию файла .c(.cpp), только здесь для выделения нужных файлов используется маска *.prj. Для создания нового в этой маске следует заменить символ "*" на имя файла проекта.
Пункт Close project закрывает открытый проект.
Пункты Add item и Delete item позволяют включать файлы в проект и удалять их из него. То же самое более просто достигается выбором нужного пункта в проекте и нажатием клавиш Ins и Del соответственно.
Пункт Include files служит для просмотра .h файлов, включенных в исходные модули проекта.