Число операторов в программе это

Есть такое задание:
1) Составить процедуру подсчета и печати количества групп операторов заключенных в скобки «begin . end» в исходном массиве строк
2) Составить функцию возвращающую количество символов «;» в строке.

Вопрос исключительно по первому, как это возможно реализовать?
Как определить что слово является оператором?
Я в Паскале новичек, и пишу опираясь на знания php =)
На данный момент у меня написано:

uses CRT; var n,i:integer; f:text; s:string; begin clrscr; n:=0; assign(f,’d:1.txt’); reset (f); while not eof(f) do begin readln(f,s); for i:=1 to length(s) do if s[i]=’;’ then n:=n+1; writeln(s); end; writeln(n); close (f); readln end.
Регистрация: 09.01.2008
Сообщений: 26,238

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

Но, скорее всего (особенно с учётом задания №2), вам достаточно посчитать, сколько раз встретилась точка с запятой между begin . end. Отдельно учесть наличие точки с запятой после последнего оператора (перед крайним END).

Операторы. Арифметические операции с числами. C++ для начинающих. Урок #8.


и всё решение!

Регистрация: 02.05.2012
Сообщений: 6

Если я правильно понял, то если встречается «;», то можно считать что присутствует оператор, так?

А вот на счет «end;» можно поподробнее?

Регистрация: 09.01.2008
Сообщений: 26,238

Если я правильно понял, то если встречается «;», то можно считать что присутствует оператор, так?
А вот на счет «end;» можно поподробнее?

наоборот, речь про случай

begin . оператор end

если посчитать точки с запятой — то получится, что операторов нет.
бороться с этим явлением можно двумя способами.
первый. простейший.
считаем количество ;,
количество операторов := кол_во_точек_с_запятой + 1
в этом случае, если перед END стоит оператор, а после него есть точка с запятой, то эта точка с запятой означает наличие ЕЩЁ одного оператора (напоминаю, что в Паскаль допускается наличие ПУСТЫХ операторов!)

второй способ.
учитывать случай с наличием/отсутствием точки с запятой после последнего оператора отдельно. учитывать так — перебираем символы в обратном порядке от конечного END — если нашли точку с запятой — то считаем, что количество операторов РАВНО количеству точек с запятой, если НЕ НАШЛИ точку с запятой (встретился ЛЮБОЙ другой символ, отличный от табуляции/перевода строки) — то считаем, что количество операторов РАВНО количеству точек с запятой ПЛЮС ОДИН.

и ещё, решите для себя, сколько операторов содержит такая конструкция

begin end

ну и ещё. обязательно учтите момент наличия (возможности) комментариев в коде.

Операторы JAVASCRIPT. «2»+2=22. Уроки JAVASCRIPT с нуля 2020


Нужно или декларировать, что их запрещено использовать,
или, если они допускаются, тогда обрабатывать отдельно (я бы удалял из текста все комментарии, чтобы они не мешали подсчётам).

Источник: www.programmersforum.ru

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

Всем привет. Нужно реализовать разбор кода С# по метрике Холстеда. Собственно, необходимо найти все операторы и операнды программы. Возникает такой вопрос: сколько в данном куске кода операторов и операндов:

Читайте также:
Программа сколько не курил

Cells = new ObservableCollection(); var cell = new Cell < Text = string.Format(«», i) >;
Также интересует следующее: являются ли операторами агрументы цикла for?
for (var col = 0; col < 4; col++)
Возможно, глупый вопрос, но почему-то поставил меня в тупик.
Отслеживать
31.8k 19 19 золотых знаков 79 79 серебряных знаков 105 105 бронзовых знаков
задан 9 окт 2014 в 19:48

Eugene Shilin Eugene Shilin
297 1 1 золотой знак 7 7 серебряных знаков 22 22 бронзовых знака

Вам надо написать всего-навсего парсер C#. Это не так уж и сложно, но поработать придётся. В C# нет общепринятого понятия «оператора» и «операнда», так что вам придётся посмотреть в определение метрики Холстеда.

9 окт 2014 в 19:55

Информация с Хабра: «..К метрикам основанных на подсчете некоторых единиц в коде программы, относят метрики Холстеда. Данные метрики основаны на следующих показателях: n1 — число уникальных операторов программы, включая символы- разделители, имена процедур и знаки операций (словарь операторов), n2 — число уникальных операндов программы (словарь операндов), N1 — общее число операторов в программе, N2 — общее число операндов в программе, n1′ — теоретическое число уникальных операторов, n2′ — теоретическое число уникальных операндов.» Как быть?

