do <оператор> while <выражение>;
В языке C++ этот оператор отличается от классической реализации цикла с постусловием тем, что при истинности выражения происходит продолжение работы цикла, а не выход из цикла.
Оператор пошагового цикла.
for ([ <начальное выражение> ];
[ <условное выражение> ];
[ <выражение приращения> ])
<оператор>
Тело оператора for выполняется до тех пор, пока условное выражение не станет ложным (равным 0). Начальное выражение и выражение приращения обычно используются для инициализации и модификации параметров цикла и других значений. Любое из трех выражений заголовка цикла, и даже все три могут быть опущены.
Если опущено условное выражение, то оно считается истинным, и цикл становится бесконечным.
Оператор безусловного перехода
break;
Оператор безусловного перехода прерывает выполнение операторов while, do, for и switch. Он может содержаться только в теле этих операторов. Управление передается оператору программы, следующему за прерванным. Если оператор безусловного перехода записан внутри вложенных операторов while, do, for, switch, то он завершает только непосредственно охватывающий его оператор.
Оператор продолжения.
continue;
Оператор продолжения передает управление на следующую итерацию в операторах цикла while, do, for. Он может содержаться только в теле этих операторов. В операторах do и while следующая итерация начинается с вычисления условного выражения. В операторе for следующая итерация начинается с вычисления выражения приращения, а затем происходит вычисление условного выражения.
Оператор возврата
return [ <выражение> ];
Оператора возврата заканчивает выполнение функции, в которой он содержится, и возвращает управление в вызывающую функцию. Управление передается в точку вызывающей функции, непосредственно следующую за оператором вызова. Значение выражения, если она задано, вычисляется, приводится к типу, объявленному для функции, содержащей оператор возврата, и возвращается в вызывающую функцию. Если выражение опущено, то возвращаемое функцией значение не определено.
С формальной точки зрения операторы break, continue и return не являются операторами структурного программирования. Однако их использование в ограниченных количествах оправдано, когда они упрощают понимание программы и позволяют избегать больших вложенных структур. Например, мы проверяем входные данные на аномалии. Если не использовать эти операторы, то всю обработку придется вложить в условный блок, что ухудшает читабельность программы. Вместо этого можно написать небольшой условный блок, который организует выход из функции при неверных исходных данных.
Ввод/вывод не является частью языка С++, а осуществляется функциями, входящими в состав стандартной библиотеки.
В С++ отсутствуют операторы ввода-вывода, так как все операции ввода-вывода реализуются с помощью функций, которые находятся в библиотеке С++, поддерживающей три уровня ввода-вывода: потоковый ввод-вывод;
Описание объектов для управления вводом-выводом содержится в файле iostream.h. При подключении этого файла с помощью директивы #include<iostream.h> в программе автоматически создаются виртуальные каналы связи cin для ввода с клавиатуры и cout для вывода на экран, а также операции помещения в поток «и чтения из потока»
С помощью объекта cin и операции можно присвоить значение любой переменной. Например, если переменная x описана как целочисленная, то команда cin»x; означает, что в переменную x будет записано некое целое число, введенное с клавиатуры. Если необходимо ввести несколько переменных, то следует написать cin»x»y»z;.
Объект cout и операция позволяет вывести на экран значение любой переменной или текст. Текст необходимо заключать в двойные кавычки. Запись cout»x; означает вывод на экран значения переменной x.
Практическая часть
Циклические алгоритмы
Задание 1
Вычислить и вывести на экран в виде таблицы значения функции F на интервале от xнач. до xкон. с шагом dx.
где a,b,c – действительные числа
Решение:
1)Спецификация
Входные данные:
xn – x начальная
xk – x конечная
dx – шаг цикла
a,b,c – действительные числа
x – значение аргумента
F- значение функции
Выходные данные: x,F
2)Блок-схема
| |||
да
3) Текст программы:
#include<iostream>
#include<iomanip>
using namespace std;
int main ()
{float x,xn,xk,dx,a,b,c;
double F;
cout<<"Vvedite xn,xk,dx,a,b,c"<<endl;
cin>>xn>>xk>>dx>>a>>b>>c;
cout<<"\n Tablitsa znacheniy x i y \n";
x=xn;
while(x<=xk)
{if(x==0 && b!=0) F=a*(x+c)*(x+c)-b; else
if(x==0 && b==0)
F=(x-a)/-c; else F=a+(x/c);
cout<<"x= "<<x<<"\t""F= "<<F<<endl;x+=dx;}
}
4) Отладка программы:
5)Результат:
Задание 2.
Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощь ряда Тейлора, на интервале от х.нач до х.кон с шагом dx с точностью £.
1)Спецификация
Входные данные: x,ln,eps,MaxIter
Выходные данные: y,x,n
ln- промежуточная переменная
x- исходные данные
y- выходные данные
n- выходные данные
eps- точность
MaxIter - максимальное количество итерация
Решение:
сh*=
2)Блок-схема
3)Текстпрограммы:
#include<iostream>
#include <math.h>
#include <float.h>
using namespace std;
int main()
{
const int MaxIter=500;
double x,eps=DBL_EPSILON; int n;
cout<<"\n Vvedite znacenie x";cin>>x;
double ch=1,y=ch;
for(n=0; fabs(ch)>eps && n<MaxIter;n++)
{ch*=((x-1)*(x-1)*2*n+1)/((x+1)*(x+1)*(2*n+3));
y+=ch;}
if(n<MaxIter)
{cout<<"\n znacenie fynkcii: "<<y*2<<" dlya x="<<x<<endl;
cout<<"\n vicisleno posle "<<n<<" operacii"<<endl;}
else cout<<"\n Ryad rasxoditsya!";
}
4)Отладка программы:
5)Результат:
Массивы
Задание 1.
В одномерном массиве, состоящем из n вещественных элементов вычислить:
1) Количество отрицательных элементов массива
2) Сумму модулей элементов массива расположенных после минимального по модулю элемента
3)Упорядочить массив по убыванию его элементов
1)Спецификация
Входные данные: arr[i],m
Выходные данные: n
n- выходные данные
2)Блок-схема
|
Текст программы:
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int n,arr[50],m=0,z,sum=0;
cout<<"Vvedite RAZMER MASSIVA: "; cin>>n;
for (int i=0; i<n; i++){
cout<<"["<<i+1<<"]: "; cin>>arr[i];
}
int min=fabs(arr[0]);
for (int i=0; i<n; i++)
if (arr[i]<0){m++;
if (fabs(arr[i])<fabs(min)){min=arr[i]; z=i;}
}
for (int i=z+1; i<n; i++){
sum+=fabs(arr[i]);
}
cout<<"OTRICATELNIH ELEMENTOV: "<<m<<endl;
cout<<"MINIMALNIY PO MODULYU: "<<min<<';'<<" EGO NOMER: "<<z<<endl;
cout<<"SUMMA MODULEY, RASPOLOJENNIH POSLE "<<min<<" RAVNA: "<<sum;
return 0;
}
Отладка программы:
Результат программы:
Заключение
В ходе учебной практики по МДК 01.02 «Прикладное программирование» закрепил теоретические знания, приобрёл практические навыки и умения работы в среде программирования Dev-C++.
Выполнил индивидуальные задания по следующим темам:
•Циклические алгоритмы.
•Массивы.
•Функции пользователя.
-Во время прохождения учебной практики приобрёл практический опыт в разработке алгоритма поставленной задачи и реализации его средствами среды программирования Dev-C++, а также в проведении тестирования программного модуля по определенному сценарию.
Научился:
-осуществлять разработку кода программного модуля на языке программирования C++;
-создавать программу по разработанному алгоритму как отдельный модуль;
-выполнить отладку и тестирование программы на уровне модуля;
-оформлять документацию на программные средства;
-использовать инструментальные средства для автоматизации оформления документации.