Файл: Лабораторная работа Создание линейного алгоритма 5 Лабораторная работа Решение задач с линейным алгоритмом 7.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 29.04.2024
Просмотров: 171
Скачиваний: 0
СОДЕРЖАНИЕ
Структура программы на языке Turbo Pascal
Лабораторная работа № 2. Решение задач с линейным алгоритмом
Лабораторная работа № 3. Обработка строковых и символьных переменных
Лабораторная работа № 4. Обработка целочисленных данных
Лабораторная работа № 5. Создание разветвляющего алгоритма
Лабораторная работа № 6. Решение задач с разветвляющимся алгоритмом
Лабораторная работа № 7. Использование оператора выбора CASE.
Лабораторная работа № 8. Генератор случайных чисел
Лабораторная работа № 9. Использование цикла с параметром
Лабораторная работа № 10. Использование цикла с предусловием
Лабораторная работа № 10. Использование цикла с предусловием
Лабораторная работа № 11. Решение задач с использованием циклического алгоритма
Лабораторная работа № 12. Использование цвета
Лабораторная работа № 13. Создание меню
Лабораторная работа № 14. Обработка одномерного массива
Лабораторная работа № 15. Решение задач на использование одномерных массивов
Лабораторная работа № 16. Обработка двумерного массива
Лабораторная работа № 17. Решение задач с использованием двумерных массивов
Лабораторная работа № 18. Использование процедур
Лабораторная работа № 19. Использование функций
Лабораторная работа № 20. Графические возможности Turbo Pascal
Лабораторная работа № 21. Работа с файлами
Лабораторная работа № 22. Задания для самостоятельной работы
Процедура используется до построения примитивов!
Например: SetLineStyle (DottedLn,0,NormWidth); Line (10,10,150,150);
SetLineStyle (1,0,1); Line (10,10,150,150);
Процедуры для перемещения указателя из текущего положения
1. MoveTo (x,y:integer); - перемещение текущего указателя в точку с координатами x,y
Например: MoveTo (100,200); - перемещение текущего указателя курсора в точку 100,200
2. MoveRel (dx,dy:integer); - перемещение текущего указателя на расстояние dx по оси x, dy по оси y.
Например: MoveRel (5,10); - перемещение текущего указателя курсора на 5 единиц по оси x, 10 единиц по оси y.
Процедуры установки цвета
При работе в графическом режиме команды textcolor и clrscr применять нельзя!
Setbkcolor(Color) – установка цвета экрана!
Установка цвета графики осуществляется процедурой:
SetColor (Color); – Color-цвет, значение которого берется из таблицы.
Процедура используется до построения графических примитивов.
Заливка фигур
Прежде чем использовать заливку, надо настроить стиль заливки. Для использования процедуры заливки контур должен быть замкнутым.
SetFillStyle (p , Сolor);
p – модель. Может принимать значения от 0 до 12.
0 – цвет фона
1 – заполнение одним цветом
7 – заполнение в клетку
8 – заполнение в косую клетку
9 – заполнение частой сеткой
10 – заполнение редкими точками
11 – заполнение частыми точками
Однородная заливка
FloodFill (x,y,border); x,y – координаты точки, находящейся в контуре; border – цвет границы
Работа с текстом
В графическом режиме вывод текста процедурой write запрещен! Для этой цели используются следующие процедуры:
OutText(text:string); - выводит строку текста, начиная с текущего положения курсора
Например: OutText (‘текст’); или a:=’текст’; OutText (a);
OutTextXY(x,y:integer; text:string ); - выводит строку текста начиная с позиции с координатами x,y
Например: OutTextXY (100, 100; ‘текст’); или a:=’текст’; OutTextXY (100, 100; a);
Вывод численных значений
В модуле graph нет процедуре, предназначенных для вывод численных значений. Поэтому сначала число сначала нужно преобразовать в строку (с помощью процедуры str), затем с помощью конкатенации (+) соединить полученную строку к выводимой строке.
Например:max:=34.56;
str (max:6:2, smax); {результат преобразования в строке smax}
OutTextXY (40,400, ‘Максимум = ’+smax);
Шрифты
Различают 2 типа шрифтов: растровый и векторный. Растровый шрифт задается матрицей точек, а векторный – векторами, которые составляют символ. При увеличении растрового символа можно различить составляющие точки (эффект - пикселизация) и качество изображения снижается. При увеличении векторного символа качество изображения не ухудшается. По умолчанию после инициализации графического режима устанавливается растровый шрифт DefaultFont. Каждый его символ формируется в матрице 8x8 бит. Шрифты хранятся в отдельных файлах с расширением *.chr.
Установить шрифт можно с помощью процедуры:
SetTextStyle (Font:byte; Direction:byte; CharSize:byte)
Font – шрифт
Direction – направление (0 – горизонтальное, 1 - вертикальное)
CharSize – размер символов (может принимать значения от 1 до 32: 1 – матрица 8х8, 2 – матрица 16х16 и т.д)
Константа | Значение | Описание |
DefaultFont | 0 | матрица 8х8 |
TriplexFont (trip.chr) | 1 | штриховой шрифт |
SmallFont (litt.chr) | 2 | малый шрифт |
SansSerifFont (sans.chr) | 3 | Сансериф |
GothicFont (goth.chr) | 4 | Готический |
Например:
а
{вывод на экран вертикальной строки шрифтом DefaultFont стандартного размера}
) SetTextStyle (0,1,1);
OutTextXY (200,200, ‘Вертикальная строка’);
б
{вывод на экран горизонтальной строки шрифтом DefaultFont, размер увеличен в 2 раза}
) SetTextStyle (0,0,2);
OutTextXY (200,200, ‘Горизонтальная строка’);
Задачи для самостоятельной работы:
-
Используя графические возможности, создайте графическое изображение
-
Используя графические возможности, создайте графическое изображение
-
Используя графические возможности и генератор случайных чисел, вывести на экран 100 окружностей, заданных случайными координатами, случайными радиусами и контуром случайного цвета. -
Используя графические возможности и генератор случайных чисел, вывести на экран лес из 20 деревьев, заданных случайными координатами, случайными радиусами и контуром случайного цвета. -
Используя графические возможности, создайте графическое изображение
-
Используя графические возможности, создайте графическое изображение
-
Используя графические возможности, вывести в центре экрана фразу «ГРАФИЧЕСКИЕ ВОЗМОЖНОСТИ» красного цвета, вокруг текста прямоугольник синего цвета. -
Используя графические возможности, вывести в центре экрана фразу «TURBO PASCAL» желтого цвета, вокруг текста прямоугольник красного цвета. -
Используя графические возможности, вывести на экран произвольный треугольник, для контура задать зеленый цвет, для заливки – заполнение редкими точками желтого цвета. Снизу треугольника вывести текст «ЭТО ТРЕУГОЛЬНИК» красного цвета. -
Используя графические возможности, вывести на экран произвольный пятиугольник, для контура задать синий цвет, для заливки – заполнение в клетку желтого цвета. Сверху пятиугольник вывести текст «ЭТО ПЯТИУГОЛЬНИК» красного цвета. -
Используя графические возможности языка Pascal нарисовать следующие изображения
Дерево может быть более упрощено, для построения использовать минимум 5 дуг.
-
Используя циклический алгоритм построить следующие изображения:
Лабораторная работа № 21. Работа с файлами
Использовать файлы в программировании удобно, когда:
-
необходимо сохранять выходные данные при отладке; -
использовать большое количество входных данных; -
приходится многократно вводить одну и ту же информации, с минимальными изменениями или вовсе без изменений.
В зависимости от способа объявления можно выделить три вида файлов:
-
типизированные файлы (задаются предложением FILE OF); -
текстовые файлы (определяются типом TEXT); -
нетипизированные файлы (определяются типом FILE).
assign(f,'имя_файла'); — устанавливает связь между файловой переменной и самим файлом которая помогает нам это сделать. Фактически мы говорим, что переменной f соответствует такое-то имя файла. Например текстовый файл input.txt
Здесь подразумевается, что файл с самой программой находится в той же папке, что и текстовый файл input.txt. Если же он в другой папке, то нам нужно указать относительное расположение этого файла.
‘Имя_файла’ — полный путь к указанному файлу, записанный в относительной или абсолютной форме.
Как создать, открыть, сохранить и закрыть файл?
После того как мы установили соответствие файловой переменной и самого файла мы можем начинать выполнять различные операции над этим файлом:
Открыть для чтения reset(f); Если файла не существует, то будет выведена ошибка.
Создать или перезаписать rewrite(f); Если файла не существует, то он будет создан.
Создать или открыть и дописать в конец файла append(f); Если файла не существует, то он будет создан.
Сохранить и закрыть файл close(f);
Естественно то, что мы только что перечислили это просто внешняя работа с файлом.
Как использовать или изменить содержимое файла?
Для того что бы делать какие-либо внутренние изменения в самом файле так же существуют команды
read(f,a,b); — читать из файла f две переменные a и b. После выполнения этой процедуры указатель в файле передвинется за переменную b;
readln(f,a,b,c); — читать из файла f три переменные a, b и c, а затем перевести указатель (курсор) на начало следующей строки; если кроме уже считанных переменных в строке содержалось еще что-то, то оно будет проигнорировано.
write(f,a,b,c); — записать в файл f переменные a,b и c;
writeln(f,a,b); — записать в файл f переменные a и b, а затем записать туда же символ "конец строки".
Пример:
Задача. Сформировать текстовый файл с помощью Паскаля, а затем переписать из данного файла во второй файл только те строки, которые начинаются с буквы «А» или «а».
PROGRAM PRIMER;
VAR F1,F2:TEXT;
I,N: INTEGER;
S: STRING;
BEGIN
{ФОРМИРУЕМ ПЕРВЫЙ ФАЙЛ}
ASSIGN(F1, ‘FILE1.TXT’); {устанавливаем связь файловой переменной с файлом на диске}
REWRITE(F1); {открываем файл для записи}
READLN(N); {определим количество вводимых строк}
FOR I:=1 TO N DO
BEGIN
READLN(S); {вводим с клавиатуры строки}
WRITELN(F1,S); {записываем последовательно строки в файл}
END;
CLOSE(F1); {заканчиваем работу с первым файлом, теперь на диске существует файл с именем file1.txt, содержащий введенные строки. }
{ЧАСТЬ ВТОРАЯ: ЧТЕНИЕ ИЗ ПЕРВОГО ФАЙЛА И ФОРМИРОВАНИЕ ВТОРОГО}
RESET(F1); {открываем первый файл для чтения}
ASSIGN(F2, ‘FILE2.TXT’); {устанавливаем связь второй файловой переменной с файлом}
REWRITE(F2); {открываем второй файл для записи}
{дальше необходимо последовательно считывать строки из первого файла, проверять выполнение условия и записывать нужные строки во второй файл. для чтения из текстового файла рекомендуется использовать цикл по условию «пока не конец файла»}
WHILE NOT EOF(F1) DO
BEGIN
READLN(F1,S);{считываем очередную строку из первого файла}
IF (S[1]=’A’) OR (S[1]=’A’) THEN
WRITELN(F2,S); {записываем во второй файл строки, удовлетворяющие условию}
END;
CLOSE(F1,F2); {ЗАКАНЧИВАЕМ РАБОТУ С ФАЙЛАМИ}
{часть третья: выводим на экран второй файл}
WRITELN;
WRITELN(‘ВТОРОЙ ФАЙЛ СОДЕРЖИТ СТРОКИ:’);
RESET(F2); {открываем второй файл для чтения}
WHILE NOT EOF(F2) DO {пока не конец второго файла}