.RU

Задачи, решаемые этим микропроцессором, следующие: Реагировать на нажатие клавиш или комбинации клавиш; Реагировать на «длительное» нажатие на клавишу, и осуществлять соответствующие действия


Лекция 05
Ввод с клавиатуры Содержание:
05.00. Аннотация.

05.01. Введение. Общие сведения о клавиатуре

05.02. Основные функции для ввода символов с клавиатуры

05.03. Резюме

05.04. Вопросы и упражнения.

05.05. Г Л О С С А Р И Й


=== *** === *** ===

Прямой ввод-вывод «на среднем уровне» позволяет вводить и выводить текстовые символы в файл, на консоль, модем, удалённый терминал. При этом в MS-DOS он организован при помощи механизма прерываний. Для иллюстрации «прямого ввода» будут приведены функции прямого ввода с консоли на языках Ассемблер и Си.
05.00. Аннотация.
На данной лекции будет рассмотрен консольный ввод текстовых данных с помощью клавиатуры. Будут рассмотрены «тонкие моменты», которые могут привести к нештатным ситуациям при программировании этого ввода.
^ 05.01. Введение Общие сведения о клавиатуре Содержание
05.01.01. Понятие о скэн-кодах клавиш

05.01.02. «Эхопечать» символов

05.01.03. Клавиатурный буфер


=== *** === *** ===

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

Задачи, решаемые этим микропроцессором, следующие:

  1. Реагировать на нажатие клавиш или комбинации клавиш;

  2. Реагировать на «длительное» нажатие на клавишу, и осуществлять соответствующие действия;

  3. По положению клавиш генерировать специальный скен-код клавиши (см. раздел 05.01.01.);

  4. В соответствии с «таблицей символов» (codepage) преобразовывать скен-код клавиши в ASCII символ, ей соответствующей;

Примечание: некоторые «серые» (управляющие) клавиши не генерируют символы, а используются только для управления компьютером. В этом случае для них ASCII символ не генерируется (записывается в 0).

  1. Заносит пару «ASCII код» – «Скен код» в клавиатурный буфер.

Видите, как всё сложно.… Теперь разберёмся с остальным.
^ 05.01.01. Понятие о скэн-кодах клавиш
При нажатии клавиши на клавиатуре генерируется её скен-код. Скен-код можно считать «номером клавиши» на клавиатуре. Однако это не совсем так. Например, если скен код клавиши «F10» равен «68», то тот же код клавиши с нажатой клавишей «Shift» будет равен «93», с клавишей «Ctrl» – «103», а с клавишей «Alt» – «113».

Существуют так называемые «алфавитно-цифровые» («белые») и «управляющие» («серые») клавиши. Первые генерируют скен-код и ASCII символы. Вторые генерируют только расширенный скен-код, а в поле «ASCII символа» стоит ноль. Благодаря этому программист легко может понять, как обрабатывать код клавиши: выводить ли символ на экран или запускать управляющую последовательность действий.

Более подробно о скэн-кодах клавиш смотри [1, 8, 33].
^ 05.01.02. «Эхопечать» символов
При вводе с клавиатуры пара значений «Скен-код» – «ASCII символ» заносится в клавиатурный буфер для её обработки на компьютере. При этом на старых терминалах все введённые символы отображались на экране дисплея. Но, с появлением персональных ЭВМ, выяснилось, что такой вывод («Эхопечать») не всегда удобный. Что делать, если Вы вводите пароль, и Вы не хотите, чтобы кто-либо его прочитал с экрана? А что делать, если Вы используете алфавитно-цифровую клавишу как управляющую (например, при обработке меню)? В этом случае Вам помогут функции ввода с клавиатуры без эхопечати.
^ 05.01.03. Клавиатурный буфер
Полученный в результате преобразований в контроллере двухбайтовый код посылается в кольцевой буфер ввода, который служит для синхронизации ввода данных с клавиатуры и приёма их выполняемой программой. Объём кольцевого буфера составляет 15 слов (30 байт). При этом буфер организован по принципу: «первым записан – первым считан» (английская аббревиатура «FIFO»). При переполнении буфера новые коды в него не поступают, а нажатие на клавиши вызывает предупреждающие сигналы.
^ 05.02. Основные функции
для ввода символов с клавиатуры Содержание:
05.02.01. Консольный ввод в Ассемблере

05.02.02. Консольный ввод в Си

05.02.03. Консольный ввод в Quick Basic
^ 05.02.01. Консольный ввод в Ассемблере Содержание:
05.02.01.01. Ожидание ввода символа без эхопечати

05.02.01.02. Ожидание ввода символа с эхопечатью

05.02.01.03. Получение строки символов
^ 05.02.01.01. Ожидание ввода символа без эхопечати.
Функции 7 и 8 прерывания 21H ожидают ввода символа, если буфер клавиатуры пуст; появление символа на экране не отображается.

Разница между этими функциями в том, что функция 8 распознаёт специальное сочетание клавиш «Ctrl+Break», а функция 7 игнорирует это сочетание клавиш

В обоих случаях функция возвращает символ в регистр AL. Если AL содержит ASCII 0, то получен расширенный код. Повторите вызов прерывания с теми же параметрами, и в AL появится второй байт расширенного кода.
Пример 05.001
;--- получаем введённый символ

MOV AH,8 ;номер функции

INT 21H

CMP AL,0 ;проверяем на расширенный код

JE EXT_COD ;если да, то переход на анализ кода

… ; иначе - обработка символа

;--- анализ расширенного кода

EXT_COD: INT 21H ; берём второй байт кода

CMP AL, 75 ; проверяем на «стрелка влево»

JE CUR_LEFT ; переход к обработчику

CMP AL, 77 ; проверяем на «стрелка вправо»

JE CUR_RIGHT ; переход к обработчику


^ 05.02.01.02. Ожидание ввода символа с эхопечатью
При вводе символов с эхопечатью эхо вводимых символов выдаётся на экран. При этом символы «возврат каретки» и «забой» переводятся в соответствующие перемещения курсора, а не отображаются как ASCII символы. Вывод эха осуществляется с текущей позиции на экране. При этом курсор после вывода смещается на позицию вправо, а по достижении правой границы экрана – переносит вывод на новую строку.

Функция 1 прерывания 21H ожидает ввода символа с клавиатуры, если её буфер пуст, а затем выводит его на экран в текущую позицию курсора. Функция обрабатывает нажатие «Ctrl+Break». Введённый символ сохраняется в регистре AL. Если содержимое AL равно ASCII 0, то для получения расширенного кода повторите прерывание.

Пример использования этой функции аналогичен примеру 05.001.

Функция 1 прерывания 21H полностью игнорирует клавишу «Esc». Клавиши табуляции интерпретируются нормально. Клавиша «Backspace» сдвигает курсор на одну позицию влево, но не стирает символ в этой позиции. Клавиша «Enter» вызывает перемещение курсора на первую позицию строки (нет автоматического переноса на новую строку).
^ 05.02.01.03. Получение строки символов
Большинство языков программирования предоставляют возможности для ввода строки символов. Они используют возможности ввода символов с эхопечатью, помещая автоматически введённые символы в буфер оперативной памяти. Конечно же, должна быть выделена память, достаточная для приёма символов строки, и должна записываться длина строки при вводе. Если этого не сделать, то произойдёт отказ системы типа «переполнения буфера», которым может воспользоваться злоумышленник.

Функция 0AH прерывания 21H позволяет вводить строку длиной до 254 символов, выдавая эхо на терминал. Эта функция продолжает ввод символов до тех пор, пока не нажата клавиша «возврат каретки» («Enter»). DS:DX указывает на строку, куда помещаются вводимые символы. При вводе первый байт этой позиции должен содержать число байтов, отводимой для этой строки. После того, как строка введена, второй байт даёт число реально введённых символов. Сама строка начинается с третьего байта.

Надо отвести достаточно памяти для строки нужной длины, плюс 2 байта для дескриптора строки плюс 1 добавочный байт для символа «Возврат каретки». Код возврата каретки: ASCII 13, – вводится как последний символ строки, но не учитывается в результате, который функция помещает во второй байт дескриптора.

Таким образом, для получения 50 – символьной строки надо отвести минимум 53 байта памяти, и поместить в первый байт памяти строки число ASCII 51. После ввода 50 символов второй байт дескриптора будет содержать ASCII 50, а 53-й байт отведённой памяти будет содержать ASCII 13.
Пример 05.002.
; - - - в сегменте данных

STRING DB 53DUP(?) ; область для 50 символов

; - - - получение строки с клавиатуры

LEA DX, STRING ; DS:DX – адрес строки

MOV BX,DX

MOV AL,51 ; установка длины строки (+1 для CR)

MOV [BX], AL ; посылаем в первый байт дескриптора

MOV AH, 0AH ; номер функции

INT 21H

; - - - получаем в AH длину строки

MOV AH, [BX]+1 ; теперь длина в AH

В этой процедуре можно использовать возможности редактирования строки MS-DOS. Нажатие «Backspace» или «стрелка влево» удаляет символ с экрана без помещения его в память. Работает клавиша табуляции, а расширенные коды игнорируются. Допускаются пустые строки (содержащие только символ ASCII 13). На дисплее при достижении правого края экрана вводимая строка переносится на следующую строку дисплея, а при достижении правого нижнего угла экран сдвигается на строку вверх. Если вводится больше символов, чем отведено для строки, лишние символы игнорируются, и включается гудок динамика.
^ 05.02.02. Консольный ввод в Си
В языке Си и его разновидностях существуют следующие функции для ввода данных с клавиатуры:

Рассмотрим некоторые из них поподробнее

ФУНКЦИЯ GETCH

ОПИСАНА В: /* Используется только для описания функции */

СИНТАКСИС: int getch();

НАЗНАЧЕНИЕ: Ввод одиночного символа с консольного терминала без эхопечати (без вывода на дисплей).

ФУНКЦИЯ ВОЗВРАЩАЕТ: прочитанный символ.

ПРИМЕЧАНИЕ: функция getch использует входной поток stdin.

ФУНКЦИЯ GETCHE

ОПИСАНА В: /* Используется только для описания функции */

СИНТАКСИС: int getche();

НАЗНАЧЕНИЕ: Функция читает одиночный символ с консольного терминала, с эхопечатью введённого символа на экране с текущей позиции курсора.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Прочитанный символ.

ПРИМЕЧАНИЕ: 1. Нет ошибочных кодов возврата;

2. Функция корректно обрабатывает «Ctrl+Break».

ФУНКЦИЯ CGETS

ОПИСАНА В: /* Используется только для описания функции */

СИНТАКСИС: char *cgets(str);

char *str;

НАЗНАЧЕНИЕ: Функция читает строку символов непосредственно с консоли, и помещает строку и её длину по указателю str. Аргумент str должен быть указателем на массив символов;

ЗАМЕЧАНИЕ: Первый элемент массива str[0] должен содержать максимально допустимую длину считываемой строки. Массив должен иметь достаточную длину, чтобы поместить строку, символ ASCII 0 плюс два байта дополнительно для дескриптора;

cgets читает символы до тех пор, пока не прочитаны символы и , или пока не будет прочитано установленное число символов. Прочитанная строка начинается со str[2]. Если прочитана комбинация /, эти символы будут располагаться за символом конца строки (ASCII 0). Действительная длина строки помещается в str[1];

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: указатель на начало строки, то есть на адрес элемента str[2];

ПРИМЕЧАНИЕ: 1. Нет кодов ошибок;

2. Длина строки ограничена ~ 250 символами.

В примере 05.003 иллюстрирована работа функции cgets.
Пример 05.003
/* Пример ex05003.c */

/* Определение констант – длины буфера */

#define LETTER_SIZE 50 // Максимальное число символов

#define BUFF_SIZE 55 // Общий размер буфера = LETTER_SIZE+5

/* Объявление переменной буфера */

char *buff[BUFF_SIZE];

char csize; //служебная переменна

/* Подготовительные операции и чтение с клавиатуры в буфер */

csize = BUFF_SIZE - 2; // Истинный размер буфера в символах

buff[0] = csize; // Заносим это значение в буфер;

(void) cgets( buff ); // Читаем с клавиатуры в буфер

if( buff[1] > LETTER_SIZE ) goto ERROR; // Если переполнение буфера, следуем за ссылкой ERROR.

Благодаря механизму дескрипторов (двух первых «служебных» байтов строки-буфера) «переполнения буфера» достичь действительно сложно. MS-DOS просто не допустит чтения большего числа символов, чем это указано в байте buff[0].

ФУНКЦИЯ CSCANF

ОПИСАНА В:

СИНТАКСИС: int cscanf( format {, argument} );

char *format;

НАЗНАЧЕНИЕ: Функция cscanf читает данные с консоли, выполняет форматные преобразования и помещает значения в переменные, адреса которых определяются аргументами функции.

ЗАМЕЧАНИЯ: 1. Функция cscanf использует функцию getche для ввода символов;

2. Каждый аргумент должен указывать на переменную того типа, который соответствует её описанию в строке: «format». См. также описание функции scanf, в приложении №II (06.07) к лекции №06.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:

* количество элементов ввода, которые были успешно преобразованы и присвоены;

* значение EOF, если встретился символ – признак конца файла;

* 0, если нет присвоенных областей.
Пример: 05.004.
int i; // Целая переменна

/* Строка формата для ввода целого числа, состоящего из 10 знаков */

const char format[] = "%10d";

int ierr; // переменная ошибки ввода

/* Ввод значения с консоли */

ierr = cscanf( format, &i );

if( ierr != 1 )goto ERROR; // переход, если ошибка ввода

ФУНКЦИЯ GETPASS

ОПИСАНА В:

СИНТАКСИС: char *getpass( prompt );

char *prompt;

НАЗНАЧЕНИЕ: Функция getpass используется для ввода с консольного терминала пароля, который оператор должен набрать в ответ на выводимое на экран приглашение, задаваемое строкой prompt с завершающим символом "\0". При вводе пароля отключается эхопечать вводимых с терминала символов.

ЗАМЕЧАНИЕ: длина пароля составляет не более 8 символов.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: указатель на строку с завершающим нулём, содержащую не более восьми первых символов текста.

ПРИМЕЧАНИЕ: Пароль хранится в статическом буфере (символьном массиве) функции и переписывается при каждом обращении к ней.
^ 05.02.03. Консольный ввод в Quick Basic
Для ввода символов в Quick Basic используются одна функция и один оператор:

Рассмотрим эти функции поподробнее

ФУНКЦИЯ INKEY$

СИНТАКСИС: INKEY$

НАЗНАЧЕНИЕ: Функция для ввода символов с клавиатуры без эхопечати.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:

При этом левый байт будет всегда нулевой, а правый содержит расширенный скен ход клавиши.
Пример 05.005
REM ФАЙЛ: "EX05005.BAS"

REM ПРИМЕР ИСПОЛЬЗОВАНИЯ ФУНКЦИИ INKEY$

REM ОЖИДАЕМ НАЖАТИЯ КЛАВИШИ

100 C$ = INKEY$

IF C$ = "" GOTO 100

REM ПРОВЕРЯЕМ, НАЖАТА ЛИ «СЕРАЯ» КЛАВИША

IF LEN( C$ ) = 2 GOSUB 2000



REM "КОНСТРУКЦИЯ" ДЛЯ ОБРАБОТКИ СКЕН КОДОВ

2000 C$ = RIGHT( C$, 1 )

REM ПРЕОБРАЗУЕМ КОД В ЧИСЛО

C = ASC( C$)

REM НАЖАТА КЛАВИША "СТРЕЛКА ВЛЕВО"

IF C = 75 THEN GOSUB 3000

REM НАЖАТА КЛАВИША "СТРЕЛКА ВПРАВО"

IF C = 77 THEN GOSUB 3100



ОПЕРАТОР INPUT

СИНТАКСИС: INPUT аргумент

НАЗНАЧЕНИЕ: Оператор для форматированного ввода с клавиатуры с эхопечатью. Оператор автоматически переводит текст, набранный на клавиатуре, в формат, соответствующий формату вводимой переменной. Поддерживаются форматы:

ЗАМЕЧАНИЯ:

1. Ввод символов завершается нажатием клавиши «Enter»; код ASCII 13 не добавляется в конец строки;

2. До нажатия этой клавиши текст можно редактировать средствами редактирования строки DOS;

3. Оператор «не воспринимает» «серые клавиши» на клавиатуре. Реакция на такое нажатие зависит от реализации Бейсика.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Нет.

Приведём пример ввода строки символов с консоли:
Пример 05.006
REM ФАЙЛ: "EX05006.BAS"

REM ПРИМЕР ИСПОЛЬЗОВАНИЯ ФУНКЦИИ INPUT

REM ВЫВОДИМ ПОДСКАЗКУ И ВВОДИМ СТРОКУ

PRINT "Введите своё имя: ";

INPUT NAME$

PRINT "Рад познакомиться с Вами, "; NAME$

STOP

END
05.03. Резюме
Итак, Вы познакомились с основными «консольными» операциями по вводу-выводу символьных данных на консоль (клавиатуру и экран дисплея). Этот ввод-вывод является основным вводом-выводом MS-DOS, позволяющий «манипулировать» атрибутами дисплея и «прямым» чтением из буфера клавиатуры.

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

Описание же скен-кодов клавиш клавиатуры и их обработки выходит за рамки данного курса.
^ 05.04. Вопросы и упражнения. Задание 1. Вариант I Задания 1. Дайте определение термину «клавиатура».
1. Клавиатура — это «Доска с клавишами»;

2. Клавиатура — это совокупность клавиш и контактов, предназначенная для ввода символов;

+3. Клавиатура — это совокупность клавиш, контактов, топологии проводников и контроллера, предназначенная для ввода символов в ЭВМ или другое устройство;
Вариант II Задания 1. Какие действия выполняет клавиатура?
1. Ввод символов;

+2. Реагирование на нажатие клавиш и выдача соответственного скэн-кода;

+3. Реагирование на нажатие комбинации клавиш и выдача соответственного скэн-кода;

+4. Обработка длительного нажатия на клавишу;

+5. Запись сгенерированного символа и скэн-кода в кольцевой буфер клавиатуры;
Вариант III Задания 1. Какие клавиши (по функциональности) есть на клавиатуре?
+1. Белые;

+2. Серые;

3. Чёрные;

4. Фиолетовые;
Задание 2. Вариант I Задания 2. Чем отличаются «серые» и «белые» клавиши на клавиатуре?
1. Только цветом;

+2. Белые клавиши служат для ввода, а серые — для управления ввода символов с клавиатуры;

+3. Белые клавиши генерируют только ASCII символы, а серые — только скэн-коды (значение ASCII символов в них всегда «0»).
Вариант II Задания 2. Что такое «эхопечать символов»?
+1. Это отображение на экране дисплея ASCII символов, набранных с клавиатуры;

2. Это отображение на экране дисплея скен-кодов символов, набранных с клавиатуры;

3. Это произношение слов, набранных с клавиатуры;
Вариант III Задания 2. Когда не желательно использовать эхопечать символов?
1. При наборе текста на клавиатуре;

+2. При вводе символов пароля на клавиатуре;

+3. При обработке нажатия управляющих клавиш по их скэн-кодам;
Задание 3. Вариант I Задания 3. По какой технологии доступа организован кольцевой клавиатурный буфер?
1. LIFO (последним пришёл — первым считан);

+2. FIFO (первым пришёл — первым считан);

3. Random (произвольный доступ);
Вариант II Задания 3. Каков объём кольцевого буфера клавиатуры?
1. 15 символов;

+2. 15 слов;

3. 15 скен-кодов;

+4. 30 байт;
Вариант III Задания 3. Какие функции прерывания 21H ответственны за ввод символа с клавиатуры без эхопечати?
1. 1;

+2. 7;

+3. 8;

4. 9;

5. 0AH;
Задание 4. Вариант I Задания 4. В чём разница между функциями прерывания 21H 7 и 8?
1. Нет различий;

2. Функция 8 выдаёт символы с эхопечатью;

+3. Функция 8 распознаёт специальное сочетание клавиш «Ctrl+Break»;
Вариант II Задания 4. Какие функции прерывания 21H ответственны за ввод символов с клавиатуры с эхопечатью?
+1. 1;

2. 7;

3. 8;

4. 9;

5. 0AH;
Вариант III Задания 4. Какие управляющие символы при вводе символов с клавиатуры с эхопечатью обрабатываются специальным способом?
1. Горизонтальная табуляция;

2. Вертикальная табуляция;

+3. Возврат каретки;

+4. Забой;
Задание 5. Вариант I Задания 5. Какие функции прерывания 21H ответственны за ввод строки символов с клавиатуры?
1. 1;

2. 7;

