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

Характеристика и особенности языка программирования высокого уровня "Паскаль". Понятие и функции подпрограмм. Схема стадий пошаговой детализации методом иерархической декомпозиции. Укрупненные блок-схемы и описание программного обеспечения "MARAT".

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

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

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

2

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

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

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РФ

ДАГЕСТАНСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Кафедра ВТ

КУРСОВАЯ РАБОТА

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

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

Выполнил: студент 1 курса

группа 3141 спец.

ПоиВТ

Шихахмедов М. Э.

Приняла:Преподователь

Глебова Л.В.

г. Махачкала 2002 г.

ЗАДАНИЕ 1

1) Найти произведение

Х=Y(5,3)*Z(3,5) ; P=Z(3,5)*Y(5,3)

и результаты записать в файл p3.

Матрица Y вводится из файла p1. Матрица Z вводится из файла p2.

2) 2 столбец матрицы Y, 3 столбец матрицы Z и 4 столбец матрицы Х умножить на Р, где Р=max (суммы Х[i,j]; суммы Y[i,j]; суммы Z[i,j]).

3) Найти произведение ненулевых элементов каждой матрицы. Результаты записать в файл p4.

4) Листинг программы, исходных и преобразованных файлов.

ЗАДАНИЕ 2

а) В файл p1.txt набрать текст.

б) Сообщить сколько раз встречается в тексте каждая заглавная русская и латинская буквы.

ЗАДАНИЕ 3

а) Создать файл, содержащий сведения об отправлении поездов дальнего следования с казанского вокзала. Структура записи: номер поезда, станция назначения, время отправления, время пути, наличие билетов. Количество записей произвольное.

б) Написать программу, которая позволяет получить следующую справочную информацию:

· Время отправления поездов в город Х во временном интервале от А до Б часов, Наличие билетов на поезд с номером ХХХ.

АННОТАЦИЯ

Данный курсовой проект служит показателем, уровня программиста в написании программ на языке высокого уровня Turbo Pascal.

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

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

СОДЕРЖАНИЕ

Введение

Пояснительная записка

Информационная таблица

Стадии пошаговой детализации

Описание программы

Детализированная блок-схема

Описание модулей каждой подпрограммы

Текст программы

Руководство программиста (сведения необходимые для эксплуатации программы (руководство операторов))

Методика испытаний

Выполненные вручную

Полученные в процессе выполнения программы

Заключение

Список литературы

ВВЕДЕНИЕ

Язык программирования Pascal был разработан в 1968-1971 гг. Никлаусом Виртом в Цюрихском Институте информатики (Швейцария). Первоначальная цель разработки языка диктовалась необходимостью инструмента для обучения программированию как систематической дисциплине. Однако очень скоро обнаружилась чрезвычайная эффективность языка Pascal в самых разнообразных приложениях, от решения небольших задач численного характера до разработки сложных программных систем - компиляторов, баз данных, операционных систем и т.п. К настоящему времени Pascal принадлежит к группе наиболее распространенных и популярных в мире языков программирования. Существуют многочисленные реализации языка практически для всех машинных архитектур; разработаны десятки диалектов и проблемно-ориентированных расширений языка Pascal; обучение программированию и научно-технические публикации в значительной степени базируются на этом языке.

Характеристика и особенности языка

Существует ряд объективных причин, обусловивших выдающийся успех языка Pascal. Среди них в первую очередь необходимо указать следующие:

1. Язык в естественной и элегантной форме отразил важнейшие современные концепции технологии разработки программ: развитая система типов, ориентация на принципы структурного программирования, поддержка процесса пошаговой разработки.

2. Благодаря своей компактности, концептуальной целостности и ортогональности понятий, а также удачному первоначальному описанию, предложенному автором языка, Pascal оказался весьма легок для изучения и освоения. В противоположность громоздким многотомным описаниям таких языков, как PL/I, Cobol, FORTRAN, достаточно полное описание языка Pascal занимает около 30 страниц текста, а его синтаксические правила можно разместить на одной странице.

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

4. Pascal весьма технологичен для реализации практически для всех, в том числе и нетрадиционных, машинных архитектур. Утверждается, что разработка Pascal-транслятора почти не превышает по трудоемкости хорошую дипломную работу выпускника вуза". Благодаря этому для многих ЭВМ существует несколько различных реализаций языка, отражающих те или иные практические потребности программистов.

Язык Pascal стандартизован во многих странах. В 1983 году был принят международный стандарт (ISO 7185:1983).

Рассмотрим основные особенности языка Pascal.

1. Pascal является традиционным алгоритмическим языком программирования, продолжающим линию Algol-60. Это означает, что программа на языке Pascal представляет собой специально организованную последовательность шагов по преобразованию данных, приводящую к решению некоторой задачи. Это отличает Pascal от так называемых непроцедурных языков типа Prolog, по существу, представляющих собой формализмы для записи начальных условий некоторой задачи и синтезирующих решение посредством встроенных механизмов логического вывода.

