Разработка программы для определения психофизических параметров человеческого организма

Алгоритм создания программы для определения психофизических параметров организма. Применение методики нисходящего программирования и процедуры writedates, findmaxmin. Описание входных и выходных данных, вывод на экран дат пика и спада биоритмов.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 18.01.2013
Размер файла 21,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Министерство образования Российской Федерации

Томский государственный университет систем управления и радиоэлектроники (ТУСУР)

Кафедра автоматизированных систем управления (АСУ)

Программирование

Курсовая работа

г.Чита 2001 г.

Содержание

Введение

1. Назначение работы и область ее применения. Постановка задачи

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

3. Описание входных и выходных данных

4. Руководство пользователя

Заключение

Список литературы

Приложение 1. Листинг программы

Приложение 2. Результаты работы

Введение

Язык программирования Pascal создан в 1973 году швейцарским ученым Николасом Виртом и был назван в честь выдающегося французского физика, математика и философа Блеза Паскаля (1623-1662), который являлся автором первой в мире вычислительной (суммирующей) машины (1641). Язык первоначально создавался для целей обучения программированию вообще. По словам автора языка «… разработка языка Паскаль базировалась на двух принципиальных концепциях. Первая состояла в том, чтобы изобрести язык, приспособленный к обучению программированию как систематической дисциплине, базирующейся на некоторых фундаментальных положениях, ясно и естественно отраженных в языке. Вторая предполагала разработку конкретных представлений этого языка, которые были бы надежны и эффективны на современных ЭВМ.» Йенсен К., Вирт Н. Руководство для пользователя и описание языка. По мнению Вирта, «язык, на котором студент учится выражать свои идеи, существенно влияет на его способ мышления и изобретательность… беспорядок, сопутствующий существующим языкам, непосредственно влияет на стиль программирования студентов.» Тот же Сейчас с уверенностью можно говорить о том, что Вирт достиг поставленной перед собой цели. Язык Паскаль является не только наилучшим языком обучения программированию, дает возможность осуществить простую реализацию его на современных ПЭВМ, использовать его как язык системного программирования, но и является базой для создания более мощных языков.

1. Назначение работы и область ее применения. Постановка задачи

Давно известно, что творческая и физическая активность человека не остается постоянной, а циклически меняется, причем периодичность ее изменения приблизительно согласуется с периодом вращения Луны вокруг Земли. Существует теория, согласно которой физическая, эмоциональная и интеллектуальная активность человека подчиняется соответствующим биоритмам. Каждый биоритм представляет собой синусоиду со строго постоянным периодом, причем для каждого биоритма существует свой период. В отдельные дни все три биоритма человека могут достигнуть своего максимума и тогда человек испытывает подъем творческих и физических сил, в такие дни у него все спорится, от легко решает проблемы, которые в другое время ему решить гораздо сложнее. Точно также существуют и «черные» дни, соответствующие спаду всех трех биоритмов.

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

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

Алгоритм программы можно укрупнено записать следующим образом:

Ввести дату рождения и текущую дату

Проконтролировать их правильность и непротиворечивость

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

Вычислить количество дней от текущей даты до даты ближайшего пика биоритмов и даты ближайшего спада

Определить и напечатать обе даты

Применяю методику нисходящего программирования.

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

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

§ Месячный младенец (когда год и месяц обеих дат одинаков) - тогда количество дней находится простым вычитанием двух чисел;

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

§ Общий вариант (отличаются года) - тогда количество дней = (количество дней от даты рождения до конца года) + (количество дней в разделяющих даты годах) + (количество дней от начала текущего года до текущей даты).

Все эти варианты учитываются в процедуре Get_numbers_of_days.

Процедуры Variant2 и Variant3 - вспомогательные. Они используются для связи с основной программой через глобальные переменные.

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

TF=23.6884 - период физической активности

TE=28.4261 - период эмоциональной активности

TI=33.1638 - период интеллектуальной активности

Поиск критических дней определяется для текущего дня и для каждого из последующих дней до первого пика максимума или минимума в заранее определенном интервале - в данном случае 30 дней.

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

3. Описание входных и выходных данных

программирование биоритм организм

Ввод исходных данных (даты рождения человека и текущей даты) осуществляется в формате ДД ММ ГГГГ с клавиатуры по запросу (тип переменных, соответствующих этим значениям, Integer).

Для реализации вывода на экран расчетных данных для дат пика и спада биоритмов - наиболее и наименее благоприятных дней использую тип Integer. Для вывода данных о продолжительности жизни в часах минутах и секундах использую Longint («длинный» целый), так как для типа Integer диапазон возможных значений данных от -32768 до +32767. Если учесть, что средняя продолжительность жизни человека около 70 лет, то есть 25550 дней, и соответственно 36792000 часов, то приемлем только тип данных Longint с диапазоном значений от -2147483648 до +2147483647.

Программное и аппаратное обеспечение для нормальной работы программы стандартное - Turbo Pascal 7.0 - при отсутствии исполнимого файла. Операционная система MS-DOS 6.0 или Windows95 и выше с режимом эмуляции MS-DOS.

4. Руководство пользователя

Ввод исходных данных осуществляется с клавиатуры по запросу программы.

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

Заключение

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

Список литературы

1. Абрамов В.Г., Трифонов Н.П. Введение в язык Паскаль. - М. :Наука, 1988.-320 с.

2. Абрамов С.А., Зима Е.В. Начала программирования на языке Паскаль. - М.: Наука, 1987. - 112 с.

3. Бутомо И.Д., Самочадин А.В., Усанова Д.В. Программирование на алгоритмическом языке Паскаль. - Л.: Издательство Ленинградского университета, 1985. - 216 с.

4. Грэхем Р. Практический курс языка Паскаль. - М.: Радио и связь. 1986 - 200 с.

5. Йенсен К., Вирт Н. Руководство для пользователя и описание языка. - М., 1982. 151 с.

6. Пильщиков В.Н. Сборник упражнений по языку Паскаль. - М.: Наука, 1989. - 160 с.

Приложение 1. Листинг программы

Program bioritm;

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

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

CONST SIZE_OF_MONTH: ARRAY [1..12] OF BYTE=

(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

var

d0,d, {Дни рождения и месяцы}

m0,m, {Месяцы рождения и текущий}

y0,y, {Годы рождения и текущий}

dmin, {Наименее благоприятный день}

dmax, {Наиболее благоприятный день}

days: integer; {Количество дней от рождения}

{------------------------------------------------}

PROCEDURE InputDates (var d0,m0,y0,d,m,y: integer);

{Ввод даты рождения и текущей даты.

Контроль правильности дат и их непротиворечивости

(текущая дата должна быть позже даты рождения)}

var

correctly: boolean; {Признак правильности ввода}

{-----------------------------------------------}

PROCEDURE InpDate (text: string;

var d,m,y: integer);

{Выводит приглашение TEXT, вводит дату в формате

ДД ММ ГГГГ и проверяет ее правильность}

const

YMIN=1900; {Минимальный правильный год}

YMAX=2100; {Максимальный правильный год}

BEGIN {InpDate}

repeat

write (text);

readln(d,m,y);

correctly:=(y>=YMIN) and (y<=YMAX) and (m>=1)

and (m<=12) and (d>0);

if correctly then

if (m=2) and (d=29) and (y mod 4=0) then

{ничего не делать: это 29 февраля високосного года}

else

correctly:=d<=Size_of_Month[m];

if not correctly then

writeln('ВНИМАНИЕ! Ошибка в дате!');

until correctly

end; {InpDate}

{--------------------------------}

BEGIN {InputDates}

repeat

InpDate(' Введите дату рождения в формате ДД ММ ГГГГ: ',

d0,m0,y0);

InpDate(' Введите текущую дату в формате ДД ММ ГГГГ: ',

d,m,y);

correctly:=y>y0; {ПРоверить непротиворечивость дат:}

if not correctly and (y=y0) then

begin

correctly:=m>m0;

if not correctly and (m=m0) then

correctly:=d>d0;

end;

until correctly;

END; {InputDates}

{----------------------------------------------------}

PROCEDURE Get_numbers_of_days (d0,m0,y0,d,m,y: integer;

var days: integer);

{Определение полного количества дней,прошедших от одной даты до другой}

{----------------------------------------------------}

PROCEDURE Variant2;

{Подсчет количества дней в месяцах, разделяющих обе даты}

var

mm: integer;

BEGIN {Variant2}

mm:=m0;

while mm<m do

begin

days:=days+Size_of_Month[mm];

if (mm=2) and (m0 mod 4=0) then inc(days);

inc(mm);

end;

END; {Variant2}

{---------------------------------------------------}

PROCEDURE Variant3;

{Подсчет количества дней в месяцах, разделяющих обе даты}

var mm,yy: integer;

BEGIN {Variant3}

mm:=m0+1;

while mm<=12 do {Учесть остаток года рождения :}

begin

days:=days+Size_of_Month[mm];

if (mm=2) and (y0 mod 4=0) then inc(days);

inc(mm);

end;

yy:=y0+1;

while yy<y do {Прибавить разницу лет: }

begin

days:=days+365;

if yy mod 4=0 then inc(days);

inc(yy);

end;

mm:=1;

while mm<m do {Прибавить начало текущего года: }

begin

days:=days+Size_of_Month[mm];

if (y mod 4=0) and (mm=2) then inc(days);

inc(mm);

end;

END; {Variant3}

{-----------------------------------------------------}

BEGIN {Get_numbers_of_days}

if (y=y0) and (m=m0) then {Даты отличаются только днями: }

days:=d-d0;

{Даты отличаются не только днями: }

begin

days:=d+Size_of_Month[m0]-d0;

{Учесть количество дней в текущем месяце и

количество дней до конца месяца рождения}

if (y0 mod 4=0) and (m0=2) then inc(days);

{Учесть високосный год }

if y=y0 then Variant2;

{Разница в месяцах одного и того же года}

Variant3;

{Даты отличаются годами}

end;

END; {Get_numbers_of_days}

{-------------------------------------------------}

PROCEDURE FindMaxMin (var dmin,dmax: integer;

days: integer);

{Поиск критических дней }

const

TF=2*3.1416/23.6884; {Период физической активности}

TE=2*3.1416/28.4261; {Период эмоциональной активности}

TI=2*3.1416/33.1638; {Период интеллектуальной активности}

INTERVAL=30; {Интервал прогноза}

var

min,max,x:real;

i:integer;

BEGIN {FindMaxMin}

max:=sin(days*TF)+sin(days*TE)+sin(days*TI);

min:=max;

dmin:=days;

dmax:=days;

for i:=0 to INTERVAL do

begin

x:=sin((days+i)*TF)+sin((days+i)*TE)+sin((days+i)*TI);

if x>max then

begin

max:=x;

dmax:=days+i;

end;

if x<min then

begin

min:=x;

dmin:=days+i;

end;

end;

END; {FindMaxMin}

{--------------------------------------------}

PROCEDURE WriteDates (dmin,dmax,days:integer);

{Определение и вывод дат критических дней.

Вывод дополнительной информации о количестве

прожитых дней, часов, минут и секунд}

{---------------------------------------------}

PROCEDURE WriteDate(text:string;

dd:integer);

{Определение даты для дня DD от монета рождения.

В глобальных переменных d, m и y имеется текущая дата,

в переменной DAYS - количество дней, прошедших от момента

рождения до текущей даты.

Выводится сообщение TEXT и найденная дата в формате

ДД-ММ-ГГГГ.}

const

Names_of_Monthes:array[1..12] of string[5]=

('янв ','февр','март','апр ','май ',

'июнь','июль','авг ','сент','окт ',

'нояб','дек ');

var

d0,m0,y0,ddd:integer;

BEGIN {WriteDate};

d0:=d;

m0:=m;

y0:=y;

ddd:=days;

while ddd<>dd do

begin

inc(d0); {Нарастить число}

if (y0 mod 4<>0) and (d0>Size_of_Month[m0]) or

(y0 mod 4=0) and (d0=30) then

begin {Корректировать месяц}

d0:=1;

inc(m0);

if m0=13 then {Корректировать год}

begin

m0:=1;

inc(y0);

end;

end;

inc(ddd);

end;

writeln(text,d0,'-',Names_of_Monthes[m0],'-',y0);

END; {WriteDate}

{-----------------------------------------------}

var

longdays: longint; {"Длинная" целая переменная для часов, минут и секунд}

BEGIN {WriteDates}

longdays:=days;

writeln('Прошло: ',longdays,' дней, ',longdays*24,

' часов, ',longdays*24*60,' минут, ',

longdays*24*360,' секунд.');

WriteDate('Наименее благоприятный день: ',dmin);

WriteDate('Наиболее благоприятный день: ',dmax);

END; {WriteDates}

{---------------------------------------------------}

BEGIN {ГЛАВНАЯ ПРОГРАММА}

Writeln('______________________________');

Writeln(' Программа расчета благоприятных дней ');

Writeln(' Ввод данных осуществляйте через пробел ');

Writeln('Окончание ввода данных подтвердите с помощью клавиши ENTER');

InputDates(d0,m0,y0,d,m,y);

Writeln('-----------------------------------------');

Get_numbers_of_days(d0,m0,y0,d,m,y,days);

FindMaxMin(dmin,dmax,days);

WriteDates(dmin,dmax,days);

END.

Приложение 2. Результаты работы

-------------------------------------------------------------

Программа расчета благоприятных дней

Ввод данных осуществляйте через пробел

Окончание ввода данных подтвердите с помощью клавиши ENTER

--------------------------------------------------------------

Введите дату рождения в формате ДД ММ ГГГГ: 22 02 1922

Введите текущую дату в формате ДД ММ ГГГГ: 12 09 2001

Прошло: 29057 дней, 697368 часов, 41842080 минут, 251052480 секунд.

---------------------------------------------------------------

Наименее благоприятный день: 3-окт -2001

Наиболее благоприятный день: 12-сент-2001

Размещено на Allbest.ru

...

Подобные документы

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

    курсовая работа [135,9 K], добавлен 28.12.2012

  • Технологии и языки программирования, используемые при разработке программы. Проектирование и реализация социальной сети. Описание и обоснование выбора организации входных и выходных данных. Алгоритм функционирования программы, таблицы базы данных.

    курсовая работа [3,5 M], добавлен 10.06.2014

  • Разработка эскизного и технического проектов программы, ее назначение и область применения, описание алгоритма, организация входных и выходных данных. Выбор состава технических и программных средств, разработка рабочего проекта, спецификация программы.

    курсовая работа [159,8 K], добавлен 26.01.2010

  • Характеристика программы на языке VBA, которая вводит исходные данные, выполняет расчеты и выводит результаты на экран. Описание переменных в программе, ее блок-схема и алгоритм работы. Листинг программы. Описание входных данных и результат вычислений.

    курсовая работа [721,4 K], добавлен 10.11.2010

  • Разработана программа решения двух задач на языке программирования Turbo Pascal. Спецификация задания. Описание входных и выходных данных. Математическая постановка задачи. Алгоритм ее решения. Описание и блок-схема программы. Результаты тестирования.

    курсовая работа [275,8 K], добавлен 28.06.2008

  • Разработка эскизного и технического проектов программы, ее назначение и область применения, описание алгоритма, организация входных и выходных данных. Выбор состава технических и программных средств, разработка рабочего проекта, спецификация программы.

    курсовая работа [700,6 K], добавлен 26.01.2010

  • Разработка эскизного и технического проектов программы "Шифр Цезаря": назначение и область применения, описание алгоритма, организация входных и выходных данных. Выбор состава технических и программных средств, разработка, тест и внедрение программы.

    курсовая работа [563,7 K], добавлен 15.07.2012

  • Технические характеристики: постановка задачи, описание основных типов входных и выходных данных. Описание алгоритмов основной программы и процедур удаления и исправления данных в таблицах. Выбор языка программирования. Технико-экономические показатели.

    курсовая работа [478,1 K], добавлен 28.12.2012

  • Этапы процедуры принятия решений. Разработка математического алгоритма. Блок-схема алгоритма работы программы. Разработка программы на языке программирования С++ в среде разработки MFC. Текст программы определения технического состояния станка с ЧПУ.

    курсовая работа [823,0 K], добавлен 18.12.2011

  • Разработка программы тестирования студентов по MS PowerPoint с кодом на языке Delphi. Создание алгоритма для решения функциональных требований задачи. Описание переменных, вспомогательных процедур, входных и выходных данных для реализации программы.

    курсовая работа [1,5 M], добавлен 21.09.2010

  • Графическая схема алгоритма выполнения программы определения запасов сырья. Решение задачи с помощью программы MS Excel. Разработка макроса для построения диаграммы. Использование интерфейса программы для работы с таблицей. Разработка базы данных.

    курсовая работа [1,2 M], добавлен 24.04.2014

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

    учебное пособие [77,5 K], добавлен 28.06.2009

  • Создание помещения галереи, установка параметров графических объектов и вывод на экран комнат фотогалереи, а также осуществление просмотра галереи в автоматическом режиме. Разработка алгоритма перемещения по фотогалерее. Структура модуля Gallery.pas.

    курсовая работа [466,9 K], добавлен 07.06.2012

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

    контрольная работа [1,3 M], добавлен 12.06.2009

  • Разработка программы игры в крестики-нолики. Примеры игровой ситуации на игровом поле. Описание входных и выходных данных, переменных и функций программы. Реализация алгоритма работы программы на языке C++. Текст программы и примеры ее выполнения.

    курсовая работа [352,8 K], добавлен 14.04.2011

  • Написание программы для работы с клиентами средствами языка Delphi, которая предусматривает ввод, редактирование и удаление информации. Разработка алгоритма решения задачи, описание переменных, вспомогательных процедур, входных и выходных данных.

    курсовая работа [355,7 K], добавлен 21.09.2010

  • Описание алгоритма решения задачи графическим способом. Вывод элементов массива. Описание блоков укрупненной схемы алгоритма на языке Pascal. Листинг программы, а также ее тестирование. Результат выполнения c помощью ввода различных входных данных.

    контрольная работа [150,4 K], добавлен 03.05.2014

  • Область применения – учебные учреждения, где ведется учет пропусков занятий студентами. Технические характеристики разрабатываемого проекта: описание основных типов входных и выходных данных, алгоритм программы. Технико-экономические показатели проекта.

    курсовая работа [906,3 K], добавлен 28.12.2010

  • Разработка эскизного и технического проектов программы, ее назначение и область применения, технические характеристики. Организация входных и выходных данных, выбор состава технических и программных средств. Текст программы, ее описание и тестирование.

    курсовая работа [1,3 M], добавлен 15.11.2009

  • Формальная постановка задачи и спецификация программы. Сценарий диалога с пользователем. Разработка структур данных и алгоритмов. Таблица параметров и текст программы на языке C++. Тестирование программы с целью определения корректности ее работы.

    контрольная работа [27,5 K], добавлен 07.07.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.