![]() |
Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Типизированные и текстовые файлы ⇐ ПредыдущаяСтр 5 из 5
Под файлом понимается либо именованная область внешней памяти ПК (жесткого диска, гибкой дискеты, и др.), либо логическое устройство – потенциальный источник или приемник информации. В программах на Турбо Паскале могут использоваться три вида файлов: типизированные, текстовые и нетипизированные. Примеры описания переменных файловых типов: Var < имя>: File of < тип>; {для типизированных файлов} < имя>: Text; {для текстовых файлов} < имя>: File; {для нетипизированных файлов} Например: Var f: File of real; g: File of integer; h: Text; Можно ввести новый тип данных: Type text80 = File of string[80]; Var t: text80; Любой программе доступны два предварительно объявленных файла со стандартными файловыми переменными: 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(< файловая переменная > ) Если текстовый файл ранее уже был открыт с помощью 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: =a[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< a[i, j] then begin max: =a[i, j]; i1: =i; j1: =j end; if max< a[i, j] then 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< f(x) then max: =f(x); if min> f(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 Î [0, 2p]; б) кардиоида в) циклоида г) улитка Паскаля
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
ОСНОВЫ ПРОГРАММИРОВАНИЯ
МЕТОДИЧЕСКИЕ УКАЗАНИЯ к выполнению лабораторных работ по курсам
Составители: Кострюков Сергей Александрович Пешков Вадим Вячеславович Шунин Генадий Евгеньевич
В авторской редакции
Компьютерный набор В.В. Пешкова
Подписано к изданию 28.01.2014.
ФГБОУ ВПО «Воронежский государственный
|
Последнее изменение этой страницы: 2017-03-17; Просмотров: 852; Нарушение авторского права страницы