- •ГЛАВА 7. ОСНОВЫ АЛГОРИТМИЗАЦИИ
- •1. ПОНЯТИЕ ОБ АЛГОРИТМЕ
- •2. ОСНОВНЫЕ СТРУКТУРЫ
- •2.1. Структура «следование»
- •2.2. Структура «развилка»
- •2.3. Структура «цикл»
- •3. ОСНОВНЫЕ ТИПЫ АЛГОРИТМОВ
- •3.1. Линейный алгоритм
- •3.2. Разветвленный алгоритм
- •3.3. Циклический алгоритм
- •Практические задания
- •1. Алгоритмы линейной структуры
- •2. Алгоритмы разветвляющейся структуры
- •3. Алгоритмы циклической структуры (цикл «ПОКА»)
- •4. Алгоритмы циклической структуры (цикл «ДО»)
- •ГЛАВА 8. ОСНОВЫ ПРОГРАММИРОВАНИЯ В СРЕДЕ VISUAL С++ 2005
- •ВВЕДЕНИЕ
- •1. РАЗРАБОТКА ПРОГРАММЫ
- •2. ПЕРЕМЕННЫЕ
- •3. ЛИНЕЙНАЯ ПРОГРАММА
- •3.1. Оформление линейной программы
- •3.2. Программирование в стандартизованной среде CLR
- •Практические задания
- •Русская система мер
- •4. ПРОГРАММА С ВЕТВЛЕНИЕМ
- •Практические задания
- •5. ЦИКЛ С ПАРАМЕТРОМ
- •6. ЦИКЛ «ПОКА»
- •Практические задания
- •7. ОДНОМЕРНЫЕ МАССИВЫ
- •7.1. Понятие об одномерном массиве
- •7.2. Сортировка в одномерном массиве
- •Практические задания
- •8. ДВУМЕРНЫЕ МАССИВЫ
- •8.1. Понятие о двумерном массиве
- •8.2. Датчик случайных чисел
- •Практические задания
- •9. ФУНКЦИИ
- •9.1. Понятие о пользовательских функциях
- •Рис. 8.20. Пятиугольник со сторонами a, b, c, d, f и диагоналями h,g.
- •9.2. Рекурсия
- •9.3. Вызов функции из функции
- •9.4. Функция типа void и глобальные переменные
- •9.5. Передача в функцию имени функции
- •Практические задания
- •10. СОБСТВЕННАЯ БИБЛИОТЕКА ПРОГРАММИСТА
- •10.1. Перегрузка функций
- •Рис. 8.25. Результат работы программы примера
- •11. ПЕРЕЧИСЛИМЫЙ ТИП
- •11.1. Понятие о перечислимом типе
- •11.2. Множественный выбор
- •12. УКАЗАТЕЛИ
- •12.1. Понятие об указателях
- •12.2. Указатели и функции
- •12.3. Указатели и динамические массивы
- •12.4. Указатели и перегрузка операций
- •13. ОБРАБОТКА СИМВОЛЬНЫХ СТРОК
- •13.1. Символьные переменные
- •13.2. Символьные строки (как массивы символов)
- •13.3. Обработка массивов строк
- •Практические задания
- •14. СТРУКТУРЫ
- •Практические задания
- •15. КЛАССЫ
- •15.1. Понятие класса
- •15.2. Открытые и закрытые члены класса
- •15.3. Конструкторы и деструкторы
- •Практические задания
- •Раздел А
- •Раздел Б
- •16. ФАЙЛЫ
- •16.1. Работа с текстовыми файлами
- •16.2. Работа со структурами в файлах
- •16.3. Работа с классами в файлах
- •Практические задания
- •Раздел А
- •Раздел Б
- •ПРИЛОЖЕНИЯ
- •Приложение 1. Список библиотечных функций
- •Математические функции
- •Строковые функции (для работы с символьными массивами)
- •Приложение 2. План лабораторных работ
- •ГЛАВА 9. ПРИЛОЖЕНИЯ WINDOWS FORMS
- •ВВЕДЕНИЕ
- •1. РАЗРАБОТКА ПРИЛОЖЕНИЯ
- •3. ДИНАМИЧЕСКИЕ ССЫЛКИ НА ОБЪЕКТЫ
- •3.1 Понятие о динамических ссылках.
- •3.2. Программа «Калькулятор»
- •4. ИСПОЛЬЗОВАНИЕ ТАЙМЕРА. КОМПОНЕНТ CHECKBOX
- •4.1 Таймер
- •4.2. Компонент CheckBox
- •5. СПИСКИ ВЫБОРА И ПОЛОСЫ ПРОКРУТКИ. ГРАФИЧЕСКИЕ КОМПОНЕНТЫ В C++Builder
- •5.1. Список выбора ListBox
- •5.2. Полосы прокрутки
- •5.3. Графика
- •6. РАБОТА С ТЕКСТОВЫМИ ФАЙЛАМИ.
- •6.1. Чтение и запись текстового файла
- •ИНДИВИДУАЛЬНЫЕ ЗАДАНИЯ
- •Раздел 1. Кнопки, метки и окна редактирования
- •Раздел 2. Радиокнопки
- •Раздел 3. Полосы прокрутки
- •Раздел 4. Обработка текстовых файлов
- •ЛИТЕРАТУРА
- •ТЕСТЫ
- •Тесты по основам алгоритмизации
- •Тесты по программированию на С++
- •Учебное издание
76
10. СОБСТВЕННАЯ БИБЛИОТЕКА ПРОГРАММИСТА
Созданные пользователем функции целесообразно объединить в отдельную собственную библиотеку программиста. Для этого создадим (в своей папке!) на диске специальную папку под названием SUBPROG. В ней и будем размещать заголовочные файлы, содержащие функции пользователя.
Всякий заголовочный файл оформляется директивами препроцессору:
#infdef имя_файла #define имя_файла
…
#endif
Это сочетание директив предотвращает повторные включения директив-компонентов. Имя_файла может быть любым, но не следует использовать его еще в каком-либо качестве в своих программах. Таким образом будет создан заголовочный файлимя_файла.h Такой файл содержит прототипы соответствующих функций, константы и т..п Кроме того, там могут содержаться директивы на включение в программу тех заголовочных файлов из библиотеки компилятора, использование которых неизбежно в любой задаче (ввод/вывод, математические и т.п.)
В отличие от встроенных в компилятор, собственные списки и функции включаются с указанием пути к файлу, в который они записаны, и в обычных двойных кавычках.
Будем каждую библиотечную функцию записывать в своем отдельном программном файле. Имя файла и имя записанной в него функции могут и различаться, но желательно, чтобы они совпадали. Расширения таких файлов – как и для любой программы С++ – .cpp.
10.1. Перегрузка функций
С++ позволяет определить несколько функций с одним и тем же именем, но с различным набором аргументов – это называется перегрузкой функций. Приведем пример, иллюстрирующий, зачем нужна перегрузка.
В библиотеке стандартных функций (см. Приложение 1) имеется три функции для определения абсолютной величины числа трех типов:
77
int abs(int) long labs(long)
double fabs(double)
Гораздо удобнее было бы вызывать одну функцию для выполнения всех вариантов.
Для осуществления перегрузки необходимо записать три варианта прототипа новой функции и три варианта описания функции в форме функции abs1. Теперь при вызове функции abs1 компилятор определит тип переменной и исполнит нужный вариант. Итак, перегруженная функция abs1 имеет вид:
int abs1(int); double abs1(double); long abs1(long);
int abs1(int i);
{ return abs(i); }
double abs1(double a); { return fabs(a); }
long abs1(long i);
{return labs(i); }
Апрограмма с ее использованием будет выглядеть примерно
так:
#include <iostream> #include <math.h> using namespace std;
int x=-7;double z=-1.56789e2; long y=-33156; int abs1(int);
double abs1(double); long abs1(long); main()
{cout<<"\n"<<abs1(x)<<"\n"<<abs1(y)<<"\n"<<abs1(z); cout<<”\n”; return (0); }
int abs1(int x)
{return abs(x); } double abs1(double z)
{return fabs(z); } long abs1(long y)
{return labs(y); }
Когда запустим на исполнение, то получим (рис. 8.25):