Программа для проверки правильности выполнения лабораторных работ за текущий семестр - Курсовая работа

бесплатно 0
4.5 159
Анализ и математическая постановка задачи. Описание алгоритма действий, структурной организации программы и ее программной реализации. Текст основной программы, модулей вывода текстовых файлов на экран, извлечения ехе-файлов и подсчёта лабораторных работ.


Аннотация к работе
Меню, подменю, вывод текстовых файлов, извлечение *.ехе-файлов, вывод подпунктов меню и подменю, включение управления в меню и подменю, регистрацию, подсчет количества правильных работ целесообразно оформить в виде процедур и модулей. Процедура, рисующая главное меню, состоящее из подпунктов с темами лаб. работ за текущий семестр и подпункт справки к программе. В процедуре menu используется также процедура ramka, которая рисует рамку окна с помощью процедур Line.

Введение
Современные средства вычислительной техники и ЭВМ позволяют существенным образом повысить эффективность деятельности инженеров при решении различных задач. При этом наиболее существенным вопросом является организация взаимодействия пользователя со средствами ЭВМ. В качестве языка программирования выбран изучаемый на занятия по дисциплине «Алгоритмические языки и программирование» язык программирования «Turbo Pascal 7.0». К достоинствам этого языка можно отнести такие его характеристики, как модульность, универсальность, удобство работы с файлами, со структурированными типами данных и т.д.

1.

Анализ и математическая постановка задачи

При решении данной задачи нужно выполнить следующие действия: 1. После запуска программа должна производить регистрацию пользователя (Ф. И. О., и номер группы).

2. После регистрации на экран должно выводиться меню с пунктами по темам лабораторных работ текущего семестра.

3. При выборе пункта меню пользователю должно предоставляться подменю из двух пунктов: «Теория» и «Запуск».

4. В подпункте «Теория» на экран должны выводиться краткие сведения по средствам языка Паскаль, необходимые для выполнения данной работы.

5. При выборе подпункта «Запуск» программа должна запускать пользовательский *.ехе-файл по выбранной лабораторной работе, сравнивать результаты работы пользовательской программы с результатами эталонной, подтверждать или нет правильность ее выполнения.

6. При правильном выполнении пользовательской работы программа должна подсчитывать и фиксировать количество сделанных работ, а при успешном выполнении всех выводить сообщение «все работы зачтены».

Меню, подменю, вывод текстовых файлов, извлечение *.ехе-файлов, вывод подпунктов меню и подменю, включение управления в меню и подменю, регистрацию, подсчет количества правильных работ целесообразно оформить в виде процедур и модулей. Подпрограммы для рисования меню и подменю, вывода в них подпунктов, регистрации, и включения управления в меню и подменю с помощью курсорных клавиш посредством указателя я разместил в модуле MAIN.TPU. Подпрограммы для вывода текстовых файлов на экран дисплея и извлечения *.ехе-файлов я расположил в модулях OPENHELP.TPU и EXECUT.TPU соответственно, а для подсчета количества выполненных работ в модуле PODSHET.TPU.

2. Разработка схемы алгоритма и ее описание

Программа работает в графическом режиме. Пользователь выбирает пункт меню (клавиши ). Запускает файл с работой. Программа выполняет заданную лабораторную работу и выводит на экран сообщение о правильности ее выполнения. По результатам анализа задания можно составить укрупненную схему алгоритма (рис. 1)

Рис. 1

1. Обнуление количества правильно выполненных работ. Для этого переменной логического типа p присваивается значение false и она записывается в файлы с именами “Rx”(x = 1…7).

2. Запуск процедуры регистрации, которая состоит из следующих полей для заполнения: - фамилия;

- имя;

- отчество;

- номер группы.

3. Инициализация графического режима. В программе переменные Driver и Mode имеют тип integer, а Directory - переменная строкового типа, указывающая путь к граф. драйверу.

