- •ГЛАВА 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. Обработка текстовых файлов
- •ЛИТЕРАТУРА
- •ТЕСТЫ
- •Тесты по основам алгоритмизации
- •Тесты по программированию на С++
- •Учебное издание
166
private: System::Void textBox1_KeyPress (System:: Object^ sender, System:: Windows::Forms:: KeyPressEventArgs^ e)
{if (! ((e->KeyChar>='0') && (e->KeyChar<='9')
||(e->KeyChar==',')) ) e->KeyChar=Char(0); } };
Обратите внимание, у функции для этого события имеется параметр e->KeyChar, контролируя который мы и задаем ограничение на ввод значений. В данном случае: если нажимаемая клавиша не лежит в интервале от 0 до 9 и не является десятичной запятой, то символ не отображается (Char(0)).
3. ДИНАМИЧЕСКИЕ ССЫЛКИ НА ОБЪЕКТЫ
3.1 Понятие о динамических ссылках.
Помимо обычных непосредственных ссылок на объекты допустимы и так называемые динамические ссылки на объекты. Обычная ссылка, например, на свойство TabIndex кнопки Button имеет вид:
Button->TabIndex. Аналогичная динамическая ссылка имеет вид (Button^)sender->TabIndex . В чем преимущество (и не-
обходимость) динамических ссылок? В том, что можно подразумевать не один объект, а целую группу объектов. В результате можно
назначить одну и ту же функцию в качестве события для целой группы объектов. Продемонстрируем на примере.
Пример 3-1. Организовать форму с семью кнопками, в зависимости от нажатия на которые будет меняться цвет формы(см. рис.
9.9). Причем для реализации события Click для всех кнопок использовать одну и ту же процедуру.
Итак, здесь потребуется разместить семь кнопок, сменить их названия и, главное, у каждой из них указать свой номер и свойства TabIndex: для кнопки «крас-
ный» |
зададим 1, для |
кнопки |
|
«оранжевый» 2 и т.д. Затем соз- |
|||
дадим |
событие |
для |
кнопки |
«красный» следующего вида: |
|
Рис. 9.9
167
switch (((Button^ )sender)->TabIndex)
{case 0: this->BackColor=Color::Red; break; case 1: this->BackColor=Color::Orange; break; case 2: this->BackColor=Color::Yellow; break; case 3: this->BackColor=Color::Green; break; case 4: this->BackColor=Color::SkyBlue; break; case 5: this->BackColor=Color::Blue; break; case 6: this->BackColor=Color::Violet; break;
case 7: this->BackColor=SystemColors::Control; break;
}
Далее в окне Properties перейдем на вкладку Events и укажем там, в строке Click (везде, для каждой кнопки!) ту же процедуру button1Click.
Остается запустить приложение (естественно, при этом сохранить проект и программу) и проверить кнопки в действии.
3.2. Программа «Калькулятор»
Пример 3-2. Создать программу «Калькулятор вида (рис. 9.10). Обеспечить выполнение нужных операций с отображением задаваемых цифр и результата на индикаторе.
Рис. 9.10
Разместим соответствующие цифровые кнопки. Выполним надписи. Для каждой из них укажем свойствоTabIndex, равным цифре на кнопке.
168
В окне кода после строк:
public ref class Form1 : public System::Windows:: Forms:: Form
{public:
опишем глобальные переменные:
int f; |
// признак для проверки |
//f=0 — вводится первый операнд операции
//f=1 – вводится второй
int oper; // код операции:
//0 – "=", 1- "+", 2 - "-", 3 - "*", 4 -"/" float accum; // результат операций
Создадим для кнопки «1» для события Click функцию следующего вида:
private: System::Void button9_Click(System::Object^ sender, System:: EventArgs^ e)
//функция отображения символа цифры
{Char Ch; // символ цифры
//преобразование цифры в ее символ
//т.е. код 0 есть 48, код 1 есть 49 и т.д. Ch=Char(((Button^)sender)->TabIndex+48); switch ( ((Button^)sender)->TabIndex)
{case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8:
case 9: if (f = =0) {textBox1->Text=Ch.ToString();f=1;} else textBox1->Text=textBox1->Text+Ch.ToString(); }
f=1; }
Обратите внимание, что мы сразу предусмотрели и все другие цифры. Поэтому можем назначить эту же процедуру и всем остальным цифровым кнопкам, т.е. перейдем на вкладку Events и, последовательно выделяя каждую кнопку, событию Click для нее назначим ту же функцию button1Click.
Аналогично разместим кнопки для операций и для кнопки очистки С. Для кнопок операций также укажем свойствоTabIndex сле-
дующим образом: 0 – для «=», 1 – «+», 2 – «-», 3 – «*», 4 – «/».
Создадим процедуру, например, для кнопки «+»: