Краткие теоретические сведения. Тема: Выполнение программы простой структуры
Лабораторная работа №1
Тема: Выполнение программы простой структуры. Вычисление выражений с
использованием стандартных функций
Цель:
1) Выполнение простой программы в системе программирования;
2) Приобретение навыков в записи выражений на языке C++ и использование стандартных функций.
Поставновка задачи:
1. Для задачи 1 определить тип заданных выражений и найти их значения.
2. Для задачи 1.4 составить систему тестов и вычислить полученное выражение для нескольких значений Х, определить при каких Х выражение не может быть вычислено.
3. Для задачи 2 записать выражение, зависящее от координат точки X1 и Y1 и принимающее значение TRUE, если точка принадлежит заштрихованной области, и FALSE, если не принадлежит.
4. Для задачи 2 составить систему тестов и вычислить полученное выражение для нескольких точек, принадлежащих и не принадлежащих заштрихованной области.
5. Для задачи 3 вычислить значение выражения, используя различные вещественные типы данных (float и double).
6. Объяснить полученные результаты.
7. Результаты всех вычислений вывести на экран.
Вариант 15
Краткие теоретические сведения
Директивы препроцессора управляют преобразованием текста программы до ее компиляции. Исходная программа, подготовленная на С++ в виде текстового файла, проходит 3 этапа обработки:
1) препроцессорное преобразование текста;
2) компиляция;
3) компоновка (редактирование связей или сборка).
После этих трех этапов формируется исполняемый код программы. Задача препроцессора – преобразование текста программы до ее компиляции. Правила препроцессорной обработки определяет программист с помощью директив препроцессора.
Явное и неявное преобразование типов в С++
В C++ различают явное и неявное преобразование типов данных. Неявное преобразование типов данных выполняет компилятор С++, ну а явное преобразование данных выполняет сам программист.
Для наглядного примера представлю таблицу с преобразованиями типов данных. В таблице рассмотрим операцию деления. В качестве целочисленного типа данных возьмем int, ну и вещественный тип данных у нас будет float.
Таблица 1 — Явное и неявное преобразование типов данных в С++ | |||
x | y | Результат деления | Пример |
делимое | делитель | частное | x = 15 y = 2 |
int | int | int | 15/2=7 |
int | float | float | 15/2=7.5 |
float | int | float | 15/2=7.5 |
Неявное преобразование выполняется по следующему алгоритму:
Язык определяет набор стандартных преобразований между объектами встроенного типа, неявно выполняющихся компилятором в следующих случаях:
· арифметическое выражение с операндами разных типов: все операнды приводятся к наибольшему типу из встретившихся. Это называется арифметическим преобразованием.
· присваивание значения выражения одного типа объекту другого типа. В этом случае результирующим является тип объекта, которому значение присваивается. Так, в первом примере литерал 0 типа int присваивается указателю типа int*, значением которого будет 0.
· передача функции аргумента, тип которого отличается от типа соответствующего формального параметра. Тип фактического аргумента приводится к типу параметра:
· возврат из функции значения, тип которого не совпадает с типом возвращаемого результата, заданным в объявлении функции. Тип фактически возвращаемого значения приводится к объявленному.
Ход работы
1. Открываем компилятор.
2. Создаём новый проект .
3. Набираем код программы.
4. Запускаем поточный файл.
5. Результат программы выводится в новом консольном окне.
Задание №1:
Код программы:
#include<iostream>
#include<conio.h>
#include<math.h>
using namespace std;
int main()
{
int m, n, k;
double x,d;
cout<<"\n n=";
cin>>n;
cout<<"\n m=";
cin>>m;
cout<<"\n x=";
cin>>x;
k=n++/(--m);
cout<<"\n n++/(--m)="<<k;
n-->n/m++?
cout<<"\n n-->n/m++: it is true ":cout<<"\n n-->n/m++:it is false ";
m<n++?
cout<<"\n m<n++: it is true ":cout<<"\n m<n++:it is false ";
d = 1+x*pow(cos(x),2)+pow(sin(x),3);
cout<<"\n d="<<d<<endl;
cout<<n<<endl;
cout<<m<<endl;
return 0;
}
Результат:
Исходные данные:
n = 2
m = 3
x = 5
Задание № 2:
Код программы:
#include "stdafx.h"
#include <iostream>
#include "math.h"
#include "conio.h"
using namespace std;
void main()
{
float x, y;
float r=1;
printf("%s", "Enter x \n");
scanf_s("%f",&x);
printf("%s", "Enter y \n");
scanf_s("%f",&y);
bool ok = ((x*x)+(y*y)<=(r*r)&&y<=0||(x*x)+(y*y)<=(r*r)&& x<=0 && y>=0);
if (ok){
cout<<"Tocka popadaet!"<<endl;
}else{
cout<<"Tocka Ne popadaet."<<endl;
}
system("pause");
}
Результат:
Задание №3:
Код программы:
#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace System;
using namespace std;
void main()
{
cout <<"a = 10" << '\n';
cout <<"b = 0.01" << '\n';
float a=10;
float b=0.01;
float x,k,d,g,t,c,o;
double x2,k2,d2,g2,t2,c2,o2;
x=(a-b)*(a-b)*(a-b)*(a-b);
k=a*a*a*a;
c=a*a*a;
d=b*b;
g=b*b*b;
o=b*b*b*b;
t=a*a;
x2=(a+b)*(a+b)*(a+b);
k2=a*a*a*a;
c2=a*a*a;
d2=b*b;
g2=b*b*b;
o2=b*b*b*b;
t2=a*a;
float chislit = x - (k-4*c*b);
float znamen = 6*t*d-4*a*g+o;
float result =chislit/znamen;
double chislit2 = x2 - (k2-4*c2*b);
double znamen2 = 6*t2*d2-4*a*g2+o2;
double result2 =chislit2/znamen2;
cout<<"znamen="<<znamen<<endl;
cout<<"chislit="<<chislit<<endl;
cout<<"result="<<result<<endl;
cout<<"znamen2="<<znamen2<<endl;
cout<<"chislit2="<<chislit2<<endl;
cout<<"result2="<<result2<<endl;
system("pause");
}
Результат:
Вывод: на данной лабораторной работе я приобрела навыки в записи выражений на языке C++ и использование стандартных функций..