9 окт 2014 в 19:59

Ох уж эти любители строгих классификаций. В самом деле как-то не все тут однозначно. — Рассмотрим for (. ) . С одной стороны понятно: Само слово for — оператор. Его операндами являются список выражений и тело цикла (тут не приведено, обычно его тоже относят к операторам, но здесь по идее он д.б. операндом).

Список выражений — это операнд, состоящий из элементов списка, которые тоже являются операндами. Разделители ; это операции. И т.д. рекурсивно. А вопрос (неоднозначность) в том, включать ли в число операндов (при подсчете for ) и сам список, или только его элементы?

9 окт 2014 в 21:20

С циклом for все, допустим, понятно. За это спасибо. Так сколько операторов и операндов в куске кода, о котором я писал? ____ Всё еще актуально!

10 окт 2014 в 4:30
10 окт 2014 в 20:53

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

При расчете метрики Холстеда используются следующие операнды:

Идентификаторы – все идентификаторы, которые не являются зарезервированными словами.

Идентификаторы типов  — зарезервированные слова, обозначающие тип данных: bool , char , double , float , int , long , short , signed , unsigned , void .

Константы — числовые, символьные, строковые.

Ключевые слова следующих категорий, которые интерпретируются как операторы:

Идентификаторы класса памяти: inline , register , static , typedef , virtual , mutable .
Квалификаторы типа: const , friend , volatile .
Зарезервированные слова: asm , break , case , class , continue , default , delete , do , else , enum , for , goto , if , new , operator , private , protected , public , return , sizeof , struct , switch , this , union , while , namespace , using , try , catch , throw , const_cast , static_cast , dynamic_cast , reinterpret_cast , typeid , template , explicit , true , false , typename .

Читайте также:
Как узнать свой процессор программа

Операторы языка программирования: ! != % %= = ( ) * *= + ++ += и т.д.

Следующие управляющие структуры: for(…) , if (…) , switch (…) , while for (…) and catch (. ) интерпретируются как один оператор.

Из приведенного кода cell и i операнды.

Все остальное операторы.

Источник: ru.stackoverflow.com

Определение трудоемкости разработки алгоритма ПП

Трудоемкость создания ПП определяется укрупненным методом:

(3.3)

где — трудоемкость подготовки описания задачи и исследования алгоритма решения,

— трудоемкость разработки блок-схемы алгоритма,

— трудоемкость программирования по готовой блок-схеме,

-трудоемкость отладки программы на ЭВМ,

— трудоемкость подготовки документации по задаче в рукописи,

— трудоемкость редактирования, печати и оформления документации по задаче.

Составляющие приведенной формулы определяются, в свою очередь, через условное число операторов Q в разрабатываемом ПП по формуле:

, (3.4)

где q — число операторов в программе,

С — коэффициент сложности программы,

p — коэффициент коррекции программы в ходе ее разработки.

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

Коэффициент коррекции программ p характеризует увеличение объема работ за счет внесения изменений в алгоритм и программу, изменения состава и структуры информации, а также уточнений, вносимых разработчиком программы для улучшения ее качества без изменения постановки задачи. Значение p может быть принято равным 0,15. 0,5.

Q = 128 * 1 * (1 + 0,3) = 166,4 опер.

Составляющие трудоемкости разработки программы определятся по формулам (3.3) – (3.8).

, (3.5)

, (3.6)

, (3.7)

, (3.8)

, (3.9)

. (3.10)

где W — коэффициент увеличения затрат труда вследствие недостаточного или некачественного описания задачи (W = 1,2. 1,5),

К — коэффициент квалификации разработчика алгоритмов и программ (при стаже работы до двух лет К=0,8, при стаже от двух до трех лет К=1,0, при стаже от трех до пяти лет К=1,1. 1,2 ,при стаже от пяти до семи лет К=1,3. 1,4 , при стаже свыше семи лет К= 1,5. 1,6.).

Примем W = 1,4; K = 0,8.

Трудоемкость разработки ПП:

3.2.2 Определение себестоимости создания ПП

Для определения себестоимости создания программного продукта необходимо определить затраты на заработную плату разработчика по формуле:

, (3.11)

где — трудоемкость разработки программного продукта, чел-ч.,

— среднечасовая ставка работника, осуществлявшего разработку программного продукта, руб,

— коэффициент, учитывающий процент премий в организации-разработчике (принят 0,4),

