Помощь в написании студенческих работ
Антистрессовый сервис

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

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

Обнуление количества правильно выполненных работ. Для этого переменной логического типа 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 с.

Показать весь текст
Заполнить форму текущей работой