Программы в среде Turbo Pascal

2



МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

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

Филиал в г. Кисловодске

Кафедра ________________________________________________________________

УТВЕРЖДАЮ

Зав. кафедрой

_______________________

подпись, инициалы, фамилия

«___» ______________200 __г. 



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

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

__________________________________________________________________

На тему:___________________________________________________________

__________________________________________________________________

Автор работы:______________________________________________________

              подпись, дата                                    инициалы, фамилия

_________________________________________________________________



Специальность _____________________________группа__________________

Руководитель работы________________________________________________

ученая степень, звания

__________________________________________________________________

инициалы, фамилия

работа защищена _____________________ оценка _______________________

дата

______________________________

подпись, инициалы, фамилия преподавателя













Кисловодск _______г.


МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

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

Филиал в г. Кисловодск



Кафедра ____________________________________________________________

УТВЕРЖДАЮ

Зав. кафедрой

_______________________

подпись, инициалы, фамилия

«___» ______________20__г.



ЗАДАНИЕ НА КУРСОВУЮ РАБОТУ



Студенту ______  курса ____________ группы __________________ факультета

Фамилия __________________ Имя _____________ Отчество _____________

1. Тема _____________________________________________________________

__________________________________________________________________

__________________________________________________________________

__________________________________________________________________

2. Задание 

__________________________________________________________________

__________________________________________________________________

3. Дата выдачи задания  _______________________________________________

Срок представления работы к защите «____» _____________________ 200___ г.



Руководитель работы_______________________

         подпись, инициалы, фамилия



Задание принял к исполнению _______________

     дата и подпись студента


Содержание





Введение	4

1. Основная часть	5

2. Алгоритм задачи	10

	2.1 Блок-схема алгоритма подпрограммы Forma1	10

	2.2 Блок-схема алгоритма подпрограммы Menu	14

	2.3 Блок-схема алгоритма подпрограммы V_kor	17

		2.3 Блок-схема алгоритма подпрограммы Zad_1	17

	2.5 Блок-схема алгоритма подпрограммы Zad_2	20

	2.6 Блок-схема алгоритма программы Prog_1	22

3. Описание	23

	3.1 Рассчитать длину средней линии трапеции	24

	3.2 Нормальная матрица	25

4. Результаты	27

	4.1 Интерфейс подпрограммы Zad_1	27

	4.2 Интерфейс подпрограммы Zad_2	27

5. Проверка	29

Заключение	30

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

Приложение	32


Введение



Процесс подготовки и решения задач на компьютерах состоит из нескольких этапов: 

- постановка задачи; 

- построение модели; 

- разработка алгоритма; 

- написание и отладка программы на языке программирования; 

- тестирование программы. 

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

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

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

1. Основная часть



При создании этой курсовой работы использовался язык программирования Turbo Pascal – очень гибкий и развитый в отношении типов данных.

Паска́ль (Pascal) — язык программирования общего назначения. Один из наиболее известных языков программирования, широко применяется в промышленном программировании, обучении программированию в высшей школе, является базой для большого числа других языков. Был создан Николаусом Виртом в 1970, после его участия в работе комитета разработки стандарта языка Алгол-68.

Ниже приведены: блок-схемы алгоритмов программы и отдельных модулей, математические модели поставленных задач, входные и выходные данные (интерфейс заданий), т.е. результаты выполнения подпрограмм, проверка результатов, произведенная средствами Ms Excel.

Паскаль был создан как язык для обучения процедурному программированию (хотя, по словам Вирта, язык нельзя считать только учебным, поскольку язык, непригодный для написания реальных программ, для обучения использоваться не должен). Название языку дано в честь выдающегося французского математика, физика, литератора и философа Блеза Паскаля. Один из первых языков, для которых была создана реализация «на самом себе» — компилятор Паскаля был написан на самом Паскале. В начале 1970-х годов для переноса Паскаль-систем на различные аппаратные платформы была создана система Pascal-P, в которой был единый компилятор Паскаля в промежуточный язык (P-код) и для каждой платформы создавался быстрый интерпретатор P-кода. Заимствование этой системы привело к созданию системы UCSD-Pascal в Университете Сан-Диего (Калифорния, США), намного позже её идеи были заимствованы создателями языка Java (байт-код, компиляция в байт-код, интерпретатор байт-кода).