— коэффициент, учитывающий дополнительную заработную плату (принят 0,15),

— коэффициент, учитывающий отчисления от фонда заработной платы (отчисления в фонд социальной защиты населения и отчисления на обязательное медицинское страхование от несчастных случаев); (принят 0,346).

Среднечасовая ставка работника определяется исходя из Единой тарифной системы оплаты труда в Республике Беларусь по следующей формуле:

, (3.12)

где — среднемесячная заработная плата работника 1 разряда (принята 292 000 руб),

— тарифный коэффициент работника соответствующего разряда (принят 3,54),

170 – среднее нормативное количество рабочих часов в месяце для 2015 года.

tчр =

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

Читайте также:
Как напечатать программу на компьютер

Затраты на отладку программы определяются по формуле:

, (3.13)

где — трудоемкость отладки программы, час,

— стоимость машиночаса работы ЭВМ, руб/час.

Количество символов в написанной программе составляет 1 536. Выполнение отладки осуществляется со скоростью 30 символов в минуту. Отсюда,

минуты = 0,85 часа.

Стоимость машиночаса работы ЭВМ определяется по формуле:

, (3.14)

где — расходы на электроэнергию за час работы ЭВМ, руб,

— годовая величина амортизационных отчислений на реновацию ЭВМ,

— годовые затраты на ремонт и техническое обслуживание ЭВМ, руб,

— годовая величина амортизационных отчислений на реновацию производственных площадей, занимаемых ЭВМ, руб,

— годовая величина арендных платежей за помещение, занимаемое ЭВМ, руб,

— годовой фонд времени работы ЭВМ, час.

Расходы на электроэнергию за час работы ЭВМ определяются по формуле:

, (3.15)

где — стоимость 1 кВт-часа электроэнергии, руб (принята 1779,6 руб.),

— среднечасовое потребление электроэнергии ЭВМ, кВт (принято 0,6).

Годовая величина амортизационных отчислений на реновацию ЭВМ определяется по формуле:

(3.16)

где — цена ЭВМ на момент ее выпуска, руб (5 000 000 руб.),

— коэффициент удорожания ЭВМ (зависит от года выпуска) (В том случае, когда в качестве цены используется цена текущего года, коэффициент удорожания =1),

— коэффициент, учитывающий затраты на монтаж и транспортировку ЭВМ ( = 1,05),

— норма амортизационных отчислений на ЭВМ, % ( =10%),

— балансовая стоимость ЭВМ, руб.

руб.

Годовые затраты на ремонт и техническое обслуживание ЭВМ укрупненно могут быть определены по формуле:

, (3.17)

где — коэффициент, учитывающий затраты на ремонт и техническое обслуживание ЭВМ, в том числе затраты на запчасти, зарплату ремонтного персонала и др. ( = 0,13).

руб.

Годовая величина амортизационных отчислений на реновацию производственных площадей, занятых ЭВМ определяется по формуле:

, (3.18)

где — балансовая стоимость площадей, руб,

— норма амортизационных отчислений на производственные площади, % ( =1,2%),

— площадь, занимаемая ЭВМ, м 2 (принята 1 м 2 ),

— коэффициент, учитывающий дополнительную площадь (kд = 3),

— цена 1 квадратного метра производственной площади, руб. (принята 3 500 000 руб.).

Тогда балансовая стоимость в этом случае составит

руб.

, (3.19)

где — коэффициент, учитывающий затраты на ремонт и эксплуатацию производственных площадей ( = 0,05).

Годовая величина арендных платежей за помещение, занимаемое ЭВМ, рассчитывается по формуле:

, (3.20)

где — площадь, занимаемая ЭВМ, м 2 (принята 1,5 м 2 ),

— коэффициент, учитывающий дополнительную площадь ( = 3),

— ставка арендных платежей за помещение (принята 120 000 руб.),

– коэффициент комфортности помещения (принят 0,75),

– повышающий коэффициент, учитывающий географическое размещение площади (принят 0,85).

Годовой фонд времени работы ЭВМ определяется исходя из режима ее работы и может быть рассчитан по формуле:

(3.21)

где — среднесуточная фактическая загрузка ЭВМ, час (принята 8 часов),

— среднее количество дней работы ЭВМ в год (принято 250 дней).

ч.

руб.

Себестоимость разработки ПП определяется по формуле:

, (3.22)

где — коэффициент накладных расходов проектной организации без учета эксплуатации ЭВМ (принят 1,2).

Источник: megaobuchalka.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru