Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety.doc
Скачиваний:
59
Добавлен:
10.02.2015
Размер:
1.3 Mб
Скачать

Билет №1. Абстрактный автомат. Формы представления и моделирование автомата.

Абстрактный автомат. Формы представления и моделирование автомата.

состояние автомата.

 Модель Мили. Законы функционирования автомата Мили представлены следующим образом: q(t+1) = δ(q(t), x(t)) y(t) = λ(q(t), x(t)) t – текущий момент времени; t+1 – следующий момент времени; q(t+1) – состояние автомата в следующий момент времени; q(t), x(t), y(t) – элементы описания автомата в текущий момент времени.

Модель Мура. Законы функционирования автомата Мура представлены следующим образом: q(t Абстрактный автомат (АА) – дискретный преобразователь информации; представляет собой множество, состоящее из шести элементов: Для задания конечного автомата  все элементы множества должны быть заданы явно. Так дляавтомата Мили:

 - алфавит состояний;

 - выходной алфавит;

 - входной алфавит;

- функция переходов автомата из одного состояния в другое

-функция выходов

 - начальное +1) = δ(q(t), x(t)) y(t) = λ(q(t)) В модели Мура выходной сигнал явно зависит только от состояния, а косвенно –  и от входного сигнала.

Например, автомат Мили , представленный в табл.1.3 в явной форме описывается так:

Автомат Мура , представленный в табл.1.8 в явной форме описывается так:

Табличная форма.

Автомат Мили задается таблицей переходов (табл.6.1) и таблицей выходов (табл.6.2)

Таблица 6.1

ТП

а0

а1

а2

х0

а0

а1

а2

х1

а1

а2

а0

х2

а2

а0

а0

х3

а0

а0

а0

Таблица 6.2

ТВ

а0

а1

а2

х0

у0

у0

у0

х1

у0

у0

у1

х2

у0

у1

у1

х3

у1

у1

у1

На пересечении столбца и строк в таблице переходов записывается состояние перехода as(t+1)=[am(t), xf(t)], в которое автомат переходит из состояния am под действием сигнала xf, а в столбце выходов – соответствующий этому переходу выходной сигнал y(t)=[am(t), xf(t)]

Таблицы 6.1 и 6.2 определяют функционирование простого автомата для продажи газет стоимостью 30 центов. Когда сумма монет, опущенных в автомат (различаются монеты стоимость 10, 20, и 30 центов) равна или больше 30 центов, автомат генерирует выходной сигнал y1 и выдает газету. В остальных случаях генерируется сигнал y0.

Когда на входе присутствует сигнал x0 (отсутствие монеты), генерируется выходной сигнал y0 (отсутствие газеты).

Как нам известно, выходной сигнал автомата Мура зависит только от внутреннего состояния. Поэтому автомат Мура может быть задан одной отмеченной таблицей переходов (табл.6.3).

Таблица 6.3

ОТП

u1

u1

u3

u2

u3

a1

a2

a3

a4

a5

x1

a2

a5

a3

a3

a3

x2

a4

a2

a2

a1

a1

С-автомат задается двумя таблицами (отмеченной таблицей переходов и таблицей выходов или наоборот таблицей переходов и отмеченной таблицей выходов(табл..6.4 и табл..6.5))

Таблица 6.4

ТП

u1

u1

u3

u3

u2

u2

a1

a2

a3

a4

a5

a6

х1

a6

a6

a4

a3

a4

a1

х2

a4

a3

a5

a5

a5

a2

Таблица 6.5

ТВ

a1

a2

a3

a4

a5

a6

x1

y1

y1

y2

y1

y2

y2

x2

y2

y1

y1

y2

y1

y1

Графовая форма задания абстрактных автоматов

В данном случае автомат  представляется графом, в котором:

множество  изображено вершинами графа;

функция  задана дугами графа, причем две вершины графа  и , соединяются дугой, если в автомате существует переход из  в  ;

множество  изображено метками дуг ставится на дуге из вершины  в вершину , если в автомате существует переход из  в  под действием входного сигнала  ;

функция  задана метками дуг или вершин: для автомата Мили дуга из вершины  в вершину  помечается выходным сигналом , если в автомате существует переход из  в  и при этом вырабатывается выходной сигнал  ; а дляавтомата Мура выходным сигналом  помечается вершина, определяющая .

На табл.1.8 приведены примеры описания автомата Мили и автомата Мура:

Рис. 1.8.

Матричная форма

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

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

Билет №2. Абстрактный автомат. Автоматы Мура, Миля.

Определение. Абстрактным конечным автоматом называется шестерка объектов

A={S, s0, X, Y, φ,ψ},

где S – конечное непустое множество состояний;

s0€S – начальное состояние;

X – конечное непустое множество входных сигналов;

Y – множество выходных сигналов;

φ : SˣX →S– функция переходов;

ψ : SˣX →S – функция выходов.

По способу формирования функций выходов среди синхронных автоматов выделяют автоматы Мили и автоматы Мура

// (первый источник)

В автомате Мили функция выходов ψ определяет значение выходного символа по классической схеме абстрактного автомата. Она является двухаргументной и символ y (t) в выходном канале обнаруживается только при наличии символа во входном канале x (t). Функции перехода и выхода для автомата Мили можно записать в виде

s(t+h) φ(s(t),x(t));

y(t+h) ψ(s(t),x(t)), где h – длительность такта.

Зависимость выходного сигнала только от состояния представлена в автоматах типа Мура. В автоматах этого типа функция выходов определяет значение выходного символа только по одному аргументу – состоянию автомата. При этом символ y (t) в выходном канале существует все время, пока автомат находится в состоянии s (t ). Для автомата Мура функции перехода и выхода можно записать как

s(t+h) φ(s(t),x(t));

y(t+h) ψ(s(t)).

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

//(второй источник)

Автомат Мура (абстрактный автомат второго рода) в теории вычислений — конечный автомат, выходное значение сигнала в котором зависит лишь от текущего состояния данного автомата, и, не зависит напрямую, в, отличие от автомата Мили, от входных значений.

Формальное определение:

Автомат Мура может быть определен как кортеж из 6 элементов, включающий:

- множество внутренних состояний S (внутренний алфавит);

- начальное состояние S0;

- множество входных сигналов X (входной алфавит);

- множество выходных сигналов Y (выходной алфавит);

- функция переходов Φ(z, x).

- Для любого автомата Мура существует эквивалентный ему автомат Мили и наоборот. Любой автомат Мура путем добавления ряда внутренних состояний может быть преобразован в автомат Мили.

Способы задания:

- Диаграмма — изображённый на плоскости ориентированный граф, вершины которого взаимно однозначно соответствуют состояниям автомата, а дуги — входным символам.

- Таблица переходов-выходов, в ячейках которой для каждой пары значений аргументов х(t), s(t) проставляются будущие внутренние состояния s(t+1). Значения выходных сигналов y(t) представляются в отдельном столбце.

Таблица переходов

Y1

Y2

Y3

Y1

Y2

Y2

Y3

a1

a2

a3

a4

a5

a6

a7

1

a5

a4

a5

a3

a4

a2

a5

2

a7

a1

a4

a2

a1

a3

a4

Автомат Мили (англ. Mealy machine) — конечный автомат, выходная последовательность которого (в отличие от автомата Мура) зависит от состояния автомата и входных сигналов. Это означает, что в графе состояний каждому ребру соответствует некоторое значение (выходной символ). В вершины графа автомата Мили записываются выходящие сигналы, а дугам графа приписывают условие перехода из одного состояния в другое, а также входящие сигналы.

Автомат Мили можно описать пятеркой (Q,X,Y,f,g), где Q - множество состояний автомата, X - множество входных символов, Y - множество выходных символов, q=f(Q,X) - функция состояний, y=g(Q,X) - функция выходных символов.

Кодировка автомата Мили:

Вершина (операторная или логическая), стоящая после вершины "Начало", а также вход вершины "Конец" помечается символом S1, вершины, стоящие после операторных помечаются символом Sn (n=2,3..).

Матрица функций переходов

Q / X

C1

C2

C3

q1

q1 / S

q2 / U1

q3 / U2

q2

q1 / D1

q2 / S

q3 / U1

q3

q1 / D2

q2 / D1

q3 / S

Билет №3.Абстрактный автомат. Переводы автомата Мура в автомат Миля и обратно.

1.3.4. Переход от а Мура к а Мили

Прежде чем рассмотреть трансформацию автомата-Мили в автомат Мура, наложим на автомат Мили следующее ограничение: у автомата не должно быть преходящих состояний. Под преходящим будем понимать состояние, в которое при представлении автомата в виде графа не входит ни одна дуга, но которое имеет по крайней мере одну выходящую дугу . Итак, пусть задан автомат Мили

SA={AA, ZA, WA, A, A, a1A} ,

где

AA = {а1 , :, аm , : , aM},

ZA= {z1 , :, zf , :, zF},

WA = {w1 , :, wg , : , wG} ;

A - реализует отображение AA х Z A в AA, A - отображение A A на WA, а a1A = a1 - начальное состояние.

Рис. 1-6. Граф автомата Мура S5 Рис. 1-7. Иллюстрация перехода от модели Мура к модели Мили

Построим автомат Мили

SB={AB, ZB, WB, B , B, a1B},

у которого

AB = AA = {а1 , :, аm , : , aM},

ZB= ZA = {z1 , :, zf , :, zF},

WB = WA = {w1 , :, wg , : , wG};

B = A, a1B = a 1A = a1

Функцию выходов Мили B определим следующим образом. Если в автомате Мура A(am,zf)=as и A(as)=wg, то в автомате Мили B(am,zf)=wg.

Переход от автомата Мура к автомату Мили при графическом способе задания иллюстрируется рис.1-7: выходной сигнал (wg), записанный рядом с вершиной (аs), переносится на все дуги, входящие в эту вершину. На рис. 1-8 приведен граф автомата Мили S6, эквивалентного автомату Мура S3 (рис. 1-4).

При табличном способе задания автомата SA таблица переходов автомата SB совпадает с таблицей переходов SA, а таблица выходов SB получается из таблицы переходов заменой символа as, стоящего на пересечении строки zf и столбца am, символом выходного сигнала wg, отмечающего столбец as , в таблице переходов автомата SA.

Из самого способа построения автомата Мили SB очевидно, что он эквивалентен автомату Мура SA. Действительно, если некоторый водной сигнал zf Z поступает на вход автомата SA, находящегося в состоянии аm, то он перейдет в состояние аs= Am,zf) и выдаст входной сигнал wg= As). Но соответствующий автомат Мили SB из состояния am, также перейдет в состояние as, поскольку Bm,zf) = Am,zf) = аs- и выдаст тот же выходной сигнал wg согласно способу построения функции В. Таким образом, для входной последовательности длины один поведение автоматов SA и SBполностью совпадает. По индукции нетрудно показать, что любое входное слово конечной длины, поданное на входы автоматов SA и SB , установленных в состояния am, вызовет появление одинаковых выходных слов и, следовательно, автоматы SA и SA аm эквивалентны.

Рис. 1-8. Автомат Мили S6эквивалентный автомату Мура S5

Рис. 1-9. Построение множества As

1.3.5. Переход от а Мили к а Мура

Прежде чем рассмотреть трансформацию автомата-Мили в автомат Мура, наложим на автомат Мили следующее ограничение: у автомата не должно быть преходящих состояний. Под преходящим будем понимать состояние, в которое при представлении автомата в виде графа не входит ни одна дуга, но которое имеет по крайней мере одну выходящую дугу (пример - состояние a1 на рис. 1-3). Итак, пусть задан автомат Мили

SA={AA, ZA, WA, A, A, a1A} ,

где

AA = {а1 , :, аm , : , aM},

ZA= {z1 , :, zf , :, zF},

WA = {w1 , :, wg , : , wG};

A - реализует отображение AA х ZA в AA, A - отображение AA на WA , а a1A = a1 - начальное состояние.

Построим автомат Мура

SB={AB, ZB, WB, B, B, a1B},

у которого

ZB= ZA = {z1 , :, zf , :, zF},

WB = WA = {w1 , :, wg , : , wG};

Для определения АB каждому состоянию as AA поставим в соответствие множество As всевозможных пар вида s,w g), где wg - выходной сигнал, приписанный входящей в аs дуге (рис. 1-9): Аs={(as, wg) | (am, zf) = as и (am, zf) = wg}

Число элементов в множестве Аs равно числу различных выходных сигналов на дугах автомата S A, входящих в состояние as. Множество остояний автомата SB получим как обединение множеств AS (s=1,:,M):

Рис. 1-10. Иллюстрация перехода от модели Мили к модели Мура

Функции выходов B и переходов B определим слудиющим образом. Каждому состоянию автомата Мура SB , представляющему собой пару вида (as, Wg), поставим в соответствие выходной сигнал Wg. Если в автомате Мили SA был переход а1B m, zf) = Wk , то в SB (рис. 1-10) будет переход из множества состояний Am , порождаемых am , в состояние (as, Wk) под действием входного сигнала zf.

В качестве начального состояния а1B можно взять любое из состояний множества А1, которое порождается начальным состоянием а1 автомата SA. Напомним, что при сравнении реакции автоматовSA и SB на всевозможные входные слова не должен учитываться выходной сигнал в момент времениt=0, связанный с состоянием а1B автомата SB .

Билет №4.Абстрактный автомат. Автоматы без выхода. Распознающие автоматы. Распознающим называется автомат Мура с множеством выделенных состояний, называемых конечными. Говорят, что автомат распознает входное слово, если, начав свою работу в одном из начальных состояний, он заканчивает ее в одном из конечных.

Распознающий автомат – это, как правило, недетерминированный частичный автомат. То есть по одному и тому же сигналу можно перейти в различные состояния, а в некоторых состояниях нет перехода для ряда входных сигналов.

Распознающий автомат – это автомат Мура, в котором фиксируется на-

чальное состояние и подмножество состояний F⊆Q, называемое множеством

заключительных состояний. Говорят, что автомат допускает (принимает, распо-

знает, представляет) данное слово, если реакцией на это слово может быть пе-

реход автомата в одно из заключительных состояний.

Одним из наиболее широко используемых на практике типов распо-

знающих автоматов является частичный недетерминированный автомат. Неде-

терминизм проявляется в том, что из одного состояния по одному и тому же

входному сигналу возможны переходы в различные состояния, т.е. функция пе-

реходов заменяется отношением переходов

Автомат без выхода(конечный автомат) — абстрактный автомат без выходного потока, число возможных состояний которого конечно. Результат работы автомата определяется по его конечному состоянию.

Существуют различные способы задания конечного автомата. Например, конечный автомат может быть задан в виде упорядоченной пятерки: , где

  •  — входной алфавит (конечное множество входных символов), из которого формируются входные цепочки, допускаемые конечным автоматом;

  •  — множество состояний;

  •  — начальное состояние ;

  •  — множество заключительных состояний ;

  •  — функция переходов, определенная как отображение , такое, что , т.е. значение функции переходов на упорядоченной паре (состояние, входной символ или пустая цепочка) есть множество всех состояний, в которые из данного состояния возможен переход по данному входному символу или пустой цепочке (λ).

Конечный автомат начинает работу в состоянии q0, считывая по одному символу входной цепочки. Считанный символ переводит автомат в новое состояние в соответствии с функцией переходов. Читая входную цепочку x и делая один такт за другим, автомат, после того как он прочитает последнюю букву цепочки, окажется в каком-то состоянии q'. Если это состояние является заключительным, то говорят, что автомат допустил цепочку x.

Билет №5. Абстрактный автомат. Минимизация автоматов.

//Лекции

Теперь перейдём к описанию процесса минимизации конечного автомата.

  1. Мы начнём с поиска и удаления всех недостижимых состояний.

  2. Затем мы должны найти такое разбиение множества состояний автомата, чтобы каждое подмножество содержало неразличимые состояния, т.е. если s и t принадлежат некоторому подмножеству, то для всех a из  (s,a) и (t,a) также принадлежат этому подмножеству. Для этого мы разобьём множество состояний на два подмножества: F и S-F.

  3. В дальнейшем, мы попытаемся разбить каждое из подмножеств, соблюдая указанное выше условие. Если возникает ситуация, при которой мы не можем разбить никакое множество состояний, то мы заканчиваем процесс разбиения.

  4. В результате мы получим некоторый набор множеств состояний S1…Sk. Каждое из Si содержит только неразличимые состояния.

  5. Наконец, внесём в множество состояний минимизированного автомата по одному представителю каждого из множеств Si. На этом процесс завершается.

Алгоритм минимизации детерминированного конечного автомата (эквивалентный начальному)

1, Находим и удаляем из начального автомата все недостижимые и непродуктивные состояния.

2, Все состояния конечного автомата разделяются на классы эквивалентности (0).

  1. Все состояния, которые являются конечными в автомате (qi in F)

  2. Все состояния, не вошедшие в F

3, Строим новое одно эквивалентное разбиение, выделив те состояния, которые по одинаковым символам переходят в 0 эквивалентные.

4, Повторяется шаг 3, последовательно создавая n+1 эквивалентное состояние по n эквивалентным, увеличивая так число классов эквивалентности.

5, Алгоритм заканчивается, когда n+1 эквивалентные состояния совпадают с n эквивалентными.

Каждый полученный класс эквивалентности будет новым состоянием в новом минимизированном автомате.

В множество F' автомата внесём те состояния, которые содержат хотя бы одно состояние из начального.

Пример.

Задан избыточный детерминированный KA=(,Q,Q0,,F)

={0,1}

Q={A,B,C,D,E,F,G}

F={D,E}

: (d)

d(A,0)={B}

