Программа для проверки правильности выполнения лабораторных работ за текущий семестр
Анализ и математическая постановка задачи. Описание алгоритма действий, структурной организации программы и ее программной реализации. Текст основной программы, модулей вывода текстовых файлов на экран, извлечения ехе-файлов и подсчёта лабораторных работ.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 28.02.2011 |
Размер файла | 28,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство образования и науки РФ
РГРТА
Кафедра ВПМ
Пояснительная записка
к Курсовой работе
Алгоритмические языки и программирование
Выполнил ст. гр. 440
Елисеев А. А.
Проверил: доц. Шевяков А. Г.
Рязань - 2005
Введение
Современные средства вычислительной техники и ЭВМ позволяют существенным образом повысить эффективность деятельности инженеров при решении различных задач. При этом наиболее существенным вопросом является организация взаимодействия пользователя со средствами ЭВМ. В качестве языка программирования выбран изучаемый на занятия по дисциплине «Алгоритмические языки и программирование» язык программирования «Turbo Pascal 7.0». К достоинствам этого языка можно отнести такие его характеристики, как модульность, универсальность, удобство работы с файлами, со структурированными типами данных и т.д.
1. Анализ и математическая постановка задачи
При решении данной задачи нужно выполнить следующие действия:
1. После запуска программа должна производить регистрацию пользователя (Ф. И. О., и номер группы).
2. После регистрации на экран должно выводиться меню с пунктами по темам лабораторных работ текущего семестра.
3. При выборе пункта меню пользователю должно предоставляться подменю из двух пунктов: «Теория» и «Запуск».
4. В подпункте «Теория» на экран должны выводиться краткие сведения по средствам языка Паскаль, необходимые для выполнения данной работы.
5. При выборе подпункта «Запуск» программа должна запускать пользовательский *.ехе-файл по выбранной лабораторной работе, сравнивать результаты работы пользовательской программы с результатами эталонной, подтверждать или нет правильность её выполнения.
6. При правильном выполнении пользовательской работы программа должна подсчитывать и фиксировать количество сделанных работ, а при успешном выполнении всех выводить сообщение «все работы зачтены».
Меню, подменю, вывод текстовых файлов, извлечение *.ехе-файлов, вывод подпунктов меню и подменю, включение управления в меню и подменю, регистрацию, подсчёт количества правильных работ целесообразно оформить в виде процедур и модулей. Подпрограммы для рисования меню и подменю, вывода в них подпунктов, регистрации, и включения управления в меню и подменю с помощью курсорных клавиш посредством указателя я разместил в модуле MAIN.TPU. Подпрограммы для вывода текстовых файлов на экран дисплея и извлечения *.ехе-файлов я расположил в модулях OPENHELP.TPU и EXECUT.TPU соответственно, а для подсчёта количества выполненных работ в модуле PODSHET.TPU.
2. Разработка схемы алгоритма и её описание
Программа работает в графическом режиме. Пользователь выбирает пункт меню (клавиши <вверх, вниз>). Запускает файл с работой. Программа выполняет заданную лабораторную работу и выводит на экран сообщение о правильности её выполнения. По результатам анализа задания можно составить укрупнённую схему алгоритма (рис. 1)
Размещено на http://www.allbest.ru/
Рис. 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 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(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); {результата,и,если работа выполнена {правильно(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 с.
Размещено на Allbest.ru
Подобные документы
Разработка программы, включающей все программы предыдущих лабораторных работ, информацию об авторе. Группировка программ, используя оператор вывода switch и созданные функции из программ лабораторных работ. Анализ реакции программы на сообщение об ошибке.
лабораторная работа [221,4 K], добавлен 23.11.2014Анализ, математическая постановка задачи. Описание алгоритма работы основной программы. Детализация отдельных участков программы. Графический интерфейс программы "15". Описания используемых типов, глобальных переменных, процедур, функций. Процесс отладки.
курсовая работа [48,8 K], добавлен 14.02.2009Написание программы, формирующей текстовый файл и выводящую на экран таблицу согласно заданному условию. Реализация принципа формирования текстовых файлов, разработка отдельных модулей (процедур) выбора информации из файла. Листинг полученной программы.
курсовая работа [769,1 K], добавлен 29.12.2011Функциональные характеристики программы форматирования текстовых файлов, требования к ее интерфейсу и данным. Схема взаимодействия компонентов системы, выбор среды исполнения и программная реализация алгоритмов. Тестирование и оценка качества программы.
курсовая работа [61,1 K], добавлен 25.07.2012Изучение основных этапов программирования на ассемблере, который является символическим представлением машинного языка, то есть каждой машинной команде соответствует команда ассемблера. Реализация алгоритма выполнения программы для просмотра bmp файлов.
курсовая работа [248,0 K], добавлен 25.12.2012Содержательная и формальная (математическая) постановка задачи. Разработка алгоритма решения задачи. Структуры программы и алгоритмы программных модулей, их описание. Решение задачи на конкретном примере. Разработка системы тестов и отладка программы.
курсовая работа [882,1 K], добавлен 24.11.2014Разработка программы обработки типизированных файлов с кодом на языке Object Pascal, с использованием компонентов Delphi для ввода и вывода данных. Разработка экранных форм и алгоритма программы. Описание программных модулей и инструкция оператору.
курсовая работа [1,5 M], добавлен 08.02.2011Проектирование программного обеспечения. Схема начального формирования каталога файлов, вывода на экран каталога файлов, удаления файлов, сортировки файлов по имени, дате создания и размеру методом прямого выбора. Управление каталогом в файловой системе.
курсовая работа [804,0 K], добавлен 08.01.2014Резидентная программа, контролирующая наличие одинаковых файлов на диске в фоновом режиме на языке С++. Структура основной программы, программная реализация алгоритма, её исходный текст, функциональные возможности и руководство по использованию.
курсовая работа [1,1 M], добавлен 17.12.2009Разработка эскизного и технического проектов программы, моделирующей игру "Кости". Постановка задачи, описание алгоритма; написание программы, организация входных и выходных данных; выбор программных средств; спецификация, текст, условия выполнения.
курсовая работа [93,8 K], добавлен 11.02.2012