Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ИС / Лабораторные работы / Лабораторная работа#2

.pdf
Скачиваний:
54
Добавлен:
22.03.2015
Размер:
412.84 Кб
Скачать

Лабораторная работа № 2

Составление простейших вычислительных программ

Цель занятия

1.Освоение простейшей структуры программы.

2.Получение навыков в организации ввода-вывода значений стандартных типов данных

3.Приобретение навыков в записи выражений на языке C++ и использовании стандартных функций.

Постановка задачи

1.Для заданного варианта составить алгоритм вычисления значения функции.

2.Написать на языке C++ программу вычислений и печати значения функции.

Содержание отчета

1.Постановка задачи для конкретного варианта.

2.Алгоритм решения задачи.

3.Текст программы и результаты ее выполнения.

Методические указания

Типы данных и их объявление.

Объявления переменной в языке C/C++ имеют следующий формат: [спецификатор_класса_памяти] спецификатор_типа описатель [=инициатор].

Спецификатор класса памяти – определяется одним из четырех ключевых слов языка C/C++: auto, extern, register, static, и указывает, каким образом будет распределяться память под объявляемую переменную, с одной стороны, а с другой, область видимости этой переменной, т.е., из каких частей программы можно к ней обратиться.

Спецификатор типа – одно или несколько ключевых слов, определяющие тип объявляемой переменной. В языке C/C++ имеется стандартный набор типов данных, используя который можно сконструировать новые (уникальные) типы данных.

Описатель – идентификатор простой переменной либо более сложная конструкция с квадратными скобками, круглыми скобками или звездочкой (набором звездочек).

Инициатор - задает начальное значение или список начальных значений, которые (которое) присваивается переменной при объявлении.

Переменная любого типа может быть объявлена как немодифицируемая. Это достигается добавлением ключевого слова const к спецификатору-типа. Объекты с типом const представляют собой данные используемые только для чтения, т.е. этой переменной не может быть присвоено новое значение. Отметим, что если после слова const отсутствует спецификатор-типа, то подразумевается спецификатор типа int. Если ключевое слово const стоит перед объявлением составных типов (массив, структура, смесь, перечисление), то это приводит к тому, что каждый элемент также должен являться немодифицируемым, т.е. значение ему может быть присвоено только один раз.

Примеры:

const double A=2.128E-2;

const B=286; (подразумевается const int B=286)

Целый тип данных

Для определения данных целого типа используются различные ключевые слова, которые определяют диапазон значений и размер области памяти, выделяемой под переменные.

 

 

Таблица 1

Целочисленные типы данных

 

 

 

 

Тип

Размер памяти в байтах

Диапазон значений

char

1

от -128

до 127

 

int

2

от -32768

до 32767

 

short

2

от -32768

до 32767

long

4

от -2 147 483 648

до 2 147 483 647

unsigned char

1

oт 0 до 255

unsigned int

2

от 0 до 65535

unsigned short

2

от 0 до 65535

unsigned long

4

от 0 до 4 294 967 295

Отметим, что ключевые слова signed и unsigned необязательны. Они указывают, как интерпретируется нулевой бит объявляемой переменной, т.е., если указано ключевое слово unsigned, то нулевой бит интерпретируется как часть числа, в противном случае нулевой бит интерпретируется как знаковый. В случае отсутствия ключевого слова unsigned целая переменная считается знаковой. В том случае, если спецификатор типа состоит из ключевого типа signed или unsigned и далее следует идентификатор переменной, то она будет рассматриваться как переменная типа int.

Например: unsigned int n; unsigned int b;

int c; (подразумевается signed int c ); unsigned d; (подразумевается unsigned int d ); signed f; (подразумевается signed int f ).

Отметим, что модификатор-типа char используется для представления символа (из массива представление символов) или для объявления строковых литералов. Значением объекта типа char является код (размером 1 байт), соответствующий представляемому символу. Для представления символов русского алфавита, модификатор типа идентификатора данных имеет вид unsigned char, так как коды русских букв превышают величину 127.

Следует сделать следующее замечание: в языке C/C++ не определено представление в памяти и диапазон значений для идентификаторов с модификаторами-типа int и unsigned int. Размер памяти для переменной с модификатором типа signed int определяется длиной машинного слова, которое имеет различный размер на разных машинах.