d(A,1={C}

d(B,1)={D}

d(D,1)={E}

d(E,1)={D}

d(D,0)={C}

d(E,0)={B}

d(C,1)={E}

d(G,1)={E}

d(G,0)={F}

d(F,0)={G}

d(F,1)={D}

Минимизация.

Первый шаг. Удаляем недоститжимые и непродуктивные состояния. В состояния F и G нельзя попасть, в них нет стрелок – они недостижимые.

Строим 0 эквивалентные:

0-> (D,E), остальные → A, B, C

1-> (DE)(BC)(A) — из них можно попасть через один и тот же символ в (D,E)

2->(DE)(BC)(A)

Алгоритм завершён.

Строим новый автомат с состояниями (DE)(BC)(A)

Билет №6. Абстрактный автомат. Эквивалентность автоматов.

//Интернет

Состояние q автомата М и состояние q1 автомата М1 считаются эквивалентными, если оба автомата, получив одну и ту же (любую) входную последовательность символов, перерабатывают ее в одинаковую выходную последовательность.

Автоматы М и М1 называются эквивалентными, если для каждого состояния автомата М существует эквивалентное ему состояние автомата М1 и наоборот.

Другими словами, эквивалентные автоматы реализуют одинаковые преобразования, но могут иметь различное число внутренних состояний.

Понятие эквивалентности состояний применимо и к одному автомату(формально можно считать то М и М1 совпадают). Для одного автомата эквивалентными будут различные состояния, через которые одна и та же последовательность символов преобразуется в одинаковую выходную.

Автомат, эквивалентный заданному и имеющий наименьшее из всех возможных число состояний называется минимальным.

//Лекции

Эквивалентность конечных автоматов

Определение. Два автомата M1=(Q1, ,1 ,q10 ,F1) и M1=(Q2, ,2 ,q20 ,F2) называются эквивалентными, если они распознают один и тот же язык над алфавитом .

Определение. Два состояния si и sj – эквивалентными, если x* верно, что (qi,x) F(qj,x) F. Очевидно, что если два состояния si и sj эквивалентны, то a* состояния (si,a) и (sj,a) также эквивалентны.

Кроме того, т.к. в детерминированном конечном автомате переход (q,) может возникнуть только для конечного состояния q, то никакое заключительное состояние не может быть эквивалентно незаключительному состоянию. Таким образом, если мы предположим, что начальные состояния автоматов эквивалентны, то мы можем получить и другие пары эквивалентных состояний. Если в одну из таких пар попадет заключительное состояние вместе с незаключительным, то si и sj неэквивалентны. Напишем алгоритм разбиения множества состояний на классы эквивалентности:

Добавить (q10, q20) в Список;

Список = 0; /* Множество эквивалентных множеств */

for each (q in Q1 +Q2) { Добавить {q} в Список; }

while (есть пара (qi, qj), входящая в Список) {

Удалить пару (qi, qj) из Списка;

Пусть A и A' - такие множества, что

qiA и qjA’;

if (A != A') {

A = A + A';

for (a from ) { Добавить ( (qi,a), (qj,a) в Список; }

}

}

Таким образом, мы получим разбиение множества Q1Q2 на множества эквивалентных состояний, если q10 и q20 – эквивалентны. Теперь осталось проверить, что никакое из этих множеств не содержит заключительное и незаключительное соcтояния. Если это верно, то автоматы эквивалентны.

Билет №7. Язык HTML. Основные операторы.

Основные теги:

<html></html> - Указывает программе просмотра страниц что это HTML документ.

<head></head> - Определяет место, где помещается различная информация не отображаемая в теле документа. Здесь располагается тег названия документа и теги для поисковых машин.

<body></body> - Определяет видимую часть документа

Теги оглавления:

<title></title> - Помещает название документа в оглавление программы просмотра страниц

Атрибуты тела документа:

<body bgcolor=?> - Устанавливает цвет фона документа, используя значение цвета в виде RRGGBB - пример: FF0000 - красный цвет.

<body text=?> - Устанавливает цвет текста документа, используя значение цвета в виде RRGGBB - пример: 000000 - черный цвет.

Теги для форматирования текста:

<b></b> - Создает жирый текст

<i></i> - Создает наклонный текст

Форматирование:

<p> - Создает новый параграф <br> - Вставляет перевод строки.

Таблицы :

<table></table> - Создает таблицу.

<tr></tr> - Определяет строку в таблице.

<td></td> - Определяет отдельную ячейку в таблице.

<th></th> - Определяет заголовок таблицы (нормальная ячейка с отцентрованным жирным текстом)

Билет №8. Обучающие программы. Модели обучения.

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

Усвоение учащимися материала проверяется серией контрольных вопросов, предлагаемых им либо в конце каждой порции материала, либо периодически в процессе его изучения (от правильности ответа зависит переход к следующей дозе материала).

Модель обучения – схема или план действий педагога при осуществлении учебного процесса. В основе модели обучения лежит организация преобладающей деятельности учащихся.

Различают две принципиально разных модели обучения: линейная и адаптивная.

Линейная модель характеризуется строгой последовательностью прохождения учебного материала (блоков, модулей), которая заранее предопределена разработчиком системы (администратором, преподавателем, разработчиком учебных материалов и т.п.). Несмотря на то, что данные последовательности, как правило различаются на уровне категорий (школьники, студенты), групп (по специальностям) и даже отдельных студентов (по уровню подготовки), тем не менее процесс обучения заключается в переходе от одного учебного блока (модуля) к другому по заранее заданной траектории.

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

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

Суть адаптивной модели обучения заключается в следующем: последовательность прохождения учебного материала динамически генерируется в зависимости от пожеланий обучаемого (к видам представления информации, глубине изложения материала и т.п.) и результатов анализа деятельности обучаемого (входное или промежуточное тестирование, оценка психофизического состояния).

В современных обучающих системах виды представления информации должны учитывать особенности репрезентативной системы обучаемого. Кто-то из обучаемых является визуалом (лучше воспринимает информацию в виде изображений), другие – аудиалы, которые воспринимают информацию на слух, третьи – кинестетики, – люди, воспринимающие большую часть информации через другие ощущения (обоняние, осязание и др.) и с помощью движений.

Другим вариантом может быть динамическое формирование траектории обучения на основе одного большого входного теста, который объединяет в себе все вопросы по дисциплине. По результатам данного теста формируется перечень учебных модулей, которые должен пройти обучаемый.

Акроним VARK – сокращение для Visual (визуальный), Aural (слуховой), Read/write (чтение/запись), and Kinesthetic (кинестетический – тактильно-мышечный) режимов восприятия учебной информации. Флеминг и Миллс в 1992 определили эти четыре категории, как определяющие ощущения своих студентов.

Визуальный (V)

Предпочтительно отображение информации в виде рисунков, диаграмм, блок-схем и всех тех символических линий, кругов, деревьев и других элементов, которые используют вместо слов преподаватели для представления информации.

Слуховой/Аудиторный (A)

Этот режим восприятия описывает предпочтение получения информации «на слух». Студенты с такой модальностью лучше обучаются посредством лекций, семинаров, прослушиванием записанных уроков, групповых дискуссий, веб-чата, просто разговоров о предмете.

Чтение/Запись (R)

Предпочтительна информация, отображенная в виде слов. Не секрет, что многие академические методики исключительно направлены на этот режим. Режим восприятия сдвинут в сторону текстового ввода-вывода – чтение и запись информации во всех ее формах.

Кинестетический (K)

По определению, эта модальность относится к «перцепторному предпочтению использования на опыте и в практике (симуляция или реальность)". Поскольку такое описание может подходить и для других модальностей, ключом является то, что студент

всегда «подключен к реальности», через опыты, примеры, практику или симуляцию.

Далее мы рассмотрим модели обучаемого и способы представления информации и анализа ответов в известных автоматизированных обучающих программах. Процесс обучения имеет три уровня: 1. узнавание-понятие, 2. анализ-дифференциация, 3. синтез-генерация. Для решения этих задач при обучении программированию необходимо: 1. Определение предметной области, в которой задается система опреде-лений конструкций языка и совокупностью задач, на базе которых отра-батывается восприятие основных языковые конструкций и основные понятия определенной предметной области. Для определения задач данной предметной области даются их формулировка, варианты реше-ния - программа и демонстрация ее работы; 2. Развитие теории в данной предметной области, где определяется пове-дение определенных свойств с изменением условий (сложностью и ог-раничений); 3. Методы решения задач: • математическая индукция, • итерация, • рекурсия, • линейное программирование, • перебор, • метод ветвей и границ, • эвристический, • приближенное решение; 4. Сложность решения задач, где определяется необходимый ресурс для решения данной хадачи в зависимости от ограничений и методов реше-ния; 5. Сведение одной задачи к другой; 6. технология решения задач; • формы алгоритмов, • методы программирования (сверху в низ, модульное, функциональ-ное и т.д.);

Билет №9. Обучающие программы. Этапы обучения.

Процесс обучения имеет три уровня: 1. узнавание-понятие, 2. анализ-дифференциация, 3. синтез-генерация.

В процессе обучения выделяют четыре основных этапа:

  1. восприятие учебного материала, подлежащего усвоению;

  2. осмысливание учебного материала, образование понятий;

  3. закрепление и совершенствование знаний, образование умений и навыков;

  4. применение на практике полученных знаний, умений и навыков.

На первом этапе познания стоит задача формирования представления об изучаемом объекте; на основе общего представления об изучаемом объекте идетпостепенно углубляющееся осмысливание, обесценивающее понимание.

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

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

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

Билет №10. Обучающие программы. Типы упражнений.

Упражнение - это метод обучения, который предусматривает целенаправленное, многократное повторение учащимися определенных действий или операций с целью формирования умений и навыков

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

  • подготовительные, пробные (предупредительные, комментированные, объяснительные);

  • тренировочные (по образцу, по инструкции, по заданию без подробных указаний);

  • творческие

Большинство инструментальных систем предоставляют преподавателю возможность составлять обучающие и контролирующие задания с различными типами ответов. Рассмотрим их.

  1. С выборочным ответом. Обучаемому предлагается задание (вопрос) и список готовых ответов, из которых он может сделать выбор правильного ответа (утверждения).

Вероятность угадывания правильного ответа сводится к минимуму следующими простыми приемами:

  • повторением аналогичного по смыслу вопроса в нескольких различных формах;

  • увеличением числа элементов для выбора (при выборе из пяти ответов вероятность угадывания равна 0,2);

  • увеличение числа верных ответов до двух или до нескольких пар.

  1. С частично-конструируемым ответом. Эти задания являются промежуточным и связующим звеном между заданиями со свободно-конструируемым и выборочным ответом. Частично-конструируемый ответ составляется из частей, предложенных преподавателем.

Эта форма используется для заданий по составлению определений законов, теорем, стандартных формулировок и т.д. Как правило, в верный ответ входят не все элементы задания, и порядок их выбора не является жестким.

  1. Со свободно-конструируемым ответом. Задания такого типа являются наиболее предпочтительными для автоматизированного обучения и контроля. Задания со свободно-конструируемым ответом наиболее сложны для обучаемого, так как полностью исключают возможность угадывания и требуют значительной умственной работы перед вводом в компьютер ответа, вводимого с клавиатуры в свободной форме.

Билет №11. Обучающие программы. Клиент серверные системы.

Что такое архитектура клиент-сервер? Варианты построения приложений

Клиент-сервер - это вид распределенной системы, в которой есть сервер, выполняющий запросы клиента, причем сервер и клиент общаются между собой с использованием того или иного протокола.

Под клиентом понимается программа, использующая ресурсы, а под сервером (по-английски - слуга) программа, обслуживающая запросы клиентов на получение ресурсов определенного вида. Столь широкое определение включает в себя практически любую программную технологию, в которой участвуют больше одной программы, функции между которыми распределены асимметрично. Соответственно, говорят о технологии КС применительно к операционным системам, локальным и глобальным сетям и т. д.

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

Понятие архитектуры клиент-сервер в системах управления предприятием связано с делением любой прикладной программы на три основных компонента или слоя. Этими тремя компонентами являются:

-компонент представления (визуализации) данных;

-компонент прикладной логики;

-компонент управления базой данных.

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

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

Поскольку архитектура клиент-сервер является частным случаем технологии клиент-сервер, в ней обязательно есть клиент и сервер. Соответственно, выделяют клиентскую и серверную стороны приложения. Клиентская сторона приложения функционирует на рабочем месте пользователя, в роли которого в подавляющем числе случаев выступает персональный компьютер. Серверная сторона функционирует на специализированном комплексе, включающем в себя мощные аппаратные средства, требуемый набор стандартного программного обеспечения, систему управления базами данных и собственно структуры данных.

Преимущества

  • Отсутствие дублирования кода программы-сервера программами-клиентами.

  • Так как все вычисления выполняются на сервере, то требования к компьютерам, на которых установлен клиент, снижаются.

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

Недостатки

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

  • Поддержка работы данной системы требует отдельного специалиста — системного администратора.

  • Высокая стоимость оборудования.

Билет №12. Машинная графика. Методы кодировки: ВМР – точечная, площадями, векторная графика.

Компьютерная графика – совокупность методов для преобразования данных с помощью ЭВМ в графические представления и наоборот. компьютерной графики – это система автоматизации (СА) подготовки, преобразования и хранения различной информации с помощью ЭВМ. компьютерной графики - совокупность средств и приемов автоматизации, обработки, кодирования и декодирования информации.

Геометрическое моделирование – описание предметов и явлений, обладающих геометрическими свойствами.

Машинная графика – совокупность технических, промышленных, языковых средств и методов связей пользователя и ЭВМ на уровне зрительных образов при решении различных классов задач.

Bit MaP image (BMP) — универсальный формат растровых графических файлов, используется в операционной системе Windows. Этот формат поддерживается многими графическими редакторами, в том числе редактором Paint. Рекомендуется для хранения и обмена данными с другими приложениями.

Наиболее известными растровыми форматами являются BMP, GIF и JPEG форматы. В формате BMP (от BitMaP) задается цветность всех пикселов изображения. При этом можно выбрать монохромный режим с 256 градациями или цветной с 16 256 или 16 777 216 цветами. Этот формат требует много памяти.

у bmp точечная структура, то есть, в файле идут сначала данные о палитре, а потом о цвете каждой точки.

Точечный формат. Сохраняет информации без какой-либо компрессии. Поэтому и файлы получаются очень большими. Однако, если сохранять 1 цветные изображения, то можно добиться и достаточно малого размера. Читается на всех компьютерах на Windows - платформе. При сохранении в это изображение качество не теряются. В bmp изображение не архивируется, поэтому получаются очень большие файлы.

Векторная графика.

Векторное изображение представляет собой совокупность графических примитивов (точка, отрезок, эллипс…). Каждый примитив описывается математическими формулами. Кодирование зависит от прикладной среды.

Растровая графика обладает существенным недостатком – изображение, закодированное в одном из растровых форматов, очень плохо “переносит” увеличение или уменьшение его размеров – масштабирование. Для решения задач, в которых приходится часто выполнять эту операцию, были разработаны методы, так называемой, векторной графики. В векторной графике, в отличие от основанной на точке – пикселе – растровой графики, базовым объектом является линия. При этом изображение формируется из описываемых математическим, векторным способом отдельных отрезков прямых или кривых линий, а также геометрических фигур – прямоугольников, окружностей и т. д., которые могут быть из них получены.

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

Билет №13. Машинная графика. Графические средства языка Паскаль.

Графические средства языка Паскаль

Графический экран состоит из маленьких точек - пикселов, каждый из которых закрашен в какой-либо цвет. Для работы в графическом режиме существует обширная библиотека процедур и функций, находящихся в модуле Graph. Структуру модуля и правила создания пользовательских модулей мы рассмотрим несколько позже. Чтобы использовать стандартные модули, вам достаточно знать лишь один оператор:

USES модуль , ... ;

Этот оператор должен быть первым оператором в программе, в нем перечисляются все модули, используемые данной программой; в частности, чтобы работать с графикой, вам достаточно записать USES Graph;. Теперь рассмотрим графические средства, предоставляемые этим модулем. Здесь описаны только наиболее употребительные и наиболее полезные, по мнению автора, средства. Тот, кто хочет изучить все возможности модуля Graph, может сделать это, пользуясь справочной службой среды Turbo Pascal (или Borland Pascal).

1. PROCEDURE InitGraph(VAR GraphDriver,GraphMode: Integer; PathToDriver: STRING); - эта процедура инициализирует графический режим, т.е. переключает монитор из текстового режима в графический. Любые графические процедуры и функции могут быть выполнены только в графическом режиме.

2. PROCEDURE CloseGraph; - закрывает графический режим.

3. FUNCTION GetMaxX : Integer; .

4. FUNCTION GetMaxY : Integer; - возвращают соответственно номер самого правого и самого нижнего пиксела экрана. Пикселы нумеруются от 0 до GetMaxX слева направо и от 0 до GetMaxY сверху вниз.

5. PROCEDURE SetBkColor(Color: Word); - устанавливает фоновый цвет, после ее выполнения весь экран будет закрашен в цвет Color. Цветовая палитра также зависит от типа монитора и выбранного графического режима, но стандартная палитра для цветного монитора включает 16 цветов [ 0 – Black, 1 – Blue, 2 – Green, 3 – Cyan, 4 – Red, 5 – Magenta, 6 – Brown, 7 – LightGray, 8 – DarkGray, 9 – LightBlue, 10 – LightGreen, 11 – LightCyan, 12 – LightRed, 13 – LightMagenta, 14 – Yellow, 15 – White].

6. PROCEDURE SetViewPort(x1,y1,x2,y2: Integer; Clip: Boolean); - устанавливает графическое окно. x1,y1,x2,y2 - координаты соответственно левого верхнего и правого нижнего углов окна. После выполнения этой процедуры пикселы будут отсчитываться от левого верхнего угла окна. Логический параметр Clip определяет, следует ли усекать изображения на границах окна. Выполнять эту процедуру вовсе не обязательно, по умолчанию графическое окно занимает весь экран.

7. PROCEDURE ClearDevice; - закрашивает экран фоновым цветом.

8. PROCEDURE PutPixel(X,Y: Integer; Color: Word); - закрашивает пиксел с координатами X,Y цветом Color.

9. FUNCTION GetPixel(X,Y: Integer): Word; - возвращает цвет пиксела с координатами X,Y.

10. PROCEDURE SetColor(Color : Word); - устанавливает цвет линий, все выводимые на экран линии будут иметь цвет Color до выполнения следующей процедуры SetColor.

11. PROCEDURE SetLineStyle(LineStyle, Pattern, Thickness: Word); - устанавливает стиль линий, действует для всех выводимых линий до выполнения SetLineStyle с другими аргументами. Параметр LineStyle может принимать следующие значения:

0 - SolidLn - сплошная линия;

1 - DottedLn - пунктирная линия;

2 - CenterLn - штрих-пунктирная линия;

3 - DashedLn - штриховая линия;

4 - UserBitLn - линия, задаваемая программистом.

Если стиль линии - 4, то форма линии определяется вторым параметром процедуры - Pattern. Толщина линии может принимать всего два значения:

1 - NormWidth - тонкая линия;

3 - ThickWidth - жирная линия.

12. PROCEDURE Line(x 1,y1,x2,y2: Integer); - рисует отрезок прямой от точки с координатами x1,y1 до точки x2,y2.

13. PROCEDURE MoveTo(x,y: Integer); - перемещает графический курсор в точку x,y. Графический курсор не виден на экране, но ряд процедур использует текущее положение графического курсора.

14. PROCEDURE LineTo(x,y: Integer); - рисует отрезок от текущей точки (текущего положения графического курсора) до точки x,y.

15. PROCEDURE MoveRel(Dx,Dy: Integer);- перемещает графический курсор на Dx по горизонтали и на Dy по вертикали.

16. PROCEDURE LineRel(Dx,Dy: Integer); - рисует отрезок от текущей точки до точки со смещением Dx,Dy.

17. FUNCTION GetX: Integer; и

18. FUNCTION GetY: Integer; - возвращают текущие координаты графического курсора.

19. PROCEDURE Rectangle(x1,y1,x2,y2: Integer); - рисует прямоугольник, x1,y1 - координаты левого верхнего угла, x2,y2 - координаты правого нижнего угла.

20. PROCEDURE Circle(X,Y: Integer; R: Word); - рисует окружность радиуса R с центром в точке X,Y.

21. PROCEDURE Ellipse(X,Y: Integer; f1,f2,Rx,Ry: Word); - рисует дугу эллипса с полуосями Rx,Ry и центром в точке X,Y от угла f1 до угла f2 (углы задаются в градусах).

22. PROCEDURE Arc(X,Y: Integer; f1,f2,R: Word); - рисует дугу окружности радиуса R с центром в точке X,Y от угла f1 до угла f2.

23. PROCEDURE SetFillStyle(Pattern,Color: Word); - устанавливает способ закраски. Параметр Pattern может принимать следующие значения: 0 - EmptyFill - не закрашивать, 1 - SolidFill - сплошная закраска, 2 - LineFill, 3 - LtSlashFill,

4 - SlashFill, 5 - BkSlashFill, 6 - LtBkSlashFill,7 - HatchFill, 8 - XHatchFill,

9 - InterleaveFill, 10 - WideDotFill, 11 - CloseDotFill.

24. PROCEDURE Bar(x1,y1,x2,y2: Integer); - рисует закрашенный прямоугольник, используя способ закраски, установленный процедурой SetFillStyle.

25. PROCEDURE FillEllipse(X,Y: Integer; Rx,Ry: Word); - рисует закрашенный эллипс.

26. PROCEDURE Sector(X,Y: Integer; f1,f2,Rx,Ry: Word); - рисует закрашенный эллиптический сектор.

27. PROCEDURE PieSlice(X,Y: Integer; f1,f2,R: Word); - рисует закрашенный круговой сектор.

28. PROCEDURE FloodFill(X,Y: Integer; Border: Word); - закрашивает замкнутую область, ограниченную линией цвета Border, X,Y - координаты любой внутренней точки области. Используется способ закраски "заливка жидкостью", поэтому, если ограничивающая линия имеет разрывы, "жидкость" выльется и закрасит все области экрана, которые сможет. Автор рекомендует самостоятельно провести эксперимент с этой процедурой.

29. PROCEDURE SetTextStyle(Font,Direction,Size: Word); - устанавливает способ вывода текста. Font - номер графического шрифта, принимающий значения 0 - DefaultFont , 1 - TriplexFont , 2 - SmallFont , 3 - SansSerifFont ,

4 - GothicFont. Нулевой шрифт - стандартный и поддерживается всегда. Если вы используете штриховые шрифты с 1-го по 4-й, то должны иметь в вашей рабочей директории шрифтовые файлы TRIP.CHR , LITT.CHR , SANS.CHR , GOTH.CHR (те из них, которые вам нужны). Параметр Direction определяет направление вывода текста (слева направо или сверху вниз) и принимает значения 0 - HorizDir ,1 - VertDir. Параметр Size определяет размер символов и изменяется от 1 до 10.

30. PROCEDURE OutText(S: STRING); - выводит текст на графический экран, используя текущие координаты графического курсора (процедура WRITE[LN] в графическом режиме не работает).

31. PROCEDURE OutTextXY(X,Y: Integer; S: STRING); - выводит текст на графический экран, используя координаты X,Y.

32. PROCEDURE SetTextJustify(Horiz, Vert: Word); - устанавливает способ позиционирования текста. Параметр Horiz может принимать значения:

0 - LeftText - по левому краю,

1 - CenterText - по середине текста,

2 - RightText - по правому краю.

Параметр Vert может принимать значения:

0 - BottomText - по нижнему краю,

1 - CenterText - по середине текста,

2 - TopText - по верхнему краю.

Не пренебрегайте этой процедурой, если хотите аккуратно вывести подписи к вашему рисунку.

33. FUNCTION TextWidth(S: STRING): Word; - возвращает длину текста в пикселах.

34. FUNCTION TextHeight(S: STRING): Word; - возвращает высоту текста в пикселах.

35. PROCEDURE SetVisualPage(Page : Word); - устанавливает видимую графическую страницу (если в данном графическом режиме есть несколько видеостраниц). Page - номер страницы, равный 0,1 и т.д.

36. PROCEDURE SetActivePage(Page : Word); - устанавливает текущую графическую страницу, куда будет направлен весь вывод. Две последние процедуры могут быть использованы для создания мультипликации.

37. PROCEDURE SetGraphMode(Mode: Integer); - устанавливает графическую моду. Большинство графических драйверов допускает несколько мод. Какой графический драйвер задействован в данном компьютере, можно узнать по значению параметра GrDriver после выполнения процедуры InitGraph. Присваивая этой переменной значение DETECT, мы не задаем никакого драйвера, а лишь указываем, что процедура сама должна определить этот драйвер. В Паскале определены следующие константы драйверов: DETECT=0, CGA=1, MCGA=2, EGA=3, EGA64=4, EGAMONO=5, IBM8514=6, HERCMONO=7, ATT400=8, VGA=9, PC3270=10. При успешном выполнении процедура InitGraph возвратит одно из этих значений через параметр GrDriver. Параметру GrMode присваивается значение установленной графической моды (от 0 до 4), причем устанавливается старшая мода. У драйвера VGA есть три моды, различающиеся разрешением экрана и количеством видеостраниц:

0 - 640 ´ 200, 4 страницы,

1 - 640 ´ 350, 2 страницы,

2 - 640 ´ 480, 1 страница.

Именованные константы для графических мод также описаны в модуле Graph; так, для перечисленных выше мод это: VGALo, VGAMed, VGAHi.

38. FUNCTION GetGraphMode : Integer; - возвращает установленную графическую моду.

39. PROCEDURE RestoreCrtMode; - устанавливает текстовый режим монитора. Эта процедура совместно с SetGraphMode может использоваться для отладки графических программ. Предположим, что мы написали, но пока еще не отладили графическую программу. Мы хотим вывести какую-либо информацию, вычисляемую программой, на экран, но использовать для вывода процедуру OutText довольно затруднительно. Организуем нашу программу следующим образом :

... InitGraph ... { здесь мы хотим вывести информацию } RestoreCrtMode; WRITELN(...

{ вернемся в графику } SetGraphMode(GetGraphMode); ...

40. FUNCTION GraphResult :Integer; - возвращает код завершения последней графической операции; если этот код равен grOK (=0), то операция выполнена успешно, в противном случае произошла ошибка.

Билет №14. Машинная графика. Элементы управления на языке Паскаль.

Чтобы создать элементы управления (кнопки, метки, списки) в языке PascalABC.NET - необходимо воспользоваться одним из конструкторов класса ButtonABC (этот класс находится в модуле ABCButtons, который необходимо добавить к проекту):

uses

GraphABC, ABCButtons;

begin

SetWindowTitle('Кнопки');

SetWindowWidth(300);

SetWindowHeight(300);

var btnTimer := new ButtonABC(10, 250, 120, 24, 'Запустить таймер', clMoneyGreen);

end.

 Кнопке дано имя btnTimer, по которому к ней можно обращаться. Перед именем ставится префикс btn, чтобы отличать кнопку от других элементов управления. Размеры кнопки можно изменить при помощи следующих свойств:

 btnTimer.Width:= 160;

btnTimer.Height:= 32;

 

Для перемещения кнопки используются свойства Left и Top:

 

btnTimer.Left:= 20;

btnTimer.Top:= 150;

 Можно одновременно изменять обе координаты, указав в скобках новые координаты левого верхнего угла элемента управления:

 btnTimer.Position:= new Point(40, 100);

 Такое же действие оказывает на кнопку и метод MoveTo, который перемещает её в заданное место окна. Заставим кнопку беспрерывно перемещаться по экрану:

 

var offset:=-1;

var left:=10;

var top:= 148;

While (True) do begin

For var i:=1 To 80 do begin

left:=left-offset;

top:=top+offset;

btnTimer.MoveTo(left,top);

Sleep(10);

End; //For

offset:= - offset;

End; //While

 

Добавим к программе процедуру-обработчик события  Onclick, которое возникает при нажатии на кнопку;

procedure btnTimer_OnClick;

begin

btnTimer.Text := 'Остановить таймер';

end;

 btnTimer.OnClick := btnTimer_OnClick;

полный код программы

 

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

procedure btnTimer_OnClick;

begin

if (btnTimer.Text := 'Остановить таймер') then

btnTimer.Text := 'Запустить таймер'

else

btnTimer.Text := 'Остановить таймер';

end;

полный код программы

 

Когда надписи на кнопке стали правильные, осталось добавить таймер, который также является элементом управления, но невизуальным (невидимым)..

 

_timer := new Timer(1000, timer_OnTick);

 

Первый параметр в конструкторе отвечает за время срабатывания таймера. В данном случае оно равняется одной секунде, или 1000 миллисекунд. Это значит, что через каждую секунду будет происходить событие Tick, которое мы сможем обрабытывать в процедуре timer_OnTick

 

Значение свойства Inretval задается в миллисекундах, а нужны секунды, придётся его поделить на 1000. Прошедшее после нажатия на кнопку время - выводим в заголовке окна приложения:

 

procedure timer_OnTick;

begin

time:= time + _timer.Interval/1000;

Window.Title:= ' Прошло: ' + time.ToString();

end;

 

Необходимо, чтобы таймер начал отсчёт времени только после нажатия на кнопку, то его нужно запустить в процедуре btnTimer_OnClick методом Start:

procedure btnTimer_OnClick;

begin

if (btnTimer.Text = 'Остановить таймер') then

begin

btnTimer.Text := 'Запустить таймер';

_timer.Stop();

end

else

begin

btnTimer.Text := 'Остановить таймер';

_timer.Start();

end

end;

Метод Stop останавливает таймер после его запуска методом Start.

полный код программы

 Для вывода информации лучше использовать элемент управления метку, а не заголовок окна.

В паскале такого ЭУ нет, но можно использовать обычный объект прямоугольник типа RectangeABC, который описан в модуле ABCObjects. Добавим его:

 

uses GraphABC, ABCButtons, Timers; ABCObjects;

 Объявляем глобальную переменную типа RectangeABC:

 lblNime: RectangleABC;

 В основной программе создаём метку с помощью ключевого слова new:

 lblNime:= new RectangleABC(10, 18, 120, 26, Color.White);

lblNime.FontStyle:= fsBold;

 Надпись на метке выведем в процедуре timer_OnTick:

 procedure timer_OnTick;

begin

time:= time + _timer.Interval/1000;

Window.Title:= ' Прошло: ' + time.ToString();

lblNime.Text:= ' Прошло: ' + time.ToString();

end;

полный код программы

Размеры метки, а также её положение в окне приложения можно задать с помощью свойств WidthHeightLeft и Top.

 

Заменим одну кнопку, которая отвечала за старт и остановку таймера, двумя:

 

var

btnSrart, btnStop : ButtonABC;

//КНОПКИ

btnSrart := new ButtonABC(10, 148, 140, 30, 'Запускаем таймер', clMoneyGreen);

//процедура - обработчик:

btnSrart.OnClick := btnSrart_OnClick;

btnStop := new ButtonABC(170, 148, 140, 30, 'Остановить таймер', clMoneyGreen);

//процедура - обработчик:

btnStop.OnClick := btnStop_OnClick;

 

Пока таймер не запушен, правая кнопка лишняя. Уберем правую кнопку:

 

btnStop.Visible := false;

 

Для этого используем свойство Visible, которое есть у кнопок. Если оно равняется false, то кнопка исчезает с экрана, если true, то снова появляется.

С двумя кнопками процедуры – обработчики стали проще:

 

procedure btnSrart_OnClick;

begin

btnSrart.Visible := false;

btnStop.Visible := true;

_timer.Start();

end;

procedure btnStop_OnClick;

begin

btnStop.Visible := false;

btnSrart.Visible := true;

_timer.Stop();

end;

полный код программы

 

Билет №15. Машинная графика. Методы анимации.

Компьютерная анимация — вид анимации, создаваемый при помощи компьютера. На сегодня получила широкое применение как в области развлечений, так и в производственной, научной и деловой сферах. Являясь производной от компьютерной графики, анимация наследует те же способы создания изображений:векторный,растровый,фрактальный,3d.

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

1) Анимация по ключевым кадрам

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

2) Запись движения

Данные анимации записываются специальным оборудованием с реально двигающихся объектов и переносятся на их имитацию в компьютере. Распространенный пример такой техники — Захват движений. Актеры в специальных костюмах с датчиками, совершают перемещения по студии, а их движение записывается камерами и анализируется специальным программным обеспечением. Итоговые данные о перемещении суставов и конечностей актеров применяют к трехмерным скелетам виртуальных персонажей, чем добиваются высокого уровня достоверности их движения.

3) Процедуральная анимация

Такая анимация полностью или частично рассчитывается компьютером. Сюда можно включить следующие её виды:

Симуляция физического взаимодействия твердых тел

Имитация движения систем частиц, жидкостей и газов

Имитация взаимодействия мягких тел (ткани, волос)

Расчет движения иерархической структуры связей (скелета персонажа) под внешним воздействием

Имитация автономного (самостоятельного) движения персонажа

4)Программы для создания анимации с помощью цифрового фотоаппарата

Программное обеспечение, позволяющее задействовать цифровой фотоаппарат для съемки анимации, применяется также часто, как и, ставшие привычными, 3D или 2D пакеты. Любая программа такого типа обеспечивает управление цифровым фотоаппаратом через компьютер и работу с полученными кадрами.

Графические возможности Delphi. Canvas.

Canvas обеспечивает пространство (холст, канву) для создания, хранения и модификации графических объектов. Canvas является основой графической подсистемы Delphi. Канва обеспечивает:

Ø Загрузку и хранение графических изображений

Ø Создание новых и изменение хранимых изображений с помощью пера, кисти, шрифта

Ø Рисование и закраску различных фигур, линий, текстов

Ø Комбинирование различных изображений

Основные методы Canvas

Arc

Рисует дугу окружности или эллипса

Arc(x1,y1,x2,y2,x3,y3,x4,y4: Integer)

Chord

Рисует заполненную замкнутую фигуру, ограниченную дугой окружности или эллипса и хордой

Chord (x1,y1,x2,y2,x3,y3,x4,y4:Integer);

Draw

Рисует графическое изображение в указанную позицию канвы

Draw (x,y:Integer;Graphic:TGraphic);

DrawFocusRect

Рисует изображение прямоугольника в виде, используемом для отображения рамки фокуса, операцией XOR

DrawFocusRect (const Rect:TRect);

Ellipse

Рисует заполненную окружность или эллипс

Ellipse (x1,y1,x2,y2:Integer);

FillRect

Заполняет указанный прямоугольник канвы, используя текущее значение Brush.

FillRect(const: TRect);

FloodFill

Закрашивает текущей кистью замкнутую область канвы, определенным цветом.

Type TFillStyle = (fsSurfase, fsBorder);

и т.д)

Билет №16. Машинная графика. Метод canvas в DELPHI и JAWA SCRIPT.

Работа с графикой в Delphi предполагает обращение к свойству Canvas компонентов. Для программист Canvas в Delphi – это холст, который дает доступ к каждому пикселю. Конечно, рисовать попиксельно для работы с графикой в Delphi не приходится, система Delphi предоставляет мощные средства работы с графикой, облегчающие задачу программиста.

В работе с графикой в Delphi, у вас в распоряжении находится канва(холст, а точнее свойство Canvas Delphi компонентов), кисть(свойство Brush), карандаш(свойство Pen) компонента на которым мы собираемся рисовать. У Pen и Brush есть свойство Color(цвет) и Style(стиль). Чтоб получить доступ к шрифтам, предоставлено свойство холста(Canvas) Font.

