Консультация № 176438
01.02.2010, 21:56
43.65 руб.
0 21 2
здравствуйте уважаемые Эксперты!!! прошу пожалуйста помоч..

Тема: «Единая система программной документации»

Цель: Научиться оформлять документацию на программу по ГОСТу

Задание.
1. Оформить титульные листы к техническому заданию, описанию программы, тексту программы.
2. Сформировать документ описание программы и текст программы .

Вариант 2. Ввести два целых числа: 0 <= m <=60? 0 <=h <=12 , описывающий момент времени, когда “h часов m минут”. Определить наименьшее число полных минут, которое должно пройти до того момента, когда часовая и минутная стрелка на циферблате совпадут на каком-либо делении.

Рекомендации к исполнению. В этой работе разработка программы проходит не все стадии (этапы).
Процесс разработки программного обеспечения разбивается на этапы:
- постановка задачи;
- проектирование (формирование структуры программы, определение схемы взаимодействия частей);
- кодирование алгоритма;
- тестирование и отладка.

Обсуждение

Неизвестный
01.02.2010, 22:09
общий
Обычно к таким вопросам прилагается методичка, в которой содержатся примеры.
Тем более, что задающие такие задания преподаватели обычно такие умники, что нашим простым умом не понять их
Неизвестный
01.02.2010, 23:03
общий
тут нужны госты. Все госты на программную документацию довольно устарели. Хотя может есть новые... но вот что яндекс даёт http://yandex.ru/yandsearch?text=%D0%B5%D1%81%D0%BF%D0%B4+%D1%81%D0%BA%D0%B0%D1%87%D0%B0%D1%82%D1%8C&clid=14585&lr=194
Но тут действительно ни сами преподы не студенты не знают, что конкретно имеестя ввиду в гостах. Мой совет, открывай гост и пиши так как тебе кажется правильным. Мы как-то делали такие задания в уневере, и в этом отчете по госту было в каждах разделах похожее, но разными словами)))
Неизвестный
02.02.2010, 00:08
общий
а можете помочь мне с написанием программы и ее формализаций (если честно плохо разбираюсь нужно обьяснение )

Неизвестный
02.02.2010, 00:13
общий
вот есть стандарт я его выложила тут http://depositfiles.com/files/gdqwt753p
Неизвестный
02.02.2010, 00:36
общий
Если бы мне тут платили за это, я бы решил задачу, она не очень сложная, хотя тут надо учитывать движение как минутной так и часовой стрелки (я пока всего навсего второклассник и мне не платят). Но с оформлением отчета - это вообще сложновато. Проси модераторов, пусть тебе помагают, раз ты заплатил.
Неизвестный
02.02.2010, 11:56
общий
Ну, не легче стало .... А что такое "формализация"? "Повезло" Вам ...
давно
Старший Модератор
31795
6196
02.02.2010, 13:50
общий
luba tixomirova:
Сама программа:
Код:
var
m,h:integer;
am,ah:integer;
c:integer;
begin
{вводим часы}
repeat
write('Enter h:');{выводим сообщение}
readln(h);{вводим часы}
until (h>=0)and(h<12);{проверяем правильность ввода}
{вводим минуты}
repeat
write('Enter m:');{выводим сообщение}
readln(m);{вводим минуты}
until (m>=0)and(m<60);{проверяем правильность ввода}
c:=0;{сбрасываем счетчик}
repeat
am:=m*6;{считаем угол минутной стрелки}
ah:=h*30+round(int(m*30/60));{считаем угол часовой стрелки}
h:=(h + ((m+1) div 60))mod 12;{увеличиваем часы}
m:=(m + 1)mod 60;{увеличиваем минуты}
inc(c);{увеличиваем счетчик}
until abs(am-ah)<4;{пока не будет совпадения}
write('Result :',c:5,h:5,':',m:2);{выводим результат}
Readln;
end.

Последние ГОСТы
Честно сказать я незнаю что Вам нужно конкретно, т.к. файлообменники мне не доступны.
Вы можете выложить этот файл на портале. Главная страница, левая панель, кнопка "Мои файлы".
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
02.02.2010, 14:25
общий
это ответ
Здравствуйте, luba tixomirova.
Могу предложить код программы с моими размышлениями по этому поводу.


Приложение:
{
Задание:
Ввести два целых числа: 0 <= m <=60? 0 <=h <=12,
описывающий момент времени, когда “h часов m минут”.
Определить наименьшее число полных минут, которое должно пройти до того момента,
когда часовая и минутная стрелка на циферблате совпадут на каком-либо делении.

Замечания:
Строго говоря, задание сформулировано неоднозначно.
Если принимать во внимание, что деления на циферблате обычно обозначают минуты,
часовая стрелка движется непрерывно, а минутная может двигаться непрерывно или
скачками (по минутам), то единственное место, где они "совпадут на каком-либо
делении" будет 00:00 (12:00).
В такой формулировке задача банальна и не представляет интереса.
Для определенности будем считать, что минутная стрелка движется непрерывно и
требуется узнать наименьшее число полных минут, которые необходимы для того,
чтобы стрелки "совпали". Максимальное значение минут, необходимых для этого
будет проходить с того момента, как стрелки уже находятся в "совпавшем" положении.
Искомое "наименьшее" число полных минут будет находиться в пределах 0 < result <= 65.
}
Uses
Crt;
Const
MinValue = 0;
MaxHour = 23;
MaxMinute = 59;
VMinute = 6; { Скорость минутной стрелки (градусов/минуту)}
VHour = 0.5; { Скорость часовой стрелки (градусов/минуту)}
Var
h, m, result: Byte;

function InitValue (max: Byte): Byte;
var
result: Byte;
begin
repeat
Write(' (0-', max, '): ');
ReadLn(result);
until ((result >= 0) and (result <= max));
InitValue := result;
end;

procedure Solve;
var
hg, mg, _g, _m: Integer;
begin
{Выяснить положение (в градусах) часовой стрелки можно так}
hg := Round(((h mod 12) * 60 + m) * VHour);
{а минутной - так}
mg := Round(m * VMinute);
{Уточнили разницу (в градусах) между стартовыми положениями стрелок}
_g := 360 + hg - mg;
if (_g > 360) then
_g := _g mod 360;
{Собственно получение результата}
result := Trunc(_g / (VMinute - VHour));
WriteLn('До момента совпадения стрелок пройдет ', result, ' полных минут.');
end;

