Введение - inf1550.ru

advertisement
Введение
В связи с широким распространением компьютерных технологий
работа с компьютером (через взаимодействие при помощи его
средств ввода, самыми распространёнными из которых являются
клавиатура и мышь) становится необходимой и обыденной задачей.
Однако обычным при начальном изучении компьютера является т.
н. «зрячий» или «двухпальцевый» метод набора, «найти и нажать»,
когда набор текста производится, отыскивая каждый следующий
символ каждый раз заново, зрительно, ориентируясь по маркировке
на клавишах (что значительно замедляет набор, но, с другой
стороны, — не требует никакой предварительной подготовки
пользователя).
Обучение же «слепому» методу может (в некоторых случаях —
менее чем за месяц ежедневных получасовых тренировок), при
благоприятных условиях, позволить вводить текст «вслепую»,
быстро и безошибочно. Таким образом, потратив некоторое время,
человек приобретает умение, которое может сэкономить ему массу
времени при работе с клавиатурой и компьютером. При слепом
методе печати бо́льший упор делается на мышечную память и
тактильные ощущения пальцев, чем на зрение. Однако этот метод
требует специального обучения, для чего существуют курсы
машинописи, а также бумажные и интерактивные компьютерные
самоучители.
Понаблюдав за своими знакомыми, я сделала вывод, что даже
постоянные пользователи компьютера не всегда владеют этим
методом. Именно это и сподвигло меня попробовать сделать свою
программу для обучения «слепому» методу набора текста.
Особенность моей программы состоит в том, что в ней нет
отвлекающих элементов. Все внимание пользователя
сфокусировано на исходном тексте. Это позволяет увеличить
продуктивность занятий в разы.
История появления «слепого» метода
Слепой метод набора — методика набора текста «вслепую», то есть
не глядя на клавиши печатной машинки или кнопки клавиатуры,
используя все (или большинство) пальцы рук, ранее был известен
как американский слепой десятипальцевый метод. Был открыт в
1878 года, широкое распространение начал получать с 1888 года. В
XIX-XX веках слепым методом печати на печатных машинках
обучали машинисток и секретарей. Это позволило сузить сферу
использования стенографии, увеличить производительность труда
секретарей.
Слепой метод набора был разработан Франком Эдгаром
Макгуррином, стенографистом суда из Солт-Лейк-Сити. 25 июля
1888 года Макгуррин, будучи единственным известным человеком,
в то время использующим данный метод, одержал решающую
победу над Луисом Тробом, который пользовался
восьмипальцевым зрячим методом печати. Это было первым
соревнованием по печатанию, проводилось оно в Цинциннати.
Результаты соревнования появились на титульных листах многих
газет. Макгуррин выиграл 500 долларов, что в пересчёте по индексу
потребительских цен на 2008 год составило 11 675 долларов[2]. Эта
победа вызвала широкий интерес и к слепому методу печати, и к
пишущим машинкам. Этот день можно назвать днём рождения
слепого метода печати, на основании которого в дальнейшем
строилось большинство методик набора «вслепую».
Раскладка клавиатуры
Раскла́дка клавиату́ры — форма, размеры и взаимное расположение
клавиш на клавиатуре (механическая раскладка) — это, большей
частью, относится к служебным клавишам, так и маркировка
клавиш соответствующими знаками (визуальная раскладка) —
цифры, буквы и доп. символы. Хотя сейчас раскладки и
стандартизированы, однако и та и другая могут иметь некоторые
(иногда и существенные) отличия от клавиатуры к клавиатуре,
затрудняя, тем самым, привыкание и скоростной набор.
Обычно средний ряд у клавиатуры именуется домашним рядом или
клавиши ФЫВА ОЛДЖ, над которыми и располагаются при печати
вслепую восемь (большие над пробелом) пальцев. Большинство
компьютерных клавиатур имеют выступы в виде точек или полосок
на тех клавишах, где должны находиться указательные пальцы (F/J
в английской раскладке QWERTY, А/О в русской раскладке
ЙЦУКЕН). Таким образом, человек, набирающий текст, может на
ощупь определить правильное (над домашним рядом) положение
пальцев.
Рядом авторов для изучения слепой печати на русском языке
рекомендуется использовать раскладку под названием «Русская
(машинопись)». Объясняется это отсутствием необходимости на
этой раскладке использовать клавишу SHIFT для ввода
большинства знаков препинания, которые используются при печати
зачастую чаще, чем цифры, к тому же цифры зачастую имеются на
цифровом блоке, который рекомендуется для изучения тем, кому
приходится в больших объёмах вводить цифры.
Переход пользователя с одной раскладки на другую (например с
QWERTY на Dvorak, либо с «Русской» на «Русскую
(машинопись)») зачастую требует значительных усилий по
переучиванию.
Рекомендации к выполнению упражнений
В основу слепого набора положен тот факт, что за каждым пальцем
закреплена своя постоянная зона клавиш, которую тот
обслуживает. Весь процесс обучения сводится к тренировке
"мышечной памяти" пальцев. Если заниматься регулярно
(желательно 2-3 раза в день), то уже очень скоро можно будет
хорошо печатать десятью пальцами, не глядя на клавиатуру.
Посадка
Сидеть желательно на стуле или
вращающемся кресле со спинкой.
Угол между позвоночником и
бедром и между бедром и голенью
должен составлять 90 градусов.
Сидеть необходимо прямо, не
нагибаясь и не наклоняя голову.
Взгляд должен быть направлен
вперед, в центр экрана монитора.
Запястья не должны провисать. Расстояние от глаз до экрана
монитора — от 40 до 70 сантиметров.
Исходная позиция пальцев
Пальцы в нерабочем состоянии должны находиться над буквами
ФЫВА, ОЛДЖ — основным рядом клавиатуры. Этот ряд
называется основным потому, что он содержит буквы, которые
наиболее часто встречаются при написании текстов.
Для удобства на клавишах А и О, где расположены указательные
пальцы, находятся небольшие выступы. Это позволяет
ориентироваться на клавиатуре вслепую.
Схема клавиатуры
Обязательно используйте только правильные пальцы для набора
каждой из букв.
Всегда возвращайте пальцы в исходную позицию «ФЫВА —
ОЛДЖ».
Набирая, представляйте себе расположение символа на клавиатуре.
На пробел нажимает большой палец той руки, которая
противоположна последней «рабочей» руке.
Поначалу такой метод может показаться неудобным, но со
временем всё начнёт получаться быстро, легко и удобно.
Скорость печати
Сфокусируйте внимание, прежде всего, на качестве (вначале
старайтесь набирать медленно, но без ошибок). Небольшая
поначалу скорость со временем станет возрастать, а высокое
качество печати сохранится.
Следите за ритмом, держите пальцы невысоко над клавиатурой.
Структура программы
и инструкция к применению
Программа состоит из двух форм и модуля.
В модуле заявлены основные, глобальные переменные и функции,
которые можно вызвать из любой формы. Программа стартует со
второй формы, на которой пользователь может выбрать номер
упражнения и задания. После выбора автоматически появляется
форма№1, на которой находится непосредственно упражнение и
строки для ввода. Только после того, как пользователь три раза
набрал строку упражнения, он может увидеть количество своих
ошибок, а также время, за которое он выполнил упражнение.
Подсчет времени ведется с учетом заданных параметров. В скобках
пишется время, на которое вы превысили норму.
На первых упражнениях вы не имеете права на ошибку. Если в
одной из трех строк допущена ошибка, то Вы не можете прейти на
следующее задание. Это сделано для того, чтобы пальцы не
запоминали ошибок.
Выбор языка программирования
Для создания этой программы я выбрала Visual Basic. NET
по причине того, что это современный язык, а так же он базируется
на платформе framework. .NET Framework — программная
платформа, выпущенная компанией Microsoft в 2002 году. Основой
платформы является исполняющая среда Common Language
Runtime (CLR), способная выполнять как обычные программы, так
и серверные веб-приложения. NET Framework поддерживает
создание программ, написанных на разных языках
программирования. Одной из основных идей Microsoft .NET
является совместимость программных частей, написанных на
разных языках. Например, служба, написанная на C++ для
Microsoft .NET, может обратиться к методу класса из библиотеки,
написанной на Delphi; на C# можно написать класс, наследованный
от класса, написанного на Visual Basic .NET, а исключение,
созданное методом, написанным на C#, может быть перехвачено и
обработано в Delphi. Каждая библиотека (сборка) в .NET имеет
сведения о своей версии, что позволяет устранить возможные
конфликты между разными версиями сборок.
Заключение
Данный метод набора текста позволяет существенно сэкономить
время и упростить работу за компьютером. За период написания
работы она была опробована на нескольких пользователях,
которые подтверждали ее эффективность.
При регулярных тренировках и выполнении всех рекомендаций, Вы
без особых усилий сможете за неделю освоить «слепой» метод
набора текста.
Основной код программы:
Модуль.
Module basTypeLetter
Public arNumExercise(9) As String
Public strCurExercise As String
Public arFileLine(9, 19) As String
Public lngColomn, lngRow, lngError As Long
Public Sub InitVar()
Dim i, c, r As Long
Dim strFileExercise, strExercise, strCurLine As
String
Dim arLine() As String
strFileExercise =
My.Application.Info.DirectoryPath & "\TypeLetter.txt"
'Dim orFile As New
System.IO.StreamReader(strFileExercise,
System.Text.Encoding.GetEncoding(1251))
strExercise =
My.Computer.FileSystem.ReadAllText(strFileExercise,
System.Text.Encoding.GetEncoding(1251))
arLine = Split(strExercise, ControlChars.CrLf)
For i = 0 To arLine.Length - 1
strCurLine = arLine(i)
If strCurLine.Substring(0, 1) = "#" Then
c = CInt(strCurLine.Substring(1)) - 1
r = 0
Else
arFileLine(c, r) = strCurLine
arNumExercise(c) = r
r = r + 1
End If
Next
'For c = 0 To 9
'
For r = 0 To 19
'
MsgBox(c & "
arFileLine(c, r))
'
Next
'Next
" & r & "
" &
End Sub
End Module
Форма №1
Public Class Form1
Dim datNullTime As Date
Dim lngDifTime, lngTimeVeryWell, lngTimeWell As
Long
Dim strDifTimeWell, strDifTimeVeryWell As String
Private Sub Form1_FormClosed(ByVal sender As
Object, ByVal e As
System.Windows.Forms.FormClosedEventArgs) Handles
Me.FormClosed
ExitExercise()
Form2.Show()
End Sub
Private Sub Form1_Load(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load
'Dim i As Long
'MsgBox(My.Application.Info.DirectoryPath)
'Dim a As New
System.IO.StreamReader("F:\VB\1.txt",
System.Text.Encoding.GetEncoding(1251))
'Dim b As String
'b = a.ReadLine
'a.Close()
'MsgBox(b)
strCurExercise = arFileLine(lngColomn, lngRow)
lngTimeVeryWell = strCurExercise.Length * 0.6
lngTimeWell = strCurExercise.Length * 0.8
'MsgBox(strCurExercise & "' " &
dblCorrectTimeLine)
btnNext.Visible = False
Me.Text = "Упражнение №" & (lngColomn + 1) & ",
задание №" & (lngRow + 1)
Me.btnBegin.Text = "Начать"
Me.rtxtOrigText.ReadOnly = True
Me.rtxtOrigText.Text = strCurExercise
txtTry1.Enabled = False
txtTry2.Enabled = False
txtTry3.Enabled = False
Me.rtxtTry1.ReadOnly = True
Me.rtxtTry2.ReadOnly = True
Me.rtxtTry3.ReadOnly = True
txtTry1.PasswordChar = "*"
txtTry2.PasswordChar = "*"
txtTry3.PasswordChar = "*"
End Sub
Private Sub btnCancel_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
btnCancel.Click
ExitExercise()
Form2.Show()
Me.Close()
End Sub
Private Sub btnBegin_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
btnBegin.Click
NextExercise()
datNullTime = Now
End Sub
Private Sub txtTry1_KeyPress(ByVal sender As
Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles
txtTry1.KeyPress
'e.Handled = True
If txtTry1.TextLength + 1 =
strCurExercise.Length Then
lngDifTime = DateDiff(DateInterval.Second,
datNullTime, Now)
'MsgBox("Вторая попытка" & vbCrLf & "Общее
время: " & lngDifTime & "cек")
datNullTime = Now
Exercise(2)
End If
End Sub
Private Sub txtTry2_KeyPress(ByVal sender As
Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles
txtTry2.KeyPress
If txtTry2.TextLength + 1 =
strCurExercise.Length Then
lngDifTime = lngDifTime +
DateDiff(DateInterval.Second, datNullTime, Now)
'MsgBox("Третья попытка" & vbCrLf & "Общее
время: " & lngDifTime & "cек")
datNullTime = Now
Exercise(3)
End If
End Sub
Private Sub txtTry3_KeyPress(ByVal sender As
Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles
txtTry3.KeyPress
If txtTry3.TextLength + 1 =
strCurExercise.Length Then
lngDifTime = lngDifTime +
DateDiff(DateInterval.Second, datNullTime, Now)
MsgBox("Большое спасибо" & vbCrLf & "Общее
время: " & lngDifTime & "cек")
txtTry3.Text = txtTry3.Text & e.KeyChar
EndExercise()
End If
End Sub
Private Sub Exercise(ByVal NumExercise As Long)
Select Case NumExercise
Case 1
txtTry1.Enabled = True
txtTry2.Enabled = False
txtTry3.Enabled = False
txtTry1.Focus()
Case 2
txtTry1.Enabled = False
txtTry2.Enabled = True
txtTry3.Enabled = False
txtTry2.Focus()
Case 3
txtTry1.Enabled = False
txtTry2.Enabled = False
txtTry3.Enabled = True
txtTry3.Focus()
End Select
End Sub
Private Sub EndExercise()
Dim i As Long
Dim strType As String
txtTry1.Visible = False
txtTry2.Visible = False
txtTry3.Visible = False
rtxtTry1.Visible = True
rtxtTry2.Visible = True
rtxtTry3.Visible = True
rtxtTry1.Text = txtTry1.Text
strType = txtTry1.Text
For i = 0 To strType.Length - 1
If strType.Substring(i, 1) =
strCurExercise.Substring(i, 1) Then
rtxtTry1.Select(i, 1)
rtxtTry1.SelectionColor = Color.Green
Else
lngError = lngError + 1
rtxtTry1.Select(i, 1)
rtxtTry1.SelectionColor = Color.Red
End If
Next
rtxtTry2.Text = txtTry2.Text
strType = txtTry2.Text
For i = 0 To strType.Length - 1
If strType.Substring(i, 1) =
strCurExercise.Substring(i, 1) Then
rtxtTry2.Select(i, 1)
rtxtTry2.SelectionColor = Color.Green
Else
lngError = lngError + 1
rtxtTry2.Select(i, 1)
rtxtTry2.SelectionColor = Color.Red
End If
Next
rtxtTry3.Text = txtTry3.Text
strType = txtTry3.Text
For i = 0 To strType.Length - 1
If strType.Substring(i, 1) =
strCurExercise.Substring(i, 1) Then
rtxtTry3.Select(i, 1)
rtxtTry3.SelectionColor = Color.Green
Else
lngError = lngError + 1
rtxtTry3.Select(i, 1)
rtxtTry3.SelectionColor = Color.Red
End If
Next
If lngDifTime - lngTimeVeryWell > 0 Then
strDifTimeVeryWell = "+" & CStr(lngDifTime
- lngTimeVeryWell)
Else
strDifTimeVeryWell = CStr(lngDifTime lngTimeVeryWell)
End If
If lngDifTime - lngTimeWell > 0 Then
strDifTimeWell = "+" & CStr(lngDifTime lngTimeWell)
Else
strDifTimeWell = CStr(lngDifTime lngTimeWell)
End If
lblTime.Text = "Ваше время: " & lngDifTime &
"cек" & vbCrLf & "Отличное время: " & lngTimeVeryWell &
" (" & strDifTimeVeryWell & ")" & vbCrLf & "Хорошее
время: " & lngTimeWell & " (" & strDifTimeWell & ")"
If lngError = 0 Then
lblNumError.ForeColor = Color.Green
If arNumExercise(lngColomn) = lngRow And
lngColomn = 9 Then
MsgBox("Вы совершили 0 ошибок. Это
последнее задание. Спасибо!", MsgBoxStyle.Information)
Form2.Show()
Me.Close()
End If
lblNumError.Text = "Вы совершили 0 ошибок.
Нажмите ""Продолжить"" для перехода к следующему
упражнению."
Me.btnBegin.Text = "Продолжить"
If arNumExercise(lngColomn) = lngRow Then
lngColomn = lngColomn + 1
lngRow = 0
Else
lngRow = lngRow + 1
End If
Else
lblNumError.ForeColor = Color.Red
If lngColomn > 4 Then
lblNumError.Text = "Вы совершили " &
lngError & " ошибок."
Me.btnBegin.Text = "Повторить"
btnNext.Visible = True
Else
lblNumError.Text = "Вы совершили " &
lngError & " ошибок. Пожалуйста, повторите еще раз."
Me.btnBegin.Text = "Повторить"
End If
End If
End Sub
Private Sub btnNext_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
btnNext.Click
If arNumExercise(lngColomn) = lngRow And
lngColomn = 9 Then
MsgBox("Вы совершили 0 ошибок. Это
последнее задание. Спасибо!", MsgBoxStyle.Information)
Form2.Show()
Me.Close()
End If
If arNumExercise(lngColomn) = lngRow Then
lngColomn = lngColomn + 1
lngRow = 0
Else
lngRow = lngRow + 1
End If
NextExercise()
End Sub
Private Sub ExitExercise()
txtTry1.Enabled = False
txtTry2.Enabled = False
txtTry3.Enabled = False
Me.rtxtTry1.ReadOnly = True
Me.rtxtTry2.ReadOnly = True
Me.rtxtTry3.ReadOnly = True
txtTry1.PasswordChar = "*"
txtTry2.PasswordChar = "*"
txtTry3.PasswordChar = "*"
rtxtTry1.Visible = False
rtxtTry2.Visible = False
rtxtTry3.Visible = False
txtTry1.Text = ""
txtTry2.Text = ""
txtTry3.Text = ""
txtTry1.Enabled = False
txtTry2.Enabled = False
txtTry3.Enabled = False
txtTry1.Visible = True
txtTry2.Visible = True
txtTry3.Visible = True
lngError = 0
lblNumError.Text = ""
lblTime.Text = ""
End Sub
Private Sub NextExercise()
btnNext.Visible = False
Me.Text = "Упражнение №" & lngColomn + 1 & ",
задание №" & lngRow + 1
Me.btnBegin.Text = "Начать"
strCurExercise = arFileLine(lngColomn, lngRow)
Me.rtxtOrigText.ReadOnly = True
Me.rtxtOrigText.Text = strCurExercise
txtTry1.Enabled = False
txtTry2.Enabled = False
txtTry3.Enabled = False
Me.rtxtTry1.ReadOnly = True
Me.rtxtTry2.ReadOnly = True
Me.rtxtTry3.ReadOnly = True
txtTry1.PasswordChar = "*"
txtTry2.PasswordChar = "*"
txtTry3.PasswordChar = "*"
rtxtTry1.Visible = False
rtxtTry2.Visible = False
rtxtTry3.Visible = False
txtTry1.Text = ""
txtTry2.Text = ""
txtTry3.Text = ""
txtTry1.Enabled = False
txtTry2.Enabled = False
txtTry3.Enabled = False
txtTry1.Visible = True
txtTry2.Visible = True
txtTry3.Visible = True
lngError = 0
lblNumError.Text = ""
lblTime.Text = ""
Exercise(1)
End Sub
Private Sub txtTry3_TextChanged(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
txtTry3.TextChanged
End Sub
Private Sub txtTry1_TextChanged(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
txtTry1.TextChanged
End Sub
Форма №2
Public Class Form2
Private Sub Form2_Load(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load
Dim i As Long
InitVar()
For i = 1 To 10
ComboBox1.Items.Add(CStr(i))
Next
ComboBox1.SelectedIndex = 0
End Sub
Private Sub btnExit_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
btnExit.Click
Me.Close()
End Sub
Private Sub btnStart_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
btnStart.Click
lngColomn = ComboBox1.SelectedIndex
lngRow = ComboBox2.SelectedIndex
Me.Hide()
Form1.ShowDialog()
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal
sender As System.Object, ByVal e As System.EventArgs)
Handles ComboBox1.SelectedIndexChanged
Dim i As Long
ComboBox2.Items.Clear()
For i = 1 To
arNumExercise(ComboBox1.SelectedIndex) + 1
ComboBox2.Items.Add(CStr(i))
Next
ComboBox2.SelectedIndex = 0
End Sub
End Class
Download