Практикум по дисциплине Технология разработки программного обеспечения
Скачать 2.49 Mb.
|
Индивидуальные задания. Ниже приведено 15 вариантов задач. По указанию преподавателя выберите свое индивидуальное задание. Уточните условие задания, количество, наименование, типы исходных данных. Во всех заданиях скалярные переменные вводить с помощью компонента TEdit с соответствующим пояснением в виде компонента TLabel. Скалярный результат выводить в виде компонента ExcelApplication в файл табличного процессора Excel или WordApplication в файл Word. 1. Дан массив из k символов. Вывести на в файл табличного процессора сначала все цифры, входящие в него, а затем все остальные символы, сохраняя при этом взаимное расположение символов в каждой из этих двух групп. 2. Дан массив, содержащий от 1 до k символов, за которым следует точка. Напечатать этот текст в файл Word в обратном порядке. 3. Дан непустой массив из цифр. Вывести в файл Excel цифру, наиболее часто встречающуюся в этом массиве. 4. Отсортировать элементы массива X по возрастанию. Результат напечатать в файл Excel. 30 5. Элементы массива X расположить в обратном порядке. Результат напечатать в файл Excel. 6. Элементы массива X циклически сдвинуть на k позиций влево. Результат напечатать в файл Excel. 7. Элементы массива X циклически сдвинуть на k позиций вправо. Результат напечатать в файл Excel. 8. Преобразовать массив X по следующему правилу: все отрицательные элементы массива перенести в начало, а все остальные в конец, сохраняя исходное взаимное расположение как среди отрицательных, так и среди остальных элементов. Результат напечатать в файл Excel. 9. Элементы каждого из массивов X и Y упорядочены по неубыванию. Объединить элементы этих двух массивов в один массив Z так, чтобы они снова оказались упоряченными по неубыванию. Результат напечатать в файл Excel. 10. Дан массив из 4 символов. Определить, симметричен ли он, т.е. читается ли он одинаково слева направо и справа налево. Если симметричен, то вывести его в файл Word. 11. Дано два массива. Найти наименьшее среди тех элементов первого массива, которые не входят во второй массив. Напечатать эти наименьшие числа в файл Word. 12. Определить количество инверсий в этом массиве X (т.е. таких пар элементов, в которых большее число находится слева от меньшего: х{i}>х{j} при i 14. Вывести в файл Excel заданный массив из k символов, удалив из него повторные вхождения каждого символа. 15. Определить, сколько различных символов входит в заданный текст (текст вводится в файл Word и открывается посредством соответствующей компоненты), содержащий не более k символов и оканчивающийся точкой (в сам текст точка не входит). 31 Лабораторная работа 5. ЗНАКОМСТВО СО СРЕДОЙ ПРОЕКТИРОВАНИЯ ПРОГРАММНЫХ ПРОДУКТОВ VISUAL C++. Цель работы: познакомиться с принципами объектноориентированного программирования в средеVisual C++. Задание: 1) Создать проект программы 2) Визуально спроектировать диалоговую панель 3) Связать элементы управления с событиями 4) Сохранить и выполнить программу Порядок выполнения работы. Теперь рассмотрим все пункты по порядку. 1) Вначале запустим Visual C++. Зайдем в меню FILE > NEW..., выберем там Project. Ваша панель должна выглядеть теперь так: Рис.1. Затем выбираем MFC AppWizard(exe). В окне редактирования Project Name задаем имя программы и нажимаем OK. Шаг 1. Теперь выбираем Dialog based, как показано на рис 2. Вы задали компилятору, что программа ваша будет основана на диалоговых окнах. 32 Рис. 2. Шаг 2. В этой панели введите название программы как показано на рис 3 . Рассмотрим здесь группу "What features would you like to include". Рис. 3. Первое включение говорит о использовании справки (небольшой диалоговой панели, которая всплывает при нажатии на иконку). Теперь щелкаем NEXT. Шаг 3. Вы видите, что диалоговая панель задает два вопроса: 1) Нужно ли вставлять комментарии в исходный текст, который будет являться каркасом вашей программы? 2) Программа, которую создает для вас MFC AppWizard, будет иметь библиотеку с динамической компоновкой (DLL), а не статической? Dll дает преимущество в том, что EXE файл будет меньшего размера, а рядом к нему будет прилагаться DLL файл. Выбираем всё как показано на рис 4. 33 Рис. 4. Затем нажимаем NEXT и щелкаем FINISH, посмотрите, чтобы было выбрано все, как показано на рис. 5. Рис.5. Вы закончили создание проекта программы! Все каркасные файлы для вашей программы написал Visual C++, с помощью мастера настроек MFC AppWizard. MFC это вещь очень полезная, с помощью нее можно быстро создавать программы, так как все дежурные файлы он пишет сам, что сильно облегчает работу программиста, ведь не писать стандартный набор текста каждый раз! А теперь мы спроектируем диалоговую панель. 34 Сейчас мы визуально спроектируем диалоговую панель. Для этого вначале выберите закладку "Resourse View" и раскройте пункт Hello Resource, как показано на рис. 6. Рис.6. Здесь вы видите две записи: 1) IDD_ABOUTBOX 2) IDD_HELLO_DIALOG 1) это название диалоговой панели ABOUT, а 2) название главной диалоговой панели. Выполните щелчок по второй строчке(2) и справа появится, диалоговая панель. В этом режиме можно ее редактировать (см. рис. 7). Рис.7. Удалите из диалоговой панели текст: "TODO:.." и две кнопки, для этого щелкните на эти элементы и нажмите DEL. Теперь у вас чистая панель и вы можете спроектировать ее на свой вкус. Cправа от диалоговой панели находятся элементы управления(если вы их не видите, то зайдите в TOOLS>CUSTOMIZE, в закладке TOOLBARS, CONTROLS поставьте флажок). Вы можете редактировать панель в полном экране, для этого зайдите в VIEW>FULLSCREEN. Сейчас выберите в элементах управления Button, 35 и щелкните мышкой на диалоговую панель, которая должна выглядет, как показано на рис. 8 . Рис.7. Теперь выделите кнопку мышкой, для этого нажмите на нее и отбуксируйте маркеры, чтобы кнопка стала такой же, как на рис 6. После этого опять выделите кнопку левым щелчком мыши, затем нажмите правую кнопку и в расрывшемся меню выбирете Properties(настройки). Выведется такая диалоговая панель (рис 7). Вместо текста IDC_BUTTON1 введите IDC_SAYHELLO_BUTTON, зададим идентификатор, по которому VC будет распознавать элемент. В строке Captions(надпись), введите название кнопки Say Hello. Вставьте теперь еще одну кнопку такого же размера, c ID IDC_EXIT_BUTTON и Captions(надпись) Exit. Диалоговая панель должна выглядеть, как показано на рис. 1.8 Все свойства диалогового окна будут задавать таблицей, где будут указываться свойства элементов диалога. Свяжем элементы управления с событиями. Два элемента это две кнопки: Say Hello и Exit. Теперь воспользуемся еще одним мастером ClassWizard, он сильно облегчит нам работу. Зайдите в VIEW>ClassWizard, появится такая диалоговая панель 36 Рис.1.8. Рассмотрим эту панель. 1) Project здесь вы выбираете свой проект. 2) ClassName название класса, элементы которого вы будете связывать с событиями, проверьте, чтобы там было установлено CHelloDlg это класс, который связан с главным диалоговым окном. 3) Object IDs это идентификаторы(названия) элементов управления, в нашем случае это две кнопки. Первый идентификатор это название самого класса, оно туда включено, так как с ним связаны многие события( это такие значения, которые возвращаются Windows, при совершении какогонибудь действия). 4) Messages а это как раз те самые события, которые генерирует программа. К примеру, если вы нажали на кнопку, то генерируется событие BN_CLICKED, а если два раза то BN_DOUBLECLICKED. 5) Members function это список функций, которые вы включили, и соответствующие им события. Теперь свяжем кнопку EXIT с событием BN_CLICKED оно возникает при нажатие на кнопку. Для этого щелкнем в Object IDs на IDC_EXIT_BUTTON, справа появится события, с которыми можно связать эту кнопку. Выбираем там BN_CLICKED. И щелкаем на кнопке Add Function , которая находится справа. Этим нажатием вы говорите Visual C++, что вам необходимо связать это событие с функцией. Выведется такая диалоговая панель, где вам предложат выбрать название функции. Оставьте все по умолчанию и нажмите кнопку OK. В Members function появилась запись о том, что связали кнопку (c итендификатором IDC_EXIT_BUTTON) с функцией OnExitButton. Теперь щелкаем по кнопке Edit Code, которая 37 находится ниже кнопки Add Fucnction. При нажатии на эту кнопку мы переходим в режим редактирования исходного текста. В окошке появится тест: void CHelloDlg::OnExitButton() { // TODO: Add your control notification handler code here } Коментарий // TODO: Add your control notification handler code here говорит, что после него можно ставлять свой код. Начало вашего кода будет обозначаться ///Здесь начинается ваш код/// А конец вашего кода ///Здесь заканчивается ваш код/// Теперь введем код, для этого вам надо переписать его void CHelloDlg::OnExitButton() { // TODO: Add your control notification handler code here ///Здесь начинается ваш код/// OnOK(); ///Здесь заканчивается ваш код/// } Напишем OnOK();, эта функция будет выполняться при каждом нажатии на кнопку EXIT, и она предназначена для завершения программы. Проверьте, чтобы в написании OnOK, OK было написано с большой буквы, иначе, при компиляции программы, Visual C++ сообщит вам об ошибке, так символы верхнего и нижнего регистра в VC имеют распознаются поразному. Итак вы связали кнопку EXIT с событием BN_CLICKED, а его с функцией OnExitButton, которая будет выполняться при каждом нажатии на кнопку EXIT. Теперь свяжем кнопку Say Hello с событием BN_CLICKED. Для этого зайдем в меню VIEW>ClassWizard. Выберем в Object IDs IDC_SAYHELLO_BUTTON. Щелкнем на BN_CLICKED в Messages (этим связываете кнопку Say Hello с событием BN_CLICKED). Нажимаем на Add function, этим связываете событие BN_CLICKED с функцией. В раскрывшемся окне оставляем все по умолчанию и нажимаем кнопку OK. 38 Затем нажимаем на кнопку Edit Code, для редактирование исходного текста. И в раскрывшемся окне пишем следующий код: void CHelloDlg::OnSayhelloButton() { // TODO: Add your control notification handler code here ///Здесь начинается ваш код/// MessageBox("Say Hello"); ///Здесь заканчивается ваш код/// } Функция MessageBox("Say Hello"); вызывает окно сообщений, в котором написан текст Say Hello, который и является параметром этой функции. Итак, связали кнопки Say Hello и EXIT с событием BN_CLICKED. При нажатии на кнопку Exit программа завершается, а при нажатии на кнопку Say Hello выводится сообщение "Say Hello". Теперь осталось построить и выполнить программу. Нажимаем Далее... Компиляция и запуск программы Для того, чтобы выполнить программу надо ее вначале сохранить. Зайдите в меню File и там нажмите на Save All. Затем надо ее построить (скомпилировать). Зайдем в меню Build>Build Hello.exe, начнется построение программы. Если компилятор не выдал сообщение об ошибке, которые можно посмотреть в появившемся внизу окошке, то можно смело запускать программу. 39 Теперь осталось только выполнить программу, для этого зайдите в меню Build>Execute Hello.exe Ваша программа должна будет выглядеть так: А окно сообщений при нажатии на кнопку Say Hello: Проект программы создан, визуально спроектирована диалоговая панель, элементы управления связаны с событиями с помощью мастера ClassWizard, программа выполняется. Индивидуальные задания. Ниже приведено 15 вариантов задач. По указанию преподавателя выберите свое индивидуальное задание. Уточните условие задания, количество, наименование, типы исходных данных. В соответствии с 40 этим установите количество окон, тексты заголовков на форме, размеры шрифтов, а также типы переменных и функции преобразования при вводе и выводе результатов. С помощью инспектора объектов измените цвет формы, шрифт выводимых символов. Задание: составить программу вычисления арифметического выражения по вариантам: № вариа нта Программируемая формула A B C D Результ ат 1 ( ) D C B B A sin 2 2 2 + − − π 10 5 5 2 2.5 1.95862 E+2 2 | | ln 5 3 ) ln * 2 ( D C B C D A + − 10 4 10 0.1 -3 -1.48774 E+1 3 5 3 75 1 88 ln 2 − − B D D A π 10 4 10 0.2 3 1.79615 E+1 4 ( ) ( ) 2 25 1 0 9 3 D C B D A π + + ⋅ 10 -2 -1.5 4.1 -3 1.61778 E-2 5 ( ) ( ) − − ⋅ + ⋅ CosC SinB C B A D C B A exp 4 ln 10 1 -1.7 3.9 -3 -3.83304 E+0 6 ( ) 5 3 ln − + + D C D C A D C B A 10 3 3.5 4.1 -3 1.06442 E+1 7 ( ) D B A D C B A π 4 exp 1 ⋅ ⋅ + ⋅ 10 1 -0.5 1.1 -1 9.65643 E-1 8 ( ) − + D C B A 87 41 1 exp 98 5 25 1 5 0 10 2 -20. 5 5.1 -1.5 1.36556 E+3 9 − + D C B A D 1 2 60 exp 4 25 0 10 -1 2.5 5.1 -1.5 -5.55037 E-1 41 10 2 ln 4 exp 6 21 5 sin 25 0 D C C B e A π − − ⋅ − 10 -1 1.2 5.1 2.05 1.42678 E+3 11 ( ) ( ) ( ) 4 3 exp 1 0 * 2 34 lg cos ln sin 28 6 C B A − + − 10 3 12 7.2 1 - 2.79759 E-1 12 C B D A cos 5 0 13 1 1 2 10 + + ⋅ + π 10 1.3 0.1 -.05 4.66048 E+0 13 ( ) ( ) D C B A A π + − + − ⋅ ⋅ − ln cos 1 sin 2 5 5 10 7 7 5 10 -2 1.3 9 3.1 0.55 1.39860 E-4 14 + ⋅ − + + A D B C B A 3 cos 80 3 0 4 sin 41 7 1 2 10 -3 21. 39 23. 1 -0.1 2 -4.73017 E+0 15 D B A C C B A A B + ⋅ − + 2 lg ln 10 -1 2.1 0.1 -3.1 2 -2.24257 E+0 42 |