begin
ClrScr;
Write('Введите значение h');
h := InitValue(MaxHour);
Write('Введите значение m');
m := InitValue(MaxMinute);
Solve;
repeat until keypressed;
end.
Неизвестный
02.02.2010, 16:17
общий
luba tixomirova:
Добрый день! Нужен образец, как принято у Вас. Если оформлять жестко по ГОСТ даже в урезанном варианте, будет не один десяток страниц.
давно
Мастер-Эксперт
680
2811
02.02.2010, 16:40
общий
riaman:
Если бы мне тут платили за это, я бы решил задачу
- это вообще-то смахивает на вымогательство. Тем более что человек уже заплатил.
Задачки решать надо, независимо от того, сколько сейчас за них Вам отчисляет портал. Вы же получаете за каждое решение баллы, не решаете - не получаете. Чем больше Вы решаете, тем быстрее растете, тем большие денежные отчисления от вопроса получаете. Кроме того, Вас могут поблагодарить и лично, любой спрашивающий имеет такую возможность (если захочет, конечно). Все это учитывается системой и влияет на Ваше положение на портале. А просто так здесь сидеть смысла нет. Сам собой статус не растет, а без него Вам никто платить не будет.
Кроме того, наша система предоплаты дает хотя и небольшой (пока), но гарантированный доход, и без обмана со стороны заказчика (который может пообещать оплату, но чаще всего не платит и исчезает в неизвестном направлении - мы отслеживаем деятельность порталов, которые работают по такой системе, поэтому и выбрали другую, более надежную).
Неизвестный
02.02.2010, 20:19
общий
Зенченко Константин Николаевич:
Вот я скинула ГОСт https://rfpro.ru/upload/1497 нужно по нему оформить моё задание ,,,
Неизвестный
03.02.2010, 07:52
общий
Уважаемые мои эксперты можно ли мне ждать помощи от вас ???(((
Неизвестный
03.02.2010, 10:48
общий
Оформлять по ГОСТам это дело не одного часа. За 45 рублей мало кто возьмётся за такую работу. Только истинные фанаты форума, которые располагают временем и желанием. Может есть такие. Программу вам написали - вот это тянет на 45 руб. Так что госты в руки и вперед описывать, как понимаете, заодно и разберётесь в программе. А вообще, администрация сказала, что такие объёмные задания, лучше оставлять в решебнике. Советую написать личное сообщение Калашников О.А. (куратору раздела) и посоветоваться с ним, может что подскажет.
давно
Академик
320937
2216
03.02.2010, 13:26
общий
luba tixomirova:
Здесь я выложил примерный образец курсового с оформлением. В таком виде устроит? Kursovoi.zip (425.1 кб) Ваша задача, конечно, проще, поэтому у Вас объем существенно меньше.
давно
Старший Модератор
31795
6196
03.02.2010, 13:35
общий
luba tixomirova:
Тот ГОСт, который Вы дали, это только оформление листа утверждения и титульного листа.
Думаю У Вас с ним проблем быть не должно.

Вот только они заполняются в самую послуднюю очередь, когда полностью готова сама работа и известно количество листов.
Берете форму:

И заполняете поля(в соответсвии коментариев):
2. ОСНОВНЫЕ НАДПИСИ ЛИСТА УТВЕРЖДЕНИЯ (ЛУ)
поле 1 - наименование министерства или ведомства, в систему которого входит организация, разработавшая данный документ.
Заполняют по требованию заказчика.
Выше поля 1, в правом верхнем углу, при необходимости ставится специальная отметка (гриф секретности, указание “С предприятия не выносить” и т.п.);
• поле 2 - в левой части поля - должности и подписи лиц, согласовавших документ от организации заказчика при необходимости, в правой части поля - должности и подписи лиц, утвердивших документ от организации разработчика.
Справа от каждой подписи проставляют инициалы и фамилию лица, подписавшего документ, а ниже подписи - дату подписания.
Согласующие и утверждающие организации, а также конкретные подписи должностных лиц регламентируют министерства и ведомства;
• поле 3 - полное наименование программы или программного изделия (прописными буквами), наименование и вид документа.
Наименование документа может быть опущено или объединено с наименованием программы;
• поле 4 - обозначение документа и указание вида носителя данных.
Вид носителя данных указывают только в случае выполнения документа на носителе данных;
• поле 5 - общее количество листов утверждения, например, “Листов 3”. Для одного листа поле 5 не заполняют;
• поле 6 - в правой части поля - должности и подписи руководителя организации, выпустившей документ, руководителя подразделения, разработавшего документ, руководителя разработки (разработчика), исполнителей разработки документа и нормоконтролёра.
Справа от каждой подписи проставляют инициалы и фамилию лица, подписавшего документ, а ниже подписи - дату подписания.
При большом количестве согласующих подписей их размещают либо в левой части поля 2, либо в левой части поля 6.
Визы других должностных лиц, если они необходимы на документе, размещают на поле для подшивки ЛУ;
• поле 7 - год издания (утверждения) документа (без указания слова “год” или “г”);
• поле 8 - отметка об учёте и хранении по ГОСТ 19.601-78;
• поле 9 - строка изменений по ГОСТ 19.604-78;
• поле 10 - литера документа.
Пример заполнения ЛУ приведён в справочном приложении 2.

Количество подписей в приложении приведено условно.
3. ОСНОВНЫЕ НАДПИСИ ТИТУЛЬНОГО ЛИСТА
3.1. Титульный лист заполняют по форме и правилам, установленным для ЛУ, при этом:
• поле 1 - заполняют по требованию заказчика;
• поле 2 - не заполняют;
• поле 3 - полное наименование программы или программного изделия (прописными буквами), наименование и вид документа.
Наименование документа может быть опущено или объединено с наименованием продукта. Допускается указывать сокращённое наименование программы или программного изделия;
• поле 4 - обозначение документа и указание вида носителя данных.
Вид носителя данных указывают только в случае выполнения программного документа на носителе данных;
• поле 5 - указывают объём документа;
• поле 6- не заполняют;
• поле 7 - год издания (утверждения) документа (без указания слова “год” или “г”);
• поле 8 - отметка об учёте и хранении по ГОСТ 19.601-78;
• поле 9 - строка изменений по ГОСТ 19604-78;
• поле 10 - литера документа.
3.2. На титульном листе в левом верхнем углу должна быть надпись:
Утвержден
----------------------
обозначение ЛУ
Пример заполнения титульного листа приведён в справочном приложении 3.

Обратите внимание на выделеные строчки.
ГОСты: Единая система программной документации, пройдите по ссылке, там есть полностью все необходимые Вам документы.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
03.02.2010, 18:28
общий
lamed:
да такое оформление устраивае...Вы поможете мне ???


давно
Академик
320937
2216
03.02.2010, 19:40
общий
luba tixomirova:
Добрый вечер! Помогу. Могу начать только в воскресенье вечером, соответственно, в понедельник после 14-00.
Неизвестный
03.02.2010, 23:24
общий
lamed:
Ну хорошо ,,,заранее огромное спасибо буду ждать до понедельника


Неизвестный
07.02.2010, 20:32
общий
lamed:
Ну что с моим заданием???завтра будет готово??
давно
Академик
320937
2216
08.02.2010, 11:00
общий
luba tixomirova:
Добрый день!
1.В ТЗ есть ошибка, должно быть 0<=h<12, 0<=m<60. Не бывает 11 часов 60 минут, и нет смысла указывать 12 часов 23 минут, тогда уж надо было написать 0<=h<24!
2.Выкладываю исходник и теорию сюда, пока оформляю блок-схему, описание и тесты. Если кто-то заметит ошибку - напишите, пожалуйста, личное сообщение, так как только эти сообщения приходят на мобильный.

Постановка задачи.
Код:

Прежде всего, необходимо отметить, что в задаче принят интервал от полуночи до полудня, то есть от 0 часов 0 минут до 11 часов 59 минут.
За один оборот (60 делений) минутной стрелки часовая стрелка перемещается на 1 часовое деление, то есть на 5 минутных делений.
Таким образом, за число минут m, прошедшее от 0, часовая стрелка переместится на m/12 делений.
С другой стороны, рассмотрим, на сколько делений от нулевого будет смещена минутная стрелка. При этом считаем, что перемещение, например, на 65 делений приведет к тому, что минутная стрелка будет смещена на 65-60=5 делений от нуля.
Задача заключается в том, чтобы найти все такие возможные положения, где часовая и минутная стрелки совпадают. Для этого достаточно решить уравнение
m/12=m-h*60 (1),
где h =0,1,2,..11 – число полных часов, считая от полуночи.
После преобразования получаем 11*m/12=h*60,
m=720*h/11 (2).
Как мы видим, уравнение (2) имеет только одно целочисленное решение, при h=0 (или h=11), что, по сути, означает то же самое, так как при h=11, m=720, то есть полдень.
Уточним постановку задачи. Будем искать любое ближнее (не обязательно на минутном делении) совпадение часовой и минутной стрелок.
Для этого разделим задачу на части.
1.По заданному времени в часах и минутах вычисляем количество минут от полуночи по формуле
mполн=m+h*60 (3)
2.Находим целое число часов совпадения, следующее за текущим временем по формуле
hсовп=[ mполн *11/720]+ (4)
Здесь []+ означает округление с избытком.
3.Находим число минут от полуночи до пересечения стрелок при найденном числе часов
mсовп=[720*hсовп/11]- (5)
Здесь []- означает округление с недостатком.
4.Вычисляем разность
dm = mсовп -m (6).
Примеры расчета.
Пример I.
Заданное время. 01.05
1.m=1*60+5=65
2.h’=[65*11/720]+=[0.99]+=1
3.m’=[720*1/11]-=[65.4]-=65
4.dm=65-65=0
Пример II.
Заданное время. 01.06
1.m=1*60+5=66
2.h’=[66*11/720]+=[1.008]+=2
3.m’=[720*2/11]-=[130.9]-=130
4.dm=130-66=64
Пример III.
Заданное время. 00.00
1.m=0*60+0=0
2.h’=[0*11/720]+=[0]+=0
3.m’=[720*0/11]-=[0]-=0
4.dm=0-0=0
Пример IV.
Заданное время. 11.59
1.m=11*60+59=719
2.h’=[719*11/720]+=[10.98]+=11
3.m’=[720*11/11]-=[720]-=720
4.dm=720-719=719


Программа
Код:

program Strelki;
(*
mполн=m+h*60
hсовп=[mполн*11/720]+
mсовп=[720*hсовп/11]-
dm = mсовп-mполн
*)
type
TErrLevel = 0..3;
{ тип ошибки
0 - нет ошибки,
1 - неверные часы,
2 - неверные минуты,
3 - неверные часы и минуты }
var
h : integer; { данное число часов }
m : integer; { данное число минут }
InputError: TErrLevel; { уровень ошибки }

function ceil(a: real): integer;
{ возвращает целое, не меньшее заданного вещественного }
{ применимо: a>=0, a<MaxInt }
var
inta : integer;
begin
inta := trunc(a); { отбрасываем дробную часть }
if inta<a then { если дробная часть была }
ceil:= inta+1
else
ceil:= inta;
end; { ceil }

function MinDoSovp(h,m: integer): integer;
{ минут от заданного времени до совпадения }
var
k : real; { коэффициент перевода, k=720/11 }
mpoln: integer; { число минут от полуночи до заданного времени }
hsovp: integer; { число часов от полуночи до ближайшего следующего совпадения }
msovp: integer; { число минут от полуночи до ближайшего следующего совпадения стрелок }
begin
k:= 720/11;
mpoln := m+h*60;
hsovp := ceil(mpoln/k);
msovp := trunc(hsovp*k);
MinDoSovp := msovp-mpoln;
end; { MinDoSovp }

procedure vvod(var h,m: integer; var ErrLevel: TErrLevel);
{ ввод часов и минут, запись уровня ошибки }
begin
write('h=');
readln(h);

write('m=');
readln(m);

ErrLevel := 0;
if not (h in [0..11]) then
ErrLevel := ErrLevel+1;
if not (m in [0..59]) then
ErrLevel := ErrLevel+2;
end; { vvod }

procedure ErrMsg(ErrLevel: TErrLevel);
{ печать сообщения об ошибке }
const
Msg1 = 'Неверный ввод часов';
Msg2 = 'Неверный ввод минут';
Msg99 = 'Неопознанная ошибка';
begin
case ErrLevel of
0:;
1: writeln(Msg1);
2: writeln(Msg2);
3:
begin
writeln(Msg1);
writeln(Msg2);
end;
else
writeln(Msg99);
end;
end; { ErrMsg }

begin { основной блок }
vvod(h,m, InputError);
if InputError>0 then { если ошибка ввода }
ErrMsg(InputError)
else
writeln('С заданного времени до совпадения стрелок пройдет ', MinDoSovp(h,m), ' мин.');
readln;
end.

давно
Академик
320937
2216
08.02.2010, 14:35
общий
это ответ
Здравствуйте, luba tixomirova. Текст программы в приложении, TurboPascal 7.
Полный проект здесь176438.ZIP (46.8 кб)
Удачи!

Приложение:
program Strelki;
(*
mполн=m+h*60
hсовп=[mполн*11/720]+
mсовп=[720*hсовп/11]-
dm = mсовп-mполн
*)
type
TErrLevel = 0..3;
{ тип ошибки
0 - нет ошибки,
1 - неверные часы,
2 - неверные минуты,
3 - неверные часы и минуты }
var
h : integer; { данное число часов }
m : integer; { данное число минут }
InputError: TErrLevel; { уровень ошибки }

function ceil(a: real): integer;
{ возвращает целое, не меньшее заданного вещественного }
{ применимо: a>=0, a<MaxInt }
var
inta : integer;
begin
inta := trunc(a); { отбрасываем дробную часть }
if inta<a then { если дробная часть была }
ceil:= inta+1
else
ceil:= inta;
end; { ceil }

function MinDoSovp(h,m: integer): integer;
{ минут от заданного времени до совпадения }
var
k : real; { коэффициент перевода, k=720/11 }
mpoln: integer; { число минут от полуночи до заданного времени }
hsovp: integer; { число часов от полуночи до ближайшего следующего совпадения }
msovp: integer; { число минут от полуночи до ближайшего следующего совпадения стрелок }
begin
k:= 720/11;
mpoln := m+h*60;
hsovp := ceil(mpoln/k);
msovp := trunc(hsovp*k);
MinDoSovp := msovp-mpoln;
end; { MinDoSovp }

procedure vvod(var h,m: integer; var ErrLevel: TErrLevel);
{ ввод часов и минут, запись уровня ошибки }
begin
write('h=');
readln(h);

write('m=');
readln(m);

ErrLevel := 0;
if not (h in [0..11]) then
ErrLevel := ErrLevel+1;
if not (m in [0..59]) then
ErrLevel := ErrLevel+2;
end; { vvod }

procedure ErrMsg(ErrLevel: TErrLevel);
{ печать сообщения об ошибке }
const
Msg1 = 'Неверный ввод часов';
Msg2 = 'Неверный ввод минут';
Msg99 = 'Неопознанная ошибка';
begin
case ErrLevel of
0:;
1: writeln(Msg1);
2: writeln(Msg2);
3:
begin
writeln(Msg1);
writeln(Msg2);
end;
else
writeln(Msg99);
end;
end; { ErrMsg }

begin { основной блок }
vvod(h,m, InputError);
if InputError>0 then { если ошибка ввода }
ErrMsg(InputError)
else
writeln('С заданного времени до совпадения стрелок пройдет ', MinDoSovp(h,m), ' мин.');
readln;
end.
Форма ответа