Материал: Программа, предназначенная для осуществления определенных действий над заданной матрицей

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

К булевским операндам применимы следующие логические операции:

not and or xor.

ЛОГИЧЕСКИЙ тип определен таким образом, что FALSE < TRUE. Это позволяет применять к булевским операндам все операции отношения.

В ТУРБО ПАСКАЛЬ введены еще разновидности логического типа: ByteBool, WordBool и LongBool, которые занимают в памяти ЭВМ один, два и четыре байта соответственно.

Символьная константа может записываться в тексте программы тремя способами:

как один символ, заключенный в апострофы, например:

'A' 'a' 'Ю' 'ю';

с помощью конструкции вида #K, где K - код соответствующего символа, при этом значение K должно находиться в пределах 0..255;

с помощью конструкции вида ^C, где C - код соответствующего управляющего символа, при этом значение C должно быть на 64 больше кода управляющего символа.

К величинам символьного типа применимы все операции отношения.

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

Ord(C) Chr(K).

Первая функция определяет порядковый номер символа С в наборе символов, вторая определяет по порядковому номеру К символ, стоящий на К-ом месте в наборе символов. Порядковый номер имеет целый тип.

К аргументам символьного типа применяются функции, которые определяют предыдущий и последующий символы:

Pred(C) Succ(C). Pred('F') = 'E' ; Succ('Y') = 'Z' .

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

Для литер из интервала 'a'..'z' применима функция UpCase(C), которая переводит эти литеры в верхний регистр 'A'..'Z'.

АДРЕСНЫЙ тип (Pointer) определяет переменные, которые могут содержать значения адресов данных или фрагментов программы. Для хранения адреса требуются два слова (4 байта), одно из них определяет сегмент, второе - смещение.

Работа с адресными переменными (указателями) будет рассмотрена позже, сейчас отметим, что для получения значения адреса какой-либо переменной введена унарная операция @.

1.6 Константы


Тип констант в языке ПАСКАЛЬ определяется по их виду: константы целого типа - это целые числа, не содержащие десятичной точки, константы действительного типа - действительные числа, логические константы - логические значения TRUE и FALSE, символьные константы - либо строки длиной в один символ, либо конструкции вида #K или ^K.

Язык ПАСКАЛЬ допускает использовать синонимы для обозначения констант, в этом случае текст программы содержит раздел описания констант, например: {}

1.7 Переменные. Инициализация переменных


Тип переменных определяется пользователем в разделе описания переменных:{}

В настоящее время в профессиональном программировании принято записывать имена переменных с использованием так называемой венгерской нотации.

Венгерская нотация - это соглашение о наименованиях переменных и функций. Соглашение широко используется при программировании на языках PASCAL, C и в среде WINDOWS.

Венгерская нотация основывается на следующих принципах:

имена переменных и функций должны содержать префикс, описывающий их тип;

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

Префиксы записываются малыми буквами, первая буква каждого слова -заглавная, префиксы и слова записываются либо слитно, либо через символ _ (подчеркивание).

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

Префикс Тип Префикс Тип

-----------------------------------------------------------------------------------

by Byte si Single

sh Shortint d DoubleInteger e ExtendedWord c CompLongint ch Char Real b Boolean

-----------------------------------------------------------------------------------

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

a ArrayStringStringzSetRecordFileText

Например:, arVector[1..20], sName, iCount.

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

Для задания начальных значений переменным (инициализации переменных) TURBO PASCAL позволяет присваивать начальные значения переменным одновременно с их описанием. Для этого используется конструкция

имя переменной: тип = значение;

которая должна быть размещена в разделе описания констант, например:

const rWeight: Real = 0.4;

1.8 Оператор присваивания


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

1.9 Операторы ввода и вывода


Рассмотрим организацию ввода и вывода данных с терминального устройства. Терминальное устройство - это устройство, с которым работает пользователь, обычно это экран (дисплей) и клавиатура.

Для ввода и вывода данных используются стандартные процедуры ввода и вывода Read и Write, оперирующие стандартными последовательными файлами

INPUT и OUTPUT.

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

Для ввода исходных данных используются операторы процедур ввода:

Read(A1,A2,...AK);(A1,A2,...AK);

ReadLn;

Первый из них реализует чтение К значений исходных данных и присваивание этих значений переменным А1, А2, ..., АК.

Второй оператор реализует чтение К значений исходных данных, пропуск остальных значений до начала следующей строки, присваивание считанных значений переменным А1, А2, ..., АК. Третий оператор реализует пропуск строки исходных данных.

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

Чтение исходных данных логического типа в языке ПАСКАЛЬ недопустимо.

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

var rV, rS: Real;

iW, iJ: Integer;

chC, chD: Char;

................(rV, rS, iW, iJ);(chC, chD);

Значения исходных данных могут отделяться друг от друга пробелами и нажатием клавиш табуляции и Enter.

Для вывода результатов работы программы на экран используются операторы:

Write(A1,A2,...AK);(A1,A2,...AK);

WriteLn;

Первый из этих операторов реализует вывод значений переменных А1, А2,...,АК в строку экрана. Второй оператор реализует вывод значений переменных А1, А2, ..., АК и переход к началу следующей строки. Третий оператор реализует пропуск строки и переход к началу следующей строки.

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

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

Форма представления значений в поле вывода соответствует типу переменных и выражений: величины целого типа выводятся как целые десятичные числа, действительного типа - как действительные десятичные числа с десятичным порядком, символьного типа и строки - в виде символов, логического типа - в виде логических констант TRUE и FALSE.

Оператор вывода позволяет задать ширину поля вывода для каждого элемента списка вывода. В этом случае элемент списка вывода имеет вид А:К, где А - выражение или строка, К - выражение либо константа целого типа.

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

Пример записи операторов вывода:

var rA, rB: Real; iP,iQ:Integer;

bR, bS: Boolean; chT, chV, chU, chW: Char;

. . . . . . . . . . . .(rA, rB:10:2);(iP, iQ:8);(bR, bS:8);(chT, chV, chU, chW);

1.10 Структура программы


Программа на языке ПАСКАЛЬ состоит из заголовка, разделов описаний и раздела операторов.

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

Раздел описания модулей определяется служебным словом USES и содержит имена подключаемых модулей (библиотек) как входящих в состав системы TURBO PASCAL, так и написанных пользователем. Раздел описания модулей должен быть первым среди разделов описаний.

Имена модулей отделяются друг от друга запятыми:

uses CRT, Graph;

Любой оператор в программе может быть помечен меткой. В качестве метки используются произвольные целые без знака, содержащие не более четырех цифр, либо имена. Метка ставится перед оператором и отделяется от него двоеточием. Все метки, используемые в программе, должны быть перечислены в разделе описания меток, например:3, 471, 29, Quit;

Описание констант позволяет использовать имена как синонимы констант, их необходимо определить в разделе описаний констант:

const K= 1024; MAX= 16384;

В разделе описания переменных необходимо определить тип всех переменных, используемых в программе:

var P,Q,R: Integer;,B: Char;,F2: Boolean;

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

Раздел операторов представляет собой составной оператор, который содержит между служебными словами .......end

последовательность операторов. Операторы отделяются друг от друга символом ; .

Текст программы заканчивается символом точка.

Кроме описаний и операторов ПАСКАЛЬ - программа может содержать комментарии, которые представляют собой произвольную последовательность символов, расположенную между открывающей скобкой комментариев { и закрывающей скобкой комментариев }.

Текст ПАСКАЛЬ - программы может содержать ключи компиляции, которые позволяют управлять режимом компиляции.

Синтаксически ключи компиляции записываются как комментарии. Ключ компиляции содержит символ $ и букву-ключ с последующим знаком + (включить

режим) или - (выключить режим). Например:

{$E+} - эмулировать математический сопроцессор;

{$F+} - формировать дальний тип вызова процедур и функций;

{$N+} - использовать математический сопроцессор;

{$R+} - проверять выход за границы диапазонов.

Некоторые ключи компиляции могут содержать параметр, например:

{$I имя файла} - включить в текст компилируемой программы названный файл.

Пример записи простой программы:

Program TRIANG;

var A, B, C, S, P: Real;(A,B,C);(A,B,C);:=(A+B+C)/2;:=Sqrt(P*(P-A)*(P-B)*(P-C));('S=',S:8:3).

2. Экспериментальная часть.


2.1 Постановка задачи


Задана действительная квадратная матрица А порядка n. Построить и вывести на печать матрицу:

  …


  …

2.2 Алгоритм решения задачи



Алгоритм

функции вычисляющей вычисляющей n!

n-степень числа (fac(a))

(step(a,b)).












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


При запуске программы появляется окно с запросом порядка исходной матрицы. После ввода порядка матрицы необходимо нажать “Enter”. Далее появляется окно с вопросом: “ввести вручную?”; и двумя кнопками “Yes” и “No”. Если нажать “Yes” то матрица будет задана пользователем с клавиатуры, если “No” то матрица будет заполнена случайным образом числами то 1 до 100. После заполнения матрицы необходимо нажать “Enter” для вывода на экран матрицы полученной из первоначальной по формуле:. Заключающей стадией выполнения программы является вывод окна с вопросом: “Повторить?”; и двумя кнопками “Yes” и “No”.

2.4 Анализ ошибок и отладка программы


В ходе реализации проекта возникли следующие трудности:

· Отсутствие функций и процедур позволяющих вычислить n-ую степень числа и факториал числа.

·        Отсутствие типа данных, переменная которого была бы способна вместить число (5!)5 и более.

Устранение данных трудностей:

· Написание подпрограмм выполняющих требуемые действия.

·        Наложение ограничений на размер изначальной матрицы.

2.5 Анализ результатов


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

Заключение


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

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

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


1.Епанешников А.М., Епанешников В.А. Программирование в среде Turbo Pascal 7.0. -М.: Диалог-МИФИ, 1995, -288 с.

.Фаронов В.В. Турбо Паскаль 7.0 М.: Нолидж,2002

. Методические указания к лабораторным работам № 5-8 по курсу “Алгоритмические языки и программирование” для студентов специальности 23.03 “Конструирование и технология радиоэлектронных средств” дневной и заочной форм обучения./Воронеж. Политехн. ин-т; Сост.: В.М. Шишкин, Н.Э. Самойленко. Воронеж. 1991.- 44 с.

. ГОСТ 19.003-80. Единая система программной документации. Схемы алгоритмов и программ. Обозначения условные и графические. -М.: Государственный комитет СССР по стандартам. 1988, -144 с.

. Методические указания по выполнению курсовых работ по дисциплине “Алгоритмические языки и программирование” для студентов специальности 23.03 всех форм обучения./Воронеж. Политехн. ин-т; Сост. В.М. Шишкин, Н.Э. Самойленко. Воронеж. 1990.- 34 с.

Приложение


Листинг программы.

program 7.2;

uses Graph ,Crt;

label lb1,lb2,lb3,lb4,

rb1,rb2,rb3,rb4,,b1;mp,mb,n,,j,,w,,q,,b: integer;: array [1..10,1..10] of single;,e:string; z:char;fac(x:longint):longint;i,,:longint;:=1;i:=1 to x do:=k*i;:=q;;:=q;;vivod;i:=1 to n doj:=1 to n do(a[i,j]:6:4,s);(20+60*(i-1),20+15*j,s );;;step(r,t:longint):longint;k,:longint;:=r;k:=1 to t-1 do:=r*w;:=r;;okno;(w,q,w+v,q+b,clipon);(1,t);(0,0,640,420);(15);(0,2,1);(0,0,0,b);(3,3,3,b-3);(0,0,v,0);(3,3,v-3,3);(v,0,v,b);(v-3,3,v-3,b-3);(v,b,0,b);(v-3,b-3,3,b-3);;;:=false;:=detect;(mb,mp,'c:\bp\bgi');:;(0,0,0);(5);:=1;:=2;

q:=2;

b:=80;

v:=280;

okno;

outtextxy(4,18,'Введите порядок матрицы');

outtextxy(4,30,'(от 1 до 4) n=');

gotoxy(16,3);(n);;n>4 thenb1;;:=115;:=400;:=200;:=100;:=7;;(1,9);(4);(0,0,3);(20,30,100,60);(380,30,300,60);(19,29,101,29);(19,29,19,61);(19,61,101,61);(101,61,101,29);(381,29,381,61);(381,61,299,61);(299,61,299,29);(299,29,382,29);(0,0,2);(100,10,'Ввести вручную?');(4,0,0);(35,21,'No');(325,22,'Yes');(2);;:rb4::=readkey;(1,9);(4);(0,0,3);(20,30,100,60);(380,30,300,60);(19,29,101,29);(19,29,19,61);(19,61,101,61);(101,61,101,29);(381,29,381,61);(381,61,299,61);(299,61,299,29);(299,29,382,29);(0,0,2);(100,10,'Ввести вручную?');(4,0,0);(35,21,'No');(325,22,'Yes');(2);z=#75 then(1,4);(20,30,100,60);(35,21,'No');(325,22,'Yes');:=readkey;z=#13 thenrb1goto rb3;;z=#77 then(1,4);(380,30,300,60);(35,21,'No');(325,22,'Yes');:=readkey;z=#13 thenrb2goto rb4;;:;(0,0,0);:=1;:=10;:=60;:=300;:=140;;(w+10,q-50,'Сгенерированная матраца :');i:= 1 to n doj:=1 to n do[i,j]:=random(100);;;b2;:;(0,0,0);:=10;:=60;:=520;:=180;:=1;;(w,q-50,'Введите матрицу, нажимая Enter между a[i,j]:');j:=1 to n doi:=1 to n do(i,s);(j,e);:='a['+e+','+s+']=';(w+(i-1)*120,q-52+j*16,s);(i*15-4,j+5);(a[i,j]);;: