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

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 18.01.2016
Размер файла 331,9 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

по дисциплине:

«Программирование на языке высокого уровня»

на тему:

«Разработка программ с заданным вариантом»

Аннотация

В данной курсовой работе рассматриваются различные способы обработки информации и программирование в среде Pascal.

В программах использованы следующие тины данных: integer, string, real, text, ceh.

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

Введение

Язык программирования ПАСКАЛЬ (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.

программирование язык рascal

Исходный файл 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 с.

Размещено на Allbest.ru


Подобные документы

  • Строгая типизация и наличие средств структурного (процедурного) программирования императивного языка Pascal. Структура программы, выражения, строки. Правила и описание типов, процедур и функций, операторов ввода - вывода, модулей и подпрограмм.

    курсовая работа [37,3 K], добавлен 28.06.2008

  • Решение задач прикладного программирования. Оформление разработанных алгоритмов в виде графических схем. Написание программ с использованием подпрограмм, их отладка. Блок-схемы и листинг программ. Наборы тестов для отладки разработанных программ.

    курсовая работа [575,8 K], добавлен 06.12.2013

  • Изучение функций и возможностей среды разработки языка программирования Pascal. Рассмотрение работы с одномерными и двумерными массивами, со строками и числами. Математическая формулировка задач. Разработка алгоритмов, описание структуры программ.

    курсовая работа [879,8 K], добавлен 11.02.2016

  • Приемы работы с инструментальной средой программирования С++. Кодирование арифметических и логических выражений с использованием стандартных библиотечных функций ввода, вывода в С++. Описание переменной вещественного типа в языке программирования С++.

    лабораторная работа [137,9 K], добавлен 13.06.2014

  • История создания и развитие языка программирования Pascal, его версии. Особенности и порядок построения графика функции на языке Turbo Pascal с использованием декартовой системы координат. Блок схема алгоритма процедур, листинг и тестирование программы.

    курсовая работа [102,7 K], добавлен 23.12.2011

  • Рассмотрение правил записи, способов ввода и вывода, использования функций обработки символьных данных в Pascal. Описание алгоритмизации и программирования файловых структур данных, проектирования структуры файла. Ознакомление с работой данных массива.

    курсовая работа [336,2 K], добавлен 27.06.2015

  • Изучение языка программирования QBasic с позиций структурного подхода с целью выработки правильных навыков составления программ. Предварительный анализ сложной задачи с целью разбития её на отдельные простые части. Детализация и составление подпрограмм.

    учебное пособие [11,7 K], добавлен 11.10.2011

  • Основные методы структурного программирования. Методы половинного деления, Крамера, прямоугольников. Применение языка программирования Turbo Pascal 7.0. Решение системы линейных алгебраических уравнений. Описание стандартных и не стандартных функций.

    курсовая работа [376,8 K], добавлен 14.01.2015

  • Характеристика предприятия ТОО "Com Sales Group". Составление программ на языке программирования. Составление алгоритмов, разработка численных методов решения задач. Методы откладки программ. Анализ технологии машинной обработки экономической информации.

    отчет по практике [1,3 M], добавлен 19.04.2016

  • Проектирование программ в среде Рascal с интерфейсом типа "Меню". Разработка и отладка программы сортировки массива данных. Освоение методов проектирования Pascal-программ с использованием графических процедур и функций из стандартного модуля Graph.

    контрольная работа [581,1 K], добавлен 16.01.2015

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