Протокол № 6
дата: 6.11.2009

Структурирани типове данни масиви
Същност - масивът е статичен, структуриран тип данни. Той представлява подредена структура от еднотипни данни, наречени елементи на масива. Размерът на масива е предварително фиксиран.
Деклариране на данните тип масив - декларацията се използва от системата за да отдели място в оперативната памет, необходимо за записването на масива. Декларацията се състои в описание на типа масива, което включва размерност(едномерен, двумерен, многомерен), типа на индексите и типа на елементите на масива.
Синтаксис
var
<име>:array[<тип на индексите>] of <базов тип>;
където:
- <име> - име на променливата от тип масив;
- : - разделител, раделящ името от описанието на типа;
- array - служебна дума, обозначаваща принадлежността на променливата към тип масив;
- [<тип на индексите>] - индексна област, в която се определя броят на индексите и областта от стойности, които всеки индекс може да приема. Индексната област съдържа имена или декларации на скаларни изброими типове. По този начин се определя, че индексът, представен чрез декларацията или името на определен скаларен изброим тип, може да приема всички допустими стойности на този тип;
- <базов тип> - име на тип определящо типа на елементите на масива
- of - служеба дума означаваща че стойностите на елементите на масива са “от” типа <базов тип>.


Задача 1

Да се състави програма, която да въвежда стойностите на елементите на едномерен масив, като стойностите да са в интервала от 0 до 99. Програмата да извършва следните действия: да намира най-малкия и най-големия елемент, сумата и средноаритметичното на елементите на масива, да индетифицира случаи, в които всички елементи са равни; да извежда резултатите на екрана в края на програмата.


program zadacha1;
const
m = 20;
var
nomin : byte;
nomax : byte;
flag1 : boolean;
flag2 : boolean;
sr_ar : real;
i : integer;
min,max,sum : integer;
a : array[1..m] of integer;
begin
nomin := 1;
nomax := 1;
flag1 := true;
flag2 := true;
for i := 1 to m do
repeat
write('Vavedete chislo mejdu 0 do 99 - A[',i,'] = ');
readln(a[i]);
until ((a[i] >= 0) and (a[i] < 99));
writeln;
writeln('Vavedenite stoinosti na masiva A sa: ');
writeln;
for i := 1 to m do
write(a[i]:3);
writeln;
sum := a[1];
min := a[1];
max := a[1];
for i := 2 to m do
begin
sum := sum + a[i];
if a[i] > max then
begin
flag2 := false;
max := a[i];
nomin := i;
end;
end;
writeln;
if (flag1 and flag2) then
writeln('Vsichki stoinosti na masiva sa ravni ')
else
begin
write(nomax:3,' element e nai-golqm e raven na ');
writeln(max);
write(nomin:3,' element e nai-malak e raven na ');
writeln(min);
end;
writeln('Sumata e ravna na ',sum);
if sum <> 0 then
begin
sr_ar := sum/m;
writeln(' Srednoaritmetichnoto e ravno na ',sr_ar:4:2);
end;
readln;
end.





Задача 2





Да се състави програма, която въвежда стойностите на елементите на едномерен масив с размер 20, като стойностите са в интервала от 0.0 до 99.00. Програмата да извършва следните действия: да извее на екарана въведения масив; да сортира елементите на масива по нарастване; да изведе на екрана сортирания масив.



program zadacha2;
const
m = 20;
var
flag : boolean;
i : integer;
rez : real;
a : array[1..m] of real;
begin
for i := 1 to m do
repeat
write('Vavedete chisloto ot 0 do 99 - A[',i,'] = ');
readln(a[i]);
until ((a[i] >= 0) and (a[i] < 99));
writeln;
writeln('Vavedenite stoinosti na masiva A sa: ');
writeln;
for i := 1 to m do
write(a[i]:6:1);
writeln;
repeat
flag := true;
for i := 1 to m - 1 do
if a[i] > a[i+1] then
begin
flag := false;
rez := a[i];
a[i] := a[i+1];
a[i+1] := rez;
end;
until flag;
writeln(' Sortiraniqt masiv A e: ');
writeln;
for i := 1 to m do
write(a[i]:6:1);
readln;
end.






Задача 3

Да се състави програма, която да въвежда от клавиатурата стойностите на елементите на едномерния масив R и на матрицата  A. При въвеждане на входни данни да се използват стойностите на масивите във вида , посочени на съответните фигури.


program zadacha_3;
const
m = 4; n = 6;
type
typemas1 = array[1..n] of real;
typemas2 = array[1..m,1..n] of integer;
var
I,J : integer;
r : typemas1;
a : typemas2;
begin
writeln('vavedete stoinost za ednomerniq masiv');
for I := 1 to n do
begin
write('r[',I,'] = ');
readln(r[i]);
end;
writeln;
writeln('vavedete stoinost za dvumerniq masiv');
for I := 1 to m do
for j := 1 to n do
begin
write('a[',i,',',j,'] = ');
readln(a[i,j]);
end;
writeln;
writeln('vavedenite stoinosti za ednomerniq masiv sa: ');
for I := 1 to n do
write(r[i]:6:2);
writeln;
writeln('vavedenite stoinosti za dvumerniq masiv sa: ');
for I := 1 to m do
write(a[i,j]:4);
writeln;
readln
end.

 





Технически университет – София

Катедра ПКТ,ФКСУ

Протокол № 4

дата: *.**.2009

 

Управляваща структура цикъл. Цикли с неизвестен брой повторения - итерационни цикли.


Същност - итерационните цикли са с неопределен брой изпълнения. Чрез операторите за итерационни цикли се организира многократно изпълнение на блок от оператори, представляващ работно тяло на цикъла.

 

Видове:
  • цикли с предусловие - организират се с оператор while-do.
  • цикли с постусловие - организират се с оператор repeat-until.
Блок схема на цикъл с предусловие

1.jpg (801×483)

Действие:


  • Стъпка 1: инициализация на променливите (преди началото на цикъла);
  • Стъпка 2: избор на алтеранативен процес(изпълнение на тялото или изход от цикъла) в зависимост от стойността на <УК> - изчисление и проверка на стойността на булевия израз(преди всяко изпълнение на тялото).При стойност:

- FALSE - премонава към изход от цикъла - Стъпка 4;

- TRUE - преминава към изпълнение на тялото - Стъпка 3;


  • Стъпка 3: Изпълнява се тялото на цикъла - обработка на данните и актуализация на управляващите променливи, след което управлението се предава в началото на цикъла - Стъпка 2;
  • Стъпка 4: изход от цикъла.

 

Блок схема на цикъл с постусловие

1.jpg (580×431)

 

Действие:


  • Стъпка 1: инициализация на променливите (преди началото на цикъла);
  • Стъпка 2: Изпълнява се тялото на цикъла - възможна инициализация, обработка на данните и актуализация на управляващите променливи;
  • Стъпка 3: избор на алтеранативен процес(изпълнение на тялото или изход от цикъла) в зависимост от стойността на <УК> - изчисление и проверка на стойността на булевия израз. При стойност:

FALSE - премонава към изпълнение от цикъла - Стъпка 4;

TRUE - преминава към изход на тялото - Стъпка 3;


  • Стъпка 4: изход от цикъла.

 

Синтаксис на while-do

а) с единичен оператор

while < УК > do

Oператор_C;

б) със съставен оператор

1.jpg (532×293)

където;

- while и do - служебни думи(запазени думи);

- <УК> - булев израз(булева променлива или булева функция), наречен условие за край на цикъла;

- Оператор_C - тяло на цикъла. Може да бъде единичен прост или структуриран оператор или съставен оператор;

 

Синтаксис на repeat-until

а) с единичен оператор

repeat

Oператор_C;

until <УК>;

б) със съставен оператор

където;

- repeate и until - служебни думи(запазени думи);

- <УК> - булев израз(булева променлива или булева функция), наречен условие за край на цикъла;

- Оператор_C - тяло на цикъла. Може да бъде единичен прост или структуриран оператор или структуриран съставен оператор;

- когато тялото е съставен оператор, не е задължително поставянето на операторните скоби begin и end. Тяхната функция се изпълнява съответно от repeat и until.

 

Задача 1

Да се състави програма, която сумира всички четни числа в затворения интервал от 0 до N,където N е положително число и се задава от клавиатурата. Резултатът от изчисленията да се изведе в подходящ вид на екрана.

program zadacha1;

var

a,n,sum : integer;

begin

write('Vavedete kraq na intervala N = ');

