Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по ОИиП под ред Бусько.DOC
Скачиваний:
18
Добавлен:
11.05.2015
Размер:
732.67 Кб
Скачать

Стандартные математические функции

Математические функции алгоритмического языка С определены и размещены в файле <math.h>. В последующих записях аргументы x и y имеют тип double; параметр n имеет вид int. Тригонометрические функции имеют аргумент в радианах (2π радиан = 360). Отметим, что все приведенные здесь математические функции возвращают значение(результат) типа double.

Математическая функция

Имя функции в языке С

sqrt(x)

|x|

fabs(x)

ex

exp(x)

xy

pow(x,y)

ln(x)

log(x)

lg10(x)

log10(x)

sin(x)

sin(x)

cos(x)

cos(x)

tg(x)

tan(x)

arcsin(x)

asin(x)

arccos(x)

acos(x)

arctg(x)

atan(x)

arctg(x/y)

atan2(x)

sh(x)=1/2 (ex-e-x)

sinh(x)

ch(x)=1/2 (ex+e-x)

cosh(x)

tgh(x)

tanh(x)

Остаток от деления x на y

fmod(x,y)

Наименьшее целое, которое >=x

ceil(x)

Наибольшее целое, которое <=x

floor(x)

Пример

Вычислить , при x=2.444, y=0.0869, z=-130.0, дожно быть получено: -0.49871.

Текст программы может иметь следующий вид:

#include <stdio.h>

#include <conio.h>

#include <math.h>

#define x 2.444

#define y 0.00869

#define z -130.0

void main(void)

{

double rezult,dop,a,b,c;

clrscr( ); /* ОЧИСТКА ЭКРАНА */

puts(" ЛАБОРАТОРНАЯ РАБОТА N1 - ЛИНЕЙНАЯ ПРОГРАММА ");

puts("============================================");

dop=fabs(y-x);

a=pow(x,y+1)+exp(y-1);

b=1+x*fabs(y-tan(z));

c=0.5*pow(dop,2)-pow(dop,3)/3;

rezult=a/b*(1+dop)+c;

printf("\a\n ОТВЕТ: rezult=%lf, Press any key...", rezult);

getch( ); /* ЗАДЕРЖКА ДО НАЖАТИЯ ЛЮБОЙ КЛАВИШИ */

}

Работа интегрированной среды программирования Borland C++, в которой происходит выполнение программы, а также порядок набора текста, компиляции, редактирования, отладки и выполнения программы приведено в приложении к данному лабораторному практикуму.

Варианты индивидуальных заданий

Составить программу вычисления выражения в правой части. Все значения для вычисления ввести с клавиатуры.

1. Y=

2. Y=

3. Y=

4. Y=

5. Y=

6. Y=

7. Y=

8. Y=

9. Y=

10. Y=)

11. Y=

12. Y=

13. Y=

14. Y=

15. Y=

16.

17.

18.

19.

20.

21.

22.

23.

24.

25.

26.

27.

28.

29.

30.

Контрольные вопросы

  1. Какие типы переменных применяются в алгоритмическом языке С ?

  2. Назовите правила записи символов в процессоре.

  3. Перечислите все или основные отличия функций printf() и scanf().

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

Разветвляющиеся процессы

Цель работы

Изучить оператор безусловного перехода и операторы разветвлений: оператор выбора по условию if, оператор-переключатель switch.

Краткие теоретические сведения

Разветвляющиеся алгоритмы рассматривают тот или иной участок программы в зависимости от выполнения или невыполнения какого-то логического условия и предполагают передачу управления определенным операторам программы. Для этого в С существуют операторы условной и безусловной передачи.

Общая форма оператора безусловного перехода:

goto <метка>

Согласно этой инструкции управление будет передано оператору с данной меткой т.е. оператору:

<метка>: оператор;

Отметим, что в С метка не декларируется.

Условный оператор if - else применяется в языке С для выбора одной из ветвей вычислений. Общая форма записи:

if (условие) оператор1;

else оператор 2;

