
- •ГЛАВА 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. Обработка текстовых файлов
- •ЛИТЕРАТУРА
- •ТЕСТЫ
- •Тесты по основам алгоритмизации
- •Тесты по программированию на С++
- •Учебное издание

31
using namespace std; int main()
{ char str[256]; float a,b,p,s;
AnsiToOem("Введи стороны прямоугольника ", str); cout<< str <<"\n";
cin>>a>>b; p=2*(a+b); s=a*b;
AnsiToOem("Периметр=", str); cout<< str<<p;
AnsiToOem(" Площадь=", str); cout<<str<<s; cout<<"\n";
return 0;
}
Как видим, сначала каждое русское сообщение преобразуется функцией AnsiToOem и помещается в строку str (она описана как char str[256], т.е. может содержать до 256 символов). Затем уже эта строка str и выводится. Обратите внимание, что подключен заголовочный файл windows.h.
После запуска на исполнение получим результат, приведенный на рис. 8.9.
Рис. 8.9. Результат работы примера 3.1 (с выводом сообщений по-русски)
3.2. Программирование в стандартизованной среде CLR
Помимо среды Win32 в Visual C++ 2005 можно использовать среду CLR. Она является стандартизованной средой для выполнения программ, написанных на широком диапазоне высокоуровневых языков. Не вдаваясь в подробности, просто отметим, что таким образом можно создавать приложения более высокого уровня. Рассмотрим на примере.
Создадим новый проект командойFile/New/Project. Далее в возникшем окне диалога выбираем на левой панели CLR , а на пра-
32
вой – CLR Console Application (для создания консольного приложения), в строке Name введем имя проекта (при этом должна быть установлена «птичка» Create directory for solution создать каталог для проекта) и нажимаем ОК.
В очередном окне появляется список подпапок данного проек-
та. В правой части будетзаготовка текста исходного файла(см.
рис. 8.10) и здесь производим необходимые изменения и дополнения.
У функции main() появились в скобках аргументы. На них пока не обращаем внимание (но и не удаляем их!). Обратите внимание, что команда вывода здесь выглядит несколько необычно:
Console::WriteLine(L»Hello world»);
Здесь в кавычках размещается собственно выводимое сообщение. Ему обязательно предшествует буква L.
Доработаем эту заготовку исходного текста так, чтобы выполнить тот же пример 3.1. Пока не будем производить ввод исходных данных (ввод в среде CLR осуществляется несколько сложнее), а просто зададим исходные данные в тексте программы путем присваивания.
Для вывода чисел нужно указатьформат вывода внутри сообщения, заключая этот формат в фигурные скобки. Причем, если выводятся несколько чисел в одной строке, то их нумеруют 0, 1 и т.д. (см. листинг ниже). Формат F2 означает, что число вещественное (float) и будет представлено две цифры после запятой. Если потребуется выводить целое число, то указываем формат D. Формат E задают, когда вещественные числа нужно вывести в так называемой экспоненциальной форме: 6*1023 есть 6E23.
// prim1-1_CLR.cpp : main project file. #include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args) {float a,b, s,p;
a=3; b=4;
Console::WriteLine (L"Заданы стороны a={0:F2} и b={1:F2}",a,b); p=2*(a+b); s=a*b; Console::WriteLine(L"Периметр={0:F2}",p); Console::WriteLine(L"Площадь= {0:F2}",s);
return 0;
}

33
Рис. 8.10. Окно создания исходного файла в среде CLR
После компиляции и компоновки(клавишей F7) и запуска на исполнение (клавишами Ctrl-F5) получим результат, представленный на рис. 8.11.
Обратите внимание, что при этом нет никаких проблем с выводом русского текста.
Рис. 8.11. Результат работы консольного приложения в CLR