Разработка программ с заданным вариантом - Курсовая работа

бесплатно 0
4.5 76
Различные способы обработки информации и программирование в среде Pascal. История создания языка. Блок схема с использованием заголовка функций задания. Описание подпрограмм. Сущность структурного программирования в аспекте написания алгоритмов программ.

Скачать работу Скачать уникальную работу

Чтобы скачать работу, Вы должны пройти проверку:


Аннотация к работе
Как и АЛГОЛ-60, он имеет блочную структуру, т. е. программы составляются из блоков, которые начинаются и оканчиваются словами BEGIN и END соответственно. Простые и гибкие операторы цикла WHILE и REPEAT и оператор варианта CASE, отмечает Вирт, обладают переработанной версией оператора цикла FOR (также заимствованным из АЛГОЛА) они позволяют программисту выразить все, что ему нужно путем использования вложенных иерархических структур, представляющих композиции этих операторов.Одним из достоинств языка ПАСКАЛЬ является то, что он воплотил в себе идею структурного программирования, суть которой заключается в том, что с помощью нескольких конструкций можно выразить в принципе любые алгоритмы. Следуя аксиоматической системе Хоара, язык ПАСКАЛЬ, очевидно, явился первым языком, для которого имеются программные средства, позволяющие доказывать правильность написанных программ.Краткость языка (некоторые называют его “спартанским” языком программирования), легкость программирования на нем, мобильность написанных программ, возможность эффективной реализации и пригодность с точки зрения формальных методов отладки программ обеспечили ПАСКАЛЮ успех в тех делах, для которых он предназначался. Вирт ввел много новшеств, в частности: изобрел синтаксические диаграммы, с помощью которых удобно представлять конструкции языка; ввел, очевидно, первый в алфавит языка квадратные скобки; высказал идею решения проблемы переносимости программ в виде пи-систем (P-system), которая заключается в том, что написанные на ПАСКАЛЕ программы транслируются в пи-код (p-code) - в машинный язык некоторой идеальной машины а затем интерпретируется на реальных машинных языках.Опыт использования языка ПАСКАЛЬ выявил ряд недостатков. Ассигнуем файл f с внешним файлом r1.txt. файл f5 открываем для записи, а файл f для чтения.

Введение
Язык программирования ПАСКАЛЬ (PASCAL) получил свое название не от сокращения каких-то слов, как другие языки: он назван так в честь великого французского математика и физика Блеза Паскаля, который в 1642 г. изобрел счетную машину для арифметических операций - паскалево колесо, как назвали ее современники. История создания языка начинается с 1965 г., когда Международная федерация по обработке информации (IFIP) предложила нескольким специалистам в области информатики принять участие в разработке нового языка программирования - преемника АЛГОЛА-60. Среди них был швейцарский ученый, работавший в то время доцентом на факультете информатики Стэнфордского университета Никалаус Вирт, который принял участие в разработке проекта языка под названием АЛГОЛ-W. И хотя IFIP отклонила этот проект (был принят проект АЛГОЛ-68 - автор Аад ван Вейнгаартен), Никалаус Вирт по возвращению в Швейцарию в 1967 г. не прекратил работу по созданию нового языка. В результате этой работы в конце 1968 г. профессор Вирт и его сотрудники из Швейцарского федерального института технологии (ETH) в Цюрихе разработали первую версию ПАСКАЛЯ, а спустя два года - первый вариант компилятора.

В 1971 г. Н. Вирт выпустил описание своего языка. В связи с появившимся интересом у широкого круга пользователей, а также с учетом первых оценок и апробаций 1974 г. разработана новая версия языка ПАСКАЛЬ. В следующем году опубликовано руководство для пользователей ПАСКАЛЯ, которое по словам Н. Вирта, вполне можно рассматривать как стандартное определение языка. Создавая ПАСКАЛЬ, Н. Вирт преследовал две цели: во-первых, разработать язык, пригодный для обучения программированию как систематической дисциплине; во-вторых, реализация языка должна быть эффективной и надежной на существующих вычислительных машинах. Как и всякий преемник, ПАСКАЛЬ наследовал многие черты основного предшественника и некоторых других. Как и АЛГОЛ-60, он имеет блочную структуру, т. е. программы составляются из блоков, которые начинаются и оканчиваются словами BEGIN и END соответственно.

