Отчет по лабораторной работе Отчет представляет собой таблицу вида




Скачать 316.52 Kb.
НазваниеОтчет по лабораторной работе Отчет представляет собой таблицу вида
страница6/6
Дата публикации16.11.2014
Размер316.52 Kb.
ТипОтчет
lit-yaz.ru > Бухгалтерия > Отчет
1   2   3   4   5   6
^

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


1. i=0 l=0

2. ПОКА i
2.1. j1=номеру позиции первой цифры в mslovi

2.2. j2=номеру позиции последней цифры в mslovi

2.3. ЕСЛИ j1=0 И j2=длина mslovi - 1 ТО

2.3.1. b=результату преобразования mslovi в число

2.3.2. mchl=b*b*b

2.3.3. l=l+1

ЕСЛИ ВСЕ

2.4. i=i+1

ПОКА ВСЕ

  1. Возврат l

Функция obr_sl:

Входные величины

Выходные величины

Имя

Назначение

Диапазон

Имя

Назначение

Диапазон

n

Число слов

Целое число

rezstr

Результирующая строка из слов в обратном порядке

Текст

Mslov

Массив слов

Текст










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

1. i=0 rezstr=””

2. ПОКА i
2.1. j=числу цифр в mslovi

2.2. ЕСЛИ jдлине mslov, ТО

2.2.1. a=обращение слова mslovi

2.2.2. Присоединение a к rezstr

2.2.3. Присоединение “,” к rezstr

ЕСЛИ ВСЕ

2.3. i=i+1

ПОКА ВСЕ

3. Возврат rezstr
Тексты функций

static int str_sl(string x, char[] rsl, char[] kstr, out string[] mslov)

{char[]razd =new char[2];

razd[0]=rsl[0];

razd[1]=kstr[0];

int n = 0, beg;

mslov = new string[20];

string y;

mslov = x.Split(razd);

n = mslov.Length;

return n;

}

static string obr_sl(int n,string[] mslov)

