Соглашение по псевдокоду задач Олимпиады - shikardos.ru o_O
Главная
Поиск по ключевым словам:
страница 1
Похожие работы
Соглашение по псевдокоду задач Олимпиады - страница №1/1


Соглашение по псевдокоду задач Олимпиады

Соглашение по псевдокоду для решения задач олимпиады
по компьютерной графике
«Народный узор» 2013 года
физико-математического факультета МГОУ

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

Если какая-то необходимая Вам конструкция не указана здесь, то Вы можете описать ее синтаксис и применить описанный Вами оператор в своем псевдокоде. Однако переопределение уже описанных здесь конструкций не целесообразно.

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

Итак, в псевдокоде имеются следующие команды:

1. Команда задания стиля линий
lineStyle(толщина линии, цвет линии);
толщина линии задается в пикселях экрана,
цвет линии задается названием цвета (на английском языке).
2. Команда установки виртуального «пера» в нужную точку (xs,ys,)

moveTo(xs,ys,);
3. Команда проведения прямой линии из текущей активной точки в конечную точку (xf,yf). После выполнения этой команды виртуальное перо переходит в точку (xf,yf).

lineTo(xf,yf);


4. Команда проведения кривой линии из текущей активной точки в конечную точку (xf,yf). Для задания нужной кривизны используется «якорная» точка (xc,yc) пересечения касательных, выходящих из крайних точек кривой
curveTo(xc,yc,xf,yf);

После выполнения этой команды виртуальное «перо» переходит в точку (xf,yf), т.е. для рисования двух кривых надо будет дать:



5. Пример записи программного кода рисования кривой.

Требуется: нарисовать следующую кривую:

--------------------------------------------------------------------------------------------------------



Решение:

Блок схема решения:

--------------------------------------------------------------------------------------------------------


Код решения:

moveTo(xs,ys,); // ставим перо в стартовую точку

curveTo(xc1,yc1,xf1,yf1); // первая кривая в точку (xf1,yf1)

lineTo(xf3,yf3) // прямая в точку (xf3,yf3)
Заметьте, что для рисования непрерывной кривой мы использовали команду moveTo(xs,ys,); только один раз. Если мы захотим начать рисовать вторую кривую, то «перо» надо будет перенести в нужную точку командой moveTo(xs1,ys1,);
6. Напоминание о системе координат компьютерной графики: ось y перевернута:



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


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

x1=kx1*xSt;

y1=ky1*ySt;
где kx1 и ky1 коэффициенты (входные данные), задающие положение точки (x1,y1) на сцене.

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

xSt=Stage.width; // Измеряем размеры сцены

ySt=Stage.height;

kx1=0.5; // Задаем нужные нам значения коэффициентов

ky1=0.5;

x1=kx1*xSt; // Рассчитываем координаты точки (x1,y1)

y1=ky1*ySt; // Эта точка окажется в центре монитора с любым разрешением
Вышеприведенные команды относятся непосредственно к компьютерной графике. Следующие ниже операторы будут Вам более знакомы. Они вводятся только для обеспечения единообразия оформления решений заданий.
8. Синтаксис описания глобальных переменных, используемых в программе:

var x,y:real; // описание переменных , как вещественных

var i,j:integer; // описание переменных , как целых
9. Синтаксис операции присваивания значения переменной:

x = алгебраическое выражение;

При записи алгебраических выражений используются знаки алгебраических операций “+”, “-“, “/”, “*”. Кроме того, верно правило скобок.


10. Синтаксис команд целочисленного деления.

Поскольку координаты точек – целые числа, нам надо определить синтаксис целочисленного деления:



a = x div y; // Переменной a присваивается целая часть от частного x/y

b = x mod y; // Переменной b присваивается остаток от частного x/y
11. Синтаксис описания и вызова функций, рисующих объекты (на примере функции, имеющей два входных параметра целого типа и две локальные переменные):

//описание функции с двумя формальными параметрами

function myFun(x:integer,y:integer)

{

var a,b:integer; //описание двух локальных переменных

//Здесь должен быть исполняемый код тела функции

};

………..



//вызов функции с двумя фактическими параметрами

myFun(x1,y1);
12. Синтаксис описания и вызова функций, имеющей выходные параметры
(на примере функции, имеющей два входных параметра целого типа и один выходной параметр):

//описание функции с двумя входными и одним выходным формальными параметрами

function myFun(x: integer,y: integer,var a: integer)

{

//Здесь должен быть исполняемый код тела функции

};

//вызов функции с тремя фактическими параметрами

myFun(x1,y1,a1);
13. При написании операторов ветвления используется следующий синтаксис:


14. При написании операторов циклов используется следующий синтаксис:



КОНТАКТЫ


1. Официальный сайт Олимпиады "Народный узор" по компьютерной графике: http://computer.mgou.ru

2. Партнерский сайт Олимпиады "Народный узор" по компьютерной графике: http://loverus.su/ "Наша любимая Родина".

3. Адрес для пересылки решений заданий первого этапа: computer_mgou@mail.ru

4. Оргкомитет Олимпиады "Народный узор" по компьютерной графике:

4.1. Почтовый адрес: 105005, г. Москва, ул. Радио, д. 10а, деканат физико-математического факультета Московского государственного областного университета.

4.2. Уточняющие организационные вопросы: сопредседатель жюри и оргкомитета Олимпиады:

декан физ.-мат. факультета, д.т.н., профессор Бугримов Анатолий Львович

e-mail: albugrimov@gmail.com, тел. (8-499) 261-09-48 (с 10-00 до 16-00).

4.3. Уточняющие вопросы по заданиям: сопредседатель жюри и оргкомитета Олимпиады:

автор идеи, заданий и сайта Олимпиады, старший преподаватель физ.-мат. факультета, Птицын Владимир Анатольевич



e-mail: vl_pt@mail.ru