- •Предисловие
- •Введение
- •Введение в программирование
- •1.1. Предисловие к курсу
- •1.2. Идеология языка
- •1.3. Обзор среды Microsoft Developer Studio
- •1.4. Жизненный цикл программного обеспечения
- •1.5. Общая структура программы
- •1.6. Директивы препроцессора
- •1.7. Построение исполняемого файла
- •1.8. Строительные блоки программы
- •Контрольные вопросы
- •Типы данных. Переменные. Массивы. Операции и Указатели
- •Стандартные типы и размеры данных
- •2.1.1. Объявление переменных
- •Управляющие символьные константы
- •2.2. Объявление указателя
- •2.2.1. Операции разыменования и взятия адреса
- •2.2.2. Указатели на указатели
- •2.2.3. Арифметические операции с указателями
- •2.3. Массивы
- •2.3.1. Инициализация массивов
- •2.3.2 Динамические массивы
- •2.3.3. Методы доступа к элементам массивов
- •2.3.4. Массивы указателей
- •2.4. Строки
- •2.5. Операции
- •2.5.1. Арифметические операции
- •Арифметические операции
- •2.5.2 Операции сравнения и логические операции
- •Операции сравнения и логические операции
- •2.5.3. Побитовые операции
- •Побитовые операции
- •Контрольные вопросы
- •3.1. Базовые операторы
- •3.1.1. Оператор выражение
- •3.2.2. Оператор switch
- •3.3.4. Оператор goto
- •3.4. Операторы цикла
- •3.4.1. Оператор for
- •3.4.2. Оператор while
- •3.4.3. Оператор do..While
- •Контрольные вопросы
- •Стандартный ввод/вывод. Работа с файлами.
- •4.1. Роль стандартного ввода/вывода
- •4.1.1. Основные функции стандартного ввода/вывода
- •4.2. Понятие файла
- •4.2.1. Строение файлов
- •4.2.2. Порядок работы с файлом
- •4.2.3. Обзор библиотечных функций с для работы с файлами
- •4.3. Программные конструкции при работе с файлами
- •4.3.1. Открытие/закрытие файла
- •4.3.2. Цикл посимвольного чтения содержимого файла
- •4.3.3. Цикл построчного чтения содержимого файла
- •Контрольные вопросы
- •Функция. Пользовательские типы данных.
- •5.1. Понятие функции
- •5.1.1. Определение функции
- •5.1.2. Формальные параметры
- •5.1.3. Тип возвращаемого значения
- •5.1.4. Тело функции
- •5.1.5. Фактические параметры
- •5.1.6. Рекурсивные вызовы
- •5.1.7. Передача параметров
- •5.1.8. Библиотеки стандартных функций
- •5.2. Пользовательские типы данных.
- •5.2.1. Ключевое слово typedef
- •5.2.2. Перечислимый тип данных
- •5.2.3. Понятие структуры
- •5.2.4. Указатели на структурный объект
- •Контрольные вопросы
- •Работа с динамической памятью. Динамические структуры данных
- •6.1. Работа с динамической памятью
- •6.1.1. Статическое и динамическое распределение памяти
- •6.1.2. Основные принципы динамического распределения
- •6.1.3. Способы работы с динамической памятью
- •6.2. Динамические структуры данных
- •6.2.1. Стек
- •6.2.2.Линейный список
- •Контрольные вопросы
- •Объектно-ориентированное программирование
- •7.1. Критерии качества декомпозиции проекта
- •7.2. Новые концепции программирования
- •7.3. Достоинства ооп
- •7.4. Объекты и классы в ооп
- •7.4.1. Определение класса
- •7.4.2. Использование класса
- •7.4.3. Вложенные классы
- •Контрольные вопросы
- •Конструкторы и Перегрузка операций.
- •8.1. Перегрузка операций
- •8.1.1. Перегрузка операций внешними функциями
- •8.1.2. Перегрузка операций методами класса
- •8.2. Конструкторы и деструктор
- •8.2.1. Конструкторы и параметры
- •Контрольные вопросы
- •9.1. Простое открытое наследование
- •9.1.1 Конструкторы и деструкторы при наследовании
- •9.1.2. Поля и методы при наследовании
- •9.1.3. Вложенные классы и наследование
- •9.1.4. Закрытое наследование
- •9.1.5. Виртуальные функции
- •9.1.6. Чистые виртуальные функции и абстрактные классы
- •9.3. Основы программирования под Windows
- •9.3.1. Типы данных в Windows
- •9.4. Cреда Microsoft Developer Studio
- •9.4.1. Библиотека mfc
- •9.4.2. Архитектура приложения
- •9.4.3. Каркас приложения
- •9.4.4. Проект приложения
- •Контрольные вопросы
- •Заключение
- •Список Литературы
Предисловие
Настоящий конспект лекций посвящен программированию на языках среднего уровня С/С++, в нем рассмотрен объектно-ориентированный подход программирования.
Условно конспект лекций можно разделить на две части: первая часть посвящена основным теоретическим принципам профессиональной разработки программного обеспечения и методам его проектирования; во второй части освещены вопросы практической реализации проектов на языках программирования С/С++ и Visual C++, рассмотрены идеология, состав языка программирования, структуры программ, главная цель настоящего издания – дать общий подход к разработке программного обеспечения на языках программирования С/С++ и Visual C++, прежде всего, с точки зрения алгоритмических языков, на основе которых возможно углубленное изучение данной дисциплины.
Конспект лекций предназначен для студентов вузов следующих специальностей:
«Инженерное дело в медико-биологической практике»; «Управление качеством»; «Радиотехника»; «Радиосвязь, радиовещание и телевидение»; «Бытовая радиоэлектронная аппаратура»; «Проектирование и технология электронно-вычислительных средств»; «Радиотехника».
Авторы выражают благодарность рецензентам кандидатам технических наук Л. Г. Нехорошковой и С. П. Зыкову за ценные замечания.
Введение
Современное развитие технократического мира, повсеместное внедрение средств вычислительной техники во все отрасли жизни общества налагает повышенные требования к подготовке специалистов инженерных специальностей, независимо от их специализации.
Наиболее актуальна данная проблема для студентов радиотехнических специальностей. Очевидно, что такая подготовка должна быть сквозной на протяжении всего курса обучения и включать в себя не только фундаментальные принципы функционирования вычислительной техники, ее проектирования, но и языки программирования.
Языки программирования С/С++ являются универсальными языками программирования среднего уровня, наиболее широко распространенными и часто используемыми в мире. Они являются основными языками при разработке системного и прикладного программного обеспечения для процессоров цифровой обработки сигналов, то есть, языками промышленной разработки. Владение ими является необходимым условием программирования на профессиональном уровне.
В данном конспекте лекций не ставилась задача изложить все типы, описания, выражения, операторы и классы. Здесь, прежде всего, была сделана попытка познакомить студентов с основным содержанием языков программирования С/С++, рассмотреть объектно-ориентированный подход программирования, привить навыки профессионального алгоритмического подхода к проектированию программного обеспечения.
Лекция 1.
Введение в программирование
на языках С/C++
1.1. Предисловие к курсу
Курс “Информатика“ является одним из основных в русле подготовки специалистов по информационным системам. Разработка программного обеспечения и его сопровождение было и остается важнейшей функцией специалистов в области микропроцессорных, компьютерных систем и систем управления базами данных (СУБД). Широкое внедрение вычислительных машин во все сферы промышленности, связи, систем управления и документооборота требует массу программного обеспечения непрерывно возрастающей сложности. Еще недавно программирование считалось искусством, теперь - специальностью, работой как отдельных личностей, так и больших коллективов.
Курс программирования призван отразить практические аспекты разработки программных продуктов, познакомить студентов с современными формальными системами - алгоритмическими языками и методами программирования на этих языках. Лекционный материал расположен таким образом, чтобы показать, как меняется мышление разработчика при движения от “низкого“ (машинного) уровня к “высокому“ (проблемному), от конкретного к абстрактному, от процедур и модулей к объектам и иерархиям. Выбор изучаемых языков продиктован как насущными потребностями современного рынка труда, так и иллюстративностью создаваемых на этих языках программ.