Свойства объекта Pen(Карандаш)

  Свойство

Описание

Color

Цвет линии

Width

Толщина линии(задается в пикселах)

Style

  Вид линии: psSolid ― сплошная; psDash ― пунктирная, длинные штрихи; psDot - пунктирная, короткие штрихи; psDashDot ― пунктирная, с чередованием длинного и короткого штрихов; psDashDotDot ― пунктирная с чередованием одного длинного и двух коротких штрихов; psClear ― линия не отображается(используется если не надо изображать границу области, например прямоугольника)

 

Свойства объекта Brush(Кисть)

Свойство

Описание

Color

Цвет закраски замкнутой области.

Style

Стиль закраски области:― сплошная заливка; штриховка: bsHorizontal―горизонтальная; bsVertical―вертикальная; bsFDiagonal―диагональная с наклоном линии вперед; bsBDiagonal диагональная с наклоном линии назад; bsCross―диагональная клетка.

Основные свойства класса TFont

Свойство

Определяет

Name

Шрифт, который используется для отобраения текста. В качестве значения следует брать название шрифта, например Arial.

Size

Размер шрифта

Style

Стиль начертания символов. Задается с помощью констант: fsBold(полужирный), fsItalic(курсив), fsUnderline(подчеркнутый), fsStrikeOut(перечеркнутый).

Свойство Style является множеством, что позволяет комбинировать необходимые стили. Например, инструкция, которая устанавливает стиль "полужирный курсив", выглдит так:

Font.Style := [fsBold, fsItalic]

Color

Цвет символов. В качестве значения можно использовать константу типа TColor.

  Конечно, не все компоненты в Delphi имеют эти свойства. На вкладке Additional расположен специализированный компонент TImage, специально предназначенный для рисования, но также свойство Canvas имеют, например, такие компоненты как ListBoxComboBoxStringGrid, а также и сама Форма, которая размещает наши компоненты!

 

  Холст для рисования Canvas, представляет собой перевернутую систему координат XOY, где О эта верхняя левая точка компонента или формы(смотря где мы рисуем).

Цвет

Константа

Бирюзовый

clAqua

Черный

clBlack

Синий

clBlue

Ярко-розовый

clFuchsia

Зеленый

clGreen

Салатовый

cLime

Каштановый

clMaroon

Темно-синий

clNavy

Оливковый

clOlive

Фиолетовый

clPurple

Красный

clRed

Серебристый

clSilver

Зелено-голубой

clTeal

Белый

clWhite

   

Константы TColor

  Основное свойство такого объекта как Canvas Delphi - Pixels[i, j] типа TColor, то есть это двумерный массив точек (пикселов), задаваемых своим цветом.

  Рисование на канве происходит в момент присвоения какой-либо точке канвы заданного цвета. Каждому пикселу может быть присвоен любой доступный для Windows цвет.

Для стандартных цветов в Delphi определён набор текстовых констант. Увидеть его можно, открыв в Инспекторе Объектов свойство Color, например, той же Формы.

 

Свойства класса TCanvas

Свойство

Описание

Pen

  Карандаш. Определяет цвет, стиль и толщинц линии, которую рисует, например метод Lineto

PenPos

  Положение(координаты) карандаша

Brush

  Кисть. Определяет цвет и стиль закраски области, например прямоугольника, который рисует метод Rectangle.

Font

  Шрифт. Определяет шрифт, который используется для вывода текста, например методом TextOut.

Билет №17. Машинная графика. Основные функции в графическом редакторе PAINT.

Основные функции Microsoft Paint

Этот редактор является одним из самых простых графических редакторов в среде MS Windows. Paint (в переводе с английского означает «краска») представляет собой простой однооконный редактор растровой графики, который, тем не менее, позволяет создать достаточно сложный рисунок.

Программа включает средства для построения прямых и кривых линий, эллипсов и окружностей, прямоугольников, квадратов и многоугольников (как контурных, так и закрашенных). Есть инструменты для выделения фрагмента рисунка, заливки замкнутой области цветом, а также инструменты, имитирующие рисование кистью и пульверизатором. Имеется возможность создания надписи и задания толщины линии.

Доступны и некоторые операции преобразования рисунка, а именно: зеркальное отображение относительно горизонтальной и вертикальной оси, инвертирование и замена цветов, сжатие, растяжение и наклон. Однако в Paint совершенно отсутствуют разного рода эффекты и фильтры. Кроме того, этот редактор поддерживает всего несколько форматов файлов.

Основные операции с выделенным фрагментом:

1. Переместить - навести мышь внутрь фрагмента и, удерживая левую кнопку мыши, переместить мышь;

2. Скопировать - так же как переместить, но удерживая клавишу Ctrl;

3. Получить шлейф - так же как переместить, но удерживая клавишу Shift;

4. Изменить размер - навести мышь на точку в углу фрагмента или в центре каждой стороны и перетащить;

5. Отразить/Повернуть;

6. Растянуть/Наклонить;

7. Обратить цвета;

8. Очистить.

Билет №18. Машинная графика. Представление куба. Преобразования куба: повороты.

uses crt,graph,xpm;

var x,y,a,alf:integer;

function xs:integer;

begin xs:=round(a*cos(alf*pi/180)) end;

function ys:integer; begin

ys:=round(a*sin(alf*pi/180)) end;

procedure kub(p:integer);

begin setcolor(10*p); line(x,y,x+a,y); line(x+xs,y-ys,x+a+xs,y-ys); line(x,y-a,x+a,y-a); line(x+xs,y-a-ys,x+a+xs,y-a-ys); setcolor(9*p); line(x,y,x,y-a); line(x+xs,y-ys,x+xs,y-a-ys); line(x+a,y,x+a,y-a); line(x+a+xs,y-ys,x+a+xs,y-a-ys); setcolor(12*p); line(x,y,x+xs,y-ys);

line(x+a,y,x+a+xs,y-ys); line(x,y-a,x+xs,y-a-ys); line(x+a,y-a,x+a+xs,y-a-ys); end;

begin

x:=3;y:=1; initgraph(x,y,''); x:=100;y:=100;a:=50;alf:=40; kub(1); readkey; kub(0); readkey; kub(1); readkey;

end.

Билет №19. Машинная графика. Представление куба. Преобразования куба: перемещение.

uses crt,graph,xpm;

var x,y,a,alf:integer;

hod:char;

function xs:integer;

begin xs:=round(a*cos(alf*pi/180)) end;

function ys:integer;

begin ys:=round(a*sin(alf*pi/180)) end;

procedure kub(p:integer);

begin

setcolor(10*p); line(x,y,x+a,y); line(x+xs,y-ys,x+a+xs,y-ys); line(x,y-a,x+a,y-a); line(x+xs,y-a-ys,x+a+xs,y-a-ys); setcolor(9*p); line(x,y,x,y-a); line(x+xs,y-ys,x+xs,y-a-ys); line(x+a,y,x+a,y-a); line(x+a+xs,y-ys,x+a+xs,y-a-ys); setcolor(12*p); line(x,y,x+xs,y-ys); line(x+a,y,x+a+xs,y-ys); line(x,y-a,x+xs,y-a-ys); line(x+a,y-a,x+a+xs,y-a-ys); end;

begin

x:=3;y:=1; initgraph(x,y,''); x:=100;y:=100;a:=50;alf:=40;

repeat

kub(1); if keypressed then begin kub(0); hod:=readkey; case hod of 'a':if (x>1) and (x+xs>1) then x:=x-1; 'w':if y-a-ys>1 then y:=y-1; 's':if y<349 then y:=y+1; 'd':if x+xs+a<639 then x:=x+1; k_pgup:if a<150 then a:=a+1; k_pgdn:if a>10 then a:=a-1; k_home:alf:=alf+1; k_end:alf:=alf-1; end;

end

until hod=#27; я{exit}я

end.

Билет №20. Машинная графика. Представление куба. Преобразования куба: изменение размера.

uses crt,graph,xpm;

var x,y,a,alf:integer;

hod:char;

function xs:integer;

begin xs:=round(a*cos(alf*pi/180)) end;

function ys:integer; begin ys:=round(a*sin(alf*pi/180)) end;

procedure kub(p:integer);

begin setcolor(10*p); line(x,y,x+a,y); line(x+xs,y-ys,x+a+xs,y-ys); line(x,y-a,x+a,y-a); line(x+xs,y-a-ys,x+a+xs,y-a-ys); setcolor(9*p); line(x,y,x,y-a); line(x+xs,y-ys,x+xs,y-a-ys); line(x+a,y,x+a,y-a); line(x+a+xs,y-ys,x+a+xs,y-a-ys); setcolor(12*p); line(x,y,x+xs,y-ys); line(x+a,y,x+a+xs,y-ys); line(x,y-a,x+xs,y-a-ys); line(x+a,y-a,x+a+xs,y-a-ys); end;function checkround: integer; begin if (x+xs+a<639) and (x+xs<639) {right} and (x>1) and (x+xs>1) {left} and (y-a-ys>1) {up} and (y<349) and (y-ys<349) {bottom} then checkround := 0 else checkround := 1; end;begin x:=3;y:=1; initgraph(x,y,''); x:=100;y:=100;a:=50;alf:=40; repeat kub(1); if keypressed then begin kub(0); hod:=readkey; case hod of k_left:if (x>1) and (x+xs>1) then x:=x-1; k_up:if y-a-ys>1 then y:=y-1; k_down:if (y<349) and (y-ys<349) then y:=y+1; k_right:if (x+xs+a<639) and (x+a<639) then x:=x+1; k_pgup:if a<150 then begin a:=a+1; a:=a-checkround end; k_pgdn:if a>10 then begin a:=a-1; a:=a+checkround end; k_home: begin alf:=alf+1; alf:=alf-checkround; end; k_end: begin alf:=alf-1; alf:=alf+checkround; end; end; end until hod=#27;end.

Билет №21. Машинная графика. Представление системы кубов.

uses crt,xpm,graph;

var

kublar:array['0'..'9'] of record x,y,a,alf,vid:integer; end; i,hod,akt:char; j,k:integer;function xs:integer; begin with kublar[i] do xs:=round(a*cos(alf*pi/180)) end;

function ys:integer; begin with kublar[i] do ys:=round(a*sin(alf*pi/180)) end;

procedure kub(nkub:char;p:integer); begin with kublar[nkub] do begin setcolor(10*p);

line(x,y,x+a,y); line(x+xs,y-ys,x+a+xs,y-ys); line(x,y-a,x+a,y-a); line(x+xs,y-a-ys,x+a+xs,y-a-ys); setcolor(9*p); line(x,y,x,y-a); line(x+xs,y-ys,x+xs,y-a-ys); line(x+a,y,x+a,y-a); line(x+a+xs,y-ys,x+a+xs,y-a-ys); setcolor(12*p); line(x,y,x+xs,y-ys); line(x+a,y,x+a+xs,y-ys); line(x,y-a,x+xs,y-a-ys); line(x+a,y-a,x+a+xs,y-a-ys); end end;

