Примеры заданий и решений контрольной работы для зачета 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(a,b:real):real; begin proizv:=a*b; end; 3. Написать программу, в которой вводятся числа a и b и вычислить их сумму и разность с помощью подпрограммы. Решение: Program pp3; function sum(a,b:real):real; begin sum:=a+b; end; var x,y,z,s:real; begin 1 var x,y,z,s:real; begin write('vvod x,y: '); read(x,y); s:=proizv(x,y); writeln(' x*y= ',s:6:3); z:=proizv(2.427,y); writeln(' 2.427*y= ',z:6:3); end. write('vvod x,y: '); read(x,y); s:=sum(x,y); writeln(' x+y= ',s:6:3); z:=sum(x,-y); writeln(' x-y= ',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(x1,y1,x2,y2:real):real; begin dlina:=sqrt(sqr(x2-x1)+sqr(y2-y1)); end; var xa,ya,xb,yb,xc,yc,p:real; begin write('vvod koordinat vershiny A: '); read(xa,ya); write('vvod koordinat vershiny B: '); read(xb,yb); write('vvod koordinat vershiny C: '); read(xc,yc); p:=dlina(xa,ya,xb,yb)+dlina(xb,yb,xc,yc)+ dlina(xc,yc,xa,ya); 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; 2 var xa,ya,xb,yb,xc,yc,xd,yd,d1,d2,dd,s:real; begin 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,xb,yb); d2:=dlina(xb,yb,xc,yc); writeln(' dlina storon d1=',d1:6:3,' d2=',d2:6:3); dd:=dlina(xa,ya,xc,yc); writeln(' dlina diagonali d=',dd:6:3); s:=d1*d2; writeln(' s=',s: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. 3 Еще примеры: 2. Написать программу, которая рисует в левом верхнем углу экрана окружность, в которой находится цифра 1. Решение: 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,450,100); line(200,300,200,600); line(50,450,350,450); 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. Написать программу, которая рисует на экране движущуюся слева направо окружность; Решение: 4 Program gr6; uses crt,graph; var grDriver, grMode,i: integer; BEGIN 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. Записать формулу метода трапеций для интеграла 5 0.7 ( x a)a xdx 0.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 до 10. Шаг h=(10-1)/n=9/n (nчисло разбиений, например, n=100). В квадратурных формулах численного интегрирования переменная интегрирования меняется дискретно xi a i h . В данном случае xi 1 9i / n . Значение хi используется для вычисления значения функции: y i y ( xi ) 1 1 cosc x i cosc 1 9i / n xi 1 9i / n В методе прямоугольников слева искомый интеграл рассчитывается по формуле n 1 I h y i i 0 Окончательно записываем численную схему для вычисления данного интеграла методом прямоугольников слева: n 1 1 1 cos cx dx cosc (1 9i / n) 1 x i 0 1 9i / n 10 6 4. Записать численную схему нахождения значения определенного интеграла методом прямоугольников справа 10 x coscx dx 1 1 Решение: Переменная интегрирования х изменяется от 1 до 10. Шаг h=(10-1)/n=9/n (n-число разбиений, например, n=100). Переменная интегрирования меняется дискретно xi a i h . В данном случае xi 1 9i / n . Значение хi используется для вычисления значения функции: y i y ( xi ) 1 1 cosc x i cosc 1 9i / n xi 1 9i / n В методе прямоугольников справа искомый интеграл рассчитывается по формуле n I h y i i 1 Окончательно записываем численную схему для вычисления данного интеграла методом прямоугольников справа: 10 n 1 1 cos cx dx cosc (1 9i / n) 1 x i 1 1 9i / n 5. Записать численную схему нахождения значения определенного интеграла методом трапеций 10 x coscx dx 1 1 Решение: Переменная интегрирования х изменяется от 1 до 10. Шаг h=(10-1)/n=9/n (n-число разбиений, например, n=100). Переменная интегрирования меняется дискретно xi a i h . В данном случае xi 1 9i / n . Значение хi используется для вычисления значения функции: y i y ( xi ) 1 1 cosc x i cosc 1 9i / n xi 1 9i / n В методе трапеций необходимо еще найти y i 1 1 1 cosc x i 1 cosc 1 9(i 1) / n x i 1 1 9(i 1) / n и подставить его в формулу для метода трапеций 7 y i 1 y i 9 n 1 1 1 I h cosc (1 9i / n) cosc (1 9(i 1) / n) 2 2n i 0 1 9i / n 1 9(i 1) / n i 0 n 1 6. Записать численную схему нахождения значения определенного интеграла методом трапеций 2b 2 x 1 e dx b Решение: Переменная интегрирования х изменяется от -b до 2b. Шаг h=(2b-(-b))/n=3b/n (n-число разбиений, например, n=100). Переменная интегрирования меняется дискретно xi a i h . В данном случае xi b 3bi / n Значение хi используется для вычисления значений функции: yi y ( xi ) e 2 xi 1 e 2( b 3bi / n ) 1 yi 1 y ( xi 1 ) e 2 xi1 1 e 2 ( b 3b (i 1) / n ) 1 Окончательно записываем численную схему для вычисления данного интеграла методом трапеций: yi 1 yi 3b n 1 2 ( b 3b (i 1) / n )1 I h e e 2 ( b 3bi / n )1 2 n i 0 i 0 n 1 8