Файл: Лабораторная работа 3 по дисциплине Информатика и программирование i часть.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 09.11.2023
Просмотров: 217
Скачиваний: 6
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕВЫСШЕГО ОБРАЗОВАНИЯ«НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»Учебный Центр Информационных Технологий «Информатика»Лабораторная работа №3по дисциплине «Информатика и программирование I часть»Направление подготовки: 230105 - «Программное обеспечение вычислительной техники и автоматизированных систем»Выполнил слушатель: Танеева Дина РишатовнаВариант: 7Дата сдачи: Преподаватель: Родионов Владислав ДмитриевичНовосибирск, 2022г.
Единственный условный оператор имеет две разновидности: с else и без него.В качестве условия выступает выражение, которое может иметь любой целый результат и интерпретируется в соответствии с принятыми в Си соглашениями о логических значениях: 0 –«ложь», не 0 – «истина». Действует он как и во всех языках программирования: если значение выражения есть «истина», то выполняется первый оператор, если «ложь» - второй (после else). Конструкция является структурированной, обе ветви – прямая и альтернативная – «сливаются» в одную.В Си имеется три вида циклических конструкций. Общее у них одно: все условия в них являются условиями продолжения, то есть циклы продолжаются, пока значение этих условных выражений – «истина». Операторы цикла состоят из заголовка, в котором определяется характер циклического процесса и оператора - тела цикла. Скобки в заголовке цикла являются неотъемлемым элементом синтаксиса языка. Директива #define определяет идентификатор и последовательность символов, которой будет замещаться данный идентификатор при его обнаружении в тексте программы. Идентификатор также называется именем макроса, а процесс замещения называется подстановкой макроса. Стандартный вид директивы следующий: #define имя_макроса последовательность_символов.Массив – совокупность элементов одного типа.тип имя_массива [количество_элементов] тип – задает тип элемента массива и может быть как стандартный, так и определенный пользователем.имя_массива – задается пользователем и используется для обращения к массиву, может состоять из символов английского алфавита, цифр и символов подчеркивания но недолжно начинаться с цифры и недолжно совпадать с зарезервированными словами среды разработки. количество_элементов – целочисленная константа определяющая сколько элементов будет в массиве.Доступ к элементу массива осуществляется с помощью индекса, например A[0] – первый элемент, A[1] – второй элемент, A[n] – n-й элемент массива. Нумерация элементов начинается с нуля. В памяти элементы массива хранится последовательно т.е. A[0], A[1], A[2]…A[n]. Имя массива это адрес ячейки памяти по которому находится первый элемент.
Рис. 3. Результат работы программы
На завершающем этапе было проведено контрольное тестирование программы, которое показало правильность ее работы.
#include
#include
#include
using namespace std;
int fact(int n) //нахождение факториал и вывод на экран n-го члена ряда
{
int rez = 1;
for (int i = 1; i <= n; i++)
rez*=i;
return rez;
}
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
float res, x, n; //Ввод данных x, n
printf("Введите значение x: ");
scanf("%f", &x);
printf("Введите значение n: ");
scanf("%f", &n);
printf("x");
res = x;
for (int i = 1; i <= n; i++) //Вычисление и вывод результата
{
res = res + pow(x, 2 * i + 1) / fact(i*2+1);
printf(" + x^%d/%d",(2 * i + 1), fact(i*2+1));
}
printf("\n сумма ряда равна : %.2f", res);
}
Восстановить в общем виде формулу степенного ряда, вычисляемого в данной функции:
double s,sn; int n;
for(s=0, sn=1, n=1; fabs(sn)>eps; n++)
{s+=sn;
sn=-sn*x/n;}
Дописать программу по части кода. Определить, что данная программа делает, а так же области допустимых вводимых значений.
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
using namespace std;
double sum(double x, double eps)
{
int n;
double s, sn;
for (s = 0, sn = 1, n = 1; fabs(sn) > eps; n++)
{
s += sn;
sn = -sn * x / n;
}
return s;
}
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
float x, eps;
printf("Введите x в диапазоне [-1 ;1] :");
scanf("%f", &x);
printf("Введите eps в диапазоне (0;1) :");
scanf("%f", &eps);
printf("результат %f", sum(x, eps));
}
В программе реализована функция, в которой вычисляется частичная сумма ряда(s), sn-член ряда. На вход программа принимает два значения- типа float – x и eps. Итерации продолжаются до тех пор, пока значение n-го члена ряда больше заданного eps. Область допустимых значений eps – отрезок (0;1). Область допустимых значений x-[-1;1]. Данный ряд является функциональным рядом, то есть его члены являются функциями одной или нескольких независимых переменных. n-ный член ряда равен (-1)^n*x^n/n!.
-
Задание
-
Теоретический материал
-
линейная последовательность действий; -
условная конструкция (если-то-иначе); -
конструкция повторения (цикл); -
переход (и его разновидности).
Единственный условный оператор имеет две разновидности: с else и без него.В качестве условия выступает выражение, которое может иметь любой целый результат и интерпретируется в соответствии с принятыми в Си соглашениями о логических значениях: 0 –«ложь», не 0 – «истина». Действует он как и во всех языках программирования: если значение выражения есть «истина», то выполняется первый оператор, если «ложь» - второй (после else). Конструкция является структурированной, обе ветви – прямая и альтернативная – «сливаются» в одную.В Си имеется три вида циклических конструкций. Общее у них одно: все условия в них являются условиями продолжения, то есть циклы продолжаются, пока значение этих условных выражений – «истина». Операторы цикла состоят из заголовка, в котором определяется характер циклического процесса и оператора - тела цикла. Скобки в заголовке цикла являются неотъемлемым элементом синтаксиса языка. Директива #define определяет идентификатор и последовательность символов, которой будет замещаться данный идентификатор при его обнаружении в тексте программы. Идентификатор также называется именем макроса, а процесс замещения называется подстановкой макроса. Стандартный вид директивы следующий: #define имя_макроса последовательность_символов.Массив – совокупность элементов одного типа.тип имя_массива [количество_элементов] тип – задает тип элемента массива и может быть как стандартный, так и определенный пользователем.имя_массива – задается пользователем и используется для обращения к массиву, может состоять из символов английского алфавита, цифр и символов подчеркивания но недолжно начинаться с цифры и недолжно совпадать с зарезервированными словами среды разработки. количество_элементов – целочисленная константа определяющая сколько элементов будет в массиве.Доступ к элементу массива осуществляется с помощью индекса, например A[0] – первый элемент, A[1] – второй элемент, A[n] – n-й элемент массива. Нумерация элементов начинается с нуля. В памяти элементы массива хранится последовательно т.е. A[0], A[1], A[2]…A[n]. Имя массива это адрес ячейки памяти по которому находится первый элемент.
-
Описание алгоритма
-
Описание реализации
-
Пример работы программы
-
Выводы
На завершающем этапе было проведено контрольное тестирование программы, которое показало правильность ее работы.
-
Приложение.
Текст программы с комментариями.
#define _CRT_SECURE_NO_WARNINGS#include#include
#include
#include
using namespace std;
int fact(int n) //нахождение факториал и вывод на экран n-го члена ряда
{
int rez = 1;
for (int i = 1; i <= n; i++)
rez*=i;
return rez;
}
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
float res, x, n; //Ввод данных x, n
printf("Введите значение x: ");
scanf("%f", &x);
printf("Введите значение n: ");
scanf("%f", &n);
printf("x");
res = x;
for (int i = 1; i <= n; i++) //Вычисление и вывод результата
{
res = res + pow(x, 2 * i + 1) / fact(i*2+1);
printf(" + x^%d/%d",(2 * i + 1), fact(i*2+1));
}
printf("\n сумма ряда равна : %.2f", res);
}
-
Защита:
Восстановить в общем виде формулу степенного ряда, вычисляемого в данной функции:
double s,sn; int n;
for(s=0, sn=1, n=1; fabs(sn)>eps; n++)
{s+=sn;
sn=-sn*x/n;}
Дописать программу по части кода. Определить, что данная программа делает, а так же области допустимых вводимых значений.
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
using namespace std;
double sum(double x, double eps)
{
int n;
double s, sn;
for (s = 0, sn = 1, n = 1; fabs(sn) > eps; n++)
{
s += sn;
sn = -sn * x / n;
}
return s;
}
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
float x, eps;
printf("Введите x в диапазоне [-1 ;1] :");
scanf("%f", &x);
printf("Введите eps в диапазоне (0;1) :");
scanf("%f", &eps);
printf("результат %f", sum(x, eps));
}
В программе реализована функция, в которой вычисляется частичная сумма ряда(s), sn-член ряда. На вход программа принимает два значения- типа float – x и eps. Итерации продолжаются до тех пор, пока значение n-го члена ряда больше заданного eps. Область допустимых значений eps – отрезок (0;1). Область допустимых значений x-[-1;1]. Данный ряд является функциональным рядом, то есть его члены являются функциями одной или нескольких независимых переменных. n-ный член ряда равен (-1)^n*x^n/n!.