Книжка Хабы (Методичка Схабы), страница 3
Описание файла
Файл "Книжка Хабы" внутри архива находится в папке "Методичка Схабы". Документ из архива "Методичка Схабы", который расположен в категории "". Всё это находится в предмете "информатика" из 2 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "информатика" в общих файлах.
Онлайн просмотр документа "Книжка Хабы"
Текст 3 страницы из документа "Книжка Хабы"
for y:=1 to nom do
as_tek(28,y+6,af[y],6+blink,1);
as (27,7,13,219,2);
as_tek(28,7,af[1],0,2);
ay:=7;
st:
repeat
if keypressed then ch:=readkey else
begin
ch:=’1’;
ReadMouseState(x,y,l,m,r);
for i:=7 to 6+nom do
if l and (y div 8+l=i) and (x div 8+l>26) and (x div 8+l<40) then
begin
as(27,ay,13,219,1); as_tek(28,ay,af[ay-6], 6+blink,1);
ay:=i;
as(27,ay,13,219,2); as_tek(28,ay,af[ay-6], 0,2);
textcolor(6);
ch:=#13;
end;
delay(1000);
end;
case ch of
#80,#72,#45:
begin
sound(400); delay(600); nosound;
end;
#13:
begin
sound(400); delay(600); nosound;
end; {case}
case ch of
#80
begin
as(27,ay,13,219,1); as_tek(28,ay,af[ay-6], 6+blink,1);
inc(ay);
if ay=6+nom+1 then ay:=7;
as(27,ay,13,219,2); as_tek(28,ay,af[ay-6], 0,2);
end;
#72:
begin
as(27,ay,13,219,1); as_tek(28,ay,af[ay-6], 6+blink,1);
dec(ay);
if ay=6 then ay:=6+nom;
as(27,ay,13,219,2); as_tek(28,ay,af[ay-6],0,2);
end;
#45,#3:
begin
vh:=45;
halt;
end;
end; {case}
until ch=#13;
vh:=ay-6;
end;
procedure r2(al:massiv; n1:integer);
var i, y :integer;
sum, sumi :integer;
s :byte;
begin
sum:=0; s:=1;
clrscr;
for i:=1 to n1 do
sum:= sum+a1[i,1];
for j:=1 to n1 do
begin
sumi:=0;
for i:=1 to n1 do
sumi:= sum+a1[i,j];
if s=1 then
if sumi<>sum then
s:=0;
end; {for}
for i:=1 to n1 do
begin
sumi:=0;
for j:=1 to n1 do
sumi:= sum+a1[i,j];
if s=1 then
if sumi<>sum then s:=0;
end; {for}
gotoXY(1,1);
textColor(red);
for I:=1 to n1 do
begin
for j:=1 to n1 do
write(al[i,j]:3);
writeln;
end;
if s=1 then
begin
writeln(‘Матрица образует магический квадрат’);
end
else
begin
writeln(‘Матрица не образует магический квадрат’);
end;
delay(10000);
repeat
readMouseState(x,y,l,m,r);
until (keypressed or l);
end;
end.
2.2. Практическая часть
Задача 2.1. Разработать модули для решения алгебраических задач:
A. Модуль приближенного решения алгебраических и трансцендентных уравнений;
B. Модуль приближенного вычисления интеграла.
В качестве примера рассмотрим упрощенный модуль приближенного вычисления интеграла методом трапеций.
Пример 2.3.
unit Proc;
interface
type
MathFunc = function(x: Real): Real;
function Area(a, b: Real; n: Integer; f: MathFunc): Real;
implementation
function Area(a, b: Real; n: Integer; f: MathFunc): Real;
var
i: Integer;
s, h, c, d: Real;
begin
s := 0;
h := (b-a)/n;
for i:= 1 to n do
begin
c := a+h*(i-1);
d := a+h*i;
s := s+h*(f(c)+f(d))/2;
end; { for }
Area := s;
end; { Area }
end. {Proc}
Здесь функция приближенного вычисления определенного интеграла методом трапеций Area имеет четыре параметра: a, b, n и f. A и b имеют тип Real, представляющие соответственно начало и конец интервала, на котором выполняется аппроксимация; n - это целое число подынтервалов; f - формальный параметр процедурного типа MathFunc, используемый в качестве имени функции. Фактический параметр, связанный с f, должен быть именем функции вещественного типа. Эта функция определяет кривую, площадь под которой вычисляется.
Программа, тестирующая функцию Area для подынтегральной функции
f(x) = x2 – x может иметь вид
Пример 2.4.
program ProcTypeDemo;
uses Crt, Proc;
var
a, b: Real;
n: Integer;
{$F+}
function Func(x: Real): Real;
begin
Func := Sqr(x)-x;
end;
{$F-}
begin
ClrScr;
Write('введите нижнюю граница интервала A:= '); Readln(a);
Write('введите верхнюю граница интервала B:= '); Readln(b);
Write('введите число подинтервалов N:= '); Readln(n);
Writeln('---------------------------------------------');
Writeln(' площадь под кривой S:-= ', Area(a,b,n,Func):10:2);
Readln;
end. {ProcTypeDemo}
Задача 2.2.
В программе, тестирующей функции модуля, сравнить методы приближенного решения алгебраических и трансцендентных уравнений (методы приближенного вычисления интеграла), поочередно используя их для решения одного и того же уравнения (для одной и той же подынтегральной функции). Значение e (точность) следует поочередно брать равными 0.01, 0.001, ..., 0.0000001. Для каждого из методов построить график или столбчатую диаграмму изменения числа потребовавшихся приближений при переходе от одного значения к другому.
3. Задачи, для самостоятельного решения
Приближенно вычислить интеграл:
b
Z= ∫ F(x) dx
а
на заданном отрезке [а;b] в соответствии с вариантом задания. Считать заданным число разбиений отрезка интегрирования n и численный метод решения. Включить в программу вычисление точного значения интеграла.
На печать вывести приближенное, точное значения интеграла и относительную погрешность вычисления в процентах.
Вар. зад. | Подынтеграл. функция f (x) | Первообразные F(х)=∫ f (x) dx | Метод числен. решения | Число отрезков | Интервал интегр. | Требуем. точность |
1. | Ln²(x) / x | Ln³(x)/3 | Трап. | 60 | [1;4] | 10–4 |
2. | (1/x²)sin(1/x) | Cos(1/x) | Прям. | 50 | [1;2,5] | 0,5 10–3 |
3. | Xx (1 + lnx) | X x | Трап. | 40 | [1;3] | 10–4 |
4. | Cos(x) | Sin(x) | Трап. | 60 | [0; /2] | 10–4 |
5. | Sin²(x) | X/2-(sin2x) /4 | Трап. | 60 | [0; /2] | 0,5 10–3 |
6. | X ex sin x | [x sinx+ (1-x) cosx] (e x / 2) | Трап. | 100 | [0; 1] | 10–4 |
7. | (ln x/x)² | -[ln x +2lnx+2] (1/x) | Прям. | 50 | [0; 2,5] | 10–4 |
8. | X arctgx | (arctg(x²-1)-x) / 2 | Трап. | 50 | [0;3] | 0,5 10-3 |
9. | 1 (sgrt (9+x²)) | Ln│x + sgrt (x²+9)│ | Прям. | 100 | [0;2] | 10–5 |
10. | eх cos²(x) | Ex(1/2+ cos2x / 10 + sin2x / 5) | Трап. | 60 | [0; ] | 10–4 |
11. | X³/(3+x) | X³-3/2x² + 9x –27 ln(x+3) | Прям. | 80 | [1;2] | 0,5 10–4 |
12. | (ln x/x)³ | -1/(8x²) (4ln³x + 6ln²x + 6lnx+3) | Трап. | 50 | [1;2] | 10–4 |
13. | X ((eх – e–х) / 2) | X chx – shx | Прям. | 50 | [0;2] | 10–4 |
14. | X² sin(2x) | -(2x²-1) (cos(2x))/4 +(x) sin(2x)/2 | Трап. | 100 | [1;2] | 10–4 |
15. | X/(x4+3x²+2) | ½ ln [(-x²-1)/(x²+2)] | Трап. | 50 | [1;2] | 0,5 10-3 |
Лабораторная работа №3
Меню
Цель работы – овладение практическими навыками разработки пользовательских меню одно и многоуровневого типов.
1. Теоретическая часть
Современные программы взаимодействуют с пользователем через специальный интерфейс типа «меню», в котором пользователю предлагается выбрать один из пунктов.
Для реализации меню необходимо обрабатывать коды нажатия клавиш управления курсором (←,↑,→,↓), по которым обычно осуществляется переход на следующий пункт. Активизация пункта обычно выполняется нажатием клавиши Enter. После выполнения нужного пункта программа должна вновь выводить меню и продолжать работу с ним. Выход из программы осуществляется по выбору специального пункта «выход» или по нажатию клавиши Esc.
Для создания окон меню используется графический режим работы экрана. Управление экраном осуществляется с помощью ресурсов модуля Crt, базирующегося на понятии “окно”.
Окно – часть экрана прямоугольной формы. В момент получения программой управления весь экран считается окном 25х80 знакомест. Программист может определять на экране новые окна и управлять их цветом символов и фона окна, так и размещение информации в окне.