- •Методические указания к лабораторным работам
- •Лабораторная работа №1 простые программы с циклами и операторами консольного ввода/вывода
- •Задание
- •Описание примера
- •Методика выполнения
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа №2 работа с текстовыми файлами, структурами данных и меню
- •Задание
- •Структурное программирование и функциональная декомпозиция системы
- •Функции
- •Организация меню в консольном приложении
- •Структуры данных
- •Операции с файлами
- •Методика выполнения
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа №3 разработка и спецификация функций и модулей программы
- •Задание
- •Модульная структура программ
- •Параметры командной строки
- •Методика выполнения
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа №4 разработка и спецификация структур данных, использование указателей и динамических массивов структур
- •Задание
- •Указатели
- •Методика выполнения
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа №5 использование объектно-ориентированного программирования в разработке приложений
- •Задание
- •Конструкторы и деструкторы
- •Конструктор по умолчанию
- •Конструктор копирования
- •Массивы объектов
- •Friend-конструкции
- •Методика выполнения
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа №6 использование наследования, полиморфизма и абстрактных классов
- •Задание
- •Наследование данных и методов
- •Полиморфизм и виртуальные функции
- •Абстрактный класс
- •Методика выполнения
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа №7
- •Сложные структуры из объектов классов
- •Цель работы - изучение организации различных структур данных и разработка методов манипулирования данными.
- •Задание
- •Методика выполнения
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа №8 разработка windows-интерфейса приложения
- •Задание
- •Методика выполнения
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа №9 разработка и использование com-сервера
- •Задание
- •Шаблоны классов
- •Использование библиотеки atl для создания серверов сом
- •Методика выполнения
- •Содержание отчета
- •Контрольные вопросы
- •Литература
Министерство образования и науки Российской Федерации
Самарское образовательное учреждение высшего профессионального образования
САМАРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Факультет: АВТОМАТИКИ И ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ Кафедра: ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА
Методические указания к лабораторным работам
по дисциплине: Технология программирования
по направлению 654600 ИНФОРМАТИКА И ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА
Факультет автоматики и информационных технологий
специальность 230101 Вычислительные машины, комплексы, системы и сети
САМАРА 2008
Лабораторная работа №1 простые программы с циклами и операторами консольного ввода/вывода
Цель работы - знакомство с работой в среде MS Visual Studio и программированием на языке С++.
Задание
Освоить основные операции в среде MS Visual Studio, выполняемые при разработке программ на языке С++.
Разработать консольную программу, которая реализует ввод точек экспериментально полученной зависимости y=f(x) (дискретных значений аргумента x[i] и соответствующих им значений функции y[i]), вывод их в виде таблицы, вычисляет и выводит в виде таблицы сумму, среднее арифметическое, минимальное и максимальное значения по X и по Y.
Разработать консольную программу, которая для полинома, заданного в таблице 1, выводит таблицу значений по X и Y, аналогично п.2. Диапазон и шаг изменения Х вводить с клавиатуры.
Разработать консольную программу, которая на заданном отрезке выполняет поиск одного из корней полинома методом деления отрезка пополам. Границы отрезка вводить с клавиатуры.
Таблица 1. Варианты задания
Бригада № |
Полином |
Корни |
1 |
X3 + 7.5X2 + 3X – 3.5 = 0 |
-7, -1, 0.5 |
2 |
X3 + 3X2 - 6X – 8 = 0 |
-4, -1, 2 |
3 |
X3 - 5X2 + 2X + 8 = 0 |
-1, 2, 4 |
4 |
X3 - 8X2 + 11X + 20 = 0 |
-1, 4, 5 |
5 |
X3 + 2X2 - 5X – 6 = 0 |
-3, -1, 2 |
6 |
X3 - 4.5X2 + 6.5X – 3 = 0 |
1, 1.5, 2 |
7 |
X3 - 4X2 + X + 6 = 0 |
-1, 2, 3 |
8 |
X3 - 1.5X2 - X + 1.5 = 0 |
-1, 2, 1.5 |
9 |
X3 - 1.5X2 – 2.5X + 3 = 0 |
-1.5, 1, 2 |
10 |
X3 - 3.5X2 + 0.5X + 5 = 0 |
-1, 2, 2.5 |
11 |
X3 + 2.5X2 - X – 2.5 = 0 |
-2.5, -1, 1 |
12 |
X3 - 4X2 - 20X + 48 = 0 |
-4, 2, 6 |
Краткая теория
Работа в среде MS Visual Studio
Профессиональный разработчик ПО вынужден большую часть жизни проводить за компьютером, бесконечно повторяя цепочку одних и тех же действий, которые составляют суть процесса отладки приложения. Студия разработчика Microsoft Visual Studio .NET предоставляет для этой цели целый набор достаточно удобных встроенных инструментов. Возможности студии позволяют разрабатывать проекты различных типов, организовывать зависимые проекты, объединять проекты разных типов. Вы можете создавать и отлаживать как структурно-, так и объектно-ориентированные программы внутри интегрированной среды разработки Integrated Development Environment (IDE).
Создаваемые вами файлы должны быть включены в Visual C++ Project, который необходимо поместить в решение (Solution). Так называется хранилище проектов или область памяти (папка на диске), где расположены ваши проекты и их конфигурации. Solution может содержать несколько разных проектов, в том числе и проекты различных типов (например, Visual C++ и Visual J++). Запустив оболочку, вы увидите окно редактора текста, а справа от него — окна, которые представляют собой инструменты для просмотра элементов проекта:
ClassView — демонстрирует классы, их данные и методы;
Solution Explorer — показывает все файлы, включенные в проекты решения;
Properties – показывает свойства выбранного в окне Solution Explorer или ClassView элемента.
Документация выделена в отдельное приложение, называемое MSDN Library (библиотека разработчика). Для получения справки по какому-либо элементу программы в редакторе кода установите на нем курсор и нажмите кнопку F1.
При создании нового проекта (по команде меню File > New > Projects) по умолчанию создается один проект, но в двух конфигурациях:
Debug — версия проекта, в которой выключается оптимизация кода и включается в него отладочная информация;
Release — версия, в которой делается все наоборот (выключается отладочная информация и включается оптимизация кода).
Обычно при создании нового проекта он автоматически помещается во вновь созданное решение в конфигурации Debug. Демонстрация файлов проекта в отдельной папке проекта не означает, что файлы физически расположены в одной папке. Оболочка может использовать ссылки на файлы из других директорий, но графически отображать файлы так, как будто они находятся в папке проекта. В процессе работы с проектом вы можете безболезненно удалять папки Debug или Release. Они автоматически восстановятся при последующей компиляции исходных файлов.
Visual Studio предлагает выбор из различных типов проектов приложений. Их все можно увидеть, выбрав пункт меню File > New > Projects. Мы будем использовать С++ Win32 Console Project - проект консольного приложения для платформы Win32. Для создания консольного приложения выполните следующую последовательность действий.
1. Выберите в меню команду File > New > Projects.
2. В появившемся окне диалога выберите тип проекта Win32 Console Project.
3. В поле Name задайте имя проекта: First.
4. Выберите месторасположение папки с проектом (в поле Location:).
5. Нажмите кнопку More , введите имя решения Solution (Lab1) и сделайте отметку в окне Create directory for Solution.
6. Подтвердите выбор, нажав ОК.
7. Нажмите кнопку Finish.
Фокус переходит в окно редактора текста, где можно ввести код программы. Набранную программу можно сразу компилировать и запускать на выполнение.
Компиляция, компоновка и запуск приложения в Microsoft Visual Studio совершаются с помощью команд, выбираемых из меню Build или Debug или с помощью комбинаций клавиш (shortcuts).Самый быстрый способ запуска программы — с помощью команды Debug > Start или F5. Отдав команду, вы должны увидеть сообщение (message box) о том, что не существует файл First.exe или First.obj во вновь созданной папке Debug (эта конфигурация проекта выбрана по умолчанию). Согласитесь с предложением создать эти файлы.
Выполнение Debug-версии проекта в пошаговом режиме осуществляется с помощью следующих клавиш:
• F10 — без захода в вызываемые функции (Step Over);
• F11 — с заходом в вызываемые функции (Step Into).
Поставьте фокус в окно редактора и нажмите клавишу F10. Приложение запускается в режиме пошаговой отладки и появляется новое окно Locals для просмотра текущего содержимого переменных программы.
Массивы, объекты классов и структуры можно «раскрывать» (expand). Переход в окно выполняемого приложения выполняется обычным способом — нажатием комбинации клавиш Alt+Tab. Каждое нажатие клавиши F10 приводит к выполнению одной строки программы. Указатель в окне редактора опережает события и устанавливается на ту строку, которую еще предстоит выполнить. Нажмите клавишу F10 еще раз — указатель перемещается на первую строку с выполнимыми операторами. Посмотрите в окно Locals. Здесь высвечены текущие значения переменных
Останавливать отладку следует командой Stop Debugging (Shift+F5).
Клавиша F11 служит для пошагового выполнения с заходом в вызываемые функции. Она позволяет пройтись по многим системным функциям, и ее можно рассматривать как некоего гида по коду, написанному разработчиками системы. Без сомнения, таким образом можно многое увидеть, многое понять и многому научиться. Он просто необходим, когда вы хотите попасть внутрь своей функции, вызов которой находится в текущей строке отладчика.
Ошибки, обнаруженные на этапах компиляции и компоновки, выводятся в окно Output. Мгновенный переход в файл с текстом программы (к строке с ошибкой) происходит при двойном щелчке на строке с сообщением об ошибке. Это справедливо для ошибок, обнаруженных на этапе компиляции. Многие ошибки на этапе компоновки (linking) могут быть исправлены изменением настроек проекта (Project > Properties...).
Пример
Рассмотрим пример программы, которая реализует ввод точек экспериментально полученной зависимости у = f(x), то есть дискретных значений аргумента x[i] и соответствующих им значений функции y[i].
#include <stdio.h> // Подключаемые файлы заголовков
#include <conio.h>
int in (int min, int max) //Внешняя функция
{ //======== Ввод целого в диапазоне (min, max) ==//
int n;
bool bad=true;
while (bad) // Пока есть ошибки
{
printf ("\n Enter an integer %d..%d:",min,max);
scanf ("%d",&n); // Ввод целого по адресу n
fflush (stdin); // Очистка буфера
bad = n<min || max<n; // Ошибка
if (bad) {
printf("\nOut of range %d..%d ",min,max);
if (!getch()) getch(); //Ждем реакцию
}
}
return n;
}
void main ()
{
float x[10],y[10]; // Массивы вещественных
int i,n;
puts ("\n Number of points:");
n = in(2,10); //Вызов функции безопасного ввода
puts ("\n Points Coordinates :");
for (i=0; i<n; i++)
{
printf ("\nx[%d]= ",i+1);
scanf ("%f",&x[i]);
printf ("y[%d]= ",i+1);
scanf ("%f",&y[i]);
}
puts ("\n You've entered:");
for (i=0; i<n; i++)
printf("\nx[%d]=%5.2f\ty[%d]=%6.3f",i+1,x[i],i+1,y[i]);
puts( " \n\n");
}