2. Язык Pascal содержит удобные средства для представления данных. Развитая система типов позволяет адекватно описывать данные, подлежащие обработке, и конструировать структуры данных произвольной сложности. Pascal является типизированным языком, что означает фиксацию типов переменных при их описании, а также строгий контроль преобразований типов и контроль доступа к данным в соответствии с их типом (как на этапе компиляции, так и при исполнении программ).

3. Набор операторов языка Pascal отражает принципы структурного программирования и позволяет записывать достаточно сложные алгоритмы в компактной и элегантной форме. Pascal является процедурным языком с традиционной блочной структурой и статически определенными областями действия имен. Процедурный механизм сочетает в себе простоту реализации и использования и гибкие средства параметризации.

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

Понятие подпрограмм

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

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

Можно сказать, что понятие подпрограммы - элементарное средство повышения уровня" языка. Сосредоточив в одном месте программы подробное описание некоторых технических аспектов вычислений, в остальной программе достаточно указывать имена этих действий (своего рода операций, введенных программистом), не конкретизируя всякий раз их семантику.

Кроме задания последовательности действий, любая подпрограмма может содержать описания некоторой совокупности локальных объектов - констант, типов, переменных и т.д. Эти объекты предназначены для организации действий в подпрограмме и имеют смысл (то есть доступны или видимы) ТОЛЬКО ВНУТРИ даной подпрограммы.

Наконец, подпрограмма может быть разработана для различных случаев применения. Иными словами, перед выполнением подпрограммы можно передать ей некоторую информацию из точки вызова, настроив ее соответствующим образом. Такая "настройка" подпрограмм реализуется с помощью понятия параметров и способствует большей гибкости и универсальности подпрограммного механизма. Кроме того, явная передача информации через параметры ослабляет взаимную зависимость подпрограмм и точек их вызовов, что считается положительным фактором при разработке структурированных программ.

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

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

Информационная таблица

№ п/п

Файлы

До выполнения

После выполнения

1.1

p1

p2

p3

Y(5,3)

Z(3,5)

---

Y(5,3)

Z(3,5)

X(5,5), P(3,3)

1.2

p1

p2

p3

Y(5,3)

Z(3,5)

X(5,5), P(3,3)

Пр-н-Y(5,3)

Пр-н-Z(3,5)

Пр-н-X(5,5), P(3,3)

1.3

p1

p2

p3

p4

Y(5,3)

Z(3,5)

X(5,5), P(3,3)

---

Y(5,3)

Z(3,5)

X(5,5), P(3,3)

PY, PZ, PX, PP

Файл

Ввод с клавиатуры

Вывод на экран

2

P1.txt

---

Kolrus, kollat

3

Bazdan.txt

Time1, time2, time3, time4

N

Stanc, timo.hh, timo.mm

Stanc, num

Укрупненные блок-схемы

Задание 1.

Начало 26 39

15 28 40

16 29 41

17 30 42

18 31 43

19 32 44

20 33 45

21 34 Конец

22 35

23 36

24 37

25 38

Задание 2.

Начало

5

6

7

8

9

Конец

Задание 3.

Начало

5

6

7

8

9

Конец

ОПИСАНИЕ ПРОГРАММЫ

Программа под названием MARAT, выполнена на языке программирования высокого уровня Pascal, программное обеспечение, использованное при написании данной программы является Borland Pascal 7.0.

программирование паскаль язык иерархический

Детализированная блок-схема

Описание модулей для каждой подпрограммы

1) П/п П/п - подпрограмма вводит из файла name матрицу Q(k,j)

Исх. дан. Исх. дан. - исходные данные: name, k, j, Q

Рез. Рез. - результат:

procedure enter(name:string; k,j:byte; var Q:mas)

2) П/п умножает матрицу P(k,l) на матрицу O(l,k) и результат записывает файл name

Исх. дан.: name, k, l, p, o

Рез.:

procedure prv(name:string; k,l:byte; var p,o:mas)

3) П/п возвращает сумму элементов матрицы D(n,m)

Исх. дан.: n, m, d

Рез.:

Sum

function sum(n,m:byte; var d:mas):real

4) П/п возвращает максимальное данное из x,y,z

Исх. дан.: x, y, z

Рез.:

Pmax

function Pmax(x,y,z:real):real

5) П/п умножает столбец m матрицы X(n,h) на p и добавляет преобразованную матрицу в файл name

Исх. дан.: name, p, n, m, h, X

Рез.:

procedure UMN(name:string; p:real; n,m,h:byte; var x:mas)

6) П/п вводит матрицу из файла name, если logic=1 элементы матрицы находятся не на нулевой позиции, то переводит невидимый указатель на k позиций и считывает с k+1 позиции, после находит произведение ненулевых элементов, результат добавляет в файл name1

Исх. дан.: name, name1, k, n, m, logic

Рез.:

procedure prnot0(name,name1:string; k,n,m,logik:byte)

7) П/п определяет количество заглавных русских и латинских букв в файле name и выводит на экран

Исх. дан.: name

Рез.:

procedure kol_buk(name:string)

8) П/п вводит сведения из файла name и осуществляет поиск по введенным данным

Исх. дан.: name

Рез.:

procedure bazdan(name:string)

Подпрограммы интерфейса

Данные подпрограммы не имеют ссылок в блок-схеме, так как они служат лишь для упрощения управления программой пользователю, а на результаты не оказывают ни какого влияния.

1. П/п описывает размеры окна a, b, c, d, цвет фона e и цвет последующего текста f

Исх. дан.: a, b, c, d, e, f

procedure wind(a,b,c,d,e,f:byte)

2. П/п воспроизводит звуковой сигнал

Исх. дан.: --

Рез.:

procedure signal

Текст программы

program MARAT;

uses crt;

{Пользовательский тип определяющий массив}

type mas=array[1..5,1..5] of real;

time_o=record hh:0..23; mm:0..59; end;

time_p=record hh:0..23; mm:0..59; end;

poezd=record num:integer; stanc:string[40];

nalbil:boolean; timo:time_o; timp:time_p;

end;

{Строка описания переменных}

var y,z,x:mas; f,f1:text; Pm:real; chsim:char; i:integer;

{Процедура enter вводит из файла двухмерную матрицу}

{name-является переменной строкового типа используется

для указания пути размещения файла}

{k,j-переменные целого типа подразумевают размерность матрицы}

{Q-массив в который производится заполнение значений, читаемых с файла}

procedure enter(name:string; k,j:byte; var Q:mas);

var fa:text; t,h:byte;

begin

{Присваиваем файловой переменной конкретный файл на диске}

assign(fa,name);

{Открываем файл для чтения}

reset(fa);

for t:=1 to k do

for h:=1 to j do read(fa, q[t,h]);

{Закрытие файла}

close(fa);

end;

{Процедура prv перемножает матрицы и выводит результат в указанный файл}

{name-является переменной строкового типа используется

для указания пути размещения файла}

{ch-переменная символьного типа используется для вывода в файл, поясняя

тем самым какой массив был выведен}

{k,l-переменные целого типа, где k определяет количество столбцов и строк

получившейся матрицы после умножения других матриц имеющих размеры k,l и l,k}

{p,o-являются массивами над которыми производиться умножение}

procedure prv(name:string; k,l:byte; var p,o:mas);

var i,t,h:byte; x,s:real; r:mas;

begin

{Присваиваем файловой переменной конкретный файл на диске}

assign(f,name);

{Открываем файл для записи}

append(f);

{Умножаем массивы}

for i:=1 to k do begin writeln(f);

for t:=1 to k do begin

s:=0;

for h:=1 to l do

s:=s+p[i,h]*o[h,t];

r[i,t]:=s;

{Результат выводим в файл}

write(f,r[i,t]:8:2);

end;

end;

writeln(f);

{Закрываем файл}

close(f);

end;

{Функция sum возвращает сумму элементов матрицы}

{n,m-целого типа определят размер матрицы}

{d-массив из вещественных чисел}

function sum(n,m:byte; var d:mas):real;

var i,j:byte; s:real;

begin

{Считаем сумму из элементов матрицы}

s:=0;

for i:=1 to n do

for j:=1 to m do s:=s+d[i,j];

sum:=s;

end;

{Функция Pmax возвращает максимальное значение из трех данных}

{x,y,z-значения вещественного типа, из которых производится отбор}

function Pmax(x,y,z:real):real;

begin

Pmax:=x;

if (x<y)and(z<y) then Pmax:=y;

if (z>x)and(z>y) then Pmax:=z;

end;

{Процедура UMN умножает элементы указанного столбца на заданное число и преобразованные матрицу записывает в конец указанного файла}

{P-переменная вещественного типа, на которую умножатся элементы столбца матрицы}

{n,m,h-переменные целого типа, где n,h размеры матрицы, m определяет

столбец над которым выполняется действие умножение}

{x-массив вещественных чисел}

procedure UMN(name:string; p:real; n,m,h:byte; var x:mas);

var i,j:byte; f:text; y:real;

begin

{Присваиваем файловой переменной конкретный файл на диске}

assign(f,name);

{Открываем файл для записи}

append(f);

{Невидимый указатель перемещаем в конец файла}

for i:=1 to n do x[i,m]:=x[i,m]*p;

writeln(f);

{Выводим в файл преобразованный массив}

for i:=1 to n do begin writeln(f);

for j:=1 to h do write(f,x[i,j]:8:2);

end;

{Закрываем файл}

close(f);

end;

