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

Копия СистемыПрограммирования

.pdf
Скачиваний:
22
Добавлен:
30.03.2015
Размер:
1.54 Mб
Скачать

Задание

Для задач из лабораторных работ 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 ex 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 + ex )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