Самая трудная программа в паскале

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

Метрики сложности программ принято подразделять на три основные группы [2]:

— метрики размера программ;

— метрики сложности потока управления программ;

— метрики сложности потока данных программ.

Метрики размера программ

Метрики этой группы основаны на анализе исходных текстов программ.

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

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

Из метрик размера программ широкое распространение получили метрики Холстеда [3].

Основу метрик Холстеда составляют шесть базовых метрик программы:

— h1 – словарь операторов (число уникальных операторов программы);

Операционные системы написанные на Pascal, Delphi, Lazarus IDE, FreePascal, Turbo Pascal, Modula-2

— h2 – словарь операндов (число уникальных операндов программы);

— N1 – общее число операторов в программе;

— N2 – общее число операндов в программе;

— f1j – число вхождений j-го оператора, j = 1, 2, …, h1;

— f2i – число вхождений i-го операнда, i = 1, 2, …, h2.

Справедливы следующие соотношения:

Базовые метрики определяются непосредственно при анализе исходных текстов программ. На основе базовых метрик Холстед предложил рассчитывать ряд производных метрик программы. Среди них рассмотрим следующие:

— словарь программы (общее число уникальных операторов и операндов программы):

— длина программы (общее количество операторов и операндов программы):

— объем программы (число битов, т.е. логических единиц информации, необходимых для записи программы):

Операнды программы представляют собой используемые в ней переменные и константы.

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

Читайте также:
На какой программе стирать кеды

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

Метки не относятся ни к операторам, ни к операндам.

Очевидно, что совокупность операторов программы и их количество зависят от языка программирования, на котором написана программа.

Операторы языка Паскаль в интерпретации Холстеда приведены в табл. 1.

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

Операторы языка Паскаль в интерпретации Холстеда

Обозначение оператора Назначение оператора
+ плюс (сложение, объединение множеств, сцепление строк)
минус (изменение знака, вычитание, разность множеств)
* звездочка (умножение, пересечение множеств)
/ наклонная черта, слэш (знак деления, результат всегда имеет вещественный тип)
Меньше
> Больше
= Равно
. точка (признак конца программы и модуля)
; точка с запятой (разделитель операторов программы)
( ) левая и правая скобки при выделении подвыражений
меньше или равно
>= больше или равно
<> не равно
:= операция присваивания
^ знак карата (обращение к динамической переменной)
And операция поразрядного логического сложения (И)
Not операция поразрядного дополнения (НЕ)
Or операция поразрядного логического сложения (ИЛИ)
Xor операция поразрядного логического исключающего ИЛИ
Div целочисленное деление
Mod остаток от целочисленного деления
Shl операция сдвига влево
Shr операция сдвига вправо
In операция проверки вхождения элемента в множество
Begin… End составной оператор
Break оператор безусловного выхода из цикла
Continue оператор передачи управления на конец тела цикла
Goto оператор безусловного перехода
Case… Of… Else… End оператор варианта
If… Then… Else оператор условного перехода
Repeat… Until оператор цикла с постусловием
While… Do оператор цикла с предусловием
For… To… Do оператор цикла с параметром (с увеличением параметра)
For… Downto… Do оператор цикла с параметром (с уменьшением параметра)
With… Do оператор присоединения

МОЯ ПЕРВАЯ ИГРА!(и она на языке Pascal ABC) «Hit the Casino».

Пример 1. Расчет метрик Холстеда для программы, вычисляющей значение функции

Y = sin X

через разложение функции в бесконечный ряд

с точностью Eps = 0,0001.

Текст программы, написанной на языке Паскаль, приведен ниже.

Program Sin1;

y, x: real; n: integer; vs: real;

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

Repeat

vs := – vs * x * x / (2 * n – 1) / (2 * n –2);

Until abs( vs) < eps;

Writeln (x, y, eps);

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

Расчет базовых метрик Холстеда для программы, вычисляющей значение функции Y = sin X

j Оператор f1j i Операнд f2i
1. ; 7 1. x 6
2. := 6 2. n 5
3. * 4 3. vs 5
4. 3 4. y 4
5. / 2 5. 2 4
6. ( ) 2 6. 1 2
7. + 2 7. eps 2
8. Begin…End 1
9. Readln ( ) 1
10. Repeat…Until 1
11. abs( ) 1
12. 1
13. Writeln ( ) 1
14. . 1
h1 = 14 N1 = 33 h2 = 7 N2 = 28

Словарь программы h =14 + 7 = 21.

Длина программы N = 33 + 28 = 61.

Объем программы V =

Дата добавления: 2019-11-16 ; просмотров: 2508 ; Мы поможем в написании вашей работы!

Источник: studopedia.net