Операторы языка ПАСКАЛЬ, как и в АЛГОЛЕ-60, разделяются между собой точкой с запятой. Аналогично АЛГОЛУ и ФОРТРАНУ в языке имеется оператор перехода, а оператор варианта выполняет те же функции, что и переключатель в АЛГОЛЕ или вычисляемый оператор перехода в ФОРТРАНЕ. Простые и гибкие операторы цикла WHILE и REPEAT и оператор варианта CASE, отмечает Вирт, обладают переработанной версией оператора цикла FOR (также заимствованным из АЛГОЛА) они позволяют программисту выразить все, что ему нужно путем использования вложенных иерархических структур, представляющих композиции этих операторов.Одним из достоинств языка ПАСКАЛЬ является то, что он воплотил в себе идею структурного программирования, суть которой заключается в том, что с помощью нескольких конструкций можно выразить в принципе любые алгоритмы. “Структурное программирование нацелено на алгоритмический аспект написания программ”, - пишет К. Кристиан.Другие достоинства языка были предопределены двумя основополагающими статьями профессора Ч. Хоара, опубликованными на рубеже 60-70-х годов: “О структурной организации данных” и “Аксиоматическая основа программирования для вычислительных машин”.Суть первой состоит в том, что “данные прежде всего представляют собой абстракции реальных объектов и их предпочтительно рассматривать как некоторые абстрактные образования со структурами, не обязательно предусмотренными в общераспространенных языках программирования”. Язык ПАСКАЛЬ, воплотивший концепции данной статьи, содержат богатый набор различных типов данных и является первым языком, имеющим в этом наборе не числовой тип данных - тип перечисления. Во второй статье показано, что ” программы поддаются точному анализу, основанному на строгих математических рассуждениях”. В 1973 г. Хоар и Вирт создали аксиоматическое описание для большей части семантически языка ПАСКАЛЬ. Следуя аксиоматической системе Хоара, язык ПАСКАЛЬ, очевидно, явился первым языком, для которого имеются программные средства, позволяющие доказывать правильность написанных программ.Краткость языка (некоторые называют его “спартанским” языком программирования), легкость программирования на нем, мобильность написанных программ, возможность эффективной реализации и пригодность с точки зрения формальных методов отладки программ обеспечили ПАСКАЛЮ успех в тех делах, для которых он предназначался. При создании и совершенствовании языка ПАСКАЛЬ Н. Вирт ввел много новшеств, в частности: изобрел синтаксические диаграммы, с помощью которых удобно представлять конструкции языка; ввел, очевидно, первый в алфавит языка квадратные скобки; высказал идею решения проблемы переносимости программ в виде пи-систем (P-system), которая заключается в том, что написанные на ПАСКАЛЕ программы транслируются в пи-код (p-code) - в машинный язык некоторой идеальной машины а затем интерпретируется на реальных машинных языках.Опыт использования языка ПАСКАЛЬ выявил ряд недостатков. В языке отсутствовали многие известные конструкции, такие, как: динамические массивы; возможность задания локальных переменных; понятие отдельно транслируемого модуля, затруднившие тем самым создание больших программ; операция возведения в степень; возможность включения в программу участков, написанных на машинном языке, и т. д. Одни программисты могли продолжить список недостатков ПАСКАЛЯ, другие возразить, что некоторые недостатки в их реализации отсутствуют. Такой разнобой мнений, как пишет О. Перминов, свидетельствует о том, что долгое время отсутствовал документ, который бы точно фиксировал состав и правила выполнения и правила выполнения языка. Такой документ появился только в 1982 г. - международный стандарт ISO на язык ПАСКАЛЬ. Этот стандарт соответствует авторскому “стандартному определению” язык, изложенному в книге Йенсена и Вирта “ПАСКАЛЬ. Руководство для пользователя и описание языка”, но дает более полное и строгое описание некоторых деталей, опущенных в руководстве.

Первый компилятор с языка ПАСКАЛЬ был реализован в ЕТН для ЭВМ семейства CDC-6000. В дальнейшем появились компиляторы ПАСКАЛЯ для других типов ЭВМ, и к начале 80-х годов число этих типов (зарубежных и отечественных) достигло сотни. Кроме авторской версии, стали появляться различные его расширения и диалекты, среди которых можно отметить такие, как УКСД-ПАСКАЛЬ, Эппл-ПАСКАЛЬ, ПАСКАЛЬ-80, Турбо-ПАСКАЛЬ, Квик-ПАСКАЛЬ.УКСД-ПАСКАЛЬ (UCSD-PACKAL; UCSD-Universiti of California, San Diego) был разработан сотрудником Калифорнийского университета в Сан-Диего К. Бауэлсом УКСД-ПАСКАЛЬ является расширением стандартного определения языка и предназначен главным образом для мини- и микро-ЭВМ.Эппл-ПАСКАЛЬ (Apple-PASCAL), разработанный для персональных компьютеров “Apple”, по существу, является модификацией УКСД-ПАСКАЛЯ, однако в нем имеются дополнительные средства, в частности средства для графического отображения.

