Лабораторная работа № 2. Оператор условия

Теоретическая часть

Visual С++ 2010 является средой разработки программ для операционных систем семейства Windwos. Среда позволяет разрабатывать два принципиально отличающихся вида приложений: программы, которые выполняются на компьютере как «родные» (native); программы, выполняющиеся под управлением общеязыковой исполняющей среды (Common Language Runtime- CLR) Net Framework. В данных методических указания будут рассматриваться программы первого типа.

Среда Visual C++ позволяет создавать программы и компоненты различных типов, одним из простейших которых является консольные приложения (программы командной строки). Программы данного типа не используют графический интерфейс, а для взаимодействия с пользователем используются только клавиатура и экран. Выбор изучения именно консольного приложения обусловлен тем, что данная работа знакомит с языком С++ и средой Visual C++, поэтому нет необходимости перегружать работу особенностями приложений с графическим интерфейсом.

Приступим к разработке первого консольного приложения. Запустим среду программирования Visual С++. Создайте новый проект, выбрав пункт меню «Файл»-«Создать»-«Проект»(Shift+Ctrl+N).

Рисунок 1.1 – Создание нового проекта

 

Далее выберите шаблон «Консольное приложении Win32».

Рисунок 1.2 – Выбор шаблона консольного приложения

В поле «Имя» укажите название проекта, выберите папку для хранения файлов проекта и нажмите кнопку «OK». В следующем диалоговом окне нажмите «Готово».

Рисунок 1.3 – Обозреватель решений

В итоге у Вас на экране должны отображаться окно «Обозреватель решений» и содержимое файла «Lr1.cpp». Если файл Lr1.cpp не отображается, то дважды щелкните ЛК мыши на название файла в обозревателе решений. Для отображения номеров строк выберите пункт меню «Сервис»-«Параметры» и в появившемся окне выберите «Текстовый редактор»-«С/С++»-«Общие», затем поставьте галочку «Номера строк» в разделе «Показывать».

Автоматически созданная программа ничего не делает. Произведем модификацию исходного кода:

#include "stdafx.h"

#include <iostream>

 

 

int _tmain(int argc, _TCHAR* argv[])

{

std::cout<<"Hello World!!\n";

return 0;

}

Разберем исходный код. В первой строке директива include добавляет к коду содержимое файла stdafx.h в то место, где она расположена. Директива #include <iostream> подключает библиотеку с базовыми операциями ввода-вывода. Далее идет описание функции _tmain. Программа может содержать большое количество функций, главной из которых является функция main. В данном примере функция обозначена как _tmain, что означает что используется кодировка Unicode.

Оператор std::cout осуществляет вывод на экран вывода строки.

Для сборки решения нажмите клавишу «F7». В результате в окне вывода должен появится текст следующего вида:

1>------ Построение начато: проект: Lr1, Конфигурация: Debug Win32 ------

1>Построение начато 02.09.2012 16:27:43.

1>InitializeBuildStatus:

1> Создание "Debug\Lr1.unsuccessfulbuild", так как было задано "AlwaysCreate".

1>ClCompile:

1> Для всех выходных данных обновления не требуется.

1> Lr1.cpp

1>ManifestResourceCompile:

1> Для всех выходных данных обновления не требуется.

1>Manifest:

1> Для всех выходных данных обновления не требуется.

1>LinkEmbedManifest:

1> Для всех выходных данных обновления не требуется.

1> Lr1.vcxproj -> D:\ASP\ООП\Лабораторная работа\C++\Lr1\Debug\Lr1.exe

1>FinalizeBuildStatus:

1> Файл "Debug\Lr1.unsuccessfulbuild" удаляется.

1> Обращение к "Debug\Lr1.lastbuildstate".

1>

1>Построение успешно завершено.

1>

1>Затраченное время: 00:00:01.61

========== Построение: успешно: 1, с ошибками: 0, без изменений: 0, пропущено: 0 ==========

Если в проекте присутствуют ошибки, то они сообщаются пометкой «error». В данном случае ошибки нет и построение выполнено успешно. В следующем примере показан результат построения, когда вместо оператора cout было написано cout1:

1>d:\asp\ооп\лабораторная работа\c++\lr1\lr1\lr1.cpp(10): error C2039: cout1: не является членом "std"

1>d:\asp\ооп\лабораторная работа\c++\lr1\lr1\lr1.cpp(10): error C2065: cout1: необъявленный идентификатор

1>

1>СБОЙ построения.

1>

1>Затраченное время: 00:00:00.69

========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

Скомпилированная программа находится в папке debug.

Для запуска программы нажмите клавиши «Ctrl+F5» .

Рисунок 1.4 – Результат выполнения программы

Усложним нашу программу. Пусть она рассчитывает площадь прямоугольника. Для этого нужно знать длину и ширину прямоугольника. Соответственно, объявим 3 переменные вещественного типа float: a,b, S. Для ввода данных воспользуемся оператором cin. Вариант программы представлен ниже:

#include "stdafx.h"

#include <iostream>

 

int _tmain(int argc, _TCHAR* argv[])

{

setlocale(LC_ALL,"Rus"); //поддержка кириллицы

float a,b,S;

std::cout<<"Программ расчета площади прямоугольника!!!\n";

std::cout<<"Введите длину прямоугольника:";

std::cin>>a;

std::cout<<"Введите ширину прямоугольника:";

std::cin>>b;

S=a*b;

std::cout<<"Площадь прямоугольника равна:"<<S<<"\n";

return 0;

}

Обратите внимание, что для C++ имеет значение регистр букв, т.е. s и S это две разные переменные.

 

Постановка задачи

1. Напишите программу, которая вычисляет значение функции у= -2,7х3+0,23x2-1,4. Программ запрашивает значение x и выдает на экран значение y.

2. Напишите программу для пересчета веса из фунтов в килограммы (один фунт — это 405,9 грамма).

3. Напишите программу для пересчета расстояния из километров в версты (одна верста — это 1066,8 м).

4. Напишите программу для вычисления площади треугольника: s =a*h/2, где а — длина основания; h — высота треугольника.

5. Напишите программу для вычисления площади трапеции: s = (a+b)*h/2, где а и b — длины оснований; h — высота трапеции.

 

Порядок выполнения работы

1. Запустите Visual C++. Создайте консольный проект;

2. Наберите код, который выполняет действия, описанные в пункте 1.2;

3. Выполните программу, убедитесь в её корректности;

4. Сделайте выводы по работе и составьте отчет по работе.

Контрольные вопросы

1. Какие типы программ можно разрабатывать в среде Visual C++ 2010?

2. Какими характеристиками обладают консольные приложения?

3. Какой оператор используется для ввода данных в консольном режиме?

4. Назначение библиотеки iostream?

5. Какая функция обязательно должна присутствовать в программе?

Лабораторная работа № 2. Оператор условия

Цель работы: получить навыки использования оператора if

 

Теоретическая часть

2.1.1 Операторif

Оператор if позволяет проверить условие (например, равны ли две переменные) и изменить ход выполнения программы, направив её в другое русло, которое будет зависеть от результата сравнения.

Простейшая форма оператора имеет вид:

if (условие)

выражение;

Условие обычно содержит операторы отношений. Если условие возвращает значение false, то последующее выражение пропускается. Если же оно возвращает значение true, то выражение выполняется. Ниже приведен пример:

if (bigNumber<smallNumber)

bigNumber=smallNumber;

 

Здесь сравниваются значение переменных bigNumber и smallNumber. Если значение bigNumber меньше smallNumber, то во второй строек его значение устанавливается равным smallNumber.

Если необходимо выполнить несколько операторов по условию, то необходимо их заключить в фигурные скобки:

if (bigNumber<smallNumber)

{

Tmp=bigNumber;

bigNumber=smallNumber;

smallNumber=tmp;

}

Часто в программах требуется, чтобы при выполнении условия программа выполняла один блок операторов, иначе – другой блок.

int main(int argc, char* argv[])

{

int bigNumber, smallNumber;

cout<<"Enter a big number:";

cin>>bigNumber;

cout<<"Enter a small number:";

cin>>smallNumber;

 

if (bigNumber>smallNumber)

cout<<"Thanks\n";

else

cout<<"Oops. The second is bigger\n";

return 0;

}

При помощи вложенных одна в другую нескольких инструкций if можно реализовать множественный выбор.

 

2.1.2 Операторswitch

 

Оператор switch (переключатель) предназначен для разветвления процесса вычислений на несколько направлений. Структурная схема оператора приведена на рисунке 2.1. Формат оператора:

