Программирование разветвляющихся вычислительных процессов
Вычислительный процесс называется разветвляющимся, если для реализации предусмотрено несколько направлений (ветвей). Каждое разветвление является следствием проверки условия. При разработке программы обратить внимание на следующее. В программе должны быть предусмотрены все возможные направления, но процесс реализуется только по одной ветви. Любая ветвь должна приводить к выводу результата и на конец программы.
Условные выражения. Для образования простых условных выражений используются операции отношения: >, >=, <, <=, != - не равно = = - сравнение на равенство. Значение операции отношения 1, если выражение истинно, и 0 если выражение - ложь. Например: a>b, если а=3 а b=7, то ложь.
Если в выражении присутствует несколько операций отношения, то они соединяются между собой логическими операциями. Логические операции:
а) && - логическая операция И– результат истина т.е. 1, если оба операнда истины, или ложь в противном случае;
б) || - логическая операция ИЛИ – результат операции истина или 1 если хотя бы один операнд истинен, или ложь в противном случае;
в) ! – логическая операция НЕ (пишется перед операндом) если операнд –истина, то результат операции – ложь, и наоборот.
Пример: X>= X>= 5&&X<=25
!( X<5 || X>25
Анализ символьной информации.
|
char sim;
1. Убедиться, что в переменной записана цифра sim>=’0’&& sim<=’9’
2. В переменной sim содержится большая латинская буква. sim>=’A’&&sim<=’Z’
Условный оператор if с одной альтернативой.Применяется если при выполнении, какого либо условия, требуется выполнить какое либо действие в противном случае ничего не делать.
Синтаксис: if(выражение)
один оператор или блок.
Пример:
if (score>big)
puts (“Привет”);
if (a>b&&a>c)
{
mix=a;
printf (“mix=%d.\n”,mix);
}
Оператор if-else – с двумя альтернативами. Применяется когда в случае истинности условия выполняется одни действия, в случае ложности - другие. Использовать конструкцию, чтобы подчеркнуть выполнение одной из двух возможных действий.
Синтаксис: if (выражения)
один оператор или блок
Else
один оператор или блок
Слово elseнесет в себе вполне определенное условие которое можно сформировать как отрицание выражения !(выражение).
Конструкция else-if для трех и более альтернатив. Применяется в случае проверки двух или более взаимосвязанных условий.
Синтаксис: if (выражение 1)
один оператор или блок
else if(выражение 2)
один оператор или блок
Else
один оператор или блок
Ветвь else является не обязательной и служит для выражения действий, если выражения 1,2….. не выполняются.
Операция условия ?:Используется тогда когда есть некая переменная, которой можно присвоить одно из двух возможных значений.
Синтаксис: выражение 1 ? выражение 2 : выражение3
Если выражение 1 истина, то значением операции является выражение 2, иначе - выражение 3.
Пример:
x=(y>0)?y:-y;вычисляется модуль числа y.
Задача.Ракета запускается с Земли со скоростью v км/с в направлении движения Земли по орбите вокруг Солнца. Составьте алгоритм, определяющий результат запуска ракеты в зависимости от скорости. Известно, что при v < 7,8 ракета упадет на Землю, при 7,8 ≤ v < 11,2 ракета станет спутником Земли, при 11,2 ≤ v < 16,4 ракета станет спутником Солнца,
при v ≥ 16,4 ракета покинет Солнечную систему.
Текст функции mainбудет выглядеть так:
#include<iostream> //подключение системных средств для
using namespace std; //возможности использовать потоки ввода-вывода
#include "Rus.h" //прототип функции русификации
int main(void) //имя функции main
{
double v; //объявили переменную - скорость
//приглашение к вводу, текст выводится на экран монитора отдельной строкой
cout<<Rus("\n Введите скорость ракеты ");
//ввод скорости с клавиатуры в переменную v
cin>>v;
//схитрим немного: выведем общую часть сообщения один раз
cout<<Rus("Ракета, запущенная со скоростью ") << v;
//в зависимости от условия выводим на монитор то или иное сообщение
if(v<7.8)
cout<<Rus("км/сек, yпадет на Землю\n");
else if(v<11.2)
cout<<Rus("км/сек, cтанет спутником Земли\n");
else if(v<16.4)
cout<<Rus("км/сек, cтанет спутником Солнца\n");
else //условие по этой ветви неявно: во всех остальных случаях
cout<<Rus("км/сек, покинет Солнечную систему\n");
//оператор return завершает работу функции main
return 0;
}
Оператор switch. Оператор switch применяется для сравнения на равенство некоторого выражения или переменной целого типа с рядом констант. Замечание: анализируемое выражение или переменная должны быть типа intилиchar.
Синтаксис: switch (выражение)
{
case метка 1:
оператор
…………….
case метка 2:
оператор
……………
default:
оператор
……………
}
Под меткой (1,2...) подразумеваются константы соответствующего типа(int, char).Операторы выполняются последовательно, в том числе и под другими метками до тех пор, пока не будет встречен оператор break,который прерывает выполнение switch.
Задача 1. Вывести на экран монитора название времени года по его номеру:
1 – зима,
2 – весна,
3 – лето,
4 – осень.
В остальных случаях печатается сообщение об ошибке.
Текст функции mainбудет выглядеть так:
#include<iostream> //подключение системных средств для
using namespace std; //возможности использовать потоки ввода-вывода
#include "Rus.h" //прототип функции русификации
int main(void) //имя функции main
{
int n; //объявили переменную
//приглашение к вводу, текст выводится на экран монитора отдельной строкой
cout<<Rus("\n Введите номер времени года ");
//ввод исходных данных с клавиатуры
cin>>n ;
//вычисляем результат в зависимости от n
switch(n)
{
case 1:
cout<<Rus("Это зима!")<<endl;
break;
case 2:
cout<<Rus("Это весна!")<<endl;
break;
case 3:
cout <<Rus("Это лето!") <<endl;
break;
case 4:
cout<<Rus("Это осень!")<<endl;
break;
default:
cout<<Rus("Нет такого номера времени года") <<endl;
}
//оператор return завершает работу функции main
return 0;
}
Задача 2. Вывести на экран монитора название растения на букву d, независимо от того, большая она или маленькая.
Текст функции mainбудет выглядеть так:
#include<iostream> //подключение системных средств для
using namespace std; //возможности использовать потоки ввода-вывода
#include "Rus.h" //прототип функции русификации
int main(void) //имя функции main
{
char simvol; //объявили переменную
//приглашение к вводу, текст выводится на экран монитора отдельной строкой
cout<<Rus ("\n Введите букву ");
//ввод исходного данного с клавиатуры
cin>>simvol;
//вычисляем результат в зависимости от simvol
switch(simvol)
{
case 'd':
case 'D':
cout<<Rus("\nЭто дуб!")<< endl;
break;
default:
cout<<Rus("\nВведите букву d – получите ответ!")<< endl;
}
//оператор return завершает работу функции main
return 0;
}
Циклы в языке С++
Вычислительный процесс называется циклическим, если он содержит неоднократное выполнение одной и той же последовательности действий.
Число повторений цикла в некоторых случаях известно, в других – определяется в процессе выполнения цикла, на основе проверки некоторого условия.
Бывают циклы с проверкой условия перед началом выполнения цикла, или по окончанию выполнения цикла, или внутри цикла с помощью оператора передачи управления.
Итерация - выполнения цикла один раз.
Заголовок – некая конструкция, включающая в себя служебное слово.
Тело цикла – один оператор или блок, повторяющийся заданное количество раз.
Для построения цикла необходимо:
а)выделить переменную управляющую циклом, от значения которой зависит, выполняется цикл или нет.
б) до начала цикла присвоить ей правильное начальное значение.
в) построить условие, при истинности которого цикл выполнялся бы.
г) внутри цикла изменять переменную цикла так, чтобы он на определенном шаге завершился бы.