4. Процедура, рисующая главное меню, состоящее из подпунктов с темами лаб. работ за текущий семестр и подпункт справки к программе. Подпункты выводятся на экран с помощью процедуры OUTTEXTXY. В процедуре menu используется также процедура ramka, которая рисует рамку окна с помощью процедур Line.

5. Процедура, включающая управление курсорными клавишами в главном меню. В ней используется процедура kursor, которая рисует указатель в форме кружка. При нажатии курсорных клавиш он перемещается вверх или вниз. При нажатии Esc программа выводит количество правильно выполненных работ и данные о пользователе. При нажатии Enter открывается соответствующее подменю, в зависимости от координаты курсора. Управление в подменю аналогично управлению в меню, за исключением того, что кнопка BACK приводит к возвращению в главное меню. В подменю находятся два пункта: Theory (теория) и Run (Запуск). При выборе пункта Theory открывается окно, содержащее краткие теоретич. сведения о текущей лаб. работе. При выборе пункта Run начинается проверка правильности лабораторных работ. При этом вначале запускается пользовательская программа. Чтобы запуск произошел успешно, пользователь должен указать путь к .exe-файлу своей лабораторной работы. После запуска пользовательской программы появляется окно, в котором необходимо ввести исходные данные, вводимые при запуске программы пользователя, и полученный в ней результат. После этого запускается эталонная программа и выводит результат, который должен получиться при введенных исходных данных. Если результат, введенный пользователем, совпадает с результатом эталонной программы, то в этом же окне выводится сообщение "Ваша программа работает правильно", а в противном случае - "Ваша программа работает неправильно". После этого необходимо нажать клавишу ENTER для возвращения в подменю текущей работы.

3.Текст программы и его описание

Program kurs;

Uses Graph,CRT,OPENHELP,Main;

{$M 15012,20240,20240}

Const

Directory="C:\BP\BGI"; {задание директории для включения граф. режима}

Var

Driver,Mode:integer;

r:file of boolean; {файловая переменная логического типа} p:boolean; {переменная логического типа}

Begin p:=false; {обнуление правильности результатов работ,к-е хранятся в файлах "Rx"} assign(r,"C:\BP\BIN\KURSWORK\R1.DAT");

rewrite(r);

write(r,p);close(r);

assign(r,"C:\BP\BIN\KURSWORK\R2.DAT");

rewrite(r);

write(r,p);close(r);

assign(r,"C:\BP\BIN\KURSWORK\R3.DAT");

rewrite(r);

write(r,p);close(r);

assign(r,"C:\BP\BIN\KURSWORK\R4.DAT");

rewrite(r);

write(r,p);close(r);

assign(r,"C:\BP\BIN\KURSWORK\R5.DAT");

rewrite(r);

write(r,p);close(r);

assign(r,"C:\BP\BIN\KURSWORK\R6.DAT");

rewrite(r);

write(r,p);close(r);

assign(r,"C:\BP\BIN\KURSWORK\R7.DAT");

rewrite(r);

write(r,p);close(r);

registration; {запуск процедуры оегистрации}

INITGRAPH(Driver,Mode,Directory); {инициализация графического режима} menu; {запуск процедуры меню} klavmenu; {запуск процедуры управления в главном меню} readln;

End.

4. Текст модуля MAIN.TPU

Unit Main;

Interface

Uses Graph,CRT,DOS,OPENHELP,Execut,Podshet;