Для определения длины памяти занимаемой переменной можно использовать операцию sizeof языка C/C++, возвращающую значение длины указанного модификатора-типа.

Например: a = sizeof(int);

b = sizeof(long int);

c = sizeof(unsigned long); d = sizeof(short);

1.Перед написанием программы на алгоритмическом языке следует составить алгоритм решения задачи. Под алгоритмом понимают детально описанную последовательность действий (операций), приводящую к решению поставленной задачи. Основными формами представления алгоритма являются: словесное описание, блоксхемы, структурограммы.

2.При работе с компьютером в интерактивном (диалоговом) режиме следует в тексте программы перед процедурой ввода CIN использовать процедуру вывода на экран приглашения-подсказки о том, что наступило время вывода информации и какой именно. Например,

cout << “Введите значение Z” << endl; cin >> z;

Строка setlocale(LC_ALL, "Russian"); позволяет писать подсказки на русском языке, не используя транслит.

3.При записи математических выражений в тексте программы, необходимо подключить заголовочный файл math.h.

Пример. Составить алгоритм и программу вычисления значения функции

=

( )

, где p=0,51=const

Алгоритм решения этой задачи можно представить в виде следующей последовательности действий:

 

 

Начало

 

 

 

p=0,51

 

 

 

Ввод х

 

=

 

−cos ( )

 

 

 

 

 

 

+1

 

Вывод x, S

Конец

Программа на языке C++, соответствующая этому алгоритму, может иметь следующий вид: //Составление простейшей линейной программы //Программу составил студент Иванов

#include <iostream.h> #include <math.h> float const p=0.51; main( )

{

setlocale(LC_ALL, "Russian"); int x; float S;

cout << "Ввести x" << endl; cin >> x; S=(-pow((cos(x)),(p+1)))/(p+1);

cout << "x=" << x << " S=" << S << endl; system("pause");

return 0;

}

Математические библиотечные функции

Математические библиотечные функции позволяют программисту выполнять определенные типовые математические вычисления.

Обычно функция вызывается путем записи имени функции, после которого записывается левая круглая скобка, затем аргумент функции (или список аргументов, разделенных запятыми), а завершает запись правая круглая скобка.

При использовании функций математической библиотеки необходимо подключать соответствующий заголовочный файл с помощью директивы препроцессора #include <math.h>.

acos(x);

Вычисляет главное значение арккосинуса аргумента х. Если заданный аргумент не попадает в диапазон значений [-1,+1], происходит ошибка выхода за допустимые пределы области определения (EDOM). Функция acos возвращает значение арккосинуса в диапазоне [0, π] в радианах.

asin(x);

Вычисляет главное значение арксинуса аргумента х. Если заданный аргумент не попадает в диапазон значений [-1, + 1], происходит ошибка выхода за пределы области определения (EDOM).

Функция asin возвращает значение арксинуса в диапазоне − , в радианах.

atan(x);

Вычисляет главное значение арктангенса аргумента х. Функция atan возвращает значение

арктангенса в диапазоне − , в радианах.

atan2(у, x);

Вычисляет главное значение арктангенса выражения , используя знаки обоих аргументов для

определения квадранта, в котором выбирается возвращаемое значение. Если оба аргумента равны нулю, происходит ошибка выхода за пределы области определения (EDOM). Функция atan2 возвращает

значение арктангенса в диапазоне − , в радианах.

cos(x);

Вычисляет косинус аргумента х, значение которого задается в радианах. sin(x);

Вычисляет синус аргумента х, значение которого задается в радианах. tan(x);

Вычисляет тангенс аргумента х, значение которого задается в радианах. cosh(x);

Вычисляет гиперболический косинус аргумента х. Если величина х слишком велика, происходит ошибка выхода за диапазон допустимых значений (ERANGE).

sinh(x);

Вычисляет гиперболический синус аргумента х. Если величина х слишком велика, происходит ошибка выхода за диапазон допустимых значений (ERANGE).

tanh (x) ;

Вычисляет гиперболический тангенс аргумента х.

ехр(x);

Вычисляет значение показательной функции аргумента х. Если величина х слишком велика, происходит ошибка выхода за диапазон допустимых значений (ERANGE).

ldexp(x, int ехр);

Умножает число с плавающей точкой x на число 2, возведенное в целую степень (exp). Может возникнуть ошибка выхода за диапазон допустимых значений (ERANGE). Функция возвращает значение, равное произведению x 2ехр.

