- •1.1. Элементы языка программирования
- •Основные правила записи программы:
- •1.2. Алфавит языка
- •1.3. Лексемы
- •1.4. Концепция данных
- •2.2. Операции
- •2.2.1. Арифметические операции
- •2.2.2. Операции присваивания
- •2.2.3. Операции отношения
- •2.2.4. Логические операции
- •2.2.5. Поразрядные операции
- •2.2.6. Вычисление выражений
- •3. Структурное программирование
- •3.1. Общая характеристика операторов
- •3.2. Оператор-выражение
- •3.3. Условный оператор
- •3.4. Составной оператор
- •3.5. Операторы для программирования циклов
- •3.5.1. Оператор цикла for
- •3.5.2. Оператор цикла while
- •3.5.3. Оператор цикла do while
- •3.5.4. Оператор break
- •3.5.5. Оператор continue
- •3.6. Оператор goto
- •3.7. Пустой оператор
- •3.8. Оператор switch
- •3.9. Оператор return
- •4. Массивы
- •4.1. Объявление массива
- •4.2. Обращение к элементам массива
- •4.3. Типовые алгоритмы работы с массивами
- •4.4. Многомерные массивы
- •5. Строки
- •5.1. Объявление строки
- •5.2. Посимвольная обработка строк
- •5.3. Ввод строк
- •5.4. Библиотечные функции для работы с текстом
- •6. Указатели
- •6.1. Объявление указателей
- •6.2. Операции над указателями
- •6.3. Связь между указателями и массивами
- •6.4. Функция strtok для выделения лексем из текста
- •6.5. Динамические массивы
- •7. Структуры и объединения
- •7.1. Объявление структуры
- •Компонент структуры может быть любого типа, кроме типа объявляемой структуры.
- •7.2. Операции над структурами
- •7.3. Объявление объединения
- •8. Модульное программирование
- •8.1. Нисходящее проектирование и программирование
- •8.2. Определение и вызов функции
- •8.3. Место определения функции в программе
- •8.4. Обмен данными между функциями
- •8.4.1. Использование глобальных переменных
- •8.4.2. Использование аппарата формальных и фактических параметров
- •8.4.3. Передача массивов в функцию
- •8.5. Перегрузка функции
- •8.6. Шаблон функции
- •8.7. Рекурсивные функции
- •8.8. Функции с параметрами по умолчанию
- •8.9. Передача в функцию другой функции
- •9. Работа с файлами
- •9.1. Текстовые и двоичные файлы
- •9.2. Объявление файловых переменных
- •9.3. Чтение текстового файла
- •9.4. Создание текстового файла
- •9.5. Изменение данных в текстовом файле
- •9.6. Вывод в двоичный файл
- •9.7. Чтение данных из двоичного файла
- •9.8. Изменение данных двоичного файла
- •9.9. Организация файла с произвольным доступом
- •10. Данные с динамической структурой
- •10.1. Линейный список
- •10.1.1. Специальные типы линейных списков
- •10.1.2. Реализация линейного списка с помощью массива
- •10.1.3. Реализация линейного списка с помощью связанного однонаправленного списка
- •10.1.4. Реализация линейного списка с помощью связанного двунаправленного списка
- •10.2. Деревья
- •10.2.1. Основная терминология
- •10.2.2. Реализация двоичных деревьев поиска Для реализации дерева поиска используются массивы и связанные указателями элементы [3, 4].
- •10.2.3. Сбалансированные деревья
- •Основные достоинства в-дерева:
- •10.3. Графы
- •10.3.1. Определения
- •10.3.2. Реализация графа с помощью списков смежности
- •10.3.3. Реализация графа с помощью матрицы смежности
- •10.3.4. Поиск кратчайших путей. Алгоритм Дейкстры
- •10.3.5. Матрица достижимости. Алгоритм Уоршалла
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО
ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ
УНИВЕРСИТЕТ РАДИОТЕХНИКИ, ЭЛЕКТРОНИКИ И
АВТОМАТИКИ»
Л.П. Андреева
ПРОГРАММИРОВАНИЕ
Курс лекций
МОСКВА 2011
ББК 32.973.26-018я73
А 65
УДК 004.42(075)
Рецензенты: Сетуха А.В., Делицин А.Л.
А 65 Андреева Л.П. Программирование. Курс лекций: Учебное пособие / Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Московский государственный технический университет радиотехники, электроники и автоматики » - М., 2011.- 152 с.
В учебном пособии представлен теоретический материал по программированию на языке С++. Пособие предназначено для использования в учебном процессе студентами, обучающимися по направлению 080500 «Бизнес-информатика».
Табл. 9. Ил. 8. Библиогр.:6 назв.
Печатается по решению редакционно-издательского совета университета
ISBN © Л.П. Андреева, 2011
© МИРЭА, 2011
Введение
Учебное пособие представляет собой конспект лекций по языку программирования С++. Пособие предназначено для студентов начинающих изучать язык С++, но может быть полезным и более опытным в программировании читателям. Цель пособия не только обучить студентов языку С++, но и познакомить студентов с технологией разработки программ. Все теоретические материалы сопровождаются примерами законченных программ.
Пособие содержит десять разделов. В разделе «Знакомство с языком С++» рассматриваются элементарные конструкции языка и структура простой программы на языке С++.
В разделе «Основные типы данных» рассматриваются встроенные в язык типы данных и их использование для записи выражений.
Раздел «Структурное программирование» посвящен изучению синтаксиса и семантики операторов С++. В разделе приводятся программы, реализующие линейные, разветвляющиеся и циклические алгоритмы.
В разделах «Массивы», «Строки» и «Структуры и объединения» рассматривается использование составных типов данных в программировании.
В разделе «Указатели» изучаются операции над указателями и их использование для работы с динамическими массивами. Материал этого раздела является основой для программной реализации динамических структур данных.
Раздел «Модульное программирование» посвящен нисходящей разработке программ и функциям языка С++, знание которых необходимо для создания больших программ.
В разделе «Работа с файлами» описываются средства языка С++ для работы с данными на внешних носителях. Приводится большое количество программ для работы с текстовыми и двоичными файлами.
В разделе «Данные с динамической структурой» изучаются динамические структуры данных: линейные списки, деревья и графы.
Знакомство с языком С++
1.1. Элементы языка программирования
Для программирования на языке высокого уровня надо изучить правила построения языковых конструкций (синтаксис языка) и правила их использования (семантику языка). Изучение этих правил начнем с разбора простой программы на языке С++.
Пример программы на языке С++ для вычисления математического выражения z=cos(x)+у2:
//Вычисление выражения
#include <iostream.h>
#include <conio.h>
#include <math.h>
void main()
{
float x, y, z;
cout<<”x, y? ”;
cin>>x>>y;
z=cos(x)+y*y;
cout<<"z="<<z;
getch();
}
Комментарии к программе.
1 строка - это однострочный комментарий. Комментарии используются для документирования программы и облегчения чтения ее исходного кода. Однострочный комментарий должен размещаться в одной строке и начинаться двумя символами \. Комментарии могут быть многострочными. Такие комментарии заключаются в пары символов /* */, например:
/* Это многострочный
комментарий */).
2-4 строки – это директивы препроцессора. Директивы препроцессора записывают в отдельных строках. Они начинаются с символа #. До символа # могут быть пробелы. Директива препроцессора #include применяется для включения в программу копии указанного в ней файла. В примере директивы #include включают в программу заголовочные файлы стандартных библиотек: потокового ввода-вывода (iostream.h), математических функций (math.h) и консольного ввода-вывода (conio.h).
5 строка – это заголовок функции main. Функция с именем main должна обязательно содержаться в консольном приложении. Программа на С++ может содержать несколько функций. Выполнение программы всегда начинается с первого оператора функции main.
Строки 6, 13 начинают и заканчивают тело функции. Тело функции заключается в фигурные скобки.
Строка 7 – содержит объявление вещественных переменных с именами х, y и z. Переменные x и y используются в программе для хранения входных данных, а z – для хранения результата вычисления выражения. В языке С++ все переменные перед их использованием в программе должны быть объявлены. Объявления переменных могут находиться: вне функций (глобальные объявления), в определениях функций и даже внутри составного оператора и оператора цикла.
Строка 8 – содержит оператор-выражение, который выводит на экран текст x, y?. Выводимый текст заключается в кавычки. Оператор посылает поток символов x, y? объекту cout, который связан с экраном. Операция << называется «поместить в поток вывода».
Строка 9 – содержит оператор-выражение, который вводит с клавиатуры два вещественных числа и помещает их в переменные х и у. Операция >> называется «взять (получить) из потока ввода». cin – имя входного потока, связанного с клавиатурой.
Строка 10 – содержит оператор-выражение, который вычисляет выражение и присваивает результат переменной z.
Строка 11 – содержит оператор-выражение, который выводит значение переменной z с поясняющим текстом на экран.
Строка 12 – содержит оператор, в котором вызывается функция getch из стандартной библиотеки conio для задержки результатов программы на экране. Функция getch ждет нажатия пользователем программы любой клавиши на клавиатуре.