Работа и интерфейс программы
Предварительно для нашего задания мы должны создать файл data3.txt, записать туда данные, а именно параметры A,R через пробел для построения графика.
Рисунок 4.1 – Заполнение файла
В зависимости от введенных параметров, программа будет строить и выводить график в графическое окно (см. Рисунок 4.2).
Рисунок 4.2 –Работа графического окна
Задание 5. Записи.
Написать программу, которая формирует файл записей данной структуры
Type Kniga=Record
Avtor:String;
Nazvanie:String;
God:Integer;
Izdatel:String;
Stranizy:Integer;
End;
и определяет: - есть ли книги данного автора;
- книгу с наибольшим количеством страниц;
- названия книг данного автора, изданных с указанного года, в данном издательстве.
Блок – схема:
Алгоритм:
Для начала зададим имя программ. Подключим модуль работы с экраном. Опишем запись. В языке Паскаль запись определяется путем указания служебного слова record и перечисления входящих в запись элементов с указанием типов этих элементов.
Сделаем описание переменных.
Далее для ввода в диалоговом окне данных создаем цикл из n=10.
Далее работаем с полученным массивом. Согласно заданию ищем, есть ли книги данного автора. Вводим с клавиатуры автора интересующей нас книги и присваиваем ей значение «avt». Далее он сравнивает «avt» с авторами которые содержатся в нашем массиве.
Согласно задание нужно найти книгу с наибольшим количеством страниц. Для этого в цикле сравниваем с максимальным значением каждую книгу.
Далее требуется найти названия книг данного автора, изданных с указанного года, в данном издательстве.
В итоге получаем код программы (см. Приложение Д)
Работа и интерфейс программы
Ввод осуществляется при помощи клавиатуры и подтверждается (принимается) нажатием клавиши Enter. Все данные должны вводиться согласно условию, сказанному в задание и дублированному на экране (см. рисунок 5.1).
Рисунок 5.1 – Ввод данных
После того как мы ввели все данные выполняем все условия указанные в задании. Выполняем поиск
- есть ли книги данного автора;
- книгу с наибольшим количеством страниц;
- названия книг данного автора, изданных с указанного года, в данном издательстве.
(см. Рисунок 5.2)
Рисунок 5.2 - Результат
Заключение
В ходе выполнения курсовой работы были разработаны и реализованы, программы для работы с текстовой строкой, двумерным массивом, файлами, машинной графикой, записями.
При выполнении курсовой работы были изучены основные конструкции языка высокого уровня Паскаль, такие как, циклы, условия, процедуры, функции, массивы, строки и т.д.
Паскаль предоставляет достаточные средства для написания программ по заданному алгоритму для решения практически любых задач.
Список используемой литературы
1. Немнюгин С.А. - Turbo Pascal. Программирование на языке высокого уровня, СПб.: Питер, 2002, 496 с.
2. Рапаков Г. Г., Ржеуцкая С. Ю. – Программирование на языке Pascal, СПб.: БХВ-Питербург, 2004, 480 с.
3. Окулов С. М. - Основы программирования, М.:БИНОМ. Лаборатория знаний, 2004, 424 с.
4. Материалы сайта Система программирования PascalABC.NET - http://pascalabc.net/.
5. С.Н.Лукин - Turbo Pascal 7.0. Самоучитель, Диалог – МИФИ, 1999, 211 с.
6. Энциклопедия «Википедия» [Электронный ресурс] - http://ru.wikipedia.org.
7. Ерёмин О. Ф. – Методическое пособие по программированию на языке Pascal ABC, Моздок, 2009, 49 с.
Приложение А.
Код программы к заданию 1
program A1;
uses crt;
var s:string;
A:array [1..20] of string;
B:array [1..10] of string;
i,j,max,r,k,l,n,m:integer;
begin
read(s); {ввод последовательности слов}
r:=1;
for i:=1 to length(s) do
if s[i]=' ' then
begin
j:=j+1;
A[j]:=copy(s,r,i-r);
r:=i+1;
end; {Каждое слово вносится в отдельную ячейку массива символьного типа}
for i:=1 to j do
writeln('A[',i,']=',A[i]);
{Массив выводится для проверки}
For i:=1 to j do
begin
m:=0;
n:=0;
for l:=1 to length(A[i]) do
case A[i][l] of
'0'..'9': n:=1;
'а'..'я': m:=1;
end;
if (n<>0) and (m=0) then begin
writeln('только числа в слове "',A[i],'"');
for j:=length(A[i])downto 1 do
write(A[i][j]);
writeln;
end;
if (m<>0) and (n=0) then begin
writeln('только знаки в слове "',A[i],'"');
for j:=length(A[i])downto 1 do
write(A[i][j]);
writeln;
end;
end;{Выводим слова, в которых есть либо только числа, либо только знаки и переворачиваем их}
end.
Приложение Б.
Код программы к заданию 2
Приложение В.
Код программы к заданию 3
Program A3;
uses crt;
const c=['0','1','2','3','4','5','6','7','8','9'];
var
f1,f2:text;
a:array[1..99] of string;
b:array[1..99] of integer;
s,s1:string;
r1,r2:real;
i,j,k,x,g,v,s2:integer;
begin
assign(f1,'file1.txt');
assign(f2,'file2.txt');
Rewrite(f1);
write('vvedite text: ');readln(s);
write(f1,s);
write('начальное слово: ');
readln(r1);
write('конечное слово: ');
readln(r2);
Reset(f1);
while not eof(f1) do readln(f1,s);
j:=1;
for i:=1 to length(s) do
begin
if (s[i]<>' ') and (s[i] in c) then
begin
a[j]:=a[j]+s[i];
end
else inc(j);
end;
x:=j;
i:=0;
s2:=0;
for j:=1 to x do
begin
s1:=a[j];
val(s1,v,g);
if (v>r1) and (v<r2) then
begin
inc(i);
b[i]:=v;
end
else begin
s2:=s2+v;
k:=k+1;
end;
end;
writeln;
writeln('Кол-во чисел: ',k);
for j:=1 to x do writeln(a[j]);
writeln;
writeln('Сумма чисел: ',s2);
Rewrite(f2);
for i:=1 to k do write(f2,b[i],' ');
close(f1);
close(f2);
end.
Приложение Г
Код программы к заданию 4
program A4;
uses GraphABC,crt;
const p=3.14;
var x,t,y,A,R,m:real;
n:byte;
l:text;
Q:array [1..4] of real;
begin
setwindowsize(600,600);
line(300,0,300,600);
line(0,300,600,300);
assign(l,'data3.txt');
reset(l);
for n:=1 to 4 do
begin
readln(l,m);
Q[n]:=m;
end;
A:=Q[1];
R:=Q[2];
t:=0;
while t<2*p do
begin
x:=(1+A)*cos(A*t)+R*cos(1+A)*t;
y:=(1+A)*sin(A*t)+R*sin(1+A)*t;
circle(trunc(x*20+300),trunc(y*20+300),2);
t:=t+0.01;
end;
close(l);
end.
Приложение Д.
Код программы к заданию 5
Program А5;
Uses Crt;
Const n=10;
Type kniga = record
Avtor, Nazvanie, Izdatel:string[20];
God:integer;
Stranizy:real;
end;
Var a : array[1..n] of kniga;
i :byte;
avt:string;
naz:string;
izd:string;
max:real;
g:integer;
begin
ClrScr;
for i:=1 to n do
with a[I] do
begin
Writeln('Введите автора ',I);
Readln(Avtor);
Writeln('Название книги');
Readln(Nazvanie);
Writeln('Издательство');
Readln(Izdatel);
Writeln('Год издания');
Readln(god);
Writeln('Кол-во страниц');
Readln(Stranizy);
end;
Writeln;
Writeln('Введите автора интересующей книги');
Readln(avt);
for i:=1 to n do
with a[I] do
if avtor=avt then writeln (avtor,' "',Nazvanie,'", ',izdatel,' ',god,'г. ',stranizy,'стр.');
Readln;
Writeln('Книга с наибольшим кол-ом страниц');
max:=0;
for i:=1 to n do
with a[I] do
if stranizy>max then begin
max:=stranizy;
naz:=Nazvanie;
end;
write(Naz,' ',max,'стр.');
Readln;
Writeln('Введите автора интересующей книги');
Readln(avt);
Writeln('Укажите год издания');
Readln(g);
Writeln('Укажите Издательство');
Readln(izd);
for i:=1 to n do
with a[I] do
if (avt=avtor) and (g=god) and (izd=Izdatel) then writeln('Книга "',Nazvanie,'", ',stranizy,'стр.');
Readln;
end.