имя_структуры . имя_элемента_структуры




..............

double func_n (параметры) //Заголовок локальной функции_n

{ описание локальных объектов

операторы функции func_n

}

Директивы препроцессора

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

#include <имя включаемого файла>

Например:

#include <iostream.h> //подключение файла, служащего для

// управления вводом и выводом данных

#include <math.h> //подключение математических функций

Описание объектов

Объект в С++ определяется как некоторая область памяти, в которой располагаются константы, функции, массивы и т.д.

Одним из наиболее используемых объектов как именованной области памяти является переменная (идентификатор). С ее именем можно связывать различные значения, совокупность которых определяется типом переменной.

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

<тип> <список идентификаторов>;

Например:

int delta; //переменная delta типа int

double x, y, z; // список переменных типа double

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

<идентификатор>=значение

или

<идентификатор>(значение).

Например:

float x=7.4; int c(2);

Если включить в описание переменной модификатор const, то в результате получится именованная константа, которую в дальнейшем изменять нельзя.

Например:

const int a=5;

const float b=7.24;

Вводить константы также можно с помощью препроцессорной директивы:

#define <идентификатор> <значение>;

Например:

#define F 1.713232;

Функции

В языке С++ функция – это основное понятие, так как любая программа состоит из функций. Это соответствует модульному принципу программирования, согласно которому исходная задача разбивается на несколько подзадач. Программа, как правило, состоит из нескольких функций, одна из которых имеет имя main. С нее начинается выполнение программы. Функция main имеет следующий вид:

Void main()

{тело функции}

Тип void показывает, что функция не типизирована, т.е. не должна возвращать значения, а круглые скобки указывают, что этот программный блок называется функцией. Тело функции заключается в фигурные скобки { } и представляет собой последовательность операторов, которыми являются выражения, заканчивающееся символом точка с запятой (;).

Например, простейшая программа вычисления значений функции у=2 будет иметь следующий вид:

 

#include <iostream.h>

#include <math.h>

void main()

{int x; float y; //Описание переменных

cout<<" Введите значение х – целое положительное число ";

cout<<"x=";cin>>x; //Ввод переменной х с клавиатуры

y=2*sqrt(x); //Вычисление значения функции

cout<<"y="<<y; //Вывод результата

}

Комментарии

Комментарии или пояснения начинаются с двух символов "косая черта" (//) и заканчиваются переходом на новую строку или заключаются в скобки /* и */. Компилятор комментарии игнорирует, поэтому внутри них можно размещать любой текст, в котором разрешено использовать не только символы из алфавита языка С++, но и русские буквы.

Например:

// вывод полученных результатов

// и исходных данных

или

/* вывод полученных результатов

и исходных данных */

 

1.3. Выполнение программы

Подготовка текста программы осуществляется в окне текстового редактора интегрированной среды программирования. Файл текста программы имеет расширение .cpp.

Для выполнения программы ее необходимо перевести в машинные коды, т.е. на язык, понятный процессору. Этот процесс состоит из нескольких этапов (рис. 1.1).

1. Исходный файл кодируется специальными символами. Далее он раскладывается на лексемы и последовательности разделителей. При этом сохраняются символы перехода на новую строку, а комментарии заменяются пробелами.

2. Выполняются директивы препроцессора, например подключение математических функций, файлов ввода-вывода и т.д. При этом в исходный текст программы вставляется текст соответствующего заголовочного файла.

3. Полный текст программы поступает на компиляцию, где выделяются лексемы и распознаются построенные из них выражения и операторы. При этом компилятор выявляет синтаксические ошибки. В случае отсутствия или исправления всех синтаксических ошибок формируется объектный модуль программы, имеющий расширение .obj.

4. Редактор связей, или компоновщик (linker) подключает к данному объектному модулю библиотечные функции, например, для осуществления вывода информации на экран. Если программа состоит из нескольких исходных файлов, то они компилируются отдельно и в заключение объединяются компоновщиком (см. рис. 1.1). В результате получается модуль программы в машинных кодах с расширением .exe.

 

 
 

 


Рис. 1.1. Этапы выполнения программы

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

1. Из каких элементов состоит язык С++?

2. Какие лексемы формируются из символов алфавита?

3. Перечислите основные математические функции, используемые в языке С++.

4. Приведите примеры описания переменных и констант.

5. Что такое зарезервированные слова.

6. Какие арифметические операции реализованы в С++?

7. Что определяет тип данных?

8. Какие типы целых чисел Вы знаете?

9. Какие типы вещественных чисел Вы знаете?

10. Поясните особенности структуры программы на С++.

11. Что такое директивы препроцессора?

12. Каким образом подключаются заголовочные файлы ввода-вывода?

13. Поясните особенности главной функции main.

14. Поясните процесс компиляции программы.

 


2. ОСНОВЫРАБОТЫВ ИНТЕГРИРОВАННОЙ СРЕДЕ ПРОГРАММИРОВАНИЯ BОRLAND C++ 5.02

Интегрированная среда разработки Borland C++ 5.02 ориентирована на использование операционной системы Windows и поэтому имеет схожий графический интерфейс. Она позволяет легко строить проекты, а также вводить текст программы, производить компиляцию, исправление ошибок, осуществлять перекомпиляцию и сборку программы. Удобный редактор текстов программ поддерживает цветной шрифт и кириллицу. Во время компиляции программа указывает места ошибок.

Система Borland C++5.02 упрощает процесс программирования и делает его более эффективным. Загрузив данную программу, можно получить комплекс услуг, который позволяет написать, отредактировать, откомпилировать и отладить программу.

Если данная программа не установлена, то ее следует установить, следуя инструкциям, которые приведены в прил. 2.

2.1. Загрузка и настройка системы программирования

Bоrland C++ 5.02

Загрузку системы Borland C++5.02 (в дальнейшем ВС++) осуществляют:

· с рабочего стола двойным щелчком на ярлыке BC++;

· через главное меню выбором пунктов Программы/Borland C++ 5.02/ Borland C++.

!! Осуществите загрузку системы Borland C++5.02.

После загрузки на мониторе появится основной экран системы Borland C++5.02 (рис. 2.1).

Он включает в себя:

1) главное меню, расположенное горизонтально вверху экрана;

2) панель инструментов;

3) рабочую часть экрана.

Главное меню имеет десять опций: File, Edit, Search, View, Project, Script, Tool, Debug, Options, Windows, Help. Каждая опция имеет свое собственное меню падающего типа. Меню может быть вызвано двумя способами.

1. Инициализацией главного меню клавишей F10 с последующим выбором нужного пункта главного меню клавишами управления курсором и Enter.

2. Щелчком левой клавиши мыши на нужном пункте главного меню.

Для закрытия меню можно нажать клавишу Esc или щелкнуть мышью на экране вне поля меню, а при необходимости возврата в главное меню достаточно нажать F10.

Рис. 2.1. Основной экран системы Borland C++5.02

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

1. Для удобства работы с файлами проектов в папке C:\Bc5\Bin следует предварительно создать папку Myfile. Для автоматической установки этой папки в качестве текущего каталога следует прописать требуемые пути в окнах, приведенных на рис. 2.2, 2.3, которые вызываются через оконное меню с помощью команд Options/Environment/Editor/File и Options/Project/ Directories соответственно.

 

 
 

 


Рис. 2.2

 
 

 

 


Рис. 2.3

!! Создайте в папке С:\Вс5\Bin папку Myfile и настройте среду программирования для автоматического выхода в эту папку.

2. Для установки и отображения русского шрифта следует прописать требуемые пути в окнах, приведенных на рис. 2.4, 2.5, которые вызываются через оконное меню с помощью команд Options/Environment Options/Editor/Display и Options/ Environment Options/Font соответственно.

 
 

 


Рис. 2.4

 
 

 


Рис. 2.5

2.2. Создание и работа с проектом

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

