Автор работы: Пользователь скрыл имя, 31 Октября 2013 в 23:17, курсовая работа
Актуальность настоящей работы, таким образом, складывается на стыке трех потребностей: с одной стороны – необходимости использования биоритмов с целью рационального планирования времени, с другой стороны – сложности процедуры расчета биоритмов и, с третьей стороны – возможностью автоматизации процедуры расчетов с использованием вычислительных информационных средств. Отдельно актуализирует настоящее исследование потребность в существовании такого инструмента, позволяющего рассчитывать биоритмы человека, который был бы максимально доступен большинству нуждающихся в таком инструменте.
Введение…………………………………………………………………………4
Глава 1. Постановка задачи………………………………………………….....6
Определение биоритмов и их виды…………………………………….6
Актуализация целевой функции………………………………………...7
Выбор и характеристика проблемы целевой аудитории…………….10
Разработка задания на проектирование………………………………...12
Глава 2. Анализ аналогов………………………………………………………..14
2.1.Характеристика локальных программных продуктов, реализующих задачи управления временем…………………………………...14
2.2. Сравнительный анализ приложений, реализующих возможности расчёта биоритмов……………………………………………………………….26
Глава 3. Введение в Pascal………………………………………………………32
3.1.Операторы ввода………………………………………………………….32
3.2.Массивы…………………………………………………………………...34
3.3.Обработка текстовых файлов……………………………………………37
Глава 4. Разработка алгоритма…………………………………………………41
4.1. Описание входных данных……………………………………………..41
4.2. Описание алгоритма…………………………………………………….41
Заключение……………………………………………………………………...46
Список использованной литературы………………………………………….48
Приложение 1. Электронный органайзер LeaderTask……………………..49
Приложение 2. Органайзер C-Organaizer Professional……………………….50
Приложение 3. Органайзер EssentialPIM ……………………………….........51
Приложение 4. Результат работы программы, расположенной на сайте.....52
Можно формировать группы профилей для каких-то задач: например, в одну группу коллег по работе, во вторую – родственников, и так далее. Если вы склонны хранить информацию о вычислениях биоритмов других людей, то, по мере накопления их профилей разделение на группы покажется очень удобным.
Без оплаты программа работает ограниченное время. Есть русский язык.
Эти четыре программы составляют график биоритмов, но они не показывают, в какие дни человеку, в частности, студенту, необходимо посвятить время определенным учебным дисциплинам, а от изучения каких лучше отказаться. Поэтому попробуем реализовать данную задачу самостоятельно.
Pascal — это императивный язык программирования, разработанный Никлаусом Виртом в 1970 в качестве языка обучения структурному программированию. Название языку дано в честь выдающегося французского математика, физика, литератора и философа Блеза Паскаля.
Особенностями языка являются строгая типизация и наличие средств структурного (процедурного) программирования. Паскаль был одним из первых таких языков. По мнению Н. Вирта, язык должен способствовать дисциплинированию программирования, поэтому, наряду со строгой типизацией, в Паскале сведены к минимуму возможные синтаксические неоднозначности, а сам синтаксис интуитивно понятен даже при первом знакомстве с языком.
Рассмотрим подробно операции ввода и вывода, строковый тип данных, а также массивы, т.к. это понадобится для построения алгоритма биоритмов.
3.1. Операторы ввода и вывода
Любая программа предназначена для обработки данных, вводимых пользователем, и вывода результатов этой обработки. Работу пользователя с программой облегчает вывод на экран сообщений о том, для чего предназначена данная программа, какие действия в данный момент она выполняет или ожидает от пользователя. Появление таких сообщений свидетельствует о культуре программирования. Вывод сообщений можно организовать с помощью оператора write/writeln, который, кроме того, позволяет вывести на экран значение констант, переменных или выражений. Действие оператора writeln отличается от оператора write тем, что оператор writeln после вывода информации переводит курсор на следующую строку. Оператор writeln без аргументов просто переводит курсор на следующую строку.
Для ввода информации с клавиатуры
используется оператор read/readln. Когда в
программе встречается этот оператор,
ее работа прерывается, и компьютер переходит
в режим ожидания до тех пор, пока пользователь
не введет на клавиатуре значения переменных,
указанных в операторе read/readln, и не нажмет
клавишу ENTER. Например, оператор
read(a2,a3);
считывает значения переменных a2 и a3 (значения должны вводиться через
пробел).
Разница между операторами read и readln
проявляется при работе с файлами
(заметим, что ввод-вывод данных можно
осуществлять не только с клавиатуры
и на экран, но также их файла и в файл,
при этом используются те же самые операторы
ввода-вывода). Оператор readln без аргументов
переводит систему в состояние ожидания, - работа программы прерывается и
компьютер ждет нажатия клавиши ENTER. После этого программа продолжает
работу.
Приведём пример программы, которая осуществляет
ввод двух чисел с клавиатуры с последующим
вычислением их суммы и выводом суммы
на экран.
Program First;
var
a1,a2,a3: integer;
begin
writeln('Введите два числа: a1 и a2');
write('a1 = ');
readln(a1);
write('a2 = ');
readln(a2);
a3:= a1+a2;
writeln('Сумма чисел a1 и a2: ',a3)
End.
3.2. Массивы
Вы знаете, что компьютер предназначен в основном для облегчения работы человека с большими информационными объемами. Как же, используя только переменные известных вам типов, сохранить в памяти и обработать данные, содержащие десяток, сотню, тысячу чисел или, к примеру, строк? А ведь такие задачи встречаются в любой области знания. Конечно, можно завести столько переменных, сколько данных, можно даже занести в них значения, но только представьте, какой величины будет текст такой программы, сколько времени потребуется для его составления, как много места для возможных ошибок? Естественно, об этом задумывались и авторы языков программирования. Поэтому во всех существующих языках имеются типы переменных, отвечающие за хранение больших массивов данных. В языке Паскаль они так и называются: "массивы".
Массивом будем называть упорядоченную последовательность данных одного типа, объединенных под одним именем. Кстати, под это определение подходит множество объектов из реального мира: словарь (последовательность слов), мультфильм (последовательность картинок) и т.д. Проще всего представить себе массив в виде таблицы, где каждая величина находится в собственной ячейке. Положение ячейки в таблице должно однозначно определяться набором координат (индексов). Самой простой является линейная таблица, в которой для точного указания на элемент данных достаточно знания только одного числа (индекса). Мы рассмотрим только линейные массивы.
Описание типа линейного массива
выглядит так:
Type <Имя типа>=Array [<Диапазон индексов>]
Of <Тип элементов>;
В качестве индексов могут выступать переменные любых порядковых типов. При указании диапазона начальный индекс не должен превышать конечный. Тип элементов массива может быть любым (стандартным или описанным ранее).
Описать переменную-массив можно и
сразу (без предварительного описания
типа) в разделе описания переменных:
Var <Переменная-массив> : Array [<Диапазон
индексов>] Of <Тип элементов>;
Примеры описания массивов:
Var
S, BB : Array [1..40] Of Real;
N : Array ['A'..'Z'] Of Integer;
T : Array [1..40] Of Real;
Теперь переменные S, BB и T представляют собой массивы из сорока вещественных чисел; массив N имеет индексы символьного типа и целочисленные элементы; массив R может хранить в себе 41 число типа Word.
Единственным действием, которое возможно произвести с массивом целиком - присваивание. Для данного примера описания впоследствии допустима следующая запись: S:=BB;
Однако, присваивать можно только
массивы одинаковых типов. Даже массиву
T присвоить массив S нельзя, хотя, казалось
бы, их описания совпадают, произведены
они в различных записях
Никаких других операций с массивами
целиком произвести невозможно, но с элементами
массивов можно работать точно также,
как с простыми переменными соответствующего
типа. Обращение к отдельному элементу
массива производится при помощи указания
имени всего массива и в квадратных скобках
- индекса конкретного элемента. Например:
R[10] - элемент массива R с индексом 10.
Фундаментальное отличие компонента
массива от простой переменной состоит
в том, что для элемента массива
в квадратных скобках может стоять
не только непосредственное значение
индекса, но и выражение, приводящее к
значению индексного типа. Таким образом
реализуется косвенная адресация:
BB[15] - прямая адресация; BB[K] - косвенная
адресация через переменную K, значение
которой будет использовано в качестве
индекса элемента массива BB.
Такая организация работы с такой структурой данных, как массив, позволяет использовать цикл для заполнения, обработки и распечатки его содержимого.
Program M1;
Var
A : Array [1..20] Of Integer;
Begin
A[1]:=7; {Заполняем массив значениями
(отдельно каждый компонент)}
A[2]:=32;
A[3]:=-70;
…
A[20]:=56;
Writeln(A[1],A[2],A[3],…,A[20]
End.
Как бы ни был примитивен приведенный пример, он все же иллюстрирует возможность непосредственного обращения к каждому элементу массива отдельно. Правда, никакого преимущества массива перед несколькими простыми переменными здесь не видно. Поэтому - другой способ:
Program M2;
Var
A : Array [1..20] Of Integer;
I : Integer;
Begin
For I:=1 To 20 Do {Организуем цикл с параметром
I по всем возожным}
Readln(A[I]); {значениям индексов и вводим A[I]
с клавиатуры }
For I:=20 Downto 1 Do {Распечатываем массив в обратном
порядке}
Write(A[I],'VVV')
End.
Эта программа вводит с клавиатуры 20 целых чисел, а затем распечатывает их в обратном порядке.
3..3. Строковый тип данных
Для обработки строковой информации в Турбо Паскаль введен строковый тип данных. Строкой в Паскале называется последовательность из определенного количества символов. Количество символов последовательности называется длиной строки. Синтаксис:
var s: string[n];
var s: string;
n - максимально возможная длина
строки - целое число в диапазоне
1..255. Если этот параметр опущен,
то по умолчанию он
Строковые константы записываются как последовательности символов, ограниченные апострофами. Допускается формирование строк с использованием записи символов по десятичному коду (в виде комбинации # и кода символа) и управляющих символов (комбинации ^ и некоторых заглавных латинских букв).
Пример:
'Текстовая строка'
#54#32#61
'abcde'^A^M
Пустой символ обозначается двумя подряд стоящими апострофами. Если апостроф входит в строку как литера, то при записи он удваивается.
Переменные, описанные как строковые
с разными максимальными
Выражения типа char можно присваивать любым строковым переменным.
В Турбо Паскаль имеется простой доступ к отдельным символам строковой переменной: i-й символ переменной st записывается как st[i]. Например, если st - это 'Строка', то st[1] - это 'С', st[2] - это 'т', st[3] - 'р' и так далее.
Над строковыми данными определена операция слияния (конкантенации), обозначаемая знаком +. Например:
a := 'Turbo';
b := 'Pascal';
c := a + b;
В этом примере переменная c приобретет значение 'TurboPascal'.
Кроме слияния над строками определены операции сравнения <,>,=,<>,<=,>=. Две строки сравниваются посимвольно, слева направо, по кодам символов. Если одна строка меньше другой по длине, недостающие символы короткой строки заменяются символом с кодом 0.
В системе Turbo Pascal имеется несколько полезных стандартных процедур и функций, ориентированных на работу со строками. Ниже приводится список этих процедур и функций с краткими пояснениями.
Length(s:string):integer
Функция возвращает в качестве результата
значение текущей длины строки-
Пример.
n := length('Pascal'); {n будет равно 6}
Concat(s1,[s2,...,sn]:string):
Функция выполняет слияние строк-
Copy(s:string; index:integer; count:integer):string
Функция возвращает подстроку, выделенную из исходной строки s, длиной count символов, начиная с символа под номером index.
Пример.
s := 'Система Turbo Pascal';
s2 := copy(s, 1, 7); {s2 будет равно 'Система'}
s3 := copy(s, 9, 5); {s3 будет равно 'Turbo'}
s4 := copy(s, 15, 6); {s4 будет равно 'Pascal'}
Delete(var s:string; index,count:integer)
Процедура удаляет из строки-параметра s подстроку длиной count символов, начиная с символа под номером index.
Пример.
s := 'Система Turbo Pascal';
delete(s,8,6); {s будет равно 'Система Pascal'}
Insert(source:string; var s:string;index:integer)
Процедура предназначена для вставки строки source в строку s, начиная с символа index этой строки.
Пример.
s := 'Система Pascal';
insert('Turbo ',s,9); {s будет равно 'Система Turbo Pascal'}
Pos(substr,s:string):byte
Функция производит поиск в строке s подстроки substr. Результатом функции является номер первой позиции подстроки в исходной строке. Если подстрока не найдена, то функция возвращает 0.
Пример.
s := 'Система Turbo Pascal';
x1 := pos('Pascal', s); {x1 будет равно 15}
x2 := pos('Basic', s); {x2 будет равно 0}
Str(X: арифметическое выражение; var st: string)
Процедура преобразует численное выражение X в его строковое представление и помещает результат в st.
Val(st: string; x: числовая переменная; var code: integer)
Подсчёт биоритмов будет основан на данных человека.
4.1. Описание входных данных
Ввод исходных данных с клавиатуры по запросу (тип переменных, соответствующих этим значениям, Integer).
Для реализации вывода на экран расчетных данных для дат пика и спада
биоритмов использую тип Integer.
В программу будет вводиться также текстовые значения, для этого мы будем использовать тип string.
Программное и аппаратное обеспечение для нормальной работы программы стандартное – Turbo Pascal 7.0.
4.2. Описание алгоритма
Алгоритм начинается с того, что пользователь должен вручную ввести 9 элементов массива, которые и будут являться данным для распределения их времени.
Первым элементом массива
Далее необходимо ввести дату рождения. Чтобы программа наиболее точно распределила время студента, число, месяц и год будут разными элементами массива.
Вторым элементом будет
Третьим элементом будет являться день рождения (число месяца, в которое родился студент). Диапазон данного элемента будет от 1 до 31, но поскольку количество дней в каждом месяце разное, то во время обработки данных и распределения времени, будет накладываться условие, которое заключается в проверке того, есть ли данное число в заданном месяце.