- •Методические указания к выполнению курсового проектирования по дисциплине «технология программирования»
- •1. Цели и задачи выполнения курсовой работы
- •2. Единая система программной документации (еспд)
- •3. Методические указания по разработке технического задания
- •3.1. Общие положения
- •3.2. Содержание разделов
- •4. Методические рекомендации по разработке программного средства.
- •4.1. Порядок решения задачи курсовой работы
- •4.2. Техника программирования задачи курсовой работы
- •1. Ввод и вывод данных
- •2. Инициализация данных и создание динамических переменных
- •3. Подсчет времени работы программы
- •4. Работа с клавиатурой.
- •5. Методические рекомендации по тестированию программного средства.
- •6. Методические указания по оформлению курсовой работы
- •6.1. Основные правила оформления программной документации
- •6.2. Правила оформления расчетно-пояснительных записок при курсовом проектировании
- •7. ИспользованиеMicrosoftVisioдля разработки блок-схем
- •7.1. Соединение элементов блок-схемы
- •7.2. Навигация в многостраничных блок-схемах
- •Техническое задание №1
- •1. Введение
- •2. Основание для разработки
- •3. Назначение
- •4. Требования к программе или программному изделию
- •5. Требования к программной документации
- •Техническое задание №2
- •1. Введение
- •2. Основание для разработки
- •3. Назначение
- •4. Требования к программе или программному изделию
- •5. Требования к программной документации
- •Курсовой работа по дисциплине технологии программирования :
3. Подсчет времени работы программы
Во многих задачах курсовой работыирования определять время работы программы или сеанса пользователя. Покажем как это можно сделать
var Timer:longint absolute $40:$6c;
Timeold:longint;
TimeinSec:real;
begin
Timeold:=Timer;
...
...
...
TimeinSec := (Timer-Timeold)/18.2;
end.
Данная программа использует тот факт, что к значению четырехбайтовой целой переменной, расположенной по абсолютному адресу $40:$6С, раз в 1/18.2 секунды аппаратно прибавляется единица. Поэтому, если мы опишем в нашей программе переменную, привязав ее к этому адресу, то легко сможем определить время работы программы. А именно, запомнив в самом начале программы значение этой переменной (в нашем примере это оператор timeold:=timer), в процессе работы определить время выполнения в секундах можно по формуле (timer - timeold)/18.2.
4. Работа с клавиатурой.
Для организации интерактивного взаимодействия пользователя с программой необходимо уметь определять код нажатой клавиши. Для этого в Турбо Паскале используется функция ReadKey
Клавиши на клавиатуре можно разделить на две группы. Первая группа, - обычные клавиши, возвращающие один сканкод, вторая группа, - спецклавиши, возвращающие два сканкода подряд при одном нажатии. Первый из этих двух сканкодов всегда символ #0. Для определения кодов клавиш можно применять предлагаемую ниже программу, или программу аналогичную по своему действию.
PROGRAM Scan_Key;
Uses Crt;
Var
ch:char;
Begin
Repeat
ch:=ReadKey; { Приём первого символа }
if ch=#0 { Если #0 то спецклавиша }
then begin
ch:=ReadKey; { Приём сканкода }
writeln('спецклавиша: ', ord(ch));
end
else writeln('обычная клавиша: ', ord(ch));
Until ch=#13; { #13 - ASCII-код клавиши "Enter" }
End.
Одной из полезных функций при работе с клавиатурой является функция KeyPressed. Эту функцию очень удобно применять при завершении работы программы, или прекращения действия определённого фрагмента по нажатии любой клавиши и т.д. Наиболее часто она применяется как условие завершения цикла с постусловием:
Repeat Until KeyPressed;
Возможно также применение этой функции как условия в цикле с предусловием:
While not KeyPressed do <тело цикла>
В этом случае тело цикла будет выполняться до тех пор, пока не будет нажата любая клавиша на клавиатуре.
Program EX_1;
Uses Crt;
Var
ch: char;
done: boolean;
Begin
Writeln('---------------------');
Writeln('F4 - включить звук');
Writeln('F5 - выключить звук');
Writeln('F10 - выход.');
Writeln('---------------------');
done:=false;
Repeat
ch:=ReadKey;
if ch=#0 then
begin
ch:=ReadKey;
case ch of
#62: sound(5000); {включение звука клавишей F4}
#63: nosound; {выключение звука клавишей F5}
#68: done:=true; {выход - клавиша F10}
end;
end;
Until done;
End.
Для улучшения понимания кода программы рекомендуется коды клавиш определить как константы в самом начале программы:
program cursor_keys;
uses Crt;
const
KEYUP=72;
KEYDOWN=80;
KEYLEFT=75;
KEYRIGHT=77;
KEYESC=27;
KEYENTER=13;
KEYSPACE=32;
var key : char;
begin
writeln('Нажмите одну из курсорных клавиш ');
key := readkey;
if ord(key) <> 0 then writeln('обычная клавиша')
else begin
key := readkey;
case ord(key) of
KEYRIGHT: writeln('стрелка вправо');
KEYLEFT: writeln('стрелка влево');
KEYUP: writeln('стрелка вверх');
KEYDOWN: writeln('стрелка вниз');
else writeln('не стрелка');
end;
end;
end.