С помощью ВС++ можно создавать приложения самых разных типов, в том числе: программы под MS DOS, Windows 3.х,Windows 9.х и консольные приложения.

Для изучения основ программирования удобнее использовать режим EasyWin, позволяющий строить приложения для Windows 3.х, которые выполняются в текстовом окне и не требуют дополнительного меню и диалоговых окон.

Для создания новогопроекта EasyWin необходимо

1. Подать команду File/New/Projeсt....

2. В открывшемся окне New Target (рис. 2.6) выполнить следующие действия:

· в списке Target Type выбрать тип приложения EasyWin[.exe]; при этом в поле Platform автоматически установится платформа Windows 3.x (16);

Рис. 2.6. Экран системы Borland C++5.02 в момент создания проекта

· в поле Target Model установить модель памяти Large.

3. Изменить путь и имя проекта (используя латинский шрифт).

Это предлагается сделать следующим образом:

· нажать кнопку Browse;

· в появившемся окне Open Project File перейти в папку MyFile и, не выходя из нее, создать папку для проекта;

· открыть эту папку и ввести в поле Имя файла название проекта.

· нажать кнопку Открыть.

В результате в поле Project Path and Name окна New Target будет выведен полный путь к файлу проекта, а в поле TargetName -его имя безрасширения.

4. Нажать кнопку ОК. В открывшемся диалоговом окне с сообщением "Save project messages" нажать кнопку Yes.

!! Создайте в каталоге MyFile папку под своей фамилией, а в ней одноименный файл проекта familiy.ide.

 
 

 

 


Рис. 2.7. Окно редактора и менеджера проекта Project

В итоге появится окно менеджера проектов Project, в котором будет представлена иерархическая структура файла проекта, состоящая из двух файлов: исполняемого файла с расширением. ехе и исходного файла с расширением. срр (рис. 2.7).

5. Для ввода и редактирования текста программы следует дважды щелкнуть на имени исходного файла. В результате откроется окно редактора.

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

Компиляцию приложений EasyWin целесообразно осуществлять в режиме Compile, который инициализируется командой Project/Compile (Alt + F9).

· Если имеется синтаксическая ошибка, компилятор выводит на экран окно Message (сообщение) со списком ошибок. При двойном щелчке по выделенной строке с ошибкой курсор в окне редактора переходит в строку с предполагаемой синтаксической ошибкой (рис. 2.8).

 

Рис. 2.8. Процесс компиляции программы

При определении ошибки рекомендуется придерживаться следующих основных правил:

· необходимо проверить символы; и } (они часто пропускаются или оказываются лишними);

· если строка безупречна, то следует проверить предыдущую строку;

· сообщение с текстом "Cannot convert to…" означает попытку приписать переменной значение другого типа.

· проверить правильность записи операторов и имен идентификаторов.

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

После исправления всех синтаксических ошибок процесс компиляции заканчивается выводом окна с результатами трансляции.

После компиляции проекта его рекомендуется сохранить. Для этого проект необходимо закрыть. Это осуществляется выбором команды Project/Сlose project. Далее следует подтвердить сохранение в предлагаемом диалоговом окне.

Для того чтобы открыть созданный ранее проект, следует подать команду Project/Open project… и выбрать нужный файл проекта в окне Open Project File.

Не следует открывать файл проекта *.ide с помощью команды Filе/Open… Если это сделать и сохранить файл как текстовый, то он будет испорчен. Его придется создавать заново.

В этом же окне удобно осуществлять удаление ненужного проекта (папки) или его файлов с помощью клавиши Delete или команды контекстного меню Удалить.

Запуск производится командой Debug/Run (Ctrl+F9). В результате открывается окно исполняемого файла, в котором осуществляется ввод исходных данных и вывод результатов выполнения программы. Содержимое этого окна при необходимости можно вывести на печать. Для этого следует щелкнуть любой клавишей мыши по пиктограмме системного меню окна и выбрать пункт Print.

Интегрированная среда системы программирования Borland C++ позволяет осуществлять различные операции с уже готовым проектом. Можно создавать, добавлять, редактировать и удалять файлы.

