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

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

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

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

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

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

Введение

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

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

Поэтому сегодня практически все программы создаются с помощью языков программирования. Теоретически программу можно написать и средствами обычного человеческого (естественного) языка - это называется программированием на метаязыке, но автоматически перевести такую программу в машинный код пока невозможно из-за высокой неоднозначности естественного языка. Языки программирования - искусственные языки. От естественных они отличаются ограниченным числом «слов», значение которых понятно транслятору, и очень строгими правилами записи команд (операторов). Совокупность подобных требований образует синтаксис языка программирования, а смысл каждой команды и других конструкций языка - его семантику. Нарушение формы записи программы приводит к тому, что транслятор не может понять назначение оператора и выдает сообщение о синтаксической ошибке, а правильно написанное, но не отвечающее алгоритму использование команд языка приводит к семантическим ошибкам (называемым еще логическими ошибками или ошибками времени выполнения).

Разные типы процессоров имеют разные наборы команд. Если язык программирования ориентирован на конкретный тип процессора и учитывает его особенности, то он называется языком программирования низкого уровня. В данном случае «низкий уровень» не значит «плохой». Имеется в виду, что операторы языка близки к машинному коду и ориентированы на конкретные команды процессора.

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

1. Теоретическая часть

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

Дан двухмерный массив размером MxN. Найти сумму всех элементов каждого столбца массива. Из первых четырех строк массива сформировать четыре новых вектора (одномерные массивы). Для каждого определить сколько раз меняется знак.

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

- число строк и столбцов M и N;

- двухмерный массив действительных чисел размерностью MxN.

Выходные данные:

- сумма всех элементов каждого столбца массива;

- четыре вектора, полученные их первых четырех строк массива;

- количество смены знака в каждом векторе.

1.2 Описание языка программирования

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

Достоинством машинно-зависимых языков является высокое качество программ (минимальный объем используемой памяти при максимальной скорости счета). Однако применять такие языки для написания сложных программ практически невозможно из-за высоких временных затрат на создание и отладку программ.

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

Система программирования турбо паскаль представляет собой единство двух в известной степени самостоятельных начал: компилятора с языка программирования паскаль (язык назван в честь выдающегося французского математика и философа Блеза Паскаля (1623 - 1662)) и некоторой инструментальной программной оболочки, способствующей повышению эффективности создания программ. В дальнейшем, реализуемый компилятором язык программирования Паскаль - язык Турбо Паскаль, а разнообразные сервисные услуги, предоставляемые программной оболочкой - среда Турбо Паскаля.

Среда Турбо Паскаля - это первое, с чем сталкивается любой программист, приступающий к практической работе с системой.

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

Алфавит языка Турбо Паскаль включает буквы, цифры, в том числе шестнадцатеричные, специальные символы, пробелы, зарезервированные слова и стандартные директивы.

Буквы - это буквы латинского алфавита от a до z и от A до Z. А также знак подчеркивания _. В Турбо Паскале нет различия между прописными и строчными буквами алфавита, если только они не входят в символьные и строковые выражения.

Цифры - арабские цифры от 0 до 9.

Каждая шестнадцатеричная цифра имеет значение от 0 до 15. Первые 10 значений обозначаются арабскими цифрами 0…9, остальные шесть - латинскими буквами A…F или a…f.

Специальные символы Турбо Паскаля: + - * / = , ` . : ; < > [ ] ( ) { } ^ @ $ #

К специальным символам относятся также следующие пары символов: <> <= >= := (* *) (. .)

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

Алгоритм - точное и понятное предписание исполнителю совершить последовательность действий, направленных на решение поставленной задачи.

Основные свойства алгоритмов:

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

Конечность (дискретность) - алгоритм должен представлять процесс решения задачи как последовательное выполнение простых (или ранее определенных) шагов (этапов).

Определенность - каждый шаг алгоритма должен быть четко и недвусмысленно определен и не допускать произвольной трактовки исполнителем.

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

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

Эффективность - каждый шаг алгоритма должен быть выполнен точно и за конечное разумное время.

В таблице представлены наиболее часто употребляемые символы.

Название символа

Обозначение и пример заполнения

Пояснение

Процесс

Вычислительное действие или последовательность действий

Решение

Проверка условий

Модификация

Начало цикла

Предопределенный процесс

Вычисление по подпрограмме, стандартной подпрограмме

Ввод-вывод

Ввод-вывод в общем виде

Пуск-остановка

Начало, конец алгоритма, вход и выход в программу

Документ

Вывод результатов на печать

Транслятор (англ. translator -- переводчик) - это программа-переводчик, она преобразует программу, написанную на одном из языков высокого уровня, в программу, состоящую из машинных команд. Трансляторы реализуются в виде компиляторов или интерпретаторов, которые с точки зрения выполнения работы существенно различаются.

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

Интерпретатор (англ. interpreter -- истолкователь, устный переводчик) переводит и выполняет программу строка за строкой.

Системы программирования - это комплексы программ и прочих средств, предназначенных для разработки программ и их эксплуатации на конкретном языке программирования для конкретного вида ЭВМ.

Обычно система программирования включает:

- текстовый редактор,

- отладчик,

- транслятор,

- компоновщик (редактор связей),

- программа, обеспечивающая запуск программы.

Основные «горячие» клавиши системы программирования Турбо Паскаль:

F1 - вызвать справку;

F2 - записать файл из активного окна редактора на диск;

F3 - прочитать файл с диска и поместить его в окно редактора;

F5 - развернуть текущее окно редактора на весь экран или вернуть ему прежние размеры;

F6 - сделать активным следующее окно редактора;

F9 - откомпилировать программу;

F10 - сделать активным главное меню;

Ctrl+F9 - откомпилировать и скомпоновать программу, выполнить ее прогон;

Alt+X - завершить работу с Турбо Паскалем.

При компиляции Турбо Паскаль автоматически обнаруживает все синтаксические ошибки и их исправление, как правило, не вызывает проблем.

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

Program Test;

{Раздел описаний}

begin

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

end.

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

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

Описание типов и объектов должно начинаться зарезервированным словом type, описание констант - const, переменных - var и меток label.

Оператор присваивания - один из наиболее часто используемых операторов обработки данных. Выглядит следующим образом переменная--выражение. И переменная и выражение должны быть одного и того же типа. Составной оператор - это группа операторов ограниченная зарезервированными словами begin (в начале группы) и end (в конце). В данном случае эти зарезервированные слова называются операторными скобками.

Для вывода информации на экран служит процедура Write и ее модификация WriteLn.

WriteLn отличается от Write тем, что после вывода на экран всех своих аргументов переводит курсор на следующую строку, и следующий вывод на экран будет осуществлён с начала следующей строки.

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

WriteLn ('Дискриминант квадратного уравнения равен',b*b-4*а*с); WriteLn ('x1=',xl, 'х2=',х2);

Допускается использование WriteLn без аргументов. Тогда вывода на экран не происходит, а курсор переводиться на следующую строку.

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

WriteLn (`Дискриминант квадратного уравнения равен', b: 7:3);

где, 7 - это количество позиций, отводимое под число, 3 -количество позиций для дробной части. Одну позицию всегда занимает запятая.

Для ввода значений переменных с клавиатуры служит процедура Read и её модификация ReadLn.

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

ReadLn(a. b, с, d);

Допускается использование ReadLn() без аргументов для остановки работы программы до нажатия пользователем клавиши Enter.

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

Элементы массива располагаются в последовательных ячейках памяти, обозначаются именем массива и индексом. Каждое из значений, составляющих массив, называется его компонентой (или элементом массива)

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

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

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

Для размещения массива в памяти ЭВМ отводится поле памяти, размер которого определяется типом, длиной и количеством компонент массива. В языке Pascal эта информация задается в разделе описаний. Массив описывается так:

имя массива: array [тип индекса] of базовый тип.

В разделе описаний двухмерный массив описывается следующим образом: Var

M: array [1..5,1..10] of integer;

Заполняется двумерный массив аналогично одномерному.

Условный оператор if может иметь две формы - краткую и полную.

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

If Усл then

Begin

Оператор1;

Оператор2;

Оператор3;

End;

Полная: при выполнении оператора анализируется условие Усл. Если оно имеет значение True, выполняется Оператор1, иначе выполняется Оператор2 оператор завершает свою работу. Как и в краткой форме Оператор1 и Оператор2 могут быть составными.

If Усл then

Begin

Оператор1;

Оператор2;

Оператор3;

End;

Else

Begin

Оператор4;

Оператор5;

Оператор6;

End;

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

For <параметр_цикла>:=<нач_значение> to <кон_значение> do Оператор

Оператор цикла с предварительной проверкой условия while записывается следующим образом

While Усл do Оператор;

При выполнении оператора анализируется условие Усл. если оно имеет значение True, выполняется Оператор, после чего вычисление выражения Усл и его проверка повторяются. Если Усл имеет значение False, оператор While прекращает свою работу. В случае если в теле цикла необходимо выполнять несколько операторов, используются операторные скобки begin-end между которыми помещается тело цикла.

While Усл do

Begin

Оператор1;

Оператор2;

Оператор3;

End;

Оператор цикла с постпроверкой проверкой условия repeat … until записывается следующим образом

Repeat Оператор until Усл;

Оператор выполняется хотя бы один раз, после чего вычисляется выражение Усл. Если его значение False, то Оператор повторяется, в противном случае цикл repeat … until завершает свою работу.

Под файлом понимается либо именованная область внешней памяти компьютера, либо логическое устройство - потенциальный источник или приемник информации. Любой файл имеет три характерные особенности. 1 - у него есть имя, что дает возможность программе работать одновременно с несколькими файлами. 2 - он содержит компоненты одного типа (любой тип Паскаля, кроме файлов). 3 - размер вновь создаваемого файла никак не оговаривается при его объявлении и ограничивается только емкостью устройств внешней памяти.

Переменную файлового типа можно задать следующим образом:

<имя>= file of <mun>;

<имя> =text;

<имя> =file;

Такое объявление файлов соответствует трем видам файлов: типизированный, текстовые, нетипизированные.

Любой файл становится доступным после выполнения процедуры открытия файла, которая заключается в связывании ранее объявленной файловой переменной с именем существующего или вновь создаваемого файла, а также направлении информацией: чтение или запись из файла. Используется стандартная процедура: assign(файловая переменная, `имя файла');

Имя файла это любое выражение строкового типа, которое строится по правилам определения имен в MC-DOS.

Инициирование файла - это указание направления передачи данных. Есть три варианта - только чтение, только запись, чтение и запись одновременно. Для чтения файл инициирует с помощью стандартной процедуры reset(файловая переменная);

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

Для записи информации в файл используется стандартная процедура rewrite(файловая переменная);

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

Для записи в ранее существующий файл используется стандартная процедура append(файловая переменная);

Данная процедура применима только к текстовым файлам (тип файловой переменной text).

Процедура close закрывает файл, однако связь файловой переменной с именем файла установленной ранее сохраняется close(файловая переменная);

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

Процедура rename переименовывает файл rename(файловая переменная, `новое имя');

Перед выполнением процедуры необходимо закрыть файл.

Процедура erase удаляет файл erase(файловая переменная);

Процедура flush очищает внутренний буфер файла и гарантирует сохранность всех последних и изменений файла на диске flush(файловая переменная);

Процедура ChDir обеспечивает изменение текущего каталога ChDir(`путь');

Процедура GetDir позволяет определить имя текущего каталога GetDir(<устройство>, <каталог >);

<Устройство> - выражение типа word, содержащее номер устройства( 1 - диск А, 2- диск В и т.д.); <каталог > - переменная типа string в которой возвращается путь к текущему каталогу на указанном диске.

Функция EOF тестирует конец файла и возвращает значение типа Boolean

EOF(файловая переменная);

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

Для доступа к строкам применяются процедуры Read, ReadLn - (чтение из файла в переменную), Write, WriteLn.

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

Стандартное состояние компьютера в момент запуска программы из среды ТурбоПаскаль соответствует текстовому режиму. Для использования графических средств необходимо определенным образом инициализировать графический режим работы видеоадаптера. Это достигается подключением нужного графического драйвера. Обычно они располагаются в папке BGI с расширением BGI, например, EGAVGA.BGI.

Процедура InitGraph инициализирует графический режим работы адаптера. Заголовок процедуры имеет вид:

Procedure InitGraph(var Driver, Mode: Integer;Path:String);

где, Driver определяет тип графического драйвера, а Mode задает режим его работы; Path - указывает путь, где расположен драйвер.

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

Driver:=Detect;

InitGraph(Driver,Mode, ` `);

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

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

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

Функции GetMaxX и GetMaxY возвращают значения, содержащие максимальные координаты экрана в текущем режиме по горизонтали и вертикали.

Процедура SetViewPort устанавливает прямоугольное окно на графическом экране. Заголовок процедуры имеет вид:

procedure SetViewPort(X1,Y1,X2,Y2:Integer; ClipOn: Boolean);

X1, Y1 - координаты левого верхнего угла, Х2, Y2 - правого нижнего. ClipOn определяет отсечку не уменьшающихся в окне элементов изображения - True элементы отсекаются, False - границы окна игнорируются.

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

procedurе MoveTo(X,Y: Integer);

Процедура MoveRel новое положение указателя в относительных единицах. Заголовок процедуры имеет вид:

procedurе MoveRel(DX,DY: Integer);

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

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

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

Procedure GetAspectRatio(var X,Y: Word);

Значение этих переменных позволяет вычислить отношения сторон графического экрана в пикселях и использовать его при построении правильных геометрических фигур.

Процедура PutPixel выводит заданным цветом точку по указанным координатам. Заголовок процедуры имеет вид:

procedurе PutPixel(X,Y: Integer; Color: Word);

Процедура Line вычерчивает линию с указанными координатами начала и конца. Заголовок процедуры имеет вид:

procedurе Line(X1,Y1,X2,Y2: Integer);

Процедура LineTo вычерчивает линию от текущего положения указателя до положения, заданного новыми координатами. Заголовок процедуры имеет вид:

procedurе LineTo(X,Y: Integer);

Процедура LineRel вычерчивает линию от текущего положения указателя до положения, заданного приращениями его координат. Заголовок процедуры имеет вид:

procedurе LineRed(DX,DY: Integer);

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

procedurе SetLineStyle(Type, Patten, Thick: Word);

где, Type, Patten, Thick - соответственно тип, образец и толщина вычерчиваемых линий. Тип линий может быть задан с помощью одной из следующих констант

SolidLn =0 {сплошная}

DotteLn =1{точечная}

CenterLn =2{штрих-пунктирная}

DasherdLn =3{пунктирная}

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

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

procedurе SetWriteMode(Mode);

Если параметр Mode имеет значение 0, выводимые линии накладываются на существующее изображение обычным образом, если значение равно 1, т это наложение осуществляется через «логическое ИЛИ», т.е. в точках пересечения светимость пикселей инвертируется. Процедура Rectangle вычерчивает прямоугольник с указанными координатами углов.

procedurе Rectangle(X1,Y1,X2,Y2: Integer);

Процедура DrawPoly вычерчивает произвольную ломаную линию, заданную координатами точек излома. Заголовок процедуры имеет вид:

procedurе DrawPoly(N: Word; var Points);

где, N - количество точек излома, включая обе крайние точки; Points переменная типа PointType, содержащая координаты точек излома. Точки излома задаются парой значений типа Word: первое определяет горизонтальную, второе - вертикальную координаты. Для них используется специальный определенный в модуле тип PointsType. При вычерчивании используется текущий цвет и стиль линий. Процедура Circle вычерчивает окружность. Заголовок процедуры имеет вид:

procedurе Circle(X,Y: Integer; R: Word);

где, X,Y - координаты центра; R - радиус в пикселях. Окружность выводится текущим цветом. Толщина линий устанавливается текущем стилем, но вид лини всегда SolidLn (сплошная).

Процедура Arc чертит дугу окружности. Заголовок процедуры имеет вид:

procedurе Arc (X,Y:Integer; BegA,EndA,R: Word);

где X,Y - координаты центра; BegA, EndA - соответственно начальный и конечный углы дуги; R - радиус. Углы отсчитываются против часовой стрелки и указываются в градусах. Нулевой угол соответствует горизонтальному направлению вектора слева направо.

Процедура Ellipse чертит дугу эллипса. Заголовок процедуры имеет вид:

procedurе Ellipse (X,Y: Integer; BegA,EndA,RX,RY: Word);

где X,Y - координаты центра; BegA, EndA - соответственно начальный и конечный углы дуги; RX, RY - горизонтальный и вертикальный радиусы эллипса в пикселях. Процедура OutText выводит текстовую строку, начиная с текущего положения указателя. Заголовок процедуры имеет вид:

procedurе OutText(Txt:String);

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

procedurе OutTextXY(X,Y: Integer; Txt:String);

Процедура SetTextStyle устанавливает стиль текстового ввода на графический экран. Заголовок процедуры имеет вид:

procedurе SetTextStyle(Font, Direct, Size:Word);

где, Font - код шрифта, Direct - код направления(0 - слева направо, 1 - снизу вверх), Size - код размера шрифта.

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

procedurе SetTextJustify(Horiz, Vert:Word);

где Horiz - горизонтальное выравнивание, Vert - вертикальное.

Процедура SetColor устанавливает текущий цвет для выводимых линий и символов. Заголовок процедуры имеет вид:

procedure SetColor(Color: Word);

Процедура SetBkColor устанавливает цвет фона. Заголовок процедуры имеет вид

procedure SetBkColor(Color: Word);

Процедура SetFillStyle устанавливает тип и цвет заполнения. Заголовок процедуры имеет вид:

procedure SetFillStyle(Fill, Color: Word);

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

SolidFill =1; {сплошное заполнение}

LineFill =2; {заполнение символами --------}

LtSlashFil =3; {заполнение символами ////////}

SlashFill =4; {заполнение утолщенными символами ////////}

BkSlashFill =5; {заполнение утолщенными символами \\\\\\\\}

LtBkSlashFill =6; {заполнение символами \\\\\\\\}

HatchFill =7; {заполнение символами ++++++}

XhatchFill =8; {заполнение символами хххххх}

IntegrLeaveFill =9; {заполнение символами ######}

WideDotFill =10; {заполнение редкими точками}

CloseDotFill =11; {заполнение частыми точками}

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

procedure FloodFill(X, Y: Integer; Border: Word);

где, X,Y - координаты любой точки внутри замкнутой фигуры; Border - цвет граничной линии.

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

procedure Bar(X1, Y1, X2, Y2, Depth: Integer);

Процедура Bar3D вычерчивает трехмерное изображение параллелепипеда и закрашивает его переднюю грань. Заголовок процедуры имеет вид:

procedure Bar3D(X1, Y1, X2, Y2: Integer; Top: Boolean);

где, Top - способ изображения верхней грани (True - верхняя грань вычерчивается). Передняя грань заливается текущим стилем заполнения.

Процедура FillPoly обводит линией и закрашивает замкнутый многоугольник. Заголовок процедуры имеет вид:

procedure FillPoly(N: Word; var Coords);

где, N - количество вершин замкнутого многоугольника; Coord - переменная типа PoinType, содержащая координаты вершин.

Для построения круговых диаграмм удобно использовать процедуру PieSlice, которая вычерчивает и заполняет сектор окружности. Заголовок процедуры имеет вид:

procedure PieSlice(X, Y: Integer; BegA, EndA, R: Word);

где, BegA и EndA начальный и конечный угол сектора

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

procedure GetImage(X1, Y1, X2, Y2: Integer; var Buf);

где, Buf - переменная, в которую будет помещена копия видеопамяти с фрагментом изображения.

Процедура PutImage выводит в заданное место экрана копию фрагмента изображения. Заголовок процедуры имеет вид:

procedure PutImage(X, Y: Integer; var Buf; Mode: Word);

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

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

2.1 Описание структурной схемы алгоритма

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

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

Блок-схема получения четырех новых вектора из первых строк массива представлена на рисунке 3.

Блок-схема количества смены знака в каждом векторе представлена на рисунке 4.

2.2 Описание программного кода

Разработанная программа состоит из одного модуля VAR5.PAS. Рассмотрим его состав.

Глобальные переменные:

Типы:

a - двумерный массив целых чисел максимальной размерности mxn;

a - векторы целых чисел максимальной размерности n;

m, n - соответственно число строк и столбцов матрицы, тип integer;

i,j - счётчики массива, тип integer;

ch - переменная символьного типа;

U,V - переменные целого типа;

s - сумма столбцов двухмерного массива;

k - счетчик изменения знака в векторах;

Входные параметры:

m - число строк массива, тип integer;

n - число столбцов массива, тип integer;

a - двумерный массив целых чисел;

Выходные параметры:

s - сумма столбцов двухмерного массива, тип integer;

a - векторы целых чисел, размера n;

k - количество смены знака в векторах, тип integer.

2.3 Ход отладки программы и контрольный пример

После набора текста программы приступаем к ее отладке или компиляции. Для компиляции программы выбираем из главного меню раздел Compile и из появившегося окна также раздел Compile (или можно нажать комбинацию клавиш Alt+F9). После этого производится компиляция программы. Если в процессе компиляции отладчик интегрированной среды обнаружит в программе ошибки, то отладка останавливается и на экран в верхнюю строку окна редактирования выводится сообщение об ошибке с указанием ее номера и кратким описанием. После этого необходимо устранить ошибку и вновь повторить процесс компиляции.

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

При передвижении стрелок ^ и v выделяется тот пункт, на который соответственно перемещаем стрелками.

При выборе нужного пункта клавишей Enter выполняется только пункт 4 (выход).

В обычном режиме программа работает без каких-либо проблем.

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

После ввода строк и столбцов программа выдает:

- двухмерный массив (рандомно);

- сумму каждого столбца массива;

- векторы из первых четырех строк массива;

- количество смены знаков в каждом векторе.

Заключение

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

Программа работает хорошо, не считая модуля Graph. В остальном задача выполнена верно. Программа работает исправно.

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

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

1. Симонович С.В. Информатика: Базовый курс - СПб.: Питер, 2005. - 640 с.

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

3. Фаронов В.В. Turbo Pascal: Учебное пособие - СПб.: Питер, 2007, - 367 c.

4. Методические указания к выполнению лабораторных работ №3-4 по дисциплине «Информатика» для студентов специальности 210201 «Проектирование и технология РЭС» очной и заочной форм обучения - Воронеж, 2010.

5. Методические указания к выполнению лабораторных работ №5-6 по дисциплине «Информатика» для студентов специальности 210201 «Проектирование и технология РЭС» очной и заочной форм обучения - Воронеж, 2010.

6. Методические указания к выполнению лабораторных работ №7-8 по дисциплине «Информатика» для студентов специальности 210201 «Проектирование и технология РЭС» очной и заочной форм обучения - Воронеж, 2010.

Приложение А

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

program var5;

uses crt, graph;

var

a:array[1..10,1..10] of integer;

s,i,j,k,n,m,GD,GM,U,V:integer;

Ch:char;

begin

GD:=Detect;

InitGraph(GD,GM,'');

SetBkColor(5);

SetColor(14);

rectangle(100,110,270,240);

SetColor(12);

OutTextXY(110,120,'1. rychnoi vvod');

SetColor(14);

OutTextXY(110,140,'2. random');

OutTextXY(110,160,'3. preobrazovat');

OutTextXY(110,180,'4. vihod');

readkey;

repeat

U:=0;

Ch:=readkey;

case ch of

#72:V:=V-1;

#80:V:=V+1;

#13:U:=1;

end;

if V=0 then V:=4;

if V=5 then V:=1;

Case V of

1:begin

SetColor(12);

OutTextXY(110,120,'1. rychnoi vvod');

SetColor(14);

OutTextXY(110,140,'2. random');

OutTextXY(110,160,'3. preobrazovat');

OutTextXY(110,180,'4. vihod');

end;

2:begin

SetColor(12);

OutTextXY(110,140,'2. random');

SetColor(14);

OutTextXY(110,120,'1. rychnoi vvod');

OutTextXY(110,160,'3. preobrazovat');

OutTextXY(110,180,'4. vihod');

end;

3:begin

SetColor(12);

OutTextXY(110,160,'3. preobrazovat');

SetColor(14);

OutTextXY(110,120,'1. rychnoi vvod');

OutTextXY(110,140,'2. random');

OutTextXY(110,180,'4. vihod');

end;

4:begin

SetColor(12);

OutTextXY(110,180,'4. vihod');

SetColor(14);

OutTextXY(110,120,'1. rychnoi vvod');

OutTextXY(110,140,'2. random');

OutTextXY(110,160,'3. preobrazovat');

end;

end;

if U=1 then

Case V of

1:begin

writeln('vvedite kolichestvo strok i stolbcov');

read(n,m);

for i:=1 to n do

for j:=1 to m do

read(a[i,j]);

end;

2:begin

writeln('vvedite kolichestvo strok i stolbcov');

read(n,m);randomize;

for i:=1 to n do

begin

for j:=1 to m do

begin

a[i,j]:=random(10)+(-5);

write (a[i,j]:3);

end;

writeln;

end;

end;

3:begin

for j:=1 to m do

begin

s:=0;

for i:=1 to n do

S:=S+a[i,j];

writeln ('nomer stolbca: ',j,', summa= ',s);

end;

for i:=1 to 4 do

begin

writeln ('vektor iz ',i,' stroki');

for j:=1 to m do

write (a[i,j]:3,' ');

writeln;

end;

writeln ('kolichestvo smeni znakov');

for i:=1 to n do

begin

k:=0;

for j:=1 to m do

if a[i,j]>=0

then begin if a[i,j+1]<0

then k:=k+1;

end

else begin if a[i,j+1]>0

then k:=k+1;

end;

write(k,' ');

end;

{4:begin

Ch=#27;

end;}

end;

end;

Until Ch=#27;

Closegraph;

end.

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

...

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

  • Структура и основные элементы языка Turbo Pascal. Алгоритм составления простейших программ на Turbo Pascal. Применение условного оператора и сильноветвящихся алгоритмов. Циклы с предусловием и постусловием, сочетание циклических и условных операторов.

    реферат [64,0 K], добавлен 20.03.2016

  • Разработка эскизного и технического проектов программы "Helpopr" (ввод, хранение и вывод данных на дисплей по запросу пользователя). Язык программирования Turbo Pascal. Описание алгоритма программы. Требования к компьютеру и программному обеспечению.

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

  • Основы работы на языке высокого уровня Turbo Pascal. Основное оборудование и программное обеспечение. Операторы, необходимы для работы в графической среде Turbo Pascal. Запуск графического режима. Текст программы в графической среде Turbo Pascal.

    лабораторная работа [12,7 K], добавлен 14.05.2011

  • История создания и развитие Pascal. Особенности пакета программирования Turbo. его возможности редактора текстов, компилятора и отладчика. Построения программы на языке Turbo Pascal, ее структура, типы алгоритмов, одномерные и многомерные массивы.

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

  • Программирование и структура программы на языке Turbo Pascal и MS Visual C++6.0. Вычисление площади круга. Реализация программы в системе Turbo Pascal и MS VISUAL C++6.0 для Windows. Структура окна ТРW. Сохранение текста программы в файле на диске.

    лабораторная работа [3,7 M], добавлен 22.03.2012

  • Особенности поиска среднеарифметического значения элементов массива. Общая характеристика проблем разработки в среде Turbo Pascal программы упорядочивания массива по возрастанию. Рассмотрение основных этапов разработки программы на языке PASCAL.

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

  • Изучение текстового режима языка программирования Turbo Pascal. Написание игры "Змейка" с помощью средств, процедур и функций языка программирование Turbo Pascal. Структурное и функциональное описание разработки. Листинг и общие примеры работы программы.

    контрольная работа [286,3 K], добавлен 10.04.2011

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

    шпаргалка [776,8 K], добавлен 07.05.2010

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

    курсовая работа [359,0 K], добавлен 23.05.2012

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

    курсовая работа [70,5 K], добавлен 12.08.2011

  • Разработка программ на языке Turbo Pascal на основе использования массивов данных. Особенности хранения данных, способы объявления переменных, действия над элементами массивов, их ввод и вывод. Практическое применение одномерных и многомерных массивов.

    методичка [17,8 K], добавлен 25.11.2010

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

    курсовая работа [668,0 K], добавлен 25.02.2010

  • При помощи Turbo Pascal достаточно не просто создать программу, которая бы демонстрировала работу с базами данных. Для этого существует огромное количество специализированных программ. Основа и сущность формирования базы данных при помощи Turbo Pascal.

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

  • Понятие и история развития языка Turbo Pascal, оценка его графических возможностей и особенностей. Инициализация графического режима. Управление экраном и окнами, цветом и фоном, принципы работы с текстом. Построение графиков функций и изображений.

    курсовая работа [159,9 K], добавлен 17.12.2014

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

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

  • Характеристика используемой операционной системы, языка программирования. Структура программы на языке Turbo Pascal 7.1. Операторы языка Turbo Pascal. Проведение сортировки записей. Алгоритмы программы и подпрограмм. Причины возникновения ошибок.

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

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

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

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

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

  • Описание алгоритма решения задачи по вычислению суммы элементов строк матрицы с использованием графического способа. Детализация укрупненной схемы алгоритма и разработка программы для решения задачи в среде Turbo Pascal. Листинг и тестирование программы.

    курсовая работа [446,0 K], добавлен 19.06.2014

  • Решения задачи графическим и программным способами. Описание алгоритма решения графическим способом, укрупненная схема алгоритма. Ввод элементов двумерного массива, вывод преобразованного массива, разработка программы на языке pascal, листинг программы.

    курсовая работа [115,5 K], добавлен 22.05.2010

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