3. 8;

4. 9;

+5. 0AH;
Вариант II Задания 5. Какова максимальная длина строки символов, вводимой с помощью функций консольного ввода строки?
1. 1 байт;

2. 1 слово;

+3. 254 байта;

4. 256 байт;

5. 2000 байт;

6. 65535 байт;
Вариант III Задания 5. Вводом какого символа завершается консольный ввод символов с клавиатуры?
+1. Возврат каретки;

2. Перевод строки;

3. ASCII0;

4. Горизонтальная табуляция;
Задание 6. Вариант I Задания 6. Какие функции языка Си используются в качестве функций консольного ввода символов?
1. cgetc;

+2. getch;

+3. getche;

4. getc;

5. cscanf;

6. sscanf;
Вариант II Задания 6. Какие функции языка Си используются в качестве функций консольного ввода строк?
+1. cgetc;

2. getch;

3. getche;

4. getc;

+5. cscanf;

6. sscanf;
Вариант III Задания 6. Какие функции языка Си используются в качестве функций форматированного консольного ввода строк?
1. cgetc;

2. getch;

3. getche;

4. getc;

+5. cscanf;

6. sscanf;
Задание 7. Вариант I Задания 7. Какие функции используются в языке Quick Basic для ввода символов без эхопечати?
+1. INKEY$;

2. INPUT;

3. LINE INPUT;
Вариант II Задания 7. Какие функции используются в языке Quick Basic для форматированного ввода символов?
1. INKEY$;

+2. INPUT;

3. LINE INPUT;
Вариант III Задания 7. Каким символом заканчивается строка символов, введённая с клавиатуры функцией cgets?
1. ASCII 0;

2. ASCII 13;

3. ASCII 11;

+4. Как правило, ASCII 0, если не было переполнения строки;
05.05. Г Л О С С А Р И Й
<>