Технические задания

Задание 1.

1) Вычислить yi=2 sin(xi) a; здесь i=1,8. Массив x вводится из файла f1. a меняется от -3 шагом 0,5. Массив y записать в файл f2.

2) Вычислить P=Q(3,8)*x(8); Z=y(8)*R(8,3);

Матрица Q вводится из файла f3. Матрица R вводится из файла f4.Результаты матрицы P и Z добавляются в файл f1.

3) Записать в файл f5 все элементы, большие 2,5 последовательно из массивов x,y,p,z. Найти количество элементов файла f5.

Задание 2.

В файле a1 набран текст.

1) Для каждого символа заданного текста указать, сколько раз он встречается в тексте. Сообщение об одном символе должно печататься не более одного раза. Буквы расположить по алфавиту.

2) Вывести все символы, которые встречаются во второй половине текста.

3) Вывести латинскую букву, которая встречается в тексте чаще остальных в 1 и 2 строках.

4) Результаты вывести в конец файла a1.

Задание 3. а. Создать файл, содержащий сведения о количестве изделий, собранных сборщиками цеха за неделю. Каждая запись содержит поля: фамилия сборщика, количество изделий, собранных им ежедневно в течение шестидневной недели, т.е. раздельно - в понедельник, вторник и т.д. Количество записей - произвольное. б. Написать программу, выдающую на печать следующую информацию: фамилию сборщика и общее количество деталей, собранное им за неделю; фамилию сборщика, собравшего наибольшее число изделий, и день, когда он достиг наивысшей производительности труда.

Информационный поток задания 1

№ П/П Файл Тип файла Исходные данные Результат

1.1 F1 F2 Text Text X(8) ------- ------- Y(8)

1.2 F1 F2 F3 F4 Text Text Text X(8) Y(8) Q(3,8) R(8,3) X(8); Q(3,8); R(8,3) ------- ------- -------

1.3 F1 F2 F3 F4 F5 Text Text Text Text Text X(8);Q(3,8);R(8,3) Y(8); -------- -------- ------- ------- ------- ------- kol

Укрепленное задание : блок-схема задания-1

Блок схема с использованием заголовка функций задания-1

Описание подпрограмм задания-1

1) Заголовок процедуры: procedure wwod_vec(name:string;n:byte;var x:vect)

П/П считывает элементы массива X[i] из файла f;

Постановка задачи: Ассигнуем файловую переменную f с физическим файлом r1.txt. Открываем файл для чтения. Считываем поэлементно значения файла. Закрываем физический файл F.

Исходные данные: X,I, F.

Результат: нет.

2) Заголовок процедуры: procedure slog(x:vect;n:byte;var y:vect)

П/П с помощью выражения y[i]:=2*sin(x[i]) a находит элементы массива y[i].

Постановка задачи: Переменной a присвоили начальное значение -3; открыли цикл для i от 1 до n. Пока цикл не закончится переменная a будет меняться с шагом 0,5. Этого мы добились с помощью выражения a:=a 0.5. При каждом повторе цикла в вектор y[i] будет вводится новое значение.

Исходные данные: b,x,I,n,y;

Результат: образование массива y[i];

3) Заголовок процедуры: procedure wiwod(x:vect;n:byte;name:string)

П/П записывает y[i] в файл F2;

Постановка задачи: Открыли цикл для i от 1 до n. Пока будет повторяться данный цикл, в файл f2 будет вводится новое значение. По окончания цикла y[i] будет заполнен 10 элементами.

Результат: нет.

Исходные данные: y[i];

4) Заголовок процедуры: procedure vwod_vec(name:string;n:byte;var x:vect)

П/П читает элементы матрицы с файла f3.

Постановка задачи: Ассигнуем файловую переменную f3 с физическим файлом r3.txt. Открываем файл для чтения. Считываем поэлементно значения файла. Закрываем физический файл F3.

Результат: нет;

Исходные данные: Q[I,j], r3.txt.