Создание нового текстового файла (*.срр) производится выбором команды File/New/Text Edit. После ввода текста программы подается команда File/Save as... Затем этот файл можно добавить в готовый проект.

Добавление файла (обычно это *.срр) осуществляется также в окне менеджера проектов. Для этого следует выделить файл *.exe, затем вызвать его контекстное меню (Alt + F10 или мышью) и выбрать в нем команду Add node. В результате откроется окно Add to Project List, в котором необходимо выбрать нужный файл.

Редактировать существующий файл *.срр можно двумя способами

· Подать команду File/Open... и в диалоговом окне Open a File выбрать нужный файл. Затем внести изменения и сохранить файл с помощью Save или Save as...

· Открыть проект, подав команду Project/Open project, открыть исходный текстовый файл *.срр и внести требуемые изменения. Затем файл необходимо сохранить с помощью Save или Save as...

Удаление файлов из проекта можно осуществить в окне менеджера проектов Project. Для этого необходимо выделить нужный файл (обычно это *.срр), подать команду Alt + F10 или щелкнуть на этом файле правой кнопкой мыши и в контекстном меню выбрать команду Delete node. Файл удаляется из проекта, но остается в папке проекта. Если из файла проекта случайно удалить файл *.exe, то файл проекта придется создавать заново.

2.3. Составление простых линейных программ

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

Распространены следующие формы представления алгоритмов:

· словесно-формульная – это запись алгоритма на естественном языке с приведением формульных соотношений;

· графическая форма представления алгоритма в виде блок-схемы, состоящей из условных графических обозначений, в которых обычно указываются производимые операции (табл. 2.1);

· программная – представление алгоритма в виде формализованного текста на алгоритмическом языке.

Таблица 2.1

Условные графические обозначения основных блоков схем

алгоритмов

Обозначение блока Наименование Функции
    Пуск - останов Начало, конец и прерывание процесса обработки данных
  Процесс Выполнение операции или группы операций
 
 
 

 

 

Ввод-вывод Ввод или вывод данных в независимости от физического носителя
  Решение Проверка условия и выбор направления выполнения алгоритма
  Предопределенный процесс Выполнение подпрограммы
    Модификация Заголовок оператора цикла For

Для развития алгоритмического мышления на начальном этапе целесообразно использовать последовательно все три формы представления алгоритмов.

В общем случае процесс разработки программы предполагает выполнение следующих этапов.

1. Разработка алгоритма решения задачи в словесной форме и, если требуется, - в виде блок-схемы.

2. Составление текста программы по разработанному алгоритму.

3. Ввод программы в компьютер.

4. Компиляция программы – проверка на наличие синтаксических ошибок. Если в программе были допущены ошибки, на экране появится соответствующее сообщение, а курсор укажет ориентировочное место ошибки (типовые сообщения об ошибках приведены в прил. 3).

5. Отладка программы - это этап поиска логических ошибок на основе анализа данных выполнения программы. Если получаются неправильные результаты, необходимо исправить допущенные алгоритмические ошибки и затем снова запустить программу на выполнение.

6. Запуск программы на выполнение.

Пример. Вычислить значения функций:

;

,

где a, b – переменные; k=0.3, m=2 - константы.

Словесно-формульный алгоритм

Ввиду того, что переменная z зависит от x и y, а y – только от x, сначала вычисляется переменная x, затем y и в заключение z следующим образом.

1. Ввод исходных значений a, b.

2. Задание значений констант k=0.3, m=2.

3. Вычисление х с использованием промежуточных переменных: х1, х2 и х3:

x1=arctg(ab+k);

x2=ln(x1)-5;

;

x=x2/x3.

4. Вычисление y с использованием промежуточных переменных y1 и y2:

y1=lg(ax2+bx+m);

y2=2kx-1+0.125;

y=y1/y2.

5. Вычисление z с использованием промежуточных переменных: z1, z2 и z3:

z1=ln|y3-0.5|;

z2=e-m sin(m+z1);

;

z=z3-z2.

6. Вывод полученных результатов (x, y, z) и исходных данных (a, b).

На основании словесно-формульного алгоритма можно построить блок-схему (рис. 2.9).

 

 

 
 

 

 


Рис. 2.9. Блок-схема линейного алгоритма

 

 
 

 


Рис. 2.9. Окончание

Необходимыми элементами всех программ являются операции присваивания, функции ввода и вывода данных.

Операции присваивания

Оператор присваивания служит для присваивания переменной значения выражения. Общий вид записи операции присваивания:

<имя переменной><знак присваивания><выражение>;

Для простого присваивания используется знак равенства (=).

 

Например:

a=1.475; x=sin(a);

Ввод и вывод данных

В С++ нет встроенных средств ввода-вывода данных. Данные операции осуществляются при помощи специальных функций, которые содержатся в стандартных библиотеках. Данные функции присоединяются с помощью соответствующих директив препроцессора.

С помощью директивы препроцессора #include <iostream.h> подключаются к программе стандартные объекты-потоки, использующие потоковый способ ввода-вывода:

cout<< - вывод данных на экран;

cin>> - ввод данных с клавиатуры.

Например:

cout<<"введите переменную a=";

cin>>a;

После выполнения команды cin программа останавливается и ждет ввода с клавиатуры данных соответствующего типа. Затем компьютер продолжает выполнение программы.

С помощью директивы препроцессора #include<stdio.h>, унаследованной из языка С, можно присоединять функции ввода-вывода:

printf() - вывод данных на экран;

scanf() - ввод данных с клавиатуры.

Например:

printf("введите переменную a=");

scanf(&a); //знак & означает операцию получения адреса

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

По разработанному в примере линейному алгоритму можно написать текст программы, записав алгоритм на языке С++ с применением простых операций присваивания, ввода и вывода (лист. 2.1).

Листинг 2.1. lin_prog.cpp

#include <iostream.h> // деректива подключения средств

//ввода-вывода:cin, cout

#include <math.h> // деректива подключения математических функций

void main() // заголовок главной функции

{

double a,b,x1,x2,x3,x,y1,y2,y,z1,z2,z3,z; //объявление переменных

// вывод сообщения-подсказки на экран

cout<<" Введите исходные данные "<<endl; // endl- манипулятор

// перевода строки

cout<<"a=";cin>>a; //ввод переменной a

cout<<"b=";cin>>b; //ввод переменной b

const int m=2;const double k=0.3; //объявление констант k,m

//программирование выражений словесно-формульного алгоритма

x1=atan(a*b+k);

x2=log(x1)-5;

x3=pow(cos(a+b),4)+sqrt(m);

x=x2/x3;

y1=log10(a*pow(x,2)+b*x+m);

y2=pow(2,k*x-1)+0.125;

y=y1/y2;

z1=log(fabs(pow(y,3)-0.5));

z2=exp(-m)*sin(m+z1);

z3=sqrt(k*pow(x,2)+7.75);

z=z3-z2;

// вывод сообщения-подсказки на экран

cout<<"\n Значения вспомогательных переменных x,y\

и конечного результата z равны:"; //Символ \ - перенос

// литерной константы

//вывод полученных результатов и исходных данных

cout<<"\n x="<<x; // \n - символ перевода строки

cout<<", y="<<y;

cout<<", z="<<z<<endl;

cout<<" при a="<<a<<", b="<<b<<endl;

}

!! Проанализируйте программу, сопоставьте ее со словесным представлением и блок-схемой алгоритма. Создав новый файл проекта с именем lin_prog.ide, наберите в нем текст данной программы, откомпилируйте и произведите запуск программы на выполнение.

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

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

a=1

b=1

Значения вспомогательных переменных x,y и конечного результата z равны:

x=-3.52355, y=2.839, z=3.51229

при a=1, b=1

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

Упражнения

