Краткие теоретические сведения. Тема: Выполнение программы простой структуры

Лабораторная работа №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++ и использование стандартных функций..

Наши рекомендации