5) Заголовок процедуры: procedure umn_mv(q:matr;x:vect;n,m:byte;var c:vect)

П/П перемножает массив с вектором и образует матрицу Z.

Постановка задачи: Открываем 2 цикла цикла. Один для i, а другой до J. С помощью этих циклов мы читаем матрицу и вектор. Перемножаем их между собой и получаем матрицу z. Z:=z q[j,i]*x[i].

Результат: нет.

Исходные данные: q[j,i],x[i].

6) Заголовок процедуры: procedure umn_vm(y:vect;r:matr;n,m:byte;var c:vect)

П/П перемножает массив с вектором и образует матрицу P.

Постановка задачи: Открываем 2 цикла цикла. Один для i, а другой до J. С помощью этих циклов мы читаем матрицу и вектор. Перемножаем их между собой и получаем матрицу Р. P:=p y[i]*r[I,j];

Результат: нет;

Исходные данные: r[i,j], y[i].

7) Заголовок процедуры: procedure dobav(x:vect;n:byte;name:string)

П/П добавляет элементы матриц z,p в файл f.

Постановка задачи: Ассигнуем файловую переменную f3 с физическим файлом r3.txt. Открываем файл для записи с помощью оператора append. Этот оператор поможет нам сохранить элементы всех массивови избежать их удаления из файла. Далее записываем его в файл f.

Результат: нет.

Исходные данные: f,x.

8) Заголовок процедуры: procedure prov(name:string;n:byte;var a:vect)

Постановка задачи: П/П выбирает все элементы большие 2,5 и записывает их в файл f5.

Ассигнуем файл f5с внешним файлом r4.txt. Ассигнуем файл f с внешним файлом r1.txt. файл f5 открываем для записи, а файл f для чтения. Пока не закончится файл f, если x[i]>2,5, то x[i] записываем в файл f5. Тоже самое делаем и с y[i].

Результат: нет.

Исходные данные: Y[i], x[i],f1,f2,f5;

9) Заголовок процедуры: function kol(name:string):integer;

П/П находит количество элементов в файле f5.

Постановка задачи: Пока не закончился файл f5 считать количество элементов находящиеся в нем. Этого мы добились с помощью выражения k:=k 1;

Отладка подпрограмм задания-1

Подпрограмма №1: procedure wwod_vec(name:string;n:byte;var x:vect);

var i:byte;

f:text;

begin assign (f,"m1.txt");

reset (f);

for i:=1 to n do read (f,x[i]);

close (f);

end;

Подпрограмма №2: procedure slog(x:vect;n:byte;var y:vect);

var i:byte;

a:real;

begin a:=-3;

for i:=1 to n do begin y[i]:=2*sin(x[i]) a;

a:=a 0.5;

end;

end;

Подпрограмма №3: procedure wiwod(y:vect;n:byte;name:string);

var i:byte;

f2:text;

begin assign(f2,"r2.txt");

rewrite(f2);

for i:=1 to n do write (f2,y[i]:7:1);

close (f2);

end;

Подпрограмма №4: procedure vwod_vec(name:string;n:byte;var x:vect);

var i:byte;

f:text;

begin assign (f,"r1.txt");

reset (f);

for i:=1 to n do read (f,x[i]);

close (f);

end;

Подпрограмма №5: procedure wwod_matr(name:string;n,m:byte;var q:matr);

var i,j:byte;

f:text;

begin assign (f,"r1.txt");

reset (f);

for i:=1 to n do for j:=1 to m do read (f,q[i,j]);

close (f);

end;

Подпрограмма №6: procedure umn_mv(q:matr;x:vect;n,m:byte;var c:vect);

var i,j:byte;

z:real; s:real;

begin for i:=1 to n do begin s:=0;

for j:=1 to m do z:=z q[i,j]*x[j];

c[i]:=s;

end;

end;

Подпрограмма №7: procedure umn_vm(y:vect;r:matr;n,m:byte;var c:vect);

var i,j:byte;

p:real;

begin for i:=1 to n do begin p:=0;

for j:=1 to m do p:=p y[j]*r[j,i];

c[i]:=p;

end;

end;

Подпрограмма №8: procedure dobav(x:vect;n:byte;name:string);

var i:byte;

f:text;

begin assign (f,"m1.txt");

append(f);

writeln(f);

for i:=1 to n do write (f,x[i]:5:1," ");

close (f);

end;

Подпрограмма №9: procedure prov(name:string;n:byte;var x:vect) ;

var i:byte;

f,f5,f2:text;

begin assign(f2,"r2.txt"); reset(f2);

assign (f5,"r4.txt");

assign (f,"r1.txt");

append (f5);

writeln(f5);

reset (f);

while not eof(f) do begin read (f,x[i]);

if (x[i]>2.5) then write(f5,x[i]:5:1," ");

end;

close (f);

close (f5);

append(f5);

while not eof(f2) do begin if y[i]>2.5 then writeln(f5," ",y[i]:1:1); end;

end;

Подпрограмма №10: function kol(name:string):integer;

var l:real;

k:byte;

f:text;

begin k:=0;

assign (f5,"r4.txt");

reset (f5);

while not eof (f5) do begin read (f5,l);

k:=k 1;

end;

kol:=k;

close (f5);

end;

Основная программа задания-1

Program Turkey;

type vect=array [1..10] of real;

matr=array [1..10,1..3] of real;

var x,y:vect; w:integer; f5:text; q,r:matr; p,z:vect;

procedure wwod_vec(name:string;n:byte;var x:vect);

var i:byte;

f:text;

begin assign (f,"r1.txt");

reset (f);

for i:=1 to n do read (f,x[i]);

close (f);

end;

procedure slog(x:vect;n:byte;var y:vect);

var i:byte;

a:real;

begin a:=-3;

for i:=1 to n do begin y[i]:=2*sin(x[i]) a;

a:=a 0.5;

end;

end;

procedure wiwod(y:vect;n:byte;name:string);

var i:byte;

f2:text;

begin assign(f2,"r2.txt");

rewrite(f2);

for i:=1 to n do write (f2,y[i]:7:1);

close (f2);

end;

procedure vwod_vec(name:string;n:byte;var x:vect);

var i:byte;

f:text;

begin assign (f,"r1.txt");

reset (f);

for i:=1 to n do read (f,x[i]);

close (f);

end;

procedure wwod_matr(name:string;n,m:byte;var q:matr);

var i,j:byte;

f:text;

begin assign (f,"r1.txt");

reset (f);

for i:=1 to n do for j:=1 to m do read (f,q[i,j]);

close (f);

end;

procedure umn_mv(q:matr;x:vect;n,m:byte;var c:vect);

var i,j:byte;

z:real; s:real;

begin for i:=1 to n do begin s:=0;

for j:=1 to m do z:=z q[i,j]*x[j];

c[i]:=s;

end;

end;

procedure umn_vm(y:vect;r:matr;n,m:byte;var c:vect);

var i,j:byte;

p:real;

begin for i:=1 to n do begin p:=0;

for j:=1 to m do p:=p y[j]*r[j,i];

c[i]:=p;

end;

end;

procedure dobav(x:vect;n:byte;name:string);

var i:byte;

f:text;

begin assign (f,"r1.txt");

append(f);

writeln(f);

for i:=1 to n do write (f,x[i]:5:1," ");

close (f);

end;

procedure prov(name:string;n:byte;var x:vect) ;

var i:byte;

f,f5,f2:text;

begin assign(f2,"r2.txt"); reset(f2);

assign (f5,"r4.txt");

assign (f,"r1.txt");

append (f5);

writeln(f5);

reset (f);

while not eof(f) do begin read (f,x[i]);

if (x[i]>2.5) then write(f5,x[i]:5:1," ");

end;

close (f);

close (f5);

append(f5);

while not eof(f2) do begin if y[i]>2.5 then writeln(f5," ",y[i]:1:1); end;

end;

function kol(name:string):integer;

var l:real;

k:byte;

f:text;

begin k:=0;

assign (f5,"r4.txt");

reset (f5);

while not eof (f5) do begin read (f5,l);

k:=k 1;

end;

kol:=k;

close (f5);

end;

begin wwod_matr ("r3.txt",3,10,q);

wwod_vec ("r1.txt",10,x);

umn_mv (q,x,3,10,p);

dobav(p,3,"r1.txt");

wwod_matr ("r4.txt",10,3,r);

wwod_vec ("r2.txt",10,y);

umn_vm (y,r,3,10,z);

dobav (z,3,"r1.txt");

wwod_vec("r1.txt",10,x);

slog (x,10,y);

wiwod (y,10,"r2.txt");

prov ("r1.txt",10,x);

prov ("r2.txt",10,y);

w:=kol("r4.txt");

assign(f5,"r4.txt");

append(f5);

writeln(f5,"kolichestvo vseh elementov=",w:2);