1 Программирование на языке Паскаль Сложные условия. — презентация

Презентация на тему: » 1 Программирование на языке Паскаль Сложные условия.» — Транскрипт:

1 1 Программирование на языке Паскаль Сложные условия

2 2 Задача. Фирма набирает сотрудников от 25 до 40 лет включительно. Ввести возраст человека и определить, подходит ли он фирме (вывести ответ «подходит» или «не подходит»). Особенность: надо проверить, выполняются ли два условия одновременно. Можно ли решить известными методами? ?

3 3 Вариант 1. Алгоритм начало ввод x ‘подходит’ конец да нет x >= 25? да нет x

4 4 Вариант 1. Программа program qq; var x: integer; begin writeln(‘Введите возраст’); read ( x ); if x >= 25 then if x

5 5 Вариант 2. Алгоритм начало ввод x ‘подходит’ да нет x >= 25 и x

6 6 Вариант 2. Программа сложное условие program qq; var x: integer; begin writeln(‘Введите возраст’); read ( x ); if (x >= 25) and (x

7 7 Сложные условия Сложное условие – это условие, состоящее из нескольких простых условий (отношений), связанных с помощью логических операций: not – НЕ (отрицание, инверсия) and – И (логическое умножение, конъюнкция, одновременное выполнение условий) or – ИЛИ (логическое сложение, дизъюнкция, выполнение хотя бы одного из условий) xor – исключающее ИЛИ (выполнение только одного из двух условий, но не обоих) Простые условия (отношения) >= = равно не равно

8 8 Сложные условия Порядок выполнения выражения в скобках not and or, xor, >=, =, Особенность – каждое из простых условий обязательно заключать в скобки. Пример if not (a > b) or (c d) and (b a) then begin. end if not (a > b) or (c d) and (b a) then begin. end

Читайте также:
Сбис как работает программа подробно

9 9 Истинно или ложно при a := 2; b := 3; c := 4; not (a > b) (a = b) or (c = d) (a 6) and (x 6) and (x > 10) (x 6) or (x 6) or (x > 10) Сложные условия True FALSE (-, 6) (6, 10) (10, ) (-, 10) (-, 6) (10, ) (-, ) (6, ) x 10 x 6x > 6 True

10 10 Задания «4»: Ввести номер месяца и вывести название времени года. Пример: Введите номер месяца: 4 весна «5»: Ввести возраст человека (от 1 до 150 лет) и вывести его вместе с последующим словом «год», «года» или «лет». Пример: Введите возраст: Вам 24 года Вам 57 лет

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

Напишите программу, в которой сортировка выполняется методом камня- самый тяжелый элемент опускается в конец массива. в решение в паскаля

//FIXEDvara:array[1..10000] of integer;i,m,n,fl, tmp : integer;BeginWriteln(‘Введите кол-во элементов в массиве’);Readln(n);Writeln(‘Введите элеметы массива: ‘);for i:= 1 to n do Read(a[i]);m:=n;repeat fl:= m; m:= 0; for i:=1 to fl-1 do if a[i+1] < a[i] then begin m:=i; tmp:=a[i]; a[i]:=a[i+1]; a[i+1]:=tmp; end; until m=0;for i:= 1 to n do Write(a[i], ‘ ‘);end.

Ну Вы нашли, где пофиксить свой ответ.

Ответы

//Как учили наших дедов.

var
a:array[1..10000] of integer;
i,j,n, tmp : integer;
Begin
Writeln(‘Введите кол-во элементов в массиве’);
Readln(n);
Writeln(‘Введите элеметы массива: ‘);
for i:= 1 to n do
Read(a[i]);
for i:= 1 to n do
for j:= 1 to n do
if (a[i] < a[j]) then
begin
tmp:=a[i];
a[i]:=a[j];
a[j]:=tmp;
end;
for i:= 1 to n do
Write(a[i], ‘ ‘);
end.

3 комментария:

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

Введите элеметы массива: 5 7 -2 6 0 9 3 1 4 79 5 -2 6 0 7 3 1 4 7 5 9 -2 6 0 7 3 1 4 7 -2 5 9 6 0 7 3 1 4 7 -2 5 6 9 0 7 3 1 4 7 -2 0 5 6 9 7 3 1 4 7 -2 0 5 6 7 9 3 1 4 7 -2 0 3 5 6 7 9 1 4 7 -2 0 1 3 5 6 7 9 4 7 -2 0 1 3 4 5 6 7 9 7 -2 0 1 3 4 5 6 7 7 9 -2 0 1 3 4 5 6 7 7 9

Хорошо видно, что у Вас более «легкие» элементы «всплывают» в началу массива, вместо того, чтобы более «тяжелые» элементы «опускались на дно» (к концу массива).

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

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