{Процедура prnot0 производит умножение всех ненулевых элементов матрицы и записывает в указанный файл}

{name-является переменной строкового типа используетсят для указания пути размещения файла}

{n,m-целого типа определят размер матрицы}

procedure prnot0(name,name1:string; k,n,m,logik:byte);

var i,j:byte; x,p:real; f,fa:text; q:mas;

begin

{Присваиваем файловым переменным конкретные файлы на диске}

assign(f,name);

assign(fp,name1);

{Открываем файл для записи}

append(f);

{Открываем файл для чтения}

reset(fp);

if logik=1 then for i:=1 to k do read(fp,x);

for i:=1 to n do

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

{Находим произведение элементов удовлетворяющих условию}

close(fp);

p:=1;

for i:=1 to n do

for j:=1 to m do if q[i,j]<>0 then p:=p*q[i,j];

writeln(f,p:8:13);

{Закрываем файлы}

close(f);

end;

{Процедура kol_buk подсчитывает количество заглавных латинских и русских букв и выводит на экран}

{name-является переменной строкового типа используется

для указания пути размещения файла}

procedure kol_buk(name:string);

var f:text; ch:char;

kollat,kolrus:integer;

begin

clrscr;

{Присваеваем файловой переменной f конкретный файл на диске}

assign(f,name);

{Открываем файл P1.txt для чтения}

reset(f); kollat:=0; kolrus:=0;

{Считаем количество символов заглавных лат. и рус. букв из файла}

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

if ch in ['A'..'Z'] then kollat:=kollat+1;

if ch in ['А'..'Я'] then kolrus:=kolrus+1;

end;

{Выводим количество символов заглавных лат. и рус. букв на экран}

writeln('В файле P1.txt заглавных латинских букв ',kollat);

writeln('В файле P1.txt заглавных руских букв ',kolrus);

{Закрываем файл}

close(f);

Writeln('Для выхода нажмите <Enter>');

readln;

end;

{Процедура wind зарисовывает окошко с заданными размерами и цветом фона и определяет цвет букв, которые будут находиться в нем}

{a,b,c,d,e,f-целого типа, где a,b-определяют левый верхний угол, c,d-определяют правый нижний угол, е-задает цвет фона, f-цвет текста}

procedure wind(a,b,c,d,e,f:byte);

begin

window(a,b,c,d);

textbackground(e);

clrscr; textcolor(f);

end;

{Процедура bazdan осуществляет поиск по записям в файле и выводит

сообщения на данный запрос}

{name-является переменной строкового типа используется для указания пути размещения файла}

procedure bazdan(name:string);

var i,k,n,l:integer; ch:char; fl:text; s:string[40];

rec:array[1..5] of poezd; log:string[3];

time1,time2,time3,time4:integer;

begin

{Присваиваем файловой переменной конкретный файл на диске}

assign(fl,name);

{Открываем файл для чтения}

reset(fl);

{Цикл просматривает данные из файла и присваивает строкам записи

данные считанные с файла}

for i:=1 to 5 do with rec[i] do Begin

readln(fl,num);

readln(fl,stanc);

readln(fl,log);

if log='да' then nalbil:=true;

if log='нет' then nalbil:=false;

readln(fl,timo.hh);

readln(fl,timo.mm);

readln(fl,timp.hh);

readln(fl,timp.mm);

end;

{Цикл repeat повторяет пока не будет нажата клавиша ESC}

repeat

{Вывод на экран графического сообщения с запросом о нажатии клавиш}

wind(1,1,80,25,0,1);

wind(6,9,71,15,5,1);

wind(7,10,70,14,0,2); gotoxy(4,1);

textcolor(5); gotoxy(9,2);

writeln('Время отправления поездов во временном интервале "Б"');

textcolor(9); gotoxy(11,3);

writeln('Наличие билета на поезд с номером... "П"');

textcolor(2); gotoxy(29,4);

write('Выход ESC');

textcolor(3);

{Считывает клавишу с клавиатуры и присваивает ее

значение переменной символьного типа}

ch:=readkey;

{Производится проверка нажатой клавиши если она совпадает с

нижеуказанным условием то выполняется поиск отправления поездов

в определенный город во временном интервале}

if (ch='Б')or(ch='б')or(ch=',') then begin

wind(1,1,80,25,1,2);

gotoxy(12,3);Writeln('Условия поиска...');

writeln('Введите временной интервал, соблюдая следующий формат');

writeln('Например 12 клавиша <Enter>');

writeln(' 10 клавиша <Enter>');

writeln(' 14 клавиша <Enter>');

writeln(' 30 клавиша <Enter>');

readln(time1);

readln(time2);

readln(time3);

readln(time4);

k:=0;

{Если условие соблюдается для записи i-той, то ее элементы

выводится на экран, тем самым сообщая о наличии соблюдения условия}

for i:=1 to 5 do with rec[i] do begin

if (time1<=timo.hh)and(time3>=timo.hh) then

begin

k:=1;

delay(12000);

writeln(stanc);

writeln(timo.hh,':',timo.mm);

end;

end;

{Если поиск не дал ожидаемых результатов, то выводится соответствующее запланированное (на случай не совпадения) сообщение}

if k=0 then writeln('Поиск не дал результатов');

writeln('Для выхода нажмите любую клавишу...');

repeat until keypressed;

end;

{Производится проверка нажатой клавиши, если она совпадает с ниже указанным условием то выполняется поиск наличия билетов с указанным номеров и выводом, таковых, если существуют}

if (ch='G')or(ch='g')or(ch='П')or(ch='п') then

begin wind(1,1,80,25,1,2);

gotoxy(12,3); Writeln('Условия поиска...');

writeln('Введите номер поезда');

readln(N); k:=0;

{Если условие соблюдается для записи i-той, то ее элементы выводится на экран, тем самым сообщая о наличии соблюдения условия}

for i:=1 to 5 do with rec[i] do begin

if n=num then begin writeln('да имеется на ',stanc); k:=1; end;

end;

if k=0 then writeln('нет билетов с таким номером');

{Если поиск не дал ожидаемых результатов, то выводится соответствующее запланированное (на случай не совпадения) сообщение}

writeln('Для выхода нажмите любую клавишу...');

repeat until keypressed;

end;

{Проверка нажатой клавиши конечного условия, если эта клавиша

оказывается ESC, то цикл завершается и передается управление

главной программе}

until ch=#27;

end;

{Процедура signal воспроизводит сигнал с определенной частотой и задержкой}

procedure signal;

begin

sound(2000);

delay(10000); nosound;

delay(2000);

end;

{Основная программа}

Begin

{Определяем файловой переменной конкретный файл на диске}

assign(f,'C:\p3');

{Создаем файл}

rewrite(f);

{Закрываем файл}

close(f);

{Присваиваем файловой переменной конкретный файл на диске}

assign(f1,'C:\p4');

{Создаем файл}

rewrite(f1);

{Закрываем файл}

close(f1);

{Цикл repeat повторяет, пока не будет нажата клавиша ESC}

repeat

for i:=100 to 1000 do begin sound(i); delay(8);

end; for i:=1000 downto 100 do begin sound(i); delay(8) end; nosound;

{Вывод на экран графического сообщения с запросом о нажатии клавиш}

textbackground(0); clrscr; wind(16,9,62,15,3,1);

wind(17,10,61,14,1,2);

textcolor(13); gotoxy(3,1);

writeln('Выберите задание, которое нужно выполнить:');

gotoxy(10,2);

textcolor(14);

writeln('Задание 1, то нажмите "1"');

gotoxy(10,3);

textcolor(11);

writeln('Задание 2, то нажмите "2"');

gotoxy(10,4);

textcolor(15);

writeln('Задание 3, то нажмите "3"');

gotoxy(11,5);

textcolor(14);

write('Для выхода нажмите ЕSC');

{Считывает клавишу с клавиатуры и присваивает ее

значение переменной символьного типа}

chsim:=readkey;

{Если условие соблюдается то выполняется задание 1}

if chsim='1' then begin

{Пункт 1}

signal;

enter('C:\p1',5,3,y);

enter('C:\p2',3,5,z);

prv('c:\p3',5,3,y,z);

prv('c:\p3',3,5,z,y);

{Пункт 2}

enter('C:\p3',5,5,x);

Pm:=Pmax(sum(5,3,y),sum(3,5,z),sum(5,5,x));

umn('c:\p1',pm,5,2,3,y);

umn('c:\p2',pm,3,3,5,z);

umn('c:\p3',pm,5,4,5,x);

{Пункт 3}

prnot0('c:\p4','C:\a1',0,5,3,0);

prnot0('c:\p4','C:\a2',0,3,5,0);

prnot0('c:\p4','C:\a1',15,5,3,1);

prnot0('c:\p4','C:\a2',15,3,5,1);

prnot0('c:\p4','C:\a3',0,5,5,0);

prnot0('c:\p4','C:\a3',25,3,3,1);

prnot0('c:\p4','C:\a3',34,5,5,1);

clrscr;

