страница 1 |
|
Похожие работы
|
Отчет по практике за I курс 2004-2005 учебный год - страница №1/1
![]() Брянский государственный технический университет Кафедра
Информатики и Программного Обеспечения Отчет по практике за I курс 2004-2005 учебный год
Реализовать демонстрационный режим решения нелинейных уравнений четырьмя способами: методом дихотомии, методом Ньютона, методом хорд и методом хорд и касательных. Дана функция : Найти корень нелинейного уравнения с точностью ε =0.02 Блок-схема программы ![]() ![]() При запуске программы запускается меню (рис 2.), которое предоставляет пользователю выбрать каким методом решать данное уравнение и изменять параметры задачи. Меню обладает простым и интуитивно понятным интерфейсом. Код программы, реализующий меню, вы можете посмотреть здесь. Рис 2.
Результаты программы ![]() ![]() ![]() ![]() Рис. 3 Рис. 4 Рис. 5 Рис. 6 П Листинг программы: Program graphiki; uses crt,graph; Var eps,
a0,b0,a,b, c, x0, xh,xk, x, otr, yr, xr :real; n:byte;
P1: pointer; ckey : char; texts: string; i, gd,gm,y,nk ,sm,desx,size,ikey:integer; Function selectm(name: string) : string; begin
TextBackground(blue); Textcolor(12); write (name); TextBackground(black); Textcolor(white); writeln;
end; Function menu(sel : integer) : integer; const n=6; var names: array[1..n] of string; key1, exit, o, s: integer; chr: char; begin
clrscr;
exit:=0; names[1]:=' Œ¥â®¤ ¤¨å®â®¬¨¨ '; names[2]:=' Œ¥â®¤ ìîâ® '; names[3]:=' Œ¥â®¤ å®à¤ '; names[4]:='Œ¥â®¤ å®à¤ ¨ ª á ⥫ìëå'; names[5]:=' Ž¯æ¨¨ '; names[6]:=' ‚ë室 '; key1:=0;
TextBackground(black); Textcolor(white); s:=sel; repeat
if (key1=80) and (s if (key1=72) and (s>1) then s:=s-1; Textcolor(12); gotoxy(20,2); Writeln('à®£à ¬¬ ¤«ï ¨§®¡à ¦¥¨ï £à 䨪®¢'); gotoxy(30,3); Writeln('§ ¤ ®© äãªæ¨¨'); Textcolor(white); for i:=1 to n do begin
gotoxy(25,6+i); if s=i then selectm(names[i]) else writeln(names[i]); end; chr:=readkey; key1:=Ord(chr); if (key1=13) then begin exit:=1;
menu:=s; end;
if (key1=27) then begin
menu:=6; end;
until exit=1; end;
begin f:=3*x*x*x-6*x-5; end; Function f1(x:real) : real; Begin
f1:=9*x*x-6; End;
Begin f2:=18*x; End; Begin clrscr;
a0:=1; b0:=9;
eps:=0.2; nk:=10;
sm:=1; if f(a0)*f(b0)<0 then begin
repeat sm:=menu(sm); gd:=Detect; initgraph (gd,gm,'C:\programm\pascal\tp70\bgi'); cleardevice; line(0,round(getmaxy/2),getmaxx,round(getmaxy/2)); line(round(getmaxx/2),0,round(getmaxx/2),getmaxy); line(round(getmaxx/2),0,round(getmaxx/2-3),10); line(round(getmaxx/2),0,round(getmaxx/2+3),10); line(getmaxx,round(getmaxy/2),getmaxx-10,round(getmaxy/2)+3); line(getmaxx,round(getmaxy/2),getmaxx-10,round(getmaxy/2)-3); outtextxy(getmaxx-10,round(getmaxy/2+10),'X'); outtextxy(round(getmaxx/2)-15,5,'Y'); for i:=1 to 5 do begin line(round(getmaxx/2-(getmaxx/12)*i),round(getmaxy/2+5),round(getmaxx/2-(getmaxx/12)*i),round(getmaxy/2-5)); line(round(getmaxx/2+(getmaxx/12)*i),round(getmaxy/2+5),round(getmaxx/2+(getmaxx/12)*i),round(getmaxy/2-5)); line(round(getmaxx/2+5),round(getmaxy/2+(getmaxy/12)*i),round(getmaxx/2-5),round(getmaxy/2+(getmaxy/12)*i)); line(round(getmaxx/2+5),round(getmaxy/2-(getmaxy/12)*i),round(getmaxx/2-5),round(getmaxy/2-(getmaxy/12)*i)); Str(i*round(getmaxy/12),texts); outtextxy(round(getmaxx/2+10),round(getmaxy/2-(getmaxy/12)*i)-3,texts); outtextxy(round(getmaxx/2+10),round(getmaxy/2+(getmaxy/12)*i)-3,'-'+texts); Str(round(((nk/12))+(i-1)),texts); outtextxy(round(getmaxx/2-(getmaxx/12)*i)-3,round(getmaxy/2+10),'-'+texts); outtextxy(round(getmaxx/2+(getmaxx/12)*i)+3,round(getmaxy/2+10),texts); end;
Setcolor(white); moveto(ROUND((nk/getmaxx)-10),ROUND( (getmaxy/2))); for i:=0 to getmaxx do begin
xr:= ((nk/getmaxx)*i-(nk/2)); yr:=f(xr); y:=round(getmaxy/2-yr); lineto(i,y); moveto(i,y); end;
SetColor(Blue); case sm of 1 : begin n:=0; a:=a0; b:=b0; repeat inc(n);
c:=(a+b)/2; if f(b)*f(c)<0 then a:=c else b:=c; line(round((c+(nk/2))/(nk/getmaxx)),round(getmaxy/2+15), round((c+(nk/2))/(nk/getmaxx)),round(getmaxy/2-15)); str(n,texts); outtextxy(round((c+(nk/2))/(nk/getmaxx))-5,round(getmaxy/2-25),texts); until abs(b-a)<=eps; str(((a+b)/2):3:3,texts); outtextxy(round((c+(nk/2))/(nk/getmaxx))-5,round(getmaxy/2+25),texts); readkey; end;
2 : begin if f1(a0)*f2(a0)>0 then x0:=b0 else x0:=a0; n:=0; repeat
yr:=round(f(x0)); MoveTo(round((x0+(nk/2))*getmaxx/nk),round(getmaxy-(yr+getmaxy/2))); c:=x0-f(x0)/f1(x0); LineTo(round((c+(nk/2))*getmaxx/nk),round(getmaxy/2)); otr:=abs(c-x0); x0:=c;
inc(n); Until otr <= Eps; readkey; end;
3 : begin if f1(a0)*f2(a0)>0 then begin
x:=b0
end else
begin x0:=b0;
x:=a0 end;
n:=0; repeat
yr:=round(f(x)); MoveTo(round((x+(nk/2))*getmaxx/nk),round(getmaxy-(yr+getmaxy/2))); yr:=round(f(x0)); LineTo(round((x0+(nk/2))*getmaxx/nk),round(getmaxy-(yr+getmaxy/2))); c:=x0-f(x0)*(x-x0)/(f(x)-f(x0)); otr:=abs(c-x0); x0:=c; inc(n);
until otr<=Eps; readkey;
end; 4 : begin if f1(a0)*f2(a0)>0 then begin
xh:=a0; xk:=b0; end
else begin
xh:=b0; xk:=a0 end;
n:=0; repeat
SetColor(blue); yr:=round(f(xh)); MoveTo(round((xh+(nk/2))*getmaxx/nk),round(getmaxy-(yr+getmaxy/2))); yr:=round(f(xk)); LineTo(round((xk+(nk/2))*getmaxx/nk),round(getmaxy-(yr+getmaxy/2))); SetColor(magenta); yr:=round(f(xk)); MoveTo(round((xk+(nk/2))*getmaxx/nk),round(getmaxy-(yr+getmaxy/2))); xk:=xk-f(xk)/f1(xk); LineTo(round((xk+(nk/2))*getmaxx/nk),round(getmaxy/2)); xh:=xh-f(xh)*(xk-xh)/(f(xk)-f(xh)); inc(n);
Until abs(xk-xh)<= Eps; readkey;
end; 5: begin repeat cleardevice; closegraph; textcolor(yellow); writeln('¢¢¥¤¨â¥ ç «® ¯à®¬¥¦ã⪠'); readln(a0); writeln('¢¢¥¤¨â¥ ª®¥æ ¯à®¬¥¦ã⪠'); readln(b0); writeln('¢¢¥¤¨â¥ â®ç®áâì'); readln(eps); Until ikey<>1; end;
End; {closegraph; } until sm=6; end
else writeln(' ®â४¥ [',a0:5:2,';',b0:5:2,'] ª®à¥© ¥â!'); End. Задача №2 Написать программу, работающую с записями Реализовать простенькую базу данных с возможностью добавления, удаления и изменения записей. Программа учета автомобилей. Блок-схема программы ![]() При запуске программы запускается система защиты от несанкционированного доступа к программе. Она требует ввести пароль. Если пароль введен не правильно, то программа не даст допуск к основному меню программы. После успешно пройденной проверки запускается основное меню программы: ![]() В этом меню пользователь выбирает нужный ему пункт и работает с программой в диалоговом режиме. Пункт меню Показать информацию о призывнике открывает пользователю диалоговое окно , в котором нужно ввести фамилию призывника, информацию которого требуется посмотреть пользователю. К ![]() В случае, когда пользователь ввел верную информацию, на дисплей пользователя выводится необходимая ему информация: П П При выборе пункта Снять с учета призывника, пользователю нужно ввести фамилию того призывника, которого нужно удалить из списка призывников и базы данных. В случае неверного ввода высветится сообщение :
Если некоторая информация изменилась у призывника, то для этого есть пункт Изменить информацию о призывнике, в котором происходит обновление записей о призывнике: П Н ![]() П ![]() ![]() Информацию о которых пользователь может получить использую пункт №1 главного меню. Ну и Выход из программы осуществляет закрывает программу. Программа реализуется с помощью нескольких стандартных(crt, graph), и 2 самостоятельно написанных модуля. Реализацию каждого модуля вы можете посмотреть здесь:
Процедуры и функции, используемые в программе:
Листинг программы Program Guatir; Uses bd,crt,graph,menu1; type b_d = record marka:string[10]; god_v:string[10]; tsvet:string[10]; vladelets:string[10]; end; var f,i,j,b,key,str,x,y,key1,sch:integer; c:real; ch,ch1:char; size:word; p:pointer; st:string; a: array [1..100] of b_d; Procedure p_menu4; begin
repeat cleardevice; ch1:=chr(2); setcolor(13); setTextStyle(10,0,2); outTextXY(150,150,'Programma B&D prednaznachena dlya raboti '); outTextXY(150,170,'nad basoi dannih ob avtomobilyah g.Bryanska '); outTextXY(150,190,'Avtor programmi: Kolotovkin D.S.'); outTextXY(150,210,'Gog vipuska: 2005 god. '); outTextXY(280,350,ch1); outTextXY(310,350,ch1); outTextXY(340,350,ch1); ch1:=readkey; f:=ord(ch1); until (f=27); end;
b:=0; Initgraph(b,f,'c:\programm\pascal\tp70\bgi'); sch:=1; f:=0;
y:=0; repeat
Cleardevice; SetTextStyle(7,0,1); OutTextXY(180,30,'VAS PIVETSTVUET B&D '); SetTextStyle(6,0,1); OutTextXY(100,150,'Vvedite parol dlya vhoda: '); rectangle(100,180,170,200); gotoxy(100,100); readln(st); if ((st<>'Dima') and (y>0)) then OutTextXY(100,200,'nevernii parol '); inc(y);
until (st='Dima'); str:=1; repeat
begin cleardevice; menu(str); textcolor(4); setcolor(14); SetTextStyle(7,0,1); OutTextXY(0,450,'Viberete nuzhnii punct'); {size:=imagesize(10,60,120,140); Getmem(p,size); getimage(10,60,120,140,p^); x:=0; while x<900 do begin putimage(500,400,p^,0); delay(40); putimage(500,400,p^,0); inc(x);
end;} ch:=readkey; key:=ord(ch); if ((key=80) and (str<=5)) then begin sound(10000);delay(200);nosound;menu(str);inc(str) end; if str=6 then begin str:=1; menu(str) end; if ((key=72) and (str>=1)) then begin sound(5000);delay(200);nosound;menu(str);dec(str) end; if str=0 then begin str:=5; menu(str) end; case str of 1: if (key=13) then begin cleardevice; OutTextXY(180,10,'VAS PIVETSTVUET B&D '); repeat
if (sch=1) then begin
setcolor(4); settextstyle(4,0,7); outtextxy(150,200,'Basa pusta'); end
else begin setcolor(6); outtextxy(0,50,'MARKA'); outtextxy(150,50,'GOD VIPUSKA'); outtextxy(350,50,'TSVET'); outtextxy(500,50,'VLADELETS'); end; for i:=1 to sch do begin setcolor(2); outtextxy(0,70+i*20,a[i].marka); outtextxy(150,70+i*20,a[i].god_v); outtextxy(350,70+i*20,a[i].tsvet); outtextxy(500,70+i*20,a[i].vladelets); end; ch:=readkey; key:=ord(ch); until key=27; end; 2:begin
if (key=13) then begin
settextstyle(2,0,7); a[sch].marka:=Dobavlenie1(sch); a[sch].god_v:=Dobavlenie2(sch); a[sch].tsvet:=Dobavlenie3(sch); a[sch].vladelets:=Dobavlenie4(sch); sch:=sch+1; end; end;
3:begin if (key=13) then begin if sch<>1 then begin cleardevice; OutTextXY(180,30,'POISK I UDALENIE '); setcolor(9); settextstyle(8,0,3); OutTextXY(50,50,'Vvedite kategoriu poiska: '); OutTextXY(50,70,'marka,god_vipuska,tsvet ili vladelets'); readln(st); if st='marka' then begin
cleardevice; OutTextXY(180,30,'POISK I UDALENIE '); OutTextXY(180,50,'vvedite iskomoe slovo'); readln(st); for i:=1 to sch do if st=a[i].marka then begin b:=i;
f:=1; cleardevice; outtextxy(0,150,a[b].marka); outtextxy(150,150,a[b].god_v); outtextxy(300,150,a[b].tsvet); outtextxy(450,150,a[b].vladelets); OutTextXY(70,50,'budete li vi udalyat zapis: da ili net ?'); readln(st); if st='da' then begin
a[b].god_v:=''; a[b].vladelets:=''; a[b].marka:=''; a[b].tsvet:=''; end end;
if f=0 then begin
cleardevice; outtextxy(150,150,'Takoi zapisi ne suschestvuet'); readln; end;
end; if st='god_vipuska' then begin
cleardevice; OutTextXY(180,30,'POISK I UDALENIE '); OutTextXY(180,50,'vvedite iskomoe slovo'); readln(st); for i:=1 to sch do if st=a[i].god_v then begin b:=i;
f:=1; cleardevice; outtextxy(0,150,a[b].marka); outtextxy(150,150,a[b].god_v); outtextxy(300,150,a[b].tsvet); outtextxy(450,150,a[b].vladelets); OutTextXY(70,50,'budete li vi udalyat zapis: da ili net ?'); readln(st); if st='da' then begin
a[b].god_v:=''; a[b].vladelets:=''; a[b].marka:=''; a[b].tsvet:=''; end end;
if f=0 then begin
cleardevice; outtextxy(150,150,'Takoi zapisi ne suschestvuet'); readln; end;
end; if st='tsvet' then begin
cleardevice; OutTextXY(180,30,'POISK I UDALENIE '); OutTextXY(180,50,'vvedite iskomoe slovo'); readln(st); for i:=1 to sch do if st=a[i].tsvet then begin b:=i;
f:=1; cleardevice; outtextxy(0,150,a[b].marka); outtextxy(150,150,a[b].god_v); outtextxy(300,150,a[b].tsvet); outtextxy(450,150,a[b].vladelets); OutTextXY(70,50,'budete li vi udalyat zapis: da ili net ?'); readln(st); if st='da' then begin
a[b].god_v:=''; a[b].vladelets:=''; a[b].marka:=''; a[b].tsvet:=''; end end;
if f=0 then begin
cleardevice; outtextxy(150,150,'Takoi zapisi ne suschestvuet'); readln; end;
end; if st='vladelets' then begin
cleardevice; OutTextXY(180,30,'POISK I UDALENIE '); OutTextXY(180,50,'vvedite iskomoe slovo'); readln(st); for i:=1 to sch do if st=a[i].vladelets then begin b:=i;
f:=1; cleardevice; outtextxy(0,150,a[b].marka); outtextxy(150,150,a[b].god_v); outtextxy(300,150,a[b].tsvet); outtextxy(450,150,a[b].vladelets); OutTextXY(70,50,'budete li vi udalyat zapis: da ili net ?'); readln(st); if st='da' then begin
a[b].god_v:=''; a[b].vladelets:=''; a[b].marka:=''; a[b].tsvet:=''; end end;
if f=0 then begin
cleardevice; outtextxy(150,150,'Takoi zapisi ne suschestvuet'); readln; end;
end; end; if sch=1 then begin cleardevice; setcolor(4); settextstyle(4,0,7); outtextxy(150,200,'Basa pusta'); readkey;
end; end; end;
4:begin if (key=13) then p_menu4; end; 5:if (key=13) then key:=3; {enter - 13 , esc - 27} End; end;
until (key=3); closegraph; end. Модуль bd: Unit BD; interface uses graph,crt,menu1; Function Dobavlenie1(sch: integer):string; Function Dobavlenie2(sch: integer):string; Function Dobavlenie3(sch: integer):string; Function Dobavlenie4(sch: integer):string; Function Udalenie(str : string ):string; Implementation type b_d = record marka:string[30]; god_v:string[30]; tsvet:string[30]; vladelets:string[30]; end; var b,key,sch,i:integer; ch : char; a: array [1..100] of b_d; Function Dobavlenie1; begin
cleardevice; Outtextxy(45,45,'vvedite marku avtomobilya'); readln(a[sch].marka); Dobavlenie1:= a[sch].marka; end; Function Dobavlenie2; begin cleardevice; Outtextxy(45,45,'vvedite god vipuska avtomobilya'); readln(a[sch].god_v); Dobavlenie2:= a[sch].god_v; end;
Function Dobavlenie3; begin
cleardevice; Outtextxy(45,45,'vvedite tsvet avtomobilya'); readln(a[sch].tsvet); Dobavlenie3:= a[sch].tsvet; end; Function Dobavlenie4; begin cleardevice; Outtextxy(45,45,'vvedite vladeltsa'); readln(a[sch].vladelets); Dobavlenie4:= a[sch].vladelets; end;
Function Udalenie; begin
end; BEGIN
b:=0; Initgraph(b,i,'c:\programm\pascal\tp70\bgi'); END. Модуль menu1: Unit menu1; interface uses graph,crt; function menu(str:integer):integer; Implementation var a,b,key:integer; ch : char; Function menu(str:integer):integer; const n=6; var s: array[1..n] of string; begin s[1]:='* Basa Dannih'; s[2]:='* Dobavlenie zapisi'; s[3]:='* Poisk i udalenie'; s[4]:='* O programme'; s[5]:='* Vihod'; setcolor(6); Rectangle(245,125+str*20,380,143+str*20); setcolor(12); SetTextStyle(7,0,3); OutTextXY(0,10,'SVEDENIYA O AVTOMOBILYAH GORODA BRYANSKA'); OutTextXY(270,40,'B&D'); setcolor(11); SetTextStyle(10,0,2); OutTextXY(230,150,s[1]); OutTextXY(230,170,s[2]); OutTextXY(230,190,s[3]); OutTextXY(230,210,s[4]); OutTextXY(230,230,s[5]); end;
BEGIN b:=0;
Initgraph(b,a,'c:\programm\pascal\tp70\bgi'); END.900>0>0> |
ещё >> |