- •ГЛАВА 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. Обработка текстовых файлов
- •ЛИТЕРАТУРА
- •ТЕСТЫ
- •Тесты по основам алгоритмизации
- •Тесты по программированию на С++
- •Учебное издание
78
Рис. 8.25. Результат работы программы примера
11.ПЕРЕЧИСЛИМЫЙ ТИП
11.1.Понятие о перечислимом типе
ВС++ имеется перечислимый тип. Его называют enum. При описании такого типа задаются наборы констант(в фигурных скобках). При этом идентификаторам-константам присваиваются значения натурального ряда от нуля. Если значение одного из идентификаторов задается явно, то последующим присваиваются номера по возрастанию через 1. Рассмотрим на примере.
Пример 11.1. Подсчитать число часов рабочей недели, если известно, что суббота и воскресенье – выходные, а в пятницу рабочий день длится 8 часов (в остальные дни 8.25 часа).
#include <iostream> #include <windows.h> using namespace std; float t; enum dni
{Monday=1, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday} ;
int main()
{dni d; t=0; char str[256];
AnsiToOem(" сумма часов раб.недели=", str); for (d=Monday; d<=Friday; d=dni(d+1))
{ if (d == Friday) t=t+8; else t=t+8.25; } ; cout << str <<t<<"\n";
return(0); }
Обратите внимание на необычную форму записи приращения параметра цикла: d=dni(d+1). К сожалению, операция инкремента d++ для перечислимого типа не работает. Как обойти эту проблему, рассмотрим в следующем разделе («12. Указатели»).
79
11.2.Множественный выбор
ВС++ имеется структура множественного выбора switch (пе-
реключатель). Переключатель начинается с заголовка, определяющего имя метки. Тело переключателя заключено в фигурные скобки. Текст тела переключателя разделен меткамиcase. Двоеточие – признак метки. Рассмотрим использование структуры множественного выбора на следующем примере.
Пример 11.2. Дан перечислимый типmuns (названия месяцев года), описаны переменные int d1, d2; muns m1, m2. Извне вводится дата в виде двух чисел:номер дня и номер месяца. Проверить, предшествует ли (в рамках года) дате d2, m2 дата d1, m1. Вывести соответствующее сообщение.
#include <iostream> #include <windows.h> using namespace std;
int s; float t; int nm1,nm2; int main()
{ enum muns {jan=1,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec}; int d1,d2;
muns m1,m2;
char str[256], str1[256];
AnsiToOem("введи день и номер месяца первой даты ", str); cout<<str; cin>>d1>>nm1;
AnsiToOem(" введи день и номер месяца второй даты ", str); cout<<str; cin>>d2>>nm2;
switch (nm1)
{case 1 : m1=jan; break; case 2 : m1=feb; break; case 3 : m1=mar; break; case 4 : m1=apr; break; case 5 : m1=may; break; case 6 : m1=jun; break; case 7 : m1=jul; break; case 8 : m1=aug; break; case 9 : m1=sep; break; case 10 : m1=oct; break; case 11 : m1=nov; break;
case 12 : m1=dec; break; } switch (nm2)
{ case 1 : m2=jan; break;