readln(N);

sum := 0;

a := 2;

while a <= N do

begin

sum := sum + a;

a := a +2;

end;

write('sumata ot chetnite chisla');

writeln(' v intervala ot 0 do ',N,' e ',sum);

readln;

end.

1.jpg (807×644)

 

Задача 2


Да се състави програма, която сумира въведени от клавиатурата числа докато сумата им надхвърли 100. В края програмата да извежда на екрана сумата и поредния номер на числото, с което сумата надхвърля 100.

program zadacha2;

var

a,sum,br : integer;

begin

writeln('Въведете число за сумиране ');

br := 0;

sum := 0;

while sum <= 100 do

begin

br := br + 1;

write('Въведете ',br,'-то число: ');

readln(a);

sum := sum + a;

end;

writeln('След обявяване на ',br,'-то число ');

writeln('Сумата надхвърли 100 и е равна на ',sum);

readln;

end.

1.jpg (807×644)

 

Задача 3

Да се състави програма, която сумира само четните от 10 въведени от клавиатурата числа.

program zadacha3;

var

a,sum,br,I : integer;

begin

writeln('Vavedete 10 chisla za sumirane: ');

br := 0;

I := 1;

sum := 0;

while I <= 10 do

begin

write('vavedete ',I:2,'-to chislo: ');

readln(a);

I := I + 1;

if Odd(a) then

continue;

br := br + 1;

sum := sum + a;

end;

write('vavedohte ',br,' chetni chisla, ');

writeln(' sumata im e = ',sum);

readln;

end.

1.jpg (807×644)

 


Задача 3
Да се състави програма, която сумира само четните от 10 въведени от клавиатурата числа.

program zadacha3;
var
a,sum,br,I : integer;
begin
writeln('Vavedete 10 chisla za sumirane: ');
br := 0;
I := 1;
sum := 0;
while I <= 10 do
begin
write('vavedete ',I:2,'-to chislo: ');
readln(a);
I := I + 1;
if Odd(a) then
continue;
br := br + 1;
sum := sum + a;
end;
write('vavedohte ',br,' chetni chisla, ');
writeln(' sumata im e = ',sum);
readln;
end.

Технически университет – София
Катедра ПКТ,ФКСУ
Протокол № 5
дата: 6.11.2009

Управляваща структура цикъл.Цикли с известен брой повторения - броячни цикли.

Същност - броят на изпълненията на тялото при този цикъл е предварително известен. Цикълът използва само една управляваща променлива (УП) от дискретен тип, наречена брояч на цикъла. Тя се актуализира(стойността й се изменя) със стъпка единица автоматично - броячен цикъл.
Видове:
-цикли с увеличаваща стойност на брояча (управляваща променлива) - организират се с оператор for-to-do.
-цикли с намаляваща стойност на брояча (управляваща променлива) - организират се с оператор for-downto-do.

Блок схема на броячен цикъл

Действие


Стъпка 1: изчисление на началната (инициация) и крайната (условието за край) стойност на
управляващата променлива, съответно стойностите на изразите m и n  присвояване начална
стойност на управляващата променлива (брояча) - I := m.
Стъпка 2: проверка на условието за край:
-ако условието за край е изпълнено - I > n за for-to-do (I < N за for-downto-do) - преминава се към
Стъпка 5(изход);
-ако условието за край не е изпълнено, процесът продължава с изпълнение на тялото - Стъпка 3;
Стъпка 3: изпълнява тялото на цикъла (обработка на данните), след което управлението се пре
дава към Стъпка 4;
Стъпка 4: автоматична актуализация на УП - (I := I + 1 за for-to-do и I := I - 1 за for-downto-do), след
което управлението се предава към проверката на условието за край - Стъпка 2;
Стъпка 5: изход от цикъла.
Синтаксис на двете форми
- форма for-to-do за цикли с увеличаваща се УП:
а) с единичен оператор
for I := m to n do

Oператор_C


б) със съставен оператор

- форма for-downto-do за цикли с увеличаваща се УП:
а) с единичен оператор
for I := m downto n do
Oператор_C
б) със съставен оператор





Задача 1

Да се състави програма, която да илюстрира действието на броячния цикъл. Програмата да извежда на екрана числата от 1 до 10.

program demo1;
var
I : integer;
M, N : Integer;
begin
M := 1;
N := 2;
for I := M to N do
begin
M := M + 1;
N := N + 1;
write(I:3);
end;
writeln;
write(` M = `,M,`,`,` N = `,N);
readln;
end.












Задача 2

Да се състави програма, която да извежда на екрана всички числа, кратни на 6 в интервала от 0 до зададено чрез въвеждане от клавиатурата число N. Да се изведе броя на числата кратни на 6 в дадения интервал.

program demo2;
var
I, N, Br : Integer;
begin
Br := 0;
write(`Въведете края на интервала: `);
readln(N);
writeln(`Числата кратни на 6 са: `);
writeln;
for I := 1 to N do
it I mod 6 = 0 then
begin
write(I:4);
Br := Br + 1;
end;
writeln;
write(`Числата кратни на 6 `);
writeln(`в интервала от 0 до ‘,N,’ са ‘,Br);
readln;
end.




Задача 3

Да се състави и програма, кочто да изпълява предстартово броене 10 секунди преди старта. Всяка секунда на екрана да се извежда съобщение за оставащите до старта секунди.

program demo3;
var
I, Br, Integer;
begin
writeln(`      Време до началото на старта: `);
writeln;
for I := 10 downto 1 do
begin
writeln(`        До старта остават `,I,` секунди`);
delay(1000);
end;
writeln;
writeln(`                       START!`);
readln;
end.




Технически университет – София

Катедра ПКТ,ФКСУ

Протокол № 3

дата: *.**.2009

 

 

Многопосочно разклонение превключвател - управляваща структура, представляваща механизъм за избор на вариант - избор на един процес от набор взаимно изключващи се вариантни процеси. Организацията на избор на вариант (превключвател) става чрез вложени условни параметри или чрез специално предвидения за реализацията на превключвател оператор case.

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

 

Блок схема на многопосочно разклонение с вложени оператори

1.jpg (518×773)

 

Синтаксис

if <ЛУ_1> then

Оператор_1

else

if <ЛУ_2> then

Оператор_2

else

.........

else

if <ЛУ_n> then

Оператор_n

else

Оператор_n+1

 

Организация на превключвател чрез оператор case - структура от n на брой оформени в списъци групи константи, при което константа, включена в състава на дадена група не се повтаря в нито една от останалите групи от структурата. По този начин съставът на константите от всеки списък дефинира еднозначно условие по отношение на параметъра case. Условието е изпълнено или не в зависимост от това, дали стойността на параметъра съвпада или не съвпада със стойността на някоя от константите от състава на списъка. Съвкупността от списъците формира набор от n взаимноизключващи се условия. Всяко условие определя един процес от набора взаимно изключващи се вариантни процеси от многопосочното разклонение превключвател.

 

Блок схема на опеаратор case

1.jpg (580×723)

Синтаксис

case Selector of

ListC_1 : Оператор_1;

ListC_2 : Оператор_2;

..........

ListC_n : Оператор_n

else

Оператор_n+1

end;

Особености: променливите в израза - селектор могат да бъдат освен от дискретните стандартни типове и от дискретните типове програмирани от програмиста; етикетните константи могат да бъдат представени и чрез подобласт; освен константи в изразите могат да участват и константни изрази; последователността на записване на константите в съответния списък е без значение; последователостта на записване на операторите и списъцит с етикетни константи пред тях е без значение.

 

Задача 1

Да се състави и изпълни програма, която намира корените на квадратно уравнение за всички случаи. Коефициентите на квадратното уравнение да се въвеждат от клавиатурата. След получаването на резултата прогамата да извежда на екрана стойностите на корените.

program zadacha1;

var

A, B, C , D: Real;

X1, X2 : Real;

begin

writeln(‘Въведете коефициента А: ‘);

write(’A = ‘);

readln(A);

writeln(’Въведете коефициента B: ‘);

write(’B = ‘);

readln(B);

writeln(’Въведете коефициента C: ‘);

write(’C = ‘);

readln(C);

if A = 0 then

begin

X1 := - C/B;

writeln(’В този случай уравнението е линейно ‘);

writeln(’Неговият корен е Х = ‘,Х1:6:2);

end

else

if C = 0 then

writeln(’Уравнението има решение при Х = 0’)

else

begin

D := Sqr(B) - 4*A*C;

if D < 0 then

writeln(’Уравнението няма реални корени’)

else

it D = 0 then

begin

X1 := -B/(1*A);

X2 := X1;

write(’Уравнението има два ‘);

write(’Равни реални корена: ‘);

writeln(’Х1 = ‘,Х1:6:2,’ Х2 = ‘,Х2:6:2);

end

else

begin

X1 := (- B + Sqrt(D))/(2*A);

X2 := (- B - Sqrt(D))/(2*A);

writeln(’Уравнението има два реални корена: ‘);

writeln(’X1 + ‘,X1:6:2,’, X2 = ‘,X2:6:2);

end;

end;

readln;

end.

1.jpg (808×697)

 

Задача 2

Да се състави и изпълни програма тип “меню”, която да въвежда от клавиатурата две числа А и B и да извежда на екрана меню. По избор на потребителя програмата изпълнява едно от четирите аритметични действия - събиране, изваждане, умножение или деление.

program zadacha2;

var

A, B, C : Real;

Is |: Integer;

begin

write(’Въведете числото А: ‘);

readln(A);

write(’Въведете числото B: ‘);

readln(B);

writeln;

writeln;

writeln(’МЕНЮ ПРОСТИ АРИТМЕТИЧНИ ДЕЙСТВИЯ’);

writeln;

writeln(’           СЪБИРАНЕ             1’);

writeln(’           ИЗВАЖДАНЕ          1’);

writeln(’           УМНОЖЕНИЕ         1’);

writeln(’           ДЕЛЕНИЕ                1’);

writeln;

write(’Изберете дейстие (1 - 4): ‘);

readln(Is);

is ((Is < 0) or (Is > 4)) then

begin

writeln(’Въведохте ‘,Is,’ Грешен избор! ‘);

writeln(’Изборът трябва да е от 1 до 4;);

end

else

begin

writeln(’Въведените числа са ‘,А:4:2,’ и ‘,В:4:2);

if Is = 1 then

begin

C := A + B;

writeln(’Сумата им е = ‘,С:4:2);

end

else

if Is = 2 then

begin

C := A - B;

writeln(’Разликата им е = ‘,С:4:2);

end

else

if Is = 3 then

begin

C := A * B;

writeln(’Произвадението им е = ‘,С:4:2);

end

else

begin C := A / B;

writeln(’Частното им е = ‘,С:8:6);

end;

end;

readln;

end.

1.jpg (585×755)

 

 

Задача 3

Да се състави и изпълни програма, която да въвежда от клавиатурата номера на месеца, да определя сезона и името на месеца. Резултатите да се извеждат на екрана.



program zadacha3;

var

month : integer;

m : string [30];

begin

write(' vavedete meseca : ');

readln(month);

begin

case month of

1: m:= 'Qnuari - zima';

2: m:= 'Fevruari - zima';

3: m:= 'Mart - prolet';

4: m:= 'Aprol - prolet';

5: m:= 'Mai - prolet';

6: m:= 'Juni - lqto';

7: m:= 'Juli - lqto';

8: m:= 'Avgust - lqto';

9: m:= 'Septemvri - esen';

10: m:= 'Oktomvri - esen';

11: m:= 'Noemvri - esen';

12: m:= 'Dekemvri - zima';

end

end;

writeln('Meseca i sezona sa : ',m);

readln

end.

1.jpg (585×755)


Технически университет – София

Катедра ПКТ, ФКСУ

Протокол № 2

дата: 16.10.2009


Управляваща структура разклонение - разклонението е управляваща структура, чрез която действието на програмата продължава с изпълнението на определен процес, избран от набор взаимно изключващи се възможни процеси. В зависимост от броя на възможните посоки прогамата бива:

Многопосочно разклонение - тип двоично дърво(а), тип превключвател(б) и комбнирани структури между тип двоично дърво и  тип превключвател




Управляваща структура алтернатива. Пълна форма оператор if-then-else. Същност – управляваща структура, представляваща механизъм за двоично решение - избор между два алтернативни процеса.

Начин на управление - двоичният избор се осъществява в зависимост от изпълнението (избира се процес Т) или неизпълнението (избира се процес F) на предварително дефинирано логическо уравнение <ЛУ>.

Блок-схема на пълната форма на if-then-else





Действие:

Стъпка 1: изчислява се стойността на булевия израз (<ЛУ> логическо условие);

Стъпка 2: избор на алтернативен процес (Изпълнение на Оператор_Т или Оператор_F)

в зависимост от изчислената стойност:

- TRUE - избира се линията вярно - преход към Стъпка 3;

- FALSE - избира се линията грешно - преход към Стъпка 4;

Стъпка 3: изпълнение на Оператор_Т и преход към Стъпка 5;

Стъпка 4: изпълнение на Оператор_F и преход към Стъпка 5;

Стъпка 5: край на двупосочното разклонение

Синтаксис на оператора if-then-else пълна форма
а) с единични оператори
if < ЛУ > then
Оператор_T
else
Оператор_F;
б) със съставни оператори

 

Задача 1

Да се състави програма, която да изследва въведено от клавиатурата число, дели се на 6 и 7 и да извежда на екрана подробна информация за всички случаи - делимо само на едно от числата, делимо на двете числа и неделимо на нито едно от тях.

program demo;

var

Flag_6, Flag_7 : Boolean;

A : Integer;

begin

write(’Въведете числото: ‘);

Readln(A);

writeln;

Flag_6 := True;

Flag_7 := True;

if a mod 6 = 0 then

begin

Flag_6 := False;

write(’Чиалото ‘,А,’ се дели на 6’);

end;

if a mod 7 = 0 then

begin

if Flag_6 then

write(’Чиалото ‘,А,’ се дели на 7’);

else

write(’ I na 7’);

Flag_7 := False;

end;

if Flag_6 and Flag_7 then

writeln(’Числото не се дели нито на 6, нито на 7’);

readln;

end.



Блок схема на задача 1


 

Задача 2


Да се състави програма, която да въвежда от клавиатурата едно цяло число А и границите на два интервала, съответно М - N и Р - Q. Ако числото се дели на зададен от клавиатурата делител Del - дали удвоената му стойност е в границите на втория интервал Р - Q. Да се съставят необходи­мите параметри и съответните входни данни за пълно тестване на програмата.

program demo2;

const

Ci = ‘ е в интервала от ‘;

var

M, N, P, Q : Integer;

A, Del : Integer;

begin

write(’Въведете числото A: ‘);

readln(A);

write(’Въведете делителя Del: ‘);

readln(Del);

writeln(’Въведете границите на първия интервал: ‘);

write(’M = ‘); raedln(M);

write(’N = ‘); raedln(N);

writeln(’Въведете границите на втория интервал: ‘);

write(’P = ‘);

readln(P);

write(’Q = ‘);

readln(Q);

if A mod Del = 0 then

begin

write(’Числото ‘,А,’ се дели на ‘,Del);

A := Sqr(A);

if ((A > M) and (A < N)) then

write(’, квадратът му’,Ci,M,’ - ‘,N);

else

write(’, квадратът му не’,Ci,M,’ - ‘,N);

end

else

begin

write(’Числото ‘,А,’ не се дели на ‘,Del);

A := 2*А;

if ((A > Р) and (A < Q)) then

write(’, удвоената му стойност’,Ci,P,’ - ‘,Q);

else

write(’, удвоената му стойност не’,Ci,P,’ - ‘,Q);

end;

readln;

end.



Блок схема на задача 2

 

Задача 3


Да се състави програма, която намира най-голямото от три различни реални числа, въведени от клавиатурата. Ако числата не са различни, програмата да извежда съответното съобщение и без да обработи числата да приключи своето действие. Да се съставят примери за пълно тестване на програмата.

program demo3;

var

A, B, C, Max : Real;

begin

writeln(’Въведете три различни числа А, В и С’);

writeln;

write(’Въведете А: ‘);

readln(A);

write(’Въведете B: ‘);

readln(B);

write(’Въведете C: ‘);

readln(C);

writeln;

if (A = B) or (A = C) or (C = B) then

writeln(’Защо не сте въвели три различни числа?’)

else

begin

if A > B then

if A > C then

Max := A

else

Max := C

else

if B > C then

Max := B

else

Max := C;

writeln(’Въведени числа ‘,А:4:2,В:4:2,’ и ‘,С:4:2);

writeln(’Най-голямото число е ‘,Max:4:2);

end;

readln;

end.


Блок схема на задача 3


Технически университет – София

Катедра ПКТ,ФКСУ

Протокол № 1

дата: 2.10.2009

 

Скаларните типове данни се характеризират с това, че всяка от тях се състои от един единствен компонент, поради което може да съдържа и представя една единствена стойност. За скаларните типове данни са характерни следните приложения: всеки скаларен тип дефинира крайно множество от стойности; стойностите на дефинираното от скаларния тип множество са подредени.

 

Скаларните типове данни се делят на реални и дискретни типове. Реалните типове съдържат и представят дестични числа с цяла и дробна част и десе­тична точка, чието място е фиксирано, а дискретните съдържат и представят само определени, предварително известни стойности.Дискретните типове в езика на Паскал са целонасочените типове, булевия и символния тип, а така също дефинираните от програмиста изброен и ограничен тип.

 

 

 

Стандартни типове - променливите им се декларират с името на съответния стандартен тип. Стандартните типове се делят на численни, булеви и символни типове.

 

Дефинирани от програмиста - типове, които се дефинират от програмиста са изброения и ограничения тип. За тези типове няма стандартно наименование чрез служебен идентификатор. Те регламентират само начина на описание на типа - задаването на областта от стойности.

 

Целочислени типове - целите числа се записват и съхраняват в оперативната памет на компютъра в двоичен код. Тяхното представяне е точно, тоест не се допуска закръгляне.

 

Булеви - данните от булев тип могат да приемат само две стойности - TRUE (вярно) и FALSE (невярно). Турбо Паскал има четири стандартни логически (булеви) типа - Boolean, Wordbool, Longbool и Bytebool.

 

Символни от тип Char - данните този тип се представят от крайно подредено множество от символи. Размерът на това множество(броят на елементите), конкретните елементи включени в него и начинът на тяхното подреждане в множеството зависят от операционната система.

 

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

 

 

type

<име на тип> = (име1,име2,...,имеn);

var

<име на променлива> : <име на тип>;

където:

- <име на тип> е името на изброения тип;

- <име на променлива> - заграден в скоби списък с имена на константи, разделени една от друга със запетая определящ множеството от стойности на типа. Имената на константите са съставени от програмиста според правилата на Паскал.

 

Ограничен тип(тип подобласт) - този тип включва част от стойностите на съответния изброен тип, наречен базов тип по отношение на дефинирания нов тип.

type

<име на тип> = <константа1..константа2>;

var

<име на променлива> : <име на тип>;

където:

 

- <име на тип> е името на изброения тип;

- <константа1..константа2> - разделени с две последователни точки константи определящи съответно горната и долната граница на подреденото множество от стойности на ограничения тип. Константите принадлежат към базовия тип.

 

 

 

Задача 1

 

 

Да се състави програма, която да изчислява решението от формулата към Задача 1, където х=12 и  у=6. Решението да се намери по два начина: чрез разбиване на формулата на части и чрез съставянето на израз за цялата формула.

2.jpg (554×341)

 

program zadacha1;

var a,b,c,d,x,y : real;

begin

x := 12;

y := 6;

a := 1/(sqr(x)+1);

b := (sqr(y)/(sqr(y)-1));

c := (5/(sqr(x)+sqr(y)));

d := (1/(sqr(x)+sqr(y)));

m1 := (a+b+c)/d;

writeln('m1 = ',m1);

m2 := ((1/(sqr(x)+1)+(sqr(y)/sqr(y)-1)+(5/(sqr(x)+sqr(y)))/(1/(sqr(x)-sqr(y)))));

Writeln('m2 = ',m1);

readln;

end.

 

3.jpg (911×791)

 

 

Задача 2

 

Да се състави програма, която да изчислява дискриминантите на квадратните уравнения: 2x+5x+2=0 и 3,4x+8x+1=0.

 

 

program zadacha3;

var

a,b,c,D : real;

a1,b1,c1,D1 : real;

begin

a := 2;

b := 5;

c := 2;

D := (sqr(b)-4*a*c);

writeln('2*sqr(x)+5x+2=0');

writeln('D := ',D);

a1 := 3.4;

b1 := 8;

c1 := 1;

D1 := (sqr(b1)-4*a1*c1);

writeln('3.4*sqr(x)+8x+1=0');

writeln('D1 := ',D1);

readln;

end.

1.jpg (502×653)