- •Технологія створення програм
- •Кодування і документування програми
- •Структурний підхід до програмування
- •Етапи створення програм
- •Створення програмного проекту
- •Методика відладки програми
- •Програмна реалізація алгоритмів лінійної структури
- •Програмна реалізація алгоритмів розгалужених структур
- •Програмна реалізація алгоритмів циклічних структур
- •Програмування вкладених циклів
- •Програмна реалізація функцій користувача
- •Програмна обробка одновимірних масивів
- •Список використаної літератури
Програмна реалізація алгоритмів розгалужених структур
Умовний оператор if використовується для розгалуження процесу обчислень на два напрямки.
1 0
Блок
операторів 1 Блок
операторів 2
Рис.6 алгоритмічна конструкція розгалуження
Формат оператора:
if (вираз) оператор_1; [else оператор_2;]
Спочатку обчислюється вираз, який може мати арифметичний тип або тип покажчика. Якщо воно не дорівнює нулю (має значення true), виконується перший оператор, інакше - другий. Після цього управління передається на оператор, наступний за умовним.
Одна з гілок може бути відсутньою,логічніше опускати Друга гілка разом з ключовим словом еlse. Якщо у якої гілки потрібно виконати кілька операторів, їх необхідно укласти в блок, інакше компілятор не зможе зрозуміти, де закінчується розгалуження. Блок може містити будь-які оператори, в тому числі опису та інші умовні оператори (але не може складатися з одних описів).
Необхідно враховувати, що змінна, описана в блоці, поза блоком не існує. Поширена помилка при записі умовних операторів - використання у виразах замість перевірки на рівність ('== ^ простого присвоєння (='), наприклад, 1f (a=l) b=0;
Синтаксичної помилки немає, так як операція присвоювання формує результат, який оцінюється на рівність / нерівність нулю. У даному прикладі присвоювання змінної b буде виконано незалежно від значення змінної а. Тому у виразах перевірки змінної на рівність константі константу рекомендується записувати зліва від операції порівняння: if (1 == а) b = 0;. Друга помилка - невірний запис перевірки на приналежність діапазону. Наприклад, щоб перевірити умову 0 <х <1, можна записати його в умовному операторі безпосередньо ,так як буде виконано спочатку порівняння 0 <х, а йогорезультат(true або false,перетворене в int) буде порівнюватися з 1. Правильний спосіб запису: 1f (0 <x && x <1) .
Задача 3.2.1
Постановка задачі.
Відомо дві швидкості: одна в кілометрах в годину, інша – в метрах в секунду. Яка зі швидкостей більше?
Вхідні дані :
дві швидкості: перша в кілометрах в годину, друга – в метрах в секунду - змінні типу з плаваючою точкою - double v1, double v2;
Вихідні дані :
кінцевий результат швидкостей - змінних типу з плаваючою точкою - double v1, double v2;
Схема алгоритму рішення задачі.
v2 = (v2*3600)/1000
1 0
Рис. 7 Схема алгоритму задачі 3.2.1
Лістинг програми.
#include <iostream>
#include <iomanip>
#include<windows.h>
using namespace std;
void main ()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
double v1,v2;
cout<<"Введите первую скорость в км/ч: ";
cin>>v1;
cout<<"Введите вторую скорость м/с: ";
cin>>v2;
v2=(v2*3600)/1000;
if(v1>v2) cout<<"Первая скорость больше второй"<<endl;
else cout<<"Вторая скорость больше первой"<<endl;
system("pause");
}
Тестування програми.
Рис.8 Результат тестування задачі 3.2.1
Задача 3.2.2
Постановка задачі.
Дано чотиризначне число. Визначити :
А) чи дорівнює сума двох перших його цифр сумі двох його останніх цифр ;
Б) чи входять в нього цифри 2, 6 або 7.
Вхідні дані :
чотиризначне число цілого типу - int n;
Вихідні дані :
кінцевий результат у вигляді зміненої змінної цілого типу - int n.
Схема алгоритму рішення задачі.
Рис. 9 Схема алгоритму задачі 3.2.2
Лістинг програми.
#include <iostream>
#include<iomanip>
#include<windows.h>
using namespace std;
void main ()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int n;
cout<<"ВВести четырехзначное число:";
cin>>n;
if(n/1000+n/100%10==n/10%10+n%10)
cout<<"сумма двух первых цыфр = сумме двух последних цыфр "<<endl;
else cout<<"сумма двух первых цыфр не = сумме двух последних цыфр"<<endl;
if(n/1000==2||n/1000==6||n/1000==7||n/100%10==2||n/100%10==6||n/100%10==7||n/10%10==2||n/10%10==6||n/10%10==7||n%10==2||n%10==6||n%10==7)
cout<<"Входят цыфры 2 или 6 или 7"<<endl;
else cout<<"Не входит цыфры 2 или 6 или 7 "<<endl;
system("pause");
}
Тестування програми.
Рис. 10 Результат тестування задачі 3.2.2
Задача 3.2.3
Постановка задачі.
Обчислити у при різних значеннях х :
y = a = 1.5,
Вхідні дані :
задане значення а - змінна типу з плаваючою точкою - double a, значення х, яке вводиться з клавіатури - змінна типу з плаваючою точкою - double x;
Вихідні дані :
значення у при значенні х - зміннa типу з плаваючою точкою – double y;
Схема алгоритму рішення задачі.
a = 1.5
1 0
y= a*x-log10(a*x)
y= 1
y=a*x+log10(a*x)
Рис. 11 Схема алгоритму задачі 3.2.3
Лістинг програми.
#include<math.h>
#include <iostream>
#include <iomanip>
#include<windows.h>
using namespace std;
void main ()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
double a, x, y;
a=1.5;
cout<<"Введите х : ";
cin>>x;
if(a*x<1) y= a*x-log10(a*x);
else if ( a*x==1) y= 1;
else y=a*x+log10(a*x);
cout<<"Результат равен "<<y<<endl;
system("pause");
}
Тестування програми.
Рис. 12 Результат тестування задачі 3.2.3
Задача 3.2.4
Постановка задачі.
Дано два дійсні додатні числа х та у . Арифметичні дії над числами пронумеровані ( 1 – складання, 2 – віднімання, 3 – множення, 4 – ділення ). Скласти програму, яка по введеному номеру виконує ту або іншу дію над числами.
Вхідні дані :
два дійсні додатні числа типу з плаваючою точкою: float х, у; номер дії над числами - змінна цілого типу - int res.
Вихідні дані :
результат введеної дії над заданими числами – змінна типу з плаваючою точкою float s.
Схема алгоритму рішення задачі.
Рис. 13 Схема алгоритму задачі 3.2.4
Лістинг програми.
#include <iostream>
#include<iomanip>
#include<windows.h>
using namespace std;
void main ()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
float x, y, s ; int res;
cout<<"Введите х : ";
cin>>x;
cout<<"Введите у : ";
cin>>y;
cout<<"Введите номер действия над числами : ";
cin>>res;
switch (res)
{
case 1 :
s=x+y;
break;
case 2 :
s=x-y;
break;
case 3 :
s=x*y;
break;
case 4 :
s=x/y;
break;
default : cout<<"Неправильный номер действия";
}
cout<<s<<endl;
system("pause");
}
Тестування програми.
Рис.14 Результат тестування задачі 3.2.4