Слайд 1ЛЕКЦИЯ №4
ЯЗЫК ПРОГРАММИРОВАНИЯ СИ
(ПРОДОЛЖЕНИЕ)
Представлен материал, который имеет отношение к основам
программирования на алгоритмическом языке СИ (алфавит, операции, операторы, комментарии и
другие элементы). Приводятся примеры программ, иллюстрирующие применение основных операторов СИ.
Примеры использования операторов языка СИ
Рассмотрим применение операторов языка СИ на конкретных примерах решения различных задач.
Задача 1. Вычислить координаты центра тяжести трех материальных точек с массами m1, m2, m3 и координатами (x1, y1), (x2, y2) и (x3, y3) по формулам: x=(x1*m1+x2*m2+x3*m3)/(m1+m2+m3); y =(y1*m1+y2*m2+y3*m3)/(m1+m2+m3) .
Алгоритм ее решения имеет линейную структуру и соответствующая блок-схема имеет вид:
Слайд 2Рис. 1. Блок-схема алгоритма
Слайд 3 Программа 1:
#include
#include
void main (void)
{
float m1,
m2, m3, m, x1, x2, x3, x, y1, y2, y3,
y;
clrsrc ();
printf ("Введите m1, m2, m3: ");
scanf ("%f %f %f",&m1,&m2,&m3);
printf ("Введите x1,y1,x2,y2,x3,y3: ");
scanf ("%f %f %f %f %f %f",&x1,&y1,&x2,&y2,&x3,&y3);
m = m1+m2+m3;
x = (m1*x1+m2*x2+m3*x3)/m;
y = (m1*y1+m2*y2+m3*y3)/m;
printf ("\nx = %f y = %f",x,y);
}
Слайд 4 Задача 2. Определить, попадает ли точка с
координатами (x0, y0) в круг
радиуса r. Уравнение окружности
. Вывести на печать сообщение:
точка попадает внутрь круга; точка не попадает внутрь круга.
Из анализа алгоритма решения поставленной задачи следует, что вопрос о
выводе того или иного сообщения зависит от значения логического выражения:
Блок-схема алгоритма решения сформулированной ранее задачи приведена на
рис. 2.
Слайд 5Рис. 2. Блок-схема алгоритма
Слайд 6 Программа 2:
#include
#include
#include
void main (void)
{
float x0, y0, r;
clrsrc ();
printf ("Введите x0,y0,r:
");
scanf ("%f %f %f", &x0,&y0,&r);
if (pow(r,2) < (pow(x0,2)+pow(y0,2))
printf ("Точка попадает внутрь круга");
else
printf ("Точка не попадает внутрь круга");
}
Слайд 7 Задача 3. Округлить действительное положительное число x,
меньшее 5, до
ближайшего целого числа:
Анализ алгоритма
решения задачи показывает, что необходимо использовать
вложенные операторы условия. Блок-схема алгоритма представлена на
следующем рисунке.
Слайд 9 Программа 3:
#include
#include
void main (void)
{
float x;
int nx;
clrsrc();
m1:printf ("Введите x = ");
scanf ("%f",&x);
if ((x<0)||(x>=5))
goto m1;
else
{
if (x<0.5)
{
nx=0;
goto m2;
}
else
Слайд 10 if ((x>=0.5)&&(x
nx=1;
goto m2;
}
else
if ((x>=1.5)&&(x<2.5))
{
nx=2;
goto m2;
}
else
if ((x>=2.5)&&(x<3.5))
{
nx=3;
goto m2;
}
else
Слайд 11 if ((x>=3.5)&&(x
{
nx=4;
goto m2;
}
else
nx=5;
m2: printf ("\nnx = &d",nx);
}
}
Задача 4. Дано действительное число x. Вычислить с точностью ε=0.000001 сумму и указать количество учтенных слагаемых:
Данная задача решается с помощью операторов цикла. Необходимо ввести
значения величины x и точности ε. Выделить переменную для вычисления суммы
и еще одну переменную для определения количество учтенных членов ряда.
Суммирование прекращается если прибавляемое слагаемое по модулю будет
меньше точности ε. Блок схема алгоритма имеет вид
Слайд 13 Программа 4:
#include
#include
#include
void main (void)
{
int n;
float a,s,eps,s;
clrsrc ();
printf ("Введите x,eps:");
scanf ("%f %f",&x,&eps);
s = 0;
a = 1;
n = 1;
a = a*x;
Слайд 14 while (fabs(a)>eps)
{
if (n%2!=0)
s -= a/n;
else
s +=
a/n;
n++;
a = a*x;
}
printf ("\nКол-во слагаемых = %d\nСумма = %f",n-1,s);
}
Задача 5. Написать программу для вычисления и печати таблицы значений
функции двух переменных
если x∈[0, 1] и меняется с шагом 0.1, а y∈[0,3] и меняется с шагом 0.3. При этом
константа a=-3.1.
Слайд 15 Программа 5:
#include
#include
#include
#define PI 3.1415926535
void
main (void)
{
float a, x, y, f;
clrsrc ();
printf ("Введите a = ");
scanf ("%f",&a);
for (x=0.0; x<=1.0; x+=0.1)
for (y=0.0; y<=3.0; y+=0.3)
{
f = a*exp(2*x*y)*cos(0.5*PI+y);
printf ("\nx = %f y = %f f(x,y) = %f",x,y,f);
}
}