Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Стандартные математические функции хранятся в библиотеке math.h.




Цели изучения темы

· изучить особенности работы условных и циклических операторов С++

 

Базовые конструкции структурного программирования

 

Вставить из книги (о структурном программировании)

 

Базовыми конструкциями структурного программирования являются:

- следование (линейная структура);

схема

- ветвление (разветвляющаяся структура);

схема

- цикл (циклическая структура);

схема

 

Операторы ветвления

 

1.4.1. Условный оператор if

 

Условный оператор используется для разветвления процесса решения задачи на два направления.Формат условного оператора:Полная формаif (условие) оператор_1; else оператор_2;где условие – это логическое выражение, принимающее значение True или False

оператор_1, оператор_2  – это простые или составные операторы ЯП С++

 

Если условие истинно (не принимает значение False, т.е. не равно нулю), то выполняется оператор_1. Если условие ложно (принимает значение True, т.е. равно нулю), то выполняется оператор_2.

 

Неполная формаif (условие) оператор_1;где условие – это логическое выражение, принимающее значение True или False

оператор_1 – это простой или составной оператор (т.е. блок) ЯП С++

 

Если условие истинно (не принимает значение False, т.е. не равно нулю), то выполняется оператор_1.

 

Пример 1

if (a>b) ans=10; else ans=25; или if (a>b) ans=10; else ans=25;

Если а>b, то переменная ans получается значение 10, иначе - значение 0.

 

 

Пример 2

if ( age <18) { cout <<"Вы несовершеннолетний. \n"; cout <<"Введите ваш возраст"; cin>> grade; }

Если переменная age<18, то запрашивается возраст и заносится в переменную grade.

 

Пример 3

if (b>a) max=b; else max=a;

определяется наибольшая из величин А и В.

 

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

 

Оператор switch (переключатель) предназначен для разветвления процесса решения задачи на несколько направлений.

Формат:

switch (выражение){case метка_1: список операторов_1;case метка_2: список операторов_2;…..case метка_N: список операторов_N;[default: список операторов]}

где выражение – это любое выражение, константа или переменная типа int или char;

метка_1,…, метка_N – это константы или константные выражения типа int или char;

список операторов_1, …, список операторов_N – это произвольные операторы С++

 

Выполнение оператора switch:

1. вычисляется значение выражения (записанного после слова switch);

2. управление передается первому оператору из списка, помеченного меткой, значение которой совпало с вычисленным выражением;

3. далее, если выход из переключателя switch явно не указан операторами break или return, то последовательно выполняются все остальные ветви;

4. если выражение не совпадет ни с одной из меток, то выполняется список операторов, записанных после слова default (а в случае отсутствия строки default происходит переход к следующему за switch оператору).

 

Замечания:

- выход из переключателя выполняется с помощью операторов break (выход из оператора switch) или return (выход из функции, в теле которой он записан);

- в случае синтаксической ошибки в слове default сообщение об ошибке не выдается, т.к. компилятор воспринимает это слово как допустимую метку оператора switch.

 

Пример

// начисление процентов,// kat - категория счета, если категория счета =1, то начисляется 20 %,//                                 если категория счета =2, то - 17.5 %,//                                 в остальных случаях начисляется 10 %#include < iostream.h >main(){int kat;float s, proz;cout <<"\nВведите категорию счета ";cin >> kat;cout <<"\n Введите сумму "cin >> s;switch (kat){case 1: s*=1.2; proz = s*.2; break;case 2: s*=1.175; proz =s*. 175; break;default: s*=l.l; proz= s*.l; break;} cout <<"\n Начислено " << proz ;cout <<"\n Итого " << s;return 0;

}

Операторы цикла

 

1.4.3. Оператор while

 

Вставить из книги

 

Оператор while реализует цикл с предусловием.

 

Формат:while (условие) оператор;где условие – это логическое выражение, принимающее значение True или False

оператор – это простой или составной оператор (т.е. блок) ЯП С++

 

Выполнение оператора while:

Если условие истинно (не принимает значение False, т.е. не равно нулю), то выполняется оператор (тело цикла) и происходит возврат на проверку условия. Если условие ложно (принимает значение True, т.е. равно нулю), происходит выход из цикла. Таким образом, в цикле while задается условие для продолжения цикла.

 

Цикл while – это цикл с неизвестным числом повторений. Тело цикла может не выполниться ни разу (если при первой же проверке условие примет значение «ложно»).

 

Условие может быть составлено из нескольких выражений, с использованием логических операций:

- || (логическое сложение "или")

- && (логическое умножение "и").

 

Пример

char ans ='Y';longint a==l;while ( (ans ='Y') || (ans='y') ) {a*=a+l; cout <<"\n"<< a; cout <<"\n\t" <<" Для продолжения введите Y, для окончания N "; cin >> ans; }

Переменная ans описывается как символ, переменная а – как целое длинное. Если пользователь вводит 'Y' или 'у', то выполняются блок операторов в фигурных скобках.

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

1.4.4. Оператор do...while

 

Вставить из книги

 

Оператор do...while реализует цикл с постусловием.

Формат:do оператор while (условие);где условие – это логическое выражение, принимающее значение True или False

оператор – это простой или составной оператор (т.е. блок) ЯП С++

 

Выполнение оператора do…while:

Выполняется оператор (тело цикла), затем проверяется условие. Если условие истинно (не принимает значение False, т.е. не равно нулю), то происходит возврат на выполнение оператора (тела цикла). Если условие ложно (принимает значение True, т.е. равно нулю), происходит выход из цикла. Таким образом, в цикле do...while задается условие для продолжения цикла.

 