log(x);

Вычисляет натуральный логарифм аргумента х. В случае, если аргумент имеет отрицательное значение, происходит ошибка выхода за пределы области определения (EDOM), а если значение аргумента равно нулю, то происходит ошибка выхода за диапазон допустимых значений (ERANGE).

log10 (x) ;

Вычисляет десятичный логарифм аргумента х. Если аргумент имеет отрицательное значение, происходит ошибка выхода за пределы области определения (EDOM). Если значение аргумента равно нулю, происходит ошибка выхода за диапазон допустимых значений (ERANGE).

modf (value, *iptr) ;

Разбивает значение аргумента на целую и дробную части, каждая из которых имеет тот же знак, что и аргумент. Функция сохраняет целую часть числа как тип double в объекте, на который указывает параметр iptr; дробная часть числа со знаком используется в качестве возвращаемого функцией значения.

pow (x, у) ;

Возводит х в степень у (xy). Если х имеет отрицательное значение, а у не является целым числом, то происходит ошибка выхода за пределы области определения (EDOM). Если значение х равно нулю, а значение у равно нулю или меньше нуля, происходит ошибка выхода за пределы области определения (EDOM). Возможно также появление ошибки выхода за пределы диапазона допустимых значений

(ERANGE). sqrt (x) ;

Вычисляет положительное значение квадратного корня из аргумента х. Если аргумент имеет отрицательное значение, происходит ошибка выхода за пределы области определения (EDOM).

ceil (x);

Округляет до ближайшего большего целого числа. floor(x);

Округляет до ближайшего меньшего целого числа. fabs (x) ;

Вычисляет абсолютное значение числа с плавающей запятой х.

fmod(x, у);

Вычисляет остаток от деления х на у – двух чисел с плавающей запятой.

Варианты заданий

1.

y

x 4

 

x

;

 

 

 

 

 

 

 

 

2.

 

 

 

 

 

 

 

 

1 sin(x)

;

G 0.5 lg

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 sin(x)

 

 

 

 

 

 

 

 

1

 

 

 

 

3.

D lg

sec(x) tg

 

;

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

R

 

sin3(x) cos2 (x)

 

4.

 

 

 

 

 

 

 

 

 

 

, 3,83;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5 ln(z)

 

5.

Z

 

2

a sh(x)

 

, при а=1,337;

 

 

 

 

 

 

 

 

3

 

 

x2

a2 3

 

1

6.y 2 2 xx 1 e x ;

7.a 3x 4y ; при у=-12,55

 

 

 

 

y

 

x

 

8. b ln y

 

x

 

 

, при х=-15,276;

 

 

 

 

2

 

9.y 3ex sin(x) ;

10.K x 1 cos(x) ;

11.z x cos(x) sin3(x);

12.a e x y x y x y , при у=-0,82;

13.b sin2(x) arctg(z) cos(x) 1 , при х=0,5;

14.k 1 z2ch(x2 ) , при z=3,5;

3 25

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

arctg(z)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15.

b

 

 

 

 

 

 

 

 

 

 

6

, при х=-6,251, при у=0,872;

 

 

 

 

x

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y2 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

16.

R

1 sh2 (x y)

, при у=-0,825;

 

 

x

 

 

 

2y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 x2 y2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x y

 

 

 

 

17.

a (1 y)

 

 

x2

4

 

 

 

, при х=3,26;

 

yx 2

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x2

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

18.y chx 1 logb x, при b=1,282;

19.y tg(x) x ;

20.

p x arctg

x

 

 

a

 

ln a2 x2 , при a=3,31;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

2

 

 

 

 

 

 

 

 

2

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

logc

 

 

 

 

 

 

, при c=3,85;

21.

q

 

x

2

 

sin(x)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z

 

 

 

 

 

 

 

 

 

2z

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

22.

m

 

 

z

e

 

 

y

 

 

, при у=10,365;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

23.a 4y 3x 1, при у=10,386;

24.z ea 1 arctg(x), при a=-2,31;

 

 

 

 

5,25x sin

 

 

 

 

25. y

x

.

 

th(x)

26.z x cos3(x) sin(x);

27.a e x y x y x y , при у=-0,82;

28.b sin2 (x) arctg(z) ch(x) 1 , при х=0,5;

29.k 1 z2th(x) , при z=3,5;

z