vozvrat-podohodnogo-naloga-uderzhannogo-u-istochnika-viplati-stranica-4.html
vozvratu-v-akademiyu.html
vp-chudinova-9-chtenie-v-kontekste-razvitiya-informacionnogo-obshestva-v-p-chudinova-podderzhka-detskogo-chteniya-nasha-obshaya-zadacha-2.html
vp-trubochkin-zakonnosti-dejstvij-sotrudnika-psihologiya-13.html
vpasporte-programmi-1-poziciyu-gosudarstvennij-zakazchik-programmi-izlozhit-v-sleduyushej-redakcii-.html
vpasporte-programmi-poziciyu-obemi-i-istochniki-finansirovaniya-programmi-izlozhit-v-novoj-redakcii-obemi-i-istochniki-stranica-6.html
  • books.bystrickaya.ru/doklad-o-socialno-ekonomicheskoj-stranica-15.html
  • urok.bystrickaya.ru/prikaz-ot-19-iyunya-2003-g-n-229-ob-utverzhdenii-pravil-tehnicheskoj-ekspluatacii-elektricheskih-stancij-stranica-14.html
  • vospitanie.bystrickaya.ru/zadachi-obse-obzornaya-konferenciya-obse-sentyabr-1999.html
  • doklad.bystrickaya.ru/vkonce-noyabrya-v-ottepel-chasov-v-devyat-utra-poezd-stranica-28.html
  • write.bystrickaya.ru/filosofskij-enciklopedicheskij-slovar-stranica-30.html
  • thescience.bystrickaya.ru/instrukciya-po-bezopasnomu-vedeniyu-rabot-i-ohrane-nedr-pri-razrabotke-mestorozhdenij-solej-stranica-2.html
  • paragraph.bystrickaya.ru/kontrolnaya-rabota-po-teme-sushnost-osnovnie-celi-i-usloviya-socialnogo-razvitiya-organizacii.html
  • institute.bystrickaya.ru/glava-11-zakonomernosti-i-principi-obucheniya-recenzenti-doktor-pedagogicheskih-nauk-dejstvitelnij-chlen-rao.html
  • shpora.bystrickaya.ru/zadachi-rasshirit-i-uglubit-teoreticheskie-znaniya-po-informatike-razvit-prakticheskie-naviki.html
  • znanie.bystrickaya.ru/44-predostavlenie-municipalnih-uslug-v-elektronnom-vide-kompleksnaya-investicionnaya-programma-socialno-ekonomicheskogo.html
  • vospitanie.bystrickaya.ru/zachem-kaktusu-kolyuchki-programma-ekologicheskogo-obrazovaniya-detej-doshkolnogo-vozrasta.html
  • pisat.bystrickaya.ru/tema-13-14-lichnost-v-sisteme-mezhlichnostnoj-kommunikacii-4-chasov-napravlenie-iskusstvo-i-gumanitarnie-nauki.html
  • kontrolnaya.bystrickaya.ru/razdel-fonetika-i-grafika-osnovnaya-obrazovatelnaya-programma-gosudarstvennogo-obrazovatelnogo-urezhdeniya-srednej.html
  • teacher.bystrickaya.ru/forma-obucheniya-ochnaya-uchebno-metodicheskij-kompleks-dlya-specialnosti-080102-mirovaya-ekonomika-moskva-2007.html
  • shpora.bystrickaya.ru/zverinij-stil-yu-n-rerih-zverinij-stil-u-kochevnikov-severnogo-tibeta.html
  • uchit.bystrickaya.ru/timofeev-ns-na-zasedanii-prisutstvuet-prezident-respubliki-saha-yakutiya-v-a-shtirov-predsedatelstvuet-predsedatel.html
  • credit.bystrickaya.ru/patologicheskaya-anatomiya-tipovie-testovie-zadaniya-dlya-itogovoj-gosudarstvennoj-attestacii-vipusknikov-visshih-medicinskih.html
  • school.bystrickaya.ru/ekonomicheskaya-celesoobraznost-primeneniya-fotoepilyacii-v-salonah-krasoti-razlichnogo-klassa-chast-7.html
  • lesson.bystrickaya.ru/po-dengi-kredit-banki.html
  • college.bystrickaya.ru/226-deti-rastut-vo-sne-a-barbarash.html
  • esse.bystrickaya.ru/razdeli-disciplini-i-mezhdisciplinarnie-svyazi-s-posleduyushimi-disciplinami.html
  • university.bystrickaya.ru/glava-6-sushestvennie-korporativnie-dejstviya-kodeks-korporativnogo-povedeniya.html
  • literatura.bystrickaya.ru/sostav-komissii-po-vidache-razresheniya-na-predostavlenie-platnih-medicinskih-uslug.html
  • learn.bystrickaya.ru/fizika-zemli-osnovnaya-obrazovatelnaya-programma-visshego-professionalnogo-obrazovaniya-napravlenie-podgotovki-020700-geologiya.html
  • school.bystrickaya.ru/den-16-chetverg-1-organizacionno-pravovoe-obespechenie-deyatelnosti-obrazovatelnogo-uchrezhdeniya-6.html
  • prepodavatel.bystrickaya.ru/teleinform-v-e-eglit-rkutskoj-oblasti.html
  • prepodavatel.bystrickaya.ru/tip-chelovek-znakovaya-sistema-predislovie-k-elektronnomu-izdaniyu.html
  • knowledge.bystrickaya.ru/novaeu3014c02mp4300mov-elegantnaya-vselennaya.html
  • paragraph.bystrickaya.ru/krazha-chast-5.html
  • essay.bystrickaya.ru/elektrotehnologicheskie-ustanovki-i-ih-istochniki-pitaniya.html
  • lecture.bystrickaya.ru/4obshie-polozheniya-41aspekti-processnogo-podhoda-v-stb-iso-serii-9000-metodika-i-poryadok-rabot-po-opredeleniyu.html
  • teacher.bystrickaya.ru/glava-12-put-domoj-poteryannaya-zhizn-serdca.html
  • predmet.bystrickaya.ru/sabati-tairibi-saat-sani-kn-ou-masattari.html
  • composition.bystrickaya.ru/odna-iz-obsheizvestnih-istin-glasit-v-nachale-bilo-slovo-eto-konechno-obrazno-bolee-nauchno-pochti-to-zhe-sformulirovano-v-zakone-lorenca-glasyashem-malie.html
  • institute.bystrickaya.ru/glava-7-ateroskleroz-i-prochie-nepriyatnosti-kak-rabotaet-nasha-bankovskaya-sistema.html
  • © bystrickaya.ru
    Мобильный рефератник - для мобильных людей.