Пример написания программы консольного приложения




Лабораторная работа №2. Реализация разветвляющихся алгоритмов

 

Цель работы: изучить операции сравнения, логические операции, операторы передачи управления if, switch, break, научиться пользоваться простейшими компонентами организации переключений (СheckBox, RadioGroup). Написать и отладить программу с разветвлениями.

 

Общие теоретические сведения

Оператор условной передачи управления if

Для выбора одной из ветвей вычислений применяется оператор условного перехода:

if ( выражение ) оператор 1;

else оператор 2;

вычисляется выражение, и если его значение не равно 0 (истинно), то выполняется оператор 1, иначе – оператор 2, например:

if(x>y) max = x;

else max = y;

Если операторы 1, 2 содержат более одного оператора, то они заключаются в фигурные скобки { }, т.е. применяется блок.

Конструкция else может отсутствовать и такую форму называют сокращенной, тогда в случае ложности условия управление передается на следующий за if оператор.

Если операторы 1, 2 в свою очередь являются операторами if, то такой оператор называют вложенным, при этом ключевое слово else принадлежит ближайшему предшествующему if.

Например, найти наибольшее значение из трех чисел x, y, z:

if (x>y)

if (x>z) max=x;

else max=z;

else if(y>z) max=y;

else max=z;

Операции сравнения: < (меньше), <= (меньше или равно), > (больше), >= (больше или равно), != (не равно), = = (равно). Пары символов разделять нельзя.

Операции сравнения бинарные, их общий вид:

Операнд 1 знак операции Операнд 2

Операндами операций сравнения могут быть данные любых базовых типов, значения которых перед сравнением преобразуются к одному типу.

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

! (отрицание или логическое НЕ – унарная операция), && (конъюнкция или логическое И), || (дизъюнкция или логическое ИЛИ).

Например: (0<x)&&(x<=100)

((!x)&&(y>0)||((z==1)&&(k>0))

Выражения вычисляются слева направо, причем их вычисление прекращается, как только результат становится известен.

Тернарная (условная) операция?:

Ее общая форма:

Операнд 1? Операнд 2: Операнд 3

Если значение операнда 1 истинно (не равно 0), то результатом операции является операнд 2, иначе – операнд 3.

Например, найти наибольшее из двух чисел: max = a>b? a: b;

Оператор выбора switch

Общая форма оператора выбора (переключателя):

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

case const_1: операторы; break;

case const_N: операторы; break;

default: операторы;

}

Вычисляется выражение и проверяется, совпадает ли его результат со значением одной из констант. При совпадении выполняются операторы этого case. Значениями const _1,…, const _ N могут быть только целые или символьные константы. Конструкция default выполняется, если результат выражения не совпал ни с одной из констант, и может отсутствовать. Оператор break выполняет досрочный выход из switch (после выполнения ветви case все остальные будут опущены). Если оператор break в case не записан, то будут выполняться операторы следующих ветвей case до появления оператора break, либо до завершения оператора switch.

Например:

switсh(i) {

case 1: f=pow(x,2); break;

case 2: f=fabs(x); break;

case 3: f=sqrt(x); break;

default: printf(“Ошибка!”); exit(1);

}

f=f+5;

 

Создание оконного приложения

При создании оконного приложения для организации разветвлений используются компоненты в виде кнопок-переключателей. Состояние такой кнопки (включено/выключено) визуально отражается на форме. На форме (рис. 2.1) представлены кнопки-переключатели двух типов TCheckBox и TRadioGroup.

Компонента CheckBox создает кнопку независимого переключателя, с помощью которой Пользователь может указать свое решение типа да/нет. В программе состояние кнопки связано со значением булевой переменной, которая проверяется с помощью оператора if.

Компонента Radiogroup создает группу кнопок – зависимых переключателей. При нажатии одной из кнопок группы все остальные кнопки отключаются. В программу передается номер включенной кнопки (0,1,2,…), который анализируется с помощью оператора switсh.

В языке C++ используются переменные типа bool, которые могут принимать только два значения – true и false (истина – 1, ложь – 0).

 

Пример выполнения задания

Ввести исходные данные x, y, z. Вычислить значение u в зависимости от выбора: sin (x), cos (x) или tg (x), после чего определить максимальное либо из u, y, z, либо из их модулей – | u |, | y |, | z |.

Реализация примера оконного приложения

Cоздать форму, представленную на рис. 2.1, скорректировать текст надписей, положение окон Edit и написать соответствующую программу.

Компонента СheckBox

В меню Standard выберите пиктограмму , поместите ее в нужное место формы, измените заголовок Caption на «max модулей», после чего в тексте программы появится переменная CheckBox 1 типа TСheckBox. В зависимости от того, сделан выбор или нет, булева переменная CheckBox 1-> Checked будет принимать значение true или false.

Компонента RadioGroup

В инспекторе объектов в свойстве Items вызовите строчный редактор списка заголовков кнопок и наберите три строки с именами выбираемых функций… В тексте Unit1.h появилась переменная RadioGroup1 типа TRadioGroup. Теперь при… В функции FormCreate() желательно установить начальное значение этой переменной, например, RadioGroup1->ItemIndex =…

Пример написания программы консольного приложения

Текст программы может иметь вид

//---------------------------------------------------------------------------

#include <vcl.h>

#include <conio.h>

#include <stdio.h>

#include <math.h>

#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused

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

{

double x,y,z,u,ma;

int kod;

puts("Input x, y, z");

scanf("%lf%lf%lf",&x, &y, &z);

puts("Function U(x): 0 - cos(x) 1 - sin(x) 2 - tan(x)");

scanf("%d", &kod);

switch(kod){

case 0: u=cos(x); printf(" Cos(x)= %8.6lf",u); break;

case 1: u=sin(x); printf(" Sin(x)= %8.6lf",u); break;

case 2: u=tan(x); printf(" Tg(x)= %8.6lf",u); break;

}

puts(" Max ABS - 1, Else - Max");

scanf("%d", &kod);

if (kod == 1){

u = fabs(u);

y = fabs(y);

z = fabs(z);

}

if (u>y) ma=u;

else ma=y;

if (z>ma) ma=z;

if (kod==1)printf("Max ABS = %8.6lf", ma);

else printf("Max = %8.6lf", ma);

puts(" Press any key... ");

getch();

return 0;

}

Результаты выполнения программы:

 

Индивидуальные задания

Вычислить значение y в зависимости от выбранной функции j(x), аргумент которой определяется из поставленного условия. Возможные значения функции j(x): 2 x, x 2, х /3 (в оконном приложениии выбор выполнить с помощью компоненты RadioGroup). Предусмотреть вывод сообщений, показывающих, при каком условии и с какой функцией производились вычисления у.

1. , где

2. , где

3. , где

4. , где

5. , где

6. , где

7. , где

8. , где

9. , где

10. , где

11. , где

12. , где

13. , где

14. , где

15. , где

16. , где

17. , где

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-27 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: