Типизированные и текстовые файлы

Под файлом понимается или именованная область внешней памяти ПК (твёрдого диска, эластичной дискеты, и др.), или логическое устройство – потенциальный источник либо приемник информации.

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

Var : File of ;{для типизированных файлов}

: Text; {для текстовых файлов}

: на данный момент; {для нетипизированных файлов}

К примеру:

Var f: File of real;

g: File of integer;

h: Text;

Возможно ввести новый тип данных:

Type text80 = File of string[80];

Var t: text80;

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

Program NameOfProgram(input, output);

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

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

Файловая переменная связывается с именем файла в следствии обращения к стандартной процедуре Assign:

Assign(, );

К примеру:

Assign(f, ’file1.dat’);

В случае, если имя файла задается в виде безлюдной строки, к примеру, Assign (f, ’’), то в зависимости от направления обмена данными файловая переменная связывается со стандартным файлом Input либо Output. Перед именем может указываться так называемый путь к файлу: имя диска и/либо имя текущего каталога и имена каталогов вышестоящих уровней. К примеру:

Assign(f, ’c:\dir\subdir\file1.dat’);

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

Типизированные файлы

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

Типизированный файл возможно открыть (инициировать) одной из двух стандартных процедур: Reset либо Rewrite. Параметр – файловая переменная:

Reset(f);

Rewrite(g);

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

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

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

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

Read(, )

Перечень ввода может содержать одну либо более переменных для того чтобы же типа, что и компоненты файла. Файл нужно открыть процедурой Reset. В случае, если файл исчерпан, обращение к Read приведёт к ошибке ввода-вывода. Процедуру ReadLn для типизированных файлов применять запрещено.

Запись в ранее открытый типизированный файл выполняется посредством процедуры Write:

Write(, )

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

Кроме этого для типизированных файлов смогут употребляться:

– Процедура Seek. Смещает указатель файла к требуемому компоненту файла. Формат обращения:

Seek(, )

Тут номер компонента – выражение типа Longint. Первый компонент файла имеет номер 0, т.е. вызов Seek(f, 0) перемещает указатель файла в начало файла. Процедуру нельзя применять к текстовым файлам.

– Функция FileSize. Возвращает значение типа Longint, которое содержит количество компонентов файла. Формат обращения:

FileSize()

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

Seek(f, FileSize(f)); { f – файловая переменная }

– Функция FilePos. Возвращает значение типа Longint, содержащее порядковый номер компонента файла, на что показывает указатель файла. Формат обращения:

FilePos()

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

– Функция EOF. Логическая функция, контролирующая, достигнут ли финиш файла (EOF – End Of File). Возвращает True, в случае, если достигнут финиш файла, т.е. файловый указатель стоит в конце файла. При записи это указывает, что очередной компонент будет добавлен в финиш файла, при чтении – что файл исчерпан. Может употребляться для файлов любого типа. К примеру, считывание элементов массива х из файла, в случае, если их число заблаговременно неизвестно, возможно оформить так:

i:=1;

While not EOF(f) do

Begin

read(f, x[i]); i:=i+1

end;

– Процедура Close. Дабы внесенные в файл эти сохранились на диске, файл требуется закрыть процедурой Close. Она закрывает файл, но сообщение файловой переменной с именем файла, установленная ранее процедурой Assign, сохраняется. Формат обращения:

Close()

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

Текстовые файлы

Текстовые файлы связываются с файловыми переменными, принадлежащими стандартному типу Text. Текстовый файл трактуется в Турбо Паскале как совокупность строчков переменной длины. Доступ к каждой строке вероятен только последовательно, начиная с первой, т.е. для доступа к какой-либо записи нужно сперва просмотреть все прошлые. При создании текстового файла в конце каждой записи (строчка) ставится особый показатель EOLn (End Of Line – финиш строчка), а в конце всего файла – показатель EOF (End Of File – финиш файла). Эти показатели возможно протестировать одноименными логическими функциями. При формировании текстовых файлов употребляются следующие системные соглашения:

EOLn – последовательность кодов ASCII #13 (CR) и #10 (LF);

EOF – код #26 стандарта ASCII.

Текстовый файл возможно открыт либо лишь для чтения (процедурой Reset), либо лишь для записи (Rewrite). Как и для типизированных файлов, применение Reset предполагает, что открываемый файл уже существует, в противном случае появляется неточность. При применении Rewrite открываемый файл может не существовать, в этом случае он создается, а если он уже существовал, то он очищается.

Для текстовых файлов, кроме Reset и Rewrite, имеется еще одна процедура открытия (инициации) файла –
Append. Наряду с этим ранее существовавший текстовый файл раскрывается для добавления (либо расширения) – т.е. для записи, но без очистки содержимого. Наряду с этим указатель файла устанавливается в его финиш. Формат обращения:

Append()

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

Для доступа к записям помогают процедуры Read, ReadLn, Write, WriteLn. К ним возможно обращаться с переменным числом фактических параметров, в качестве которых смогут употребляться знаки, числа и строки. Первым параметром в любой из этих процедур обязана находиться файловая переменная, которая связана с файлом либо логическим устройством процедурой Assign. В случае, если файловая переменная не указана, происходит обращение к стандартным файлам Input и Оutput, т.е. ввод разрешённых будет происходить с клавиатуры, а вывод – на экран.

Процедура Read снабжает ввод знаков, чисел и строк. Формат обращения:

Read(, )

Read()

Тут перечень ввода – последовательность из одной либо более переменных типа Char, String, и любого целого либо вещественного типа.

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

Процедура Write снабжает вывод информации в текстовый файл либо передачу ее на логическое устройство. Формат обращения:

Write(, )

Write()

Тут перечень вывода – последовательность из одного либо более выражений типа Char, String, Boolean, и любого целого либо вещественного типа. В случае, если файловая переменная отсутствует, подразумевается вывод в обычный файл Output, что в большинстве случаев связан с экраном ПК.

Любой элемент перечня вывода может иметь формат

: N1 : N2

К примеру,

WriteLn(’x=’,x:12:9);

Тут N1, N2 – целые числа (типа Word). Оба они смогут отсутствовать. Подпараметр N1, если он имеется, показывает минимальную ширину поля, в которое будет записываться символьное представление выводимого значения. В случае, если символьное представление имеет меньшую длину, чем N1, оно будет дополнено слева пробелами, в случае, если громадную длину, то подпараметр N1 игнорируется и выводится нужное число знаков.

Подпараметр N2 задает количество десятичных знаков в дробной части вещественного числа. Он может употребляться лишь совместно с N1 и лишь по отношению к выводимому выражению одного из вещественных типов. Если не указан подпараметр N2, вещественные числа выводятся в экспоненциальном формате (к примеру, –2.34567890234567Е+0002).

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

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

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

Логическая функция EOLn возвращает TRUE, в случае, если во входном текстовом файле достигнут маркер финиша строчка. Формат обращения:

EOLn()

В случае, если параметр опущен, функция контролирует обычный файл Input.

Практические задания

1. Дан файл f, компоненты которого являются целыми числами. Взять файл g из компонент файла f делением их на предельное количество среди этих компонент.

Program files;

var n,i,x,xmax: integer;

y: real;

f: file of integer;{файловые переменные}

g: file of real;

Begin

assign(f,’name1.dat’);{связывание файловых пере-}

assign(g,’name2.dat’);{ менных с именами файлов}

rewrite(f);{открытие нового файла }

writeln (’Введите количество чисел ’);

readln(n);

writeln (’Введите целые числа:’);

for i:=1 to n do{в цикле – ввод числа }

begin{и запись его в файл f }

read(x);

write(f, x);

end;

close(f);{файл f закрыт}

reset(f);{открытие файла f для чтения}

read(f, xmax);{инициализация переменной xmax}

while not EoF(f) do{чтение файла f и поиск максимума}

Begin

read(f, x);

if (xmax x) then xmax:= x;

end;

seek(f, 0);{установить указатель файла f на 0}

rewrite(g);{открытие файла g для записи}

while not EoF(f) do{в цикле формирование файла g}

Begin

read(f, x);

y:= x/max;

write(g, y);

end;

close(f); close(g);{закрыть файлы}

reset(g);{файл g открыть как существующий}

writeln (’Вывод файла g:’);

While not EoF(g) n do

Begin

read(g, y);

write(’ ’, y:7:3);

end;

close(g);

Readln

End.

2. В текстовом файле заданы: в первой строке порядок n квадратной матрицы А, в следующих n строчках – элементы матрицы А построчно. Изучить и запустить программу, считывающую матрицу из файла и делающую следующие действия: а) поиск большого и минимального их позиций и элементов, б) транспонирование матрицы, в) сложение матриц А и АТ. Результаты всех действий записать в финиш исходного файла.

Указание. Исходный файл возможно создать посредством редактора Турбо Паскаля либо программы Блокнот.

Program textfile;

var i,j,n:integer;

a,at:array[1..10,1..10] of real;

f: text;

fn: string[20];

Begin

write(‘Имя файла:’); readln(fn);

assign(f,fn);

reset(f);

readln(f,n);

for i:=1 to n do

Begin

j:=1;

While not EoLn(f) do begin

read(f,a[i,j]); j:=j+1 end;

Readln(f)

end;

close(f);

writeln(‘Матрица A:’);

for i:=1 to n do

Begin

for j:=1 to n do write(‘ ‘,a[i,j]:7:3);

Writeln

end;

{обработка матрицы}

max:=a[1,1]; min:=направляться1,1];

i1:=1; j1:=1; i2:=1; j2:=1;

for i:=1 to n do

for j:=1 to n do

Begin

if max

begin max:=a[i,j]; i1:=i; j1:=j end;

if max

begin max:=a[i,j]; i1:=i; j1:=j end;

at[i,j]:=a[j,i];

s[i,j]:=a[i,j]+at[i,j];

end;

{запись результатов в файл}

append(f);

writeln(f);

writeln(f,’Большой элемент a[‘, i1, ‘,’, j1,’]=’,max:7:3);

writeln(f,’Минимальный элемент a[‘, i2, ‘,’, j2,’]=’,min:7:3);

writeln(f,’Транспонированная матрица AT:’);

for i:=1 to n do

Begin

for j:=1 to n do write(f,’ ‘,at[i,j]:7:3);

Writeln(f)

end;

writeln(f,’Сумма S=A+AT:’);

for i:=1 to n do

Begin

for j:=1 to n do write(f,’ ‘,s[i,j]:7:3);

Writeln(f)

end;

close(f);

Readln

End.

Задания для независимой работы

1. Дан файл f, компоненты которого являются настоящими числами. Отыскать:

а) сумму компонент файла f;

б) громаднейшее и мельчайшее значение среди компонент;

в) разность первой и последней компонент.

2. Дан файл f, компоненты которого являются целыми числами. Отыскать:

а) количество четных чисел среди компонент;

б) среднее арифметическое всех компонент, не кратных 3;

в) большую сумму, составленную из трех идущих подряд компонент.

3. Дан текстовый файл f.

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

б) посчитать количество слов в файле;

в) выяснить, сколько в файле слов, складывающихся из одного, двух и трех знаков;

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

Лабораторная работа №7

Графика в Турбо Паскале

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

Различие между этими режимами содержится в возможностях управления выводом визуальной информации. В текстовом режиме минимальным объектом, отображаемым на экране, есть знак, алфавитно-цифровой либо какой-либо другой. В большинстве случаев экран монитора, трудящегося в текстовом режиме, разрешает отобразить 80 знаков по горизонтали и 25 знаков по вертикали, т.е. приобретаем матрицу 25´80 (25 строчков, 80 столбцов), что дает всего 2000 визуальных объектов. Нумерация столбцов и строк начинается с 1, т.е. знак, стоящий в верхнем левом углу, имеет координаты (1, 1).

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

В графическом режиме минимальным объектом, отображаемым на экране, есть так называемый пиксел – от британского pixel, появившегося в следствии объединения слов «рисунок» (picture) и «элемент» (element). Пиксел имеет меньшие размеры если сравнивать с знаком – на один знак в текстовом режиме отводится площадка размером в пара пикселов. Его геометрические размеры определяются разрешением монитора, которое в большинстве случаев задается в виде rх ´ rу, где rх – количество пикселов на экране по горизонтали, а ry – количество пикселов по вертикали. На практике употребляются не произвольные, а кое-какие определенные значения разрешения, к примеру, 320´200, 640´480, 800´600, 1024´768, 1280´1024 и т.д. Чаще всего при программировании на Турбо Паскале для DOS употребляется разрешение 640´480 (режим VGA).

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

Графические координаты задают положение точки на экране дисплея. Потому, что минимальным элементом, к которому имеет доступ программист, есть пиксел, конечно в качестве графических координат применять порядковые номера пикселов. Допустимый диапазон трансформации графических координат образовывает [0, rx – 1] для координаты x и [0, rу – 1] для y-координаты. Точкой отсчета есть верхний левый угол экрана, его координаты (0, 0). Значения x-координаты отсчитываются слева направо, а y-координаты – сверху вниз. Последнее отличает графические координаты от простых декартовых координат, принятых в математике, и является источником неточностей для начинающего программиста.

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

1. Графические координаты принимают лишь целочисленные значения.

2. Графические координаты принимают значения, ограниченные как снизу (нулевым значением), так и сверху (значением разрешения).

3. Графическая координата у отсчитывается сверху вниз.

Так, геометрические декартовы координаты точки (x, у) для отображения ее на экране направляться пересчитать в графические (xg, yg) по формулам

xg = [sx ´ х] + dx, yg = ry –[sy´у] – dy,

где [x] – целая часть x; sx и sy – масштабные множители, выбираемые из условия

rx = [sx´xmax] + 1, ry = [sу ´ yтах] + 1.

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

dx = [rx / 2], dy = [ry / 2].

Все функции и процедуры для работы в графическом режиме находятся в стандартном модуле Graph (файл Graph.tpu). Данный модуль обязан очевидно подключаться к программе в разделе Uses. В модуль Graph входит около 80 функций и процедур.

Для отображения графики видеоадаптер ПК обязан поддерживать работу дисплея в графическом режиме. Работой видеоадаптера руководит особая программа, которая именуется драйвером. Драйвер хранится в отдельном файле на диске и содержит как исполняемый код, так и нужные ему для работы эти. Показатель файла с драйвером – расширение .bgi имени файла (bgi – Borland Graphics Interface). Имя файла с драйвером соответствует типу видеоадаптера вашего компьютера, так, для подавляющего большинства моделей это файл egavga.bgi (либо более современный svga.bgi).

Большая часть видеоадаптеров смогут трудиться в нескольких графических режимах. Эти режимы различаются в первую очередь набором и разрешением дешёвых цветов. Итак, программа при переключении в графический режим обязана выяснить тип видеоадаптера. Это возможно сделать, очевидно указав в программе тип видеоадаптера либо дав программе возможность самостоятельно найти значение соответствующих параметров. Для этого нужно ввести переменную целого типа, пускай ее идентификатор будет gd. При явном определении видеоадаптера в программе обязан находиться оператор присваивания gd:=, где – это или некое число, или встроенная константа (встроенные константы не нужно обрисовывать намерено, поскольку их описания находятся в модулях). Вероятные значения приведены в справочной совокупности.

При автоматическом распознавании видеоадаптера в правой части оператора присваивания употребляется константа Detect (либо нулевое значение).

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

Несложнее всего, но, привести к стандартной процедуре DetectGraph(gd,gm), которая машинально выяснит номер типа режима и номер видеоадаптера с большим разрешением и присвоит эти значения переменным gd, gm.

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

InitGraph(gd, gm, ¢c:\tp\bgi¢);

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

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

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

В любой момент времени в графическом режиме один из пикселов считается текущей позицией (current pointer – CP). Многие процедуры и функции создают вывод соответствующего объекта (линии, прямоугольника, текста, и т.д.), начиная конкретно с данной текущей позиции. Выяснить ее возможно посредством функций GetX, GetY, каковые возвращают координаты x и y текущей позиции соответственно.

Среди функций и графических процедур чаще всего употребляются следующие (параметры и подробное описание смотрите в справочной совокупности):

DetectGraph – автоопределение графического драйвера и графического режима.

InitGraph – переход в графический режим.

CloseGraph – выход из графического режима.

PutPixel – рисует точку (пиксел) указанного цвета в позиции с указанными координатами.

GetPixel – функция, возвращающая цвет пиксела с указанными координатами.

SetColor – устанавливает новый цвет вывода (номера смотрите в справочной совокупности).

GetColor – функция, возвращающая текущий цвет вывода.

SetLineStyle – устанавливает стиль, шаблон и толщину для выводимых потом линий.

GetLineSettings – возвращает текущие значения стиля, толщины и шаблона линий.

Line – рисует линию от первой точки с указанными координатами (x1,y1) до второй (x2,y2).

LineTo – рисует линию от CP до конечной точки с указанными координатами.

LineRel – рисует линию от CP, смещаясь по x и y на указанные размеры.

MoveTo – смещает СР в точку с с указанными координатами.

MoveRel – смещает СР на указанные размеры по x и y.

OutText – выводит указанную строчок, начиная с CP.

OutTextXY – выводит указанную строчок, начиная с указанной позиции.

Rectangle – рисует четырехугольник линиями текущего цвета и стиля.

Ваr – рисует четырехугольник текущим цветом и закрашивает его.

Bar3D – рисует прямоугольный параллелепипед.

Circle – рисует окружность указанного радиуса с центром в указанной точке.

Arc, Ellipse – рисуют соответственно дугу окружности либо эллипса.

Sector – рисует и закрашивает эллиптический сектор.

DrawPoly – рисует многоугольник.

SetViewPort – устанавливает окно вывода со своей совокупностью координат.

ClearViewPort – очищает текущее окно вывода.

GetMaxX, GetMaxY – возвращают текущее разрешение экрана по оси x и y соответственно.

FloodFill – закрашивает замкнутую область.

FillPoly – закрашивает многоугольник.

GetImage – сохраняет указанную часть изображения в памяти по указанному адресу.

PutImage – выводит на экран в указанной позиции изображение, сохраненное GetImage.

ImageSize – определяет размер в байтах указанной части изображения.

Практические задания

1. Изучить и запустить программу вывода на экран графика функции f(x)=sin(3x)/(x2+5) на отрезке [–10, 10]. Поменять программу, добавив вывод графика еще одной функции (по выбору).

Program function_graph;

uses graph,crt;

var gd,gm,n,i: integer;

a,b,h,xmas,ymas,max,min,x,y: double;

c: char;

function f(x: double):double;

begin f:=sin(3*x)/(x*x+5) end;

Begin

detectgraph(gd,gm);

initgraph(gd,gm,»);{Вход в графический режим}

a:=-10; b:=10; n:=500; h:=(b-a)/n;

{Вычисление масштабных коэффициентов}

xmas:=500/(b-a);

max:=f(a); min:=f(a);

for i:=1 to n do

Begin

x:=a+i*h;

if max

if minf(x) then min:=f(x)

end;

ymas:=400/(max-min);

setviewport(70,40,570,440,ClipOn);

setcolor(15);

{Рисование осей координат}

y:=max*ymas;

line(0,round(y),500,round(y));

outtextxy(490,round(y)-10,’X’);

x:=-a*xmas;

line(round(x),0,round(x),400);

outtextxy(round(x)-10,0,’Y’);

{Рисование графика}

setcolor(14);

moveto(0, round(y-f(a)*ymas));

for i:=1 to n do

Begin

x:=a+i*h;

lineto(round((x-a)*xmas),round(y-f(x)*ymas));

end;

c:=readkey;

closegraph{Выход из графического режима}

End.

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

uses graph,crt;

type arr5=array[1..5] of double;

var a,r: arr5;

t,dt: double;

gd,gm: integer;

procedure rect(r,a:arr5; t:double);

var i,x,y: integer;

Begin

x:=320+round(r[1]*cos(a[1]+t));

y:=240-round(r[1]*sin(a[1]+t));

moveto(x,y);

for i:=2 to 5 do begin

x:=320+round(r[i]*cos(a[i]+t));

y:=240-round(r[i]*sin(a[i]+t));

lineto(x,y);

End

end;

Begin

r[1]:=0; r[2]:=100; r[3]:=100*sqrt(2);

r[4]:=100; r[5]:=0;

a[1]:=0; a[2]:=0; a[3]:=pi/4; a[4]:=pi/2; a[5]:=0;

detectgraph(gd,gm);

initgraph(gd,gm,»);

setlinestyle(0,0,3);

t:=0; dt:=pi/180;

Repeat

setcolor(15);

rect(r,a,t);

delay(1000);

setcolor(0);

rect(r,a,t);

t:=t+dt;

until keypressed;

closegraph;

End.

Задания для независимой работы

1. Выстроить:

а) треугольник с вершинами (100, 100), (150, 100), (80, 170);

б) два прямоугольника 300´200 в левом верхнем углу и в центре экрана;

в) шестиугольник, вписанный в окружность радиусом 120 в центре экрана.

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

3. Вывести на экран графики следующих кривых:

а) астроида x = cos3t, y = sin3t, t I [0, 2p];

б) кардиоида , ,a0, .

в) циклоида , , а0, ;

г) улитка Паскаля , , a0, b0, . Разглядеть случаи, в то время, когда , , .

4. Изобразить на экране точку, движущуюся по окружности с постоянной угловой скоростью.

5. Изобразить на экране две касающиеся окружности радиусов r1 и r2, вращающиеся в плоскости экрана около точки касания, расположенной в центре экрана.

6. Изобразить на экране стрелку, вращающуюся в плоскости экрана около тупого финиша, что находится в центре экрана.

БИБЛИОГРАФИЧЕСКИЙ ПЕРЕЧЕНЬ

1. Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие. М.: Издательство «ОМД Групп», 2003. – 616 с.

2. Фаронов В.В. Турбо Паскаль 7.0: Учеб. пособие. СПб.: Питер, 2007. – 367 с.

3. Программирование на языке Паскаль: задачник / под ред. Усковой О.Ф. – СПб: Питер, 2003. – 336 с.

4. Немнюгин С.А. Turbo Pascal. – СПб: Питер, 2000. – 496 с.

5. Кострюков С.А., Моисеев С.И., Пантелеев И.Н. Практикум на Паскале. Учеб. пособие. Воронеж: Изд-во ВГТУ, 2000.

СОДЕРЖАНИЕ

ВВЕДЕНИЕ 1

Знакомство со средой программирования Turbo Pascal 7.0 2

Лабораторная работа №1 3

Лабораторная работа №2 10

Лабораторная работа №3 14

Лабораторная работа №4 20

Лабораторная работа №5 26

Лабораторная работа №6 35

Лабораторная работа №7 46

БИБЛИОГРАФИЧЕСКИЙ ПЕРЕЧЕНЬ 55

БАЗЫ ПРОГРАММИРОВАНИЯ
НА ТУРБО ПАСКАЛЕ

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

к исполнению лабораторных работ по направлениям
«Специальные» главы «и Информатика информатики»
для студентов направлений 150400 «Металлургия»,
140700 «Ядерная энергетика и теплофизика» и
131000 «Нефтегазовое дело» очной формы обучения

Составители:

Кострюков Сергей Александрович

Пешков Вадим Вячеславович

Шунин Генадий Евгеньевич

В авторской редакции

Компьютерный комплект В.В. Пешкова

Подписано к изданию 28.01.2014.
Уч.-изд. л. 3,4. “С” .

ФГБОУ ВПО «Воронежский национальный
технический университет»

394026 Воронеж, Столичный просп., 14

Pascal. Ввод-вывод. Текстовые файлы


Интересные записи:

Понравилась статья? Поделиться с друзьями: