16+
ComputerPrice
НА ГЛАВНУЮ СТАТЬИ НОВОСТИ О НАС




Яндекс цитирования


Версия для печати

Модуль поиска не установлен.

Простые программки пишем сами

14.05.2007

Юрий Давидюк

Я сижу за клавиатурой и набираю эту статью. В CD-ишнике вращается диск: из колонок льется негромкая музыка. В правом нижнем углу экрана перемигиваются два монитора: из Интернета "скачивается" информация. В фоновом режиме работают часы, планировщик, Outlook и много еще чего. Компьютер сейчас - это многофункциональный комбайн для "перемалывания" информации, причем, такой информации, большая часть которой безразлична в каждый конкретный момент времени пользователю, а ведь изначально вычислительные машины разрабатывались лишь для проведения сложных математических расчетов, без которых пользователю было никак не обойтись. Точнее, расчетов не столько сложных, а скорее громоздких, для которых необходимо проводить большое количество однотипных вычислений. Не случайно в первую очередь возможностями вычислительных машин воспользовались военные шифровальщики и ученые- физики.

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

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

В качестве примера постараемся решить следующую простенькую задачу.

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

Женщины:

Масса тела = 50+(рост-150) x 0,32 +(возраст-21)/5

АД (верхнее)=102+0,7 x возраст+0,15 x масса тела

АД (нижнее)=78+0,17 x возраст+0,1 x масса тела

Мужчины:

Масса тела = 50+(рост-150) x 0,75 +(возраст-21)/4

АД (верхнее)=109+0,5 x возраст+0,1 x масса тела

АД (нижнее)=74+0,1 x возраст+0,15 x масса тела

Пусть мы стремимся, чтобы как можно больше людей смогло контролировать свое физическое состояние, и с этой целью хотим поместить программу расчета на специальном сайте в Интернете. Для этих целей нам необходимо знать как минимум HTML. Конечно, можно выставить голые формулы на сайте, предоставив посетителям возможность самим заняться подсчетами в столбик. Но гораздо приятнее просто подставить значения и получить готовый результат. Здесь уже одного HTML недостаточно, надо знать какой-то язык программирования. В принципе, подойдет любой; два плюс три запрограммировать можно на любом языке. Но если написать программку, скажем, на С++, то встанет вопрос, каким боком ее "прилепить" к html-у. Кроме того, придется еще разбираться и с CGI. Чтобы избежать этого, можно воспользоваться языком Java, написав соответствующий аплет, но кто сказал, что это так просто, и, с другой стороны, стоит ли стрелять из пушек по воробьям? Поэтому для несложных прикладных задач как нельзя лучше подойдет JavaScript. Если вы этим языком не владеете, а знаете, например, VBScript, то вам не стоит расстраиваться, эти языки из одной "весовой категории" и почти все, что может JavaScript, может и VBScript и наоборот. Если вы еще не освоили не один из этих языков, то, почитав денька два учебник из серии "для чайников", сможете сносно писать некоммерческие программки "для себя".

Итак, с языками определились, начинаем программировать. Некоторые думают, что программирование - это написание кодов программ. Нет. Написание кодов - это всего лишь кодирование, или в случае HTML - верстка.

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

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

Далее

Программа должна делать корректные вычисления, не утруждая пользователя излишними запросами и специальными установками. Так как наша программа должна выполняться в Интернете, то здесь важна скорость, работа без излишних перезагрузок. Использование языка JavaScript удовлетворяет этим условиям. Поэтому идем дальше и пытаемся постепенно углубиться в детали.

У нас есть три пути:

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

Второй. Создать расчетную часть, а затем надстроить над ней интерфейс.

Третий. Начать с разработки интерфейса и под него подстраивать расчет.

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

Создание интерфейса WEB-странички

Чтобы не сильно напрягаться и не тратить много времени по написанию кода, воспользуемся FrontPage Express. Здесь нам даже не понадобится на первых порах знание языка гипертекстовой разметки. Просто пишем вводной текст и выстраиваем квадратики формы на странице. Вот что должно получиться в редакторе (см. рисунок 1). Примерно так же будет выглядеть и готовая страница. FrontPage Express автоматически сгенерирует следующий код:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
<title>Узнайте свою оптимальную физическую форму</title>

</head>

<body bgcolor="#0000FF">
<p align="center"><font color="#FFFF00" size="6" face="Arial">Узнайте
свою оптимальную физическую форму</font></p>
<p align="center"><font face="Arial"> </font></p>

<form method="POST">

<p align="center"><font color="#FFFF00" size="6" face="Arial"><strong>Пол:
<select name="D1" size="1">
<option selected value="G">Женский</option>
<option value="M">Мужской</option>
</select> Возраст </strong><input type="text" size="3"
name="T1"> лет Рост <input type="text" size="3"
name="T2"> см Вес <input type="text" size="3" name="T3"> кг </font></p>
<p align="center"><input type="button" name="B1" value="Посчитать"></p>
</form>
</body>
</html>

Первый этап проектирования интерфейса закончен. Внесем в текст формы некоторые изменения. Так как мы не собираемся никуда отправлять данные из формы, уберем method="POST", но зато добавим название формы, чтобы нам было удобнее в дальнейшем работать. Пусть форма называется "Zdorov". Переименуем также названия полей формы: "D1"="pol", "T1"="Let", "T2"="Rost", "T3"="Ves", "B1"="shet". Для удобства уберем также все теги форматирования шрифтов, заменив их на <h3>... </h3>.

В результате форма "Zdorov" примет вид:

