Примеры заданий и решений контрольной работы для зачета 2 семестр Подпрограммы 1. Написать программу, в которой вводятся числа a,b,c и вычислить их сумму (a+b+c) в подпрограмме. Решение: Program pp1; Тело подпрограммы function summa(a,b,c:real):real; begin summa:=a+b+c; end; var x,y,z,s:real; begin Вывод «подсказки» на экран write('vvod x,y,z: '); read(x,y,z); Ввод данных с клавиатуры s:=summa(x,y,z); Вызов подпрограммы writeln(' summirovanie: ',s:6:3); Вывод результата end. Еще примеры: 2. Написать программу, в которой вводятся числа a и b и вычислить произведение a*b, 2.427*b с помощью подпрограммы. Решение: Program pp2; function proizv(x,y:real):real; begin proizv:=x*y; end; 3. Написать программу, в которой вводятся числа a и b и вычислить их сумму и разность с помощью подпрограммы. Решение: Program pp3; function sum(x,y:real):real; begin sum:=x+y; end; var a,b,z,s:real; begin 1 var a,b,z,s:real; begin write('vvod a,b: '); read(a,b); s:=proizv(a,b); writeln(' a*b= ',s:6:3); z:=proizv(2.427,b); writeln(' 2.427*b= ',z:6:3); end. write('vvod a,b: '); read(a,b); s:=sum(a,b); writeln(' a+b= ',s:6:3); z:=sum(a,-b); writeln(' a-b= ',z:6:3); end. 4. Написать программу для расчета f(π/2), f(π) . Функцию f(x)=x*(sinx+x)1/2 рассчитывать в подпрограмме. Решение: 5. Даны три точки А(x,y), В(x1,y1), С(x2,y2). Найти периметр треугольника. Расчёт длин сторон производить в подпрограмме. Решение: Program pp2; function fun(x:real):real; begin fun:=x*sqrt(sin(x)+x); end; var f1,f2:real; begin f1:=fun(3.1416/2); writeln(' f(pi/2)= ',f1:6:3); f2:=fun(3.1416); writeln('f(pi) = ',f2:6:3); end. Program pp5; function dlina(xa,ya,xb,yb:real):real; begin dlina:=sqrt(sqr(xb-xa)+sqr(yb-ya)); end; var x,y,x1,y1,x2,y2,p:real; begin write('vvod koordinat vershiny A: '); read(x,y); write('vvod koordinat vershiny B: '); read(x1,y1); write('vvod koordinat vershiny C: '); read(x2,y2); p:=dlina(x,y,x1,y1)+dlina(x1,y1,x2,y2)+ dlina(x2,y2,x,y); writeln(' perimetr p=',p:6:3); end. 6. Задать координаты вершин четырехугольника АВСД. Найти длины его диагоналей. Длины отрезков рассчитывать в подпрограмме. Решение: Program pp6; function dlina(x1,y1,x2,y2:real):real; begin dlina:=sqrt(sqr(x2-x1)+sqr(y2-y1)); end; var xa,ya,xb,yb,xc,yc,xd,yd,d1,d2:real; begin 2 write('vvod koordinat vershiny A: '); read(xa,ya); write('vvod koordinat vershiny B: '); read(xb,yb); write('vvod koordinat vershiny C: '); read(xc,yc); write('vvod koordinat vershiny D: '); read(xd,yd); d1:=dlina(xa,ya,xс,yс); d2:=dlina(xb,yb,xd,yd); writeln(' dlinadiagonaley d1=',d1:6:3,' d2=',d2:6:3); end. Графика 1. Написать программу, которая рисует лицо человека. Овал лица (окружность), нос и рот рисуются красным, глаза –синими точками. Решение: Program gr1; uses graph; var grDriver, grMode: integer; Подключение графической библиотеки BEGIN Установка графического режима «по умолчанию» grDriver:=detect; InitGraph(grDriver,grMode,''); Setcolor(4); Устанавливаем цвет пера circle(200,300,100); Рисуем окружность line(200,280,200,330); line(180,370,220,370); putpixel(150,250,1); Рисуем линию Рисуем точку putpixel(250,250,1); readln; end. Еще примеры: 2. Написать программу, которая рисует в левом верхнем углу экрана окружность, в которой находится цифра 1. 3. Написать программу, которая рисует в левом нижнем углу экрана окружность, и две прямые, пересекающиеся под 3 Решение: прямым углом в ее центре Решение Program gr2; uses graph; var grDriver, grMode: integer; BEGIN grDriver:=detect; InitGraph(grDriver,grMode,' '); circle(200,150,100); line(200,100,200,200); line(200,100,180,170); readln; end. Program gr3; uses graph; var grDriver, grMode: integer; BEGIN grDriver:=detect; InitGraph(grDriver,grMode,' '); circle(200,650,100); line(200,500,200,800); line(50,650,350,650); readln; end. 4. Написать программу, которая 5. Написать программу, которая рисует в правом нижнем углу рисует на экране движущуюся экрана треугольник зеленого по диагонали точку; цвета Решение: Решение: Program gr5; Program gr4; uses crt,graph; uses graph; var var grDriver, grMode, i: integer; grDriver, grMode: integer; BEGIN BEGIN grDriver:=detect; grDriver:=detect; InitGraph(grDriver,grMode,' '); InitGraph(grDriver,grMode,' '); for i:=1 to 600 do SetColor(2); begin line(800,600,1000,600); putpixel(i,i,10); line(1000,600,900,650); delay(50); line(900,650,800,600); putpixel(i,i,0); readln; end; end. readln; end. 6. Написать программу, которая рисует на экране движущуюся слева направо окружность; Решение: Program gr6; uses crt,graph; var grDriver, grMode,i: integer; BEGIN 4 grDriver:=detect; InitGraph(grDriver,grMode,' '); for i:=1 to 200 do begin setcolor(3); circle(3*i,200,50); delay(50); setcolor(0); circle(3*i,200,50); end; readln; end. Численное интегрирование 1. Записать формулу метода прямоугольников справа для интеграла 2 x a a 3 x 3 dx 1 Решение: В данном интеграле пределы интегрирования а=-1, b=2. Возьмем число разбиений n=100. Тогда номера точек i=0..100. Шаг численного интегрирования h b a 2 1 0.03 и xi a i h 1 0.03i n 100 Подынтегральная функция yi f ( xi ) xia (a 3 x 3i ) (1 0.03i) a (a 3 (1 0.03i) 3 ) 2 n 100 1 i 1 i 1 a 3 3 a 3 3 x (a x )dx h yi 0.03 (1 0.03i) (a (1 0.03i) ) 2. Записать формулу метода трапеций для интеграла 0.7 ( x a)a xdx 0.5 Решение: 5 В данном интеграле пределы интегрирования а=0.5, b=0.7. Возьмем число разбиений n=100. Тогда номера точек i=0..100. Шаг численного интегрирования h b a 0.7 0.5 0.002 и xi a i h 0.5 0.002i n 100 Подынтегральная функция y i f ( xi ) ( xi a)( xi a) (0.5 0.002i a )(0.5 0.002i a ) n 1 h ( x a )( x a ) dx ( y i y i 1 ) 0.5 i 0 2 0.7 99 0.001 (0.5 0.002i a)(0.5 0.002i a ) (0.5 0.002(i 1) a )(0.5 0.002(i 1) a) i 0 3. Записать численную схему нахождения значения определенного интеграла методом прямоугольников слева 10 x coscx dx 1 1 Решение: В данном интеграле пределы интегрирования а=1, b=10. Возьмем число разбиений n=100. Шаг интегрирования h=(10-1)/n=0,09. Переменная интегрирования xi a i h . В данном случае xi 1 0,09i . Значение хi используется для вычисления значения функции: y i y ( xi ) 1 1 cosc xi cosc 1 0,09i xi 1 0,09i В методе прямоугольников слева искомый интеграл рассчитывается по формуле n 1 I h y i i 0 Окончательно записываем численную схему для вычисления данного интеграла методом прямоугольников слева: 10 1 coscx dx x 1 99 i 0 1 cosc (1 0,09i) 1 0,09i 4. Записать численную схему нахождения значения определенного интеграла методом прямоугольников справа 10 x coscx dx 1 1 Решение: В данном интеграле пределы интегрирования а=1, b=10. Возьмем число разбиений n=100. Шаг интегрирования h=(10-1)/n=0,09. Переменная интегрирования xi a i h = 1 0,09i . 6 Значение хi используется для вычисления значения функции: y i y ( xi ) 1 1 cosc xi cosc 1 0,09i xi 1 0,09i В методе прямоугольников справа искомый интеграл рассчитывается по формуле n I h y i i 1 Окончательно записываем численную схему для вычисления данного интеграла методом прямоугольников справа: 10 1 coscx dx x 1 1 01,09i cosc (1 0,09i) 100 i 1 5. Записать численную схему нахождения значения определенного интеграла методом трапеций 10 x coscx dx 1 1 Решение: В данном интеграле пределы интегрирования а=1, b=10. Возьмем число разбиений n=100. Шаг интегрирования h=(10-1)/n=0,09. Переменная интегрирования xi a i h = 1 0,09i . Значение хi используется для вычисления значения функции: y i y ( xi ) 1 1 cosc xi cosc 1 0,09i xi 1 0,09i В методе трапеций необходимо еще найти y i 1 y ( xi 1 ) 1 1 cosc xi 1 cosc 1 0,09(i 1) xi 1 1 0,09(i 1) и подставить его в формулу для метода трапеций n 1 I i 0 0,09 2 yi 1 yi h 2 1 01,09i cosc (1 0.09i) 1 0.091 (i 1) cosc (1 0.09(i 1)) 99 i 0 6. Записать численную схему нахождения значения определенного интеграла методом трапеций 2b 2 x 1 e dx b Решение: 7 Переменная интегрирования х изменяется от а=-b до 2b. Число разбиений возьмем, например, n=100. Шаг h=(2b-(-b))/n=0,03b. Переменная интегрирования xi a ih b 0.03bi Значение хi используется для вычисления значений функции: yi y ( xi ) e 2 xi 1 e 2( b 0.03bi ) 1 yi 1 y ( xi 1 ) e 2 xi1 1 e 2( b 0.03b (i 1)) 1 Окончательно записываем численную схему для вычисления данного интеграла методом трапеций: n 1 I i 0 h yi 1 yi 0.03b 2 2 e 99 i 0 8 2 ( b 0.03b ( i 1)) 1 e 2( b 0.03bi) 1