Программирование линейных и разветвляющихся
Вычислительных процессов
Справочная информация
При программировании вычислительных процессов используются математические функции библиотеки компилятора. Для обеспечения возможности обращения к ним в программе должна указываться директива препроцессора #include <math.h>. Все математические функции результатом своей работы имеют вещественные числа типа double. Описание некоторых функций дано в таблице.
функция | назначение функции | значения аргументов |
sin(x) | вычисляет синус угла x | вещественное число |
cos(x) | вычисляет косинус угла x | в диапазоне |
tan(x) | вычисляет тангенс угла x | от -2p до 2p |
asin(x) | вычисляет арксинус величны x | вещественное число |
acos(x) | вычисляет арккосинус величны x | в диапазоне |
atan(x) | вычисляет арктангенс величны x | от -1 до 1 |
sqrt(x) | вычисляет корень квадратный из x | |
exp(x) | вычисляет значение e в степени x | |
log(x) | вычисляет натуральный логорифм от x | любое |
log10(x) | вычисляет десятичный логорифм от x | вещественное |
ceil(x) | округляет число х путем отбрасывания дробной части | число |
floor(x) | округляет число х до наибольшего целого, не превышающего х | |
pow(x,y) | вычисляет значение x в степени y | любые |
fmod(x,y) | вычисляет остаток от деления x на y | вещественные числа |
Для организации разветвляющихся процессов используются условный оператор if и оператор-переключатель switch
Формат записи оператора if :
if(<условное выражение>) <оператор1>
[else <оператор2>]
Формат записи оператора switch:
switch(<выражение>)
{
case<константа1>: <оператор1>
[break;]
case<константа2>: <оператор2>
[break;]
........................................................
default : <оператор>
}
Задание
1. Изучите пример программы счета аналитических зависимостей лабораторной работы:
ü наберите в текстовом редакторе среды программирования Borland C пример программы
#include <stdio.h>
#include <math.h>
void main(void)
{ int war;
float x,y,z;
printf("\nПpогpамма счета зависимостей:"
"\n1. z=3.55-(sin(x)+4.5)*y "
"\n2. z=(3.4*ln(x)+8.6)/2.3*y (переменная y больше нуля) ");
printf("\nЗадайте вид зависимости\n");
ab: scanf("%d",&war);
switch(war)
{ case 1: printf("\nЗадайте значения пеpеменных х и y\n");
scanf("%g,%g",&x,&y);
z=3.55-(sin(x)+4.5)*y;
printf("\nz=%f",z);
break;
case 2: printf("\nЗадайте значения пеpеменных х и y\n");
scanf("%g,%g",&x,&y);
if(y>0)
{
z=(3.4*log(x)+8.6)/2.3*y;
printf("\nz=%f",z);
}
else
printf("\nHевеpно заданo значение пеpеменной z!!!");
“\nОно должно быть больше нуля”);
break;
default: printf("\nHевеpно задан вид зависимости!!!"
"\nЗадайте вид зависимости заново");
goto ab;
}
}
ü выполните отладку и запуск программы;
ü составьте блок-схему программы.
2. Разработать алгоритм и программу для вычисления функции при введенном пользователем значении х.
3. Оформите отчет по проделанной работе, содержащий:
ü титульный лист;
ü ход выполнения работы включает блок-схему алгоритма и текст программы пункта 2 с описанием в виде комментария.
Контрольные вопросы
1. Что такое алгоритм с ветвлением?
2. Как записывается условный оператор (оператор ветвления) в Си?
3. Что такое полная и сокращенная записи условного оператора?
4. Что используется в качестве условий в операторе ветвления?
5. Какие знаки отношений можно использовать при составлении условий?
6. Что такое составное условие?
7. Каковы правила записи составных условий?
8. Какие вы знаете логические операции?
9. Какие действуют правила старшинства логических операций?
10. Что такое составной оператор? Какую структуру он имеет?