- •Н.В. Галина, и.Е. Белоцерковская, л.Ю. Катаева
- •Оглавление
- •Введение
- •Глава 1 Устройство и принципы работы персонального компьютера. Основы работы с ос Windows
- •1.1 Устройство и принципы работы персонального компьютера
- •1.2 Назначение блоков и их краткая характеристика
- •1.3 Программное обеспечение персонального компьютера
- •Глава 2 Понятие алгоритма. Виды алгоритмов
- •2. Разветвляющийся алгоритм,
- •3. Циклический алгоритм.
- •Глава 3 Понятие блок-схемы. Основные типы блоков. Реализация основных алгоритмов
- •3.1 Понятие блок-схемы
- •3.2 Линейный алгоритм
- •1. Линейный алгоритм,
- •3.3 Разветвляющийся алгоритм
- •3.4 Циклический алгоритм
- •4.2 Начало работы в приложении Visual Studio
- •Глава 5 Графическая и программная реализации алгоритмов
- •5.1 Реализация линейного алгоритма
- •5.2 Реализация разветвляющегося алгоритма
- •5.3 Реализация циклического алгоритма
- •5.4 Исследование таблицы значений функции
- •Глава 6 Понятие массива. Одномерные и двумерные массивы
- •6.1 Одномерные массивы
- •6.2 Двумерные массивы
- •6.3 Исследование двумерного массива
- •Глава 7 Задания и варианты для лабораторных работ. Методические указания
- •7.1 Задания и варианты для лабораторных работ
- •7.2 Методические указания и примеры выполнения лабораторных работ
- •Литература
- •Галина Наталья Владимировна Белоцерковская Ирина Ефимовна Катаева Лилия Юрьевна
- •603950, Г. Нижний Новгород, ул. Минина, 24.
Глава 5 Графическая и программная реализации алгоритмов
В данной главе мы рассмотрим множество задач, соответствующих линейному, разветвляющемуся и циклическому алгоритмам. В каждой задаче будут представлены блок-схемы, коды программ, а также результаты выполнения программ (консоли).
5.1 Реализация линейного алгоритма
Пример 5.1. Даны числа a=2, b=7. Вычислить сумму S и разность R чисел a и b.
Рис. 5.1 Блок-схема для примера 5.1
|
Код программы (Visual Studio): // proga10.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> using namespace std; int main() { double a, b, S, R; a=2; b=7; S=a+b; R=a-b; cout<<"S="<<S<<endl; cout<<"R="<<R<<endl; return 0; } |
Результат выполнения программы(Visual Studio):
|
|
Код программы (Borland C++): #include <iostream.h> #include <conio.h>
int main(){ clrscr(); double a, b, S, R; a=2; b=7; S=a+b; R=a-b; cout<<"S="<<S<<endl; cout<<"R="<<R<<endl; return 0; } |
|
Результат выполнения программы (Borland C++):
|
|
Пример 5.2. Составить
блок-схему и программу для вычисления
значений функций
и
при x,
который считывается с экрана (клавиатуры).
Рис. 5.2 Блок-схема для примера 5.2 |
Код программы (Visual Studio): // proga11.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> #include <math.h> using namespace std; int main(){ double x, y, z; cout<<"vvedi x="; cin>>x; y=sin(x); z=log(x); cout<<"pri x="<<x<<" y="<<y<<" z="<<z<<endl; return 0; } |
Ручной счет: x=1.5 y=sin(1.5)=0.997495 z=ln(1.5)=0.405465 |
Результат выполнения программы (Visual Studio):
|
Ручной счет: x=0.2 y=sin(0.2)=0.198669 z=ln(0.2)=-1.609438 |
Результат выполнения программы (Visual Studio):
|
Ручной счет: x=-2 y=sin(-2)=-0.909297 z=ln(-2)=не существует, что соответствует результату на экране. |
Результат выполнения программы(Visual Studio):
|
Код программы (Borland C++):
#include <iostream.h>
#include <math.h>
int main(){
double x, y, z;
cout<<"vvedi x=";
cin>>x;
y=sin(x);
z=log(x);
cout<<"pri x="<<x<<" y="<<y<<" z="<<z<<endl;
return 0;
}
Результат выполнения программы(Borland C++):
Примечание. Чтобы не возникало ошибок при вычислении логарифма, надо поставить условие на аргумент х, поэтому данная задача будет рассмотрена ниже при реализации разветвляющегося алгоритма.
Когда требуется
записать программно сложную математическую
функцию, ее мысленно разбивают на
внутреннюю и внешнюю. Например, если
дано выражение
,
то внешней функцией будет возведение
в квадрат, а внутренней – тангенс от х.
Поэтому сначала начинают писать функцию
возведения в степень: pow(
, 2.0), а потом вписывают на первое место
тангенс: pow(
tan(x),
2.0).
Когда требуется
записать дробь, то ее мысленно разбивают
на числитель и знаменатель. если в
числителе или знаменателе стоит
выражение, а не одно число или одна
переменная, то все выражение берут в
скобки:
будет
выглядеть в программе как (a+3.0)/(a-1.0).
Но дробь
будет записана в виде a/(a-1.0).
Пример 5.3. Составить
блок-схему и программу для вычисления
значений функций
и
при различных значениях аргументов x,
y.
Переменные x,
y
считать с клавиатуры.
Рис. 5.3 Блок-схема для примера 5.3 |
Код программы (Visual Studio): // proga12.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> #include <math.h> using namespace std; int main(){ double x, y, U, V; cout<<"vvedi x="; cin>>x; cout<<"vvedi y="; cin>>y; U=pow(x, 2.0)+(y+3.0)/(x-1.0); V=1.0/pow(y, exp(1.0))*pow(sin(sqrt(x)+1.5), 2.0); cout<<"pri x="<<x<<" y="<<y<<endl; cout<<"U="<<U<<" V="<<V<<endl; return 0; } |
Проверка результатов (в программе MathCad):
|
Результат выполнения программы (Visual Studio):
|
Проверка результатов (в программе MathCad):
|
Результат выполнения программы (Visual Studio):
|
Код программы (Borland C++): #include <iostream.h> #include <math.h> int main(){ double x, y, U, V; cout<<"vvedi x="; cin>>x; cout<<"vvedi y="; cin>>y; U=pow(x,2.0)+(y+3.0)/(x-1.0); V=1.0/pow(y,exp(1.0))*pow(sin(sqrt(x)+1.5),2.0); cout<<"pri x="<<x<<" y="<<y<<endl; cout<<"U="<<U<<" V="<<V<<endl; return 0; } |
|
Результат выполнения программы (Borland C++):
|
|
Пример 5.4. Найти длину окружности и площадь круга, если известен радиус.
Решение. Введем
обозначения: r –
радиус, который будет считываться с
клавиатуры (т.к. он не задан конкретным
числом); C – длина
окружности, вычисляемая по формуле
;
S – площадь круга,
вычисляемая по формуле
.
Рис. 5.4 Блок-схема для примера 5.4 |
Код программы (Visual Studio): // proga13.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> #include <math.h> using namespace std; int main(){ double r, C, S; cout<<"vvedi r="; cin>>r; C=2.0*3.141593*r; S=3.141593*pow(r, 2.0); cout<<"r="<<r<<" C="<<C<<" S="<<S<<endl; return 0; } |
Проверка результата (в программе MathCad):
|
Результат выполнения программы (Visual Studio):
|
Код программы (Borland C++): #include <iostream.h> #include <math.h>
int main(){ double r, C, S; cout<<"vvedi r="; cin>>r; C=2.0*M_PI*r; S=M_PI*pow(r, 2.0); cout<<"r="<<r<<" C="<<C<<" S="<<S<<endl; return 0; }
|
|
Результат выполнения программы (Borland C++):
|
|
