Программа для проверки правильности выполнения лабораторных работ за текущий семестр
Обнуление количества правильно выполненных работ. Для этого переменной логического типа p присваивается значение false и она записывается в файлы с именами «Rx"(x = 1…7). Министерство образования и науки РФ РГРТА Кафедра ВПМ Пояснительная записка к Курсовой работе Алгоритмические языки и программирование Выполнил ст. гр. 440. Инициализация графического режима. В программе переменные Driver и Mode… Читать ещё >
Программа для проверки правильности выполнения лабораторных работ за текущий семестр (реферат, курсовая, диплом, контрольная)
Министерство образования и науки РФ РГРТА Кафедра ВПМ Пояснительная записка к Курсовой работе Алгоритмические языки и программирование Выполнил ст. гр. 440
Елисеев А. А.
Проверил: доц. Шевяков А. Г.
Рязань — 2005
Современные средства вычислительной техники и ЭВМ позволяют существенным образом повысить эффективность деятельности инженеров при решении различных задач. При этом наиболее существенным вопросом является организация взаимодействия пользователя со средствами ЭВМ. В качестве языка программирования выбран изучаемый на занятия по дисциплине «Алгоритмические языки и программирование» язык программирования «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 15 012,20240,20 240}
Const
Directory='C:BPBGI'; {задание директории для включения граф. режима}
Var
Driver, Mode: integer;
r:file of boolean; {файловая переменная логического типа}
p:boolean; {переменная логического типа}
Begin
p:=false; {обнуление правильности результатов работ, к-е хранятся в файлах 'Rx'}
assign (r,'C:BPBINKURSWORKR1.DAT');
rewrite®;
write (r, p);close®;
assign (r,'C:BPBINKURSWORKR2.DAT');
rewrite®;
write (r, p);close®;
assign (r,'C:BPBINKURSWORKR3.DAT');
rewrite®;
write (r, p);close®;
assign (r,'C:BPBINKURSWORKR4.DAT');
rewrite®;
write (r, p);close®;
assign (r,'C:BPBINKURSWORKR5.DAT');
rewrite®;
write (r, p);close®;
assign (r,'C:BPBINKURSWORKR6.DAT');
rewrite®;
write (r, p);close®;
assign (r,'C:BPBINKURSWORKR7.DAT');
rewrite®;
write (r, p);close®;
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:BPBINKURSWORKREGISTR.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:BPBINKURSWORKREGISTR.DAT');
reset (f);
read (f, re); {считывание данных из файла регистрации}
status (stat); {считывание количества правильных лаб. работ}
if stat<>7
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 (a11); {извлечение файла, записывающего исх. данные и}
execute (a21); {результат пользов. программы для первой работы,}
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 (a12);
execute (a22);
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 (a13);
execute (a23);
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 (a14);
execute (a24);
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 (a15);
execute (a25);
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 (a16);
execute (a26);
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 (a17);
execute (a27);
setgraphmode (getgraphmode);
podmenu7;
klavpodmenu7;
end;
50:begin
menu;
klavmenu;
end;
end;
end;
End.
5. Текст модуля EXECUT.TPU
программа подсчет работа лабораторный
Unit execut;
Interface
Uses DOS;
Const {задание имён файлов}
a11='dannye1.exe'; {имена файлов, считывающих исх. данные и результат}
a12='dannye2.exe';
a13='dannye3.exe';
a14='dannye4.exe';
a15='dannye5.exe';
a16='dannye6.exe';
a17='dannye7.exe';
a21='lab1.exe'; {имена файлов эталонных программ}
a22='lab2.exe';
a23='lab3.exe';
a24='lab4.exe';
a25='lab5.exe';
a26='lab6.exe';
a27='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:BPBINKURSWORK'+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:BPBINKURSWORK'+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:BPBINKURSWORKR1.DAT'); {связывание файловой переменной}
reset®; {с файлом, содежащим результат выполнения 1-ой работы, считывание}
read (r, p); {результата, и, если работа выполнена {правильно (p=true), то}
if p=true {счётчик увеличивается на 1}
then stat:=stat+1;
assign (r,'C:BPBINKURSWORKR2.DAT'); {далее аналогично}
reset®;
read (r, p);
if p=true
then stat:=stat+1;
assign (r,'C:BPBINKURSWORKR3.DAT');
reset®;
read (r, p);
if p=true
then stat:=stat+1;
assign (r,'C:BPBINKURSWORKR4.DAT');
reset®;
read (r, p);
if p=true
then stat:=stat+1;
assign (r,'C:BPBINKURSWORKR5.DAT');
reset®;
read (r, p);
if p=true
then stat:=stat+1;
assign (r,'C:BPBINKURSWORKR6.DAT');
reset®;
read (r, p);
if p=true
then stat:=stat+1;
assign (r,'C:BPBINKURSWORKR7.DAT');
reset®;
read (r, p);
if p=true
then stat:=stat+1;
close®; {закрытие файла}
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:BPBINKURSWORKL7.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:BPBINKURSWORKL7.DAT');
assign (r7,'C:BPBINKURSWORKR7.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-й член последовательности — 163 737 397 990.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 с.