Цикл do...while – это цикл с неизвестным числом повторений. В отличие от цикла while условие проверяется в конце цикла. Поэтому тело цикла выполняется хотя бы один раз.

 

Пример

char ans 'Y';longint a=l;do {a*=a+l; cout <<"\n" << a; cout << "\n\t" <<" Для продолжения введите Y, для окончания N " ; cin>> ans; } while ((ans ='Y') || (ans='y') );

 

1.4.5. Оператор for

 

Вставить из книги

 

Оператор for реализует цикл с известным числом повторений.

Формат:

for (начальное выражение; контрольное выражение; счетчик) оператор;

Выполнение оператора for:

1. Перед выполнением цикла вычисляется начальное выражение

2. Проверяется контрольное выражение

3. Если контрольное выражение истинное, то

· выполняется оператор (тело цикла),

· рассчитывается выражение счетчик,

· возврат к пункту 2.

А если контрольное выражение ложно, то оператор for заканчивает свою работу.

 

Пример 1

// Программа выдает на экран числа от 1 до 10#include <iostream.h>main(){ int i; for (i=l; i<=10, i++) { cout << i <<"\n"; } }

 

Пример 2

// Сложение чисел от а до b#include <iostream.h>main(){ int a,b,i;long int s=0;cout <<Введите a \n";cin>> a;cout <<"Введите b \n";cin>> b;if(a>b){ cout <<"a>b"; }else { for (i=a; i<=b; i++)s+=i;cout <<"\nСумма=" << s; } return 0;}

 

Вопросы:

- Что произойдет, если b окажется больше чем а?

- Какое выражение вычисляется в качестве счетчика, начального выражения, контрольного выражения?

 

В качестве начального выражения можно использовать несколько операторов, их нужно разделять запятыми. В примере занесем s=0 в начальное выражение:

for (i=a, s=0; i>=b; i++)

s+=i;

 

1.4.6. Функция exit(), операторы break, continue, return

 

Вставить из книги

 

Функция exit()позволяет досрочно выйти из программы до ее нормального завершения.

 

Формат:

exit(статус);

где статус – переменная или константа типа int, являющаяся кодом завершения.

 

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

 

Обычно оператор exit ставиться в теле оператора if, чтобы закончить программу в зависимости от результата проверки условия. При использовании exit необходимо указывать заголовочный файл stdlib.h

 

Пример 1

#include < iostream.h > #include < stdlib.h >main() {exit(0); //заставляет программу завершиться в этом месте cout <<" С помощью C++ можно составлять высоко эффективные программы. \n"; cout <<" Удачи Вам. \n";   return 0; }

 

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

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

 

Пример 2

#include <iostream.h>#include <stdlib.h>// Проверка пароля, пользователю предоставляется 3 попытки.main() { int nash_p=4321;  // пароль int k=0;  // количество попыток int ego_p;             // пароль введенный пользователемdo { cout <<"Введите пароль \n"; cin>> ego_p; k++; if (ego_p=nash_p)        {  cout <<"\n\nДобро пожаловать в программу !! ";  exit(0);  }      else  {  (k<3) ? (cout <<"\n Пароль не верен !!\n Попробуйте еще раз !! ");  (cout <<"\n Пароль не верен !!");  } } while (k<3); return 0; }

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

 

Оператор break используется для выхода из текущего цикла.

Формат оператора:

break;

Оператор break может находиться в любом месте программы, однако обычно break ставиться в теле операторов while или do... while, а также используется в переключателе switch.

 

Оператор continue прерывает выполнение очередного шага цикла и заставляет компьютер начать выполнять новый шаг цикла. Если Вы поместите оператор continue в цикл for или while, компьютер будет игнорировать все операторы, следующие в теле цикла после continue.

Формат оператора:

continue;

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

 

Пример

// Вычисление средней зарплаты, зарплаты меньше 500 не учитываются#include < iostream.h >main(){float sr_zarp=0,zarp; // средняя заработная плата, текущая заработная плата int kol=0;               // количество do{       cout<<"Введите зарплату \n";       cout<<"(для окончания введите значение -1) :\n";       cin>> zarp;       if ( zarp<0 )break; if ( zarp<500 ) continue;else{    sr_zarp+=zarp; kol++; }     while (1= =1); // Бесконечный циклs_zarp/=floa_kol;cout <<"Средняя зарплата=" << sr_zarp;}

Прокомментируйте программу. Что произойдет если ввести зарплату -550, 230?

 

 

Стандартные математические функции

 

Стандартные математические функции хранятся в библиотеке math.h.

Тригонометрические функции используют радианы. Все функции, кроме указанных принимают один аргумент типа double и возвращают результат типа double.

 

acos Аркосинус
asin Арксинус
atan Арктангенс
atan2 (x, y) Арктангенс от у/х
ceil Округление в большую сторону
cos Косинус
cosh Гиперболический синус
exp е в степени х
fabs Модуль
floor Округление в меньшую сторону
fmod (x, y) Остаток от деления х на у
log log10 Натуральный логарифм  Логарифм по основанию 10
pow(x,y) sin Возводит число х в степень y Синус
sinh Гиперболический синус
sqrt Квадратный корень
tan Тангенс
tanh Гиперболический тангенс

 

 










Последнее изменение этой страницы: 2018-05-10; просмотров: 116.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...