Вычислить значения функций x, y и z, зависящих от переменных а и b и констант k, m. Составить словесно-формульный алгоритм, затем записать его на языке программирования С++.Данные приведены в табл. 2.3.

!! Создайте новый файл проекта и введите текст составленной программы в окно редактора. Произведите компиляцию программы для выявления синтаксических ошибок. Запустите программу на выполнение и проанализируйте ее результаты.

Таблица 2.3

Варианты заданий

  , , при a=1, b=-1, k=0.5, m=3.14.
  z=e(x+ky) + m4, , при a=-0.3, b=2.5, k=1, m=2.1.
  , при a=0.75, b=6.3, k=2, m=4.6.
  , при a=2, b=3.7, k=-1, m=1.8.
  , при a=-1.1, b=-3, k=0.1, m=2.
  , при a=-2.7, b=1, k=3.14, m=-0.5.
  , при a=0,6, b=-1,3, k=-1, m=15.
  , при a=-3.6, b=0.4, k=1, m=2.4.

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

1. В чем достоинство интегрированных сред программирования?

2. Поясните процедуру создания нового проекта?

3. Как осуществить компиляцию программы?

4. Как открывается созданный ранее проект?

5. В чем заключается отличие логических ошибок от синтаксических? Как их обнаружить?

6. В чем заключается сущность словесно-формульного способа описания алгоритма?

7. Почему на начальном этапе изучения программирования рекомендуется составлять блок-схемы алгоритмов?

8. Перечислите основные этапы составления программы?

9. Чем характеризуется линейная структура алгоритма?

10. Приведите примеры операций присваивания.

11. Для чего в программе используют комментарии?

12. Каким образом можно организовать в программе поточный ввод и вывод данных?

13. Каким образом можно организовать в программе ввод и вывод данных с помощью операторов printf и scanf?

14. Как организовать в программе комментарии?

15. Каким образом подсоединяются к программе файлы ввода-вывода?

 

 


3. ОРГАНИЗАЦИЯ ВЕТВЛЕНИЙ В ПРОГРАММАХ

Базовая алгоритмическая структура ветвление обеспечивает в зависимости от результата проверки условия (истина - true или ложь - false) выбор одного из альтернативных путей работы алгоритма. Каждый из путей ведет к общему выходу.

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

 

3.1. Организация разветвляющихся алгоритмов

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

1. Условный оператор имеет два вида:

а) полная форма

if (условие) оператор1; else оператор2;

б) сокращенная форма

if (условие) оператор1;

где оператор1, оператор2 - любые операторы, включая условные и составные;

условие – в общем случае логическое выражение.

Например:

if(x<y ) min=x; elsemin=y;

Если оператор1 и оператор2 представляют собой короткие выражения, то вместо условного оператора можно использовать условную операцию ?:, в частности, для выше рассмотренного примера имеем:

min = (x<y)? x: y;

Блок-схемы условного оператора для обеих форм приведены на рис.3.1.

 

 

       
 
   

 


 

 

а) б)

Рис. 3.1. Блок-схемы условного оператора:

а – полная форма, б – сокращенная форма

 

2. Оператор выбора (переключатель) имеет следующий вид:

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

{case константа1: оператор1 break;

..........................................

case константаN: операторN break;

default: оператор // эта строка может отсутствовать

}

Здесь выражение - целочисленная переменная или соотношение; константа№ – метка в виде константы или константного выражения; default – метка на оператор, который выполняется в том случае, если выражение не совпадает ни с одной константной меткой; break – оператор выхода из переключателя.

Блок – схема оператора выбора представлена на рис. 3.2.

 

 

 


Рис. 3.2. Блок-схема оператора выбора

Пример:

Switch (rez)

{ case 5: cout <<"Отлично"; break;

case 4: cout <<"Хорошо"; break;

case 3: cout <<"Удовлетворительно"; break;

case 2: cout <<"Неудовлетворительно"; break;

default: cout <<"Неверное значение rez ";

}

3.2. Логический тип данных и базовые логические операции