procedure registration; {процедура регистрации} procedure CLRKEYBUF; {процедура очистки буфера клавиатуры} procedure wait; {процедура ожидания нажатия клавиши} procedure kursor(y:integer); {процедура,рисующая курсор} procedure detectkey(var c:char); {процедура отслеживания нажатия клавишы} procedure ramka; {процедура,рисующая рамку} procedure podmenutext; {процедура,выводящая текст в подменю} procedure podmenu1; {процедура,рисующая подменю 1} procedure podmenu2; {процедура,рисующая подменю 2} procedure podmenu3; {процедура,рисующая подменю 3} procedure podmenu4; {процедура,рисующая подменю 4} procedure podmenu5; {процедура,рисующая подменю 5} procedure podmenu6; {процедура,рисующая подменю 6} procedure podmenu7; {процедура,рисующая подменю 7} procedure menu; {процедура,рисующая меню} procedure klavmenu; {процедура,включающая управление в главном меню} procedure klavpodmenu1; {процедура,включающая управление в подменю 1} procedure klavpodmenu2; {процедура,включающая управление в подменю 2} procedure klavpodmenu3; {процедура,включающая управление в подменю 3} procedure klavpodmenu4; {процедура,включающая управление в подменю 4} procedure klavpodmenu5; {процедура,включающая управление в подменю 5} procedure klavpodmenu6; {процедура,включающая управление в подменю 6} procedure klavpodmenu7; {процедура,включающая управление в подменю 7}

Implementation procedure registration;

type reg=record fam:string[12]; {поле фамилии} name:string[10]; {поле имени} otch:string[12]; {поле отчества} gr:string[4]; {поле номера группы} end;

var re:reg;

f:file of reg;

begin textbackground(1);

textcolor(14);

clrscr;

assign(f,"C:\BP\BIN\KURSWORK\REGISTR.DAT");

rewrite(f);

gotoxy(35,7);write("Регистрация");

gotoxy(35,10);write("Фамилия:");

gotoxy(35,11);write("Имя:");

gotoxy(35,12);write("Отчество:");

gotoxy(35,13);write("Группа:");

gotoxy(43,10);readln(re.fam);

gotoxy(39,11);readln(re.name);

gotoxy(44,12);readln(re.otch);

gotoxy(42,13);readln(re.gr);

write(f,re); {запись данных в файл "REGISTR.DAT"} close(f);

end;

procedure CLRKEYBUF;

begin while keypressed do readkey;

end;

procedure wait;

begin repeat until keypressed;

end;

procedure kursor(y:integer);

begin circle(10,y 2,2);

floodfill(10,y 2,15); {заливает указатель (кружок) белым цветом} end;

procedure ramka;

begin clearviewport; {очистка активного граф. окна} setbkcolor(1);

Line(1,1,639,1); {рисование рамки}

Line(1,12,639,12);

Line(1,1,1,479);

Line(638,1,638,479);

Line(1,479,639,479);

end;

procedure podmenutext;

begin

OUTTEXTXY(20,30,"1 - Theory"); {Вывод подпунктов подменю}

OUTTEXTXY(20,40,"2 - Run");

OUTTEXTXY(20,50,"3 - Back");

end;

procedure podmenu1;

begin ramka;

OUTTEXTXY(245,3,"Procedures and functions");

podmenutext;

end;

procedure podmenu2;

begin ramka;

OUTTEXTXY(195,3,"Parametres of procedures and functions");

podmenutext;

end;

procedure podmenu3;

begin ramka;

OUTTEXTXY(285,3,"Recursions");

podmenutext;

end;

procedure podmenu4;

begin ramka;

OUTTEXTXY(295,3,"Modules");

podmenutext;

end;

procedure podmenu5;

begin ramka;

OUTTEXTXY(295,3,"Records");

podmenutext;

end;

procedure podmenu6;

begin ramka;

OUTTEXTXY(295,3,"Files");

podmenutext;

end;

procedure podmenu7;

begin ramka;

OUTTEXTXY(265,3,"Sets");

podmenutext;

end;

procedure detectkey(var c:char);

var ch:char;

begin clrkeybuf;

ch:=readkey; {считывание нажатой клавиши} if ch=#0 then ch:=readkey;

clrkeybuf;

c:=ch;

end;

procedure menu;

begin ramka;

OUTTEXTXY(265,3,"Choose your lab"); {Вывод пунктов меню}

OUTTEXTXY(20,30,"1 - Procedures and functions");

OUTTEXTXY(20,40,"2 - Parametres of procedures and functions");

OUTTEXTXY(20,50,"3 - Recursions");

OUTTEXTXY(20,60,"4 - Modules");

OUTTEXTXY(20,70,"5 - Records");