Особенностями языка являются строгая типизация и наличие средств структурного (процедурного) программирования. Паскаль был одним из первых таких языков. По мнению Н. Вирта, язык должен способствовать дисциплинированию программирования, поэтому, наряду со строгой типизацией, в Паскале сведены к минимуму возможные синтаксические неоднозначности, а сам синтаксис автор постарался сделать интуитивно понятным даже при первом знакомстве с языком.

Тем не менее, первоначально язык имел ряд ограничений: невозможность передачи функциям массивов переменной длины, отсутствие нормальных средств работы с динамической памятью, ограниченная библиотека ввода-вывода, отсутствие средств для подключения функций написанных на других языках, отсутствие средств раздельной компиляции и т. п. Наиболее бросающийся в глаза недостаток синтаксиса — некритически заимствованная из Алгола структура управляющих конструкций (операторов if и циклов), требующая, как правило, постоянного использования составных операторов «begin — end». Полный разбор недостатков языка Паскаль был выполнен Брайаном Керниганом в статье «Почему Паскаль не является моим любимым языком программирования» (интересно, что эта статья вышла в начале 1980-х, когда уже существовал язык Модула-2, потомок Паскаля, избавленный от большинства его пороков). Некоторые недостатки Паскаля были исправлены в ISO-стандарте 1982 года, в частности, в языке появились открытые массивы, давшие возможность использовать одни и те же процедуры для обработки одномерных массивов различных размеров.

Необходимо заметить, что многие недостатки языка не проявляются или даже становятся достоинствами при обучении программированию. Кроме того, по сравнению с основным языком программирования в академической среде 70-х (которым был Фортран, обладавший гораздо более существенными недостатками), Паскаль представлял собой значительный шаг вперёд. В начале 1980-х годов в СССР для обучения школьников основам информатики и вычислительной техники академик А. П. Ершов разработал алголо-паскалеподобный «алгоритмический язык».

Никлаус Вирт понимал недостатки созданного им языка, но, следуя традициям академической среды и собственным принципам, согласно которым «неподходящий инструмент надо не исправлять, а заменять», не стал его развивать дальше, а разработал новые языки семейства: Модула-2 и Оберон. В противоположность этому промышленные традиции и достоинства языка побудили многие коммерческие и некоммерческие организации продолжать разрабатывать и развивать системы программирования именно на основе языка Паскаль, подвергая язык произвольному расширению, добавляя в него, часто совершенно механически, новые средства и синтаксические конструкции.

Наиболее известной реализацией Паскаля является система Turbo Pascal (выросшая затем в Borland Pascal и далее в Delphi) фирмы Borland, в которой язык был значительно расширен, были устранены некоторые недостатки языка, добавлены новые возможности. Язык стал богаче, но в отсутствие отраслевой стандартизации, потерял переносимость и общность (до появления в 1998 году Kylix — Delphi для Linux, продукты Borland работали только на платформе DOS/Windows, в настоящее время Kylix фактически заморожена).

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

В настоящий момент пользуются популярностью такие версии языка как TMT Pascal, Free Pascal и GNU Pascal. Продолжает использоваться и Borland Pascal.

В 1986 году фирма Apple разработала объектное расширение языка Паскаль, получив в результате Object Pascal. В 1989 году аналогичные объектные средства были добавлены фирмой Borland в систему Turbo Pascal (языковые различия между объектным Turbo Pascal 5.5 и Object Pascal от Apple крайне незначительны). Последующие версии Turbo Pascal, который стал затем называться Borland Pascal, дополняли объектное расширение новыми средствами, этот процесс продолжился и в ходе развития языка системы Delphi. Название языка менялось: от Pascal, через Object Pascal for Delphi, в литературе встречалось название Delphi Pascal, в последних версиях Delphi язык именуется так же, как и сама система (любопытный момент: в Delphi 7 пункт системного меню, запускающий справку по языку, как и в более ранних версиях, называется «Object Pascal Reference», а сам запускаемый им модуль помощи имеет заголовок «Delphi Language Manual», в тексте язык также везде называется «Delphi»). 1 февраля 2008 года Borland/CodeGear анонсировала поставку своей среды разработки приблизительно на миллион компьютеров в российских школах и ВУЗах.