При программировании алгоритмов с ветвлениями часто используется логический тип данных bool. Для величин этого типа существуют только два возможных значения: true (истина) и false (ложь). Логические значения обычно являются результатом операций сравнения (табл. 3.1).

Таблица 3.1

Операции сравнения

Знак операции Действие
= = Равно
! = Не равно
< Меньше
> Больше
<= Меньше или равно
>= Больше или равно

 

В языке С++ допускается преобразовывать в логические значения числа: ноль соответствует значению false, а любое отличное от нуля число преобразуется в значение true.

Для типа bool определены три стандартные логические операции и соответствующие им знаки операций: логическое умножение - И (&&), логическое сложение - ИЛИ (||) и логическое отрицание - НЕ (!) (табл. 3.2).

Таблица 3.2

Логические операции

Переменные Операции
A b ! a a && b a || b
False false true false false
False true true false true
True false false false true
True true false true true

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

Например, при определении принадлежности точки (x,y) области [0 £ x £ xmax, 0 £ y £ ymax] можно ввести одну интегрированную логическую переменную в следующем виде:

bool d =(x>=0) && (x<=Xmax) && (y>=0) && (y<=Ymax);

В результате для программной реализации алгоритма достаточно одного условного оператора:

if (d) cout <<" Точка принадлежит указанной области";

else cout << " Точка не принадлежит указанной области";

 

Пример. Составить программу, которая для заданной точки (x, y) позволяет вычислять функцию z по выражению

где области D1 и D2 представлены графически и аналитически:

 

 


D1:

D2: x ³ 2.

 

 

Словесно-формульный алгоритм

1. Ввод координат точки (x, y).

2. Формирование интегрального условия принадлежности точки (x, y) области D1 с помощью логической операции И:

d1 = (x2 + y2 £ 1) И (y £ -x+1) И (y ³ x – 1).

3. Вычисление значения функции z в области D1 с использованием промежуточных переменных:

если d1=true, то z1=|x3+1|;

z3=y2+2;

z4=sin(y-x);

z= .

4. Вычисление значения функции z в области D2 (x ≥ 2) с использованием промежуточных переменных:

если x ≥ 2, то

z2=2x3+1;

z3=arctg(y/x);

z= .

5. Вычисление значений функции z вне областей D1 и D2 с использованием промежуточных переменных:

z1=x ey tg y;

z2=ln|y+1|;

z3=y+z2;

z=z1/z3.

6. Вывод на печать значения z и координат исходной точки (x,y).

На основе словесно-формульного алгоритма можно построить блок-схему (рис. 3.3).


 

 


Рис. 3.3. Блок-схема алгоритма


Для решения данной задачи можно составить программу с использованием оператора if (лист. 3.1) и с использованием оператора swich (лист. 3.2).

Листинг 3.1. vetv_1. сpp

#include <iostream.h>

#include <math.h>

void main()

{

double x,y,z,z1,z2,z3,z4;

cout<<" Введите координаты исходной точки "<<endl;

cout<<"x=";cin>>x;

cout<<"y=";cin>>y;

// Определение условий принадлежности области D1:

bool d1=x*x+y*y<=1 && y<=-(x-1) && y>=x-1;

if (d1)

{ // Вычисление z в области D1

z1=fabs(pow(x,3)+1);

z2=exp(x)*sqrt(z1);

z3=pow(y,2)+2;

z4=sin(y-x);

z=z2/(z3+z4);

}

else if(x>=2) // Вложенный оператор if

{ // Вычисление z в области D2

z1=sqrt(pow(y,2)+1);

z2=2*pow(x,3)+1;

z3=atan2(y,x);

z=z1*z2/(z3+2);

}

else

{ // Вычисление z вне областей D1 и D2

z1=x*exp(y)*tan(y);

z2=log(fabs(y+1));

z3=y+z2;

z=z1/z3;

}

 

cout<<"\n Полученный результат: "<<endl;

cout<<"z="<<z<<" при x="<<x<<" и y="<<y;

}

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



Поделиться:




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

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


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