OUTTEXTXY(20,80,"6 - Files");

OUTTEXTXY(20,90,"7 - Sets");

OUTTEXTXY(20,100,"Help");

OUTTEXTXY(20,460,"Esc - exit");

end;

procedure klavmenu;

type reg=record fam:string[12];

name:string[10];

otch:string[12];

gr:string[4];

end;

var y:integer;

c:char;

re:reg;

f:file of reg;

stat:byte;

begin y:=30;

kursor(y); {включение указателя} repeat detectkey(c);

case c of

#80:begin {нажатие клавиши "вниз"} menu; {рисование меню и перемещение указателя вниз} y:=y 10;

if y=110 then y:=30;

kursor(y);

moveto(19,y);

end;

#72:begin {нажатие клавиши "вверх"} menu; {рисование меню и перемещение указателя вверх} y:=y-10;

if y=20 then y:=100;

kursor(y);

moveto(19,y);

end;

#27:begin {нажатие клавиши Esc} restorecrtmode; {восстановление CRT-режима} clrscr;

assign(f,"C:\BP\BIN\KURSWORK\REGISTR.DAT");

reset(f);

read(f,re); {считывание данных из файла регистрации} status(stat); {считывание количества правильных лаб. работ} if stat7 then begin writeln(re.fam," ",re.name," ",re.otch," из группы ",re.gr);

writeln("Статус: сдано работ - ",stat);

end else begin writeln(re.fam," ",re.name," ",re.otch," из группы ",re.gr);

writeln("Статус: все работы зачтены");

end;

close(f);

end;

end;

until c=#13; {выполняется пока не нажата клавиша Enter} case y of {в зависимости от положения указателя открывается}

30:begin {соответствующее подменю и подключается управление,} podmenu1;{но если у=100,то открывается файл справки к программе} klavpodmenu1;

end;

40:begin podmenu2;

klavpodmenu2;

end;

50:begin podmenu3;

klavpodmenu3;

end;

60:begin podmenu4;

klavpodmenu4;

end;

70:begin podmenu5;

klavpodmenu5;

end;

80:begin podmenu6;

klavpodmenu6;

end;

90:begin podmenu7;

klavpodmenu7;

end;

100:begin restorecrtmode; {восстановление CRT-режима} oph(st); {открытие файла справки} setgraphmode(getgraphmode); {восстановление граф. режима} menu; {подключение меню и управления в нем} klavmenu;

end;

end;

end;

procedure klavpodmenu1;

var y:integer;

c:char;

st:string;

begin y:=30;

kursor(y); {включение указателя в подменю 1} repeat detectkey(c);

case c of

#80:begin {если нажата клавиша вниз,то заново рисуется подменю 1} podmenu1; {и указатель перемещается вниз} y:=y 10;

if y=60 then y:=30;

kursor(y);

moveto(19,y);

end;

#72:begin {если нажата клавиша вверх,то заново рисуется подменю 1} podmenu1; {и указатель перемещается вверх} y:=y-10;

if y=20 then y:=50;

kursor(y);

moveto(19,y);

end;

end;

until c=#13; {выполняется пока не нажата клавиша Enter} case y of {определение положения указателя}

30:begin restorecrtmode;

oph(st1); {открытие файла справки к работе 1} setgraphmode(getgraphmode);

podmenu1; {рисование подменю 1 и подключение управления} klavpodmenu1;

end;

40:begin restorecrtmode;

writeln("Введите путь к своему файлу");

readln(st);

execute(st); {извлечение пользовательского файла} execute(a1_1); {извлечение файла,записывающего исх. данные и} execute(a2_1); {результат пользов. программы для первой работы,} setgraphmode(getgraphmode); {и запуск эталонной прог-мы для этой работы} podmenu1; {рисование подменю 1 и подключение управления} klavpodmenu1;

end;

50:begin menu; {возвращение в главное меню} klavmenu;

end;

end;

end;

procedure klavpodmenu2; {здесь и далее все аналогично описанию } var {процедуры klavpodmenu1} y:integer;

c:char;

st:string;

begin y:=30;

kursor(y);

repeat detectkey(c);

case c of

#80:begin podmenu2;

y:=y 10;

if y=60 then y:=30;

kursor(y);

moveto(19,y);

end;

#72:begin podmenu2;

y:=y-10;

if y=20 then y:=50;

kursor(y);

moveto(19,y);

end;

end;

until c=#13;

case y of

30:begin restorecrtmode;

oph(st2);

setgraphmode(getgraphmode);

podmenu2;

klavpodmenu2;

end;

40:begin restorecrtmode;

writeln("Введите путь к своему файлу");

readln(st);

execute(st);

execute(a1_2);

execute(a2_2);

setgraphmode(getgraphmode);

podmenu2;

klavpodmenu2;

end;

50:begin menu;

klavmenu;

end;

end;

end;

procedure klavpodmenu3;

var y:integer;

c:char;

st:string;

begin y:=30;

kursor(y);

repeat detectkey(c);

case c of

#80:begin podmenu3;

y:=y 10;

if y=60 then y:=30;

kursor(y);

moveto(19,y);

end;

#72:begin podmenu3;

y:=y-10;

if y=20 then y:=50;

kursor(y);

moveto(19,y);

end;

end;

until c=#13;

case y of

30:begin restorecrtmode;

oph(st3);

setgraphmode(getgraphmode);

podmenu3;

klavpodmenu3;

end;

40:begin restorecrtmode;

writeln("Введите путь к своему файлу");

readln(st);

execute(st);

execute(a1_3);

execute(a2_3);

setgraphmode(getgraphmode);

podmenu3;

klavpodmenu3;

end;

50:begin menu;

klavmenu;

end;

end;

end;

procedure klavpodmenu4;

var y:integer;

c:char;

st:string;

begin y:=30;

kursor(y);

repeat detectkey(c);

case c of

#80:begin podmenu4;

y:=y 10;

if y=60 then y:=30;

kursor(y);

moveto(19,y);

end;

#72:begin podmenu4;

y:=y-10;

if y=20 then y:=50;

kursor(y);

moveto(19,y);

end;

end;

until c=#13;

case y of

30:begin restorecrtmode;

oph(st4);

setgraphmode(getgraphmode);

podmenu4;

klavpodmenu4;

end;

40:begin restorecrtmode;

writeln("Введите путь к своему файлу");

readln(st);

execute(st);

execute(a1_4);

execute(a2_4);

setgraphmode(getgraphmode);

podmenu4;

klavpodmenu4;

end;

50:begin menu;

klavmenu;

end;

end;

end;

procedure klavpodmenu5;

var y:integer;

c:char;

st:string;

begin y:=30;

kursor(y);

repeat detectkey(c);

case c of

#80:begin podmenu5;

y:=y 10;

if y=60 then y:=30;

kursor(y);

moveto(19,y);

end;

#72:begin podmenu5;

y:=y-10;

if y=20 then y:=50;

kursor(y);

moveto(19,y);

end;

end;

until c=#13;

case y of

30:begin restorecrtmode;

oph(st5);

setgraphmode(getgraphmode);

podmenu5;

klavpodmenu5;

end;

40:begin restorecrtmode;

writeln("Введите путь к своему файлу");

readln(st);

execute(st);

execute(a1_5);

execute(a2_5);

setgraphmode(getgraphmode);

podmenu5;

klavpodmenu5;

end;

50:begin menu;

klavmenu;

end;

end;

end;

procedure klavpodmenu6;

var y:integer;

c:char;

st:string;

begin y:=30;

kursor(y);

repeat detectkey(c);

case c of

#80:begin podmenu6;

y:=y 10;

if y=60 then y:=30;

kursor(y);

moveto(19,y);

end;

#72:begin podmenu6;

y:=y-10;

if y=20 then y:=50;

kursor(y);

moveto(19,y);

end;

end;

until c=#13;

case y of

30:begin restorecrtmode;

oph(st6);