<FORM name="Zdorov" >
<h3> Пол <SELECT name="pol" >
<OPTION value="G" selected>Женский
<OPTION value="M" >Мужской
</SELECT>
Возраст <INPUT type="text" name="Let" size=3>лет
Рост <INPUT type="text" name="Rost" size=3>см
Вес <INPUT type="text" name="Ves"size=3>кг <br> <br>
<INPUT type="button" name="shet" value="Посчитать" </h3>
</FORM>

Создание расчетной части программы

На языке JavaScript это будет выглядеть так.

Создаем функцию для расчета искомых параметров.

function Sthet() {
if (document.Zdorov.pol.value=="G"){
<!-Если пол женский, то -->
m0=Math.round(50+(document.Zdorov.Rost.value-150)*0.32+(document.Zdorov.Let.value-21)/5);

<!-считаем оптимальную массу тела по формуле, где: m0 - оптимальная масса тела; document.Zdorov.Rost.value - значение введенного поля "Рост"; document.Zdorov.Let.value - соответственно возраст; Math.round - округление до ближайшего целого-->
adv0=Math.round(102+0.7*document.Zdo-rov.Let.value+0.15*m0); adn0=Math.round(78+0.17*document.Zdo-rov.Let.value+0.1*m0);
<!-считаем оптимальное давление для оптимальной массы тела-->
adv1=Math.round(102+0.7*document.Zdor-ov.Let.value+0.15*document.Zdorov.Ves.value);
dn1=Math.round(78+0.17*document.Zdor-ov.Let.value+0.1*document.Zdorov.Ves.value);
<!-считаем оптимальное давление для реальной массы тела-->

}
else{

<!- Иначе, если пол не женский, т.е. мужской, делаем аналогичные расчеты -->
m0=Math.round(50+(document.Zdorov.Rost.value-150)*0.75+(document.Zdorov.Let.value-21)/4);
adv0=Math.round(109+0.5*document.Zdo-rov.Let.value+0.1*m0);
adn0=Math.round(74+0.1*document.Zdo-rov.Let.value+0.15*m0);
v1=Math.round(109+0.5*document.Zdor-ov.Let.value+0.1*document.Zdorov.Ves.value);
adn1=Math.round(74+0.1*document.Zdor-ov.Let.value+0.15*document.Zdorov.Ves.value);
};
<!-Выводим результат расчетов на экран -->
alert("Ваш оптимальный вес: "+m0+" кг Оптимальное давление для "+m0+" кг : "+adv0+"/"+adn0+" Оптимальное давление для "+document.Zdorov.Ves.value+" кг --"+adv1+"/"+adn1);
}
Функция Sthet() является скриптом для расчета физической формы. Смысл записей скрипта понятен из комментариев.

Внедрение скрипта в HTML-документ

Завершающий этап работы - компоновка программного кода.

Скрипт помещаем в часть <head>...</head> документа. Кнопку "Посчитать" заставляем инициализировать расчет:

<INPUT type="button" name="shet" value="Посчитать" onClick="Sthet()">

Добавляем стиль текста.

<style type="text/css">
h3 {font-family: Arial;color: yellow";}
</style>

В итоге получаем следующий HTML-документ:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
<title>Узнайте свою оптимальную физическую форму</title>
<style type="text/css">
h3 {font-family: Arial;color: "yellow";}
</style>
<script language="JavaScript">
<!-- hide
function Sthet() {
if (document.Zdorov.pol.value=="G"){
m0=Math.round(50+(document.Zdorov.Rost.value- 150)*0.32+(document.Zdorov.Let.value-21)/5); adv0=Math.round(102+0.7*document.Zdo-rov.Let.value+0.15*m0);
n0=Math.round(78+0.17*document.Zdo-rov.Let.value+0.1*m0);
dv1=Math.round(102+0.7*document.Zdor-ov.Let.value+0.15*document.Zdorov.Ves.value);
dn1=Math.round(78+0.17*document.Zdor-ov.Let.value+0.1*document.Zdorov.Ves.value);
}
else{
m0=Math.round(50+(document.Zdorov.Rost.value-150)*0.75+(document.Zdorov.Let.value-21)/4);
adv0=Math.round(109+0.5*document.Zdo-rov.Let.value+0.1*m0);
adn0=Math.round(74+0.1*document.Zdo-rov.Let.value+0.15*m0);
adv1=Math.round(109+0.5*document.Zdor-ov.Let.value+0.1*document.Zdorov.Ves.value);
adn1=Math.round(74+0.1*document.Zdor-ov.Let.value+0.15*document.Zdorov.Ves.value);
};
alert("Ваш оптимальный вес: "+m0+" кг Оптимальное давление для "+m0+" кг : "+adv0+"/"+adn0+" Оптимальное давление для "+document.Zdorov.Ves.value+" кг --"+adv1+"/"+adn1);
} // -->
</script>
</head>
<body bgcolor="#0000FF">
<CENTER>
<FORM name="Zdorov" >
<h3> Пол <SELECT name="pol" >
<OPTION value="G" selected>Женский
<OPTION value="M" >Мужской
</SELECT>
Возраст
<INPUT type="text" name="Let" size=3>лет Рост
<INPUT type="text" name="Rost" size=3>см Вес
<INPUT type="text" name="Ves"size=3>кг <br> <br>
<INPUT type="button" name="shet" value="Посчитать" onClick="Sthet()">

</h3>
</FORM>
<a href="mailto:aaa@bbb.ru">Напишите мне письмо</a>
</CENTER>
</body>
</html>

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

Приведенный пример, конечно, не блещет остротой программистской мысли, все задачи решались "в лоб", но результат достигнут в кратчайшие сроки, что в большинстве случаев и требуется.



статьи
статьи
 / 
новости
новости
 / 
контакты
контакты