switch ( выражение ){

case константное_выражение_1: [список_операторов_1]

case константное_выражение_2: [список_операторов_2]

case константное_выражение_п: [список_операторов_п]

[default: операторы ]

Рисунок 2.1 – Формат оператора switch

Выполнение оператора начинается с вычисления выражения (оно должно быть целочисленным), а затем управление передается первому оператору из списка, помеченгюго константным выражением, значение которого совпало с вычисленным.

После этого, если выход из переключателя явно не указан, последовательно выполняются все остальные ветви.

Выход из переключателя обычно выполняется с помощью операторов break. Все константные выражения должны иметь разные значения, но быть одного и того же целочисленного типа. Несколько меток могут следовать подряд. Если совпадения не произошло, выполняются операторы, расположенные после слова default (а при его отсутствии управление передается следующему за switch оператору).

Пример:

switch (choice)

{

case 0:

cout<<“Zero”;

break;

case 1:

cout<<“One”;

break;

case 2:

cout<<“Two”;

break;

default:

cout<<“default!”;

break;

}

 

Постановка задачи

Оператор if

1. Написать программу, которая вычисляет частное двух чисел. Программа должна проверять правильность введенных пользователем данных и, если они неверные (делитель равен нулю), выдавать сообщение об ошибке. Ниже приведен рекомендуемый вид экрана во время выполнения программы (данные, введенные пользователем, выделены полужирным шрифтом).

Вычисление частного.

Введите в одной строке делимое и делитель,

затем нажмите <Enter>.

12 0

Вы ошиблись. Делитель не должен быть равен нулю.

2. Написать программу вычисления площади кольца. Программа должна проверять правильность исходных данных. Ниже приведен рекомендуемый вид экрана во время выполнения программы (данные, введенные пользователем, выделены полужирным шрифтом).

Вычисление площади кольца.

Введите исходные данные:

Радиус кольца (см) -> 3.5

Радиус отверстия (см) -> 7

Ошибка! Радиус отверстия не может быть больше радиуса кольца.

3. Написать программу вычисления сопротивления электрической цепи, состоящей из двух сопротивлений. Сопротивления могут быть соединены последовательно или параллельно. Ниже приведен рекомендуемый вид экрана во время выполнения программы (данные, введенные пользователем, выделены полужирным шрифтом).

Вычисление сопротивления электрической цепи.

Введите исходные данные:

Величина первого сопротивления (Ом) -> 15

Величина второго сопротивления (Ом)-> 27.3

Тип соединения (1 — последовательное, 2 — параллельное) -> 2

Сопротивление цепи: 9.68 Ом

4. Написать программу, которая переводит время из минут и секунд в секунды. Программа должна проверять правильность введенных пользователем данных и в случае, если данные неверные, выводить соответствующее сообщение. Рекомендуемый вид экрана во время выполнения программы приведен ниже.

Введите время (минут.секунд) -> 2.90

Ошибка! Количество секунд не может быть больше 60

Для завершения нажмите <Enter>

5. Написать программу вычисления стоимости покупки с учетом скидки. Скидка в 10% предоставляется, если сумма покупки больше 1000 руб. Ниже приведен рекомендуемый вид экрана во время выполнения.

Вычисление стоимости покупки с учетом скидки

Введите сумму покупки и нажмите <Enter>

-> 1200

Вам предоставляется скидка 10%

Сумма покупки с учетом скидки: 1080.00 руб.

6. Написать программу, которая проверяет, является ли введенное пользователем целое число четным. Ниже приведен рекомендуемый вид экрана программы во время выполнения программы (данные, введенные пользователем, выделены полужирным шрифтом).

Введите целое число и нажмите <Enter>

-> 23

Число 23 — нечетное.

 

2.2.1 Оператор switch

 

1. Напишите программу, которая запрашивает у пользователя номер дня недели, затем выводит название дня недели или сообщение об ошибке, если введены неверные данные.

2. Написать программу, которая вычисляет стоимость междугородного телефонного разговора (цена одной минуты определяется расстоянием до города, в котором находится абонент). Исходными данными для профаммы являются код города и длительность разговора. Ниже приведены коды некоторых городов и рекомендуемый вид экрана во время работы профаммы (данные, введенные пользователем, вьщелены полужирным шрифтом).

 

Вычисление стоимости разговора по телефону.

Введите исходные данные:

Код города -> 423

Длительность (целое количество минут)-> 3

Город: Владивосток

Цена минуты: 2.20 руб.

Стоимость разговора: б.60 руб.