close(f5);

end.

Результаты работы задания-1

Файл r1.txt:

Файл r2.txt:

Файл r3.txt:

Файл r4.txt:

Информационный поток Задания 2

Файл Содержимое файла до начала выполнения программы Содержимое файла после выполнения программы

Р1.txt Текст Текст

Р2.txt - Количество каждого символа, встречающего в тексте. Все символы, которые встречаются во второй половине текста Латинские буквы, встречающиеся в тексте чаще остальных в 1 и 2 строках.

Файл Содержимое файла до начала выполнения программы Содержимое файла после выполнения программы

Р1.txt 13234225476 , . FDFDGGGC 2 13234225476 , . FDFDGGGC

Р2.txt - --->4 ,--->1 .--->1 1--->1 2--->3 3--->2 4--->3 5--->1 6--->1 7--->1 C--->2 D--->3 F--->2 G--->3 Vtoraya polovina , . FDFDGGGC Lat bukv C 1 D 2 F 2 G 3

Укрупненная блок-схема Задания 2

1. Блок схема с использованием заголовка функций задания-2...

Описание подпрограмм задания-2

Заголовок функции: procedure z2_1(b:byte);

Постановка задачи: ассигнуем файловые переменные f и fn с физическими файлами p1.txt и p2.txt. Файл p1.txt открываем для чтения. Файл p2.txt открываем для записи. Считаем количество символов в тексте. Закрываем физические файлы f и fn.

Исходные данные: B.

Результат: нет.

Заголовок функции: procedure z2_2 (name1,name2:string)

Постановка задачи: П/п выводит все символы второй половины текста в файл name2, считанного из файла name1.

Исх. дан.: name1,name2

Рез.: нет

Заголовок функции: procedure z2_3 (name1,name2:string)

Постановка задачи: П/п выводит заглавные буквы латинского алфавита из файла с именем name1, считает их количество и записывает в файл с именем name2.

Исх. дан.: name1,name2

Рез.: нет

Отладка подпрограмм задания-2

Заголовок функции: procedure z2_1(b:byte);

Постановка задачи: ассигнуем файловые переменные f и fn с физическими файлами p1.txt и p2.txt. Файл p1.txt открываем для чтения. Файл p2.txt открываем для записи. Считаем количество символов в тексте. Закрываем физические файлы f и fn.

Исходные данные: B.

Результат: нет.

Программа для отладки: Program Turkey;

procedure z2_1(b:string);

var i,n:byte;

x:array[1..2,1..255]of byte;

c:char;

f,fn:text;

begin assign(f,"p1.txt");

assign(fn,"p2.txt");

reset(f);

rewrite(fn);

for i:=1 to 255 do x[1,i]:=i;

for i:=91 to 96 do x[1,i-10]:=i;

for i:=123 to 127 do x[1,i-50]:=i;

for i:=176 to 255 do x[1,i-97]:=i;

for i:=240 to 255 do x[1,i-144]:=i;

for i:=1 to 141 do x[2,i]:=0;

while not eof(f) do begin read(f,c);

n:=ord(c);

x[2,n]:=x[2,n] 1;

end;

writeln(fn,"”количество символов в текст”");

for i:=1 to 141 do if x[2,i]0 then writeln(fn,chr(x[1,i]),"--->",x[2,i]," ");

close(f);

close(fn);

end;

begin z2_1("p2.txt");

end. программирование язык pascal

Исходный файл p1.txt

Результаты, полученные ПК в файле P2.txt

Результаты, полученные вручную

--->4

,--->1

.--->1

1--->1

2--->3

3--->2

4--->3

5--->1

6--->1

7--->1

C--->2

D--->3

F--->2

G--->3

Список литературы
Поскольку результаты, полученные ПК в файле p2.txt, совпадают с результатами полученными вручную, можно предположить, что программа работает правильно.

Заголовок функции: procedure z2_2 (name1,name2:string)

Постановка задачи: П/п выводит все символы второй половины текста в файл name2, считанного из файла name1.

Исх. дан.: name1,name2

Рез.: нет

Программа для отладки: procedure z2_2(name1,name2:string);

var f1,f2:text; k,i:integer;

ch:char;

begin

{Присваеваем файловым переменным конкретные файлы на диске} assign(f1,name1);

assign(f2,name2);

{Открываем файл f1 для чтения, а файл f2 для добавления} reset(f1); append(f2);

k:=0;