function checkround: integer;

begin

with kublar[i] do if (x+xs+a<600) and (x+xs<600) {right} and (x>49) and (x+xs>49) {left} and (y-a-ys>49) {up} and (y<300) and (y-ys<300) {bottom} then checkround := 0 else checkround := 1; end;begin j:=3;k:=1; initgraph(j,k,''); for i:='0' to '9' do with kublar[i] do begin x:=320;y:=200;a:=100;alf:=30;vid:=0 end;

akt:=' '; setfillstyle(1,6); bar(0,0,639,349); setfillstyle(1,0); bar(48,48,601,301); setcolor(15);

rectangle(48,48,601,301); rectangle(46,46,603,303); setcolor(8); rectangle(47,47,602,302);

repeat for i:='0' to '9' do with kublar[i] do begin if i=akt then setcolor(14) else if vid=1 then setcolor(7) else setcolor(8); outtextxy(100+(ord(i)-48)*30,330,i); if vid=1 then kub(i,vid) end; setcolor(14); with kublar[akt] do rectangle(x+2,y-2,x+a-2,y-a+2); if keypressed then begin {zatirka} for i:='0' to '9' do with kublar[i] do begin if i=akt then setcolor(14) else if vid=1 then setcolor(7) else setcolor(8); outtextxy(100+(ord(i)-48)*30,330,i); kub(i,0) end; setcolor(0); with kublar[akt] do rectangle(x+2,y-2,x+a-2,y-a+2); {opredelenie i realizacia hoda} hod:=readkey; with kublar[akt] do case hod of '0'..'9':begin akt:=hod; kublar[hod].vid:=1 end; k_left:if (x>49) and (x+xs>49) then x:=x-1; k_up:if (y-a-ys>49) and (y-a>49) then y:=y-1; k_down:if (y<300) and (y-ys<300) then y:=y+1; k_right:if (x+xs+a<600) and (x+a<600) then x:=x+1; k_pgup:if a<150 then begin a:=a+1; a:=a-checkround end; k_pgdn:if a>10 then begin a:=a-1; a:=a+checkround end; k_home: begin alf:=alf+1; alf:=alf-checkround; end; k_end: begin alf:=alf-1; alf:=alf+checkround; end;

end; end until hod=#27

end.

Билет №22. База данных. Представление текстового файла «абитуриент». Ввод данных с клавиатуры и построчный ввод данных в файл:

фамилия, имя, отчество, пол, дата рождения (дд/мм/гг), индекс адреса, улица, дом, квартира, школа, баллы (профильных предметов) по математике, по русскому, по информатике, по физике.

========================================================================

КОНСОЛЬНОЕ ПРИЛОЖЕНИЕ. Обзор проекта ТИПИС 22

========================================================================

Это приложение ТИПИС 22 создано автоматически с помощью мастера

приложений.

Здесь приведены краткие сведения о содержимом каждого из файлов, использованных

при создании приложения ТИПИС 22.

ТИПИС 22.vcxproj

Основной файл проекта VC++, автоматически создаваемый с помощью мастера

приложений.

Он содержит данные о версии языка Visual C++, использованной для создания

файла, а также сведения о платформах, настройках и свойствах проекта,

выбранных с помощью мастера приложений.

ТИПИС 22.vcxproj.filters

Это файл фильтров для проектов VC++, созданный с помощью мастера

приложений.

Он содержит сведения о сопоставлениях между файлами в вашем проекте и

фильтрами. Эти сопоставления используются в среде IDE для группировки

файлов с одинаковыми расширениями в одном узле (например файлы ".cpp"

сопоставляются с фильтром "Исходные файлы").

ТИПИС 22.cpp

Это основной исходный файл приложения.

/////////////////////////////////////////////////////////////////////////////

Другие стандартные файлы:

StdAfx.h, StdAfx.cpp

Эти файлы используются для построения файла предкомпилированного заголовка

(PCH) с именем ТИПИС 22.pch и файла предкомпилированных типов

с именем StdAfx.obj.

/////////////////////////////////////////////////////////////////////////////

Общие замечания:

С помощью комментариев «TODO:» в мастере приложений обозначаются фрагменты

исходного кода, которые необходимо дополнить или изменить.

/////////////////////////////////////////////////////////////////////////////

// ТИПИС 22.cpp: определяет точку входа для консольного приложения.

//

#include "stdafx.h"

#include <iostream>

#include <windows.h>

#include <iomanip>

#include <locale.h>

#include <string.h>

#include <fstream>

using namespace std;

// создаем структуру, в которую входят все необходимые поля

struct filek

{

char surname[15], name[10], patronymic[15], pol[2], data[9], street[10];

int index, house, flat, school, maths, rus,inf,phys;

};

const int maxl=70;

// все латиницей, потому что лень использовать CharToOem...

int main()

{

ofstream fout("Otvet.txt");

cout<<"Vvodite dannie"<<endl;

filek abiturient;

int x,k=1;

while (k!=0)

{

//Ввод всех полей абитуриента

cout<<"Surname ";

cin>>abiturient.surname;

cout<<"Name ";

cin>>abiturient.name;

cout<<"Patronymic ";

cin>>abiturient.patronymic;

cout<<"Pol ";

cin>>abiturient.pol;

cout<<"Data ";

cin>>abiturient.data;

cout<<"Index ";

cin>>abiturient.index;

cout<<"Street ";

cin>>abiturient.street;

cout<<"House ";

cin>>abiturient.house;

cout<<"Flat ";

cin>>abiturient.flat;

cout<<"School ";

cin>>abiturient.school;

cout<<"Maths ";

cin>>abiturient.maths;

cout<<"Rus ";

cin>>abiturient.rus;

cout<<"Inf ";

cin>>abiturient.inf;

cout<<"Phys ";

cin>>abiturient.phys;

// Вывод в файл данных абитуриента

fout<<abiturient.surname<<' '<<abiturient.name<<' '<<abiturient.patronymic<<' '<<abiturient.pol<<' '<<abiturient.data<<' '<<abiturient.index<<' '<<abiturient.street<<' '<<abiturient.house<<' '<<abiturient.flat<<' '<<abiturient.school<<' '<<abiturient.maths<<' '<<abiturient.rus<<' '<<abiturient.inf<<' '<<abiturient.phys<<endl;

cout<<"Vvedite 1 dlya togo, chtobi vvesti следующего abiturienta, 0-dlya zavershenia vvoda"<<endl;

cin>>k;

}

cout<<"Mozhete prosmotret' poluchennii fail"<<endl;

int n;

cin>>n;

fout.close();

return 0;

}

Билет №23. База данных. Перенос данных из текстового файла «абитуриент» в файл записей «студент». Построчный ввод данных из файла «абитуриент»:

фамилия, имя, отчество, пол, дата рождения (дд/мм/гг), индекс адреса, улица, дом, квартира, школа, баллы (профильных предметов) по математике, по русскому, по информатике, по физике,

и вывод в файл записей студент:

фамилия, имя, отчество, пол, дата рождения (дд/мм/гг), индекс адреса, улица, дом, квартира, школа, баллы (профильных предметов) по математике, по русскому, по информатике, по физике.

// ТИПИС 24.cpp: определяет точку входа для консольного приложения.// #include "stdafx.h" #include <iostream> #include <windows.h> #include <iomanip> #include <locale.h> #include <string.h> #include <fstream> using namespace std; // создаем структуру, в которую входят все необходимые поля struct filek { char surname[15], name[10], patronymic[15], pol[2], data[9], street[10]; int index, house, flat, school, maths, rus,inf,phys; }; const int maxl=70; // все латиницей, потому что лень использовать CharToOem... int main() { ifstream fin("Abiturient.txt"); ofstream fout("Student.txt"); filek abiturient; int x,k=1; while (!fin.eof()) //Пока не конец файла { //Ввод всех полей абитуриента из файла Abiturient fin»abiturient.surname»abiturient.name»abiturient.patronymic»abiturient.pol»abiturient.data»abiturient.index»abiturient.street»abiturient.house»abiturient.flat»abiturient.school»abiturient.maths»abiturient.rus»abiturient.inf»abiturient.phys; // Вывод в файл Student данных абитуриента fout«abiturient.surname«' '«abiturient.name«' '«abiturient.patronymic«' '«abiturient.pol«' '«abiturient.data«' '«abiturient.index«' '«abiturient.street«' '«abiturient.house«' '«abiturient.flat«' '«abiturient.school«' '«abiturient.maths«' '«abiturient.rus«' '«abiturient.inf«' '«abiturient.phys«endl; } cout«"Mozhete prosmotret' poluchennii fail Student"«endl; int n; cin»n; fin.close(); fout.close(); return 0; }

Билет №24. База данных. Редактирование данных в файле записей «студент».

========================================================================

КОНСОЛЬНОЕ ПРИЛОЖЕНИЕ. Обзор проекта ТИТПИС 24

========================================================================

Это приложение ТИТПИС 24 создано автоматически с помощью мастера

приложений.

Здесь приведены краткие сведения о содержимом каждого из файлов, использованных

при создании приложения ТИТПИС 24.

ТИТПИС 24.vcxproj

Основной файл проекта VC++, автоматически создаваемый с помощью мастера

приложений.

Он содержит данные о версии языка Visual C++, использованной для создания

файла, а также сведения о платформах, настройках и свойствах проекта,

выбранных с помощью мастера приложений.

ТИТПИС 24.vcxproj.filters

Это файл фильтров для проектов VC++, созданный с помощью мастера

приложений.

Он содержит сведения о сопоставлениях между файлами в вашем проекте и

фильтрами. Эти сопоставления используются в среде IDE для группировки

файлов с одинаковыми расширениями в одном узле (например файлы ".cpp"

сопоставляются с фильтром "Исходные файлы").

ТИТПИС 24.cpp

Это основной исходный файл приложения.

/////////////////////////////////////////////////////////////////////////////

Другие стандартные файлы:

StdAfx.h, StdAfx.cpp

Эти файлы используются для построения файла предкомпилированного заголовка

(PCH) с именем ТИТПИС 24.pch и файла предкомпилированных типов

с именем StdAfx.obj.

/////////////////////////////////////////////////////////////////////////////

Общие замечания:

С помощью комментариев «TODO:» в мастере приложений обозначаются фрагменты

исходного кода, которые необходимо дополнить или изменить.

/////////////////////////////////////////////////////////////////////////////

// ТИПИС 24.cpp: определяет точку входа для консольного приложения.

//

#include "stdafx.h"

#include <iostream>

#include <windows.h>

#include <iomanip>

#include <locale.h>

