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

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.