while not eof(f1) do begin read(f1,ch);

k:=k 1;

end;

close(f1);

reset(f1);

k:=k div 2;

for i:=1 to k do read(f1,ch);

writeln(f2);

while not eof(f1) do begin read(f1,ch);

write(f2,ch);

end;

close(f1);

close(f2);

end;

begin z2_2 ("p1.txt","p2.txt") end.

Исходный файл p1.txt

Результаты, полученные ПК в файле P2.txt

Результаты, полученные вручную

, .FDFDCDGGGC

Вывод: Поскольку результаты, полученные ПК в файле p2.txt, совпадают с результатами полученными вручную, можно предположить, что программа работает правильно.

Заголовок функции: procedure z2_3 (name1,name2:string)

Постановка задачи: П/п выводит заглавные буквы латинского алфавита из файла с именем name1, считает их количество и записывает в файл с именем name2.

Исх. дан.: name1,name2

Рез.: нет

Программа для отладки: program z2_3;

procedure z2_3 (name1,name2:string);

var kol:array ["A".."Z"] of integer;

x:char;

m:string;

n:byte; f,f2: text;

begin assign(f,"p1.txt");

assign(f2,"p2.txt");

reset(f);

rewrite(f2);

read(f,m);

for x:="A" to "Z"do kol[x]:=0;

for n:=1 to length(m) do begin x:=m[n];

if (x>="A") and (x<="Z") then kol[x]:=kol [x] 1 end;

for x:="A" to "Z" do if kol[x]0 then writeln(f2,x," " ,kol[x]:2);

close(f);

close(f2);

end;

begin z("p1.txt","p2.txt");

end.

Исходный файл p1.txt

Результаты, полученные ПК в файле P2.txt

Результаты, полученные вручную

C 2

D 3

F 2

G 3

Вывод: Поскольку результаты, полученные ПК в файле p2.txt, совпадают с результатами полученными вручную, можно предположить, что программа работает правильно.

Основная программа задания 3 procedure z2_1(b:byte);

var i,n:byte;

x:array[1..2,1..255]of byte;

c:char;

f,fn:text;

begin assign(f,"p1.txt");

assign(fn,"p2.txt");

reset(f);

rewrite(fn);

for i:=1 to 255 do x[1,i]:=i;

for i:=91 to 96 do x[1,i-10]:=i;

for i:=123 to 127 do x[1,i-50]:=i;

for i:=176 to 255 do x[1,i-97]:=i;

for i:=240 to 255 do x[1,i-144]:=i;

for i:=1 to 141 do x[2,i]:=0;

while not eof(f) do begin read(f,c);

n:=ord(c);

x[2,n]:=x[2,n] 1; end;

writeln(fn,"simvol v tekste");

for i:=1 to 141 do if x[2,i]0 then writeln(fn,chr(x[1,i])," - ",x[2,i]," ","raz(a)");

close(f);

close(fn);

end;

procedure z2_2(name1,name2:string);

var f1,f2:text; k,i:integer;

ch:char;

begin assign(f1,name1);

assign(f2,name2);

reset(f1); append(f2);

k:=0;

while not eof(f1) do begin read(f1,ch);

k:=k 1;

end;

close(f1);

reset(f1);

k:=k div 2;

for i:=1 to k do read(f1,ch);

writeln(f2);

while not eof(f1) do begin read(f1,ch);

write(f2,ch);

end;

close(f1);

close(f2);

end;

procedure z2_3 (name1,name2:string);

var kol:array ["A".."Z"] of integer;

x:char;

m:string;

n:byte; f,f2: text;

begin assign(f,"p1.txt");

assign(f2,"p2.txt");

reset(f);

rewrite(f2);

read(f,m);

for x:="A" to "Z"do kol[x]:=0;

for n:=1 to length(m) do begin x:=m[n];

if (x>="A") and (x<="Z") then kol[x]:=kol [x] 1 end;

for x:="A" to "Z" do if kol[x]0 then writeln(f2,x," " ,kol[x]:2);

close(f);

close(f2);

end.

Основная программа задания 3

Program Turkey;

uses crt;

type ceh=record fam:string;

po,vt,sr,ch,p,sub:integer;

end;

var p,i,n,k,j,x,u:integer;

z:string;

f:text;

l:array[1..7] of integer;

s:array [1..7] of ceh;

begin clrscr;

assign (f,"z:\f.txt");

rewrite(f);

writeln ("vvedite kol-vo sborshikov");

readln (n);

