Онлайн-рабочие станции OnWorks Linux и Windows

Логотип

Бесплатный хостинг в Интернете для рабочих станций

<Предыдущая | Содержание: | Следующая>

Проверка ввода

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


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

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



#! / Bin / Баш

# read-validate: проверить ввод invalid_input () {

echo "Недействительный ввод '$ REPLY'"> & 2 выход 1

}


read -p "Введите один элемент>"


# ввод пуст (недействителен)

[[-z $ REPLY]] && недопустимый_ввод


# введено несколько элементов (недопустимо)

(($ (echo $ REPLY | wc -w)> 1)) && недопустимый_ввод


# вводится ли допустимое имя файла?

если [[$ REPLY = ~ ^ [- [: alnum:] \ ._] + $]]; затем echo "'$ REPLY' - допустимое имя файла."

если [[-e $ REPLY]]; тогда

echo "А файл '$ REPLY' существует."

еще

echo "Однако файл '$ REPLY' не существует."

fi


# вводится ли число с плавающей запятой?

если [[$ REPLY = ~ ^ -? [[: цифра:]] * \. [[: цифра:]] + $]]; затем echo «'$ REPLY' - число с плавающей запятой».

еще

echo "'$ REPLY' не является числом с плавающей запятой."

fi


# вводится ли целое число?

если [[$ REPLY = ~ ^ -? [[: цифра:]] + $]]; затем echo «'$ REPLY' - целое число».

еще

echo "'$ REPLY' не является целым числом."

#! / Bin / Баш

# read-validate: проверить ввод invalid_input () {

echo "Недействительный ввод '$ REPLY'"> & 2 выход 1

}


read -p "Введите один элемент>"


# ввод пуст (недействителен)

[[-z $ REPLY]] && недопустимый_ввод


# введено несколько элементов (недопустимо)

(($ (echo $ REPLY | wc -w)> 1)) && недопустимый_ввод


# вводится ли допустимое имя файла?

если [[$ REPLY = ~ ^ [- [: alnum:] \ ._] + $]]; затем echo "'$ REPLY' - допустимое имя файла."

если [[-e $ REPLY]]; тогда

echo "А файл '$ REPLY' существует."

еще

echo "Однако файл '$ REPLY' не существует."

fi


# вводится ли число с плавающей запятой?

если [[$ REPLY = ~ ^ -? [[: цифра:]] * \. [[: цифра:]] + $]]; затем echo «'$ REPLY' - число с плавающей запятой».

еще

echo "'$ REPLY' не является числом с плавающей запятой."

fi


# вводится ли целое число?

если [[$ REPLY = ~ ^ -? [[: цифра:]] + $]]; затем echo «'$ REPLY' - целое число».

еще

echo "'$ REPLY' не является целым числом."

Проверка ввода


фи еще

echo "Строка '$ REPLY' не является допустимым именем файла."

fi

фи еще

echo "Строка '$ REPLY' не является допустимым именем файла."

fi


Этот сценарий предлагает пользователю ввести элемент. Затем объект анализируется для определения его содержимого. Как мы видим, сценарий использует многие концепции, которые мы рассмотрели до сих пор, включая функции оболочки, [[]], (()), оператор управления

&& и if, а также здоровая доза регулярных выражений.


Лучшие облачные вычисления для ОС в OnWorks: