Големина на текста:
Като се използва аксиоматичният метод да се реши следната задача:
Да се напише програма, която намира в даден целочислен масив b[0;n-
1], където n>0, мястото на максималното значение, за което е вярно:
{R: 0<=k<=n^b[k]>=b[0;n-1]}
Програмата да има следната структура:
{Q: n>0}
S
init
;
{inv P: 0<=k<i<=n^b[k]>=b[0;i-1]}
{band t: n-1}
Do B ? IF od
{R: 0<=k<n^b[k]>=b[0;n-1]}
Забележка: цикълът има само една охранявана команда.
Трансформирайте синтезираната от вас програма на ASML или Pascal.
РЕШЕНИЕ:
I.Определяне на инициализираща команда като се анализира
инварианта: променливата е i
Хипотези:
1.i:=0
2.i:=1
Проверка на хипотезите:
1.Q=> wp(x:=e,P)
= wp(i:=0,P)
= (0<=k<i<=n^b[k]>=b[0;i-1])
0
i
= 0<=k<0<=n^b[k]>=b[0;-1]
Q
= T^T
= T
2.Q=> wp(x:=e,P)
= wp(i:=1,P)
= (0<=k<i<=n^b[k]>=b[0;i-1])
1
i
= 0<=k<1<=n^b[k]>=b[0;1-1]
= T^F
1
= F
II.Определяне на условието на цикъла на база верността на P^¬B
=>R
¬B: i=n
B: i<>n
Проверка:
0<=k<i<=n^b[k]>=b[0;i-1]^i=n=>R
= 0<=k<i<=n^i=n^b[k]>=b[0;i-1] (комутативен)
= i=n^b[k]>=b[0;i-1] (отстраняване на конюнктивен член)
= i=n^b[k]>=b[0;n-1] (заместване при условие)
?b[k]>=b[0;n-1] (отслабване на предиката)
=R
III.Определяне на цикъла като се търси команда, която да намалява
ограничаващата функция.
i:=0
do i<>n ? IF ? od
{bound t: n-i}
If B1 ? S1 fi
If y<b[i] ? y:=b[i] fi
Y – помощна променлива, в която се запазва максималното
значение. i замества k.
i:=0
y:=b[o];
while i<>n do
begin
if y<b[i+1] then
begin
y:=b[i+1]
pos:=I;
end;
i:=i+1
end;
Проверка за ограничаващата функция:
P^Bi => wp(t1:=t;si,t<t1)
2
= wp(t1:=n-I; i:=i+1, n-i<t1)
= wp(t1:=n-1, wp(i:=i+1, n-i<t1))
= wp(t1:=n-I, (n-i<t1)
i+1
i
)
= wp(t1:=n-I, n-(i+1)<t1)
= (n-(i+1)<t1)
n-i
t1
=n-i-1<n-i
= n-1<n
= T
Програмата на Pascal
Program max;
Uses crt;
Var b:array [o..100] of integer;
i, k: integer;
n: integer;
y: integer; {търсеното число}
choise: string[4];
pos: integer; {позицията на търсения елемент}
begin
repeat
clrscr;
writeln(‘Въвеждане на елементите на масив В:’);
writeln;
write(‘Въведи броя елементи: n=’);
readln(n);
writeln(‘Въведи числата’);
for k:=1 to n do
begin
readln(b[k]); {прочитаме елементите}
writeln(‘Търсене на позицията на максималното значение’);
i:=0;
y:=b[0];
while i<>n do
begin
if y<b[i+1] then
begin
y:=b[i+1];
pos:=I;
end;
i:=i+1;
end;
3

Това е само предварителен преглед

За да разгледате всички страници от този документ натиснете тук.

Задача по семантика на езиците за програмиране

Решена задача по семантика на езиците за програмиране.
Изпратен от:
kobra85
на 2007-05-18
Добавен в:
Упражнения
по Програмиране
Статистика:
227 сваляния
виж още
 
Подобни материали
 

Програмиране - C и C++

12 дек 2007
·
1,105
·
155
·
36,823
·
793
·
1
·

С и С++ са най - важните световни програмни езици . Всъщност, за да бъдете професионален програмист днес означава опитност в тези два езика.Те са основата, върху която е изградено модерното програмиране. С беше изобретен от Денис Ричи през 1970г...
 

Задача по C++

24 окт 2006
·
608
·
1
·
208
·
180

Урок по програмиране на Английски език.
 

Усъвършенстване на Web базирана обучаваща система по дисциплината “Компютърна периферия

01 яну 1970
·
347
·
127
·
12,229
·
345

Образованието се превръща в главен фактор за социалния и икономически прогрес на обществото и е една от най-мощните движещи сили на развитието му...
 

Програмиране

26 яну 2009
·
300
·
65
·
13,410

Програмиране на езикът C (си). Този материал дава вазможност на ученици и студенти да напрвят свията парва крачка за програмиране на езикът Си...
 

Обектно ориентирано програмиране

25 яну 2009
·
351
·
47
·
4,164
·
227

Дипломна работа за степен магистър. Темета е обектно ориентирано програмиране.
1 2 3 4 5 » 11
 
Онлайн тестове по Програмиране
Централен процесор и памет
междинен тест по Програмиране за Неучащи от 1 клас
Тестът включва въпроси относно програмирането и използването на компютрите. Всички въпроси са затворени и изискват само един верен отговор.
(Труден)
20
7
1
2 мин
12.11.2014
Тест по програмиране за 3-ти курс върху PHP
тематичен тест по Програмиране за Студенти от 3 курс
Това е първият тест по Програмиране в среда интернет за трети курс на специалност КТИД. Съдържа 24 задачи - всяка от тях само с по един верен отговор.
(Труден)
24
12
1
4 мин
14.11.2013
» виж всички онлайн тестове по програмиране

Задача по семантика на езиците за програмиране

Материал № 31001, от 18 май 2007
Свален: 227 пъти
Прегледан: 109 пъти
Качен от:
Предмет: Програмиране, Информатика, ИТ
Тип: Упражнение
Брой страници: 4
Брой думи: 142
Брой символи: 1,494

Потърси помощ за своята домашна:

Имаш домашна за "Задача по семантика на езиците за програмиране"?
Намери бързо решение, с помощтта на потребители на Pomagalo.com:

Намери частен учител

Виторио Белоречки
преподава по Програмиране
в град София
с опит от  4 години
192 25

Николай Ненков
преподава по Програмиране
в град София
с опит от  6 години
353 59

виж още преподаватели...
Последно видяха материала
Сродни търсения