#include <string.h>

#include <fstream>

using namespace std;

// создаем структуру, в которую входят все необходимые поля

struct filek

{

char surname[15], name[10], patronymic[15], pol[2], data[9], street[10];

int index, house, flat, school, maths, rus,inf,phys;

};

const int maxl=70;

// все латиницей, потому что лень использовать CharToOem...

int main()

{

ifstream fin("Student.txt");

filek abiturient[maxl];

int k;

int i=-1;

cout<<"Starii spisok studentov"<<endl;

if (!fin)

{

cout<<"Spisok studentov pust"<<endl;

}

else

{

while (!fin.eof()) //Пока не конец файла

{

i++;

//Ввод всех полей абитуриента из файла Abiturient

fin>>abiturient[i].surname>>abiturient[i].name>>abiturient[i].patronymic>>abiturient[i].pol>>abiturient[i].data>>abiturient[i].index>>abiturient[i].street>>abiturient[i].house>>abiturient[i].flat>>abiturient[i].school>>abiturient[i].maths>>abiturient[i].rus>>abiturient[i].inf>>abiturient[i].phys;

// Вывод в файл Student данных абитуриента

cout<<i+1<<' '<<abiturient[i].surname<<' '<<abiturient[i].name<<' '<<abiturient[i].patronymic<<' '<<abiturient[i].pol<<' '<<abiturient[i].data<<' '<<abiturient[i].index<<' '<<abiturient[i].street<<' '<<abiturient[i].house<<' '<<abiturient[i].flat<<' '<<abiturient[i].school<<' '<<abiturient[i].maths<<' '<<abiturient[i].rus<<' '<<abiturient[i].inf<<' '<<abiturient[i].phys<<endl;

}

}

cout<<"Vvedite nomer studenta i ego novie dannie ili 0, esli net izmenenii"<<endl;

cout<<"Nomer ";

cin>>k;

while (k!=0)

{

k--;

cout<<"Surname ";

cin>>abiturient[k].surname;

cout<<"Name ";

cin>>abiturient[k].name;

cout<<"Patronymic ";

cin>>abiturient[k].patronymic;

cout<<"Pol ";

cin>>abiturient[k].pol;

cout<<"Data ";

cin>>abiturient[k].data;

cout<<"Index ";

cin>>abiturient[k].index;

cout<<"Street ";

cin>>abiturient[k].street;

cout<<"House ";

cin>>abiturient[k].house;

cout<<"Flat ";

cin>>abiturient[k].flat;

cout<<"School ";

cin>>abiturient[k].school;

cout<<"Maths ";

cin>>abiturient[k].maths;

cout<<"Rus ";

cin>>abiturient[k].rus;

cout<<"Inf ";

cin>>abiturient[k].inf;

cout<<"Phys ";

cin>>abiturient[k].phys;

cout<<"Vvedite nomer studenta i ego novie dannie ili 0, esli net izmenenii"<<endl;

cin>>k;

}

ofstream fout("Student.txt");

for (int j=0;j<=i;j++)

{

fout<<abiturient[j].surname<<' '<<abiturient[j].name<<' '<<abiturient[j].patronymic<<' '<<abiturient[j].pol<<' '<<abiturient[j].data<<' '<<abiturient[j].index<<' '<<abiturient[j].street<<' '<<abiturient[j].house<<' '<<abiturient[j].flat<<' '<<abiturient[j].school<<' '<<abiturient[j].maths<<' '<<abiturient[j].rus<<' '<<abiturient[j].inf<<' '<<abiturient[j].phys<<endl;

}

cout<<"Mozhete prosmotret' poluchennii fail Student"<<endl;

int n;

cin>>n;

fin.close();

fout.close();

return 0;

}

БИЛЕТ № 25. База данных. Задан файл записей о сотрудниках, содержащий следующую информацию: Фамилия[15], Имя[15], Отчество[15], дата рождения[6], пол[1]. Создать файл записей: Фамилия[15], Имя[15], Отчество[15], возраст[2], пол[1].

БИЛЕТ № 26. База данных. Заданы два файла записей. Файл о студентах с оценками по текущей сессии: Фамилия[15], Имя[15], Отчество[15], Экзамен[15]. Файл об оценках по экзаменам студент с номером экзамена и оценкой: Фамилия[15], Имя[15], Отчество[15], Экзамен[15]. Файлы упорядочены по Фамилии, Имени, Отчеству и номеру экзамена. Внести оценки в файл о студентах.

Билет №27. База данных. Реляционные базы данных.

Существуют следующие разновидности баз данных:

- иерархические;

- реляционные;

- объектно-ориентированные;

- гибридные.

В реляционных базах данных данные собраны в таблицы, которые в свою очередь состоят из столбцов и строк, на пересечении которых расположены ячейки. Запросы к таким базам данных возвращает таблицу, которая повторно может участвовать в следующем запросе. Данные в одних таблицах, как правило, связаны с данными других таблиц, откуда и произошло название "реляционные".

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

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

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

- Ни в какой момент времени в таблице не найдется двух строк, дублирующих друг друга. Строки должны отличаться хотя бы одним значением, чтобы была возможность однозначно идентифицировать любую строку таблицы.

- Каждому столбцу присваивается уникальное в пределах таблицы имя; для него устанавливается конкретный тип данных, чтобы в этом столбце размещались однородные значения (даты, фамилии, телефоны, денежные суммы и т. д.).

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

- При обработке данных можно свободно обращаться к любой строке или лю¬бому столбцу таблицы. Значения, хранимые в таблице, не накладывают ни¬каких ограничений на очередность обращения к данным.

Билет №28. База данных. Основные функции базы данных Аccess.

Приложение Access предоставляет следующие возможности:

- добавление новых данных в базу данных (например, новой позиции в складскую опись);

- изменение существующих данных в базе данных (например, изменение текущего размещения позиции на складе);

- удаление сведений (например, если позиция продана или отбракована);

- организация и просмотр данных различными способами;

- совместное использование данных посредством отчетов, сообщений электронной почты, внутренней сети или Интернета.

Компоненты базы данных Access:

1) Таблицы

По внешнему виду таблица базы данных сходна с электронной таблицей, в которой данные располагаются в строках и столбцах. Поэтому электронные таблицы обычно легко импортируются в таблицы базы данных. Основное различие между хранением данных в электронной таблице и в базе данных — способ организации данных.

Чтобы обеспечить наибольшую гибкость базы данных, необходимо распределить данные по таблицам так, чтобы избежать их избыточности.

Каждую строку в таблице называют записью. Запись — это место хранения отдельного элемента информации. Каждая запись состоит из одного или нескольких полей. Поля соответствуют столбцам таблицы.

2) Формы

Формы иногда называются окнами ввода данных. Это интерфейсы, которые используются для работы с данными и часто содержат кнопки для выполнения различных команд. Базу данных можно создать без помощи форм, просто вводя в таблицу данные в режиме таблицы. Формы позволяют работать с данными в удобном формате; кроме того, в них можно добавлять функциональные элементы, например кнопки команд.

3) Отчеты

Отчеты служат для сбора и представления данных, содержащихся в таблицах.

Каждый отчет можно отформатировать так, чтобы представить сведения в наиболее удобном виде.

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

4) Запросы

Запросы являются основным рабочим инструментом базы данных и могут выполнять множество различных функций. Самая распространенная функция запросов — извлечение определенных данных из таблиц. Данные, которые необходимо просмотреть, как правило, находятся в нескольких таблицах; запросы позволяют представить их в одной таблице.

Существует два основных вида запросов: запросы на выборку и запросы на изменение. Запрос на выборку просто извлекает данные и дает возможность пользоваться ими.

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

5) Макросы

Макросы в приложении Access можно рассматривать как упрощенный язык программирования, который позволяет добавлять функциональные возможности в базу данных. Например, кнопке команды в форме можно назначить макрос, который будет запускаться при нажатии этой кнопки. Макрос содержит последовательность действий для выполнения определенной задачи, например для открытия отчета, выполнения запроса или закрытия базы данных. Большинство операций с базой данных, выполняемых вручную, можно автоматизировать с помощью макросов, которые позволяют существенно экономить время.

6) Модули

Модули, как и макросы, являются объектами, которые можно использовать для добавления функциональных возможностей в базу данных. В то время как макросы создаются в приложении Access путем выбора макрокоманд из списка, модули пишутся на языке программирования Visual Basic для приложений (VBA).

ПРАКТИКА

  1. Теория абстрактных автоматов. Построение автомата, распознающего идентификатор.

  2. Теория абстрактных автоматов. Построение автомата, распознающего целое число.

  3. Теория абстрактных автоматов. Построение автомата, распознающего арифметическое выражение.

  4. Теория абстрактных автоматов. Минимизация автомата с начальным состоянием 1, распознающего четные числа через финальное множество F={2}.

  1. Компьютерная графика. Изменение фаз луны.

uses crt,graphABC;

var i:integer;

begin

i:=521;

while(i>=50) do

begin setpencolor(clblack); circle(300,200,100); FloodFill(300,200,clgray);

setpencolor(clwhite); circle(i+1,200,120); i:=i-3;

readkey; end;

end.

  1. Компьютерная графика. Машинная графика. Часы с обратным ходом.

[ Матвей

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, StdCtrls;

type

TForm1 = class(TForm)

Timer1: TTimer; Label1: TLabel;

procedure Timer1Timer(Sender: TObject); procedure FormPaint(Sender: TObject);

procedure FormCreate(Sender: TObject); private { Private declarations }

public { Public declarations } end;

var

Form1: TForm1; alf,x,y,a:integer; Implementation {$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);

begin Canvas.MoveTo(150,150); Canvas.Pen.Color:=Form1.Brush.Color;

Canvas.LineTo(150+x,150+y); Canvas.Pen.Color:=clblack; Canvas.MoveTo(150,150);

x:=round(40*cos(alf*pi/180)); y:=round(40*sin(alf*pi/180)); Canvas.LineTo(150+x,150+y); alf:=alf-6; end;

procedure TForm1.FormPaint(Sender: TObject);

begin

Canvas.Ellipse(100,100,200,200); Canvas.MoveTo(150,150);

Canvas.LineTo(150+x,150+y); end;

procedure TForm1.FormCreate(Sender: TObject);

begin

alf:=-90; x:=round(40*cos(alf*pi/180)); y:=round(40*sin(alf*pi/180)); end;

end.

]

[Ярослав

uses crt,graphABC;

var i,a,xs,ys:integer;

begin

a:=0; i:=100; circle(150,150,50); while(i>=50) do

begin

setpencolor(clblack); xs:=round(50*cos(a*pi/180)); ys:=round(50*sin(a*pi/180));

line(150,150,xs+150,ys+150); setpencolor(clwhite); readkey; circle(150,150,49); a:=a-1; end; end.

]

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]