Кроме того, разрабатывается система программирования PascalABC.NET, ориентированная на обучение современному программированию. PascalABC — реализация обычного паскаля, разработан для обучения программированию. PascalABC.net — аналог PascalABC, с возможностью создавать exe файлы.

При разработке программы использовались следующие конструкции языка приведены ниже:

Условие:

if условие then begin

…

end

else

begin

-  цикл, с постоянным вхождением в цикл:

for переменная := 1 to n do оператор;

…

end;

А так же конструкции вывода и чтения данных:

writeln(‘информация’); // вывод данных

readln(переменная); // чтение данных

цикл с предусловием:

while (условие) do

  begin

    . . .

    оператор;

    . . .

  end;

оператор выбора условию равенств значения переменной:

case переменная of

  значение 1: оператор;

  значение 2: оператор;

  . . .

  значение n: оператор;

При создание курсовой работы так же пользовалась функциями библиотеки crt:

перемещение курсора в точку (x,y) - gotoxy(координата x, координата y);

очистка экрана - clrscr;

А так же стандартными функциями:

закрытие файла – close(«имя_файла»);

расчет по модулю - abs (‘выражение’);

подключение файла - assign(файловая переменная, ‘путь_к_файлу’);

открытие файла для перезаписи - rewrite(файловая переменная).


2. Алгоритм задачи



2.1 Блок-схема алгоритма подпрограммы Forma1



Данная подпрограмма включает в себя подпрограмму Frame.



нет

X: =X1+1

Вывод c2 

X > X2-1

Начало



C1=chr(218)

C4=chr(179)

C3=chr(191)

1

C5=chr(192)

C6=chr(217)

Переход на (x1, y1)

Вывод 

с1

C2=chr(196)

X: =X1+1








нет

нет

Вывод c3 

1

Y: =Y1+1

Переход на (X1,Y)

Вывод

 c4 

Y > Y2 - 1

Переход на (X2,Y)

X= x1+1

Вывод

 с5

Переход на (x1, y2)

Вывод

 c4 

Вывод

 C6

X= x1+1

x > x2 - 1



2


Х1= 4

Х2= 77

Y1= 4

Y2= 47

Frame

Переход на (12, 7)

Вывод сообщения 



Переход на (45, 37)

Переход на (17, 23)

Вывод сообщения 

Переход на (19, 22)

Вывод сообщения 

Переход на (33, 21)

Вывод сообщения 

Переход на (27, 8)

Вывод сообщения 

32

Вывод сообщения 

Очистка экрана

232




32

Конец



Переход на (45, 41)

Вывод сообщения 

Переход на (45, 42)

Вывод сообщения 

Переход на (45, 40)

Вывод сообщения 

Переход на (45, 39)

Вывод сообщения 

Переход на (45, 38)

Вывод сообщения 


2.2 Блок-схема алгоритма подпрограммы Menu



Начало



X1:=4

Установка цвета фона

Установка цвета текста

Очистка экрана

X2:=76

C1=chr(205)

Y2=21

Y1=4

C4=chr(186)

C3=chr(187)

C2=chr(201)

1






yf:=yf+1

C5=chr(200)

   1

C6=chr(188)

yf:=10

yf:=yf+1

Вывод сообщения на экран

Переход на (23,yf)

yf:=Yf+1

Вывод сообщения на экран

Переход на (23,yf)

Переход на (23,yf)

Вывод сообщения на экран

2




yf:=yf+1

Переход на (23,yf)

yf:=yf+1

Вывод сообщения на экран

Переход на (23,yf)

yf:=yf+1

Вывод сообщения на экран

Переход на (23,yf)

Вывод сообщения на экран

2

Переход на (23,yf)

Вывод сообщения на экран

Конец



yf:=yf+19

Переход на (23,yf)


2.3 Блок-схема алгоритма подпрограммы V_kor



Вывод сообщения

Начало



Очистка

Экрана

Конец



Ввод координат

Вывод сообщения

Ввод координат

Вывод сообщения

Ввод координат









































2.3 Блок-схема алгоритма подпрограммы Zad_1



Данная подпрограмма включает в себя следующие подпрограммы: V_kor, Print, Screen, Menus описание которых приведено выше







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

Конец



Начало



Очистка

Экрана

Объявление файла

Открытие файла на перезапись

Ввод S

Вывод на печать

























Рисунок 1  - Блок-схема алгоритма подпрограммы Print



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





Вывод

S

Начало



Очистка

Экрана

Конец



















Рисунок 2 - Блок-схема алгоритма подпрограммы Screen


В  подпрограмме выполняется сначала очистка экрана, а затем результат.



Начало



Очистка

Экрана

Вывод 

Сообщения 

Конец

















Рисунок 3 - Блок-схема алгоритма подпрограммы menus



В подпрограмме выводится меню для выбора куда отправлять результаты – на экран или на принтер. Что бы сделать выбор необходимо ввести соответствующее значение.


2.5 Блок-схема алгоритма подпрограммы Zad_2



max[i]:=0

1

i:= 1 to n

x1:=4



y1 :=  y1+1

gotoxy(x,y)

a[i,k]

x1:=x1+8

k:= 1 to n

i:= 1 to n

Ввод данных

Начало



Очистка экрана

y1:=4





x1:=4

  gotoxy(x1,y1)

Вывод данных

x1:=4

y1 :=  y1+1










b[i,j]:=a[i,k]/max[k]



Вывод элементов матрицы B[I,k]

Конец



j:= 1 to n

i:= 1 to n

gotoxy(x1,y1)

x:=4

y1:=y1+1



abs(A[i,k] )>max[k]

max[k]:=abs(A[i,k])



k:= 1 to n

1

k:= 1 to n

Вывод элементов матрицы B[i,k]















































В этой подпрограмме выполняется сначала ввод элементов матрицы, затем расчет первой нормы и уже потом вывод новой матрицы на экран.


2.6 Блок-схема алгоритма программы Prog_1





начало

Forma1

Очистка экрана

Second:=0

menu

Ввод Secondd

Sec=1

Zad_1

Sec=2

Zad_2

exit

Sec<>3

конец

нет

нетДанная программа включает в себя следующие подпрограммы: Forma1, Menu, Zad_1, Zad_2 приведённые ниже. 


3. Описание



Созданная программа – Prog_1 состоит из двух основных подпрограмм, входящих в тело программы: Forma1, Menu.

Подпрограмма Formal выводит на экран монитора данные о курсовой работе:



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

ФИЛИАЛ В ГОРОДЕ КИСЛОВОДСКЕ



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

по дисциплине  информатика и программирование на тему создание прикладного программного обеспечения в среде программирования

Turbo Pascal



Работу выполнил:  студент

_____курса группы _______

                                                                                              ФИО____________________

Работу проверил: 

__________________________



При нажатии Enter управление передается подпрограмме Menu, которая выводит на экран монитора меню заданий, с предложением ввода номера одного из подпунктов для выполнения соответствующего задания. Интерфейс данной подпрограммы следующий:



1.     “ Рассчитать длину средней линии трапеции ”.

2.     “Пронумеровать матрицу по ее второй норме”.

3.     “Выход”.



Введите номер задания для выполнения  (1- 3).



Далее в соответствии с выбранным номером пункта управление передается Программе Prog_1, на вход которой поступает номер пункта меню. Происходит анализ соответствия номера пункта меню в списке предлагаемых (1, 2, 3), в случае несоответствия выводится надпись, управление передается подпрограмме Menu, в цикле будут повторяться данные действия до правильного ввода цифры пункта меню. В случае правильного набора номера пункта программа Prog_1 передаст управление соответственно одной из подпрограмм: Zad_1, Zad_2, или будет произведен выход из программного продукта в случае выбора номера варианта 3. После выполнения выбранной подпрограммы управление вновь передается подпрограмме Menu, для возможности выполнения любого из пунктов меню.



3.1 Рассчитать длину средней линии трапеции.



Фо́рмула Геро́на позволяет вычислить площадь треугольника (S) по его сторонам a, b, c:



аналогично вычисляются и остальные стороны.



где р — полупериметр треугольника: .

Треугольник однозначно можно определить по следующим тройкам основных элементов:

		a, b, c (равенство по трём сторонам);

		a, b, γ (равенство по двум сторонам и углу между ними);

		a, β, γ (равенство по стороне и двум прилежащим углам).

В данном примере доказательство основывается на соотношении сторон, если выполняются все следующие условия:

		a < b + c;

		b < c + a;

		c < a + b.



3.2 Нормальная матрица



 Матрица — математический объект, записываемый в виде прямоугольной таблицы чисел (или элементов кольца) и допускающий алгебраические операции (сложение, вычитание, умножение и др.) между ним и другими подобными объектами. Правила выполнения операций над матрицами сделаны такими, чтобы было удобно записывать системы линейных уравнений. Обычно матрицу обозначают Заглавной буквой латинского алфавита и выделяют круглыми скобками «(…)» (встречается также выделение квадратными скобками «[…]», двойными прямыми линиями «||…||») А числа, составляющие матрицу (элементы матрицы), обозначают той же буквой, что и саму матрицу, но маленькой. у каждого элемента матрицы есть 2 нижних индекса (aij) — первый «i» обозначает номер строки, в которой находится элемент, а второй «j» — номер столбца.





Вектор — упорядоченное множество (последовательность, одномерный массив, кортеж, перечень, список) однородных элементов. Это наиболее общее определение в том смысле, что может быть не задано обычных векторных операций вообще, их может быть меньше, или они могут не удовлетворять обычным аксиомам линейного пространства. Нормой квадратной матрицы A называется функционал, обозначаемый , удовлетворяющий условиям: 



-- произвольное число; 

;



Норма матрицы согласована с нормой вектора ,если для любых x и A 



Функционал является нормой матрицы A и называется нормой матрицы А, подчиненной норме вектора . 


4. Результаты



4.1 Интерфейс подпрограммы Zad_1



На рисунке 1 изображено окно ввода координат точек А, В, С ,D трапеции. Для каждой точки нужно ввести координаты х, у.



На рисунке 2 изображен диалог выбора: выводить результат – на принтер или на экран. Чтобы вывести на принтер нажмите 1, а для того чтобы на экран 2.





Рисунок 2 – Диалог печати



На рисунке 3 изображен вывод результата на экран. Мы видим в диалоговом окне чему равна площадь треугольника.





Рисунок 3 – Вывод результата



4.2 Интерфейс подпрограммы Zad_2



На рисунке  4 отображено главное окно задания 2, в котором сначала производился ввод элементов массива, а затем уже вывод нового массива.





Рисунок 4 – Вывод результатов




5. Проверка



Проверим ход решения в электронных таблицах Ms Excel.



Когда мы производим нормирование матрицы мы находим абсолютное значение от каждого элемента матрицы. Далее мы находим максимальное значение каждого столбца матрицы. А затем уже выводим результирующую матрицу B = (bik), где bik = aii /  1.


Заключение



Работа выполнена на языке Turbo Pascal фирмы Borland, прочно вошедшем в мир программирования в 1983 году и до сих пор являющимся удобным языком программирования для начинающих программистов, а также просто хорошим языком программирования, к которому обращаются как прикладные программисты, так и системные.

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

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

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


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



Вирт Никлаус Алгоритмы+структуры данных= программы. — М.: «Мир», 1985.

Грогоно Питер Программирование на языке Паскаль. — М.: «Мир», 1982.

Йенсен К., Вирт Н. Паскаль. Руководство для пользователя и описание языка. — М.: «Финансы и статистика», 1982.

Культин Н.Б. Delphi 6. Программирование на Object Pascal. — СПб.: «БХВ-Петербург», 2001. — С. 528. — ISBN 5-94157-112-7.

Моргун Александр Николаевич Программирование на языке Паскаль (Pascal). Основы обработки структур данных. — М.: «Диалектика», 2005. — С. 576. — ISBN 5-8459-0935-X.

Перминов Олег Николаевич Язык программирования Паскаль : Справочник. — М.: «Радио и связь», 1989. — С. 128. — ISBN 5-256-00311-9.


Приложение 



Program kursovay;

uses crt;					{Подключение библиотеки}

var                                {Блок объявления переменных}

   second:integer;			{Переменная для вывода меню}

   c1,c2,c3,c4,c5,c6:char;		{Переменные для вывода рамки}

   x1,x2,y1,y2,yf:integer;		{Координаты для вывода сообщений}

   Xa,Ya,Xb,Yb,Xc,Yc:integer;		{Координаты для вывода сообщений}

  ax,ay,az,bx,by,bz,cx,cy,cz:real;	{Переменные для расчета сторон треугольн.}



Procedure Forma1;						{Процедура Forma1}

var x1,x2,y1,y2:integer;

procedure Frame (x1,x2,y1,y2:integer);	{Процедура Frame}

var

    x,y:integer;

    c1,c2,c3,c4,c5,c6:char;

begin                             {Операторы присвоения}

    c1:=chr(218);

    c2:=chr(196);

    c3:=chr(191);

    c4:=chr(179);

    c5:=chr(192);

    c6:=chr(217);

    gotoxy(x1,y1);                     {Установка экрана на позицию x1,y1}                

    write(c1);

    for x:=x1+1 to x2-1 do write (c2);  {Оператор цикла}

    write (c3);                         {Оператор вывода переменной с3}

    for y:=y1+1 to y2-1 do

        begin

            gotoxy (x1,y);              {Прочерчивание горизонтальной линии}

            write (c4);                 {Оператор вывода переменной с4}                 

            gotoxy (x2,y);

            write (c4);

        end;

            gotoxy (x1,y2);

            write (c5);

        for x:=x1+1 to x2-1 do write (c2);

            write(c6);

