УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ «БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ ПЕДАГОГИЧЕСКИЙ УНИВЕРСИТЕТ ИМЕНИ МАКСИМА ТАНКА» кафедра прикладной математики и информатики ОТЧЕТ по вычислительной практике Выполнил: студент 207 группы математического факультета Петров И.А. _____________ (подпись студента) Руководитель: преподаватель кафедры прикладной математики и информатики Иванов А.И. _____________ (подпись преподавателя) Минск, 2014 Вариант 15 СОДЕРЖАНИЕ Задание 1. ФОТО-МОЗАИКА............................................................................... 3 Задание 2. ДОРОЖНЫЙ ЗНАК ............................................................................ 4 Задание 3. МИГАЮЩИЙ ЗНАК .......................................................................... 5 2 Вариант 15 Задание 1. ФОТО-МОЗАИКА В архиве находятся несколько файлов. В них – фрагменты одной фотографии. Написать программу, составляющую из фрагментов – целую фотографию. Требования: подобрать размеры графического окна в соответствии с параметрами фотографии (размер и ориентация книжная или альбомная); полученное фото расположить в указанной части графического окна; появление фото на экране организовать постепенно, по фрагментам; незаполненную область графического окна закрасить; в заголовке окна отобразить фамилию персонажа и свою фамилию. Листинг к заданию 1 program Фото_мозаика_Петров_ИА; uses GraphABC; var i,pic1,pic2,pic3,pic4: integer; begin SetWindowSize(640,480); // задать размер графического окна CenterWindow; // очистить графическое окно FloodFill(0,0,clLtGray); // залить окно светло-серым цветом SetWindowCaption('Сердце. Петров');// задать заголовок окна { загрузить фрагменты фотографии } pic1:=LoadPicture('1.jpg'); DrawPicture(pic1,160,120); Sleep(500); // задержка pic1:=LoadPicture('3.jpg'); DrawPicture(pic1,160,240); Sleep(500); pic1:=LoadPicture('2.jpg'); DrawPicture(pic1,320,120); Sleep(500); pic1:=LoadPicture('4.jpg'); DrawPicture(pic1,320,240); Sleep(500); { залить свободную область окна новым цветом } FloodFill(0,0,clTeal); end. Скриншот к заданию 1 Рисунок 1 – Результат исполнения программы «Фото-мозаика» 3 Вариант 15 Задание 2. ДОРОЖНЫЙ ЗНАК Написать программу для рисования дорожного знака. Требования: подобрать необходимые размеры графического окна в соответствии с желаемым размером знака; изображение знака расположить в центре графического окна; незаполненную область графического окна оставить с белым фоном; в графическом окне под рисунком отобразить название дорожного знака. Листинг к заданию 2 program Дорожный_знак_Петров_ИА; uses GraphABC; var i: byte; begin { задаем заголовок графического окна } SetWindowTitle('Дорожный знак - Въезд запрещен'); SetWindowSize(400,400); // задаем размер графического окна SetFontSize(14); // задаем размер шрифта ClearWindow; // очищаем графическое окно SetBrushColor(clRed); // задаем цвет круга Circle(200,200,150); // рисуем круг SetPenColor(clWhite); // задаем цвет полосы внутри круга SetPenWidth(75); // задаем толщину пера для рисования полосы MoveTo(125,200); // перемещаем перо в начальную точку для полосы LineTo(275,200); // рисуем полосу Sleep(1000); end. Скриншот к заданию 2 Рисунок 2 – Результат исполнения программы «Дорожный знак» 4 Вариант 15 Задание 3. МИГАЮЩИЙ ЗНАК Написать программу для рисования дорожного знака с элементами анимации. Требования: подобрать необходимые размеры графического окна в соответствии с желаемым размером знака; изображение знака расположить в центре графического окна; в заголовке графического окна отобразить название дорожного знака; выбрать один из вариантов анимации-мигания и запрограммировать анимацию отдельных элементов знака. Листинг к заданию 3 program Мигающий_знак_Петров_ИА; uses GraphABC; var i: byte; begin { задаем заголовок графического окна } SetWindowTitle('Дорожный знак - Въезд запрещен'); SetWindowSize(400,400); // задаем размер графического окна SetFontSize(14); // задаем размер шрифта ClearWindow; // очищаем графическое окно { --- исходный рисунок --- } SetBrushColor(clRed); // задаем цвет круга Circle(200,200,150); // рисуем круг SetPenColor(clWhite); // задаем цвет полосы внутри круга SetPenWidth(75); // задаем толщину пера для рисования полосы MoveTo(125,200); // перемещаем перо в начальную точку для полосы LineTo(275,200); // рисуем полосу Sleep(1000); { --- мигание сменой цвета пера --- } for i := 1 to 10 do begin { --------------- будем рисовать желтую полосу } SetPenColor(clYellow); // задаем красный цвет пера MoveTo(125,200); // перемещаем перо в начальную точку для полосы LineTo(275,200); // рисуем полосу Sleep(200); // ожидаем 200 миллисекунд { --------------- будем рисовать белую полосу } SetPenColor(clWhite); // задаем белый цвет пера MoveTo(125,200); // перемещаем перо в начальную точку для полосы LineTo(275,200); // рисуем полосу Sleep(400); // ожидаем 400 миллисекунд end; end. 5 Вариант 15 Скриншот к заданию 3 Рисунок 3 – Результат исполнения программы «Мигающий знак» 6