Копия СистемыПрограммирования
.pdfЗадание
Для задач из лабораторных работ 3 и 4 разработать программы, возвращающие несколько значений через поля структуры.
Лабораторная работа № 6
ОСНОВЫ ПРОГРАММИРОВАНИЯ В СИСТЕМЕ CODE::BLOCKS
Инструкция по работе в Code::Blocks
Для реализации лабораторных работ необходима среда разработки Code::Blocks, которая поддерживает языки С и С++. Ее запуск производится через файл codeblocks.exe. При этом откроется окно редактирования с меню.
Для создания нового проекта необходимо перейти по ссылке Create a new project или File-New-Project. При этом откроется окно создания проекта, в котором нужно выбрать тип нового проекта – Console application (Консольное приложение) и нажать на кнопку «Go» (Перейти).
21
Далее при успешном создании приложения откроется окно Console application, в котором необходимо выбрать из списка язык С или С++ (по заданию преподавателя) и нажать на кнопку «Next» (Далее).
В следующем окне нужно ввести имя проекта и путь для создаваемого проекта и нажать на кнопку «Next» (Далее).
22
Поля следующего окна создания проекта должны быть заполнены так, как показано на рисунке.
По нажатию кнопки «Finish» в менеджере проектов во вкладке Projects открыть папку Sources, найти файл main.c и открыть его. После чего откроется окно редактирования с заготовкой короткой программы «Hello, world!».
23
Далее набирается код программы, компилируется и выполняется нажатием клавиши <F9> или иконки, выделенной на следующем рисунке. При наличии ошибок в коде программы сообщения о них выводятся в окне «Build log».
При компиляции программы в среде Code::Blocks наиболее частыми ошибками являются следующие.
1. Компиляция предыдущей программы вместо текущей. Необходимо перезапустить Code::Blocks и еще раз скомпилировать нужную программу.
2. "Имя программы - Debug" uses an invalid compiler. Skipping... Необхо-
димо правильно указать среде путь до компилятора (до папки CodeBlocks/MinGW) в меню Settings – Compiler and debugger во вкладке Toolchain executables.
24
Разработка программ из нескольких функций. Вычисление значения интегралов
Пример. Вычислить значение интеграла двумя методами: методом прямоугольников и методом трапеций. Для каждого метода составить отдельную подпрограмму.
Подынтегральная функция f = pow((x+1),(-1/3)).
#include <stdio.h>
#include <math.h>
double mpr(double a,double h,int n)
{
double s = 0, i2; int i;
for (i=1; i<(n+1); i++)
s = s + pow(((a+(i-0.5)*h)+1), (-1/3.0)); i2 = h*s;
return i2;
}
double mtr(double a,double b,double h,int n)
{
double s = 0, i3; int i;
25
for (i=1; i<n; i++)
s+ = pow(((a+i*h)+1),(-1/3.0)); i3=h*((pow((a+1),(-1/3.0))+pow((b+1),(-1/3.0)))/2+s); return i3;
}
void main()
{
double a,b,h; int n;
printf("Введите границы отрезка интегрирования\n"); scanf("%lg %lg",&a,&b);
printf("Введите количество отрезков разбиения\n"); scanf("%d",&n);
h = (double)(b-a)/n;
printf("Интеграл по методу прямоугольников равен %lg\n", mpr(a,h,n)); printf("Интеграл по методу трапеций равен %lg\n", mtr(a,b,h,n));
}
Задание
Разработать программу для вычисления значения определенного интеграла на интервале [a,b] (a, b подобрать самостоятельно) численными методами прямоугольников и трапеций [9] для следующих вариантов.
1. ∫b 3 x +1dx |
2. ∫b |
|
x 2 + 3 dx |
3. ∫b |
|
|
|
|
|
1 |
|
|
|
|
|
|
|
dx |
||||
|
|
|
|
|
2 + |
|
x |
3 |
) |
|||||||||||||
a |
|
|
|
|
a |
|
|
a ( |
|
|
|
|
||||||||||
b |
2 |
|
−x |
|
b |
|
|
b |
|
cos |
|
|
|
|
|
|
|
|
||||
4. ∫x |
e |
dx |
5. ∫x |
2 |
tgdx |
6. ∫ |
|
|
|
|
dx |
|
|
|||||||||
|
|
|
|
( x |
2 |
+1) |
|
|
|
|||||||||||||
a |
|
|
|
|
a |
|
|
a |
|
|
|
|
|
|
|
|
||||||
b |
|
|
|
|
b |
|
|
b |
lg( x + 1) |
|
|
|||||||||||
|
|
|
|
|
|
9. ∫ |
dx |
|||||||||||||||
7. ∫cosxex dx |
8. ∫x2 ln xdx |
|
|
|
|
|
|
|
|
|
||||||||||||
(1 + x |
2 |
) |
|
|
||||||||||||||||||
a |
|
|
|
|
a |
|
|
a |
|
|
|
|
|
|
||||||||
10. ∫b e−x ln(x +1)dx |
11. ∫b e2x sin 2xdx |
12. ∫b |
|
|
|
sin |
|
x |
|
|
|
|
dx |
|||||||||
( |
|
3 |
+ |
1) |
|
|||||||||||||||||
a |
|
|
|
|
a |
|
|
a |
|
x |
|
|
26
13. ∫b |
(e x + e− x )dx |
14. ∫b x2arctg(x)dx |
15. ∫b |
|
cos x |
|
|
dx |
|||||||||||
|
|
|
|
|
|||||||||||||||
|
a |
|
|
|
|
|
a |
|
|
|
|
|
a (sin x +cos x) |
|
|||||
|
b |
|
|
|
|
|
b |
arctg |
2 (x) |
|
|
b |
|
ln( 1 + x ) |
|
|
|||
16. |
∫ |
|
x sin( x )dx |
17. |
∫ |
|
x |
|
dx |
18. ∫ |
|
|
|
|
dx |
||||
|
|
|
(1 + x |
2 |
) |
||||||||||||||
|
a |
|
|
|
|
|
a |
|
|
|
|
a |
|
|
|
|
|||
|
b |
|
|
1 |
|
|
b |
|
1 |
|
|
|
|
|
|
|
|
||
|
∫a |
|
dx |
|
|
|
|
|
|
|
|
|
|
||||||
19. |
|
20. |
∫a |
|
dx. |
|
|
|
|
|
|
|
|||||||
(1+ |
ln(x)) |
|
|
|
|
|
|
|
|||||||||||
(x + |
cos x ) |
|
|
|
|
|
|
|
Интервал интегрирования разбитьравномерно на N > 50 частей.
Библиографический список
1.ГОСТ 19.701-90. ЕСПД. Схемы алгоритмов, пpогpамм, данных и систем.
–М. : Изд-во стандартов, 1991. – 26 с.
2.Крылов, Е.В. Техника разработки программ / Е.В. Крылов, В.А. Острейковский, Н.Г. Типикин. – М. : Высш. шк., 2008. – 469 с.
3.Пpогpаммиpование на С и С++ : практикум / А.В. Кpячков [и дp.]. – М. : Радио и связь, 1997. – 344 с.
4.Макогон, В.С. Язык программирования Си для начинающих / В.С. Макогон. – Одесса : НПФ "АСТРОПРИНТ", 1993. – 96 с.
5.Методы проектирования программ : метод. указания / сост. О. П. Шафеева. – Омск : Изд-во ОмГТУ, 2004. – 32 с.
6.Павловская, Т.А. С/С++. Программирование на языке высокого уровня / Т.А. Павловская. – СПб. : Питер, 2002. – 462 с.
7.Подбельский, В.В. Программирование на языке Си / В.В. Подбельский,
С.С. Фомин. – М., 2000. – 600 с.
8.Флоренсов, А.Н. Введение в программирование. Семантический подход : учеб. пособие / А.Н. Флоренсов. – Омск : Изд-во ОмГТУ, 1998. – 220 с.
9.Численные методы : метод. указания / сост.: О. Б. Малков, Е. Т. Гегечкори. – Омск : Изд-во ОмГТУ, 1995. – 28 с.
10.Шафеева, О.П. Технологии программирования. С++ : учеб. пособие / О.П. Шафеева. – Омск : Изд-во ОмГТУ, 2007. – 80 с.
11.Программирование на языке С : метод. указания / сост. О. П. Шафеева, Ю. Г. Каворина, Г. С. Шукурова. – Омск : Изд-во ОмГТУ, 2008. – 72 с.
27
Приложение А
Операции языка С/С++
Вес |
Знак |
Наименование операции |
Вид |
Порядок |
|
операции |
|||||
|
|
|
|
|
|
|
( ) |
вызов функции |
|
|
|
|
[] |
выделение элемента массива |
|
слева |
|
|
. |
выделение элемента структуры или |
|
||
1 |
выражение |
направо |
|||
|
объединения |
||||
|
|
|
→ |
||
|
-> |
выделение элемента структуры, адре- |
|
||
|
|
|
|||
|
|
суемой (го) указателем |
|
|
|
|
|
|
|
|
|
|
! |
логическое отрицание |
|
|
|
|
~ |
побитовое отрицание |
|
|
|
|
- |
изменение знака (унарный минус) |
|
справа |
|
|
++ |
увеличение на 1 (инкремент) |
|
||
2 |
-- |
уменьшение на 1 (декремент) |
унарные |
налево |
|
|
& |
определение адреса |
|
← |
|
|
* |
обращение по адресу |
|
|
|
|
(тип) |
преобразование типа |
|
|
|
|
sizeof |
определение размера в байтах |
|
|
|
|
* |
умножение |
бинарные |
|
|
3 |
/ |
деление |
→ |
||
арифметич. |
|||||
|
% |
остаток от деления |
|
||
|
|
|
|||
|
|
|
|
|
|
4 |
+ |
сложение |
бинарные |
→ |
|
- |
вычитание |
арифметич. |
|||
|
|
||||
|
|
|
|
|
|
5 |
<< |
сдвиг влево |
сдвига |
→ |
|
>> |
сдвиг вправо |
||||
|
|
|
|||
|
|
|
|
|
|
|
< |
меньше чем |
|
|
|
6 |
<= |
меньше или равно |
отношения |
→ |
|
> |
больше чем |
||||
|
|
|
|||
|
>= |
больше или равно |
|
|
|
|
|
|
|
|
|
7 |
== |
равно |
отношения |
→ |
|
!= |
неравно |
||||
|
|
|
|||
|
|
|
|
|
|
8 |
& |
поразрядная операция "И" |
побитовая |
→ |
|
|
|
|
|
|
|
9 |
^ |
«исключающее "ИЛИ"» |
побитовая |
→ |
|
|
|
|
|
|
|
10 |
| |
поразрядная "ИЛИ" |
побитовая |
→ |
|
11 |
&& |
логическая операция "И" |
логическая |
→ |
|
|
|
|
|
|
|
12 |
|| |
логическая операция "ИЛИ" |
логическая |
→ |
|
13 |
? : |
условная операция |
тернарная |
← |
|
|
|
|
|
|
28
|
= |
простое присваивание |
|
|
|
|
составные присваивания: |
присваива- |
|
|
+= |
сложение с присваиванием |
|
|
|
ния |
|
||
|
-= |
вычитание с присваиванием |
|
|
|
бинарные |
|
||
|
*= |
умножение с присваиванием |
|
|
|
|
|
||
14 |
/= |
деление с присваиванием |
|
← |
%= |
остаток от деления с присваиванием |
|
||
|
|
|
||
|
<<= |
сдвиг двоичного числа влево с присв. |
(для дво- |
|
|
>>= |
сдвиг двоичного кода вправо с присв. |
|
|
|
ичных опе- |
|
||
|
&= |
побитовая операция "И" с присв. |
рандов) |
|
|
|= |
поразрядная операция "ИЛИ" c присв. |
|
|
|
|
|
||
|
^= |
исключающее "ИЛИ" с присв. |
|
|
|
|
|
|
|
15 |
, |
операция "запятая" (соединения) |
тернарная |
→ |
|
|
|
|
|
|
|
|
|
|
Приложение Б |
|
|
|
Типы данных |
|
|
|
|
|
|
|
|
Обозначение |
Размер, |
Диапазон |
|
Тип данных |
|
байт |
|
||||
|
|
|
|
||
|
|
|
|
|
|
char, signed char |
1 |
|
-128...127 |
|
Символьный со знаком |
unsigned char |
1 |
|
0...255 |
|
Символьный без знака |
short, short int, |
|
|
|
|
|
signed short, |
2 |
|
-32768...32767 |
|
Короткое целое со знаком |
signed short int |
|
|
|
|
|
unsigned short, |
2 |
|
0...65535 |
|
Короткое целое без знака |
unsigned short int |
|
|
|||
|
|
|
|
|
|
int, signed, signed |
1, 2, |
4 |
Зависит от |
|
Целое |
int |
реализации |
|
|||
|
|
|
|
||
unsigned, |
1, 2, |
4 |
Зависит от |
|
Целое без знака |
unsigned int |
реализации |
|
|||
|
|
|
|
||
long, signed long, |
4 |
|
-2147483648… |
|
Длинное целое со знаком |
long int |
|
2147483647 |
|
||
|
|
|
|
||
|
|
|
|
|
|
unsigned long |
4 |
|
0...4294967295 |
|
Длинное целое без знака |
float |
8 |
|
-3.4e-38... |
|
Вещественное число |
|
3.14e+38 |
|
с плавающей точкой |
||
|
|
|
|
||
|
|
|
|
|
|
double |
8 |
|
-1.7е-308… |
|
Вещественное число |
|
1.7е308 |
|
удвоенной точности |
||
|
|
|
|
||
|
|
|
|
|
|
long double |
10 |
|
-3.4e-4932... |
|
Длинное вещественное число |
|
|
.4e4932 |
|
удвоенной точности |
|
|
|
|
|
||
|
|
|
|
|
|
29
Приложение В
Операторы языка С/С++ 1. Оператор "Выражение" имеет три формы:
<идентификатор>=<выражение>; // выполяет простое присваивание;
<идентификатор><знак>=<выражение>; // составное присваивание, <идентификатор>=<идентификатор>=<выражение>; // реализует много-
ступенчатое присваивание справа налево.
Примеры: z = x; w += 2; /* w = w + 2*/ s = t = 1;
2. Условный оператор записывается следующим способом:
if (<выражение>) <оператор1;> |
|
|
|
else (<оператор2>); |
|
|
|
Пример: a) if (k |
!= 0) k = k +1; |
b) if (k) |
k++; |
else |
k = k-1; |
else |
k--; |
3. Оператор цикла со счетчиком:
for (<выражение1>;<условие выполнения>;<выражение2>) <оператор>;
где <выражение1> - выражение инициализации параметра цикла, <выражение2> - изменение параметра цикла.
Пример: for ( i=0; i<100; i++ ) sum += x[i]; // sum = sum + x[i];
4. Оператор цикла с предусловием: while ( <выражение> ) <оператор>;
Пример: while (i<100) p++;
5. Оператор цикла с постусловием
do {<операторы>} while ( <условие выполнения цикла> );
Пример: do
{
n *= i; i++;
}
while (i <= 100);
6.Оператор безусловного перехода: goto <идентификатор-метка>;
7.Оператор возврата из функции: return <выражение>;
30