end;

         begin

              clrscr;                  {Очистка экрана}

              x1:=4; x2:=76;

              y1:=4; y2:=23;

              frame (x1,x2,y1,y2);

               gotoxy (12,7);

              write (‘Название своего универа ');

               gotoxy (27,8);

              write ('ФИЛИАЛ ______________);

               gotoxy (33,10);

              write ('КУРСОВАЯ РАБОТА');

               gotoxy (19,11);

              write ('по дисциплине информатика и программирование');

               gotoxy (17,12);

              write ('на тему создание прикладного программного обеспечения');

               gotoxy (22,13);

              write ('в среде программирования Turbo Pascal');

               gotoxy (45,15);

	      write ('Работу выполнила: студентка');

	       gotoxy (45,16);

              write (‘_____ курса группы ______');

               gotoxy (45,17);

              write (‘ФИО);

               gotoxy (45,18);

              write ('Работу проверил: ');

               gotoxy (45,19);

              write ('преподаватель кафедры ПИ');

               gotoxy (45,20);

              write (ФИО препода.');

              readkey;

end;





{Процедура экранная форма меню}

procedure Menu;

begin

     TextBackGround(white); {тут можешь менять цвета}

     TextColor(black);

     Clrscr;

     x1:=4;

     x2:=76;

     y1:=4;

     y2:=21;

     c1:=chr(205);

     c2:=chr(201);

     c3:=chr(187);

     c4:=chr(186);

     c5:=chr(200);

     c6:=chr(188);

     yf:=10;

     gotoxy(23,yf);

     writeln('1. " Рассчитать длину средней линии трапеции "');

     yf:=yf+1;

     gotoxy(23,yf);

     writeln('2. "Пронумеровать матрицу по её второй норме"');

     yf:=yf+1;

     gotoxy(23,yf);

     writeln('3. "Выход"');

     yf:=yf+1;

     gotoxy(23,yf);

     gotoxy(23,yf);

     writeln;

     yf:=yf+1;

     gotoxy(23,yf);

     writeln('Введите номер задания для выполнения (1-3)');

     yf:=yf+19;

     gotoxy(23,yf);

     writeln;

end;





{*************1 zadanie********************}

procedure zadanie1;

label1;

var

   x1,x2,x3,x4:integer;

   y1,y2,y3,y4:integer;

   q:array[1..4] of integer;

   k:array[1..4] of integer;

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

   z,a,i:integer;

   Dlin1,Dlin2,Dlin3:real;

Begin

     1:;

     ClrScr;

Writeln(‘Введите координаты точки A(x,y)’);

Readln(x1,y1);

Writeln(‘Введите координаты точки b(x,y’);

Readln)x2,y2);

Writeln(‘Введите координаты точки C(x,y)’);

Readln(x3,y3);

Writeln(‘Введите координаты точки D(x,y)’);

Readln(x4,y4);

K[1]:=x2-x1;

K[2]:=x3-x2;

K[3]:=x4-x3;

K[4]:=x1-x4;

L[1]:=y2-y1;

L[2]:=y3-y2;

L[3]:=y4-y3;

L[4]:=y1-y4;

Z:=0;

A:=0;

For i:=1 to 4 do

Begin

     If k[i]=0 then

     Z:=z+1;

End;

If z>2 then

Begin

     Writeln(‘неправильно заданы координаты’);

     Goto 1;

End;

For i:=1 to 4 do

Begin

     If l[i]=0 then

     a:=a+1;

end;

if a>2 then

begin

     writeln(‘неправильно заданы координаты’);

     Goto 1;

End;

q[1]:=k[1]*l[3];

q[2]:=k3*l[1];

q[3]:=k[2]*l[4];

q[4]:=k[4]*l[2];

if q[1]=q[2] then

begin

     if q[3]=q[4] then

     begin

     writeln(‘неправильно введены координаты!’);

     readln;

     Goto 1;

     End

     Else

     Writeln(‘координаты введены правильно!’);

End

Else

Begin

     If q[3]=q[4] then

     Writeln(‘неправильно введены координаты!’);

     Readln;

     Goto 1;

   End;

End;

    Dlin1:=abs(sqrt(sqr(x2-x1)+sqr(y2-y1)));

    Dlin2:=abs)sqrt(sqr(x3-x4)+sqr(y3-y4)));

    Dlin3:=(dlin1+dlin2)/2;

    Writeln(‘Длинна средней линии трапеции ABCD=’,dlin3:10:2);

end;

  

   



{END OF ZADANIE1*******************************************}





{2 zadanie***********************************************}

{Процедура задания №2}

procedure Zadanie2;



const

      n=5;

var

   i,k,x1,y1:integer;

   Max:array [1..n] of real;

   A:array [1..n,1..n] of real;

   B:array [1..n,1..n] of real;



begin

clrscr;

       x1:=4;

       y1:=4;

       writeln ('Vvod dannix' );

       for i:=1 to n do

       begin

            for k:=1 to n do

            begin

                 Gotoxy(x1,y1);

                 readln(a[i,k]);

                 x1:=x1+8;

            end;

            x1:=4;

            y1:=y1+1;

       end;

       Gotoxy(x1,y1);

       writeln ('Vivod dannix');

       x1:=4;

       y1:=y1+2;

   for i:=1 to n do max[i]:=0;

        for k:=1 to n do

        for i:=1 to n do

        if abs(a[i,k])>max[k] then

             max[j]:=abs(a[i,k]);

        Gotoxy(x1,y1);

        writeln('Vvivod matrichi B[i,k]');

        x1:=4;

        y1:=y1+1;

   for i:=1 to n do

   begin

   writeln;

        for k:=1 to n do

        begin

	     b[i,k]:=a[i,k]/max[k];

             write (B[i,k]:5:2);



        end;

   end;

readkey;

end;



{END OF ZADAN2*******************************************}





begin

     Forma1;

     clrscr;

     second:=0;

     while second <> 3 do

     begin

          Menu;

          readln(second);

          case second of

               1: zadanie1;

               2: zadanie2;

               3: exit;

          end;

     end;

end.