Оператор 1 и оператор 2 - это простые или составные операторы; если в ветви операторов два и более, то используются символы {} для их объединения. Оператор if проверяет истинность или ложность условия. Если условие истинно (т.е. выражение в скобках отлично от 0), то выполняется оператор 1, если условие ложно (т.е. значение равно 0), то выполняется оператор 2 .

Вторая часть оператора: else оператор 2; может отсутствовать, и такую его форму называют сокращенной. В этом случае, если выражение дает нулевой результат, управление передается на первый после if оператор.

В качестве условий в С используют следующие операции отношений:

= =- равно или эквивалентно;

!= - не равно;

< - меньше;

<= - меньше либо равно;

> - больше;

>= - больше либо равно.

Символы пар символов {= =,!=,<=,>=} разделять нельзя.

Общий вид операций отношений

<выражение_1><знак_операции><выражение_2>

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

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

Перечень логических операций в языке С в порядке убывания относительного приоритета и их обозначения:

! - отрицание (логическое НЕТ);

Общий вид операции отрицания: !<выражение>

&& - конъюнкция (логическое И); || - дизъюнкция (логическое ИЛИ).

Общий вид операций конъюнкции и дизъюнкции:

<выражение_1><знак_операции><выражение_2>

Здесь <выражение> - как правило, операции отношений, а пары символов ||, && разделять нельзя.

Например: (0<x)&&(x<100)

((!x) && (y>0)) ||((z==1) && (k>0))

Выражения, связанные операциями "И" и "ИЛИ", вычисляются слева направо, причем их рассмотрение прекращается сразу же, как только становится ясно, будет ли результат истиной или ложью. Учет этих свойств очень существенен для написания правильно работающих программ.

Старшинство операции "И" выше, чем "ИЛИ", и обе они младше операций отношения и равенства.

В ряде случаев полезно использовать конструкцию if-else-if:

if (условие) оператор 1;

else if (условие) оператор 2;

else if (условие) оператор 3;

else if (условие) оператор N;

В такой форме записи оператора if условие проверятся сверху вниз. Как только какое-либо из условий принимает значение "истина", выполняется оператор, следующий за этим условием, а вся остальная часть конструкции пропускается без выполнения.

Если в программе используется конструкция:

if (а)

if (b) оператор 1;

else оператор 2;

то язык С трактует: оператор else относится к ближайшему if в соответствующем блоке. В примере else относится к if (b). Чтобы отнести else к оператору if (а), следует написать:

if (а) {if (b) оператор 1;}

else оператор 2;

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

switch (выражение)

{

case constant1: последовательность операторов

break;

… … …

case constantN: последовательность операторов

break;

default: последовательность операторов

}

Вначале выполняется выражение в скобках за ключевым словом switch. Затем просматривается список меток (case constant1, … , case constantN) до тех пор, пока не находится метка, которая соответствует значению вычисленного выражения. Затем происходит выполнение соответствующей последовательности операторов, следующих за двоеточием. Если значения выражений не совпадают ни с одной из меток оператора switch, то выполняется последовательность операторов, которые следуют за ключевым словом default.

Допускаются конструкции оператора switch, когда слово default и соответствующая последовательность операторов отсутствуют. В этом случае, если метки не совпали со значением выражения, конструкция switch будет пропущена.

Когда после последовательности операторов встречается ключевое слово break, то выполнение оператора break приводит к выходу из оператора switch и переходу к первому за данной конструкцией оператору программы. Оператор break в операторе switch может отсутствовать. В этом случае выполнится группа операторов, метка которой совпадет со значением выражения, и далее последующие группы операторов до окончания конструкции switch.

Пример(использование оператора if)

Даны два числа: a и b, не равные нулю!

Вычислить :

Тестовый пример: a=10; b=5;

Вариант текста С-программы:

#include <stdio.h>

#include <conio.h>

void main( )

/* Примерусловного оператора if */

{

float a,b,c;

puts(“\n введите а и b:“);

scanf(“%f%f”, &a, &b);

if (a>=b) c=a/b;

else c=b/a;

printf(“\n c=%f”, c);

getch();

}