writeln(`Программа выполнила задание 1,');

writeln(`для продолжения нажмите <Enter>');

readln;

end;

{Если условие соблюдается, то выполняется задание 2}

if chsim='2' then begin

signal;

kol_buk('C:\p1.txt');

end;

{Если условие соблюдается, то выполняется задание 3}

if chsim='3' then begin

signal;

bazdan('C:\bazdan.txt');

end;

until chsim=#27;

{Проверка нажатой клавиши конечного условия, если эта клавиша

оказывается ESC, то цикл завершается и программа заканчивается}

end.

РУКОВОДСТВО ПРОГРАММИСТА

Для эксплуатации программы необходимо предварительно создать на диске С:\ следующие файлы: p1, p2, p1.txt, bazdan.txt.

· В файл p1 и p2 нужно занести 15 элементов вещественной матриц;

· В файл p1.txt набрать текст.

· В файл bazdan.txt занести сведения в следующем порядке:

1. Строка, определяющая номер поезда

2. Строка, определяющая станцию назначения

3. Строка, определяющая наличие билетов (имеются или нет)

4. Строка, определяющая час отправления

5. Строка, определяющая минуты отправления

6. Строка, определяющая часы пути

7. Строка, определяющая минуты пути

Пример:

1248 - обязательно целое число

Москва - любая строка

да - может содержать или да или нет

12 - число от 0…23

10 - число от 0…59

3 - число от 0…23

0 - число от 0…59

…………………

Следующий этап требует запуска оболочки программирования Turbo Pascal 7.0 или Borland Pascal 7.0, загрузите текст программы и запустите ее на выполнение сочетанием клавиш Ctrl+F9. В появившемся меню выберите задание, которое нужно выполнить. Посредством указанных в кавычках символов нажмите соответствующую клавишу, после чего следуйте указаниям появляющимся на экране.

МЕТОДИКА ИСПЫТАНИЙ

Вычисления вручную

Для следующих модулей:

prv - модуль умножение матриц

Y(5,3) - { 1 -0.1 0.2 -1 1 -1 1 2 0.3 1 0.1 0.2 2 3 0.5 }

Z(3,5) - { 0.02 0.3 1.3 1.2 0 0 0 1 2 0.1 0.2 0.3 -1 -2 0.01 }

X(5,5)=Y(5,3)*Z(3,5)

X(1,1) = 1*0.02+0*(- 0.1)+0.2*0.2 = 0.06

X(1,2) = 1*0.3+0*(- 0.1)+0.2*0.3 = 0.36

X(1,3) = 1*1.3+1*(- 0.1)+0.2*(-1) = 1

X(1,4) = 1*1.2-2*(- 0.1)+0.2*(-2) = 0.6

X(1,5) = 1*0.1*(- 0.1)+0.2*0.01 = 0.01

X(2,1) = 0.02*(-1)+0*1+0.2*(-1) = - 0.22

X(2,2) = - 0.3 + 0 - 0.3 = - 0.6

X(2,3) = - 1.3 + 1 + 1 = 0.7

X(2,4) = - 1.2 + 2 + 2 = 2.8

X(2,5) = 0 + 0.1 - 0.01 = 0.09

X(3,1) = 0.02 + 0 + 0.06 = 0.08

X(3,2) = 0.3 + 0 + 0.09 = 0.39

X(3,3) = 1.3 + 2 - 0.3 = 3

X(3,4) = 1.2 + 4 - 0.6 = 4.6

X(3,5) = 0 + 0.2 + 0.003 = 0.203

X(4,1) = 0.02 + 0 + 0.04 = 0.06

X(4,2) = 0.3 + 0 + 0.06 = 0.36

X(4,3) = 1.3 + 0.1 - 0.2 = 1.2

X(4,4) = 1.2 + 0.2 - 0.4 = 1

X(4,5) = 0 + 0.01 + 0.002 = 0.012

X(5,1) = 0.04 + 0 + 0.1 = 0.14

X(5,2) = 0.6 + 0 + 0.15 = 0.75

X(5,3) = 2.6 + 3 - 0.5 = 5.1

X(5,4) = 2.4 + 6 - 1 = 7.4

X(5,5) = 0 + 0.3 + 0.005 = 0.305

P(3,3) = Z(3,5)*Y(5,3)

P(1,1) = 0.02*1+0.3*(-1)+1.3*1+1.2*1 + 0*2 = 2.22

P(1,2) = 0.02*(- 0.1)+0.3*1+1.3*2+1.2*0.1+0*3 = 3.018

P(1,3) = 0.02*0.2+0.3*(-1)+1.3*0.3+1.2*0.2+0*0.5 = 0.334

P(2,1) = 0 + 0 + 1 + 2 + 0.2 = 3.2

P(2,2) = 0 + 0 + 2 + 0.2 + 0.3 = 2.5

P(2,3) = 0 + 0 + 0.3 + 0.4 + 0.05 = 0.75

P(3,1) = 0.2 - 0.3 - 1 - 2 + 0.02 = - 3.08

P(3,2) = - 0.02 + 0.3 - 2 - 0.2 + 0.03 = - 1.89

P(3,3) = 0.04 - 0.3 - 0.3 - 0.4 + 0.005 = - 0.955

Sum - суммирует элементы матрицы

Сумма\Y(5,3)\=1-0.1+0.2-1+1-1+1+2+0.3+1+0.1+0.2+2+3+ 0.5 = 10.2

Сумма\Z(3,5)\=0.02+0.3+1.3+1.2+0+0+0+1+2+0.1+0.2+0.3-1-2+0.01 = 3.43

Сумма\X(5,5)\=0.06+0.36+1+0.6-0.01-0.22-0.6+0.7+2.8+0.09+0.08+0.39+3.00+ +4.6+0.2+0.06+0.36+1.2+1+0.01+0.14+0.75+5.1+7.4+0.31=29.38

Pmax выбирает максимальное из трех элементов (в программе выбор происходит из уже высчитанных сумм элементов матриц)

3.4.<10.2<29.38 Pmax = 29.38

UMN умножает элементы заданного столбца матрицы на определенное число (в программе “определенным числом” - является Pmax)

Y(1,2) = - 0.1*29.38 = -2.938

Y(2,2) = 1*29.38 = 29.38

Y(3,2) = 2*29.38 = 58.76

Y(4,2) = 0.1*29.38 = - 2.938

Y(5,2) = 3*2938 = 88.14

Z(1,3) = 1.3*29.38 = 38.194

Z(2,3) = 1*29.38 = 29.38

Z(3,3) = -1*29.38 = - 29.38

X(1,4) = 0.6*29.38 = 17.628

X(2,4) = 2.8*29.38 = 82.264

X(3,4) = 4.6*29.38 = 135.148

X(4,4) = 1*29.38 = 29.38

X(5,4) = 7.4*29.38 = 217.412

Prnot0 умножает ненулевые элементы матрицы

Prnot0(Y)=1*(-0.1)*0.2*(-1)*1*(-1)*1*2*0.3*1*0.1*0.2*2*3*0.5 = - 0,00072

Prnot0(Z)=0.02*0.3*1.3*1.2*1*2*0.1*0.2*0.3*(-1)*(-2)*0.01 = 0.0000022464

Prnot0(YP P - означает преобразованная) = 1*(-2.94)*0.2*(-1)*29.38*(-1)*1*58.76*0.30*1*2.94*0.2*2* *88.14*0.50 = - 15782.7447053063424

Prnot0(ZP) = 0.02*0.3*38.19*1.2*29.38*2*0.1*0.2*0.3*(-29.38)*(-2)*0.01 = = 0.056963541143808

Prnot0(X)=0.06*0.36*1*0.6*(-0.01)*(-0.22)*(-0.6)*0.7*2.8*0.09*0.08*0.39* *3.00*4.6*0.2*0.06*0.36*1.2*1*0.01*0.14*0.75*5.1*7.4* *0.31=- 0.00000000008274258

Prnot0(P) = 2.22*3.02*0.33*3.2*2.5*0.75*(-3.08)*(-1.89)* *(-0.96) = -74.183763354624

Prnot0(XP)=0.06*0.36*1*17.63*(-0.01)*(-0.22)*(-0.6)*0.7*82.26*0.09*0.08* *0.39*3*135.15*0.2*0.06*0.36*1.20*29.38*0.01*0.14*0.75*5.1* *217.41*0.31 = -0.001811417743

Kol_buk определяет количество заглавных латинских и русских букв в тексте

Душа поёт, а сердце плачет, но все же верю я, что ждет меня удача. I like writing Turbo Pascal.

Количество заглавных русских букв = 1

Количество заглавных латинских букв = 3

Bazdan производит поиск по записям в файле

1245

Дубровка

да

12

10

2

0

1246

Казахстан

да

2

20

12

5

1247

Москва

да

12

15

10

25

1248

Ленинград

да

9

30

10

15

1249

Запорожье

нет

15

30

23

40

В результате поиска:

Условие - Найти номер поезда

1248 - да есть на Ленинград

1000 - нет билетов с таким номером

Условие - Во временном интервале

С 12:30 до 1:30, так как временной интервал не может быть в обратном порядке - Поиск не дал результатов

С 9:30 до 12:30 - Дубровка 12:10, Москва 12:15, Ленинград 9:30

Результат, полученный в процессе выполнения программы

До выполнения

Файл p1

1 -0.1 0.2 -1 1 -1 1 2 0.3 1 0.1 0.2 2 3 0.5

Файл p2

0.02 0.3 1.3 1.2 0 0 0 1 2 0.1 0.2 0.3 -1 -2 0.01

Файл p1.txt

Душа поёт, а сердце плачет, но все же верю я, что ждет меня удача. I like writing Turbo Pascal.

Файл bazdan.txt

1245

Дубровка

да

12

10

2

0

1246

Казахстан

да

2

20

12

5

1247

Москва

да

12

15

10

25

1248

Ленинград

да

9

30

10

15

1249

Запорожье

нет

15

30

23

40

После выполнения

Для задания 1

Файл p1

1 -0.1 0.2 -1 1 -1 1 2 0.3 1 0.1 0.2 2 3 0.5

1.00 -2.94 0.20

-1.00 29.38 -1.00

1.00 58.76 0.30

1.00 2.94 0.20

2.00 88.14 0.50

Файл p2

0.02 0.3 1.3 1.2 0 0 0 1 2 0.1 0.2 0.3 -1 -2 0.01

0.02 0.30 38.19 1.20 0.00

0.00 0.00 29.38 2.00 0.10

0.20 0.30 -29.38 -2.00 0.01

Файл p3

0.06 0.36 1.00 0.60 -0.01

-0.22 -0.60 0.70 2.80 0.09

0.08 0.39 3.00 4.60 0.20

0.06 0.36 1.20 1.00 0.01

0.14 0.75 5.10 7.40 0.31

2.22 3.02 0.33

3.20 2.50 0.75

-3.08 -1.89 -0.96

0.06 0.36 1.00 17.63 -0.01

-0.22 -0.60 0.70 82.26 0.09

0.08 0.39 3.00 135.15 0.20

0.06 0.36 1.20 29.38 0.01

0.14 0.75 5.10 217.41 0.31

Файл p4

-0.00072000000

0.00000224640

-15782.74470500000

0.05696354114

-0.00000000008

-74.18376335500

-0.00181141774

Для задания 2

-OUTPUT-

В файле P1.txt заглавных латинских букв 3

В файле P1.txt заглавных руских букв 1

Для выхода нажмите <Enter>

Для задания 3

-OUTPUT-

Условия поиска...

Введите временной интервал соблюдая следующий формат

Например 12 клавиша <Enter>

10 клавиша <Enter>

14 клавиша <Enter>

30 клавиша <Enter>

9

30

12

30

Дубровка

12:10

Москва

12:15

Ленинград

9:30

Для выхода нажмите любую клавишу...

-OUTPUT-

Условия поиска...

Введите номер поезда

1248

да имеется на Ленинград

Для выхода нажмите любую клавишу…

-OUTPUT-

Условия поиска...

Введите временной интервал соблюдая следующий формат

Например 12 клавиша <Enter>

10 клавиша <Enter>

14 клавиша <Enter>

30 клавиша <Enter>

12

30

1

30

Поиск не дал результатов

Для выхода нажмите любую клавишу...

-OUTPUT-

Условия поиска...

Введите номер поезда

1000

нет не билетов с таким номером

Для выхода нажмите любую клавишу…

ЗАКЛЮЧЕНИЕ

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

СПИСОК ЛИТЕРАТУРЫ

1. Марченко А.И., Марченко Л.А. Программирование в среде Turbo Pascal 7.0. - К.: ВЕК+, 2000 г.

2. Фаронов В.В. Turbo Pascal 7.0 начальный курс. - М.: Нолидж, 2000 г.

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


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

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

    курсовая работа [57,1 K], добавлен 03.03.2011

  • Методы численного интегрирования. Характеристика основных составляющих структурного программирования. Решение задания на языке высокого уровня Паскаль. Построение графического решения задачи в пакете Matlab. Решение задания на языке высокого уровня C.

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

  • Основные этапы разработки программного обеспечения (пакета программ), анализ требований к системе. Метод пошаговой детализации. Языки программирования низкого уровня и высокого уровня (императивные, объектно-ориентированные, функциональные, логические).

    презентация [41,4 K], добавлен 13.10.2013

  • Разработка алгоритмов методом пошаговой детализации. Типы данных и операции в Turbo-Pascal. Организация работы с подпрограммами. Составление алгоритмов и программ задач с использованием конечных сумм. Организация работы с динамическими переменными.

    учебное пособие [1,4 M], добавлен 26.03.2014

  • Pascal - высокоуровневый язык программирования общего назначения и интегрированная среда разработки программного обеспечения для платформ DOS и Windows. Входная информация, требуемая для решения задачи и принятые обозначения; описание алгоритма.

    курсовая работа [259,6 K], добавлен 18.01.2011

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

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

  • Особенности вывода на экран содержимого файла BAZA.txt. Анализ функций вывода информации о количестве каждой марки машин. Рассмотрение способов проектирования тестов программы методами черного ящика. Проблемы программирования на языке высокого уровня.

    контрольная работа [1,6 M], добавлен 04.01.2015

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

    курсовая работа [400,6 K], добавлен 10.11.2016

  • Освоение технологии структурного программирования и применения стандартных методов работы с одномерными массивами при разработке и создании программы на языке Турбо Паскаль. Разработка программы методом пошаговой детализации с помощью псевдокода.

    реферат [276,9 K], добавлен 27.02.2008

  • Исследование классификации компьютерных игр, двигателей прогресса индустрии для персональных компьютеров. Характеристика общей структуры, протокола и текста программы, сценария и процесса игры. Изучение алгоритмизации и программирования на языке Паскаль.

    реферат [2,1 M], добавлен 16.09.2011

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