for i:=1 to n do begin with s[i] do begin writeln ("vvedite familiyu sborshika");

readln (fam);

writeln (f,"familiya sborshika:",s[i].fam);

writeln ("vvedite kol-vo izdelii sobranih v ponedelnik");

readln (po);

writeln (f,"kol-vo sobrannih izdelii v ponedelnik:");

writeln (f,s[i].po);

writeln ("vvedite kol-vo izdelii sobranih vo vtornik");

readln (vt);

writeln (f,"kol-vo sobrannih izdelii vo vtornik:");

writeln (f,s[i].vt);

writeln ("vvedite kol-vo izdelii sobranih v sredu");

readln (sr);

writeln (f,"kol-vo sobrannih izdelii v sredu:");

writeln (f,s[i].sr);

writeln ("vvedite kol-vo izdelii sobranih v chetverg");

readln (ch);

writeln (f,"kol-vo sobrannih izdelii v chetverg:");

writeln (f,s[i].ch);

writeln ("vvedite kol-vo izdelii sobranih v pyatnicu");

readln (p);

writeln (f,"kol-vo sobrannih izdelii v pyatnicu:");

writeln (f,s[i].p);

writeln ("vvedite kol-vo izdelii sobranih v subbotu");

readln (sub);

writeln (f,"kol-vo sobrannih izdelii v subbotu:");

writeln (f,s[i].sub);

l[i]:=s[i].po s[i].vt s[i].sr s[i].ch s[i].p s[i].sub;

writeln (f);

end;

end;

close(f);

clrscr;

reset(f);

append(f);

writeln ("vvedite familiyu");

readln (z);

writeln(f);

writeln (f,z,":");

for i:=1 to n do if z=s[i].fam then x:=s[i].po s[i].vt s[i].sr s[i].ch s[i].p s[i].sub;

writeln (x);

writeln (f,"Obshee kol-vo sobrannih izdelii:",x);

close(f);

reset(f);

append(f);

for i:=1 to n do if l[i]>p then begin p:=l[i];

writeln(f);

writeln (f,"familiya sborshika sobravshego naibolshee chislo izdelii:",s[i].fam);

writeln (f,"kol-vo izdelii:",p);

close(f);

end;

end.

Результаты работы задания 3:

Заключение

В данной курсовой работе были рассмотрены различные способы обработки информации и программирования на языке Turbo Pascal. В программе были использованы различные типы данных (целый, строковый, файловый, символьный), были рассмотрены методы современной технологии программирования (метод пошаговой детализации, структурный метод, модульный принцип, метод иерархической декомпозиции).

В ходе выполнения курсовой работы были приобретены навыки создания программ на языке программирования Turbo Pascal. При разработке программ были использованы различные типы алгоритмов: линейные, разветвляющиеся, циклические.

В курсовой работе была разработана программа с учетом следующих потребительских свойств: - функциональная полнота программы;

- комфорт в эксплуатации (удобство и простота работы с программой);

- простота в обучении программы;

- надежность программы.

Для простоты написания программ в курсовой работе использовался модульный принцип программирования. Модуль в отличие от программы не может быть запущен на выполнение самостоятельно: он может только использоваться в программах или других модулях. Модули предварительно компилируются независимо от использующей их программы. Наличие модулей в Turbo Pascal позволяет программировать и отлаживать программу по частям, создавать библиотеки подпрограмм и данных, воспользоваться возможностями стандартных модулей практически неограниченно, увеличивать кодовую часть программы.

Список использованной литературы

2. Семакин И.Г., Шестаков А.П. Основы программирования.

3. Программное обеспечение МИКРОЭВМ. Практическое пособие П78 для инж-пед. Работников системы проф.-техн. Образования. В 11-ти книгах/Под ред. В. Ф. Шальгина. Кн. 7.Программирование на языке ПАСКАЛЬ/В. Ф. Шальгин, Л. М. Поддубная, Ю. С. Голубев-Новожилов. - М.:Высш. шк., 2008.-126 с.:ил.

4. Пильщиков В.Н. Сборник упражнений по языку Паскаль. - М.: Наука, 1989. - 160 с.

5. Бутомо И.Д., Самочадин А.В., Усанова Д.В. Программирование на алгоритмическом языке Паскаль. - Л.: Издательство Ленинградского университета, 2014. - 216 с.

Размещено на

Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность
своей работы


Новые загруженные работы

Дисциплины научных работ





Хотите, перезвоним вам?