{int i,j,j1,j2;

string rezstr,b;

string a;

char[] cif = {'1','2','3','4','5','6','7','8','9','0'};

rezstr=new string(' ',0) ;

for (i = 0; i < n; i++)

{ b = string.Copy(mslov[i]);

int l = b.Length;

j1 = b.IndexOfAny(cif);

j2 = b.LastIndexOfAny(cif);

if (j1 != 0 && j2 != 0)

{a = new string(' ', 0);

for (j = 0; j

a = b[j]+a;

rezstr = rezstr + a;

rezstr = rezstr + ",";

}

} return rezstr;

}

static int chisl_cub(int n, string[] mslov, out int[] mch)

{

int l = 0, i, j1, j2, b;

mch = new int[20];

char[] cif = { '1', '2', '3', '4', '5', '6', '7', '8', '9', '0' };

for (i = 0; i < n; i++)

{

j1 = mslov[i].IndexOfAny(cif);

j2 = mslov[i].LastIndexOfAny(cif);

if (j1 == 0 && j2 == mslov[i].Length - 1)

{

b = Convert.ToInt32(mslov[i]);

mch[l] = b * b * b; l++;

}

}

return l;

} Компонента Graphics

Для рисования нужно помещать на форму поверхность рисования, которую обеcпечивает этот класс. Основные действия по рисованию описаны в событии Paint. Для рисования какой-то кривой (окружности, прямой, треугольника и т.д.) необходимо выполнить какой-то метод Graphics.

Для указания цвета линии задается некоторый объект карандаш (Pen), а для указания цвета заливки задается некоторый объект кисть (Brush). Для вывода текста используется некоторый шрифт – объект Font.

Объект Pen создается с помощью конструктора вида

Pen p1 = new Pen(цвет линии, толщина линии);

Цвет линии задается элементом структуры Color

В этой структуре определены имена для 128 цветов. 16 из них (основные) определены в табл.

Таблица

Имена основных цветов

Название цвета

Имя поля структуры

Черный

Black

Серебристый

Silver

Серый

Gray

Белый

White

Темно-бордовый

Maroon

Красный

Red

Фиолетовый

Purple

Фуксия

Fuchsia

Зеленый

Green

Светло-зеленый

Lime

Оливковый

Olive

Желтый

Yellow

Темно-синий

Navy

Синий

Blue

Морской волны

Teal

Голубой

Aqua

Например: Pen p1 = new Pen(Color.Blue, 2);

Объект Brush создается с помощью функции

SolidBrush b1 = new SolidBrush(цвет);

Создание поверхности рисования происходит с помощью вызова

Graphics g = e.Graphics;

После этого можно применять различные методы Graphics.

При рисовании используется традиционная для машинной графики система координат: начало координат - верхний левый угол, ось X возрастает слева направо, а ось Y сверху вниз.

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

RectangleF(float абсцисса верхнего угла прямоугольнике,

float ордината верхнего левого угла прямоугольника,float ширина,float высота)

Также в некоторых методах используется структура PointF, которая представляет упорядоченную пару координат Х и Y с плавающей запятой, определяющих точку на двумерной плоскости. Ее создание производится с помощью конструктора PointF(float абсцисса точки,float ордината точки)

Некоторые методы перечислены в табл. 11.

Таблица 11

Некоторые методы класса Graphics

Метод

Описание

DrawArc(Pen карандаш,RectangleF прямоугольник,float Угол (в градусах), который измеряется по часовой стрелке, начиная от оси X и заканчивая начальной точкой дуги,float Угол (в градусах), который измеряется по часовой стрелке, начиная от значения параметра startAngle и заканчивая конечной точкой дуги)

Рисует дугу, которая является частью эллипса, заданного структурой RectangleF


DrawEllipse(Pen карандаш,

RectangleF прямоугольник)

Рисует эллипс, определяемый ограничивающей структурой RectangleF

DrawLine(Pen карандаш,PointF точка1,

PointF точка2)

Проводит линию, соединяющую две структуры PointF

DrawPolygon(Pen карандаш,PointF[] массив точек)

Рисует многоугольник, определяемый массивом структур PointF

DrawRectangle(Pen карандаш,int абсцисса,int ордината,int ширина,int высота)

Рисует прямоугольник, который определен парой координат, шириной и высотой


В качестве примера выведем на форму фигурку барана. Для этого определим в классе формы поля:

float x0 = 230;//Абсцисса начальной точки

float y0 = 180;//Ордината начальглй точки

float t = 0;//Для последующей анимации

Определим событие Paint:

public void OnPaint(object sender, PaintEventArgs e)

{ Graphics g = e.Graphics; // Описать поверхность рисования

^ DrawSheep(g, x0, y0, t); // Нарисовать барана }

и метод DrawSheep:

void DrawSheep(Graphics g, float x0, float y0, float t)

{Pen p1 = new Pen(Color.Blue, 2); // заготавливаем карандаши и кистьи

Pen p2 = new Pen(Color.Red, 3); // для рисования барана

Pen p3 = new Pen(Color.Gray, 4);

Pen p4 = new Pen(Color.Black, 3);

SolidBrush b1 = new SolidBrush(Color.Green);

g.FillEllipse(b1, x0, y0, 100, 50); // туловище

float xhead = x0 + 60; // вычисляем координаты головы

float yhead = y0 - 20;

g.DrawPolygon(p1, new PointF[] { new PointF(xhead, yhead), new PointF(xhead + 30, yhead + 30),new PointF(xhead + 60, yhead) });

// рисуем голову

g.DrawEllipse(p2, x0 + 80, y0 - 12, 5, 5); // рисуем глаза

g.DrawEllipse(p2, x0 + 95, y0 - 12, 5, 5);

g.DrawArc(p3, x0 + 20, y0 - 45, 50, 50, 0, -90); // рисуем рога

g.DrawArc(p3, x0 + 60, y0 - 45, 50, 50, 0, -90);

float xlegs = x0 + 10; // вычисляем координаты ног

float ylegs = y0 + 42; // и рисуем четыре ноги

g.DrawLines(p4, new PointF[] { new PointF(xlegs, ylegs), new PointF(xlegs + 20 * (1 - t), ylegs + 20), new PointF(xlegs, ylegs + 40) });

xlegs = xlegs + 20;

g.DrawLines(p4, new PointF[] { new PointF(xlegs, ylegs), new PointF(xlegs + 20 * (1 - t), ylegs + 20), new PointF(xlegs, ylegs + 40) });

xlegs = xlegs + 40;

g.DrawLines(p4, new PointF[] { new PointF(xlegs, ylegs), new PointF(xlegs + 20 * (1 - t), ylegs + 20), new PointF(xlegs, ylegs + 40) });

xlegs = xlegs + 20;

g.DrawLines(p4, new PointF[] { new PointF(xlegs, ylegs), new PointF(xlegs + 20 * (1 - t), ylegs + 20), new PointF(xlegs, ylegs + 40) });

g.DrawArc(p4, x0 - 25, y0 + 12, 25, 25, 0, 245);

// рисуем хвост

}

Зададим размеры формы 600, 480

При запуске приложения получим (рис. )


Рис. Рисунок барана

Анимация - это почти всегда меняющаяся картинка, в примере будет меняться с одной стороны положение барашка, а с другой изгиб лап. Изгиб лап у барана определяется параметром t из отрезка [-0.3,0.7], а положение барана будет также вычисляться в зависимости от параметра t

Здесь будет использован стандартный класс Math, содержащий математические функции, но после вычисления необходимо привести результат вычисления к типу float. Для регулярного изменения координат барана имеется невизуальная компонента Timer. Перетаскивание эту еомпоненту на форму приведет к ее размещению в невидимой части экрана, так как она невизуальная. В свойствах устанавливается значение Interval = 60. Это свойство определяет, через сколько миллисекунд должен быть "тик" часов. Значение равное 1000 соответствует одной секунде. Следует учитывать, что интервал "тиканья" является относительно приблизительным, и может варьироваться в зависимости от мощности компьютера и его текущей загрузки. В списке событий таймера имеется одно событие Tick. Метод реакции на его наступление будет в примере называться Tick и содержать код:

private void timer1_Tick(object sender, EventArgs e)

{float dt = 0.01f;

t = t + dt;

if ((t < - 0.3f)||(t > 0.7f))

{ dt = -dt; }

x0 = 230 + (float)(100 * Math.Sin(10 * t));

y0 = 180 - (float)(20 * Math.Sin(30 * t));

Invalidate(); //Перерисовка формы, то есть вызов метода Paint

}

Для запуска таймера с событием DoubleClick формы связывается метод, который «запускает» таймер:

private void DoubleClick(object sender, EventArgs e)

{ timer1.Enabled = true; }

При этом рисунок будет перерисовываться, и барашек будет двигаться
1   2   3   4   5   6

Похожие:

Отчет по лабораторной работе Отчет представляет собой таблицу вида iconОтчет по нир должен содержать исчерпывающие сведения о выполненной...
Южный филиал Национального университета биоресурсов и природопользования украины

Отчет по лабораторной работе Отчет представляет собой таблицу вида iconОтчет по лабораторной работе должен содержать введение, отражающее...
Для каждой лабораторной работы приведены перечень теоретических вопросов для сдачи коллоквиумов и перечень вопросов для сдачи отчетов....

Отчет по лабораторной работе Отчет представляет собой таблицу вида iconОтчет по лабораторной работе №2 Ревизия
Лабораторная работа Разработка многопроцессного приложения для анализа логов web-сервера 5

Отчет по лабораторной работе Отчет представляет собой таблицу вида iconОтчет по лабораторной работе Тема: «Умножение разреженных матриц»
Государственное образовательное учреждение высшего профессионального образования Нижегородский государственный университет

Отчет по лабораторной работе Отчет представляет собой таблицу вида iconОтчет по лабораторной работе Тема: «Умножение разреженных матриц»
Государственное образовательное учреждение высшего профессионального образования Нижегородский государственный университет

Отчет по лабораторной работе Отчет представляет собой таблицу вида iconОтчет по лабораторной работе №1 по предмету «Экономико-математические...
Предложения (рекомендации) лицу, ответственному за принятие решений, по оптимальному управленческому поведению 6

Отчет по лабораторной работе Отчет представляет собой таблицу вида iconОтчет по лабораторной работе по дисциплине "Технологии программирования"...
Пояснительная записка: с., 22 рис., 17 табл., 11 библиограф источников, 2 приложения

Отчет по лабораторной работе Отчет представляет собой таблицу вида iconОтчёт по лабораторной работе №4 по курсу «Безопасность программ и...
В качестве симметричного алгоритма используется алгоритм des с режимом шифрования cbc

Отчет по лабораторной работе Отчет представляет собой таблицу вида iconОтчет по лабораторной работе по дисциплине "Технологии программирования"...
Произвести анализ предметной области по методологии объектной декомпозиции и разработать логический проект системы по технологии...

Отчет по лабораторной работе Отчет представляет собой таблицу вида iconОтчёт По лабораторной работе №1 По курсу «Основы проектирования систем...
Экспертные системы вместе с системами обработки естественных языков являются наиболее важными в коммерческом плане областями использования...



Образовательный материал



При копировании материала укажите ссылку © 2013
контакты
lit-yaz.ru
главная страница