Книжка Хабы (Методичка Схабы), страница 2
Описание файла
Файл "Книжка Хабы" внутри архива находится в папке "Методичка Схабы". Документ из архива "Методичка Схабы", который расположен в категории "". Всё это находится в предмете "информатика" из 2 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "информатика" в общих файлах.
Онлайн просмотр документа "Книжка Хабы"
Текст 2 страницы из документа "Книжка Хабы"
В основной программе использовать процедуру TRAP для вычисления интегралов:
∫ (х 2 + cos(x)) dx и ∫ (tg(x+1))/(x+1) dx
от –1 до 4 от 0 до 2
Задача 10.Составить подпрограмму-процедуру NEIBR отыскивания ближайшей из 10 точек, заданных массивом их декартовых координат, кривой F(x) при одной координате x.
В основной программе использовать процедуру NEIBR для функций cos(x) и sin(x).
Задача 11.Составить подпрограмму-процедуру MASSHTAB отыскивания масштаба графического изображения функции f(x) на экране размером В единиц растра по формуле M=B/max f(x).
В основной программе использовать процедуру для отыскания масштаба функций z2sin(x) и tg(x), при х<1.
Задача 12.Составить подпрограмму - процедуру RT для отыскания наименьшего положительного корня уравнения F(x)=0 c точностью =0.00001 методом итераций.
В основном программе использовать процедуру для решения уравнения x - tg(x) = 0 , используя обратную функцию x1 = arcing(x0) + k .
Задача 13. Составить подпрограмму-процедуру ВR для отыскания ближайшей из 10 точек, заданных массивом их декартовых координат, к кривой F(x) при одной и той же координате х.
В основном программе использовать процедуру ВR для функций cos(x) и sin(x).
Задача 14. Составить подпрограмму-процедуру MAXIM для отыскания максимального расстояния между двумя кривыми F(x) и G(x) при одной и той же абсциссе х на интервале от xmin до xmax.
В основном программе использовать процедуру MAXIM для функций sin(x)/x и tg(x+1)/(x+1) в интервале 0,5…1 с шагом 0,02.
Задача 15. Составить подпрограмму-процедуру ROOT отыскания минимального положительного корня уравнения f(x)=0 с точностью =0.0001 методом деления пополам отрезка, содержащего корень.
В основном программе использовать процедуру для решения уравнений x2 + sin(x/2)= 0 и arctg(x) + x = 1.
Задача 16. Cоставить подпрограмму-функцию INTG для вычисления определенного интервала по формуле прямоугольников.
В основной программе использовать процедуру INTG для вычисления интегралов:
∫ (cos(х)/(x) dx и ∫ (ctg(x+1))/(x+1) dx
от –0,1 до 4 от 0 до 2
Задача 17. Cоставить подпрограмму-функцию INTGR для вычисления определенного интервала по формуле прямоугольников.
В основной программе использовать процедуру INTGR для вычисления интегралов:
∫ ex/(x+1) dx и ∫ (sgrt(x-1)) dx
от –0 до 1 от 0 до 2
Задача 18. Cоставить подпрограмму-функцию INTEG для вычисления определенного интервала по формуле трапеций.
В основной программе использовать процедуру INTEG для вычисления интегралов:
∫ sin(х)/(x) dx и ∫ (tg(x+1))/(x+1) dx
от –0,1 до 1 от 0 до 2
Задача 19. Cоставить подпрограмму-функцию INT для вычисления определенного интервала по формуле прямоугольников.
В основной программе использовать процедуру INT для вычисления интегралов:
∫ sin(х)/(x) dx и ∫ (tg(x+1))/(x+1) dx
от –0,1 до 1 от 0.1 до 2
Задача 20. Cоставить подпрограмму-функцию INTGR для вычисления определенного интервала по формуле прямоугольников.
В основной программе использовать процедуру INTGR для вычисления интегралов:
∫ ex /(x+1) dx и ∫ sgrt(x-1) dx
от –0 до 1 от 0 до 2
Задача 21. Cоставить подпрограмму-функцию TRAP для вычисления определенного интервала по формуле трапеций.
В основной программе использовать процедуру TRAP для вычисления интегралов:
∫ (х2 + cos(x)) dx и ∫ (tg(x+1))/(x+1) dx
от –1 до 4 от 0 до 2
Задача 22. Разработать подпрограмму, которая определяет корни уравнения y = x2 – 2 на заданном отрезке методом половинного деления.
Задача 23. Cоставить подпрограмму-функцию Integr для вычисления определенного интервала по формуле прямоугольников.
В основной программе использовать процедуру INTGR для вычисления интегралов:
∫ ex /(x+1) dx и ∫ sgrt(x-1) dx
от –0 до 1 от 0 до 2
Задача 24. Составить подпрограмму-процедуру Сoren отыскания всех корней уравнения f(x)=0 с точностью =0.0001 методом Ньютана-Рафсона.
В основном программе использовать процедуру для решения уравнения x3 – 1,473x2 - 5,738х + 6,763 = 0.
Задача 25. Составить подпрограмму-процедуру Сrn отыскания всех корней уравнения f(x)=0 с точностью =0.1; 0.01; 0,001; 0,0001 методом деления отрезка пополам.
В основном программе использовать процедуру для решения уравнения ch(x) + cos(x) – 3 = 0.
Лабораторная работа №2
Модули
Цель работы – овладение практическими навыками и приемами разработки программ с помощью разрабатываемых программистом собственных модулей.
-
Теоретическая часть
-
Структура модулей
-
Структура модуля аналогична структуре программы, однако, есть несколько существенных различий. Она имеет вид:
unit <имя>; {зарезервированное слово (единица); начинает заголовок модуля};
interface {зарезервированное слово (интерфейс), начинает интерфейсную часть модуля}
uses <список модулей>; {необязательный}
{глобальные описания}
implementation {зарезервированное слово (выполнение); начинает исполнительную часть};
uses <список_модулей>; {необязательный}
{локальные описания}
{реализация процедур и функций}
begin {начало инициирующую часть};
{код инициализации}
end. {зарезервированное слово – признак конца модуля}
Таким образом, модуль состоит из заголовка и трех составных частей, любая из которых может быть пустой.
-
Связь модулей друг с другом
Заголовок модуля состоит из зарезервированного слова UNIT и следующего за ним имени модуля. Для правильной работы среды ТР и возможности подключения средств, облегчающих разработку крупных программ, это имя должно совпадать с именем дискового файла, в который помещается исходный текст модуля. Если например, имеет заголовок
Unit Global;
то исходный текст соответствующего модуля должен размещаться в дисковом файле Global.pas. Имя модуля служит для его связи с другими модулями и основной программой. Эта связь устанавливается специальным предложением. Эта связь устанавливается специальным предложением
Uses <список модулей>
2.1. Демонстрационные примеры
Пример 2.1. Напишем небольшой модуль. Назовем его IntLib и включим в него две простые подпрограммы для целых чисел - процедуру ISwap и функцию IMax:
unit IntLib;
interface
procedure ISwap(var I,J : integer);
function IMax(I,J : integer) : integer;
implementation
procedure ISwap;
var
temp : integer;
begin
temp := I; I := J; J := Temp
end; {конец процедуры ISwap}
function IMax;
begin
if I > J then IMax := I else IMax := J
end; {конец функции IMax}
end. {конец модуля IntLib}
Наберите этот модуль, запишите его в файл INTLIВ.PAS, а за тем скомпилируйте его. В результате получим код модуля в файле INTLIВ.ТРU. Перешлем его в каталог модулей (если такой имеется), или оставив в том же каталоге, где находится следующая программа, которая использует модуль IntLib:
program IntTest;
uses IntLib;
var
A,B : integer;
begin
Write('Введите два целочисленных значения: ');
Readln(A,B);
ISwap(A,B);
Writeln('A = ',A,' B = ',B);
Writeln('Максимальное значение равно ',IMax(A,B));
end. {конец программы IntTest}
Пример 2.2. Написать программу проверяющая является ли квадратная матрица n x n магическим квадратом, т.е. сумма всех элементов всех строк и столбцов равны.
Program Integral;
Uses crt, mymenu;
Var i,j,n,m,t: integer;
ms: mymas;
ch: boolean;
begin
textbackground(blue);
ms[1]:=’ввод’; ms[2]:=’Проверка’; ms[3]:=’Выход’;
repeat
clrscr;
menu(ms,3,n);
gotoXY(3,3);
textcolor(1);
case n of
1: begin
textbackground(1);
clrscr;
textcolor(red);
writeln(‘Введите размер матрицы m: ’);
readln(m);
for i:=1 to m do
for j:=1 to m do
begin
write(i,’- ая строка’, j,’-ый столбец’);
readln(a[i,j]);
end;
b:=a;
clrscr;
end;
2: begin
textbackground(1);
r2(b,m);
clrscr;
end;
3: halt;
end;
until l = 0;
readln;
end.
Модуль программы MyMenu.tpu:
Unit MyMenu;
interface
uses dos;
type mymas = array[1..3] of string [25];
masiv = array[1..20,1..20] of integer;
procedure menu (af: mymas; nom: integer; var vh: integer);
procedure r2 (a1: masiv; n1: integer);
implementation
uses crt;
var ch :char;
ay :integer;
p,i,x,y :integer;
l,m,r :boolean;
function ResetMouse:boolean;
var r: registers;
begin
r.ax :=0;
intr ($33,r);
ResetMouse := r.ax =$FFFF;
end;
procedure ShowMouseCursor;
var r: registers;
begin
r.ax := 1;
intr ($33,r);
end;
procedure HideMouseCursor;
var r: registers;
begin
r.ax := 2;
intr ($33,r);
end;
procedure ReadMouseState(var x,y: integer; var lb,mb,rb: boolean);
var r: registers;
begin
r.ax:= 3;
intr ($33,r);
x := r.cx;
y := r.dx;
lb := (r.bx and 1) <> 0;
rb := (r.bx and 2) <> 0;
mb := (r.bx and 4) <> 0;
end;
procedure MoveMouseCursor( x,y: integer);
var r: registers;
begin
r.ax:= 4;
r.cx:= x;
r.dx:= y;
intr ($33,r);
end;
procedure as (x,y: byte; an: integer; car,col: byte);
begin
textcolor(col);
gotoXY(x,y);
for p:=1 to an do write(chr(car));
end;
procedure as_tek(x,y:byte; str: string; col,bc_col:byte);
begin
textbackground(bc_col);
textcolor(col);
gotoXY(x,y);
write(str);
textbackground(0);
end;
procedure Menu;
var i,x,y :integer;
l,m,r :boolean;
label st;
begin
ShowMouseCursor;
MoveMouseCursor(0,0);
textbackground(blue);
textcolor(3);
gotoXY(26,6);
write(‘ -----Menu-------’);
for p:=7 to 7+nom-1 do
begin
gotoXY(26,p); write(‘|’); gotoXY(40,p); write(‘|’);
end;
gotoXY(26,6+nom+1);
write(‘---------------------’);