setgraphmode(getgraphmode);

podmenu6;

klavpodmenu6;

end;

40:begin restorecrtmode;

writeln("Введите путь к своему файлу");

readln(st);

execute(st);

execute(a1_6);

execute(a2_6);

setgraphmode(getgraphmode);

podmenu6;

klavpodmenu6;

end;

50:begin menu;

klavmenu;

end;

end;

end;

procedure klavpodmenu7;

var y:integer;

c:char;

st:string;

begin y:=30;

kursor(y);

repeat detectkey(c);

case c of

#80:begin podmenu7;

y:=y 10;

if y=60 then y:=30;

kursor(y);

moveto(19,y);

end;

#72:begin podmenu7;

y:=y-10;

if y=20 then y:=50;

kursor(y);

moveto(19,y);

end;

end;

until c=#13;

case y of

30:begin restorecrtmode;

oph(st7);

setgraphmode(getgraphmode);

podmenu7;

klavpodmenu7;

end;

40:begin restorecrtmode;

writeln("Введите путь к своему файлу");

readln(st);

execute(st);

execute(a1_7);

execute(a2_7);

setgraphmode(getgraphmode);

podmenu7;

klavpodmenu7;

end;

50:begin menu;

klavmenu;

end;

end;

end;

End.

5. Текст модуля EXECUT.TPU программа подсчет работа лабораторный

Unit execut;

Interface

Uses DOS;

Const {задание имен файлов} a1_1="dannye1.exe"; {имена файлов,считывающих исх. данные и результат} a1_2="dannye2.exe";

a1_3="dannye3.exe";

a1_4="dannye4.exe";

a1_5="dannye5.exe";

a1_6="dannye6.exe";

a1_7="dannye7.exe";

a2_1="lab1.exe"; {имена файлов эталонных программ} a2_2="lab2.exe";

a2_3="lab3.exe";

a2_4="lab4.exe";

a2_5="lab5.exe";

a2_6="lab6.exe";

a2_7="lab7.exe";

procedure execute(a:string); {процедура извлечения .exe-файлов}

Implementation procedure execute(a:string);

var wrd:word;

ERRORLEVEL,EXITHIBYTE:byte;

{$M 3512,0,0} begin swapvectors;

exec("C:\BP\BIN\KURSWORK\" a,"");

swapvectors;

wrd:=DOSEXITCODE;

ERRORLEVEL:=Lo(wrd);

EXITHIBYTE:=Hi(wrd);

case DOSERROR of {отслеживание ошибок}

0:begin end;

2:writeln(#10"not file");

8:writeln(#10"not memory") else writeln(#10"ERRORDOS=",DOSERROR);

end;

end;

End.

Текст модуля OPENHELP.TPU

Unit OPENHELP;

Interface

Uses CRT;

Const {задание названий текстовых файлов} st="help.txt";

st1="help1.txt";

st2="help2.txt";

st3="help3.txt";

st4="help4.txt";

st5="help5.txt";

st6="help6.txt";

st7="help7.txt";

procedure oph(st:string);

Implementation procedure oph(st:string); {процедура вывода текстовых файлов} var f:text; {файловая переменная типа текст} s:char; {символьная переменная} begin clrscr; {очитска экрана} assign(f,"C:\BP\BIN\KURSWORK\" st); {связывание файловой переменой} reset(f); {с конкретным текстовым файлом} while not Eof(f) do {посимвольное считывание и вывод содержимого файла} begin read(f,s);

write(s);

end;

close(f);

readln;

end;

End.

6. Текст модуля PODSHET.TPU

Unit podshet;

Interface procedure status(var stat:byte); {процедура подсчета количества вып-х работ}

Implementation procedure status(var stat:byte); {stat - счетчик} var r:file of boolean; {файловая переменная логического типа} p:boolean; {переменная логического типа} begin stat:=0; {задание счетчику правильности выполнения работ значения = 0} assign(r,"C:\BP\BIN\KURSWORK\R1.DAT"); {связывание файловой переменной} reset(r); {с файлом,содежащим результат выполнения 1-ой работы,считывание} read(r,p); {результата,и,если работа выполнена {правильно(р=true),то} if p=true {счетчик увеличивается на 1} then stat:=stat 1;

assign(r,"C:\BP\BIN\KURSWORK\R2.DAT"); {далее аналогично} reset(r);

read(r,p);

if p=true then stat:=stat 1;

assign(r,"C:\BP\BIN\KURSWORK\R3.DAT");

reset(r);

read(r,p);

if p=true then stat:=stat 1;

assign(r,"C:\BP\BIN\KURSWORK\R4.DAT");

reset(r);

read(r,p);

if p=true then stat:=stat 1;

assign(r,"C:\BP\BIN\KURSWORK\R5.DAT");

reset(r);

read(r,p);

if p=true then stat:=stat 1;

assign(r,"C:\BP\BIN\KURSWORK\R6.DAT");

reset(r);

read(r,p);

if p=true then stat:=stat 1;

assign(r,"C:\BP\BIN\KURSWORK\R7.DAT");

reset(r);

read(r,p);

if p=true then stat:=stat 1;

close(r); {закрытие файла} end;

End.

7. Пример текста алгоритма файла, считывающего исх. данные и результат (для лаб. работы «множества»)

Задание к данной работе: Из предложения, состоящего из латинских букв вывести все гласные буквы.

Program dannye7;

Uses CRT;

Type l7=record {тип-запись для исходных данных и результата} st1,st2:string;

end;

Var f7:file of l7;

lab7:l7;

Begin clrscr;

assign(f7,"C:\BP\BIN\KURSWORK\L7.DAT");

rewrite(f7);

writeln("Введите английскую строку");

readln(lab7.st1);

writeln("Введите гласные буквы из строки,ставя после каждой пробел");

readln(lab7.st2);

write(f7,lab7); {запись исх. данных и результатов в файл} close(f7);

End.

8. Пример эталонной программы (для лаб. работы «множества»)

Program lab19;

Type l7=record st1,st2:string;

end;

Var st1,st2:string;

i:integer;

f7:file of l7;

r7:file of boolean;

r:boolean;

lab7:l7;

Begin assign(f7,"C:\BP\BIN\KURSWORK\L7.DAT");

assign(r7,"C:\BP\BIN\KURSWORK\R7.DAT");

rewrite(r7);

reset(f7);

read(f7,lab7); {считывание исх. данных и результата в запись} st1:=lab7.st1;

for i:=1 to length(st1) do if st1[i] in ["A","a","E","e","I","i","O","o","Q","q","U","u","Y","y"] then begin st2:=st2 st1[i] " ";

end;

if length(st2)>1 then begin writeln("Гласные буквы из введенной строки");

writeln(st2);

end else writeln("Гласных букв в введенной строке нет");

if lab7.st2=st2 then begin r:=true;

write(r7,r); {запись результата выполнения работы} writeln("Ваша программа работает правильно");

end else begin r:=false;

write(r7,r); {запись результата выполнения работы} writeln("Ваша программа работает неправильно");

end;

close(f7);

close(r7);

readln;

End.

9. Контрольные просчеты

1. «Процедуры и функции».

Задание: составить подпрограммы для работы с комплексными числами.

Ввод исходных данных: Действительная и мнимая часть 1-ого числа - 1;0

Действительная и мнимая часть 2-ого числа - 1;0

Результат работы пользовательской программы: Сумма чисел: Действительная часть - 2

Мнимая часть - 0

Разность чисел

Действительная часть - 0

Мнимая часть - 0

Произведение чисел

Действительная часть - 1

Мнимая часть - 0

Частное чисел

Действительная часть - 1

Мнимая часть - 0

Результат работы программы - «Ваша программа работает правильно»

2. «Параметры процедур и функций».

Задание: вычислить площадь треугольников по координатам их вершин и найти сумму площадей этих двух треугольников.

Ввод исходных данных: Координата 1-ой вершины 1-ого треугольника - (1;1)

Координата 2-ой вершины 1-ого треугольника - (5;1)

Координата 3-ей вершины 1-ого треугольника - (4;5)

Координата 1-ой вершины 2-ого треугольника - (1;1)

Координата 2-ой вершины 2-ого треугольника - (1;6)

Координата 3-ей вершины 2-ого треугольника - (4;7)

Результат работы пользовательской программы: Площадь 1-ого треугольника - 8.00

Площадь 2-ого треугольника - 7.50

Сумма площадей - 15.50

Результат работы программы - «Ваша программа работает правильно»

3. «Рекурсии».

Задание: вычислить 14-й член последовательности, определяемой формулой: v[n]=a[n]*v[n-1] a[n-1]/v[n-2], если v[1]=a[1],v[2]=a[1] a[2], где a[n]-члены массива.

Ввод исходных данных: Число членов последовательности - 14

Члены последовательности - 1,2,3,4,5,6,7,8,9,10,11,12,13,14

Результат работы пользовательской программы: 14-й член последовательности - 163737397990.00

Результат работы программы - «Ваша программа работает правильно»

4. «Модули».

Задание: вычислить площадь треугольников по координатам их вершин и найти сумму площадей этих двух треугольников.

Ввод исходных данных: Координата 1-ой вершины 1-ого треугольника - (1;1)

Координата 2-ой вершины 1-ого треугольника - (5;1)

Координата 3-ей вершины 1-ого треугольника - (4;5)

Координата 1-ой вершины 2-ого треугольника - (1;1)

Координата 2-ой вершины 2-ого треугольника - (1;6)

Координата 3-ей вершины 2-ого треугольника - (4;7)

Результат работы пользовательской программы: Площадь 1-ого треугольника - 8.00

Площадь 2-ого треугольника - 7.50

Сумма площадей - 15.50

Результат работы программы - «Ваша программа работает правильно»

5. «Записи».

Задание: создать запись, содержащую информацию о месте жительства ваших друзей и предусмотреть возможность выдачи адреса по введенной фамилии.

Ввод исходных данных: Количество друзей - 2

Фамилия 1-ого друга - Братулин

Адрес 1-ого друга - Недостоево, ул. Сельских строителей, д.52, кв.10

Фамилия 2-ого друга - Трушин

Адрес 2-ого друга - Приокский, ул. Магистральная, д. 52, кв. 24

Результат работы пользовательской программы: Фамилия друга - Братулин

Адрес друга - Недостоево, ул. Сельских строителей, д.52, кв.10

Результат работы программы - «Ваша программа работает правильно»

6. «Файлы».

Задание: Записать в файл оценки в баллах за сессии и за вступительные экзамены и вывести средний балл.

Ввод исходных данных: Количество сессий - 1

Количество экзаменов в сессии - 3

Оценка №1 за сессию №1 - 5

Оценка №2 за сессию №1 - 5

Оценка №3 за сессию №1 - 5

Оценка №1 за экзамены - 4

Оценка №2 за экзамены - 4

Оценка №3 за экзамены - 4

Результат работы пользовательской программы: Средний балл за сессию №1 - 5.00

Средний балл за экзамены - 4.00

Результат работы программы - «Ваша программа работает правильно»

7. «Множества».

Задание: Из предложения, состоящего из латинских букв вывести все гласные буквы.

Ввод исходных данных: Предложение - I live in Russia

Результат работы пользовательской программы: Гласные буквы - I i e i u i a Результат работы программы - «Ваша программа работает правильно»

Список литературы
1. Эллиот Б. Коффман . Turbo Pascal, 5-е издание: Пер. с англ. - М. : Издательский дом «Вильямс», 2003.-896 с.

2. Новичков В. С., Парфилова Н. И., Пылькин А. Н. Алгоритмизация и программирование на Турбо Паскале: Учебное пособие. - М. : Горячая линия - Телеком, 2005. - 438 с.

Размещено на
Заказать написание новой работы



Дисциплины научных работ



Хотите, перезвоним вам?